EIP-712 (“Ethereum typed structured data hashing and signing”) is an important technical building block for interaction with EVM-based DAOs, enabling off-chain message signatures that can be verified and acted upon on-chain. This can be used, for example, to build things like the Gas Station Network, which enables users to pay gas for dapp interactions with ERC-20 tokens like FOX instead of ETH, or for dapps to subsidize the gas costs for certain contract calls, like onboarding (or, say, airdrop claims). There are many other exciting uses as well, but ETH-less transactions by themselves seem pretty darn compelling.
Hardware wallet support for EIP-712 messages isn’t great yet; Ledger’s does it and Trezor’s working on it, but neither actually display the data you’re about to sign, just a hash. That means you have to trust that your computer isn’t lying to the device, because the device can’t verify that the hash actually matches the message. On the other hand, KeepKey’s large screen makes it particularly suited to display and verification of this kind of structured data, and EIP-712 support could turn it into the hardware wallet of choice for use with Ethereum DAOs.
I’d like to propose that the DAO fund work to bring EIP-712 message signing to KeepKey.
EIP-712’s hashing algorithm is written in a way that makes it optimized for on-chain verifiers but quite difficult to do securely onboard a resource-constrained platform like a hardware wallet. However, on my own time I’ve developed a novel method which maintains security while keeping the resources needed at a small, constant levels (as in, O(1) in the size of the message) while still allowing KeepKey-style confirmation of each part of the message. My PoC only uses ~5KB of RAM, which is small enough to work.
More work still needs to be done to support arrays (the last unimplemented part of the spec), ensure the time/memory tradeoffs are tuned appropriately, write the appropriate supporting tests, and get it running on the device and plumbed into the USB message interface. HDWallet will also need to be updated to expose the functionality to apps, and to add EIP-712 support to native wallets (which is almost trivial without the RAM limitation).
(I don’t know how much FOX would be appropriate for this effort; I’ll defer to the more DAO-experienced members of the community - cough cough @willy cough cough – to help me hammer out that part of the idea.)