Revolution V2 is coming. A new chain, real proofs, and a verified identity stack. See what's changing

Protocol

Programmable Staking V2: Emissions on a Clock, Splits in Code

On 10 August 2026, YouTube announced its next round of Partner Program changes. From 1 February 2027, creators will need “10 million qualified Shorts views over the last 90 days” to share in ads and subscription revenue on Shorts. A year earlier, Patreon moved new creators to a “standard 10% platform fee” for pages launched after 4 August 2025.

Platforms set the terms, and platforms revise them. Goldman Sachs counted about 50 million creators and projected the market could reach “$480 billion by 2027 from $250 billion today” (a 2023 estimate). At that scale, who writes the split matters.

Revolution starts from the opposite premise. The split rules are published, and a contract enforces them. V2 rebuilds that contract. Here is what changed and why.

The problem: what Libertas (V1 network) taught us

Libertas (V1 network) ran the original staking design on an EraVM testnet. Three problems showed up.

Emission followed batches, not time. The curve assumed one batch every 40 seconds. Libertas (V1 network) averaged 108 seconds per batch. It emitted about 20.8M REVO where the curve intended about 53.0M over the same period. Batch frequency depends on traffic and operator settings, so supply drifted with it.

This is a known failure mode. In 2019, a Cosmos SDK issue noted that “The block provision depends on blocks_per_year parameter of genesis file, which is difficult to be determined at the start of network”. The SDK’s mint module still computes provisions as “AnnualProvisions/ params.BlocksPerYear”. Any emission defined per block inherits the block clock’s drift.

Rewards were pushed inside block production. One winning node per batch received the payout, and distribution ran inside block production. That does not scale to 250 nodes and 50,000 creators. It also couples chain liveness to reward accounting.

The split in code differed from the split on paper. The published whitepaper exempts node and creator self-stake from fees. Libertas (V1 network) paid per an Amplify technical draft that applies fees to full amounts. Holders were told the published rule.

How it works

Emission by the second

V2 keeps the curve and the total. The change is the clock.

Per batch (V1)Per second (V2)
Emission rateDepends on how often batches closeFixed by the curve
Libertas (V1 network) result108 s average per batch: about 20.8M REVO emitted versus about 53.0M intendedWould have matched the curve
Effect of tuning batch size for costChanges token supplyNone
Predictability for holdersLowHigh

The curve is 40 eras of 90 days, 250,000,000.000229 REVO in total. Each era’s per-second figure equals the Libertas (V1 network) on-chain per-batch value divided by 40, exactly. RevoEmissionTable.sol is generated from the live Libertas (V1 network) contract. These are network-wide emission figures. They are not a rate that any staker receives.

ZKsync OS produces blocks only when transactions exist, so staking reads block.timestamp, not block.number.

Claims instead of pushes

V2 accrues rewards through three indexes: one per unit of node weight (global), one per unit of delegation (per node), and one per fan share (per pool). Nothing is pushed during block production. Every settle step costs the same whether a node has 2 creators or 200.

Batog, Boca, and Johnson described a cumulative reward-per-token sum that “scales to any number of registered stakeholders”. V2 applies it at three levels.

Claims are pull-based and can be driven three ways:

DriverHow
Smart contractAny account calls claim, claimCreator, claimNode, or the ...For variants that pay the owner, not the caller. Claims are cornerstone calls, so the Cornerstone Paymaster covers the gas.
TimerA keeper settles, releases the Cornerstone Budget, jails stale nodes, runs auto-claims, and compounds for fans who approved it.
Agent or appA REST API exposes emission, nodes, pools, positions, and claim, compound, and settle endpoints. An Agens (agent) with a session key can call the contract directly.

Two-level topology

RoleDoesReceives
Verifying nodeStakes at least the minimum, runs a verifying external node, sends heartbeats from its verifier key, sets a node feeAll rewards on its own stake, plus its node fee on delegated rewards, plus settlement fees
CreatorStakes its own REVO into a Creator Pool delegated to one node, sets a creator feeAll rewards on its own stake, plus its creator fee on fans’ rewards
FanStakes REVO into a creator’s poolA pro-rata share of the fans’ portion, net of the creator fee

Topology is capped at two levels: fans to creator pools, creators to one node. An address holds one role. Self-staking and creator-to-creator delegation are refused. Caps are 250 node registrations and 200 creators per node. A full node can admit a larger creator by evicting its smallest. Evicted creators and their fans keep principal and accrued rewards.

The published split, enforced exactly

For node n with self-stake S, delegated stake D, and weight W = S + D:

  1. Node n receives a share R of each emission in proportion to W over all active nodes.
  2. The node keeps R × S / W with no fee.
  3. On delegated rewards R × D / W, the node takes its fee c: 20% minimum, 50% maximum, 20% default.
  4. The rest goes to pools in proportion to each pool’s stake d = s + f.
  5. From its pool share P, the creator keeps P × s / d with no fee.
  6. On the fans’ portion P × f / d, the creator takes its fee k: 0% to 100%.
  7. Fans share the rest in proportion to their stake.
  8. Rounding remainders go to the node and the creator. Index dust stays reserved in the contract. Nothing is created.

Illustrative example. Mechanics only. The numbers below are abstract units from the whitepaper’s worked example, checked by a unit test. They show how the split rules route one emission share. They are not a forecast of any amount anyone will receive.

Setup: one node with self-stake 100 and fee 20%. Creator C1 with own stake 30, fee 10%, and fans F1 (40) and F2 (30). Creator C2 with own stake 100, fee 0%, no fans. W = 300. R = 1,000 units.

StepUnits
Node self-stake share: 1,000 × 100/300333.333
Delegated share: 1,000 × 200/300666.667
Node fee: 20% of 666.667133.333
Node total466.667
To pools: 533.333, split 100:100C1 266.667, C2 266.667
C1 own stake: 266.667 × 30/10080.000
C1 fans’ portion186.667
C1 fee: 10% of 186.66718.667
C1 total98.667
C2 total (no fans)266.667
F1: 168 × 40/7096.000
F2: 168 × 30/7072.000
Sum1,000.000

Verifying nodes: heartbeats and jailing

A verifying node replays every block and co-signs batches before commit under ZKsync OS batch verification. The staking contract links economics to that role.

  1. Register with registerNode(verifier, feeBps) and at least minNodeStake (100,000 REVO proposed for mainnet). The node is Pending.
  2. Approve. Governance approves once the verifier address is an accepted batch signer. The node becomes Active.
  3. Heartbeat. Only the registered verifier key can call heartbeat(node).
  4. Jail. If no heartbeat arrives within livenessWindow (1 hour proposed), anyone can jail the node. A jailed node receives nothing. Its creators can redelegate.
  5. Exit. beginNodeExit() starts unbonding (7 days proposed).

Jailing stops rewards. It does not slash stake. That is open item E5.

Four invariants

Stateful fuzzing checks four invariants on every build:

InvariantMeaning
SolventContract balance ≥ principal + liabilities
Claimable coveredEverything claimable is backed
Paid within emitted and feesTotal paid never exceeds total emitted plus fees received
Cornerstone conservedBudget set aside = budget released + budget accrued

The reward pot is funded explicitly. If it runs short, allocation is capped at what it holds. The owner can never withdraw owed rewards.

What V2 has built, and what it has not

Built and tested on the devnet: RevoStaking with the published split, per-second emissions, index-based claims, node heartbeats and jailing, settlement fee routing to node operators, the Cornerstone Budget, a keeper, an API, and a node agent. 51 contract tests pass, including the four stateful invariants.

Not yet done: an independent audit of RevoStaking and EmissionSchedule (A7), slashing conditions (E5), and automated removal of jailed nodes from the signer set (C3). Virtus (V2 testnet) is not live. No one stakes on V2 today.

The regulatory backdrop

U.S. regulators have spoken on staking. On 29 May 2025, SEC staff stated its view that Protocol Staking Activities in connection with Protocol Staking “do not involve the offer and sale of securities”. The statement notes it “is not a rule, regulation, guidance, or statement of the U.S. Securities and Exchange Commission.” On 5 August 2025, SEC staff addressed liquid staking. On 17 March 2026, the SEC issued an interpretation, joined by the CFTC, that covers protocol staking. Sullivan & Cromwell summarizes it as treating validation activity, including “solo, self-custodial, custodial, and liquid staking arrangements”, as generally not involving the offer or sale of securities.

In the EU, ESMA states that “MiCA does not contain provisions specific to staking”. Providers that stake for clients fall under MiCA custody rules and need explicit client consent.

Revolution’s fan staking has its own structure: fans stake to creators who take a fee. The whitepaper flags fan staking and advertised rewards for legal review (section 13, item 2). Securities and consumer-protection treatment must be confirmed before public mainnet and before any reward rate is published. Revolution does not publish reward rates. Settlement fees paid to node operators are flagged for review too (item 1).

What it means

For verifying node operators. Liveness is the job. Run the node agent and keep the verifier key separate. A missed liveness window means a jail anyone can trigger. The node fee sits between 20% and 50%, enforced by contract.

For creators. You set a creator fee from 0% to 100%. Your own stake carries no fee. Fans can read the exact rule that routes their share. You can redelegate if your node is jailed or evicts you.

For developers. Rewards are state, not events. Read the indexes through the API or the contract. Drive claims from a contract, a keeper, or an Agens (agent) holding a session key under a Mandatum (delegated authority).

What is next: two open migration decisions

E1. Split rule conflict. Libertas (V1 network) paid under the technical draft. V2 implements the published rule. The proposed path is to confirm with the Association and publish a notice explaining the change.

E2. Emission start point. Libertas (V1 network) emitted about 20.8M REVO against about 53.0M intended. That decides how much of the 250M remains and which era V2 starts in. The options are to resume by amount emitted, resume by calendar, or restart at era 1. No choice has been made.

Migration scope (E3) and unclaimed fan rewards in Libertas (V1 network) Creator Pools (O5) are also open. Each is on the list to close before mainnet.

Sources

Build on V2.

Virtus (V2 testnet) opens in Phase 1. The SDK and APIs are in the developer docs.