3.4 KiB
Checkpoint 2026-04-03
This checkpoint captures the latest live state of the local instant-swap E2E bring-up.
What Is Working
- Clean end-to-end bootstrap through
./local-e2e-up.shafter resetting local state. wire-nodeopcomes up cleanly and the Wire batch operator services stay running.- Real
Eth -> Wiredelivery is working through the live ETH batch operator. - The Wire depot emits a real outbound
Wire -> Solepoch for the instaswap settlement. - Solana
ingest_epochsucceeds for that outbound epoch on the fresh chain.
Current Blocker
The Solana batch operator fails on process_messages for the first live
instaswap_settlement message.
Observed error:
Transaction simulation failed: Error processing Instruction 1:
custom program error: 0xbc4
0xbc4 is decimal 3012, which maps to Anchor AccountNotInitialized.
Current Diagnosis
The transport path is not the blocker anymore.
What we proved on the fresh cluster:
- ETH emits
OPPMessage/OPPEpoch - ETH batch operator ingests that epoch into Wire
- Wire depot creates the
xswap - Wire depot emits outbound Solana epoch
0 - Solana
ingest_epochaccepts that epoch
The remaining failure is inside Solana settlement execution for
handle_instaswap_settlement() in:
capital-staking/programs/liqsol-core/src/instructions/opp/yield_hub.rs
The most likely issue is one missing or wrongly-derived account in the
batch-operator process_messages remaining account list, or one account that
the live deploy path did not initialize even though the test harness does.
Primary suspects:
extra_account_meta_listdistribution_statebridge_vault_atabucket_token_accountliqsol_mint
Reproduction
Fresh bring-up:
./local-compose.sh down -v
rm -rf .local/wire-node .local/wire-batch-operators .local/e2e
./local-e2e-up.sh
Trigger the live ETH instaswap:
./local-compose.sh exec -T hardhat bash -lc \
'cd /workspace/wire-ethereum && \
HH_SCRIPT_ARGS="instaswap 5.0000 1.0000 B3bVKtqAJxRp4RUbzmUXVUdF4CRtaHfjnNfKzCd9Fy7T" \
npx hardhat run src/scripts/outpost/wire_yield_hub_live.ts --network anvil_local'
Inspect the Solana batch operator log:
tail -n 120 .local/wire-batch-operators/sol/1/log/relay.log
Expected current failure:
Submitting solana process_messages for epoch 0 with 1 message(s) and 15 remaining account(s)
batch operator pass failed: -32002 ... custom program error: 0xbc4
Useful Live Checks
Wire chain health:
./local-compose.sh exec -T wire-nodeop clio -u http://127.0.0.1:8887 get info
Wire ETH depot inbound epochs:
./local-compose.sh exec -T wire-nodeop \
clio -u http://127.0.0.1:8887 get table sysio.dpeth ............2 oppepochin --limit 20
Wire xswap rows:
./local-compose.sh exec -T wire-nodeop \
clio -u http://127.0.0.1:8887 get table sysio.iswap sysio.iswap xswaps --limit 20
Wire Sol outbound epochs:
./local-compose.sh exec -T wire-nodeop \
clio -u http://127.0.0.1:8887 get table sysio.dpsol ............3 oppepochout --limit 20
Suggested Next Step
Reproduce the failing Solana process_messages call with the same 15 remaining
accounts in a TypeScript helper or test so the full simulation logs identify the
exact uninitialized account. Once that account is known, patch either:
- the local Solana deploy/bootstrap path, or
- the batch operator account derivation / account ordering.