recover a parked order

A parked order still holds your funds on the Cronos composer. Anyone can complete it — retry needs no signature, and CAW is always delivered to the address fixed in the order, never to whoever presses the button.

1. Find your order

Query Parked logs on the composer that holds it, filtered on your delivery address as a 32-byte word — an EVM address left-padded with zeros, or a Solana address as its 32 raw bytes:

eth_getLogs { "address": "<composer address from the table below>", "topics": ["<that composer's Parked topic0, from the table below>", null, "<your 32-byte address>"], "fromBlock": "<that composer's deploy block, from the table below>" }

Solana-only wallet? Any base58 decoder turns your address into its 32 raw bytes — or skip this step: find the Cronos fill transaction from your Solana deposit signature on relay.link and read orderId straight off its Parked log.

Use the deploy block, not "earliest" — most RPC providers cap how many blocks eth_getLogscan scan in one call, and a composer never holds an order from before it existed anyway. No RPC access? The explorer's own Logs (or Events) tab does the same filtered search without one.

The first indexed value in each log is the orderId. Composers, newest first — each has its own Parkedtopic0, because the event's shape changed between versions:

VersionComposer addressParked topic0Deploy blockExplorer

v3

0xA6690cDB6cea99e796E34eFed50204A796b0261a

0x5c17a3e3d8575dfdaab8e54f0c79c771f544021afbd4be83c4c282f1a1697b79

87,658,090

view

v2

0xFB2E4822c6fE5D3bdCc82507717C45A77b5CC483

0x5c17a3e3d8575dfdaab8e54f0c79c771f544021afbd4be83c4c282f1a1697b79

84,594,267

view

v1

0x7929a5B048418c98Dd95eD0b41a1295fC0a36Da0

0xb16a1e539b901bbdcb2b7938bd9056bad2c9b136f4f3b978c59b62c9610519e9

83,694,013

view

2. Check it can clear — before paying gas

If your composer has a protectionOf(orderId) reader, call it: it shows the minimum a retry must deliver right now, and when the next step lowers it. A retry sent before the market meets that minimum does not fail — it re-parks and still shows as a successful transaction. A composer with no such reader has no step-down schedule at all — its orders park at one fixed floor for good, so a retry either clears it or re-parks with nothing to wait out.

3. Send retry

On the composer's Write contract tab, call retry(orderId) from any wallet holding a little CRO. Set the gas limit to at least 3000000 — a composer with a Delayed-policy order refuses a retry sent under its minimum. The function is payable: CRO you attach tops up the bridge fee, and any unused part stays with the order — it is not refunded to you.

No Write tab? Send a plain transaction instead: to the composer address, value 0 unless topping up the fee, gas at least 3000000, and data 0x8871e021 followed by your orderId (64 hex characters, no 0x). Any wallet or explorer that accepts a custom ABI can also use this fragment directly:

function retry(bytes32 orderId) payable

Stuck? Ask in Discord — the team can complete these too.