TNT (Tetcore Network Token) is the native protocol-level token. It exists at the protocol layer, not as a smart contract.
| Property | Value |
|---|---|
| Name | Tetcore Network Token |
| Symbol | TNT |
| Decimals | 18 |
| Total Supply | 100,000,000,000 (100B) |
| Standard | Native protocol asset |
- Fixed at genesis: 100 billion TNT
- Created exactly once at block 0
- No additional minting unless authorized by governance
Genesis balances are defined in GenesisConfig and must sum exactly to TOTAL_SUPPLY.
1 TNT = 10^18 base units
All balances are stored as u128 (base units).
At all times:
Σ balances + Σ escrow + Σ vault_staked + Σ locked = TOTAL_SUPPLY - burned
TransferPayload = {
to: Address,
amount: u128
}
amount > 0sender_balance >= amountto != null_address
balance[sender] -= amount
balance[to] += amount
Gas fees are deducted separately.
- Clients pay operators for AI inference
- Escrow secures payment until receipt submitted
- Transaction fees for execution
- May be routed to validators or burned
- Lock TNT in Model Vaults
- Earn rewards from inference fees
- Voting power proportional to balance
- Proposal bonds required
- Block production incentives
- Consensus participation rewards
If enabled by governance:
- Burn amount reduces total supply
total_burnedtracked in statecurrent_supply = TOTAL_SUPPLY - total_burned
Default: No minting after genesis
If governance enables inflation:
- Must define cap and rate
- Must be deterministic
- Must preserve accounting invariants
fee = gas_used * gas_price
Gas prices are market-driven.
Inference fees are split per RevenueSplit:
| Recipient | Default Basis Points |
|---|---|
| Operator | 7000 |
| Model Owner | 2000 |
| Shard Provider | 500 |
| Validator | 400 |
| Treasury | 100 |
Users stake TNT to:
- Support model inference capacity
- Earn proportional rewards
- Participate in governance (with vault)
reward = inference_fees * vault_share * staker_percentage
The protocol exposes:
QueryTotalSupply()QueryBurnedSupply()QueryEscrowedSupply()QueryVaultStakedSupply()
pub struct TokenSupply {
pub total: u128,
pub circulating: u128,
pub escrowed: u128,
pub vault_staked: u128,
pub burned: u128,
pub locked_collateral: u128,
pub treasury_balance: u128,
pub validator_rewards: u128,
}pub struct InflationConfig {
pub state: InflationState,
pub rate_bps: u64,
pub cap: u128,
pub start_block: u64,
pub end_block: u64,
pub treasury_share_bps: u64,
pub validator_share_bps: u64,
}
pub enum InflationState {
Disabled,
Enabled,
Paused,
}pub struct StakingModule {
pub total_staked: u128,
pub total_shares: u128,
pub stakers: HashMap<Address, StakerInfo>,
pub validators: HashMap<Address, ValidatorStake>,
pub inflation_config: InflationConfig,
pub token_supply: TokenSupply,
}pub struct Treasury {
pub balance: u128,
pub spent: u128,
pub proposal_count: u64,
pub spend_limit_per_proposal: u128,
}pub struct FeeModule {
pub base_fee: u128,
pub min_gas_price: u128,
pub max_gas_price: u128,
pub burn_percentage: u8,
pub treasury_share: u8,
pub validator_share: u8,
pub congestion_multiplier: u128,
pub target_utilization: u64,
}All token economics must use:
- Integer arithmetic only (no floating point)
- Checked overflow behavior
- Canonical ordering for distributions
- Identical state roots across nodes