types

package
v1.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2023 License: Apache-2.0 Imports: 15 Imported by: 15

Documentation

Index

Constants

View Source
const (
	HashLength    = 32
	AddressLength = 20

	SignatureSize = 4
)
View Source
const BloomByteLength = 256
View Source
const (
	RLPSingleByteUpperLimit = 0x7f
)
View Source
const (
	// StateTransactionGasLimit is arbitrary default gas limit for state transactions
	StateTransactionGasLimit = 1000000
)

Variables

View Source
var (
	// ZeroAddress is the default zero address
	ZeroAddress = Address{}

	// ZeroHash is the default zero hash
	ZeroHash = Hash{}

	// ZeroNonce is the default empty nonce
	ZeroNonce = Nonce{}

	// EmptyRootHash is the root when there are no transactions
	EmptyRootHash = StringToHash("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421")

	// EmptyUncleHash is the root when there are no uncles
	EmptyUncleHash = StringToHash("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347")

	// EmptyCodeHash is the root where there is no code.
	// Equivalent of: `types.BytesToHash(crypto.Keccak256(nil))`
	EmptyCodeHash = StringToHash("0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470")

	// ErrTxTypeNotSupported denotes that transaction is not supported
	ErrTxTypeNotSupported = errors.New("transaction type not supported")

	// ErrInsufficientFunds denotes that account has insufficient funds for transaction execution
	ErrInsufficientFunds = errors.New("insufficient funds for execution")
)
View Source
var (

	// this will change to use the generated code, but for now, we leave it as is, because of the circular import
	ExecuteStateSyncABIMethod, _ = abi.NewMethod("function execute(" +
		"bytes32[] proof, " +
		"tuple(uint256 id, address sender, address receiver, bytes data) obj)")
)
View Source
var HeaderHash func(h *Header) Hash

Functions

func AddressToString

func AddressToString(address Address) string

func IsValidAddress added in v1.0.0

func IsValidAddress(address string) error

IsValidAddress checks if provided string is a valid Ethereum address

func MarshalRLPTo

func MarshalRLPTo(obj marshalRLPFunc, dst []byte) []byte

func RegisterTxHashFork added in v1.1.0

func RegisterTxHashFork(txHashWithTypeFork string) error

func StringToBytes added in v0.8.0

func StringToBytes(str string) []byte

func UnmarshalRlp

func UnmarshalRlp(obj unmarshalRLPFunc, input []byte) error

Types

type Address

type Address [AddressLength]byte

func BytesToAddress

func BytesToAddress(b []byte) Address

func StringToAddress

func StringToAddress(str string) Address

func (Address) Bytes

func (a Address) Bytes() []byte

func (Address) MarshalText

func (a Address) MarshalText() ([]byte, error)

func (Address) Ptr added in v0.4.0

func (a Address) Ptr() *Address

func (Address) String

func (a Address) String() string

func (*Address) UnmarshalText

func (a *Address) UnmarshalText(input []byte) error

UnmarshalText parses an address in hex syntax.

type Block

type Block struct {
	Header       *Header
	Transactions []*Transaction
	Uncles       []*Header
	// contains filtered or unexported fields
}

func (*Block) Body

func (b *Block) Body() *Body

func (*Block) Hash

func (b *Block) Hash() Hash

func (*Block) MarshalRLP

func (b *Block) MarshalRLP() []byte

func (*Block) MarshalRLPTo

func (b *Block) MarshalRLPTo(dst []byte) []byte

func (*Block) MarshalRLPWith

func (b *Block) MarshalRLPWith(ar *fastrlp.Arena) *fastrlp.Value

func (*Block) Number

func (b *Block) Number() uint64

func (*Block) ParentHash

func (b *Block) ParentHash() Hash

func (*Block) Size

func (b *Block) Size() uint64

func (*Block) String

func (b *Block) String() string

func (*Block) UnmarshalRLP

func (b *Block) UnmarshalRLP(input []byte) error

func (*Block) WithSeal

func (b *Block) WithSeal(header *Header) *Block

WithSeal returns a new block with the data from b but the header replaced with the sealed one.

type Bloom

type Bloom [BloomByteLength]byte

func CreateBloom

func CreateBloom(receipts []*Receipt) (b Bloom)

CreateBloom creates a new bloom filter from a set of receipts

func (*Bloom) IsLogInBloom

func (b *Bloom) IsLogInBloom(log *Log) bool

IsLogInBloom checks if the log has a possible presence in the bloom filter

func (Bloom) MarshalText

func (b Bloom) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

func (Bloom) String

func (b Bloom) String() string

func (*Bloom) UnmarshalText

func (b *Bloom) UnmarshalText(input []byte) error

type Body

type Body struct {
	Transactions []*Transaction
	Uncles       []*Header
}

func (*Body) MarshalRLPTo

func (b *Body) MarshalRLPTo(dst []byte) []byte

func (*Body) UnmarshalRLP

func (b *Body) UnmarshalRLP(input []byte) error

UnmarshalRLP unmarshals body from byte slice. Caution: Hash for each tx must be computed manually after!

type ExitProof added in v0.9.0

type ExitProof struct {
	Proof     []Hash
	LeafIndex uint64
}

type FullBlock added in v0.8.0

type FullBlock struct {
	Block    *Block
	Receipts []*Receipt
}

type Hash

type Hash [HashLength]byte

func BytesToHash

func BytesToHash(b []byte) Hash

func StringToHash

func StringToHash(str string) Hash

func (Hash) Bytes

func (h Hash) Bytes() []byte

func (Hash) MarshalText

func (h Hash) MarshalText() ([]byte, error)

func (Hash) String

func (h Hash) String() string

func (*Hash) UnmarshalText

func (h *Hash) UnmarshalText(input []byte) error

UnmarshalText parses a hash in hex syntax.

type Header struct {
	ParentHash   Hash
	Sha3Uncles   Hash
	Miner        []byte
	StateRoot    Hash
	TxRoot       Hash
	ReceiptsRoot Hash
	LogsBloom    Bloom
	Difficulty   uint64
	Number       uint64
	GasLimit     uint64
	GasUsed      uint64
	Timestamp    uint64
	ExtraData    []byte
	MixHash      Hash
	Nonce        Nonce
	Hash         Hash

	// BaseFee was added by EIP-1559 and is ignored in legacy headers.
	BaseFee uint64 `json:"baseFeePerGas"`
}

Header represents a block header in the Ethereum blockchain.

func (*Header) ComputeHash

func (h *Header) ComputeHash() *Header

ComputeHash computes the hash of the header

func (*Header) Copy

func (h *Header) Copy() *Header

func (*Header) Equal

func (h *Header) Equal(hh *Header) bool

func (*Header) HasBody

func (h *Header) HasBody() bool

func (*Header) HasReceipts

func (h *Header) HasReceipts() bool

func (*Header) IsGenesis added in v0.6.0

func (h *Header) IsGenesis() bool

func (*Header) MarshalRLP

func (h *Header) MarshalRLP() []byte

func (*Header) MarshalRLPTo

func (h *Header) MarshalRLPTo(dst []byte) []byte

func (*Header) MarshalRLPWith

func (h *Header) MarshalRLPWith(arena *fastrlp.Arena) *fastrlp.Value

MarshalRLPWith marshals the header to RLP with a specific fastrlp.Arena

func (*Header) SetNonce

func (h *Header) SetNonce(i uint64)

func (*Header) UnmarshalRLP

func (h *Header) UnmarshalRLP(input []byte) error

type Log

type Log struct {
	Address Address
	Topics  []Hash
	Data    []byte
}

func (*Log) MarshalRLPWith

func (l *Log) MarshalRLPWith(a *fastrlp.Arena) *fastrlp.Value

type Nonce

type Nonce [8]byte

func (Nonce) MarshalText

func (n Nonce) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

func (Nonce) String

func (n Nonce) String() string

type OverrideAccount added in v0.9.0

type OverrideAccount struct {
	Nonce     *uint64
	Code      []byte
	Balance   *big.Int
	State     map[Hash]Hash
	StateDiff map[Hash]Hash
}

type Proof added in v0.8.0

type Proof struct {
	Data     []Hash // the proof himself
	Metadata map[string]interface{}
}

type RLPMarshaler

type RLPMarshaler interface {
	MarshalRLPTo(dst []byte) []byte
}

type RLPStoreMarshaler

type RLPStoreMarshaler interface {
	MarshalStoreRLPTo(dst []byte) []byte
}

type RLPStoreUnmarshaler

type RLPStoreUnmarshaler interface {
	UnmarshalStoreRLP(input []byte) error
}

type RLPUnmarshaler

type RLPUnmarshaler interface {
	UnmarshalRLP(input []byte) error
}

type Receipt

type Receipt struct {
	// consensus fields
	Root              Hash
	CumulativeGasUsed uint64
	LogsBloom         Bloom
	Logs              []*Log
	Status            *ReceiptStatus

	// context fields
	GasUsed         uint64
	ContractAddress *Address
	TxHash          Hash

	TransactionType TxType
}

func (*Receipt) IsLegacyTx added in v0.8.0

func (r *Receipt) IsLegacyTx() bool

func (*Receipt) MarshalLogsWith

func (r *Receipt) MarshalLogsWith(a *fastrlp.Arena) *fastrlp.Value

MarshalLogsWith marshals the logs of the receipt to RLP with a specific fastrlp.Arena

func (*Receipt) MarshalRLP

func (r *Receipt) MarshalRLP() []byte

func (*Receipt) MarshalRLPTo

func (r *Receipt) MarshalRLPTo(dst []byte) []byte

func (*Receipt) MarshalRLPWith

func (r *Receipt) MarshalRLPWith(a *fastrlp.Arena) *fastrlp.Value

MarshalRLPWith marshals a receipt with a specific fastrlp.Arena

func (*Receipt) MarshalStoreRLPTo

func (r *Receipt) MarshalStoreRLPTo(dst []byte) []byte

func (*Receipt) SetContractAddress added in v0.4.0

func (r *Receipt) SetContractAddress(contractAddress Address)

func (*Receipt) SetStatus

func (r *Receipt) SetStatus(s ReceiptStatus)

func (*Receipt) UnmarshalRLP

func (r *Receipt) UnmarshalRLP(input []byte) error

func (*Receipt) UnmarshalStoreRLP

func (r *Receipt) UnmarshalStoreRLP(input []byte) error

type ReceiptStatus

type ReceiptStatus uint64
const (
	ReceiptFailed ReceiptStatus = iota
	ReceiptSuccess
)

type Receipts

type Receipts []*Receipt

func (Receipts) MarshalRLPTo

func (r Receipts) MarshalRLPTo(dst []byte) []byte

func (*Receipts) MarshalRLPWith

func (r *Receipts) MarshalRLPWith(a *fastrlp.Arena) *fastrlp.Value

func (Receipts) MarshalStoreRLPTo

func (r Receipts) MarshalStoreRLPTo(dst []byte) []byte

func (*Receipts) UnmarshalRLP

func (r *Receipts) UnmarshalRLP(input []byte) error

func (*Receipts) UnmarshalStoreRLP

func (r *Receipts) UnmarshalStoreRLP(input []byte) error

type StateOverride added in v0.9.0

type StateOverride map[Address]OverrideAccount

type StateSyncEvent added in v0.9.0

type StateSyncEvent struct {
	// ID is the decoded 'index' field from the event
	ID uint64
	// Sender is the decoded 'sender' field from the event
	Sender ethgo.Address
	// Receiver is the decoded 'receiver' field from the event
	Receiver ethgo.Address
	// Data is the decoded 'data' field from the event
	Data []byte
}

StateSyncEvent is a bridge event from the rootchain

func (*StateSyncEvent) EncodeAbi added in v0.9.0

func (sse *StateSyncEvent) EncodeAbi() ([]byte, error)

ToABI converts StateSyncEvent to ABI

func (*StateSyncEvent) String added in v0.9.0

func (sse *StateSyncEvent) String() string

func (*StateSyncEvent) ToMap added in v0.9.0

func (sse *StateSyncEvent) ToMap() map[string]interface{}

ToMap converts StateSyncEvent to map

type StateSyncProof added in v0.9.0

type StateSyncProof struct {
	Proof     []Hash
	StateSync *StateSyncEvent
}

func (*StateSyncProof) DecodeAbi added in v0.9.0

func (ssp *StateSyncProof) DecodeAbi(txData []byte) error

DecodeAbi contains logic for decoding given ABI data

func (*StateSyncProof) EncodeAbi added in v0.9.0

func (ssp *StateSyncProof) EncodeAbi() ([]byte, error)

EncodeAbi contains logic for encoding given ABI data

type Transaction

type Transaction struct {
	Nonce     uint64
	GasPrice  *big.Int
	GasTipCap *big.Int
	GasFeeCap *big.Int
	Gas       uint64
	To        *Address
	Value     *big.Int
	Input     []byte
	V, R, S   *big.Int
	Hash      Hash
	From      Address

	Type TxType

	ChainID *big.Int
	// contains filtered or unexported fields
}

func FindTxByHash added in v1.1.0

func FindTxByHash(txs []*Transaction, hash Hash) (*Transaction, int)

FindTxByHash returns transaction and its index from a slice of transactions

func (*Transaction) ComputeHash

func (t *Transaction) ComputeHash(blockNumber uint64) *Transaction

ComputeHash computes the hash of the transaction

func (*Transaction) Copy

func (t *Transaction) Copy() *Transaction

func (*Transaction) Cost

func (t *Transaction) Cost() *big.Int

Cost returns gas * gasPrice + value

func (*Transaction) EffectiveGasTip added in v1.1.0

func (t *Transaction) EffectiveGasTip(baseFee *big.Int) *big.Int

EffectiveGasTip defines effective tip based on tx type. Spec: https://eips.ethereum.org/EIPS/eip-1559#specification We use EIP-1559 fields of the tx if the london hardfork is enabled. Effective tip be came to be either gas tip cap or (gas fee cap - current base fee)

func (*Transaction) GetGasFeeCap added in v1.1.0

func (t *Transaction) GetGasFeeCap() *big.Int

GetGasFeeCap gets gas fee cap depending on tx type Spec: https://eips.ethereum.org/EIPS/eip-1559#specification

func (*Transaction) GetGasPrice added in v0.9.0

func (t *Transaction) GetGasPrice(baseFee uint64) *big.Int

GetGasPrice returns gas price if not empty, or calculates one based on the given EIP-1559 fields if exist

Here is the logic:

  • use existing gas price if exists
  • or calculate a value with formula: min(gasFeeCap, gasTipCap + baseFee);

func (*Transaction) GetGasTipCap added in v1.1.0

func (t *Transaction) GetGasTipCap() *big.Int

GetGasTipCap gets gas tip cap depending on tx type Spec: https://eips.ethereum.org/EIPS/eip-1559#specification

func (*Transaction) IsContractCreation

func (t *Transaction) IsContractCreation() bool

IsContractCreation checks if tx is contract creation

func (*Transaction) IsValueTransfer added in v1.3.2

func (t *Transaction) IsValueTransfer() bool

IsValueTransfer checks if tx is a value transfer

func (*Transaction) MarshalRLP

func (t *Transaction) MarshalRLP() []byte

func (*Transaction) MarshalRLPTo

func (t *Transaction) MarshalRLPTo(dst []byte) []byte

func (*Transaction) MarshalRLPWith

func (t *Transaction) MarshalRLPWith(arena *fastrlp.Arena) *fastrlp.Value

MarshalRLPWith marshals the transaction to RLP with a specific fastrlp.Arena Be careful! This function does not serialize tx type as a first byte. Use MarshalRLP/MarshalRLPTo in most cases

func (*Transaction) MarshalStoreRLPTo

func (t *Transaction) MarshalStoreRLPTo(dst []byte) []byte

func (*Transaction) Size

func (t *Transaction) Size() uint64

func (*Transaction) UnmarshalRLP

func (t *Transaction) UnmarshalRLP(input []byte) error

UnmarshalRLP unmarshals transaction from byte slice Caution: Hash calculation should be done from the outside!

func (*Transaction) UnmarshalStoreRLP

func (t *Transaction) UnmarshalStoreRLP(input []byte) error

UnmarshalStoreRLP unmarshals transaction from byte slice. Hash must be computed manually after!

type TransactionHashFork added in v1.1.0

type TransactionHashFork interface {
	SerializeForRootCalculation(*Transaction, *fastrlp.ArenaPool) []byte
	ComputeHash(*Transaction)
}

func GetTransactionHashHandler added in v1.1.0

func GetTransactionHashHandler(blockNumber uint64) TransactionHashFork

type TransactionHashForkV1 added in v1.1.0

type TransactionHashForkV1 struct {
}

func (*TransactionHashForkV1) ComputeHash added in v1.1.0

func (th *TransactionHashForkV1) ComputeHash(t *Transaction)

func (*TransactionHashForkV1) SerializeForRootCalculation added in v1.1.0

func (th *TransactionHashForkV1) SerializeForRootCalculation(t *Transaction, ap *fastrlp.ArenaPool) []byte

type TransactionHashForkV2 added in v1.1.0

type TransactionHashForkV2 struct {
}

func (*TransactionHashForkV2) ComputeHash added in v1.1.0

func (th *TransactionHashForkV2) ComputeHash(t *Transaction)

func (*TransactionHashForkV2) SerializeForRootCalculation added in v1.1.0

func (th *TransactionHashForkV2) SerializeForRootCalculation(t *Transaction, _ *fastrlp.ArenaPool) []byte

type TxType added in v0.8.0

type TxType byte

TxType is the transaction type.

const (
	LegacyTx     TxType = 0x0
	StateTx      TxType = 0x7f
	DynamicFeeTx TxType = 0x02
)

List of supported transaction types

func (TxType) String added in v0.8.0

func (t TxType) String() (s string)

String returns string representation of the transaction type.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL