Testnet Quickstart (Arbitrum Sepolia)
The full path, index → signed oracle → on-chain settlement, runs on
Arbitrum Sepolia (chain id 421614) today. The reference contracts are
deployed and verified on-chain, and the demo perp’s vault is seeded so trades
pay out. A fresh deployment from the current script wires all eight published
feed ids; the July 2026 deployment below predates the GPU feeds and was wired
with the six feeds of that era.
All six signed feeds pushed in one transaction
(0x9a3f…b1297,
total update fee 6 wei), read back through MeconeStorkConsumer.price()
matching the live API exactly, and the first position traded through the
demo perp: open 5× long MGDP
(0x885d…1c48),
marked to the on-chain oracle, closed
(0xb063…f1c2)
with collateral returned exactly. A pusher keeps the on-chain values fresh
continuously.
Deployed contracts (July 2026)
| Contract | Address |
|---|---|
| Oracle proxy | 0x7Bb9740FdcbD91866CaFEd099C36445Ea8140627 |
| MeconeStorkConsumer | 0x0926B7644ebFEB8500028848254630a5bee4f403 |
| MeconePerpDemo | 0x2408353185761834E63Aae054f1ae5C01548766A |
| MockUSDC (faucet collateral) | 0x5F6654f8292294d3e3c7E6ebB2Ab887326E42995 |
Addresses link to Arbiscan Sepolia ·
RPC: https://sepolia-rollup.arbitrum.io/rpc
Read an index on-chain
# The current Mecone US-GDP index, 1e18-scaled, with its publish timestamp:
cast call 0x0926B7644ebFEB8500028848254630a5bee4f403 \
"price(bytes32)(int256,uint64)" \
$(cast format-bytes32-string MGDP) \
--rpc-url https://sepolia-rollup.arbitrum.io/rpcThe consumer reverts on an unknown market or a value older than its staleness window (600s), which is exactly the behavior a perp engine wants: missing beats wrong.
The on-chain rail is a pull oracle: price() reads the last value pushed
on-chain. Fresh values are submitted via updateTemporalNumericValuesV1
(the update fee on Arbitrum Sepolia is 1 wei); during pilots we keep the
values fresh for you.
Trade the reference perp
MeconePerpDemo is a deliberately lean, oracle-priced perp (no order book;
the vault is the counterparty; isolated margin; up to 20× leverage). Mint
yourself mock collateral and trade:
USDC=0x5F6654f8292294d3e3c7E6ebB2Ab887326E42995
PERP=0x2408353185761834E63Aae054f1ae5C01548766A
RPC=https://sepolia-rollup.arbitrum.io/rpc
# 1. faucet: mint 1,000 mUSDC to yourself (6 decimals; open mint, testnet only)
cast send $USDC "mint(address,uint256)" $YOUR_ADDRESS 1000000000 --rpc-url $RPC --private-key $PK
# 2. approve + open a 5x long on MGDP with 100 mUSDC
cast send $USDC "approve(address,uint256)" $PERP 100000000 --rpc-url $RPC --private-key $PK
cast send $PERP "open(bytes32,bool,uint256,uint256)" \
$(cast format-bytes32-string MGDP) true 100000000 5 --rpc-url $RPC --private-key $PK
# 3. watch PnL, then close
cast call $PERP "pnlOf(uint256)(int256,int256)" 0 --rpc-url $RPC
cast send $PERP "close(uint256)" 0 --rpc-url $RPC --private-key $PKEntry, PnL, and liquidation all mark to MeconeStorkConsumer.price(), i.e.
to the same signed value Mecone publishes on-chain.
Want a different index on testnet? Reach out and we will wire the feed and deploy it for your team to read live.