EIP712: A small change towards global adoption of crypto

EIP712 is a new proposal that is about to land in MetaMask and other major Ethereum wallets. It will improve user safety through improved user experience.

EIP712: A small change towards global adoption of crypto

At the heart of modern cryptocurrencies lies public key asymmetric cryptography[1]. A person uses their private key to sign certain messages, and then demonstrates their public key to counterparties in their deals to prove the validity of their signature.

This mechanism is used to ensure that only the owner of the private key can spend their money and nobody else, and the blockchain rules ensure that all signatures must be valid. However, the very same mechanism of using a private key to sign messages can be beneficial outside of the blockchain context by traditional apps.

For example, you could use your private key as your online identity instead of creating a separate login for Facebook, Google, Amazon, etc. Or you could use it to digitally sign traditional, old school contracts. The sudden interest in cryptocurrencies has finally caused people to learn more about modern cryptography, and tools to generate, store and apply digital signatures are becoming more widespread every day.

However, their usability is still lackluster, and this poor usability is what's preventing cryptocurrencies from becoming more widely adopted. If you have ever used MetaMask you would know what I'm talking about. While no doubt it's a great tool and the whole ecosystem benefits from its existence, it is clear as day that there is a lot of room for improvement on the usability side of things.

Luckily for us all, a lot of major players have come to a similar understanding and are now investing their efforts into making crypto more accessible. Today, I would like to demonstrate you a recent standard that is about to be approved and integrated into Ethereum: EIP712, created by the talented engineers of 0x.

If you have ever used EtherDelta or 0x you would know that creating an order on those exchanges involves signing a message and sending it to their servers. Before this EIP, signing a message looked like this.


I am fairly technical myself, but I would be very scared to click Sign on that screen. A warning message in big letters, and it's really hard to tell what the hell am I signing! When you are signing a traditional contract you always go over its text and make sure that you agree to the terms. In this case, digital signatures act as a step back, which is not a situation where we would want to be!

Luckily, recent versions of ethereum client called geth, as well as MetaMask and other major wallets, have now adopted a new function call named eth_signTypedData. It is fairly simple to use in code for developers. All you need to do is take a document that you want to ask the user to sign, i.e.

msgParams = [
    {type: 'string', name: 'Action', value: 'New Order'},
    {type: 'string', name: 'Selling', value: 'ETH'},
    {type: 'string', name: 'Buying', value: 'SATURN'},
    {type: 'uint32', name: 'Amount', value: 10},
    {type: 'uint32', name: 'Price', value: 50000}

and then call

    [msgParams, web3.eth.coinbase],
  }, () => { handle your signed message here })

The crypto wallet is going to show you a much friendlier message.


Compare this to the gibberish we have seen before! Much better.

While there is definitely still room for growth, it is very exciting for us to see others focus on user interfaces and make the whole experience of using crypto much simpler for the consumer, much more frictionless, more transparent and more fluent. It aligns with our mission of improving global adoption of cryptocurrencies and promoting financial freedom that they bring.

Future is bright!

Looking for more great content? Please follow us on social media and subscribe to our newsletter to never miss a Saturn Network announcement!

  1. Read more on Wikipedia. ↩︎