$SNAP NFTs
Status: $SNAP NFTs and the cross-chain bridge are planned for v1.2. The specifications below describe the intended design.
I think $SNAP NFTs are one of the more creative things we have built. $SNAP (Staked Node Attestation Pass) NFTs are a unique primitive in the Citrate ecosystem. They are ERC-6551 token-bound accounts that serve as licenses for oracle node operation, fee-collecting vaults, and governance participation tokens. Each $SNAP NFT is itself a smart contract account capable of holding assets, receiving fees, and interacting with protocols.
ERC-6551 Token-Bound Accounts
Unlike standard NFTs that are simple ownership records, $SNAP NFTs implement the ERC-6551 standard, which gives each NFT its own smart contract account. This means a $SNAP NFT can:
- Hold SALT, other ERC-20 tokens, and additional NFTs
- Receive inference fees and oracle attestation fees directly
- Execute transactions on behalf of its owner
- Interact with DeFi protocols, governance contracts, and bridges
// The ERC-6551 registry creates an account for each $SNAP
interface IERC6551Registry {
function createAccount(
address implementation,
bytes32 salt,
uint256 chainId,
address tokenContract,
uint256 tokenId
) external returns (address account);
function account(
address implementation,
bytes32 salt,
uint256 chainId,
address tokenContract,
uint256 tokenId
) external view returns (address);
}
// Query the account address for a $SNAP NFT
address snapAccount = IERC6551Registry(REGISTRY).account(
SNAP_ACCOUNT_IMPL,
bytes32(0),
1337, // Citrate chain ID
SNAP_CONTRACT,
tokenId
);
When you acquire a $SNAP NFT, its token-bound account is automatically deployed. All fees earned by the associated oracle node flow directly into this account. The NFT owner can withdraw funds at any time.
Vault Mechanics
Each $SNAP NFT's token-bound account functions as an automated vault. It accumulates fees from oracle attestation duties, and the owner can configure auto-compounding, threshold-based withdrawals, and fee forwarding.
# View your $SNAP vault balance
citrate-cli snap vault-balance --token-id YOUR_SNAP_TOKEN_ID --rpc https://rpc.cnidarian.cloud
# Configure auto-withdrawal threshold
citrate-cli snap configure-vault --token-id YOUR_SNAP_TOKEN_ID --auto-withdraw-threshold 100 --withdraw-to 0xYOUR_WALLET --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
# Withdraw from vault manually
citrate-cli snap withdraw --token-id YOUR_SNAP_TOKEN_ID --amount 50 --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
The vault also supports DeFi composability. Because the token-bound account is a full smart contract account, it can:
- Provide liquidity to DEXes using accumulated fees
- Stake SALT in the validator contract
- Vote in governance proposals using held SALT
Oracle Node Seats
$SNAP NFTs grant the right to operate an oracle node on the Citrate bridge network. The total number of oracle seats is determined by the number of minted $SNAP NFTs, and each NFT maps to exactly one oracle slot.
There is a fixed cap of 1,000 $SNAP NFTs, ensuring scarcity and meaningful attestation weight per oracle. The initial distribution was conducted through a combination of public mint, community allocation, and strategic grants.
| Distribution | Quantity | Method |
|---|---|---|
| Public mint | 500 | First-come, first-served (price: 500 SALT each) |
| Community allocation | 300 | Distributed to early contributors and testnet participants |
| Strategic/Foundation | 200 | Reserved for partnerships and foundation operations |
To link a $SNAP NFT to your oracle node:
# Register your oracle node with your $SNAP
citrate-cli snap register-oracle --token-id YOUR_SNAP_TOKEN_ID --node-endpoint "https://oracle.mynode.io" --attestation-pubkey $(citrate-oracle keygen --show-pubkey) --rpc https://rpc.cnidarian.cloud --private-key $PRIVATE_KEY
Fee Sharing
$SNAP NFTs earn fees from every bridge transaction that their associated oracle attests to. The fee share depends on the NFT's rarity tier and attestation weight.
Fee distribution per bridge transaction:
Bridge Fee (0.1% of value)
├── 70% → Oracle nodes (weighted by $SNAP tier)
├── 20% → Protocol treasury
└── 10% → Liquidity providers
Within the 70% oracle allocation, fees are distributed proportionally to attestation weight:
| Tier | Attestation Weight | Share of Oracle Pool |
|---|---|---|
| Common (700 NFTs) | 1x each = 700 total | 700/1900 = 36.8% |
| Rare (200 NFTs) | 3x each = 600 total | 600/1900 = 31.6% |
| Legendary (100 NFTs) | 10x each = 1000 total | 1000/1900 = 52.6% |
A Legendary $SNAP earns roughly 10x the fees of a Common $SNAP on a per-NFT basis.
Rarity Tiers
$SNAP rarity is determined at mint and is immutable. Each tier provides different network privileges and economic benefits:
Common (700 total):
- Standard attestation weight (1x)
- Base fee share
- Single oracle node seat
- Standard governance voting weight
Rare (200 total):
- Enhanced attestation weight (3x)
- 2x base fee share per NFT
- Single oracle node seat with priority routing
- Enhanced governance voting weight
Legendary (100 total):
- Maximum attestation weight (10x)
- 5x base fee share per NFT
- Single oracle node seat with highest priority
- Maximum governance voting weight
- Eligibility for Council of Oracles governance body
The Council of Oracles is a governance body composed of Legendary $SNAP holders that has advisory authority over bridge parameter changes, fee adjustments, and new chain integrations.
Trading and Transferring
$SNAP NFTs can be traded on any ERC-721 compatible marketplace. When a $SNAP is transferred, the token-bound account and its contents transfer with it. The new owner automatically inherits:
- The oracle node seat
- All accumulated fees in the vault
- The attestation weight and history
- Governance voting rights
The oracle node must be reconfigured by the new owner to point to their infrastructure. During the transfer, the oracle seat is temporarily inactive (maximum 24 hours to reconfigure before penalties apply).
Further Reading
- Oracle Node Setup -- setting up your oracle node
- Fee Structure -- how bridge fees are calculated
- Rewards -- all reward mechanisms in the ecosystem
- BR1J Constitution -- governance rights of $SNAP holders