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:
| Version | Composer address | Parked topic0 | Deploy block | Explorer |
|---|---|---|---|---|
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) payableStuck? Ask in Discord — the team can complete these too.