Skip to main content

Protocol Parameter Administration

The Yellow Network's on-chain smart contracts contain configurable parameters — security thresholds, fee levels, blockchain confirmation requirements — that must be updated as the network evolves. Without a parameter administration mechanism, these contracts would require a centralised administrator key, which is a critical single point of failure.

Node operator parameter administration replaces this centralised key with distributed multi-signature execution. Parameter changes require collective agreement from multiple independent operators. This is a protocol security mechanism that removes a centralisation risk from the network's infrastructure.

Parameter administration is restricted to active node operators — entities that run clearnode software, maintain collateral above the protocol minimum, and actively process transactions on the network. Holding YELLOW tokens alone does not grant parameter administration participation. A token holder who does not operate network infrastructure has no ability to propose or approve parameter changes, regardless of the quantity of tokens held.

Parameter administration scope is strictly limited to protocol-level service parameters: security thresholds, fee parameters, supported blockchain integrations, confirmation requirements, and protocol upgrade activation. It does not extend to token supply decisions, treasury allocation, or issuer corporate matters, which remain the responsibility of Layer3 Foundation and Layer3 Fintech Ltd.

How It Works On-Chain

Node operators post YELLOW tokens into the NodeRegistry as a mandatory functional security deposit. The NodeRegistry extends OpenZeppelin's Votes, which provides the on-chain accounting used to determine whether an operator meets the collateral threshold required to propose parameter changes.

  • Auto-self-delegation — on first lock, the operator is automatically set up so their collateral is counted immediately
  • Unlock removes participation — calling unlock() zeroes out the operator's participation weight immediately, even before the unlock period elapses
  • Relock restores participation — cancelling an unlock via relock() restores full participation weight
  • Delegation — operators can delegate their collateral weight to another address via delegate(address) for the purpose of parameter administration

Proposal Lifecycle

Propose ──► [delay] ──► Operator Consensus ──► [consensus period] ──► Queue ──► [timelock delay] ──► Execute

States

StateValueDescription
Pending0Proposal created, waiting for delay period
Active1Operator consensus period is open
Canceled2Proposal was canceled
Defeated3Consensus not reached (quorum not met or more Against)
Succeeded4Consensus reached, ready to queue
Queued5In timelock, waiting for delay
Expired6Queued but not executed in time
Executed7Successfully executed

Governor Extensions

ExtensionPurpose
GovernorSettingsConfigurable delay, consensus period, and proposal threshold
GovernorCountingSimpleFor / Against / Abstain signalling
GovernorVotesReads collateral weight from the NodeRegistry
GovernorVotesQuorumFractionQuorum as percentage of total locked collateral
GovernorTimelockControlRoutes execution through TimelockController
GovernorPreventLateQuorumExtends deadline if quorum reached late
GovernorProposalGuardianFoundation emergency cancel

Quorum

Quorum is calculated as max(fractionalQuorum, quorumFloor):

  • Fractional quorum — percentage of total locked collateral (default 4%)
  • Quorum floor — absolute minimum (default 100M YELLOW) so quorum doesn't collapse if most collateral is withdrawn

The quorum floor is checkpointed and can be updated via parameter administration (setQuorumFloor).

Default Parameters

ParameterDefaultDescription
Proposal delay7,200 blocks (~1 day)Time before consensus period starts
Consensus period50,400 blocks (~1 week)How long operators can signal support
Proposal threshold10,000,000 YELLOWMinimum collateral to create a proposal
Quorum numerator4%Percentage of locked collateral required
Quorum floor100,000,000 YELLOWAbsolute minimum quorum
Deadline extension14,400 blocks (~2 days)Extended deadline on late quorum
Timelock delay172,800 seconds (2 days)Delay before execution

Access Control Flow

NodeRegistry (collateral weight) ──► YellowGovernor (proposals) ──► TimelockController (delayed execution)

AppRegistry (admin role)
Treasury (if owned by timelock)

The TimelockController is the actual executor — it holds DEFAULT_ADMIN_ROLE on the AppRegistry and can own Treasuries. The Governor is the only proposer/canceller on the timelock. After deployment, the deployer renounces all admin roles, leaving parameter administration fully in the hands of active node operators.

Common Parameter Administration Actions

ActionTargetFunction
Transfer ETH from TreasuryTreasurytransfer(address(0), recipient, amount)
Transfer YELLOW from TreasuryTreasurytransfer(tokenAddr, recipient, amount)
Grant adjudicator roleAppRegistrygrantRole(ADJUDICATOR_ROLE, address)
Revoke adjudicator roleAppRegistryrevokeRole(ADJUDICATOR_ROLE, address)
Set slash cooldownAppRegistrysetSlashCooldown(seconds)
Update quorum floorGovernorsetQuorumFloor(newFloor)
Update parametersGovernorsetVotingDelay, setVotingPeriod, setProposalThreshold
Set/remove proposal guardianGovernorsetProposalGuardian(address)