Nullfill

Your transfer
didn't fail.
It never happened.

Nullfill is an escrow for Robinhood Chain that doesn't strand your money when a transaction is screened at the sequencer. It settles in USDG.

Robert MooreArbitrum Open House Singapore · Robinhood Chain

The problem, counted

A screened transfer leaves nothing behind. For a day, nobody can tell blocked from late.

0bytes

of on-chain trace. No revert, no receipt, no event, no gas.

24hours

the force inclusion window, in which the missing transaction can still arrive.

Robinhood Chain docs · Arbitrum docs, transaction lifecycle2
“Since a blocked transfer is never processed, it simply appears as though the event never occurred.” Robinhood Chain developer documentation, Differences from Ethereum

Written as a reassurance for indexers. For anyone holding money in escrow, it's the bug.

docs.robinhood.com/chain/differences-from-ethereum3

What's at stake

672.9 million USDG is on Robinhood Chain mainnet.

And the filter is live. Mainnet's own registry at 0x74 lists 1,355 transactions it refused between 30 June and 16 September. Then I read the fund-holding contracts in this buildathon.

8
contracts read, function by function
0
handle a transaction rejected at the sequencer
3
move money when a transaction misses a deadline
2
allow that deadline to be under 24 hours
USDG totalSupply, block 74,889,519 · 0x74 registry, 6,096 events · survey 28 Sep 2026, no projects named4

How Nullfill works

Three rules. Each one a line you can read.

  1. Anyone can unwind an expired escrow.Getting money back never depends on one party being able to send a transaction.
  2. The refund address is named when the escrow opens.Before anyone needs it, and changeable while the escrow is open.
  3. No deadline sits inside the 24 hour window.The contract refuses one. Acting on an absence before then is the bug.
contracts/src/Nullfill.sol · OpenZeppelin SafeERC20, ReentrancyGuard5

Live on Robinhood Chain testnet

Two real orders, 50 USDG each.

Order 1 Settled

Opened, then settled. The counterparty holds the USDG.

open0xaf53bd4607b7ef088d9d80c02701d742f51c7f7b2518e9e2694d57fd9f0573f4
settle0xb3c300d0c5040e7d1023376fb860cdd8f3e1abf7cc8aa06104d7b713d3b8d173

Order 2 Open

Refund address named up front. From 15:30 BST on 29 September, any wallet can unwind it, and the USDG goes to that address.

open0x1fa994e04fea8a82ab3550a12529f2c6c2907911e5eeede870ff527680265bfe
unwindpending
Contract 0x71029fac49E9b45CCC377812aEc01509FFD383A1 · USDG from the Paxos testnet faucet6

Who pays

The escrow is free. The watcher is the business.

Free, MIT

$0

The escrow. No owner, no fee. Any team can deploy it or copy the three rules.

Nullfill Watch

$99 / month per desk

Alpha in the repo today: a signed receipt for every refused transaction, since the sender's error is the only record, and every escrow's deadline. Hosted, with alerts.

For OTC desks, lending protocols, protection notes and payout pools holding USDG on Robinhood Chain7

Roadmap

From buildathon to mainnet.

Now
Nullfill Watch alpha, in the repo: signed receipts, escrow deadlines.
October 2026
v1.1 with the exact-deposit guard. Hosted Watch with alerts.
November 2026
The three rules as a Solidity library other contracts inherit.
Q1 2027
Audit, Robinhood Chain mainnet, Arbitrum D.A.O. grant application.
Nullfill8
Nullfill

Settlement that stays correct
when a transaction never happens.

iamrobertmoore.github.io/Nullfill
github.com/iamrobertmoore/Nullfill
Robert MooreBuilt for Arbitrum Open House Singapore