Add ckBAT (Basic Attention Token) to the ckERC20 ledger suite
#143606 · Adopted and executed · proposed Aug 18, 2026
Summary
Discussion linkAdd ckBAT (Basic Attention Token) to the ckERC20 ledger suite
This proposal upgrades the ledger suite orchestrator (vxkom-oyaaa-aaaar-qafda-cai) to the wasm it is already running (module hash b7294354c6ad8d0466894204471155d47e80af468fbca4759baa64c7c77ca65a, built from commit cf41372e3d4dc1accfe2c09a7969f8bddc729dc1), with an AddErc20Arg upgrade argument that adds ckBAT, the chain-key twin of Basic Attention Token (BAT). On execution the orchestrator spawns the ckBAT ledger, index and archive canisters and notifies the ckETH/ckERC20 minter (sv3dd-oaaaa-aaaar-qacoa-cai).
Forum discussion (posted 2026-08-06, 12 days of review): https://forum.dfinity.org/t/proposal-to-add-ckbat-basic-attention-token-as-a-new-ckerc20-token/74960
Token
| Field | Value | |---|---| | Token | Basic Attention Token (BAT) | | Ethereum contract | 0x0D8775F648430679A709E98d2b0Cb6250d2887EF | | Decimals | 18 | | Standard | ERC-20 (no fee-on-transfer, no rebasing), deployed May 2017 | | Supply | 1,500,000,000 BAT, fixed (verified on-chain via totalSupply()) | | Issuer | Brave Software (Brave browser / Brave Rewards) | | Market | rank ~#260, ~$89M cap, ~$9.5M 24h volume (2026-08-18) |
BAT is what Brave browser users earn as advertising revenue: recurring, small payouts (~$1–3/month) tied to real income. These flows are uneconomical to move on Ethereum L1; on ICP they are trivially economical.
Payload
(variant { AddErc20Arg = record {
contract = record {
chain_id = 1 : nat;
address = "0x0D8775F648430679A709E98d2b0Cb6250d2887EF";
};
ledger_init_arg = record {
transfer_fee = 100_000_000_000_000_000 : nat;
decimals = 18 : nat8;
token_symbol = "ckBAT";
token_name = "ckBAT";
token_logo = "data:image/svg+xml;base64,..." // official BAT mark, 646-char data URL, full string in the forum post
};
}})
transfer_fee= 0.1 BAT ≈ $0.006 at current price - the only power of ten inside the orchestrator README's "$0.001–$0.01 USD equivalent, preferably a power of 10" guidance for BAT's price.- args blob: 967 bytes, SHA-256
3f2e92c566b562f7791b6706b3c564e3e51488500f98d5c5bf7fdfaa8a755206.
Verification
Every value is reproducible from mainnet state and DFINITY's published artifacts:
# commit, read from the running orchestrator itself
dfx canister --network ic metadata vxkom-oyaaa-aaaar-qafda-cai git_commit_id
# -> cf41372e3d4dc1accfe2c09a7969f8bddc729dc1
# that commit's wasm reproduces the live module hash
curl -sO https://download.dfinity.systems/ic/cf41372e3d4dc1accfe2c09a7969f8bddc729dc1/canisters/ic-ledger-suite-orchestrator-canister.wasm.gz
shasum -a 256 ic-ledger-suite-orchestrator-canister.wasm.gz
# -> b7294354c6ad8d0466894204471155d47e80af468fbca4759baa64c7c77ca65a
# the .did used for encoding matches the canister's own candid:service
dfx canister --network ic metadata vxkom-oyaaa-aaaar-qafda-cai candid:service > from-canister.did
curl -sL -o from-github.did https://raw.githubusercontent.com/dfinity/ic/cf41372e3d4dc1accfe2c09a7969f8bddc729dc1/rs/ethereum/ledger-suite-orchestrator/ledger_suite_orchestrator.did
diff from-github.did from-canister.did # identical
# re-encode the argument and compare
didc encode -d ledger_suite_orchestrator.did -t '(OrchestratorArg)' "$(cat arg.did)" | xxd -r -p > args.bin
shasum -a 256 args.bin
# -> 3f2e92c566b562f7791b6706b3c564e3e51488500f98d5c5bf7fdfaa8a755206
The wasm is unchanged from what the orchestrator is currently running; the only effect of this proposal is the AddErc20Arg.
Official view: dashboard.internetcomputer.org/proposal/143606