← Back to site
TECHNICAL PAPER · v1.0 · ROBINHOOD CHAIN

A per-second payout protocol

Weighted draws over a transfer-log holder book, funded by bonding-curve commission, settled in native ETH.

ChainRobinhood Chain, id 4663
Settlementnative ETH
Cadence1 payout / second, adaptive
Fundingcreator commission, no emissions

Abstract

We describe a protocol that pays a single token holder every second, indefinitely, without staking, claiming or registration. Each second a winner is drawn from a holder book reconstructed from the token's ERC-20 transfer log, with probability equal to the holder's share of eligible supply. Payouts are funded exclusively by the commission the bonding curve already charges on trades; no tokens are minted and no treasury is inflated. We give the cost arithmetic that makes a per-second cadence tractable, describe the settlement path that makes double payment impossible under crash and network failure, and specify the adaptive cadence that keeps the protocol solvent when fee income falls below the cost of its own gas.

  1. 1Motivation
  2. 2The draw
  3. 3Eligibility and the holder book
  4. 4Funding
  5. 5Cost
  6. 6Settlement
  7. 7Adaptive cadence
  8. 8Failure modes
  9. 9Parameters and addresses

1Motivation

Most token distribution schemes pay rarely and in bulk: a weekly claim, a monthly airdrop, a leaderboard settled at some epoch boundary. Each of those requires the holder to do something, and each concentrates the payout into a moment that can be gamed by arriving just before it and leaving just after.

Paying continuously removes both problems. If a winner is drawn every second, there is no boundary to arrive before, no snapshot to be present for, and nothing for the holder to sign. The only reason this is not done is arithmetic: on most chains, 86,400 transactions a day costs more than the fees that would fund them.

2The draw

Let B be the set of eligible holders at time t and b(a) the balance of address a. Each tick, one address is drawn with probability

P(a) = b(a) / Σ b(x) for x in B

The draw is independent each second. There is no cooldown, no exclusion of previous winners, and no memory. The same address may win twice consecutively; an address that has never won is owed nothing.

This is deliberately not a leaderboard. Over n draws, the expected share of wins for a holder converges on their share of supply with standard error proportional to 1/√n. At 86,400 draws a day, a holder with one per cent of supply expects roughly 864 wins a day with a standard deviation near 29, a spread of about three per cent. The scheme is therefore fair in the only sense that matters operationally: it does not require trusting anyone's judgement about who deserves what.

Why weighted and not uniform. A uniform draw over addresses would pay a wallet holding one token the same as a wallet holding ten per cent of supply, which makes splitting a position across many addresses strictly profitable. Weighting by balance makes address count irrelevant: splitting a bag does not change its size.

3Eligibility and the holder book

The holder book is not a snapshot and is not maintained by an indexer. It is reconstructed from the token's ERC-20 Transfer log from block zero, applying every event in order. A wallet becomes eligible in the block it receives tokens and stops being eligible in the block it sends its last token away.

3.1Why the log rather than a snapshot

A snapshot taken every n seconds necessarily misses everything between snapshots, and the size of what it misses is invisible. The log has no such gap: it is the definitive record of every balance change, each one stamped with the block it occurred in. Replaying it is deterministic, so a restarted engine reconstructs a byte-identical book with no state to reconcile.

3.2Exclusions

Addresses that are machinery rather than holders are removed from the book: the bonding curve, the router, the wrapped-ether contract, the launch factory and locker, the position manager, the protocol fee recipient, the deployer, and the payout wallet itself. Without these exclusions the curve alone, which holds the entire unsold supply, would win almost every draw.

4Funding

Payouts are funded by the creator's share of the trading fee. On the Pons V2 bonding curve the creator share accrues inside the curve contract and is claimed by calling sweepFees, which pays out in native ETH and cannot touch the trading reserve. Claimable value at any moment is

claimable = quoteFeeBalance × (10000 − protocolFeeShareBps) / 10000
            + creatorTaxBalance

With the protocol share at 3,000 basis points, the creator retains seventy per cent of the base fee. Nothing is minted, and the pot is exactly what the market paid in.

Operator capital is not payout capital. The engine maintains a treasury ledger that only ever increases by the value a claim demonstrably delivered. Seed capital funded into the payout wallet for gas is never distributable. This separation exists because its absence has previously caused an operator's own funding to be paid out as if it were revenue.

5Cost

A native transfer costs 21,000 gas. Robinhood Chain produces a block every 100 milliseconds and, measured over ten samples at the time of writing, prices gas at 0.0436 gwei. One payout therefore costs 0.00000092 ETH, and a full day of per-second payouts costs 0.0790 ETH.

Chain86,400 transfers / day
Robinhood Chain · 0.0436 gwei0.0790 ETH
Base · ~0.05 gwei0.0907 ETH
Ethereum L1 · 8 gwei14.52 ETH
Solana · 5,000 lamports0.432 SOL

Two properties matter beyond the headline number. First, block capacity is not a constraint: blocks presently carry around seven transactions against a gas limit that would admit tens of billions of transfers, so a cadence of one payout per second occupies a tenth of one block. Second, 100 millisecond blocks mean a payout confirms an order of magnitude faster than the interval it belongs to, so each second's payout settles well inside that second rather than bleeding into the next.

Break-even follows directly. At a one per cent pool fee with a seventy per cent creator share, gas at the measured rate is covered by roughly 11.3 ETH of daily trading volume.

6Settlement

The failure that matters is not a missed payment but a duplicated one. A payment is duplicated when the engine believes a transaction failed that in fact landed, which is exactly what a lost HTTP response looks like.

6.1Sign, journal, then broadcast

Every payout is signed locally first. Signing yields the transaction hash before the network has heard of it, so the hash is written to a durable journal before the broadcast. A crash at any point afterwards leaves a record that can be checked against the chain.

6.2Pending, not failed

A journaled payment is resolved only by a definitive answer from the chain. A receipt showing success applies the payment; a receipt showing revert counts a strike against the recipient. Anything else (a timeout, a throttled RPC, a receipt not yet found) leaves the payment pending and rebroadcasts the identical signed bytes, which is idempotent because the hash is unchanged. A payment is declared dead only when the account nonce has advanced past it with no receipt.

6.3Recipients that cannot receive

A contract without a payable fallback can never accept a plain transfer. After three consecutive reverts such an address is written off: it is excluded from subsequent draws rather than absorbing a share of every pot forever.

7Adaptive cadence

Gas is paid from the same pot as the payouts. When fee income falls below the cost of a full per-second schedule, the interval stretches rather than the pot going negative. The rate published on the site is the measured current rate, not the target.

interval = max(1s, gasCost / incomeRate)

This makes the protocol solvent by construction. A quiet day produces a slower cadence and an honest number on the page; it does not produce a deficit, a pause, or a silent stop.

8Failure modes

9Parameters and addresses

ParameterValue
Chain id4663
Block time100 ms
Gas per payout21,000
Target cadence1 / second
Protocol fee share3,000 bps
Write-off threshold3 reverts

Pons V2 factory
0x7ed598bcEf8bd9edd8c97a195c6d13F40801Ec7E

RPC
https://rpc.mainnet.chain.robinhood.com

Explorer
https://robinhoodchain.blockscout.com

Claim
sweepFees(uint256 minBuybackTokensOut) on the token's curve