Signing messages in Ethereum
If you’ve ever interacted with an Ethereum Dapp you’ve probably been asked to “sign” a message or piece of data to authenticate yourself (well your address). I am assuming that like me you want to develop for web3 and so in this post we will go over the basics of signing data, care to join ?
How does it work ( conceptually )
At the highest level signing a message is a way to verify that you own certain wallet address on the Ethereum Blockchain or rather are in control of your private keys.
There are 5 basic elements to signing a message:
- A Users Wallet address ( also known as account address)
- Private Keys ( These are only known or can be generated by the wallet owner usually behind a UI and password like with MetaMask’s wallet)
- Public Keys ( Can be derived from the account, but only when signing a message or transaction )
- A Message
- Maths
So now let’s see how the elements work together, let’s say you have a Dapp or web3 site and want to verify that the user owns certain address ( use cases in a minute ), at this point all you know is the user’s account. So you provide a message and the user “signs” it (…