Introducing Daybreak: frontier AI for cyber defenders.
Daybreak brings together the most capable OpenAI models, Codex, and our security partners to accelerate cyber defense and continuously secure software.
A step toward a future where security teams can move at the speed defense demands.
Agentic services are changing how businesses scale and serve their customers.
DAFK AI is making it more humane by cloning the voices of the owner or familiar team members, so the agent sounds exactly like the real person customers already know and trust.
Full article below
1/ Long thread on how I recovered funds from a “failed” MegaETH → Ethereum bridge transaction.
Before I start: I was a public sale participant and decided to take around 2x profit on my $MEGA .
After facing this issue on a chain valued around 2B$ and receiving basically no support from either the MegaETH or Aori side, I think that was a reasonable decision.
This is not FUD.
This is a full technical breakdown of what happened, how I traced the issue on-chain, and how I recovered my funds.
2/ I bridged $USDM on MegaETH to USDC on Ethereum using the official MegaETH Rabbithole bridge:
https://t.co/5GXtlyhkMM
The UI showed the bridge as failed.
But on-chain, the transaction had actually succeeded.
3/ The problem:
I approved and signed the bridge transaction.
The website treated it as failed.
But the explorer showed that my USDM was transferred out of my wallet.
The USDC never arrived on Ethereum.
So from the user side, it looked like:
USDM gone
No USDC received
Bridge UI says failed
4/ The first key lesson:
Do not only trust the bridge UI.
Always check the actual transaction on the block explorer.
In my case, the transaction was not failed on-chain.
The deposit succeeded, but my tokens were locked inside the underlying bridge/settlement contract.
5/ My approval transaction was:
0x68e581b309702f4511d450d08f8ce30398d041d32def0a42a922ecfda0710e29
My bridge/deposit transaction was:
0x34776a92c69d33001528242720009c5191a9550cadfc3e3c82259c62e6bfe3e6
The second transaction showed “Success” on the MegaETH explorer.
6/ The bridge behind the UI was using Aori.
In my transaction, USDM was transferred to the Aori contract on MegaETH:
0xFfe691A6dDb5D2645321e0a920C2e7Bdd00dD3D8
So this was not a simple direct bridge transfer.
It was an Aori cross-chain order.
7/ My transaction emitted a Deposit event with this order ID:
0xee70d23c498f11da48cd9e263186e8bfa85db1a13a086919637b15b0db6581b8
This order ID is the most important thing.
If you face the same issue, find your order ID from the logs/events of your deposit transaction.
8/ My order details were:
Input:
4,959.609031396699 USDM on MegaETH
Expected output:
4,957.477722 USDC on Ethereum
Source chain:
MegaETH
Destination chain:
Ethereum
Source EID:
30398
Destination EID:
30101
9/ Important detail:
The transaction caller was not the same as the actual order recipient.
The recipient/offerer in my order was:
0xe517f5274a21c74AE230D99010AD11992D0E836b
So when checking whether USDC arrived on Ethereum, I had to check this address, not only the transaction sender.
10/ I checked Ethereum.
USDC never arrived.
Then I checked the Aori order status on MegaETH.
MegaETH Aori contract:
0xFfe691A6dDb5D2645321e0a920C2e7Bdd00dD3D8
Read function:
orderStatus(orderId)
Input:
0xee70d23c498f11da48cd9e263186e8bfa85db1a13a086919637b15b0db6581b8
11/ The result was:
1
For this Aori order status, 1 meant the order was still Active.
So my USDM was not lost.
It was locked in the Aori source-chain contract.
The order was active, but it had not completed to Ethereum.
12/ The solution was not to randomly call contract functions.
Do not randomly call:
emergencyWithdraw
emergencyCancel
fill
settle
withdraw
The correct path in my case was to cancel the expired cross-chain order from the destination chain.
13/ For my bridge:
Source chain = MegaETH
Destination chain = Ethereum
So the cancellation had to be sent from Ethereum back to MegaETH through LayerZero.
Ethereum Aori contract:
0x0736bdc975af0675b9a045384efed91360d25479
MegaETH Aori contract:
0xFfe691A6dDb5D2645321e0a920C2e7Bdd00dD3D8
14/ Why cancel from Ethereum?
Because for cross-chain orders, cancellation is done from the destination chain to avoid race conditions with settlement.
In my case, the destination chain was Ethereum.
So the cancel transaction had to be sent on Ethereum.
15/ Before cancelling, I needed the LayerZero fee.
On the Ethereum Aori contract, I used the read function:
quote(uint32,uint8,bytes,bool,uint32,address)
At first, I tried extraOptions as:
0x
That reverted.
16/ The reason:
Empty LayerZero options were not valid for this message path.
The fix was to use LayerZero Type 3 executor options with lzReceive gas.
This worked for me:
0x00030100110100000000000000000000000000030d40
This represents lzReceive gas of 200,000.
17/ I called quote with:
_dstEid:
30398
_msgType:
1
_options:
0x00030100110100000000000000000000000000030d40
_payInLzToken:
false
_srcEid:
0
_filler:
0x0000000000000000000000000000000000000000
18/ The quote returned:
9325299472991 wei
In ETH:
0.000009325299472991 ETH
This was the payable LayerZero fee I needed to send with the cancel transaction.
19/ Then I used the payable cancel function on the Ethereum Aori contract:
cancel(
bytes32 orderId,
tuple orderToCancel,
bytes extraOptions
)
Contract:
0x0736bdc975af0675b9a045384efed91360d25479
20/ Cancel transaction fields:
Payable amount:
0.000009325299472991 ETH
Order ID:
0xee70d23c498f11da48cd9e263186e8bfa85db1a13a086919637b15b0db6581b8
extraOptions:
0x00030100110100000000000000000000000000030d40
21/ The order tuple had to match the original order exactly.
My tuple started with:
inputAmount:
4959609031396699000000
outputAmount:
4957477722
inputToken:
0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7
outputToken:
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
22/ Continuing the tuple:
startTime:
1777545452
endTime:
1777545572
srcEid:
30398
dstEid:
30101
offerer:
0xe517f5274a21c74AE230D99010AD11992D0E836b
recipient:
0xe517f5274a21c74AE230D99010AD11992D0E836b
23/ Very important:
I had to connect with the actual offerer/recipient wallet:
0xe517f5274a21c74AE230D99010AD11992D0E836b
If you connect the wrong wallet, the cancel can fail.
Only the allowed solver, offerer, or recipient can cancel depending on order state/expiry.
24/ Before sending the cancel transaction, I checked MetaMask.
It did not say “likely to fail.”
So I sent the transaction.
Cancel tx:
0x773159fdcd225ee2915158cc95fc45b248630b1d55bf8c777caf31967aee6d6c
25/ The cancel tx succeeded on Ethereum.
The logs showed:
ExecutorFeePaid
DVNFeePaid
LayerZero PacketSent
Aori CancelSent
The important event was:
CancelSent
with my order ID.
26/ Then I checked LayerZero Scan.
At first, the message status was:
INFLIGHT
This was normal.
It showed the message going from Ethereum Aori to MegaETH Aori.
So the MegaETH order status was still 1 until the LayerZero message arrived.
27/ LayerZero message details showed:
Source:
Ethereum
Destination:
MegaETH
Source OApp:
Aori on Ethereum
Destination OApp:
Aori on MegaETH
Message:
0x01 + orderId
Execution option:
lzReceive gas 200,000
28/ After the LayerZero message was delivered, I checked the MegaETH Aori contract again.
Read function:
orderStatus(orderId)
The status changed from:
1
to:
3
That means Cancelled.
29/ Once the status became 3, my USDM returned on MegaETH.
Final result:
USDM was not lost
The order was stuck/active
No USDC arrived on Ethereum
A cancellation message was sent from Ethereum
LayerZero delivered it to MegaETH
The order became cancelled
USDM returned
30/ Summary of the recovery flow:
Find the original deposit transaction
Find the Aori order ID in the logs
Check orderStatus on the source-chain Aori contract
If status is 1 and the order expired, cancel from the destination chain
Use quote to get the LayerZero fee
31/ Recovery flow continued:
Use valid LayerZero extraOptions
Send the cancel transaction with the fee
Wait for LayerZero delivery
Check source-chain orderStatus again
When it becomes 3, funds should return
32/ The most important fields to collect from your own transaction are:
orderId
inputAmount
outputAmount
inputToken
outputToken
startTime
endTime
srcEid
dstEid
offerer
recipient
These are in the decoded input/logs of your original deposit transaction.
33/ If quote reverts with empty options, try valid LayerZero executor options.
The one that worked for me was:
0x00030100110100000000000000000000000000030d40
But do not blindly copy values if your situation is different.
Use the correct destination/source chain and quote the fee first.
34/ In my case, the key values were:
Source:
MegaETH
Destination:
Ethereum
Source EID:
30398
Destination EID:
30101
Ethereum Aori:
0x0736bdc975af0675b9a045384efed91360d25479
MegaETH Aori:
0xFfe691A6dDb5D2645321e0a920C2e7Bdd00dD3D8
35/ The frontend showed failed, but the chain showed success.
That difference matters.
If your bridge UI fails, do not panic and do not immediately assume funds are gone.
Check:
Transaction status
Token transfer logs
Destination chain balance
Protocol order status
LayerZero message status
36/ Final warning:
This thread explains what worked for my specific MegaETH → Ethereum USDM/USDC Aori order.
Your transaction may be different.
If you are not sure, do not click random write functions.
First identify the exact order, chain, status, offerer, recipient, and route.
37/ Final result:
My original bridge looked failed.
USDM left my wallet.
USDC never arrived.
But the funds were recoverable because the order was still active in Aori.
After cancelling from Ethereum and waiting for LayerZero delivery, the MegaETH order status became 3 and my USDM returned.
Hope this helps someone facing the same issue.
@Dafk_AI In some meetings with South Asian clients, accent differences in English have occasionally made communication less smooth and have difficulty understanding each other.
I feel that I may have missed some potential marketing opportunities..