Skip to content
Block height specification no chain yet
Active validators 0 / 75 floor 7 · standby 0
Security tier not yet established
TPS · current specification
ADM in circulation 0 specification only
Network status Open view validators, blocks, mempool
Specification phase. Values shown are placeholders for layout. No live chain.
§ Docs · T.02

Verify a burn proof.

Every ADM minted during the launch phase has a public source-chain transaction behind it. This task walks through verifying a burn ↔ mint pair end-to-end.

Burn-to-mint flow Four supported source assets (BTC, ETH, USDT, USDC) burn to a verifiably-unspendable address; Adamant validators verify the burn proof and mint ADM at the launch-phase rate. SOURCE CHAIN BTC ETH USDT USDC STEP 01 Burn to unspendable address PROOF STEP 02 Verify validators STEP 03 Mint ADM USD-equivalent at design time tokens permanently destroyed 20 ADM / USD-eq · capped
Burn-to-mint flow · WP §10.2.3
§ 01 / Steps

Three checks.

  1. Source confirmation. Fetch the source-chain transaction by hash; check that the destination is the verifiably-unspendable burn address for that asset and that the required confirmation count has passed (BTC 6, ETH 32 epochs, USDT/USDC 64).
  2. Adamant mint record. Query adamant_getBurns(from, to) for the corresponding mint event; verify the src_tx field matches the source-chain hash and the adm amount equals (USD-equivalent × 20).
  3. Cap-window invariant. The minted amount must respect the per-address cap for its launch-month window (1 / 2 / 4 / 8 % then uncapped). The validator set rejects burns that would exceed.
§ 02 / In code

TypeScript SDK.

import { Client } from '@adamant/sdk';

const c = new Client('https://rpc.adamantprotocol.com');

const burn = await c.getBurnByMintTx('0xadm...mint-hash');
// { src_chain: 'eth', src_tx: '0xeth...', usd_eq: 2500, adm: 50000, dest: 'adm1...', cap_window: 3 }

// 1. confirm source-chain finality (here using viem)
const ethTx = await viem.getTransactionReceipt({ hash: burn.src_tx });
const confs = await viem.getBlockNumber() - ethTx.blockNumber;
if (confs < 32n * 32n) throw new Error('insufficient confirmations');

// 2. confirm Adamant mint matches USD-eq × 20
if (burn.adm !== burn.usd_eq * 20n) throw new Error('rate mismatch');

// 3. cap window check
const month = monthsSinceGenesis(burn.activated_at);
const capPct = month < 1 ? 1 : month < 3 ? 2 : month < 6 ? 4 : month < 12 ? 8 : 100;
// ...verify dest's cumulative mints stay below capPct % of 70_000_000