Skip to content

Testnet status (offline since 2026-04-25), how to test on mainnet as a chaosnet instead, and the testnet endpoints and faucet API kept for when it returns.

The BitBadges testnet (bitbadges-2) is offline. This page records its status, the recommended substitute, and the endpoint and faucet shapes so they are ready when it returns.

Testnet has been offline since 2026-04-25 to reduce hosting costs while usage was minimal. Read-only checks on 2026-09-07 found DNS failures for the RPC, LCD, and EVM RPC hosts, HTTP 403 for the site, and HTTP 503 for the testnet API, and the SDK's NETWORK_CONFIGS.testnet is marked disabled: true. To ask for a relaunch, contact the team.

Test on Mainnet Instead

Mainnet operates as a chaosnet: fully live, with experiments recorded on the same network as production assets.

  • The public EVM RPC returned eth_gasPrice: 0 on 2026-09-07. Query current fees before transacting; this is not a permanent zero-fee guarantee.
  • Transact with worthless assets such as CHAOS (badges:49:chaosnet) instead of real-value coins.
  • Contracts, transactions, and integrations run against the real network. Use dedicated accounts and test assets; state changes and any configured payments are real.

Every example in these docs targets mainnet. See Network for endpoints and Supported Denoms for CHAOS.

What Testnet Was

A separate environment isolated from production, with its own chain, database, API, and site. Nothing carried over between the two: not profiles, tokens, settings, or anything else. Third-party integrations such as claim plugins behaved the same in both.

Differences from production:

  • Some features were unavailable: off-chain balances managed by BitBadges were not hosted on a CDN, BADGE credits could not be bought, no push notifications, and more.
  • Some restrictions were relaxed: no API keys required, a more lenient faucet.
  • Performance differed from production.

Endpoints (Offline)

SurfaceURL
Sitehttps://testnet.bitbadges.io
BitBadges APIhttps://api.bitbadges.io/testnet (append the normal routes)
CometBFT RPChttps://rpc-testnet.bitbadges.io
WebSocketwss://rpc-testnet.bitbadges.io/websocket
LCD (REST)https://lcd-testnet.bitbadges.io
EVM JSON-RPChttps://evm-rpc-testnet.bitbadges.io
Cosmos chain IDbitbadges-2
EVM chain ID50025

Faucet API (Offline)

The faucet gave free BADGE for testing and bot development. No API key and relaxed CORS. Kept here as the contract for when testnet returns; do not call it as a live step today.

text
POST https://api.bitbadges.io/testnet/api/v0/faucet

Request:

json
{
  "address": "bb1p0rrel3365scadq5k9pv0x0zp9j22js6dnw70d"
}

The address must be a bb1 bech32 address. Use the SDK's convertToCosmosAddress() to convert from Ethereum or other formats.

Response: 200 with an empty body on success (tokens are queued and arrive shortly). 500 with a JSON error otherwise:

ErrorCause
Already_airdroppedThe address already received faucet tokens
Invalid_request._Origin_not_found.The request origin could not be determined

Behavior:

  • Amount: 1000 ubadge per request.
  • Limit: one airdrop per address, lifetime. For more, use another address or ask on Discord.
  • Processing: asynchronous queue; tokens can take a few seconds.
  • Authentication: none on testnet.
bash
curl -X POST https://api.bitbadges.io/testnet/api/v0/faucet \
  -H "Content-Type: application/json" \
  -d '{"address": "bb1p0rrel3365scadq5k9pv0x0zp9j22js6dnw70d"}'
ts
// Using fetch directly
const response = await fetch('https://api.bitbadges.io/testnet/api/v0/faucet', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ address: 'bb1p0rrel3365scadq5k9pv0x0zp9j22js6dnw70d' })
});

if (!response.ok) {
  const error = await response.json();
  console.error('Faucet error:', error);
}

Bot bootstrap pattern:

ts
import { GenericEvmAdapter, NETWORK_CONFIGS } from 'bitbadges';

// Generate a new bot wallet
const adapter = await GenericEvmAdapter.fromMnemonic(
  process.env.BOT_MNEMONIC!,
  NETWORK_CONFIGS['testnet'].evmRpcUrl
);

// Fund it (one-time)
await fetch('https://api.bitbadges.io/testnet/api/v0/faucet', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ address: adapter.address })
});

// Wait briefly for tokens to arrive
await new Promise(r => setTimeout(r, 5000));

// Now ready to sign and broadcast transactions

On mainnet there is no faucet; acquire BADGE through normal channels.

Edit this page on GitHub