This referendum calls intentsCoprocessor.setPhantomOrderConfig to register the USDC/cNGN pair on base, ethereum mainnet and polygon mainnet, with a generation interval of 300 blocks.
It is the required follow-up to the nexus runtime 8300 upgrade. Runtime 8300 restructured phantom order generation (#1086) so that one bundled order is emitted per chain rather than one order per pair, and its ClearLegacyPhantomState migration deliberately wipes PhantomOrderConfig, CurrentPhantomOrder and LastPhantomGeneration, because the stored configuration's shape changed and cannot be interpreted under the new format. Phantom order generation is therefore halted from the moment 8300 is enacted until this configuration is set. Passing this proposal restarts it, on a wider set of chains than the single-chain (base-only) configuration that 8300 cleared.
Phantom orders are non-executable probe orders the coprocessor emits on a fixed interval. Fillers bid on them, and those bids are what the indexer turns into published exchange rates for the pair. No user funds are involved and nothing settles on the destination chain — the orders exist purely to elicit priced quotes, so the practical effect of this call is which pairs and chains have a live price feed.
| Chain | State machine | Consensus state | USDC (token_a) |
cNGN (token_b) |
|---|---|---|---|---|
| base | Evm(8453) |
ETH0 |
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
0x46C85152bFe9f96829aA94755D9f915F9B10EF5F |
| ethereum | Evm(1) |
ETH0 |
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
0x17CDB2a01e7a34CbB3DD4b83260B05d0274C8dab |
| polygon | Evm(137) |
POLY |
0x3c499c542cEf5E3811e1192ce70d8cC03d5c3359 |
0x52828daa48C1a9A06F37500882b42daf0bE04C3B |
standard_amount and standard_amount_b are 1_000_000 for every entry, and interval_blocks is 300.
Each chain registers the pair once. Under 8300 the generator expands a configured pair into both a forward and a reverse leg, so USDC→cNGN and cNGN→USDC are both priced from a single entry; registering both directions explicitly — as the pre-8300 configuration did — would now double-count the pair in the chain's bundled order and is rejected by DuplicatePhantomTokenPair.
Amounts. standard_amount must be exactly one whole unit of token_a in its smallest denomination (10^decimals), and standard_amount_b one whole unit of token_b. These are the denominators of every rate the indexer publishes: a value that is off by a factor silently scales every published rate by that factor — it does not revert and does not warn. USDC and cNGN were each confirmed 6-decimal on all three chains by direct decimals() calls against the token contracts, so one unit is 1_000_000 in both directions on every entry.
Interval. 300 blocks, unchanged from the value in force before the migration cleared it. The pallet requires the bid acceptance window to close strictly before the next generation replaces the orders; the effective window is 25 blocks (PhantomBidWindow is unset, so it falls back to the PhantomOrderBidWindowBlocks constant of 25), and 25 < 300 satisfies that constraint.
Consensus state ids. Read from ismp.latestStateMachineHeight on nexus rather than assumed: ETH0 for both base and ethereum, POLY for polygon. The generator uses this to look up each chain's latest confirmed height directly, so a wrong id would stop that chain generating.
GovernanceOrigin = EnsureRoot), i.e. the root track, or the whitelisted_caller track after a technical collective whitelist.intentsCoprocessor.setPhantomOrderConfig, 253 bytes.CurrentPhantomOrder and LastPhantomGeneration, so the first bundled orders are emitted on the very next block rather than after a 300-block wait.IntentsCoprocessor::Gateways, so orders can be generated for each of them.This must be enacted after nexus runtime 8300. The encoded call uses the 8300 PhantomOrderConfiguration layout; dispatched against 8200 it would fail to decode. If both are in flight, confirm 8300 is live before this referendum's enactment period elapses.
1_000_000 values rest on the on-chain decimals checks described above. A wrong value degrades the price feed silently and requires a backfill to repair.