If I sign an ethereum transaction, what am I signing? Am I signing something like {send: 123456, to: deadbeef2345}, or something else? What is it? At the same time, what do I do to my signed transaction? What exactly do I send?

I would like a detailed explanation for a programmer, or a link to one. Thank you.


2 Answers 2


What exactly do I send?

You can find what is an ethereum transaction in this answer. This is what you are sending.

what am I signing?

The transaction before signing will include everything except v, r and s. These are generated from the signature. This function can explain in more detail.

what do I do to my signed transaction?

Your signed transaction will be send to a node. This could be a node run by you or one that you access via an API(e.g. Infura). The nodes will propagate this transaction to every other nodes that they are in touch with. You can read how state transition happens and how transactions are handled here

  • How do I emulate signTransaction with just sign? Also, how do I actually send the transaction to the node? Is there a web3 function for sending a signed transaction to a node?
    – Aphrodite
    Jul 24, 2019 at 5:20
  • In the link that I send see the return value. This is the function web3js.readthedocs.io/en/v1.2.0/…
    – Sanjay S B
    Jul 24, 2019 at 5:26

When you sign the transaction with your private key, it will create a signature on it. This signature is appended to the transaction message and sent to the Network.

To verify that transaction is actually signed by the owner of the private key, it can be verified through transaction object and signature and output will be the public key.

By this way, you don't need to expose your private key.

To know more about signing and validating on ethereum: https://medium.com/@angellopozo/ethereum-signing-and-validating-13a2d7cb0ee3

Not the answer you're looking for? Browse other questions tagged or ask your own question.