I’m sharing an open-source project I developed after dealing with a real case involving a Ronin Waypoint/keyless wallet compromised through a malicious EIP-7702 delegation.
This is NOT a wallet recovery service. Do not send me your seed phrase, private key, recovery password, OTP, Waypoint token, client shard, or any other secret.
The problem was a recovery deadlock:
The wallet had a malicious EIP-7702 delegation, and any RON sent to the compromised wallet for gas could be swept before the owner had a chance to use it.
Need RON to remove the delegation
↓
Send RON to the compromised wallet
↓
Sweeper/drainer takes the RON
↓
Recovery transaction cannot be executed
So I developed and implemented a different recovery flow.
The compromised account signs an EIP-7702 zero-address deauthorization for:
0x0000000000000000000000000000000000000000
For Ronin Waypoint/keyless wallets, the authorization is signed locally through the Waypoint MPC flow.
The resulting signature is then verified locally to make sure it recovers exactly the affected wallet address.
A second, clean wallet acts as a relayer and pays the RON gas for the EIP-7702 transaction.
This means the compromised wallet does not need to receive any RON.
The flow is basically:
Detect active EIP-7702 delegation
↓
Generate zero-address deauthorization
↓
Waypoint MPC / keyless signing
↓
Verify recovered signer
↓
Clean relayer pays gas
↓
EIP-7702 delegation removed
I successfully executed the recovery on Ronin Mainnet.
Before:
code = 0xef0100<malicious_delegate>
eip7702 = true
After:
code = 0x
eip7702 = false
currentDelegate = null
The account nonce also advanced after the transaction, and eth_getCode changed from the EIP-7702 delegation indicator to 0x, confirming the deauthorization on-chain.
Recovery transaction:
0xc43b036de851ecdeb70050a0f72d232e1d48153607e4b504f63c04eef16c4223
I published a sanitized open-source implementation here:
https://github.com/YutsuKito/Ronin-7702-Recovery
The project:
- does not collect or transmit the victim’s seed phrase or private key;
- does not send the recovery password to an application backend;
- does not persist the Waypoint token or MPC/client shard;
- verifies that the authorization signature recovers exactly the affected wallet;
- performs fresh nonce and delegation checks before broadcasting;
- uses a separate clean relayer to pay gas;
- requires explicit broadcast confirmation.
I have also submitted the implementation to Ronin / Sky Mavis for technical review.
One important point:
Removing a malicious EIP-7702 delegation does not mean that an already compromised wallet should be considered safe again.
If an attacker still has another valid signing method or compromised credentials, they may potentially regain control.
The purpose of this tool is primarily to create a recovery window so affected users can move their assets to a newly secured wallet.
This is an independent community project and is not affiliated with or officially endorsed by Ronin or Sky Mavis.
Technical feedback, code review, and contributions are welcome.
And again: if anyone contacts you privately claiming they can recover your wallet and asks for your seed phrase, private key, recovery password, OTP, Waypoint token, or MPC shard, treat it as a scam.