A transaction is a serialized binary message that contains the following data:

    Nonce

    A sequence number, issued by the originating EOA, used to prevent message replay

    Gas price

    The price of gas (in wei) the originator is willing to pay

    The maximum amount of gas the originator is willing to buy for this transaction

    Recipient

    The destination Ethereum address

    Value

    The amount of ether to send to the destination

    The variable-length binary data payload

    v,r,s

    The three components of an ECDSA digital signature of the originating EOA

    The transaction message’s structure is serialized using the Recursive Length Prefix (RLP) encoding scheme, which was created specifically for simple, byte-perfect data serialization in Ethereum. All numbers in Ethereum are encoded as big-endian integers, of lengths that are multiples of 8 bits.

    Note that the field labels (to, gas limit, etc.) are shown here for clarity, but are not part of the transaction serialized data, which contains the field values RLP-encoded. In general, RLP does not contain any field delimiters or labels. RLP’s length prefix is used to identify the length of each field. Anything beyond the defined length belongs to the next field in the structure.

    For example, you may notice there is no “from” data in the address identifying the originator EOA. That is because the EOA’s public key can be derived from the v,r,s components of the ECDSA signature. The address can, in turn, be derived from the public key. When you see a transaction showing a “from” field, that was added by the software used to visualize the transaction. Other metadata frequently added to the transaction by client software includes the block number (once it is mined and included in the blockchain) and a transaction ID (calculated hash). Again, this data is derived from the transaction, and does not form part of the transaction message itself.