Ethereum Types

Introduction

Types re-used throughout the specification, which are specific to Ethereum.

Module Contents

Classes

Transaction

Atomic operation performed on the block chain.

Account

State associated with an address.

Header

Header portion of a block on the chain.

Block

A complete block.

Log

Data record produced during the execution of a transaction.

Receipt

Result of a transaction.

Functions

encode_account

Encode Account dataclass.

Attributes

Address

Root

Bloom

TX_BASE_COST

TX_DATA_COST_PER_NON_ZERO

TX_DATA_COST_PER_ZERO

EMPTY_ACCOUNT

Module Details

Address

Address
Address = Bytes20

Root

Root
Root = Hash32

Bloom

Bloom
Bloom = Bytes256

TX_BASE_COST

TX_BASE_COST
TX_BASE_COST = 21000

TX_DATA_COST_PER_NON_ZERO

TX_DATA_COST_PER_NON_ZERO
TX_DATA_COST_PER_NON_ZERO = 68

TX_DATA_COST_PER_ZERO

TX_DATA_COST_PER_ZERO
TX_DATA_COST_PER_ZERO = 4

Transaction

Atomic operation performed on the block chain.

class Transaction
nonce :ethereum.base_types.U256
gas_price :ethereum.base_types.Uint
gas :ethereum.base_types.Uint
to :Union[ethereum.base_types.Bytes0, Address]
value :ethereum.base_types.U256
data :ethereum.base_types.Bytes
v :ethereum.base_types.U256
r :ethereum.base_types.U256
s :ethereum.base_types.U256

Account

State associated with an address.

class Account
nonce :ethereum.base_types.Uint
balance :ethereum.base_types.U256
code :bytes

EMPTY_ACCOUNT

EMPTY_ACCOUNT
EMPTY_ACCOUNT = Account(
    nonce=Uint(0),
    balance=U256(0),
    code=bytearray(),
)

encode_account

encode_account(raw_account_data: Account, storage_root: ethereum.base_types.Bytes)ethereum.base_types.Bytes

Encode Account dataclass.

Storage is not stored in the Account dataclass, so Accounts cannot be encoded with providing a storage root.

def encode_account(raw_account_data: Account, storage_root: Bytes) -> Bytes:
    return rlp.encode(
        (
            raw_account_data.nonce,
            raw_account_data.balance,
            storage_root,
            keccak256(raw_account_data.code),
        )
    )

Block

A complete block.

class Block
header :Header
transactions :Tuple[Transaction, Ellipsis]
ommers :Tuple[Header, Ellipsis]

Log

Data record produced during the execution of a transaction.

class Log
address :Address
topics :Tuple[ethereum.crypto.hash.Hash32, Ellipsis]
data :bytes

Receipt

Result of a transaction.

class Receipt
post_state :Root
cumulative_gas_used :ethereum.base_types.Uint
bloom :Bloom
logs :Tuple[Log, Ellipsis]