UPLINK LIVE│ROBINHOOD CHAIN ·│FORK IN HOOD ·│CENSORSHIP CEILING 96:00 vs 1:00
STAGING BUILD
A FORK OF ROBINHOOD CHAIN · CHAIN ID 36754663 · SETTLES TO 4663
FORK IN HOOD
Same stack. Same speed. Checkable differences.
The only fork whose claims your browser verifies, right now, on this page.
$FORKIN · NATIVE GAS TOKEN
LIVE VERIFICATION
We didn't write this table. Your browser did.
On page load, your browser queried Robinhood Chain and Fork in Hood directly over JSON-RPC.
Nothing is cached or precomputed; these are eth_call results, rendered as they arrive.
verify.live · direct RPC, zero middlemen
querying…
PROPERTY
ROBINHOOD CHAIN
FORK IN HOOD
Green = verified advantage. Red = their weakness, on the record. Amber = rows we don't win, shown anyway, because hiding them would make the rest worthless.
Read this before you trust the right-hand column
The Robinhood Chain column above was queried live from Ethereum mainnet by your browser, just now. Those numbers are real and you can reproduce every one of them with the commands below.
The Fork in Hood column is a snapshot from our staging chain, measured 2026-07-29. The network is built and running, but it is not public yet, so your browser cannot reach it to check our side independently. We could have quietly rendered those numbers as though they were live. That would have been the first lie on a page about not lying.
At mainnet launch this notice disappears and both columns go live.
How the numbers above were obtained.
There is no API, no indexer, and no backend of ours anywhere in the path. The page computes its own
ABI selectors, opens a JSON-RPC connection to each chain, and decodes the returned words itself.
1 · SELECTOR DERIVATION
A function selector is the first four bytes of the keccak-256 hash of its
signature. This page ships keccak-256 and derives every selector at load. Pasting them in would mean a typo
could return a wrong-but-plausible number with nothing to catch it.
selector(sig) = keccak256(utf8(sig))[0..4]
SELF-TEST VECTOR
DIGEST
STATUS
SIGNATURE
KECCAK-256 DIGEST (first 8 bytes)
SELECTOR
2 · DECODING THE CENSORSHIP BOUND
Worked end to end, from signature to the number in the table.
01hash the signature:
keccak256("maxTimeVariation()") → …
02take the first 4 bytes as the selector →
…
03eth_call it against
SequencerInbox 0xBd0D…ba96 on Ethereum
04the response is 4 words of 32 bytes; word[2] is
delaySeconds → …
The parent chain enforces this. It is not a policy we promise to follow; it is the number
past which anyone can force their own transaction in without us.
3 · THE FEE SPLIT, AS ARITHMETIC
Taken verbatim from FeeSplitter.releasable(). Balance-based,
because ArbOS credits fee accounts by incrementing state directly and never calls them. A splitter that tallied
inside receive() would report zero forever while silently accruing.
releasable(a) =⌊ received ×shares[a]/totalShares⌋− released[a]
where received = address(this).balance + totalReleased
Integer division leaves dust in the contract; it is not lost, it settles on a later release.
There is no function anywhere in the contract that can change shares or totalShares.
// FeeSplitter.sol · the only state-changing function in the contractfunction release(address account) external {
uint256 amount = releasable(account);
if (amount == 0) revert NothingToRelease();
released[account] += amount; // effects before interaction:
totalReleased += amount; // totalReceived() is invariant across the call,// so reentrancy cannot inflate a claim
(bool ok, ) = account.call{value: amount}("");
if (!ok) revert TransferFailed();
}
4 · THE WIRE
Every JSON-RPC call this page made, in order, with raw returndata.
Nothing here was prepared in advance.
BOUNDED CENSORSHIP
They can sit on your transaction for 4 days. We can't. For longer than 1 hour. Provably.
If a sequencer refuses your transaction, the parent chain lets you force it in yourself, after a delay
the chain's operators chose. That delay is the real censorship policy, and it's public.
ROBINHOOD CHAIN · forced inclusion after0:00:00
345,600 seconds. Their sequencer screens transactions for compliance, and the protocol makes you wait four days to route around it.
FORK IN HOOD · forced inclusion after0:00:00
3,600 seconds. Enforced by the parent chain, not by our good behavior. 96× tighter.
Read it off their own contract: SequencerInbox 0xBd0D173EEb87D57A09521c24388a12789F33ba96 on Ethereum →
maxTimeVariation().delaySeconds = 345600. Ours is set at rollup creation and readable the same way.
Check on Etherscan ↗
DON'T TRUST THIS PAGE
Seriously. Verify it yourself.
Every number above resolves to one RPC call. Here are the exact commands. Run them against
chains we don't control, from a machine we've never seen.
# Their validator allowlist, straight from the Rollup contract on Ethereumcast call 0x23A19d23e89166adedbDcB432518AB01e4272D94 'validatorWhitelistDisabled()(bool)' --rpc-url https://ethereum-rpc.publicnode.com
# → false (allowlisted: two approved validators)
# The full comparison, as a script. Derives every selector, self-tests its own keccak,# and refuses to print anything it can't stand behindnode verify.mjs
The page you're reading uses hardcoded selectors for speed. verify.mjs is the rigorous version: selectors derived from signatures at runtime via a self-tested keccak-256. If the two ever disagree, trust the script.
OPEN VALIDATION
Anyone can check our work. Including you. Including against us.
Robinhood Chain's validator set is two allowlisted companies. Ours has no list:
validatorWhitelistDisabled() = true. We proved it the only way that counts: a fresh address that appears on
no list anywhere staked and posted an assertion.
·
ACTIVE STAKERS
Read live from stakerCount() on the rollup contract. Every one of them staked without anyone's permission.
·
STAKE TO VALIDATE
Deliberately low. Open validation is fake if only institutions can afford the bond.
0
PERMISSION REQUIRED
There is no form to fill in and no allowlist transaction to wait on. Run the node, post the bond, and challenge anything that looks wrong.
# run a validator (full guide in the repo)nitro --conf.file validator.json \
--node.staker.enable --node.staker.strategy MakeNodes \
--node.staker.parent-chain-wallet.private-key $YOUR_KEY# if we ever assert an invalid state, your challenge takes the stake. That's the design.
IMMUTABLE FEE ROUTING
Fee routing with no steering wheel.
Robinhood Chain's fee account is an address its owner can repoint at will. Ours is a contract with
9 functions, exactly 1 of which changes state: release(). It has no owner, no setter and no upgrade path.
The split below is read live from the contract, because it can't be anything else.
loading…
·
querying splitter…
To be explicit: none of this pays token holders. $FORKIN is gas, not a security. The claim here is narrower and true: fees flow to a destination that cannot be silently changed.
Why 36754663?
Robinhood Chain's ID is 4663. Dial it on a phone keypad: H-O-O-D.
They named their chain in phone digits and told no one.
So we kept the convention. 36754663 spells
F-O-R-K-H-O-O-D, and its last four digits are their entire chain ID.
The fork carries the original inside it.
You either notice, or you don't. Tell someone who will.