Real-fire range
Triggers actualPermit signature requests and EIP-7702 authorization txs. drain’t’s Snap should intercept the bad ones and insert a warning panel before MetaMask Flask asks you to confirm.
MM’s onSignatureinsight API fires for typed-data v4. drain’t reads the Permit spender and runs it through the classifier.
Self-spending Permit. Expect drain't to stay silent or show 'safe'.
Spender = 0xae5d…fd73. Expect critical warning panel.
Sends a value-0 tx to a target contract. MM’s onTransactioninsight fires; drain’t classifies tx.to and warns if it’s a known drainer-shaped contract. Value=0 so nothing actually drains even on the “malicious” run.
tx.to = 0x2187…Da14 — calls owner() view. Expect drain't safe panel.
tx.to = 0xae5d…fd73. Expect drain't critical: 'Drainer contract suspected'.
wallet_signAuthorization publicly. drain’t’s onTransaction handler already inspects authorizationList (see snap/src/eip7702.ts) — the buttons below will start working the moment MM ships the RPC.Delegating to 0x2187…Da14. Currently expected to error 'json-rpc not supported'.
Delegating to 0xae5d…fd73. Will work once wallet API stabilizes.
No tests run yet. Trigger one above.