ProtocolGovernance

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

ParameterBase-mainnet launch value
Voting tokenTNT (TangleToken)
ClockTimestamp-based ERC-6372 clock
Voting delay1 day (86400 seconds)
Voting period7 days (604800 seconds)
Proposal threshold100,000 TNT
Quorum4% of getPastTotalSupply()
Quorum at 100M cap4,000,000 votes
Vote choicesAgainst / 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

ParameterBase-mainnet launch value
Timelock delay4 days (345600 seconds)
Timelock minimum delay1 day
Timelock maximum delay30 days
Max actions per proposal10
Max native value per call10,000 ETH
Proposer roleTangleGovernor
Executor roleTangleGovernor
Canceller roleTangleGovernor; 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