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

On the Cronos explorer, open the composer (view, in the table below) → Internal Txns. Find the CRO that arrived with your buy, by time and amount, and open its parent transaction → Logs → the Parked event. Its orderId is what step 3 needs.

Paid from Solana? Look up your deposit signature on relay.link to find that Cronos transaction directly.

With your own RPC, query Parked logs instead, 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). The first indexed value in each log is the orderId. RPC providers cap one call at a few thousand blocks, so scan forward from the deploy block in chunks of 2,000:

eth_getLogs { "address": "<composer address>", "topics": ["<Parked topic0>", null, "<your 32-byte address>"], "fromBlock": "<start>", "toBlock": "<start + 1999>" }

Composers, newest first:

VersionComposer addressParked topic0Deploy blockExplorer

v4

0xDE7e43E135e6A0E45F15F6EDC65a30c651167d29

0x5c17a3e3d8575dfdaab8e54f0c79c771f544021afbd4be83c4c282f1a1697b79

97,205,606

view

v3

0xA6690cDB6cea99e796E34eFed50204A796b0261a

0x5c17a3e3d8575dfdaab8e54f0c79c771f544021afbd4be83c4c282f1a1697b79

87,658,090

view

2. Check it can clear — before paying gas

On the composer's Read contract tab, call protectionOf(orderId):exists = truemeans the order is still parked. (The Cronos explorer shows only that first field; the minimum a retry must deliver, and when it steps down, are in the same result but need a tool that decodes the full struct — or the portal's Recovery Center.) 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.