How to sign or verify messages to prove address ownership?

What is message signing?

Message signing is a way for you to prove ownership of a particular address, and demonstrate you have control of the funds.

Why sign?

Signing is an easy way of assuring that something is being done by the correct person or contract. Unlike physical signatures, digital signatures cannot be faked so you can always be sure that an action was completed by the correct person.


Message signing can be done easily with Etherscan’s “Verify New Message Signature” feature.

1. Go to the Verify New Message Signature tool.
2. Provide the Ethereum address you would like to sign with.
3. Provide the message Signature hash and the original message that is being signed.
4. Click Verify and Save from the drop-down menu.
5. Submit.


Blockchain App

In the popular wallet app, Blockchain, message signing is quite simple. To sign a message,

1. Go to Settings -> Addresses
2. Scroll down to choose the desired address.
3. Click More Options -> Sign Message.

Note: this is currently only available for imported addresses, but will be added to all addresses in the future.

Technical Explanation

The following method creates an Ethereum-specific signature with:
sign(keccak256(“\x19Ethereum Signed Message:\n” + len(message) + message))).

Adding a prefix to the message will make the signature recognizable as an Ethereum-specific signature. This would prevent any fraud or misuse where a malicious DAPP could sign random data (such as a transaction) and use the signature to impersonate the victim. Note: the address to sign with should be unlocked for this to work.


account, message

  1. DATA, 20 Bytes = address
  2. DATA, N Bytes = message to sign


DATA: Signature


// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
// Result
"jsonrpc": "2.0",
"result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"

Leave a Comment