pbeth

package
v0.0.0-...-4c98d4d Latest Latest
Warning

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

Go to latest
Published: May 1, 2024 License: Apache-2.0 Imports: 13 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	TransactionTraceStatus_name = map[int32]string{
		0: "UNKNOWN",
		1: "SUCCEEDED",
		2: "FAILED",
		3: "REVERTED",
	}
	TransactionTraceStatus_value = map[string]int32{
		"UNKNOWN":   0,
		"SUCCEEDED": 1,
		"FAILED":    2,
		"REVERTED":  3,
	}
)

Enum value maps for TransactionTraceStatus.

View Source
var (
	CallType_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "CALL",
		2: "CALLCODE",
		3: "DELEGATE",
		4: "STATIC",
		5: "CREATE",
	}
	CallType_value = map[string]int32{
		"UNSPECIFIED": 0,
		"CALL":        1,
		"CALLCODE":    2,
		"DELEGATE":    3,
		"STATIC":      4,
		"CREATE":      5,
	}
)

Enum value maps for CallType.

View Source
var (
	Block_DetailLevel_name = map[int32]string{
		0: "DETAILLEVEL_EXTENDED",
		2: "DETAILLEVEL_BASE",
	}
	Block_DetailLevel_value = map[string]int32{
		"DETAILLEVEL_EXTENDED": 0,
		"DETAILLEVEL_BASE":     2,
	}
)

Enum value maps for Block_DetailLevel.

View Source
var (
	TransactionTrace_Type_name = map[int32]string{
		0:   "TRX_TYPE_LEGACY",
		1:   "TRX_TYPE_ACCESS_LIST",
		2:   "TRX_TYPE_DYNAMIC_FEE",
		3:   "TRX_TYPE_BLOB",
		100: "TRX_TYPE_ARBITRUM_DEPOSIT",
		101: "TRX_TYPE_ARBITRUM_UNSIGNED",
		102: "TRX_TYPE_ARBITRUM_CONTRACT",
		104: "TRX_TYPE_ARBITRUM_RETRY",
		105: "TRX_TYPE_ARBITRUM_SUBMIT_RETRYABLE",
		106: "TRX_TYPE_ARBITRUM_INTERNAL",
		120: "TRX_TYPE_ARBITRUM_LEGACY",
	}
	TransactionTrace_Type_value = map[string]int32{
		"TRX_TYPE_LEGACY":                    0,
		"TRX_TYPE_ACCESS_LIST":               1,
		"TRX_TYPE_DYNAMIC_FEE":               2,
		"TRX_TYPE_BLOB":                      3,
		"TRX_TYPE_ARBITRUM_DEPOSIT":          100,
		"TRX_TYPE_ARBITRUM_UNSIGNED":         101,
		"TRX_TYPE_ARBITRUM_CONTRACT":         102,
		"TRX_TYPE_ARBITRUM_RETRY":            104,
		"TRX_TYPE_ARBITRUM_SUBMIT_RETRYABLE": 105,
		"TRX_TYPE_ARBITRUM_INTERNAL":         106,
		"TRX_TYPE_ARBITRUM_LEGACY":           120,
	}
)

Enum value maps for TransactionTrace_Type.

View Source
var (
	BalanceChange_Reason_name = map[int32]string{
		0:  "REASON_UNKNOWN",
		1:  "REASON_REWARD_MINE_UNCLE",
		2:  "REASON_REWARD_MINE_BLOCK",
		3:  "REASON_DAO_REFUND_CONTRACT",
		4:  "REASON_DAO_ADJUST_BALANCE",
		5:  "REASON_TRANSFER",
		6:  "REASON_GENESIS_BALANCE",
		7:  "REASON_GAS_BUY",
		8:  "REASON_REWARD_TRANSACTION_FEE",
		14: "REASON_REWARD_FEE_RESET",
		9:  "REASON_GAS_REFUND",
		10: "REASON_TOUCH_ACCOUNT",
		11: "REASON_SUICIDE_REFUND",
		13: "REASON_SUICIDE_WITHDRAW",
		12: "REASON_CALL_BALANCE_OVERRIDE",
		15: "REASON_BURN",
		16: "REASON_WITHDRAWAL",
		17: "REASON_REWARD_BLOB_FEE",
		18: "REASON_INCREASE_MINT",
	}
	BalanceChange_Reason_value = map[string]int32{
		"REASON_UNKNOWN":                0,
		"REASON_REWARD_MINE_UNCLE":      1,
		"REASON_REWARD_MINE_BLOCK":      2,
		"REASON_DAO_REFUND_CONTRACT":    3,
		"REASON_DAO_ADJUST_BALANCE":     4,
		"REASON_TRANSFER":               5,
		"REASON_GENESIS_BALANCE":        6,
		"REASON_GAS_BUY":                7,
		"REASON_REWARD_TRANSACTION_FEE": 8,
		"REASON_REWARD_FEE_RESET":       14,
		"REASON_GAS_REFUND":             9,
		"REASON_TOUCH_ACCOUNT":          10,
		"REASON_SUICIDE_REFUND":         11,
		"REASON_SUICIDE_WITHDRAW":       13,
		"REASON_CALL_BALANCE_OVERRIDE":  12,
		"REASON_BURN":                   15,
		"REASON_WITHDRAWAL":             16,
		"REASON_REWARD_BLOB_FEE":        17,
		"REASON_INCREASE_MINT":          18,
	}
)

Enum value maps for BalanceChange_Reason.

View Source
var (
	GasChange_Reason_name = map[int32]string{
		0:  "REASON_UNKNOWN",
		1:  "REASON_CALL",
		2:  "REASON_CALL_CODE",
		3:  "REASON_CALL_DATA_COPY",
		4:  "REASON_CODE_COPY",
		5:  "REASON_CODE_STORAGE",
		6:  "REASON_CONTRACT_CREATION",
		7:  "REASON_CONTRACT_CREATION2",
		8:  "REASON_DELEGATE_CALL",
		9:  "REASON_EVENT_LOG",
		10: "REASON_EXT_CODE_COPY",
		11: "REASON_FAILED_EXECUTION",
		12: "REASON_INTRINSIC_GAS",
		13: "REASON_PRECOMPILED_CONTRACT",
		14: "REASON_REFUND_AFTER_EXECUTION",
		15: "REASON_RETURN",
		16: "REASON_RETURN_DATA_COPY",
		17: "REASON_REVERT",
		18: "REASON_SELF_DESTRUCT",
		19: "REASON_STATIC_CALL",
		20: "REASON_STATE_COLD_ACCESS",
		21: "REASON_TX_INITIAL_BALANCE",
		22: "REASON_TX_REFUNDS",
		23: "REASON_TX_LEFT_OVER_RETURNED",
		24: "REASON_CALL_INITIAL_BALANCE",
		25: "REASON_CALL_LEFT_OVER_RETURNED",
	}
	GasChange_Reason_value = map[string]int32{
		"REASON_UNKNOWN":                 0,
		"REASON_CALL":                    1,
		"REASON_CALL_CODE":               2,
		"REASON_CALL_DATA_COPY":          3,
		"REASON_CODE_COPY":               4,
		"REASON_CODE_STORAGE":            5,
		"REASON_CONTRACT_CREATION":       6,
		"REASON_CONTRACT_CREATION2":      7,
		"REASON_DELEGATE_CALL":           8,
		"REASON_EVENT_LOG":               9,
		"REASON_EXT_CODE_COPY":           10,
		"REASON_FAILED_EXECUTION":        11,
		"REASON_INTRINSIC_GAS":           12,
		"REASON_PRECOMPILED_CONTRACT":    13,
		"REASON_REFUND_AFTER_EXECUTION":  14,
		"REASON_RETURN":                  15,
		"REASON_RETURN_DATA_COPY":        16,
		"REASON_REVERT":                  17,
		"REASON_SELF_DESTRUCT":           18,
		"REASON_STATIC_CALL":             19,
		"REASON_STATE_COLD_ACCESS":       20,
		"REASON_TX_INITIAL_BALANCE":      21,
		"REASON_TX_REFUNDS":              22,
		"REASON_TX_LEFT_OVER_RETURNED":   23,
		"REASON_CALL_INITIAL_BALANCE":    24,
		"REASON_CALL_LEFT_OVER_RETURNED": 25,
	}
)

Enum value maps for GasChange_Reason.

View Source
var File_sf_ethereum_type_v2_type_proto protoreflect.FileDescriptor

Functions

func BlockToBuffer

func BlockToBuffer(block *Block) ([]byte, error)

func MustBlockToBuffer

func MustBlockToBuffer(block *Block) []byte

Types

type AccessTuple

type AccessTuple struct {
	Address     []byte   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	StorageKeys [][]byte `protobuf:"bytes,2,rep,name=storage_keys,json=storageKeys,proto3" json:"storage_keys,omitempty"`
	// contains filtered or unexported fields
}

AccessTuple represents a list of storage keys for a given contract's address and is used for AccessList construction.

func (*AccessTuple) Descriptor deprecated

func (*AccessTuple) Descriptor() ([]byte, []int)

Deprecated: Use AccessTuple.ProtoReflect.Descriptor instead.

func (*AccessTuple) GetAddress

func (x *AccessTuple) GetAddress() []byte

func (*AccessTuple) GetStorageKeys

func (x *AccessTuple) GetStorageKeys() [][]byte

func (*AccessTuple) ProtoMessage

func (*AccessTuple) ProtoMessage()

func (*AccessTuple) ProtoReflect

func (x *AccessTuple) ProtoReflect() protoreflect.Message

func (*AccessTuple) Reset

func (x *AccessTuple) Reset()

func (*AccessTuple) String

func (x *AccessTuple) String() string

type AccountCreation

type AccountCreation struct {
	Account []byte `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
	// The block's global ordinal when the account creation was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,2,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*AccountCreation) Descriptor deprecated

func (*AccountCreation) Descriptor() ([]byte, []int)

Deprecated: Use AccountCreation.ProtoReflect.Descriptor instead.

func (*AccountCreation) GetAccount

func (x *AccountCreation) GetAccount() []byte

func (*AccountCreation) GetOrdinal

func (x *AccountCreation) GetOrdinal() uint64

func (*AccountCreation) ProtoMessage

func (*AccountCreation) ProtoMessage()

func (*AccountCreation) ProtoReflect

func (x *AccountCreation) ProtoReflect() protoreflect.Message

func (*AccountCreation) Reset

func (x *AccountCreation) Reset()

func (*AccountCreation) String

func (x *AccountCreation) String() string

type BalanceChange

type BalanceChange struct {
	Address  []byte               `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	OldValue *BigInt              `protobuf:"bytes,2,opt,name=old_value,json=oldValue,proto3" json:"old_value,omitempty"`
	NewValue *BigInt              `protobuf:"bytes,3,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
	Reason   BalanceChange_Reason `protobuf:"varint,4,opt,name=reason,proto3,enum=sf.ethereum.type.v2.BalanceChange_Reason" json:"reason,omitempty"`
	// The block's global ordinal when the balance change was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,5,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*BalanceChange) Descriptor deprecated

func (*BalanceChange) Descriptor() ([]byte, []int)

Deprecated: Use BalanceChange.ProtoReflect.Descriptor instead.

func (*BalanceChange) GetAddress

func (x *BalanceChange) GetAddress() []byte

func (*BalanceChange) GetNewValue

func (x *BalanceChange) GetNewValue() *BigInt

func (*BalanceChange) GetOldValue

func (x *BalanceChange) GetOldValue() *BigInt

func (*BalanceChange) GetOrdinal

func (x *BalanceChange) GetOrdinal() uint64

func (*BalanceChange) GetReason

func (x *BalanceChange) GetReason() BalanceChange_Reason

func (*BalanceChange) ProtoMessage

func (*BalanceChange) ProtoMessage()

func (*BalanceChange) ProtoReflect

func (x *BalanceChange) ProtoReflect() protoreflect.Message

func (*BalanceChange) Reset

func (x *BalanceChange) Reset()

func (*BalanceChange) String

func (x *BalanceChange) String() string

type BalanceChange_Reason

type BalanceChange_Reason int32

Obtain all balanche change reasons under deep mind repository:

```shell ack -ho 'BalanceChangeReason\(".*"\)' | grep -Eo '".*"' | sort | uniq ```

const (
	BalanceChange_REASON_UNKNOWN                BalanceChange_Reason = 0
	BalanceChange_REASON_REWARD_MINE_UNCLE      BalanceChange_Reason = 1
	BalanceChange_REASON_REWARD_MINE_BLOCK      BalanceChange_Reason = 2
	BalanceChange_REASON_DAO_REFUND_CONTRACT    BalanceChange_Reason = 3
	BalanceChange_REASON_DAO_ADJUST_BALANCE     BalanceChange_Reason = 4
	BalanceChange_REASON_TRANSFER               BalanceChange_Reason = 5
	BalanceChange_REASON_GENESIS_BALANCE        BalanceChange_Reason = 6
	BalanceChange_REASON_GAS_BUY                BalanceChange_Reason = 7
	BalanceChange_REASON_REWARD_TRANSACTION_FEE BalanceChange_Reason = 8
	BalanceChange_REASON_REWARD_FEE_RESET       BalanceChange_Reason = 14
	BalanceChange_REASON_GAS_REFUND             BalanceChange_Reason = 9
	BalanceChange_REASON_TOUCH_ACCOUNT          BalanceChange_Reason = 10
	BalanceChange_REASON_SUICIDE_REFUND         BalanceChange_Reason = 11
	BalanceChange_REASON_SUICIDE_WITHDRAW       BalanceChange_Reason = 13
	BalanceChange_REASON_CALL_BALANCE_OVERRIDE  BalanceChange_Reason = 12
	// Used on chain(s) where some Ether burning happens
	BalanceChange_REASON_BURN       BalanceChange_Reason = 15
	BalanceChange_REASON_WITHDRAWAL BalanceChange_Reason = 16
	// Rewards for Blob processing on BNB chain added in Tycho hard-fork, refers
	// to BNB documentation to check the timestamp at which it was activated.
	BalanceChange_REASON_REWARD_BLOB_FEE BalanceChange_Reason = 17
	// USE on optimism chan
	BalanceChange_REASON_INCREASE_MINT BalanceChange_Reason = 18
)

func MustBalanceChangeReasonFromString

func MustBalanceChangeReasonFromString(reason string) BalanceChange_Reason

func (BalanceChange_Reason) Descriptor

func (BalanceChange_Reason) Enum

func (BalanceChange_Reason) EnumDescriptor deprecated

func (BalanceChange_Reason) EnumDescriptor() ([]byte, []int)

Deprecated: Use BalanceChange_Reason.Descriptor instead.

func (BalanceChange_Reason) Number

func (BalanceChange_Reason) String

func (x BalanceChange_Reason) String() string

func (BalanceChange_Reason) Type

type BigInt

type BigInt struct {
	Bytes []byte `protobuf:"bytes,1,opt,name=bytes,proto3" json:"bytes,omitempty"`
	// contains filtered or unexported fields
}

func BigIntFromBytes

func BigIntFromBytes(in []byte) *BigInt

BigIntFromBytes creates a new `pbeth.BigInt` from the received bytes. If the the received bytes is nil or of length 0, then `nil` is returned directly.

func BigIntFromNative

func BigIntFromNative(in *big.Int) *BigInt

func NewBigInt

func NewBigInt(in int64) *BigInt

func (*BigInt) Descriptor deprecated

func (*BigInt) Descriptor() ([]byte, []int)

Deprecated: Use BigInt.ProtoReflect.Descriptor instead.

func (*BigInt) GetBytes

func (x *BigInt) GetBytes() []byte

func (*BigInt) MarshalJSON

func (m *BigInt) MarshalJSON() ([]byte, error)

func (*BigInt) Native

func (m *BigInt) Native() *big.Int

func (*BigInt) ProtoMessage

func (*BigInt) ProtoMessage()

func (*BigInt) ProtoReflect

func (x *BigInt) ProtoReflect() protoreflect.Message

func (*BigInt) Reset

func (x *BigInt) Reset()

func (*BigInt) String

func (x *BigInt) String() string

func (*BigInt) Uint64

func (m *BigInt) Uint64() uint64

func (*BigInt) UnmarshalJSON

func (m *BigInt) UnmarshalJSON(in []byte) (err error)

type Block

type Block struct {

	// Hash is the block's hash.
	Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	// Number is the block's height at which this block was mined.
	Number uint64 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"`
	// Size is the size in bytes of the RLP encoding of the block according to Ethereum
	// rules.
	Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"`
	// Header contain's the block's header information like its parent hash, the merkel root hash
	// and all other information the form a block.
	Header *BlockHeader `protobuf:"bytes,5,opt,name=header,proto3" json:"header,omitempty"`
	// Uncles represents block produced with a valid solution but were not actually choosen
	// as the canonical block for the given height so they are mostly "forked" blocks.
	//
	// If the Block has been produced using the Proof of Stake consensus algorithm, this
	// field will actually be always empty.
	Uncles []*BlockHeader `protobuf:"bytes,6,rep,name=uncles,proto3" json:"uncles,omitempty"`
	// TransactionTraces hold the execute trace of all the transactions that were executed
	// in this block. In in there that you will find most of the Ethereum data model.
	//
	// They are ordered by the order of execution of the transaction in the block.
	TransactionTraces []*TransactionTrace `protobuf:"bytes,10,rep,name=transaction_traces,json=transactionTraces,proto3" json:"transaction_traces,omitempty"`
	// BalanceChanges here is the array of ETH transfer that happened at the block level
	// outside of the normal transaction flow of a block. The best example of this is mining
	// reward for the block mined, the transfer of ETH to the miner happens outside the normal
	// transaction flow of the chain and is recorded as a `BalanceChange` here since we cannot
	// attached it to any transaction.
	//
	// Only available in DetailLevel: EXTENDED
	BalanceChanges []*BalanceChange `protobuf:"bytes,11,rep,name=balance_changes,json=balanceChanges,proto3" json:"balance_changes,omitempty"`
	// DetailLevel affects the data available in this block.
	//
	// ## DetailLevel_EXTENDED
	//
	// Describes the most complete block, with traces, balance changes, storage
	// changes. It is extracted during the execution of the block.
	//
	// ## DetailLevel_BASE
	//
	// Describes a block that contains only the block header, transaction receipts
	// and event logs: everything that can be extracted using the base JSON-RPC
	// interface
	// (https://ethereum.org/en/developers/docs/apis/json-rpc/#json-rpc-methods)
	// Furthermore, the eth_getTransactionReceipt call has been avoided because it
	// brings only minimal improvements at the cost of requiring an archive node
	// or a full node with complete transaction index.
	DetailLevel Block_DetailLevel `` /* 139-byte string literal not displayed */
	// CodeChanges here is the array of smart code change that happened that happened at the block level
	// outside of the normal transaction flow of a block. Some Ethereum's fork like BSC and Polygon
	// has some capabilities to upgrade internal smart contracts used usually to track the validator
	// list.
	//
	// On hard fork, some procedure runs to upgrade the smart contract code to a new version. In those
	// network, a `CodeChange` for each modified smart contract on upgrade would be present here. Note
	// that this happen rarely, so the vast majority of block will have an empty list here.
	//
	// Only available in DetailLevel: EXTENDED
	CodeChanges []*CodeChange `protobuf:"bytes,20,rep,name=code_changes,json=codeChanges,proto3" json:"code_changes,omitempty"`
	// System calls are introduced in Cancun, along with blobs. They are executed outside of transactions but affect the state.
	//
	// Only available in DetailLevel: EXTENDED
	SystemCalls []*Call `protobuf:"bytes,21,rep,name=system_calls,json=systemCalls,proto3" json:"system_calls,omitempty"`
	// Ver represents that data model version of the block, it is used internally by Firehose on Ethereum
	// as a validation that we are reading the correct version.
	Ver int32 `protobuf:"varint,1,opt,name=ver,proto3" json:"ver,omitempty"`
	// contains filtered or unexported fields
}

Block is the representation of the tracing of a block in the Ethereum blockchain. A block is a collection of TransactionTrace that are grouped together and processed as an atomic unit. Each TransactionTrace is composed of a series of Call (a.k.a internal transactions) and there is also at least one call per transaction a.k.a the root call which essentially has the same parameters as the transaction itself (e.g. `from`, `to`, `gas`, `value`, etc.).

The exact tracing method used to build the block must be checked against [DetailLevel] field. There is two levels of details available, `BASE` and `EXTENDED`. The `BASE` level has been extracted using archive node RPC calls and will contain only the block header, transaction receipts and event logs. Refers to the Firehose service provider to know which blocks are offered on each network.

The `EXTENDED` level has been extracted using the Firehose tracer and all fields are available in this Protobuf.

The Ethereum block model is used across many chains which means that it happen that certain fields are not available in one chain but are available in another. Each field should be documented when necesssary if it's available on a subset of chains.

One major concept to get about the Block is the concept of 'ordinal'. The ordinal is a number that is used to globally order every element of execution that happened throughout the processing of the block like [TransactionTracer], Call, Log, BalanceChange, [StateChange], etc. Element that have a start and end interval, [Transaction] and Call, will have two ordinals: `begin_ordinal` and `end_ordinal`. Element that are executed as "point in time" Log, BalanceChange, [StateChange], etc. will have only one ordinal named `ordinal`. If you take all of the message in the Block that have an 'ordinal' field in an array and you sort each element against the `ordinal` field, you will get the exact order of execution of each element in the block.

All the 'ordinal' fields in a block are globally unique for the given block, it is **not** a chain-wide global ordering. Furthermore, caution must be take with reverted elements due to execution failure. For anything attached to a Call that has a `state_reverted` field set to `true`, the `ordinal` field is not reliable and should not be used to order the element against other elements in the block as those element might have 0 as the ordinal. Only successful calls have a reliable `ordinal` field.

func (*Block) Descriptor deprecated

func (*Block) Descriptor() ([]byte, []int)

Deprecated: Use Block.ProtoReflect.Descriptor instead.

func (*Block) GetBalanceChanges

func (x *Block) GetBalanceChanges() []*BalanceChange

func (*Block) GetCodeChanges

func (x *Block) GetCodeChanges() []*CodeChange

func (*Block) GetDetailLevel

func (x *Block) GetDetailLevel() Block_DetailLevel

func (*Block) GetFirehoseBlockID

func (b *Block) GetFirehoseBlockID() string

GetFirehoseBlockID implements firecore.Block.

func (*Block) GetFirehoseBlockNumber

func (b *Block) GetFirehoseBlockNumber() uint64

GetFirehoseBlockNumber implements firecore.Block.

func (*Block) GetFirehoseBlockParentID

func (b *Block) GetFirehoseBlockParentID() string

GetFirehoseBlockParentID implements firecore.Block.

func (*Block) GetFirehoseBlockParentNumber

func (b *Block) GetFirehoseBlockParentNumber() uint64

GetFirehoseBlockParentNumber implements firecore.Block.

func (*Block) GetFirehoseBlockTime

func (b *Block) GetFirehoseBlockTime() time.Time

GetFirehoseBlockTime implements firecore.Block.

func (*Block) GetFirehoseBlockVersion

func (b *Block) GetFirehoseBlockVersion() int32

GetFirehoseBlockVersion implements firecore.Block.

func (*Block) GetHash

func (x *Block) GetHash() []byte

func (*Block) GetHeader

func (x *Block) GetHeader() *BlockHeader

func (*Block) GetNumber

func (x *Block) GetNumber() uint64

func (*Block) GetSize

func (x *Block) GetSize() uint64

func (*Block) GetSystemCalls

func (x *Block) GetSystemCalls() []*Call

func (*Block) GetTransactionTraces

func (x *Block) GetTransactionTraces() []*TransactionTrace

func (*Block) GetUncles

func (x *Block) GetUncles() []*BlockHeader

func (*Block) GetVer

func (x *Block) GetVer() int32

func (*Block) ID

func (b *Block) ID() string

func (*Block) MustTime

func (b *Block) MustTime() time.Time

func (*Block) Num

func (b *Block) Num() uint64

func (*Block) PreviousID

func (b *Block) PreviousID() string

func (*Block) PrintBlock

func (b *Block) PrintBlock(printTransactions bool, out io.Writer) error

func (*Block) ProtoMessage

func (*Block) ProtoMessage()

func (*Block) ProtoReflect

func (x *Block) ProtoReflect() protoreflect.Message

func (*Block) Reset

func (x *Block) Reset()

func (*Block) String

func (x *Block) String() string

func (*Block) Time

func (b *Block) Time() (time.Time, error)

type BlockHeader

type BlockHeader struct {
	ParentHash []byte `protobuf:"bytes,1,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"`
	// Uncle hash of the block, some reference it as `sha3Uncles`, but `sha3“ is badly worded, so we prefer `uncle_hash`, also
	// referred as `ommers` in EIP specification.
	//
	// If the Block containing this `BlockHeader` has been produced using the Proof of Stake
	// consensus algorithm, this field will actually be constant and set to `0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347`.
	UncleHash        []byte `protobuf:"bytes,2,opt,name=uncle_hash,json=uncleHash,proto3" json:"uncle_hash,omitempty"`
	Coinbase         []byte `protobuf:"bytes,3,opt,name=coinbase,proto3" json:"coinbase,omitempty"`
	StateRoot        []byte `protobuf:"bytes,4,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"`
	TransactionsRoot []byte `protobuf:"bytes,5,opt,name=transactions_root,json=transactionsRoot,proto3" json:"transactions_root,omitempty"`
	ReceiptRoot      []byte `protobuf:"bytes,6,opt,name=receipt_root,json=receiptRoot,proto3" json:"receipt_root,omitempty"`
	LogsBloom        []byte `protobuf:"bytes,7,opt,name=logs_bloom,json=logsBloom,proto3" json:"logs_bloom,omitempty"`
	// Difficulty is the difficulty of the Proof of Work algorithm that was required to compute a solution.
	//
	// If the Block containing this `BlockHeader` has been produced using the Proof of Stake
	// consensus algorithm, this field will actually be constant and set to `0x00`.
	Difficulty *BigInt `protobuf:"bytes,8,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	// TotalDifficulty is the sum of all previous blocks difficulty including this block difficulty.
	//
	// If the Block containing this `BlockHeader` has been produced using the Proof of Stake
	// consensus algorithm, this field will actually be constant and set to the terminal total difficulty
	// that was required to transition to Proof of Stake algorithm, which varies per network. It is set to
	// 58 750 000 000 000 000 000 000 on Ethereum Mainnet and to 10 790 000 on Ethereum Testnet Goerli.
	TotalDifficulty *BigInt                `protobuf:"bytes,17,opt,name=total_difficulty,json=totalDifficulty,proto3" json:"total_difficulty,omitempty"`
	Number          uint64                 `protobuf:"varint,9,opt,name=number,proto3" json:"number,omitempty"`
	GasLimit        uint64                 `protobuf:"varint,10,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"`
	GasUsed         uint64                 `protobuf:"varint,11,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"`
	Timestamp       *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// ExtraData is free-form bytes included in the block by the "miner". While on Yellow paper of
	// Ethereum this value is maxed to 32 bytes, other consensus algorithm like Clique and some other
	// forks are using bigger values to carry special consensus data.
	//
	// If the Block containing this `BlockHeader` has been produced using the Proof of Stake
	// consensus algorithm, this field is strictly enforced to be <= 32 bytes.
	ExtraData []byte `protobuf:"bytes,13,opt,name=extra_data,json=extraData,proto3" json:"extra_data,omitempty"`
	// MixHash is used to prove, when combined with the `nonce` that sufficient amount of computation has been
	// achieved and that the solution found is valid.
	MixHash []byte `protobuf:"bytes,14,opt,name=mix_hash,json=mixHash,proto3" json:"mix_hash,omitempty"`
	// Nonce is used to prove, when combined with the `mix_hash` that sufficient amount of computation has been
	// achieved and that the solution found is valid.
	//
	// If the Block containing this `BlockHeader` has been produced using the Proof of Stake
	// consensus algorithm, this field will actually be constant and set to `0`.
	Nonce uint64 `protobuf:"varint,15,opt,name=nonce,proto3" json:"nonce,omitempty"`
	// Hash is the hash of the block which is actually the computation:
	//
	//	Keccak256(rlp([
	//	  parent_hash,
	//	  uncle_hash,
	//	  coinbase,
	//	  state_root,
	//	  transactions_root,
	//	  receipt_root,
	//	  logs_bloom,
	//	  difficulty,
	//	  number,
	//	  gas_limit,
	//	  gas_used,
	//	  timestamp,
	//	  extra_data,
	//	  mix_hash,
	//	  nonce,
	//	  base_fee_per_gas (to be included only if London fork is active)
	//	  withdrawals_root (to be included only if Shangai fork is active)
	//	  blob_gas_used (to be included only if Cancun fork is active)
	//	  excess_blob_gas (to be included only if Cancun fork is active)
	//	  parent_beacon_root (to be included only if Cancun fork is active)
	//	]))
	Hash []byte `protobuf:"bytes,16,opt,name=hash,proto3" json:"hash,omitempty"`
	// Base fee per gas according to EIP-1559 (e.g. London Fork) rules, only set if London is present/active on the chain.
	BaseFeePerGas *BigInt `protobuf:"bytes,18,opt,name=base_fee_per_gas,json=baseFeePerGas,proto3" json:"base_fee_per_gas,omitempty"`
	// Withdrawals root hash according to EIP-4895 (e.g. Shangai Fork) rules, only set if Shangai is present/active on the chain.
	//
	// Only available in DetailLevel: EXTENDED
	WithdrawalsRoot []byte `protobuf:"bytes,19,opt,name=withdrawals_root,json=withdrawalsRoot,proto3" json:"withdrawals_root,omitempty"`
	// TxDependency is list of transaction indexes that are dependent on each other in the block
	// header. This is metadata only that was used by the internal Polygon parallel execution engine.
	//
	// This field was available in a few versions on Polygon Mainnet and Polygon Mumbai chains. It was actually
	// removed and is not populated anymore. It's now embeded in the `extraData` field, refer to Polygon source
	// code to determine how to extract it if you need it.
	//
	// Only available in DetailLevel: EXTENDED
	TxDependency *Uint64NestedArray `protobuf:"bytes,20,opt,name=tx_dependency,json=txDependency,proto3" json:"tx_dependency,omitempty"`
	// BlobGasUsed was added by EIP-4844 and is ignored in legacy headers.
	BlobGasUsed *uint64 `protobuf:"varint,22,opt,name=blob_gas_used,json=blobGasUsed,proto3,oneof" json:"blob_gas_used,omitempty"`
	// ExcessBlobGas was added by EIP-4844 and is ignored in legacy headers.
	ExcessBlobGas *uint64 `protobuf:"varint,23,opt,name=excess_blob_gas,json=excessBlobGas,proto3,oneof" json:"excess_blob_gas,omitempty"`
	// ParentBeaconRoot was added by EIP-4788 and is ignored in legacy headers.
	ParentBeaconRoot []byte `protobuf:"bytes,24,opt,name=parent_beacon_root,json=parentBeaconRoot,proto3" json:"parent_beacon_root,omitempty"`
	// contains filtered or unexported fields
}

func (*BlockHeader) Descriptor deprecated

func (*BlockHeader) Descriptor() ([]byte, []int)

Deprecated: Use BlockHeader.ProtoReflect.Descriptor instead.

func (*BlockHeader) GetBaseFeePerGas

func (x *BlockHeader) GetBaseFeePerGas() *BigInt

func (*BlockHeader) GetBlobGasUsed

func (x *BlockHeader) GetBlobGasUsed() uint64

func (*BlockHeader) GetCoinbase

func (x *BlockHeader) GetCoinbase() []byte

func (*BlockHeader) GetDifficulty

func (x *BlockHeader) GetDifficulty() *BigInt

func (*BlockHeader) GetExcessBlobGas

func (x *BlockHeader) GetExcessBlobGas() uint64

func (*BlockHeader) GetExtraData

func (x *BlockHeader) GetExtraData() []byte

func (*BlockHeader) GetGasLimit

func (x *BlockHeader) GetGasLimit() uint64

func (*BlockHeader) GetGasUsed

func (x *BlockHeader) GetGasUsed() uint64

func (*BlockHeader) GetHash

func (x *BlockHeader) GetHash() []byte

func (*BlockHeader) GetLogsBloom

func (x *BlockHeader) GetLogsBloom() []byte

func (*BlockHeader) GetMixHash

func (x *BlockHeader) GetMixHash() []byte

func (*BlockHeader) GetNonce

func (x *BlockHeader) GetNonce() uint64

func (*BlockHeader) GetNumber

func (x *BlockHeader) GetNumber() uint64

func (*BlockHeader) GetParentBeaconRoot

func (x *BlockHeader) GetParentBeaconRoot() []byte

func (*BlockHeader) GetParentHash

func (x *BlockHeader) GetParentHash() []byte

func (*BlockHeader) GetReceiptRoot

func (x *BlockHeader) GetReceiptRoot() []byte

func (*BlockHeader) GetStateRoot

func (x *BlockHeader) GetStateRoot() []byte

func (*BlockHeader) GetTimestamp

func (x *BlockHeader) GetTimestamp() *timestamppb.Timestamp

func (*BlockHeader) GetTotalDifficulty

func (x *BlockHeader) GetTotalDifficulty() *BigInt

func (*BlockHeader) GetTransactionsRoot

func (x *BlockHeader) GetTransactionsRoot() []byte

func (*BlockHeader) GetTxDependency

func (x *BlockHeader) GetTxDependency() *Uint64NestedArray

func (*BlockHeader) GetUncleHash

func (x *BlockHeader) GetUncleHash() []byte

func (*BlockHeader) GetWithdrawalsRoot

func (x *BlockHeader) GetWithdrawalsRoot() []byte

func (*BlockHeader) ProtoMessage

func (*BlockHeader) ProtoMessage()

func (*BlockHeader) ProtoReflect

func (x *BlockHeader) ProtoReflect() protoreflect.Message

func (*BlockHeader) Reset

func (x *BlockHeader) Reset()

func (*BlockHeader) String

func (x *BlockHeader) String() string

type BlockRef

type BlockRef struct {
	Hash   []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
	Number uint64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
	// contains filtered or unexported fields
}

func (*BlockRef) Descriptor deprecated

func (*BlockRef) Descriptor() ([]byte, []int)

Deprecated: Use BlockRef.ProtoReflect.Descriptor instead.

func (*BlockRef) GetHash

func (x *BlockRef) GetHash() []byte

func (*BlockRef) GetNumber

func (x *BlockRef) GetNumber() uint64

func (*BlockRef) ProtoMessage

func (*BlockRef) ProtoMessage()

func (*BlockRef) ProtoReflect

func (x *BlockRef) ProtoReflect() protoreflect.Message

func (*BlockRef) Reset

func (x *BlockRef) Reset()

func (*BlockRef) String

func (x *BlockRef) String() string

type BlockWithRefs

type BlockWithRefs struct {
	Id                   string           `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Block                *Block           `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"`
	TransactionTraceRefs *TransactionRefs `protobuf:"bytes,3,opt,name=transaction_trace_refs,json=transactionTraceRefs,proto3" json:"transaction_trace_refs,omitempty"`
	Irreversible         bool             `protobuf:"varint,4,opt,name=irreversible,proto3" json:"irreversible,omitempty"`
	// contains filtered or unexported fields
}

BlockWithRefs is a lightweight block, with traces and transactions purged from the `block` within, and only. It is used in transports to pass block data around.

func (*BlockWithRefs) Descriptor deprecated

func (*BlockWithRefs) Descriptor() ([]byte, []int)

Deprecated: Use BlockWithRefs.ProtoReflect.Descriptor instead.

func (*BlockWithRefs) GetBlock

func (x *BlockWithRefs) GetBlock() *Block

func (*BlockWithRefs) GetId

func (x *BlockWithRefs) GetId() string

func (*BlockWithRefs) GetIrreversible

func (x *BlockWithRefs) GetIrreversible() bool

func (*BlockWithRefs) GetTransactionTraceRefs

func (x *BlockWithRefs) GetTransactionTraceRefs() *TransactionRefs

func (*BlockWithRefs) ProtoMessage

func (*BlockWithRefs) ProtoMessage()

func (*BlockWithRefs) ProtoReflect

func (x *BlockWithRefs) ProtoReflect() protoreflect.Message

func (*BlockWithRefs) Reset

func (x *BlockWithRefs) Reset()

func (*BlockWithRefs) String

func (x *BlockWithRefs) String() string

type Block_DetailLevel

type Block_DetailLevel int32
const (
	Block_DETAILLEVEL_EXTENDED Block_DetailLevel = 0
	// DETAILLEVEL_TRACE = 1; // TBD
	Block_DETAILLEVEL_BASE Block_DetailLevel = 2
)

func (Block_DetailLevel) Descriptor

func (Block_DetailLevel) Enum

func (Block_DetailLevel) EnumDescriptor deprecated

func (Block_DetailLevel) EnumDescriptor() ([]byte, []int)

Deprecated: Use Block_DetailLevel.Descriptor instead.

func (Block_DetailLevel) Number

func (Block_DetailLevel) String

func (x Block_DetailLevel) String() string

func (Block_DetailLevel) Type

type Call

type Call struct {
	Index        uint32   `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	ParentIndex  uint32   `protobuf:"varint,2,opt,name=parent_index,json=parentIndex,proto3" json:"parent_index,omitempty"`
	Depth        uint32   `protobuf:"varint,3,opt,name=depth,proto3" json:"depth,omitempty"`
	CallType     CallType `protobuf:"varint,4,opt,name=call_type,json=callType,proto3,enum=sf.ethereum.type.v2.CallType" json:"call_type,omitempty"`
	Caller       []byte   `protobuf:"bytes,5,opt,name=caller,proto3" json:"caller,omitempty"`
	Address      []byte   `protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"`
	Value        *BigInt  `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"`
	GasLimit     uint64   `protobuf:"varint,8,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"`
	GasConsumed  uint64   `protobuf:"varint,9,opt,name=gas_consumed,json=gasConsumed,proto3" json:"gas_consumed,omitempty"`
	ReturnData   []byte   `protobuf:"bytes,13,opt,name=return_data,json=returnData,proto3" json:"return_data,omitempty"`
	Input        []byte   `protobuf:"bytes,14,opt,name=input,proto3" json:"input,omitempty"`
	ExecutedCode bool     `protobuf:"varint,15,opt,name=executed_code,json=executedCode,proto3" json:"executed_code,omitempty"`
	Suicide      bool     `protobuf:"varint,16,opt,name=suicide,proto3" json:"suicide,omitempty"`
	// hex representation of the hash -> preimage
	KeccakPreimages map[string]string `` /* 195-byte string literal not displayed */
	StorageChanges  []*StorageChange  `protobuf:"bytes,21,rep,name=storage_changes,json=storageChanges,proto3" json:"storage_changes,omitempty"`
	BalanceChanges  []*BalanceChange  `protobuf:"bytes,22,rep,name=balance_changes,json=balanceChanges,proto3" json:"balance_changes,omitempty"`
	NonceChanges    []*NonceChange    `protobuf:"bytes,24,rep,name=nonce_changes,json=nonceChanges,proto3" json:"nonce_changes,omitempty"`
	Logs            []*Log            `protobuf:"bytes,25,rep,name=logs,proto3" json:"logs,omitempty"`
	CodeChanges     []*CodeChange     `protobuf:"bytes,26,rep,name=code_changes,json=codeChanges,proto3" json:"code_changes,omitempty"`
	GasChanges      []*GasChange      `protobuf:"bytes,28,rep,name=gas_changes,json=gasChanges,proto3" json:"gas_changes,omitempty"`
	// In Ethereum, a call can be either:
	// - Successfull, execution passes without any problem encountered
	// - Failed, execution failed, and remaining gas should be consumed
	// - Reverted, execution failed, but only gas consumed so far is billed, remaining gas is refunded
	//
	// When a call is either `failed` or `reverted`, the `status_failed` field
	// below is set to `true`. If the status is `reverted`, then both `status_failed`
	// and `status_reverted` are going to be set to `true`.
	StatusFailed   bool `protobuf:"varint,10,opt,name=status_failed,json=statusFailed,proto3" json:"status_failed,omitempty"`
	StatusReverted bool `protobuf:"varint,12,opt,name=status_reverted,json=statusReverted,proto3" json:"status_reverted,omitempty"`
	// Populated when a call either failed or reverted, so when `status_failed == true`,
	// see above for details about those flags.
	FailureReason string `protobuf:"bytes,11,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"`
	// This field represents wheter or not the state changes performed
	// by this call were correctly recorded by the blockchain.
	//
	// On Ethereum, a transaction can record state changes even if some
	// of its inner nested calls failed. This is problematic however since
	// a call will invalidate all its state changes as well as all state
	// changes performed by its child call. This means that even if a call
	// has a status of `SUCCESS`, the chain might have reverted all the state
	// changes it performed.
	//
	// “`text
	//
	//	Trx 1
	//	 Call #1 <Failed>
	//	   Call #2 <Execution Success>
	//	   Call #3 <Execution Success>
	//	   |--- Failure here
	//	 Call #4
	//
	// “`
	//
	// In the transaction above, while Call #2 and Call #3 would have the
	// status `EXECUTED`.
	//
	// If you check all calls and check only `state_reverted` flag, you might be missing
	// some balance changes and nonce changes. This is because when a full transaction fails
	// in ethereum (e.g. `calls.all(x.state_reverted == true)`), there is still the transaction
	// fee that are recorded to the chain.
	//
	// Refer to [TransactionTrace#status] field for more details about the handling you must
	// perform.
	StateReverted bool `protobuf:"varint,30,opt,name=state_reverted,json=stateReverted,proto3" json:"state_reverted,omitempty"`
	// The block's global ordinal when the call started executing, refer to
	// [Block] documentation for further information about ordinals and total ordering.
	BeginOrdinal uint64 `protobuf:"varint,31,opt,name=begin_ordinal,json=beginOrdinal,proto3" json:"begin_ordinal,omitempty"`
	// The block's global ordinal when the call finished executing, refer to
	// [Block] documentation for further information about ordinals and total ordering.
	EndOrdinal       uint64             `protobuf:"varint,32,opt,name=end_ordinal,json=endOrdinal,proto3" json:"end_ordinal,omitempty"`
	AccountCreations []*AccountCreation `protobuf:"bytes,33,rep,name=account_creations,json=accountCreations,proto3" json:"account_creations,omitempty"`
	// contains filtered or unexported fields
}

func (*Call) Descriptor deprecated

func (*Call) Descriptor() ([]byte, []int)

Deprecated: Use Call.ProtoReflect.Descriptor instead.

func (*Call) GetAccountCreations

func (x *Call) GetAccountCreations() []*AccountCreation

func (*Call) GetAddress

func (x *Call) GetAddress() []byte

func (*Call) GetBalanceChanges

func (x *Call) GetBalanceChanges() []*BalanceChange

func (*Call) GetBeginOrdinal

func (x *Call) GetBeginOrdinal() uint64

func (*Call) GetCallType

func (x *Call) GetCallType() CallType

func (*Call) GetCaller

func (x *Call) GetCaller() []byte

func (*Call) GetCodeChanges

func (x *Call) GetCodeChanges() []*CodeChange

func (*Call) GetDepth

func (x *Call) GetDepth() uint32

func (*Call) GetEndOrdinal

func (x *Call) GetEndOrdinal() uint64

func (*Call) GetExecutedCode

func (x *Call) GetExecutedCode() bool

func (*Call) GetFailureReason

func (x *Call) GetFailureReason() string

func (*Call) GetGasChanges

func (x *Call) GetGasChanges() []*GasChange

func (*Call) GetGasConsumed

func (x *Call) GetGasConsumed() uint64

func (*Call) GetGasLimit

func (x *Call) GetGasLimit() uint64

func (*Call) GetIndex

func (x *Call) GetIndex() uint32

func (*Call) GetInput

func (x *Call) GetInput() []byte

func (*Call) GetKeccakPreimages

func (x *Call) GetKeccakPreimages() map[string]string

func (*Call) GetLogs

func (x *Call) GetLogs() []*Log

func (*Call) GetNonceChanges

func (x *Call) GetNonceChanges() []*NonceChange

func (*Call) GetParentIndex

func (x *Call) GetParentIndex() uint32

func (*Call) GetReturnData

func (x *Call) GetReturnData() []byte

func (*Call) GetStateReverted

func (x *Call) GetStateReverted() bool

func (*Call) GetStatusFailed

func (x *Call) GetStatusFailed() bool

func (*Call) GetStatusReverted

func (x *Call) GetStatusReverted() bool

func (*Call) GetStorageChanges

func (x *Call) GetStorageChanges() []*StorageChange

func (*Call) GetSuicide

func (x *Call) GetSuicide() bool

func (*Call) GetValue

func (x *Call) GetValue() *BigInt

func (*Call) Method

func (call *Call) Method() []byte

func (*Call) ProtoMessage

func (*Call) ProtoMessage()

func (*Call) ProtoReflect

func (x *Call) ProtoReflect() protoreflect.Message

func (*Call) Reset

func (x *Call) Reset()

func (*Call) String

func (x *Call) String() string

type CallType

type CallType int32
const (
	CallType_UNSPECIFIED CallType = 0
	CallType_CALL        CallType = 1 // direct? what's the name for `Call` alone?
	CallType_CALLCODE    CallType = 2
	CallType_DELEGATE    CallType = 3
	CallType_STATIC      CallType = 4
	CallType_CREATE      CallType = 5 // create2 ? any other form of calls?
)

func (CallType) Descriptor

func (CallType) Descriptor() protoreflect.EnumDescriptor

func (CallType) Enum

func (x CallType) Enum() *CallType

func (CallType) EnumDescriptor deprecated

func (CallType) EnumDescriptor() ([]byte, []int)

Deprecated: Use CallType.Descriptor instead.

func (CallType) Number

func (x CallType) Number() protoreflect.EnumNumber

func (CallType) String

func (x CallType) String() string

func (CallType) Type

type CodeChange

type CodeChange struct {
	Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	OldHash []byte `protobuf:"bytes,2,opt,name=old_hash,json=oldHash,proto3" json:"old_hash,omitempty"`
	OldCode []byte `protobuf:"bytes,3,opt,name=old_code,json=oldCode,proto3" json:"old_code,omitempty"`
	NewHash []byte `protobuf:"bytes,4,opt,name=new_hash,json=newHash,proto3" json:"new_hash,omitempty"`
	NewCode []byte `protobuf:"bytes,5,opt,name=new_code,json=newCode,proto3" json:"new_code,omitempty"`
	// The block's global ordinal when the code change was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,6,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*CodeChange) Descriptor deprecated

func (*CodeChange) Descriptor() ([]byte, []int)

Deprecated: Use CodeChange.ProtoReflect.Descriptor instead.

func (*CodeChange) GetAddress

func (x *CodeChange) GetAddress() []byte

func (*CodeChange) GetNewCode

func (x *CodeChange) GetNewCode() []byte

func (*CodeChange) GetNewHash

func (x *CodeChange) GetNewHash() []byte

func (*CodeChange) GetOldCode

func (x *CodeChange) GetOldCode() []byte

func (*CodeChange) GetOldHash

func (x *CodeChange) GetOldHash() []byte

func (*CodeChange) GetOrdinal

func (x *CodeChange) GetOrdinal() uint64

func (*CodeChange) ProtoMessage

func (*CodeChange) ProtoMessage()

func (*CodeChange) ProtoReflect

func (x *CodeChange) ProtoReflect() protoreflect.Message

func (*CodeChange) Reset

func (x *CodeChange) Reset()

func (*CodeChange) String

func (x *CodeChange) String() string

type GasChange

type GasChange struct {
	OldValue uint64           `protobuf:"varint,1,opt,name=old_value,json=oldValue,proto3" json:"old_value,omitempty"`
	NewValue uint64           `protobuf:"varint,2,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
	Reason   GasChange_Reason `protobuf:"varint,3,opt,name=reason,proto3,enum=sf.ethereum.type.v2.GasChange_Reason" json:"reason,omitempty"`
	// The block's global ordinal when the gas change was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,4,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

The gas change model represents the reason why some gas cost has occurred. The gas is computed per actual op codes. Doing them completely might prove overwhelming in most cases.

Hence, we only index some of them, those that are costy like all the calls one, log events, return data, etc.

func (*GasChange) Descriptor deprecated

func (*GasChange) Descriptor() ([]byte, []int)

Deprecated: Use GasChange.ProtoReflect.Descriptor instead.

func (*GasChange) GetNewValue

func (x *GasChange) GetNewValue() uint64

func (*GasChange) GetOldValue

func (x *GasChange) GetOldValue() uint64

func (*GasChange) GetOrdinal

func (x *GasChange) GetOrdinal() uint64

func (*GasChange) GetReason

func (x *GasChange) GetReason() GasChange_Reason

func (*GasChange) ProtoMessage

func (*GasChange) ProtoMessage()

func (*GasChange) ProtoReflect

func (x *GasChange) ProtoReflect() protoreflect.Message

func (*GasChange) Reset

func (x *GasChange) Reset()

func (*GasChange) String

func (x *GasChange) String() string

type GasChange_Reason

type GasChange_Reason int32

Obtain all gas change reasons under deep mind repository:

```shell ack -ho 'GasChangeReason\(".*"\)' | grep -Eo '".*"' | sort | uniq ```

const (
	GasChange_REASON_UNKNOWN GasChange_Reason = 0
	// REASON_CALL is the amount of gas that will be charged for a 'CALL' opcode executed by the EVM
	GasChange_REASON_CALL GasChange_Reason = 1
	// REASON_CALL_CODE is the amount of gas that will be charged for a 'CALLCODE' opcode executed by the EVM
	GasChange_REASON_CALL_CODE GasChange_Reason = 2
	// REASON_CALL_DATA_COPY is the amount of gas that will be charged for a 'CALLDATACOPY' opcode executed by the EVM
	GasChange_REASON_CALL_DATA_COPY GasChange_Reason = 3
	// REASON_CODE_COPY is the amount of gas that will be charged for a 'CALLDATACOPY' opcode executed by the EVM
	GasChange_REASON_CODE_COPY GasChange_Reason = 4
	// REASON_CODE_STORAGE is the amount of gas that will be charged for code storage
	GasChange_REASON_CODE_STORAGE GasChange_Reason = 5
	// REASON_CONTRACT_CREATION is the amount of gas that will be charged for a 'CREATE' opcode executed by the EVM and for the gas
	// burned for a CREATE, today controlled by EIP150 rules
	GasChange_REASON_CONTRACT_CREATION GasChange_Reason = 6
	// REASON_CONTRACT_CREATION2 is the amount of gas that will be charged for a 'CREATE2' opcode executed by the EVM and for the gas
	// burned for a CREATE2, today controlled by EIP150 rules
	GasChange_REASON_CONTRACT_CREATION2 GasChange_Reason = 7
	// REASON_DELEGATE_CALL is the amount of gas that will be charged for a 'DELEGATECALL' opcode executed by the EVM
	GasChange_REASON_DELEGATE_CALL GasChange_Reason = 8
	// REASON_EVENT_LOG is the amount of gas that will be charged for a 'LOG<N>' opcode executed by the EVM
	GasChange_REASON_EVENT_LOG GasChange_Reason = 9
	// REASON_EXT_CODE_COPY is the amount of gas that will be charged for a 'LOG<N>' opcode executed by the EVM
	GasChange_REASON_EXT_CODE_COPY GasChange_Reason = 10
	// REASON_FAILED_EXECUTION is the burning of the remaining gas when the execution failed without a revert
	GasChange_REASON_FAILED_EXECUTION GasChange_Reason = 11
	// REASON_INTRINSIC_GAS is the amount of gas that will be charged for the intrinsic cost of the transaction, there is
	// always exactly one of those per transaction
	GasChange_REASON_INTRINSIC_GAS GasChange_Reason = 12
	// GasChangePrecompiledContract is the amount of gas that will be charged for a precompiled contract execution
	GasChange_REASON_PRECOMPILED_CONTRACT GasChange_Reason = 13
	// REASON_REFUND_AFTER_EXECUTION is the amount of gas that will be refunded to the caller after the execution of the call,
	// if there is left over at the end of execution
	GasChange_REASON_REFUND_AFTER_EXECUTION GasChange_Reason = 14
	// REASON_RETURN is the amount of gas that will be charged for a 'RETURN' opcode executed by the EVM
	GasChange_REASON_RETURN GasChange_Reason = 15
	// REASON_RETURN_DATA_COPY is the amount of gas that will be charged for a 'RETURNDATACOPY' opcode executed by the EVM
	GasChange_REASON_RETURN_DATA_COPY GasChange_Reason = 16
	// REASON_REVERT is the amount of gas that will be charged for a 'REVERT' opcode executed by the EVM
	GasChange_REASON_REVERT GasChange_Reason = 17
	// REASON_SELF_DESTRUCT is the amount of gas that will be charged for a 'SELFDESTRUCT' opcode executed by the EVM
	GasChange_REASON_SELF_DESTRUCT GasChange_Reason = 18
	// REASON_STATIC_CALL is the amount of gas that will be charged for a 'STATICALL' opcode executed by the EVM
	GasChange_REASON_STATIC_CALL GasChange_Reason = 19
	// REASON_STATE_COLD_ACCESS is the amount of gas that will be charged for a cold storage access as controlled by EIP2929 rules
	//
	// Added in Berlin fork (Geth 1.10+)
	GasChange_REASON_STATE_COLD_ACCESS GasChange_Reason = 20
	// REASON_TX_INITIAL_BALANCE is the initial balance for the call which will be equal to the gasLimit of the call
	//
	// Added as new tracing reason in Geth, available only on some chains
	GasChange_REASON_TX_INITIAL_BALANCE GasChange_Reason = 21
	// REASON_TX_REFUNDS is the sum of all refunds which happened during the tx execution (e.g. storage slot being cleared)
	// this generates an increase in gas. There is only one such gas change per transaction.
	//
	// Added as new tracing reason in Geth, available only on some chains
	GasChange_REASON_TX_REFUNDS GasChange_Reason = 22
	// REASON_TX_LEFT_OVER_RETURNED is the amount of gas left over at the end of transaction's execution that will be returned
	// to the chain. This change will always be a negative change as we "drain" left over gas towards 0. If there was no gas
	// left at the end of execution, no such even will be emitted. The returned gas's value in Wei is returned to caller.
	// There is at most one of such gas change per transaction.
	//
	// Added as new tracing reason in Geth, available only on some chains
	GasChange_REASON_TX_LEFT_OVER_RETURNED GasChange_Reason = 23
	// REASON_CALL_INITIAL_BALANCE is the initial balance for the call which will be equal to the gasLimit of the call. There is only
	// one such gas change per call.
	//
	// Added as new tracing reason in Geth, available only on some chains
	GasChange_REASON_CALL_INITIAL_BALANCE GasChange_Reason = 24
	// REASON_CALL_LEFT_OVER_RETURNED is the amount of gas left over that will be returned to the caller, this change will always
	// be a negative change as we "drain" left over gas towards 0. If there was no gas left at the end of execution, no such even
	// will be emitted.
	GasChange_REASON_CALL_LEFT_OVER_RETURNED GasChange_Reason = 25
)

func MustGasChangeReasonFromString

func MustGasChangeReasonFromString(reason string) GasChange_Reason

func (GasChange_Reason) Descriptor

func (GasChange_Reason) Enum

func (GasChange_Reason) EnumDescriptor deprecated

func (GasChange_Reason) EnumDescriptor() ([]byte, []int)

Deprecated: Use GasChange_Reason.Descriptor instead.

func (GasChange_Reason) Number

func (GasChange_Reason) String

func (x GasChange_Reason) String() string

func (GasChange_Reason) Type

type HeaderOnlyBlock

type HeaderOnlyBlock struct {
	Header *BlockHeader `protobuf:"bytes,5,opt,name=header,proto3" json:"header,omitempty"`
	// contains filtered or unexported fields
}

HeaderOnlyBlock is used to optimally unpack the Block structure (note the corresponding message number for the `header` field) while consuming less memory, when only the `header` is desired.

WARN: this is a client-side optimization pattern and should be moved in the consuming code.

func (*HeaderOnlyBlock) Descriptor deprecated

func (*HeaderOnlyBlock) Descriptor() ([]byte, []int)

Deprecated: Use HeaderOnlyBlock.ProtoReflect.Descriptor instead.

func (*HeaderOnlyBlock) GetHeader

func (x *HeaderOnlyBlock) GetHeader() *BlockHeader

func (*HeaderOnlyBlock) ProtoMessage

func (*HeaderOnlyBlock) ProtoMessage()

func (*HeaderOnlyBlock) ProtoReflect

func (x *HeaderOnlyBlock) ProtoReflect() protoreflect.Message

func (*HeaderOnlyBlock) Reset

func (x *HeaderOnlyBlock) Reset()

func (*HeaderOnlyBlock) String

func (x *HeaderOnlyBlock) String() string

type Log

type Log struct {
	Address []byte   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Topics  [][]byte `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"`
	Data    []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	// Index is the index of the log relative to the transaction. This index
	// is always populated regardless of the state revertion of the the call
	// that emitted this log.
	//
	// Only available in DetailLevel: EXTENDED
	Index uint32 `protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
	// BlockIndex represents the index of the log relative to the Block.
	//
	// An **important** notice is that this field will be 0 when the call
	// that emitted the log has been reverted by the chain.
	//
	// Currently, there is two locations where a Log can be obtained:
	// - block.transaction_traces[].receipt.logs[]
	// - block.transaction_traces[].calls[].logs[]
	//
	// In the `receipt` case, the logs will be populated only when the call
	// that emitted them has not been reverted by the chain and when in this
	// position, the `blockIndex` is always populated correctly.
	//
	// In the case of `calls` case, for `call` where `stateReverted == true`,
	// the `blockIndex` value will always be 0.
	BlockIndex uint32 `protobuf:"varint,6,opt,name=blockIndex,proto3" json:"blockIndex,omitempty"`
	// The block's global ordinal when the log was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,7,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*Log) Descriptor deprecated

func (*Log) Descriptor() ([]byte, []int)

Deprecated: Use Log.ProtoReflect.Descriptor instead.

func (*Log) GetAddress

func (x *Log) GetAddress() []byte

func (*Log) GetBlockIndex

func (x *Log) GetBlockIndex() uint32

func (*Log) GetData

func (x *Log) GetData() []byte

func (*Log) GetIndex

func (x *Log) GetIndex() uint32

func (*Log) GetOrdinal

func (x *Log) GetOrdinal() uint64

func (*Log) GetTopics

func (x *Log) GetTopics() [][]byte

func (*Log) ProtoMessage

func (*Log) ProtoMessage()

func (*Log) ProtoReflect

func (x *Log) ProtoReflect() protoreflect.Message

func (*Log) Reset

func (x *Log) Reset()

func (*Log) String

func (x *Log) String() string

type NonceChange

type NonceChange struct {
	Address  []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	OldValue uint64 `protobuf:"varint,2,opt,name=old_value,json=oldValue,proto3" json:"old_value,omitempty"`
	NewValue uint64 `protobuf:"varint,3,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
	// The block's global ordinal when the nonce change was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,4,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*NonceChange) Descriptor deprecated

func (*NonceChange) Descriptor() ([]byte, []int)

Deprecated: Use NonceChange.ProtoReflect.Descriptor instead.

func (*NonceChange) GetAddress

func (x *NonceChange) GetAddress() []byte

func (*NonceChange) GetNewValue

func (x *NonceChange) GetNewValue() uint64

func (*NonceChange) GetOldValue

func (x *NonceChange) GetOldValue() uint64

func (*NonceChange) GetOrdinal

func (x *NonceChange) GetOrdinal() uint64

func (*NonceChange) ProtoMessage

func (*NonceChange) ProtoMessage()

func (*NonceChange) ProtoReflect

func (x *NonceChange) ProtoReflect() protoreflect.Message

func (*NonceChange) Reset

func (x *NonceChange) Reset()

func (*NonceChange) String

func (x *NonceChange) String() string

type StorageChange

type StorageChange struct {
	Address  []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Key      []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	OldValue []byte `protobuf:"bytes,3,opt,name=old_value,json=oldValue,proto3" json:"old_value,omitempty"`
	NewValue []byte `protobuf:"bytes,4,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
	// The block's global ordinal when the storage change was recorded, refer to [Block]
	// documentation for further information about ordinals and total ordering.
	Ordinal uint64 `protobuf:"varint,5,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
	// contains filtered or unexported fields
}

func (*StorageChange) Descriptor deprecated

func (*StorageChange) Descriptor() ([]byte, []int)

Deprecated: Use StorageChange.ProtoReflect.Descriptor instead.

func (*StorageChange) GetAddress

func (x *StorageChange) GetAddress() []byte

func (*StorageChange) GetKey

func (x *StorageChange) GetKey() []byte

func (*StorageChange) GetNewValue

func (x *StorageChange) GetNewValue() []byte

func (*StorageChange) GetOldValue

func (x *StorageChange) GetOldValue() []byte

func (*StorageChange) GetOrdinal

func (x *StorageChange) GetOrdinal() uint64

func (*StorageChange) ProtoMessage

func (*StorageChange) ProtoMessage()

func (*StorageChange) ProtoReflect

func (x *StorageChange) ProtoReflect() protoreflect.Message

func (*StorageChange) Reset

func (x *StorageChange) Reset()

func (*StorageChange) String

func (x *StorageChange) String() string

type TransactionReceipt

type TransactionReceipt struct {

	// State root is an intermediate state_root hash, computed in-between transactions to make
	// **sure** you could build a proof and point to state in the middle of a block. Geth client
	// uses `PostState + root + PostStateOrStatus“ while Parity used `status_code, root...“ this piles
	// hardforks, see (read the EIPs first):
	// - https://github.com/ethereum/EIPs/blob/master/EIPS/eip-658.md
	//
	// Moreover, the notion of `Outcome“ in parity, which segregates the two concepts, which are
	// stored in the same field `status_code“ can be computed based on such a hack of the `state_root`
	// field, following `EIP-658`.
	//
	// Before Byzantinium hard fork, this field is always empty.
	StateRoot         []byte `protobuf:"bytes,1,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"`
	CumulativeGasUsed uint64 `protobuf:"varint,2,opt,name=cumulative_gas_used,json=cumulativeGasUsed,proto3" json:"cumulative_gas_used,omitempty"`
	LogsBloom         []byte `protobuf:"bytes,3,opt,name=logs_bloom,json=logsBloom,proto3" json:"logs_bloom,omitempty"`
	Logs              []*Log `protobuf:"bytes,4,rep,name=logs,proto3" json:"logs,omitempty"`
	// BlobGasUsed is the amount of blob gas that has been used within this transaction. At time
	// of writing, this is equal to `self.blob_gas_fee_cap * len(self.blob_hashes)`.
	//
	// This is specified by https://eips.ethereum.org/EIPS/eip-4844
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_BLOB` which is possible only
	// if Cancun fork is active on the chain.
	BlobGasUsed *uint64 `protobuf:"varint,5,opt,name=blob_gas_used,json=blobGasUsed,proto3,oneof" json:"blob_gas_used,omitempty"`
	// BlobGasPrice is the amount to pay per blob item in the transaction.
	//
	// This is specified by https://eips.ethereum.org/EIPS/eip-4844
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_BLOB` which is possible only
	// if Cancun fork is active on the chain.
	BlobGasPrice *BigInt `protobuf:"bytes,6,opt,name=blob_gas_price,json=blobGasPrice,proto3,oneof" json:"blob_gas_price,omitempty"`
	// contains filtered or unexported fields
}

func (*TransactionReceipt) Descriptor deprecated

func (*TransactionReceipt) Descriptor() ([]byte, []int)

Deprecated: Use TransactionReceipt.ProtoReflect.Descriptor instead.

func (*TransactionReceipt) GetBlobGasPrice

func (x *TransactionReceipt) GetBlobGasPrice() *BigInt

func (*TransactionReceipt) GetBlobGasUsed

func (x *TransactionReceipt) GetBlobGasUsed() uint64

func (*TransactionReceipt) GetCumulativeGasUsed

func (x *TransactionReceipt) GetCumulativeGasUsed() uint64

func (*TransactionReceipt) GetLogs

func (x *TransactionReceipt) GetLogs() []*Log

func (*TransactionReceipt) GetLogsBloom

func (x *TransactionReceipt) GetLogsBloom() []byte

func (*TransactionReceipt) GetStateRoot

func (x *TransactionReceipt) GetStateRoot() []byte

func (*TransactionReceipt) ProtoMessage

func (*TransactionReceipt) ProtoMessage()

func (*TransactionReceipt) ProtoReflect

func (x *TransactionReceipt) ProtoReflect() protoreflect.Message

func (*TransactionReceipt) Reset

func (x *TransactionReceipt) Reset()

func (*TransactionReceipt) String

func (x *TransactionReceipt) String() string

type TransactionRefs

type TransactionRefs struct {
	Hashes [][]byte `protobuf:"bytes,1,rep,name=hashes,proto3" json:"hashes,omitempty"`
	// contains filtered or unexported fields
}

func (*TransactionRefs) Descriptor deprecated

func (*TransactionRefs) Descriptor() ([]byte, []int)

Deprecated: Use TransactionRefs.ProtoReflect.Descriptor instead.

func (*TransactionRefs) GetHashes

func (x *TransactionRefs) GetHashes() [][]byte

func (*TransactionRefs) ProtoMessage

func (*TransactionRefs) ProtoMessage()

func (*TransactionRefs) ProtoReflect

func (x *TransactionRefs) ProtoReflect() protoreflect.Message

func (*TransactionRefs) Reset

func (x *TransactionRefs) Reset()

func (*TransactionRefs) String

func (x *TransactionRefs) String() string

type TransactionTrace

type TransactionTrace struct {

	// consensus
	To    []byte `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"`
	Nonce uint64 `protobuf:"varint,2,opt,name=nonce,proto3" json:"nonce,omitempty"`
	// GasPrice represents the effective price that has been paid for each gas unit of this transaction. Over time, the
	// Ethereum rules changes regarding GasPrice field here. Before London fork, the GasPrice was always set to the
	// fixed gas price. After London fork, this value has different meaning depending on the transaction type (see `Type` field).
	//
	// In cases where `TransactionTrace.Type == TRX_TYPE_LEGACY || TRX_TYPE_ACCESS_LIST`, then GasPrice has the same meaning
	// as before the London fork.
	//
	// In cases where `TransactionTrace.Type == TRX_TYPE_DYNAMIC_FEE`, then GasPrice is the effective gas price paid
	// for the transaction which is equals to `BlockHeader.BaseFeePerGas + TransactionTrace.`
	GasPrice *BigInt `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice,proto3" json:"gas_price,omitempty"`
	// GasLimit is the maximum of gas unit the sender of the transaction is willing to consume when perform the EVM
	// execution of the whole transaction
	GasLimit uint64 `protobuf:"varint,4,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"`
	// Value is the amount of Ether transferred as part of this transaction.
	Value *BigInt `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
	// Input data the transaction will receive for execution of EVM.
	Input []byte `protobuf:"bytes,6,opt,name=input,proto3" json:"input,omitempty"`
	// V is the recovery ID value for the signature Y point.
	V []byte `protobuf:"bytes,7,opt,name=v,proto3" json:"v,omitempty"`
	// R is the signature's X point on the elliptic curve (32 bytes).
	R []byte `protobuf:"bytes,8,opt,name=r,proto3" json:"r,omitempty"`
	// S is the signature's Y point on the elliptic curve (32 bytes).
	S []byte `protobuf:"bytes,9,opt,name=s,proto3" json:"s,omitempty"`
	// GasUsed is the total amount of gas unit used for the whole execution of the transaction.
	GasUsed uint64 `protobuf:"varint,10,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"`
	// Type represents the Ethereum transaction type, available only since EIP-2718 & EIP-2930 activation which happened on Berlin fork.
	// The value is always set even for transaction before Berlin fork because those before the fork are still legacy transactions.
	Type TransactionTrace_Type `protobuf:"varint,12,opt,name=type,proto3,enum=sf.ethereum.type.v2.TransactionTrace_Type" json:"type,omitempty"`
	// AcccessList represents the storage access this transaction has agreed to do in which case those storage
	// access cost less gas unit per access.
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_ACCESS_LIST || TRX_TYPE_DYNAMIC_FEE` which
	// is possible only if Berlin (TRX_TYPE_ACCESS_LIST) nor London (TRX_TYPE_DYNAMIC_FEE) fork are active on the chain.
	AccessList []*AccessTuple `protobuf:"bytes,14,rep,name=access_list,json=accessList,proto3" json:"access_list,omitempty"`
	// MaxFeePerGas is the maximum fee per gas the user is willing to pay for the transaction gas used.
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_DYNAMIC_FEE` which is possible only
	// if Londong fork is active on the chain.
	//
	// Only available in DetailLevel: EXTENDED
	MaxFeePerGas *BigInt `protobuf:"bytes,11,opt,name=max_fee_per_gas,json=maxFeePerGas,proto3" json:"max_fee_per_gas,omitempty"`
	// MaxPriorityFeePerGas is priority fee per gas the user to pay in extra to the miner on top of the block's
	// base fee.
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_DYNAMIC_FEE` which is possible only
	// if London fork is active on the chain.
	//
	// Only available in DetailLevel: EXTENDED
	MaxPriorityFeePerGas *BigInt `` /* 128-byte string literal not displayed */
	// meta
	Index uint32 `protobuf:"varint,20,opt,name=index,proto3" json:"index,omitempty"`
	Hash  []byte `protobuf:"bytes,21,opt,name=hash,proto3" json:"hash,omitempty"`
	From  []byte `protobuf:"bytes,22,opt,name=from,proto3" json:"from,omitempty"`
	// Only available in DetailLevel: EXTENDED
	ReturnData []byte `protobuf:"bytes,23,opt,name=return_data,json=returnData,proto3" json:"return_data,omitempty"`
	// Only available in DetailLevel: EXTENDED
	PublicKey []byte `protobuf:"bytes,24,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
	// The block's global ordinal when the transaction started executing, refer to
	// [Block] documentation for further information about ordinals and total ordering.
	BeginOrdinal uint64 `protobuf:"varint,25,opt,name=begin_ordinal,json=beginOrdinal,proto3" json:"begin_ordinal,omitempty"`
	// The block's global ordinal when the transaction finished executing, refer to
	// [Block] documentation for further information about ordinals and total ordering.
	EndOrdinal uint64 `protobuf:"varint,26,opt,name=end_ordinal,json=endOrdinal,proto3" json:"end_ordinal,omitempty"`
	// TransactionTraceStatus is the status of the transaction execution and will let you know if the transaction
	// was successful or not.
	//
	// ## Explanation relevant only for blocks with `DetailLevel: EXTENDED`
	//
	// A successful transaction has been recorded to the blockchain's state for calls in it that were successful.
	// This means it's possible only a subset of the calls were properly recorded, refer to [calls[].state_reverted] field
	// to determine which calls were reverted.
	//
	// A quirks of the Ethereum protocol is that a transaction `FAILED` or `REVERTED` still affects the blockchain's
	// state for **some** of the state changes. Indeed, in those cases, the transactions fees are still paid to the miner
	// which means there is a balance change for the transaction's emitter (e.g. `from`) to pay the gas fees, an optional
	// balance change for gas refunded to the transaction's emitter (e.g. `from`) and a balance change for the miner who
	// received the transaction fees. There is also a nonce change for the transaction's emitter (e.g. `from`).
	//
	// This means that to properly record the state changes for a transaction, you need to conditionally procees the
	// transaction's status.
	//
	// For a `SUCCEEDED` transaction, you iterate over the `calls` array and record the state changes for each call for
	// which `state_reverted == false` (if a transaction succeeded, the call at #0 will always `state_reverted == false`
	// because it aligns with the transaction).
	//
	// For a `FAILED` or `REVERTED` transaction, you iterate over the root call (e.g. at #0, will always exist) for
	// balance changes you process those where `reason` is either `REASON_GAS_BUY`, `REASON_GAS_REFUND` or
	// `REASON_REWARD_TRANSACTION_FEE` and for nonce change, still on the root call, you pick the nonce change which the
	// smallest ordinal (if more than one).
	Status  TransactionTraceStatus `protobuf:"varint,30,opt,name=status,proto3,enum=sf.ethereum.type.v2.TransactionTraceStatus" json:"status,omitempty"`
	Receipt *TransactionReceipt    `protobuf:"bytes,31,opt,name=receipt,proto3" json:"receipt,omitempty"`
	// Only available in DetailLevel: EXTENDED
	Calls []*Call `protobuf:"bytes,32,rep,name=calls,proto3" json:"calls,omitempty"`
	// BlobGas is the amount of gas the transaction is going to pay for the blobs, this is a computed value
	// equivalent to `self.blob_gas_fee_cap * len(self.blob_hashes)` and provided in the model for convenience.
	//
	// This is specified by https://eips.ethereum.org/EIPS/eip-4844
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_BLOB` which is possible only
	// if Cancun fork is active on the chain.
	BlobGas *uint64 `protobuf:"varint,33,opt,name=blob_gas,json=blobGas,proto3,oneof" json:"blob_gas,omitempty"`
	// BlobGasFeeCap is the maximum fee per data gas the user is willing to pay for the data gas used.
	//
	// This is specified by https://eips.ethereum.org/EIPS/eip-4844
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_BLOB` which is possible only
	// if Cancun fork is active on the chain.
	BlobGasFeeCap *BigInt `protobuf:"bytes,34,opt,name=blob_gas_fee_cap,json=blobGasFeeCap,proto3,oneof" json:"blob_gas_fee_cap,omitempty"`
	// BlobHashes field represents a list of hash outputs from 'kzg_to_versioned_hash' which
	// essentially is a version byte + the sha256 hash of the blob commitment (e.g.
	// `BLOB_COMMITMENT_VERSION_KZG + sha256(commitment)[1:]`.
	//
	// This is specified by https://eips.ethereum.org/EIPS/eip-4844
	//
	// This will is populated only if `TransactionTrace.Type == TRX_TYPE_BLOB` which is possible only
	// if Cancun fork is active on the chain.
	BlobHashes [][]byte `protobuf:"bytes,35,rep,name=blob_hashes,json=blobHashes,proto3" json:"blob_hashes,omitempty"`
	// contains filtered or unexported fields
}

TransactionTrace is full trace of execution of the transaction when the it actually executed on chain.

It contains all the transaction details like `from`, `to`, `gas`, etc. as well as all the internal calls that were made during the transaction.

The `calls` vector contains Call objects which have balance changes, events storage changes, etc.

If ordering is important between elements, almost each message like `Log`, `Call`, `StorageChange`, etc. have an ordinal field that is represents "execution" order of the said element against all other elements in this block.

Due to how the call tree works doing "naively", looping through all calls then through a Call's element like `logs` while not yielding the elements in the order they were executed on chain. A log in call could have been done before or after another in another call depending on the actual call tree.

The `calls` are ordered by creation order and the call tree can be re-computing using fields found in `Call` object (parent/child relationship).

Another important thing to note is that even if a transaction succeed, some calls within it could have been reverted internally, if this is important to you, you must check the field `state_reverted` on the `Call` to determine if it was fully committed to the chain or not.

func (*TransactionTrace) Descriptor deprecated

func (*TransactionTrace) Descriptor() ([]byte, []int)

Deprecated: Use TransactionTrace.ProtoReflect.Descriptor instead.

func (*TransactionTrace) GetAccessList

func (x *TransactionTrace) GetAccessList() []*AccessTuple

func (*TransactionTrace) GetBeginOrdinal

func (x *TransactionTrace) GetBeginOrdinal() uint64

func (*TransactionTrace) GetBlobGas

func (x *TransactionTrace) GetBlobGas() uint64

func (*TransactionTrace) GetBlobGasFeeCap

func (x *TransactionTrace) GetBlobGasFeeCap() *BigInt

func (*TransactionTrace) GetBlobHashes

func (x *TransactionTrace) GetBlobHashes() [][]byte

func (*TransactionTrace) GetCalls

func (x *TransactionTrace) GetCalls() []*Call

func (*TransactionTrace) GetEndOrdinal

func (x *TransactionTrace) GetEndOrdinal() uint64

func (*TransactionTrace) GetFrom

func (x *TransactionTrace) GetFrom() []byte

func (*TransactionTrace) GetGasLimit

func (x *TransactionTrace) GetGasLimit() uint64

func (*TransactionTrace) GetGasPrice

func (x *TransactionTrace) GetGasPrice() *BigInt

func (*TransactionTrace) GetGasUsed

func (x *TransactionTrace) GetGasUsed() uint64

func (*TransactionTrace) GetHash

func (x *TransactionTrace) GetHash() []byte

func (*TransactionTrace) GetIndex

func (x *TransactionTrace) GetIndex() uint32

func (*TransactionTrace) GetInput

func (x *TransactionTrace) GetInput() []byte

func (*TransactionTrace) GetMaxFeePerGas

func (x *TransactionTrace) GetMaxFeePerGas() *BigInt

func (*TransactionTrace) GetMaxPriorityFeePerGas

func (x *TransactionTrace) GetMaxPriorityFeePerGas() *BigInt

func (*TransactionTrace) GetNonce

func (x *TransactionTrace) GetNonce() uint64

func (*TransactionTrace) GetPublicKey

func (x *TransactionTrace) GetPublicKey() []byte

func (*TransactionTrace) GetR

func (x *TransactionTrace) GetR() []byte

func (*TransactionTrace) GetReceipt

func (x *TransactionTrace) GetReceipt() *TransactionReceipt

func (*TransactionTrace) GetReturnData

func (x *TransactionTrace) GetReturnData() []byte

func (*TransactionTrace) GetS

func (x *TransactionTrace) GetS() []byte

func (*TransactionTrace) GetStatus

func (*TransactionTrace) GetTo

func (x *TransactionTrace) GetTo() []byte

func (*TransactionTrace) GetType

func (*TransactionTrace) GetV

func (x *TransactionTrace) GetV() []byte

func (*TransactionTrace) GetValue

func (x *TransactionTrace) GetValue() *BigInt

func (*TransactionTrace) ProtoMessage

func (*TransactionTrace) ProtoMessage()

func (*TransactionTrace) ProtoReflect

func (x *TransactionTrace) ProtoReflect() protoreflect.Message

func (*TransactionTrace) Reset

func (x *TransactionTrace) Reset()

func (*TransactionTrace) String

func (x *TransactionTrace) String() string

type TransactionTraceStatus

type TransactionTraceStatus int32
const (
	TransactionTraceStatus_UNKNOWN   TransactionTraceStatus = 0
	TransactionTraceStatus_SUCCEEDED TransactionTraceStatus = 1
	TransactionTraceStatus_FAILED    TransactionTraceStatus = 2
	TransactionTraceStatus_REVERTED  TransactionTraceStatus = 3
)

func (TransactionTraceStatus) Descriptor

func (TransactionTraceStatus) Enum

func (TransactionTraceStatus) EnumDescriptor deprecated

func (TransactionTraceStatus) EnumDescriptor() ([]byte, []int)

Deprecated: Use TransactionTraceStatus.Descriptor instead.

func (TransactionTraceStatus) Number

func (TransactionTraceStatus) String

func (x TransactionTraceStatus) String() string

func (TransactionTraceStatus) Type

type TransactionTraceWithBlockRef

type TransactionTraceWithBlockRef struct {
	Trace    *TransactionTrace `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"`
	BlockRef *BlockRef         `protobuf:"bytes,2,opt,name=block_ref,json=blockRef,proto3" json:"block_ref,omitempty"`
	// contains filtered or unexported fields
}

func (*TransactionTraceWithBlockRef) Descriptor deprecated

func (*TransactionTraceWithBlockRef) Descriptor() ([]byte, []int)

Deprecated: Use TransactionTraceWithBlockRef.ProtoReflect.Descriptor instead.

func (*TransactionTraceWithBlockRef) GetBlockRef

func (x *TransactionTraceWithBlockRef) GetBlockRef() *BlockRef

func (*TransactionTraceWithBlockRef) GetTrace

func (*TransactionTraceWithBlockRef) ProtoMessage

func (*TransactionTraceWithBlockRef) ProtoMessage()

func (*TransactionTraceWithBlockRef) ProtoReflect

func (*TransactionTraceWithBlockRef) Reset

func (x *TransactionTraceWithBlockRef) Reset()

func (*TransactionTraceWithBlockRef) String

type TransactionTrace_Type

type TransactionTrace_Type int32
const (
	// All transactions that ever existed prior Berlin fork before EIP-2718 was implemented.
	TransactionTrace_TRX_TYPE_LEGACY TransactionTrace_Type = 0
	// Transaction that specicy an access list of contract/storage_keys that is going to be used
	// in this transaction.
	//
	// Added in Berlin fork (EIP-2930).
	TransactionTrace_TRX_TYPE_ACCESS_LIST TransactionTrace_Type = 1
	// Transaction that specifis an access list just like TRX_TYPE_ACCESS_LIST but in addition defines the
	// max base gas gee and max priority gas fee to pay for this transaction. Transaction's of those type are
	// executed against EIP-1559 rules which dictates a dynamic gas cost based on the congestion of the network.
	TransactionTrace_TRX_TYPE_DYNAMIC_FEE TransactionTrace_Type = 2
	// Transaction which contain a large amount of data that cannot be accessed by EVM execution, but whose commitment
	// can be accessed. The format is intended to be fully compatible with the format that will be used in full sharding.
	//
	// Transaction that defines specifis an access list just like TRX_TYPE_ACCESS_LIST and enables dynamic fee just like
	// TRX_TYPE_DYNAMIC_FEE but in addition defines the fields 'max_fee_per_data_gas' of type 'uint256' and the fields
	// 'blob_versioned_hashes' field represents a list of hash outputs from 'kzg_to_versioned_hash'.
	//
	// Activated in Dencun
	TransactionTrace_TRX_TYPE_BLOB TransactionTrace_Type = 3
	// Arbitrum-specific transactions
	TransactionTrace_TRX_TYPE_ARBITRUM_DEPOSIT          TransactionTrace_Type = 100
	TransactionTrace_TRX_TYPE_ARBITRUM_UNSIGNED         TransactionTrace_Type = 101
	TransactionTrace_TRX_TYPE_ARBITRUM_CONTRACT         TransactionTrace_Type = 102
	TransactionTrace_TRX_TYPE_ARBITRUM_RETRY            TransactionTrace_Type = 104
	TransactionTrace_TRX_TYPE_ARBITRUM_SUBMIT_RETRYABLE TransactionTrace_Type = 105
	TransactionTrace_TRX_TYPE_ARBITRUM_INTERNAL         TransactionTrace_Type = 106
	TransactionTrace_TRX_TYPE_ARBITRUM_LEGACY           TransactionTrace_Type = 120
)

func (TransactionTrace_Type) Descriptor

func (TransactionTrace_Type) Enum

func (TransactionTrace_Type) EnumDescriptor deprecated

func (TransactionTrace_Type) EnumDescriptor() ([]byte, []int)

Deprecated: Use TransactionTrace_Type.Descriptor instead.

func (TransactionTrace_Type) Number

func (TransactionTrace_Type) String

func (x TransactionTrace_Type) String() string

func (TransactionTrace_Type) Type

type Uint64Array

type Uint64Array struct {
	Val []uint64 `protobuf:"varint,1,rep,packed,name=val,proto3" json:"val,omitempty"`
	// contains filtered or unexported fields
}

func (*Uint64Array) Descriptor deprecated

func (*Uint64Array) Descriptor() ([]byte, []int)

Deprecated: Use Uint64Array.ProtoReflect.Descriptor instead.

func (*Uint64Array) GetVal

func (x *Uint64Array) GetVal() []uint64

func (*Uint64Array) ProtoMessage

func (*Uint64Array) ProtoMessage()

func (*Uint64Array) ProtoReflect

func (x *Uint64Array) ProtoReflect() protoreflect.Message

func (*Uint64Array) Reset

func (x *Uint64Array) Reset()

func (*Uint64Array) String

func (x *Uint64Array) String() string

type Uint64NestedArray

type Uint64NestedArray struct {
	Val []*Uint64Array `protobuf:"bytes,1,rep,name=val,proto3" json:"val,omitempty"`
	// contains filtered or unexported fields
}

func NewUint64NestedArray

func NewUint64NestedArray(in [][]uint64) *Uint64NestedArray

func (*Uint64NestedArray) Descriptor deprecated

func (*Uint64NestedArray) Descriptor() ([]byte, []int)

Deprecated: Use Uint64NestedArray.ProtoReflect.Descriptor instead.

func (*Uint64NestedArray) GetVal

func (x *Uint64NestedArray) GetVal() []*Uint64Array

func (*Uint64NestedArray) MarshalJSON

func (a *Uint64NestedArray) MarshalJSON() ([]byte, error)

func (*Uint64NestedArray) ProtoMessage

func (*Uint64NestedArray) ProtoMessage()

func (*Uint64NestedArray) ProtoReflect

func (x *Uint64NestedArray) ProtoReflect() protoreflect.Message

func (*Uint64NestedArray) Reset

func (x *Uint64NestedArray) Reset()

func (*Uint64NestedArray) String

func (x *Uint64NestedArray) String() string

func (*Uint64NestedArray) ToNative

func (a *Uint64NestedArray) ToNative() (out [][]uint64)

func (*Uint64NestedArray) UnmarshalJSON

func (a *Uint64NestedArray) UnmarshalJSON(in []byte) (err error)

Jump to

Keyboard shortcuts

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