Community Investigation

Payy Network’s $1.92M Bridge Drain: Two verifyRollup Batches and 682.3 ETH Routed to Tornado Cash

REPORT
REPORT

September 28, 2026

Executive Summary

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.

Incident Anchors

Item

Value

Evidence

Network

Ethereum

On-chain

Bridge / rollup contract

0x367C1eAF14AA06b78ce76bd0243297de79d85270

Contract history

Batch poster

0x5343B904Bf837Befb2f5A256B0CD5fbF30503D38

tx.from in both batches

Primary recipient

0xAa4985dBDaBfACa344237D40F7E06C4a0BB57E70

USDC Transfer logs

Swap / distribution contract

0xb483B1742aaD0a60a9FC91bb36C5a42dbE3F3D38

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

Two verifyRollup Batches

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.

Payy incident timeline

Conversion and Initial ETH Split

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

0xa3dD31d9aD9A7eCAC68c2d2cF6063DfEa7bA3cAe

1.000000 ETH

0xd68af00a8693f154f1daf576e6a91a966c6b0909617a412d0471cb15678b6ca0

Retained

0xe8d566E2f914dbd8309625e1792ed21fD0431956

282.382139990140 ETH

0x7987458cae1d4424b5555c4a50cda01a31a5b08469cd6ab4c35d9b32acf09b95

Forwarded

0x888A21c48cF442e312bddd7c24B678f0C7132a2a

200.000000 ETH

0xd2ef52f0497a693bf3fe25b3584c5ec1b85d901c9ca8c4e0997f5e1a61074f1a

Forwarded

0x3d092740936dA4C5693DaE3633c7207A37F40104

199.999911680412 ETH

0x0b41b66d5e4158a82b5ca8adacf87a1b96fe79bd9e8da5b38b8c9551f4289a9e

Forwarded

Payy verified fund flow

Tornado Cash Deposit Paths

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

0xe8d566E2f914dbd8309625e1792ed21fD0431956

0xF46e1e8Ca9a032f1C84b1451890ad0aedb5E0BeD

06:09:35–06:19:59

9

180.0 ETH

0x888A21c48cF442e312bddd7c24B678f0C7132a2a

0x2072f325f0Bb7e06c1D7C933a10886f794D4CC99

06:46:11–07:11:11

8

302.3 ETH

0x3d092740936dA4C5693DaE3633c7207A37F40104

0x21D4A32a357c77e72dCe79810d54C7FCf5A19969

07:16:23–07:17:11

2

200.0 ETH

Total

3 relays

06:09:35–07:17:11

19

682.3 ETH

Relay

First Tornado deposit transaction

Last Tornado deposit transaction

0xF46e1e8Ca9a032f1C84b1451890ad0aedb5E0BeD

0x7de4955568c12e82d0cea9bc08d18715414c45b612ec270b5fa171ae74775db3

0x1cfb681a5bb2567ca6c68facbf65f9decc239eedd73248de27193103705a9cf6

0x2072f325f0Bb7e06c1D7C933a10886f794D4CC99

0xe5dfd95a2710f45d1749d99c941200f0b5831b25ec92239ff3e9800e60b6dbf2

0xb9958c2a8828865936c53cac3967434381584e6753d0a09da579972ead8a9de6

0x21D4A32a357c77e72dCe79810d54C7FCf5A19969

0x2097d151c2efe641673d3a6e772817c5baefcfbb550d5e0ade1cb49cbd91611a

0x0415dc1ff16cc17c6862b9ee27c1ebfbb2e30705d8f5e6157989e7618ecf64f4

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.

Verified Balances and Status

Address

Asset / balance at 28 Sep cutoff

Status

0xAa4985dBDaBfACa344237D40F7E06C4a0BB57E70

90,202.821244 genuine USDC

Later payout remains visible

0xa3dD31d9aD9A7eCAC68c2d2cF6063DfEa7bA3cAe

1.000000 ETH

Retained branch

0xe8d566E2f914dbd8309625e1792ed21fD0431956

~0 ETH

Forwarded to relay

0x888A21c48cF442e312bddd7c24B678f0C7132a2a

~0 ETH

Forwarded to relay

0x3d092740936dA4C5693DaE3633c7207A37F40104

~0 ETH

Forwarded to relay

0x21D4A32a357c77e72dCe79810d54C7FCf5A19969

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.

Evidence Assessment

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

Response Priorities

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

Conclusion

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.

Sources

Payy incident notice

Payy root-cause update

Unchained

The Crypto Times

iTokenly incident registry

Ethereum records: Etherscan and Blockscout

SentinelTX case: b92968a7-ee47-4f17-a260-1e5ebfc16a09

post_like_sub0
post_total_comment_sub0

2 reads

0/500 bytes