NT-1 Fungible Token Standard
Norn supports protocol-level custom fungible tokens via the NT-1 standard. Tokens are consensus-level: definitions, mints, and burns are included in WeaveBlocks and propagate to all nodes via P2P gossip.
Token Operations
| Operation | Who | Fee | Effect |
|---|---|---|---|
| Create | Anyone | 10 NORN (burned) | Registers a new token with metadata; optionally mints initial supply to creator |
| Mint | Token creator only | None | Creates new tokens, credits to recipient |
| Burn | Any holder | None | Destroys tokens from burner's balance |
Token ID is deterministic: BLAKE3(creator ++ name ++ symbol ++ decimals ++ max_supply ++ timestamp).
Symbol uniqueness is enforced at the consensus level -- no two tokens can share the same ticker.
Token Rules
| Rule | Constraint |
|---|---|
| Name length | 1--64 printable ASCII characters |
| Symbol length | 1--12 uppercase alphanumeric characters |
| Decimals | 0--18 |
| Max supply | 0 = unlimited, otherwise enforced on mint |
CLI Usage
# Create a token
norn wallet create-token --name "Wrapped Bitcoin" --symbol WBTC \
--decimals 8 --max-supply 21000000 --initial-supply 0
# Mint tokens to a recipient (creator only)
norn wallet mint-token --token WBTC --to 0x<ADDRESS> --amount 1000
# Transfer custom tokens
norn wallet transfer --to 0x<ADDRESS> --amount 100 --token WBTC
# Burn tokens from your own balance
norn wallet burn-token --token WBTC --amount 50
# Query token info (by symbol or hex token ID)
norn wallet token-info WBTC
# List all tokens on the network
norn wallet list-tokens
# View all non-zero token holdings for the active wallet
norn wallet token-balancesRPC Methods
| Method | Parameters | Returns | Auth |
|---|---|---|---|
norn_createToken | hex (hex-encoded borsh TokenDefinition) | SubmitResult | Yes |
norn_mintToken | hex (hex-encoded borsh TokenMint) | SubmitResult | Yes |
norn_burnToken | hex (hex-encoded borsh TokenBurn) | SubmitResult | Yes |
norn_getTokenInfo | token_id (hex) | Option<TokenInfo> | No |
norn_getTokenBySymbol | symbol | Option<TokenInfo> | No |
norn_listTokens | limit, offset | Vec<TokenInfo> | No |