Own a Chog
Your Chog's wallet
The ERC-6551 account every Chog owns: how its address is derived, how it is created, and what moves with the NFT.
Every Chog owns a smart-contract wallet: an ERC-6551 token bound account. Its address is fixed by the Chog's token ID, so it exists before anyone deploys it, and whoever holds the NFT controls it. Look up any Chog's wallet at /app or on its own page, /chog/<token id>.
How the address is computed
The canonical ERC-6551 Registry v0.3.1 deploys each account with CREATE2. Animr rebuilds the registry's 183-byte ERC-1167 init code and computes the same address locally, with no RPC call (computeTokenBoundAccount in lib/erc6551.ts). It matches registry.account(...) for these inputs:
| Input | Value |
|---|---|
| Registry | 0x000000006551c19487814612e58FE06813775758View 0x000000006551c19487814612e58FE06813775758 on the explorer (opens in a new tab) |
| Implementation (Tokenbound AccountProxy) | 0x55266d75D1a14E4572138116aF39863Ed6596E7FView 0x55266d75D1a14E4572138116aF39863Ed6596E7F on the explorer (opens in a new tab) |
| Salt | 0x00…00 (bytes32 zero) |
| Chain ID | 143 (Monad mainnet) |
| Token contract (Chog Genesis) | 0xc96d31F8626c6D03Fae5dCD3d61e3FB9F4a73763View 0xc96d31F8626c6D03Fae5dCD3d61e3FB9F4a73763 on the explorer (opens in a new tab) |
| Token ID | 1 to 1,969 |
Tokens sent to the address before the account exists are safe: they are usable once it is created. For example, the House Chog (CHOG #891 · token 1399) has the wallet 0xa46aE2364eDa19C7d8fCe7F5878C93E50aB2AD71View 0xa46aE2364eDa19C7d8fCe7F5878C93E50aB2AD71 on the explorer (opens in a new tab).
Create and initialize in one transaction
A Tokenbound V3 account needs two calls, and Animr sends them as one. The registry deploys an AccountProxy clone; until the proxy is initialized with the AccountV3 implementation, every call to it “succeeds” and does nothing. The Chog page sends a single Multicall3 aggregate3 with:
registry.createAccount(...), when nothing is deployed yetAccountProxy.initialize(AccountV3Upgradable)Implementation
0x41C8f39463A868d3A88af00cd0fe7102F30E44eCView 0x41C8f39463A868d3A88af00cd0fe7102F30E44eC on the explorer (opens in a new tab), through Multicall30xcA11bde05977b3631167028862bE2a173976CA11View 0xcA11bde05977b3631167028862bE2a173976CA11 on the explorer (opens in a new tab).
Both calls are permissionless, so anyone could send them; only the NFT's holder controls the account afterwards. Animr shows each account as none (no code), uninitialized (proxy deployed, no implementation) or ready. Animr deploys no account contracts of its own.
What moves with the NFT
| Goes to the buyer | Stays behind or goes dormant |
|---|---|
| The wallet and every token in it: $CHOG, WMON, MON | Guard grant, limits and buy-only mode (keyed by wallet and holder) |
| Trophies minted into the wallet | Tokenbound permissions the seller granted (keyed by holder) |
| Its genome, League and Bell record | The seller's control of the AI, until the buyer signs to take it over |
| Its AI's decision history |
A “Hide my Chog” opt-out survives a sale; the new holder can undo it. See Trust model and FAQ.
Only the holder moves tokens out. The Chog page's Withdraw to your wallet form calls the wallet's own execute(), which Tokenbound accepts from the current holder alone; AnimrTradeGuard has no withdraw function. Step by step: Holder guide.
