From c4bc4acab8200a0032360be9fa353eac543f162a Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sun, 14 Jun 2026 17:31:13 -0600 Subject: [PATCH] docs(tokenomics): sync 100m distribution and governance --- CONTENT_AUDIT.md | 6 +- components/AllocationTable.tsx | 242 ------------------------ pages/network/_meta.ts | 1 + pages/network/claim-airdrop.mdx | 10 +- pages/network/governance.mdx | 57 ++++++ pages/network/incentives-developers.mdx | 4 +- pages/network/incentives-operators.mdx | 2 +- pages/network/incentives-overview.mdx | 12 +- pages/network/launch.mdx | 16 +- pages/network/network-parameters.mdx | 113 +++++++---- pages/network/tokenomics/allocation.mdx | 48 ++--- pages/network/tokenomics/inflation.mdx | 25 ++- pages/network/tokenomics/usage.mdx | 12 +- 13 files changed, 218 insertions(+), 330 deletions(-) delete mode 100644 components/AllocationTable.tsx create mode 100644 pages/network/governance.mdx diff --git a/CONTENT_AUDIT.md b/CONTENT_AUDIT.md index d8c82c4f..284fb858 100644 --- a/CONTENT_AUDIT.md +++ b/CONTENT_AUDIT.md @@ -7,13 +7,13 @@ Last updated: 2026-01-19 | Area | File | Status | Notes / Needed Inputs | | ---- | ---- | ------ | --------------------- | | Network parameters | `pages/network/network-parameters.mdx` | Updated (testnet + sources) | Mainnet/local addresses still needed. | -| Token allocation | `pages/network/tokenomics/allocation.mdx` | Updated (tnt-core values) | Need distribution contract addresses by environment. | -| Inflation model | `pages/network/tokenomics/inflation.mdx` | Updated | Reflects v2 budgeted incentives; verify against current policy. | +| Token allocation | `pages/network/tokenomics/allocation.mdx` | Updated (100M normalized distribution) | Need distribution contract addresses by environment. | +| Inflation model | `pages/network/tokenomics/inflation.mdx` | Updated | Reflects 1M TNT year-one treasury-funded budget from Base-mainnet config. | | Operator incentives | `pages/network/incentives-operators.mdx` | Updated | Confirm default fee split and operator commission rules. | | Developer incentives | `pages/network/incentives-developers.mdx` | Updated | Confirm metric weights and eligibility rules. | | Participation credits | `pages/network/points-mechanics.mdx` | Updated (testnet) | Mainnet/local addresses still needed. | | Launch page | `pages/network/launch.mdx` | Needs investigation | Reported runtime error; content updated with v2 links. | -| Governance docs | `pages/network/governance.mdx` | Removed | Replace with new governance system when ready. | +| Governance docs | `pages/network/governance.mdx` | Added | Reflects Base-mainnet launch params; role addresses still pending. | | Differences doc | `pages/network/overview.mdx` | Updated | Content merged; old doc removed. | | Use cases | `pages/vision/use-cases.mdx` | Updated | Review for AI alignment and add any missing product references. | diff --git a/components/AllocationTable.tsx b/components/AllocationTable.tsx deleted file mode 100644 index cc2db3f3..00000000 --- a/components/AllocationTable.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import React, { ReactNode } from "react"; - -interface HeaderCellProps { - children: ReactNode; -} - -const HeaderCell = ({ children }: HeaderCellProps) => ( - - {children} - -); - -interface CellProps { - children: ReactNode; -} - -const Cell = ({ children }: CellProps) => ( - - {children} - -); - -interface RowProps { - children: ReactNode; - isEven: boolean; -} - -const Row = ({ children, isEven }: RowProps) => ( - - {children} - -); - -interface SubtotalRowProps { - children: ReactNode; -} - -const SubtotalRow = ({ children }: SubtotalRowProps) => ( - - {children} - -); - -interface TotalRowProps { - children: ReactNode; -} - -const TotalRow = ({ children }: TotalRowProps) => ( - - {children} - -); - -export default function AllocationTable() { - return ( -
- - - - Allocation Category - Entity Name - Allocated Share (%) - Vesting Plan - Cliff (Months) - Vesting Period (Months) - Immediate Liquidity (%) - Initial Liquid Tokens - Cliff-Release Tokens - Monthly Vesting Rate - Total Tokens Allocated - - - - - Contributors - Webb Technologies (Developer) - 28.56500% - A-Vesting - 12 - 48 - 0% - 0.00 - 7,141,250.00 - 595,104.17 - 28,565,000.00 - - - Contributors - Investors - 13.64000% - A-Vesting - 12 - 48 - 0% - 0.00 - 3,410,000.00 - 284,166.67 - 13,640,000.00 - - - Contributors - Indiv. Contributors - 1.43500% - A-Vesting - 12 - 48 - 0% - 0.00 - 358,750.00 - 29,895.83 - 1,435,000.00 - - - - Contributors Total - - 43.64000% - - 0.00 - 10,910,000.00 - - 43,640,000.00 - - - Governance-Managed - On-chain Treasury - 36.36000% - n/a - n/a - n/a - 100% - 36,360,000.00 - n/a - n/a - 36,360,000.00 - - - Governance-Managed - Foundation - 15.00000% - A-Vesting - 12 - 48 - 5% - 750,000.00 - 3,562,500.00 - 296,875.00 - 15,000,000.00 - - - - Governance-Managed Total - - 51.36000% - - 37,110,000.00 - 3,562,500.00 - - 51,360,000.00 - - - Airdrop Pool - Leaderboard Participants - 2.00000% - B-Vesting - 1 - 24 - 5% - 100,000.00 - 79,166.67 - 82,608.70 - 2,000,000.00 - - - Airdrop Pool - DOT Validators Snapshot - 1.00000% - B-Vesting - 1 - 24 - 5% - 50,000.00 - 39,583.33 - 41,304.35 - 1,000,000.00 - - - Airdrop Pool - EDG Genesis Participants - 1.00000% - B-Vesting - 1 - 24 - 5% - 50,000.00 - 39,583.33 - 41,304.35 - 1,000,000.00 - - - Airdrop Pool - EDG 2023 Snapshot - 1.00000% - B-Vesting - 1 - 24 - 5% - 50,000.00 - 39,583.33 - 41,304.35 - 1,000,000.00 - - - - Airdrop Pools Total - - 5.00000% - - 250,000.00 - 197,916.67 - 206,521.74 - 5,000,000.00 - - - - Total Supply - - 100.00000% - - 37,360,000.00 - - 100,000,000.00 - - -
-
- ); -} diff --git a/pages/network/_meta.ts b/pages/network/_meta.ts index a7750c06..dce5232b 100644 --- a/pages/network/_meta.ts +++ b/pages/network/_meta.ts @@ -7,6 +7,7 @@ const meta: Meta = { }, overview: "Protocol Foundation", "network-parameters": "Protocol Parameters", + governance: "Governance", "metrics-and-scoring": "Metrics and Scoring", "-- economics": { type: "separator", diff --git a/pages/network/claim-airdrop.mdx b/pages/network/claim-airdrop.mdx index 2c27e2b1..ac33a20d 100644 --- a/pages/network/claim-airdrop.mdx +++ b/pages/network/claim-airdrop.mdx @@ -2,7 +2,7 @@ import { Callout } from "nextra/components"; # TNT Migration and Claims -TNT migration moves balances from the legacy Substrate system and direct EVM allocations into the canonical TNT token on EVM. Claims are verified using a Merkle tree and an SP1 zero-knowledge proof, then distributed with a vesting schedule. +TNT migration moves eligible legacy Substrate balances into the canonical TNT token on EVM. Claims are verified using a Merkle tree and an SP1 zero-knowledge proof, then distributed with a vesting schedule. The claim window and unlock parameters are defined by the on-chain migration contract. The claims portal shows the current deadline and vesting configuration. @@ -16,16 +16,18 @@ Contract sources (GitHub): ## Who Can Claim - **Substrate holders**: Submit a claim using your SR25519 public key and choose an EVM recipient. -- **EVM recipients**: If you are included in the EVM list, you can claim directly to your wallet. +- **EVM recipients**: The current normalized distribution has no active EVM allocation. If a future EVM list is added, it will be published in the distribution source files. ## Vesting Schedule (Default) -- **2% unlocked** immediately at claim time. -- **98% vested** through a linear vesting contract. +- **10% unlocked** immediately at claim time. +- **90% vested** through a linear vesting contract. - **12-month cliff + 24-month linear vesting** (36 months total). Vesting parameters can be updated before the first claim if governance changes them. Always confirm the live settings in the claims portal. +The treasury and foundation buckets use separate launch schedules. See [Token Allocation](/network/tokenomics/allocation). + ## Step 1: Access the Claims UI 1. Navigate to the claims portal: [https://app.tangle.tools/claim](https://app.tangle.tools/claim) diff --git a/pages/network/governance.mdx b/pages/network/governance.mdx new file mode 100644 index 00000000..4606106d --- /dev/null +++ b/pages/network/governance.mdx @@ -0,0 +1,57 @@ +# Governance + +Tangle governance uses TNT voting power, a Governor contract, and a Timelock. The Governor decides whether a proposal passes. The Timelock waits before executing the approved calls. + +Mainnet governance is configured from `deploy/config/base-mainnet.json`. The role addresses are still launch inputs until the Base-mainnet deployment is finalized. + +## Voting Parameters + +| Parameter | Base-mainnet launch value | +| ------------------ | ------------------------------ | +| Voting token | TNT (`TangleToken`) | +| Clock | Timestamp-based ERC-6372 clock | +| Voting delay | 1 day (`86400` seconds) | +| Voting period | 7 days (`604800` seconds) | +| Proposal threshold | 100,000 TNT | +| Quorum | 4% of `getPastTotalSupply()` | +| Quorum at 100M cap | 4,000,000 votes | +| Vote choices | Against / For / Abstain | + +Quorum is measured against past total supply. At launch, the cap is 100,000,000 TNT, but much of that supply is locked or undelegated. The low initial quorum is intentional; it keeps governance usable while float is thin. Quorum can be raised later by governance. + +## Execution Parameters + +| Parameter | Base-mainnet launch value | +| ------------------------- | ------------------------------------------------------ | +| Timelock delay | 4 days (`345600` seconds) | +| Timelock minimum delay | 1 day | +| Timelock maximum delay | 30 days | +| Max actions per proposal | 10 | +| Max native value per call | 10,000 ETH | +| Proposer role | `TangleGovernor` | +| Executor role | `TangleGovernor` | +| Canceller role | `TangleGovernor`; guardian Safe recommended for launch | + +The timelock is expected to hold admin and upgrade roles on protocol contracts after deployment. That means upgrades, parameter changes, and treasury actions should become delayed governance actions instead of direct deployer actions. + +## What Governance Controls + +Governance can change protocol parameters, fund incentive pools, manage treasury actions, and upgrade UUPS contracts whose upgrade role is held by the timelock. Examples include: + +- payment split updates +- slashing config updates +- incentive budget funding +- staking asset enablement +- protocol contract upgrades + +## Launch Caveat + +Do not treat placeholder addresses in `base-mainnet.json` as live governance addresses. Production launch still needs real Safe and Timelock addresses filled into `roles.admin`, `roles.treasury`, `roles.timelock`, and `roles.multisig`. + +## Sources + +- Governance config: https://github.com/tangle-network/tnt-core/blob/main/deploy/config/base-mainnet.json +- Decision record: https://github.com/tangle-network/tnt-core/blob/main/deploy/MAINNET-PARAMETERS.md +- Governor: https://github.com/tangle-network/tnt-core/blob/main/src/governance/TangleGovernor.sol +- Timelock: https://github.com/tangle-network/tnt-core/blob/main/src/governance/TangleTimelock.sol +- Token: https://github.com/tangle-network/tnt-core/blob/main/src/governance/TangleToken.sol diff --git a/pages/network/incentives-developers.mdx b/pages/network/incentives-developers.mdx index 287b957c..e48f0f0b 100644 --- a/pages/network/incentives-developers.mdx +++ b/pages/network/incentives-developers.mdx @@ -7,9 +7,9 @@ Blueprint developers earn revenue when customers instantiate and run their servi ## Service Fees -For each service payment, the protocol sends the **developer portion** to the blueprint owner by default. A blueprint’s service manager can return a different payout address (for example, to route revenue into a multisig, splitter, or DAO treasury). +For each service payment, the protocol sends the **developer portion** to the blueprint owner by default. A blueprint's service manager can return a different payout address (for example, to route revenue into a multisig, splitter, or DAO treasury). -The default protocol split is **20% developer / 20% protocol / 40% operators / 20% stakers** (governance configurable). +The Base-mainnet launch split is **20% developer / 19.5% protocol / 40% operators / 20% stakers / 0.5% keeper** (governance configurable). ## Optional TNT Rewards diff --git a/pages/network/incentives-operators.mdx b/pages/network/incentives-operators.mdx index 2815e0fe..6cc16485 100644 --- a/pages/network/incentives-operators.mdx +++ b/pages/network/incentives-operators.mdx @@ -7,7 +7,7 @@ Operators earn revenue from service usage and optional TNT budgets. This page ou 1. **Service fees (default split)** - Fees paid by customers are split across developers, the protocol, operators, and stakers. - - The default split is **20% developer / 20% protocol / 40% operators / 20% stakers** (governance configurable). + - The Base-mainnet launch split is **20% developer / 19.5% protocol / 40% operators / 20% stakers / 0.5% keeper** (governance configurable). 2. **Optional TNT incentives (pre-funded)** diff --git a/pages/network/incentives-overview.mdx b/pages/network/incentives-overview.mdx index 6c02b711..7af9e7f4 100644 --- a/pages/network/incentives-overview.mdx +++ b/pages/network/incentives-overview.mdx @@ -1,6 +1,6 @@ # Incentives -Tangle’s incentives come from two sources: +Tangle's incentives come from two sources: 1. **Service fees** paid by customers when they create and run blueprint services. 2. **TNT incentive budgets** funded to the protocol (no automatic minting). @@ -22,14 +22,14 @@ Code references: [PaymentsDistribution.sol](https://github.com/tangle-network/tn ## Service Fees -Customers pay for blueprint services using the chain’s native token or an ERC-20 payment token (including TNT). Fees are split between: +Customers pay for blueprint services using the chain's native token or an ERC-20 payment token (including TNT). Fees are split between: -- **Developer** (blueprint owner, or a payout address returned by the blueprint’s service manager) +- **Developer** (blueprint owner, or a payout address returned by the blueprint's service manager) - **Protocol treasury** -- **Operators** (weighted by that service’s per-operator exposure) +- **Operators** (weighted by that service's per-operator exposure) - **Stakers** (delegators who staked with the chosen operators) -The default split is **20% developer / 20% protocol / 40% operators / 20% stakers**, and can be updated by governance. +The Base-mainnet launch split is **20% developer / 19.5% protocol / 40% operators / 20% stakers / 0.5% keeper**, and can be updated by governance. Staker shares are routed per-operator to the on-chain `ServiceFeeDistributor`, which distributes fees to delegators based on: @@ -46,6 +46,8 @@ TNT incentives are distributed from a pre-funded on-chain pool: - Other portions become claimable TNT balances for operators, customers, and developers. - If `stakersBps > 0`, a staker TNT budget is distributed by service exposure and routed through `ServiceFeeDistributor`. +The Base-mainnet year-one budget is 1,000,000 TNT. It is treasury-funded, not minted. + ## Metrics and Scoring The protocol can optionally record activity into a metrics contract (`TangleMetrics`) using best-effort hooks (failures do not block core protocol actions). Those metrics drive merit-based distributions in `InflationPool`. diff --git a/pages/network/launch.mdx b/pages/network/launch.mdx index 24c2906d..4e32f17b 100644 --- a/pages/network/launch.mdx +++ b/pages/network/launch.mdx @@ -11,23 +11,27 @@ Tangle is launching as a protocol stack on EVM: a coordination layer for agents ## What Launch Means Today - **Protocol core is deployed** as a set of EVM contracts (TNT, Blueprints, operators, payments). -- **Migration tooling is live** for Substrate → EVM claims and direct EVM allocations. +- **Migration tooling is live** for Substrate-to-EVM claims. The direct EVM path exists, but the current normalized distribution has 0 TNT in that bucket. - **Incentives and credits are optional** modules that can be enabled by governance. Protocol contracts (GitHub): https://github.com/tangle-network/tnt-core/tree/main/src ## Token Distribution and Lockups -The protocol supports two distribution paths: +Mainnet genesis is normalized to exactly 100,000,000 TNT: -- **Substrate → EVM migration** via the SP1-based claim system. -- **Direct EVM distributions** via batched transfers with configurable lockups. +- **Substrate migration claims**: 49,322,182.8359 TNT. +- **EVM allocations**: 0 TNT in the current normalized distribution. +- **Foundation**: 15,040,809.8267 TNT. +- **Treasury**: 35,637,007.3373 TNT. -Both paths support a split between unlocked and vested allocations. See the claims guide for default parameters. +Substrate claims use the SP1-based claim system. Treasury is the balancing bucket that brings the distribution down from the raw 109.26M snapshot to the 100M cap. See [Token Allocation](/network/tokenomics/allocation). ## Governance Status -Governance contracts exist, but production activation depends on the rollout plan and multisig handoff. The protocol is designed to move from admin-controlled deployment to community governance as it matures. +The Base-mainnet launch config pins governance parameters: 1-day voting delay, 7-day voting period, 100,000 TNT proposal threshold, 4% quorum, and a 4-day timelock delay. Production activation still requires the real Safe and Timelock addresses to be filled in before launch. + +See [Governance](/network/governance) for the full parameter table. ## Operator Onboarding diff --git a/pages/network/network-parameters.mdx b/pages/network/network-parameters.mdx index 15ea942e..58440d2e 100644 --- a/pages/network/network-parameters.mdx +++ b/pages/network/network-parameters.mdx @@ -1,6 +1,6 @@ # Protocol Parameters -This page summarizes protocol-level defaults for the Tangle Network EVM deployment. Values are configured per environment and may change via governance or admin controls. For live values, read the contracts on the target network. +This page summarizes the current Tangle Protocol launch configuration. Mainnet values are taken from the Base-mainnet deploy config until mainnet contracts are live. Testnet addresses are from the latest Base Sepolia manifest. ## TNT Core Values @@ -9,10 +9,25 @@ This page summarizes protocol-level defaults for the Tangle Network EVM deployme | Name | Tangle Network Token | | Symbol | TNT | | Decimals | 18 | -| Max supply (hard cap) | 109,255,636.91921292788561091 TNT | +| Max supply (hard cap) | 100,000,000 TNT | +| Voting standard | ERC-20 Votes with timestamp clock | Source: https://github.com/tangle-network/tnt-core/blob/main/src/governance/TangleToken.sol +## Genesis Distribution + +| Bucket | Amount (TNT) | Share | Launch treatment | +| -------------------------- | ------------------ | ---------- | ------------------------------------------------------- | +| Substrate migration claims | 49,322,182.8359 | 49.322183% | 10% unlocked at claim; 12m cliff + 24m linear vesting | +| EVM allocations | 0 | 0% | No active EVM claims in the normalized distribution | +| Foundation | 15,040,809.8267 | 15.040810% | 30% unlocked; 6m cliff + 30m linear vesting on the rest | +| Treasury | 35,637,007.3373 | 35.637007% | 0% unlocked; 6m cliff + 30m linear vesting | +| **Total** | **100,000,000.00** | **100%** | Equals `TangleToken.MAX_SUPPLY` | + +The raw snapshot total was 109,255,636.9192 TNT. The live distribution drops expired claims and reduces only the treasury bucket to land at 100,000,000 TNT. Active claimant buckets are not cut. + +Source: https://github.com/tangle-network/tnt-core/blob/main/deploy/distributions/normalized-100m.json + ## TNT Contract Addresses | Environment | Token Contract | Explorer | @@ -35,40 +50,72 @@ Testnet source: https://github.com/tangle-network/tnt-core/blob/main/deployments | `InflationPool` | `TBD` | `0xe620f87540724a0cebdee9796dd8580e02dd4911` | `TBD` | | `Credits` | `TBD` | `0x758226e04478541fcdac605e1f235e2956259a10` | `TBD` | -## Protocol Defaults (v2) - -Defaults are defined in `TangleStorage` and `ProtocolConfig` and can be overridden by governance/admin roles. - -### Fee and Security Defaults - -| Parameter | Value | -| --------------------------- | ---------------------------------------------------------- | -| Service fee split (default) | 20% developer / 20% protocol / 40% operators / 20% stakers | -| Default TNT min exposure | 10% (1000 bps) | -| TNT payment discount | 0 bps | -| Aggregation threshold | 67% (6700 bps) | - -### Timing Defaults - -| Parameter | Value | -| ----------------------- | -------------------- | -| Round duration | 6 hours | -| Rounds per epoch | 28 (7 days) | -| Delegator unstake delay | 28 rounds (7 days) | -| Operator exit delay | 56 rounds (14 days) | -| Dispute window | 14 rounds (3.5 days) | -| Reward grace period | 4 rounds (24 hours) | -| Min service commitment | 1 day | -| Exit queue duration | 7 days | -| Min service TTL | 1 hour | -| Max service TTL | 365 days | -| Request expiry grace | 1 hour | -| Max quote age | 1 hour | +## Base-Mainnet Launch Parameters + +These values are defined in `deploy/config/base-mainnet.json`. They can change after launch through governance. + +### Governance + +| Parameter | Value | +| ------------------- | ------------------------------ | +| Voting delay | 1 day (`86400` seconds) | +| Voting period | 7 days (`604800` seconds) | +| Proposal threshold | 100,000 TNT | +| Quorum | 4% of past total supply | +| Quorum at 100M cap | 4,000,000 votes | +| Timelock delay | 4 days (`345600` seconds) | +| Timelock bounds | 1 day minimum, 30 days maximum | +| Proposal action cap | 10 actions | +| Native value cap | 10,000 ETH per action | + +Source: https://github.com/tangle-network/tnt-core/blob/main/deploy/config/base-mainnet.json + +### Payment Split + +| Parameter | Value | +| ----------------- | ------------------ | +| Developer | 20% (`2000` bps) | +| Protocol treasury | 19.5% (`1950` bps) | +| Operators | 40% (`4000` bps) | +| Stakers | 20% (`2000` bps) | +| Keeper | 0.5% (`50` bps) | + +The keeper share pays permissionless billing callers. It is carved from the protocol bucket. + +### Incentive Budget + +| Parameter | Value | +| ------------------------- | ------------------------------- | +| Year-one TNT budget | 1,000,000 TNT | +| Supply impact | Treasury-funded; no new minting | +| Epoch length | 7 days (`604800` seconds) | +| Staking vault budget | 55% (`5500` bps) | +| Operator budget | 25% (`2500` bps) | +| Customer budget | 10% (`1000` bps) | +| Developer budget | 10% (`1000` bps) | +| Staker exposure budget | 0% at genesis | +| Vault operator commission | 15% (`1500` bps) | + +### Staking and Slashing + +| Parameter | Value | +| -------------------------------- | --------------------------- | +| TNT operator bond floor | 1,000 TNT | +| Minimum delegation | 0.2 TNT | +| Operator commission | 10% (`1000` bps) | +| Default TNT min exposure | 10% (`1000` bps) | +| TNT payment discount | 0 bps | +| Max slash per proposal | 50% (`5000` bps) | +| Slash dispute window | 7 days (`604800` seconds) | +| Instant slash | Disabled at launch | +| Slash dispute bond | 0.02 ETH | +| Slash resolution deadline | 21 days (`1814400` seconds) | +| Max pending slashes per operator | 8 | Sources: -- https://github.com/tangle-network/tnt-core/blob/main/src/TangleStorage.sol -- https://github.com/tangle-network/tnt-core/blob/main/src/config/ProtocolConfig.sol +- https://github.com/tangle-network/tnt-core/blob/main/deploy/config/base-mainnet.json +- https://github.com/tangle-network/tnt-core/blob/main/deploy/MAINNET-PARAMETERS.md ## Host Chain Parameters diff --git a/pages/network/tokenomics/allocation.mdx b/pages/network/tokenomics/allocation.mdx index c8c0f401..af41e3e6 100644 --- a/pages/network/tokenomics/allocation.mdx +++ b/pages/network/tokenomics/allocation.mdx @@ -9,43 +9,45 @@ import { Callout } from "nextra/components"; # Token Allocation -This page summarizes TNT allocation and vesting for Tangle Protocol. The authoritative source is the on-chain -distribution contracts and migration snapshot files; the table below is a readable summary derived from those sources. +TNT genesis is normalized to exactly 100,000,000 TNT. That number is the hard cap in `TangleToken`. - Amounts are derived from the migration snapshot and carveout files. See the source links in this page for - exact values (wei) and the full Merkle tree. + The source of truth is `deploy/distributions/normalized-100m.json`. The raw 109.26M snapshot is kept for provenance, but it is not the live distribution. ## Allocation Summary -| Category | Purpose | Amount (TNT) | Share | Vesting | -| -------------------------- | ------------------------------------ | ---------------- | ------ | ------------------------------------ | -| Substrate migration claims | SS58 snapshot claims via Merkle tree | 51,244,581.8122 | 46.90% | 2% unlocked + 12m cliff + 24m linear | -| EVM allocations | Direct EVM recipient list | 1,125,776.5192 | 1.03% | 2% unlocked + 12m cliff + 24m linear | -| Treasury carveout | Non-claimable module balances | 36,844,468.7611 | 33.72% | Liquid at deployment | -| Foundation carveout | Foundation allocation | 15,040,809.8267 | 13.77% | Liquid at deployment | -| Liquidity ops carveout | Liquidity operations budget | 5,000,000 | 4.58% | Liquid at deployment | -| **Total (MAX_SUPPLY)** | Hard cap from `TangleToken` | 109,255,636.9192 | 100% | - | +| Category | Purpose | Amount (TNT) | Share | Launch treatment | +| -------------------------- | -------------------------------------- | ------------------ | ---------- | ------------------------------------------------------- | +| Substrate migration claims | SS58 snapshot claims via Merkle tree | 49,322,182.8359 | 49.322183% | 10% unlocked at claim; 12m cliff + 24m linear vesting | +| EVM allocations | Direct EVM recipient list | 0 | 0% | No active EVM claims in the normalized distribution | +| Foundation | Foundation allocation | 15,040,809.8267 | 15.040810% | 30% unlocked; 6m cliff + 30m linear vesting on the rest | +| Treasury | Protocol treasury and incentive budget | 35,637,007.3373 | 35.637007% | 0% unlocked; 6m cliff + 30m linear vesting | +| **Total** | `TangleToken.MAX_SUPPLY` | **100,000,000.00** | **100%** | True fixed supply | -## Vesting and Lockups +## How the 100M Number Is Derived -Allocations can mix unlocked and vested balances. Each allocation defines: +| Step | Amount (TNT) | Effect | +| ------------------------ | ------------------ | ------------------------------------------- | +| Raw snapshot grand total | 109,255,636.9192 | Historical input, not the live cap | +| Expired claims dropped | 3,190,747.2196 | One-year Substrate claim window had expired | +| Treasury reduction | 6,064,889.6996 | Treasury absorbs the normalize-down | +| **Total reduction** | **9,255,636.9192** | 109.2556M becomes exactly 100M | -- **Unlock percentage** at claim or distribution time. -- **Cliff duration** before vesting starts. -- **Linear vesting period** once the cliff ends. +No active claimant bucket is reduced. Treasury is the balancing bucket. -For legacy allocations and migration details, see [TNT Migration and Claims](/network/claim-airdrop). +## Incentive Budget + +The year-one incentive budget is 1,000,000 TNT, or 1% of the 100M cap. It is funded from treasury into `InflationPool`; it is not new minting. ## Source of Truth (GitHub) +- Live distribution: https://github.com/tangle-network/tnt-core/blob/main/deploy/distributions/normalized-100m.json +- Raw snapshot provenance: https://github.com/tangle-network/tnt-core/blob/main/deploy/distributions/raw-snapshot.json +- Reconcile script: https://github.com/tangle-network/tnt-core/blob/main/deploy/distributions/reconcile.py - Token cap: https://github.com/tangle-network/tnt-core/blob/main/src/governance/TangleToken.sol -- Substrate Merkle snapshot: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/merkle-tree.json -- EVM recipient list: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/evm-claims.json -- Treasury carveout: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/treasury-carveout.json -- Foundation carveout: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/foundation-carveout.json -- Liquidity ops carveout: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/liquidity-ops-carveout.json +- Mainnet deploy config: https://github.com/tangle-network/tnt-core/blob/main/deploy/config/base-mainnet.json +- Migration contract: https://github.com/tangle-network/tnt-core/blob/main/packages/migration-claim/src/TangleMigration.sol ## Verification Sources diff --git a/pages/network/tokenomics/inflation.mdx b/pages/network/tokenomics/inflation.mdx index d16decbc..80f1e901 100644 --- a/pages/network/tokenomics/inflation.mdx +++ b/pages/network/tokenomics/inflation.mdx @@ -1,15 +1,26 @@ # TNT Supply and Incentives +## Fixed Supply + +TNT is capped at 100,000,000 tokens. Genesis mints the full cap across the migration, foundation, and treasury buckets. After that, incentive programs are funded from existing treasury supply. + ## No Automatic Inflation -Tangle does **not** mint TNT continuously for block rewards or staking. Incentives are **budgeted and pre-funded** by governance, which means there is no automatic inflation at the protocol level. +Tangle does not mint TNT continuously for block rewards or staking. Incentives are budgeted and pre-funded by governance, which means there is no automatic monetary inflation at the protocol level. + +## Base-Mainnet Year-One Budget -## Budgeted Incentives (Pre-Funded) +The Base-mainnet launch config sets `year1FundTnt` to 1,000,000 TNT, exactly 1% of the 100M cap. Treasury funds this amount into `InflationPool` after deploy. If governance allocates TNT to incentives, funds are deposited into `InflationPool` and distributed by epoch: -- **Stakers**: TNT incentives can be paid via `RewardVaults` (per asset) and optional staker exposure budgets. -- **Operators / Developers / Customers**: TNT rewards can be allocated based on activity metrics. +| Budget rail | Launch share | +| ---------------------- | ------------- | +| Staking vaults | 55% | +| Operators | 25% | +| Customers | 10% | +| Developers | 10% | +| Staker exposure budget | 0% at genesis | See [Incentives](/network/incentives-overview) and [Metrics and Scoring](/network/metrics-and-scoring) for the full model. @@ -18,10 +29,14 @@ Source contracts: - https://github.com/tangle-network/tnt-core/blob/main/src/rewards/InflationPool.sol - https://github.com/tangle-network/tnt-core/blob/main/src/rewards/RewardVaults.sol +Source config: + +- https://github.com/tangle-network/tnt-core/blob/main/deploy/config/base-mainnet.json + ## Service Fees Are Separate Service fees are paid by customers in the payment token (native or ERC-20) and are **not** inflation. Fees are split across developers, the protocol, operators, and stakers. ## Governance Control -If the protocol ever enables minting or changes the supply policy, this page will be updated to reflect the new model. +Governance can change incentive budgets and weights by funding or configuring the incentive contracts. Changing the 100M supply cap would require a token upgrade. diff --git a/pages/network/tokenomics/usage.mdx b/pages/network/tokenomics/usage.mdx index 155b3fa8..d25e0a45 100644 --- a/pages/network/tokenomics/usage.mdx +++ b/pages/network/tokenomics/usage.mdx @@ -1,8 +1,8 @@ # TNT Token -TNT is Tangle’s **governance token** (an ERC‑20 on EVM chains). +TNT is Tangle's governance token. It is an ERC-20 Votes token on EVM chains with a 100,000,000 TNT hard cap. -TNT is **not** the gas token. Gas fees are paid in the underlying chain’s native asset (e.g., ETH on Base). +TNT is **not** the gas token. Gas fees are paid in the underlying chain's native asset (e.g., ETH on Base). ## Usage Cases @@ -12,16 +12,16 @@ TNT holders participate in protocol governance (e.g., parameter updates, treasur ### Protocol Alignment -TNT is the unit of alignment for the Tangle protocol: it is used to coordinate incentives across stakers, operators, blueprint developers, and users of services. +TNT coordinates incentives across stakers, operators, blueprint developers, and users of services. ### Staking Economics -TNT can be used within the staking ecosystem as an operator **self-stake** asset and as a delegatable staking asset (and may also be accepted for service payments depending on the deployed configuration). +TNT can be used as an operator self-stake asset and as a delegatable staking asset. The Base-mainnet launch config sets the TNT operator bond floor at 1,000 TNT. ### Slashing Mechanisms -TNT can be used as collateral within the staking system, where slashing is applied for service-level violations. These measures deter malicious behavior and align operators with protocol requirements. +TNT can be used as collateral within the staking system. Slashing can reduce collateral when a service-level violation is proven through the protocol's slashing path. --- -A considerable portion of TNT will be actively engaged in the protocol (e.g., governance, operator self-stake, incentives), and in the execution of Tangle Blueprints. This helps align economic security with real usage of services. +See [Token Allocation](/network/tokenomics/allocation) for the 100M genesis split and [Governance](/network/governance) for voting parameters.