#56·Whitelist Call for the HyperFX fee refund

1mo ago
0 Comments
Executed

Two HyperFX users on Base are owed protocol fees back. This document is the call they need, verified against live Nexus state and live Base receipts, plus what has to happen to get it whitelisted.

What Is Being Refunded

Beneficiary Token Amount What it was
0x2009c64589dFB42bc26bf9E29bb61F28a79275aA USDC 18.277 5 bps taken at placement on three orders that expired unfilled
0x8d11E9AA67863d555332207F7F5eC296b63aD066 cNGN 40,023.228375 the protocol's 60% share of fill surplus on one order

Both are on Base, StateMachine::Evm(8453), against gateway 0xAe041F7B0CB581876832830baeB6a2Aa2a3C9716.

At the rate the orders themselves imply, about 1,368 cNGN per USDC, the cNGN leg is roughly $29 and the whole refund is roughly $48.

Call 1: sweep 40,023.228375 cNGN to 0x8d11E9AA…aD066

One output, cNGN 0x46C85152bFe9f96829aA94755D9f915F9B10EF5F (6 decimals), 40023228375 units.

Why The USDC Refund Is Owed

The gateway takes protocolFeeBps off the input at placement, before anything is filled, and emits DustCollected. Base is configured at 5 bps, read live from IntentsCoprocessor::Gateways(Evm(8453)). Cancelling returns the escrow, which is already net of that fee, so an order that never fills still pays.

All three orders were same chain on Base, USDC in and cNGN out, placed by 0x2009c645…75aA on 2026-09-05 with deadlines about 56 blocks after placement. Every one expired without a fill and was refunded.

Order Placed at Nonce Gross in (USDC) Fee taken (USDC) Escrow refunded (USDC) Refund block
0x9be5c5e8… 50,918,752 752 22,194.000000 11.097000 22,182.903000 50,918,813
0xdd3a86dd… 50,918,980 754 12,183.000000 6.091500 12,176.908500 50,919,053
0xee2fda0e… 50,919,606 760 2,177.000000 1.088500 2,175.911500 50,919,668
36,554.000000 18.277000

Every fee figure is the gateway's own DustCollected(address,uint256) log in the placement transaction, topic 0x51eb5aa877b3d80e186f9a323c6dce052491963271d09ee40615d0bb182359d5. Each one is exactly 5 bps of the gross input to the last unit. All three orders read REFUNDED in the Nexus indexer and each has an EscrowRefunded returning the full escrow.

The refund is 18.277 USDC, not 18.268. The three figures shown in the HyperFX history, 22,183 and 12,177 and 2,176, are the amounts that came back from escrow, which are already net of the fee. Taking 5 bps of those undercounts by 0.009 USDC. The number above is the sum of the three DustCollected logs, which is what the gateway actually holds.

Why The cNGN Refund Is Owed

Different mechanism. This order filled, so the input fee on it was earned normally. What is being returned is the surplus share.

0x8d11E9AA…aD066 placed order nonce 799 on 2026-09-07 at Base block 51,001,709: 97,451.25 USDC escrowed for a minimum output of 133,344,055.869375 cNGN. It was filled at block 51,001,726 in 0x0eb1a814….

The filler delivered more cNGN than the minimum, and the gateway split the difference:

cNGN
Gross output the filler paid in 133,410,761.250000
Order minimum 133,344,055.869375
Surplus 66,705.380625
To the user, 40% 26,682.152250
To the protocol, 60% 40,023.228375

surplus_share_bps reads 6000 in Gateways(Evm(8453)).params, and 60% of the surplus is 40,023.228375 to the unit. The protocol's share went to the gateway as a DustCollected on cNGN in the same transaction, and the user received 133,370,738.021625, the minimum plus their 40%.

Note that the input side of this order also paid 48.75 USDC at placement, 5 bps of a gross 97,500. That order filled, so that fee stays. Only the surplus share is in this batch.

On-chain Facts Checked

Nexus read live at block 11,806,215, Base read live at block 51,035,241.

Fact Value Source
Gateway for Evm(8453) 0xAe041F7B0CB581876832830baeB6a2Aa2a3C9716 IntentsCoprocessor::Gateways(Evm(8453))
Same address is to on all four transactions yes Base receipts
Gateway's ISMP host 0x620128E2B19193d6Bd244a3AC8D3bBa0541B19c3 Gateways(…) and gateway.host() agree
protocol_fee_bps on Base 5 Gateways(…).params
surplus_share_bps on Base 6000 Gateways(…).params
USDC decimals / gateway balance 6 / 893.508506 USDC decimals(), balanceOf(gateway)
cNGN decimals / gateway balance 6 / 1,709,245.055321 cNGN decimals(), balanceOf(gateway)
USDC sweep as share of balance 2.05%
cNGN sweep as share of balance 2.34%
Call already whitelisted no Whitelist::WhitelistedCall
Technical Collective members 4 TechnicalCollective::Members
Open Technical Collective proposals none, ProposalCount is 56 TechnicalCollective::Proposals
Next referendum index 71 Referenda::ReferendumCount

After both sweeps the gateway keeps 875.231506 USDC and 1,669,221.826946 cNGN.

Edited
Reply
Up
Share
This vote has been closed.
Call
Metadata
Timeline4
Comments