Chains

TON (The Open Network)

The TEP-2 user-friendly form in either base64 alphabet: 36 bytes, a bounceable or non-bounceable tag, one of the two workchains that exist, and the CRC16 verified.
create
create("ton")
family
TON · ton
symbol
TON · 9 decimals
bip44
607
caip2
ton:-239
explorer
tonscan.org

Address format

The TEP-2 user-friendly form: 36 bytes in unpadded base64, so exactly 48 characters. Wallets emit the URL-safe alphabet with - and _, the standard one with + and / is in circulation too, and both pass. The first byte is the tag, 0x11 for bounceable (EQ…) or 0x51 for non-bounceable (UQ…). A set testnet flag is rejected the way Bitcoin's testnet versions are. The second byte is the workchain, 0x00 for the basechain or 0xff for the masterchain, the only two that exist. Both live inside one network, so neither is the CAIP-2 reference: that's the network's global_id, -239 on mainnet, the id TON Connect and WalletConnect pass around.

The last two bytes are the CRC16-XModem of the 34 before them, and they're verified: one character off fails, which is what TEP-2 puts the checksum there for. The raw workchain:hex form isn't accepted, because wallets and explorers exchange the friendly one.

import { getChain } from "@agntn/chains";

const chain = getChain("ton");
chain.assertAddress("EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs"); // returned unchanged
chain.type; // "ton"
chain.caip2; // "ton:-239"

Spellings

ton, TON (The Open Network). The key is ton, the rest resolve through getChain.

@agntn/chains·MIT license· A format check, not proof an address exists. Nothing on this site talks to a chain.