September 28, 2026
On 24 September 2026, Payy Network’s Ethereum RollupV1 bridge paid 1,918,792.198148 USDC to the same recipient across two verifyRollup batches. Both calls were submitted by Payy’s usual batch-posting address. The first payment was rapidly moved to a second contract, converted through UniswapX into approximately 683.38 ETH, and split across four wallets.
By 26 September, three relay paths had deposited a transaction-anchored total of 682.3 ETH into the Tornado Cash Router. A fourth branch retained 1 ETH. The later 90,202.820016 USDC payout remained at the primary recipient; its verified genuine-USDC balance was 90,202.821244 USDC at the 28 September cutoff.
Payy’s initial root-cause update ruled out a compromised key, social engineering, and an exploit of its off-chain infrastructure. The company has not yet published the validated technical cause. The call path proves that verifyRollup processed the payouts; it does not by itself prove which verification or authorization invariant failed.
Item | Value | Evidence |
|---|---|---|
Network | Ethereum | On-chain |
Bridge / rollup contract | Contract history | |
Batch poster |
| |
Primary recipient | USDC Transfer logs | |
Swap / distribution contract | USDC and ETH flow | |
First drain block | 26,044,909 | On-chain |
First observed time | 2026-09-24 04:21:23 UTC | On-chain |
Primary-recipient total | 1,918,792.198148 USDC | Two verified transfers |
Time (UTC) | Block | Transaction | Amount to primary recipient |
|---|---|---|---|
2026-09-24 04:21:23 | 26,044,909 | 0xf43abdac5422087f645d77923eb1c825178bff3eb86d17d40fa18d89701e1814 | 1,828,589.378132 USDC |
2026-09-24 09:30:35 | 26,046,439 | 0xda88fb9273c703a4d2647c744362f58b6db4e104d7a203a75d4b67e3d54858c8 | 90,202.820016 USDC |
The first batch included ordinary-looking withdrawals to other addresses as well as the dominant transfer to the primary recipient. The second batch used the same function, bridge, submitter, and recipient.

At 04:22:59 UTC, the primary recipient transferred 1,828,594.895417 USDC to 0xb483B1742aaD0a60a9FC91bb36C5a42dbE3F3D38 in transaction 0xb2fd99c115ad98162149fa1e0e8243050d3009719910e00bff16808a12ca10e7. Public reporting identifies the conversion venue as UniswapX. The subsequent ETH distributions sum to approximately 683.38205 ETH.
Destination | Amount received | First-hop transaction | Status |
|---|---|---|---|
1.000000 ETH | 0xd68af00a8693f154f1daf576e6a91a966c6b0909617a412d0471cb15678b6ca0 | Retained | |
282.382139990140 ETH | 0x7987458cae1d4424b5555c4a50cda01a31a5b08469cd6ab4c35d9b32acf09b95 | Forwarded | |
200.000000 ETH | 0xd2ef52f0497a693bf3fe25b3584c5ec1b85d901c9ca8c4e0997f5e1a61074f1a | Forwarded | |
199.999911680412 ETH | 0x0b41b66d5e4158a82b5ca8adacf87a1b96fe79bd9e8da5b38b8c9551f4289a9e | Forwarded |

On 26 September, three relay wallets deposited 682.3 ETH into the Tornado Cash Router at 0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b. The transactions used the router’s deposit method. The total is calculated from transaction values, not an estimated USD conversion.
Source branch | Relay wallet | Deposit window (UTC) | Count | Total |
|---|---|---|---|---|
06:09:35–06:19:59 | 9 | 180.0 ETH | ||
06:46:11–07:11:11 | 8 | 302.3 ETH | ||
07:16:23–07:17:11 | 2 | 200.0 ETH | ||
Total | 3 relays | 06:09:35–07:17:11 | 19 | 682.3 ETH |
No centralized-exchange deposit was identified before the mixer deposits. The router entry breaks deterministic forward tracing; it does not identify the controller of any eventual withdrawal.
Address | Asset / balance at 28 Sep cutoff | Status |
|---|---|---|
90,202.821244 genuine USDC | Later payout remains visible | |
1.000000 ETH | Retained branch | |
~0 ETH | Forwarded to relay | |
~0 ETH | Forwarded to relay | |
~0 ETH | Forwarded to relay | |
0.028009 ETH | Residual after deposits |
The primary recipient also displays a separate token using the symbol “USDC” at another contract. This report excludes that token and counts only Circle’s Ethereum USDC contract, 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48.
Statement | Assessment | Basis |
|---|---|---|
Two bridge batches paid the same recipient | Confirmed | Receipts and USDC logs |
Both calls used verifyRollup and the usual batch poster | Confirmed | Call data and tx.from |
Roughly 683.38 ETH was produced and split | Confirmed at distribution layer | ETH transfers from 0xb483…3D38 |
682.3 ETH entered Tornado Cash Router | Confirmed | 19 direct deposit transactions |
Compromised key or social engineering caused the incident | Not supported; Payy says initial RCA ruled these out | Official Payy update |
A specific proof-validation or authorization bug caused the incident | Unresolved | No validated post-mortem |
A named person or organization controls the wallets | Unresolved | No identity evidence |
Priority | Action | Reason |
|---|---|---|
1 | Preserve both verifyRollup transactions, calldata and validator/prover artifacts | Needed for root-cause reconstruction |
2 | Monitor 0xAa49…7E70 and genuine USDC balance | 90,202.821244 USDC remains visible |
3 | Monitor 0xa3dD…3cAe | 1 ETH remains outside the mixer path |
4 | Provide the 19 Tornado deposit hashes to investigators | Preserves precise entry amounts and times |
5 | Publish the validated post-mortem and user-remediation plan | Failure mode and reimbursement status remain unresolved |
The strongest forensic conclusion is not merely that Payy’s bridge lost about $1.92 million. The value followed two distinct post-drain states: 90,202.821244 genuine USDC remained at the primary recipient, while nearly all ETH created from the first tranche was split, relayed, and deposited into Tornado Cash less than three days later.
The transaction history supports a deliberate laundering sequence. It does not establish the technical root cause or the identity of the operator. Those questions require Payy’s validated post-mortem, preserved rollup artifacts, and any later mixer-withdrawal correlation.
Ethereum records: Etherscan and Blockscout
SentinelTX case: b92968a7-ee47-4f17-a260-1e5ebfc16a09
2 reads