Snaps PoC

DAI Permit UI revoke vs signed approve mismatch

This PoC sends a DAI Permit typed-data request where allowed is the string "false". The UI can label this as a revoke, but the signing stack treats the value as truthy and signs allowed=true. It also highlights the expiry hex-parsing issue.

1) Wallet + status

Not connected Ethers: loading

Account (holder): -

2) DAI Permit inputs

Defaults: mainnet DAI contract + MetaMask Swap Router, allowed = "false", expiry = 0xffff...ffff.

3) UI vs signed preview

UI classification mirrors the app behavior (allowed === "false"), while signing uses Boolean(allowed) — so the string "false" is treated as true (unlimited permit).

4) Signature result

Recovery uses normalized values: allowed = Boolean(value) and expiry = BigInt(value).

Event log