Execute the previously whitelisted IntentsCoprocessor.sweepDust call via the Whitelisted Caller track, refunding 44,246.284868 cNGN to 0x4301a30ab2A9C040a8cBEc7fBBde9A6Af0C5F9ac from the Base IntentGateway.
Whitelist.dispatchWhitelistedCall(callHash, callEncodedLen, callWeightWitness) (pallet index 83, call index 2)0xaaefa0b344f591265d462a8c456729d3bf29f3b993d49f535621051516de99b592{ refTime: 800000000, proofSize: 6000 }0x5302aaefa0b344f591265d462a8c456729d3bf29f3b993d49f535621051516de99b55c0000000220bcbec15d0x55fc0f0210cd0d1ccfb994021b387ed1571b15689f25ba9abc9b541700562f7d44Refunds the protocol fee the Base IntentGateway charged 0x4301a30ab2A9C040a8cBEc7fBBde9A6Af0C5F9ac on two orders that did not execute as intended.
The gateway takes protocolFeeBps off the input amount at order placement, before any fill happens. Base is configured at 5 bps (0.05%). Because the fee comes off notional at placement rather than off what actually gets swapped, both orders paid in full on amounts that were only partly filled or not filled at all.
| Order | Input (cNGN) | Fee taken (cNGN) | Outcome |
|---|---|---|---|
0x0156216e… |
68,957,000 | 34,478.5 | Partially filled, 40,523,659.135475 refunded |
0xb405d803… |
19,535,569.737450 | 9,767.784868 | Never filled, 19,525,801.952582 refunded |
| Total | 44,246.284868 |
Both fee figures come from the gateway's own DustCollected(address,uint256) logs, topic 0x51eb5aa877b3d80e186f9a323c6dce052491963271d09ee40615d0bb182359d5.
IntentsCoprocessor.sweepDust(stateMachine, sweepDust) (pallet index 94, call index 4):
| Argument | Value |
|---|---|
stateMachine |
StateMachine::Evm(8453) (EVM-8453, Base mainnet) |
sweepDust.beneficiary |
0x4301a30ab2A9C040a8cBEc7fBBde9A6Af0C5F9ac |
sweepDust.outputs[0].token |
0x46C85152bFe9f96829aA94755D9f915F9B10EF5F (cNGN, 6 decimals) |
sweepDust.outputs[0].amount |
44246284868 |
The pallet builds an ISMP post request to the registered gateway 0xAe041F7B0CB581876832830baeB6a2Aa2a3C9716, with timeout: 0 and fee: 0, carrying a 161-byte body: a one-byte RequestKind::SweepDust discriminator followed by abi.encode(SweepDust).
0x03
0000000000000000000000004301a30ab2a9c040a8cbec7fbbde9a6af0c5f9ac beneficiary
0000000000000000000000000000000000000000000000000000000000000040 offset to outputs
0000000000000000000000000000000000000000000000000000000000000001 outputs.length
00000000000000000000000046c85152bfe9f96829aa94755d9f915f9b10ef5f token
0000000000000000000000000000000000000000000000000000000a4d48ba44 amount
ExtrinsicIntents.onAccept requires keccak256(request.source) == keccak256(host.hyperbridge()) for this request kind. host.hyperbridge() on Base returns POLKADOT-3367, which is what Nexus dispatches as, so the check passes. The gateway then runs safeTransfer(cNGN, beneficiary, 44246284868) and emits DustSwept(token, amount, beneficiary).
Threshold
Threshold