ethereum

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2024 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_blockchain_ethereum_ethereum_index_types_proto protoreflect.FileDescriptor

Functions

func ToEntireBlocksBatchFromLogProto

func ToEntireBlocksBatchFromLogProto(obj *EthereumBlocksBatch) *seer_common.BlocksBatchJson

func ToEvenFromLogProto

func ToEvenFromLogProto(obj *EthereumEventLog) *seer_common.EventJson

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(url string, timeout int) (*Client, error)

func (*Client) BlockByHash

func (c *Client) BlockByHash(ctx context.Context, hash common.Hash) (*seer_common.BlockJson, error)

BlockByHash returns the block with the given hash.

func (*Client) ChainType

func (c *Client) ChainType() string

ChainType returns the chain type.

func (*Client) ClientFilterLogs

func (c *Client) ClientFilterLogs(ctx context.Context, q ethereum.FilterQuery, debug bool) ([]*seer_common.EventJson, error)

func (*Client) Close

func (c *Client) Close()

Close closes the underlying RPC client.

func (*Client) DecodeProtoBlocks

func (c *Client) DecodeProtoBlocks(data []string) ([]*EthereumBlock, error)

func (*Client) DecodeProtoEntireBlockToJson

func (c *Client) DecodeProtoEntireBlockToJson(rawData *bytes.Buffer) (*seer_common.BlocksBatchJson, error)

func (*Client) DecodeProtoEntireBlockToLabels

func (c *Client) DecodeProtoEntireBlockToLabels(rawData *bytes.Buffer, abiMap map[string]map[string]*indexer.AbiEntry, threads int) ([]indexer.EventLabel, []indexer.TransactionLabel, error)

func (*Client) DecodeProtoEventLogs

func (c *Client) DecodeProtoEventLogs(data []string) ([]*EthereumEventLog, error)

func (*Client) DecodeProtoTransactions

func (c *Client) DecodeProtoTransactions(data []string) ([]*EthereumTransaction, error)

func (*Client) DecodeProtoTransactionsToLabels

func (c *Client) DecodeProtoTransactionsToLabels(transactions []string, blocksCache map[uint64]uint64, abiMap map[string]map[string]*indexer.AbiEntry) ([]indexer.TransactionLabel, error)

func (*Client) FetchAsProtoBlocksWithEvents

func (c *Client) FetchAsProtoBlocksWithEvents(from, to *big.Int, debug bool, maxRequests int) ([]proto.Message, []indexer.BlockIndex, uint64, error)

func (*Client) FetchBlocksInRange

func (c *Client) FetchBlocksInRange(from, to *big.Int, debug bool) ([]*seer_common.BlockJson, error)

FetchBlocksInRange fetches blocks within a specified range. This could be useful for batch processing or analysis.

func (*Client) FetchBlocksInRangeAsync

func (c *Client) FetchBlocksInRangeAsync(from, to *big.Int, debug bool, maxRequests int) ([]*seer_common.BlockJson, error)

FetchBlocksInRangeAsync fetches blocks within a specified range concurrently.

func (*Client) GetBlockByNumber

func (c *Client) GetBlockByNumber(ctx context.Context, number *big.Int, withTransactions bool) (*seer_common.BlockJson, error)

GetBlockByNumber returns the block with the given number.

func (*Client) GetCode

func (c *Client) GetCode(ctx context.Context, address common.Address, blockNumber uint64) ([]byte, error)

Get bytecode of a contract by address.

func (*Client) GetEventsLabels

func (c *Client) GetEventsLabels(startBlock uint64, endBlock uint64, abiMap map[string]map[string]*indexer.AbiEntry, blocksCache map[uint64]seer_common.BlockWithTransactions) ([]indexer.EventLabel, error)

func (*Client) GetLatestBlockNumber

func (c *Client) GetLatestBlockNumber() (*big.Int, error)

GetLatestBlockNumber returns the latest block number.

func (*Client) GetTransactionByHash

func (c *Client) GetTransactionByHash(ctx context.Context, hash string) (*seer_common.TransactionJson, error)

func (*Client) GetTransactionsLabels

func (c *Client) GetTransactionsLabels(startBlock uint64, endBlock uint64, abiMap map[string]map[string]*indexer.AbiEntry, threads int) ([]indexer.TransactionLabel, map[uint64]seer_common.BlockWithTransactions, error)

func (*Client) ParseBlocksWithTransactions

func (c *Client) ParseBlocksWithTransactions(from, to *big.Int, debug bool, maxRequests int) ([]*EthereumBlock, error)

ParseBlocksWithTransactions parses blocks and their transactions into custom data structure. This method showcases how to handle and transform detailed block and transaction data.

func (*Client) ParseEvents

func (c *Client) ParseEvents(from, to *big.Int, blocksCache map[uint64]indexer.BlockCache, debug bool) ([]*EthereumEventLog, error)

func (*Client) ProcessBlocksToBatch

func (c *Client) ProcessBlocksToBatch(msgs []proto.Message) (proto.Message, error)

func (*Client) TransactionReceipt

func (c *Client) TransactionReceipt(ctx context.Context, hash common.Hash) (*types.Receipt, error)

TransactionReceipt returns the receipt of a transaction by transaction hash.

type EthereumBlock

type EthereumBlock struct {
	BlockNumber      uint64                 `protobuf:"varint,1,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"`
	Difficulty       uint64                 `protobuf:"varint,2,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	ExtraData        string                 `protobuf:"bytes,3,opt,name=extra_data,json=extraData,proto3" json:"extra_data,omitempty"`
	GasLimit         uint64                 `protobuf:"varint,4,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"`
	GasUsed          uint64                 `protobuf:"varint,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"`
	BaseFeePerGas    string                 `protobuf:"bytes,6,opt,name=base_fee_per_gas,json=baseFeePerGas,proto3" json:"base_fee_per_gas,omitempty"` // using string to handle big numeric values
	Hash             string                 `protobuf:"bytes,7,opt,name=hash,proto3" json:"hash,omitempty"`
	LogsBloom        string                 `protobuf:"bytes,8,opt,name=logs_bloom,json=logsBloom,proto3" json:"logs_bloom,omitempty"`
	Miner            string                 `protobuf:"bytes,9,opt,name=miner,proto3" json:"miner,omitempty"`
	Nonce            string                 `protobuf:"bytes,10,opt,name=nonce,proto3" json:"nonce,omitempty"`
	ParentHash       string                 `protobuf:"bytes,11,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"`
	ReceiptsRoot     string                 `protobuf:"bytes,12,opt,name=receipts_root,json=receiptsRoot,proto3" json:"receipts_root,omitempty"`
	Sha3Uncles       string                 `protobuf:"bytes,13,opt,name=sha3_uncles,json=sha3Uncles,proto3" json:"sha3_uncles,omitempty"`
	Size             uint64                 `protobuf:"varint,14,opt,name=size,proto3" json:"size,omitempty"`
	StateRoot        string                 `protobuf:"bytes,15,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"`
	Timestamp        uint64                 `protobuf:"varint,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	TotalDifficulty  string                 `protobuf:"bytes,17,opt,name=total_difficulty,json=totalDifficulty,proto3" json:"total_difficulty,omitempty"`
	TransactionsRoot string                 `protobuf:"bytes,18,opt,name=transactions_root,json=transactionsRoot,proto3" json:"transactions_root,omitempty"`
	IndexedAt        uint64                 `protobuf:"varint,19,opt,name=indexed_at,json=indexedAt,proto3" json:"indexed_at,omitempty"` // using uint64 to represent timestamp
	Transactions     []*EthereumTransaction `protobuf:"bytes,20,rep,name=transactions,proto3" json:"transactions,omitempty"`
	// contains filtered or unexported fields
}

Represents a single blockchain block

func ToProtoSingleBlock

func ToProtoSingleBlock(obj *seer_common.BlockJson) *EthereumBlock

func (*EthereumBlock) Descriptor deprecated

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

Deprecated: Use EthereumBlock.ProtoReflect.Descriptor instead.

func (*EthereumBlock) GetBaseFeePerGas

func (x *EthereumBlock) GetBaseFeePerGas() string

func (*EthereumBlock) GetBlockNumber

func (x *EthereumBlock) GetBlockNumber() uint64

func (*EthereumBlock) GetDifficulty

func (x *EthereumBlock) GetDifficulty() uint64

func (*EthereumBlock) GetExtraData

func (x *EthereumBlock) GetExtraData() string

func (*EthereumBlock) GetGasLimit

func (x *EthereumBlock) GetGasLimit() uint64

func (*EthereumBlock) GetGasUsed

func (x *EthereumBlock) GetGasUsed() uint64

func (*EthereumBlock) GetHash

func (x *EthereumBlock) GetHash() string

func (*EthereumBlock) GetIndexedAt

func (x *EthereumBlock) GetIndexedAt() uint64

func (*EthereumBlock) GetLogsBloom

func (x *EthereumBlock) GetLogsBloom() string

func (*EthereumBlock) GetMiner

func (x *EthereumBlock) GetMiner() string

func (*EthereumBlock) GetNonce

func (x *EthereumBlock) GetNonce() string

func (*EthereumBlock) GetParentHash

func (x *EthereumBlock) GetParentHash() string

func (*EthereumBlock) GetReceiptsRoot

func (x *EthereumBlock) GetReceiptsRoot() string

func (*EthereumBlock) GetSha3Uncles

func (x *EthereumBlock) GetSha3Uncles() string

func (*EthereumBlock) GetSize

func (x *EthereumBlock) GetSize() uint64

func (*EthereumBlock) GetStateRoot

func (x *EthereumBlock) GetStateRoot() string

func (*EthereumBlock) GetTimestamp

func (x *EthereumBlock) GetTimestamp() uint64

func (*EthereumBlock) GetTotalDifficulty

func (x *EthereumBlock) GetTotalDifficulty() string

func (*EthereumBlock) GetTransactions

func (x *EthereumBlock) GetTransactions() []*EthereumTransaction

func (*EthereumBlock) GetTransactionsRoot

func (x *EthereumBlock) GetTransactionsRoot() string

func (*EthereumBlock) ProtoMessage

func (*EthereumBlock) ProtoMessage()

func (*EthereumBlock) ProtoReflect

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

func (*EthereumBlock) Reset

func (x *EthereumBlock) Reset()

func (*EthereumBlock) String

func (x *EthereumBlock) String() string

type EthereumBlocksBatch

type EthereumBlocksBatch struct {
	Blocks      []*EthereumBlock `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"`
	SeerVersion string           `protobuf:"bytes,2,opt,name=seer_version,json=seerVersion,proto3" json:"seer_version,omitempty"`
	// contains filtered or unexported fields
}

func (*EthereumBlocksBatch) Descriptor deprecated

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

Deprecated: Use EthereumBlocksBatch.ProtoReflect.Descriptor instead.

func (*EthereumBlocksBatch) GetBlocks

func (x *EthereumBlocksBatch) GetBlocks() []*EthereumBlock

func (*EthereumBlocksBatch) GetSeerVersion

func (x *EthereumBlocksBatch) GetSeerVersion() string

func (*EthereumBlocksBatch) ProtoMessage

func (*EthereumBlocksBatch) ProtoMessage()

func (*EthereumBlocksBatch) ProtoReflect

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

func (*EthereumBlocksBatch) Reset

func (x *EthereumBlocksBatch) Reset()

func (*EthereumBlocksBatch) String

func (x *EthereumBlocksBatch) String() string

type EthereumEventLog

type EthereumEventLog struct {
	Address          string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`                                            // The address of the contract that generated the log
	Topics           []string `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"`                                              // Topics are indexed parameters during log generation
	Data             string   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                                                  // The data field from the log
	BlockNumber      uint64   `protobuf:"varint,4,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"`                // The block number where this log was in
	TransactionHash  string   `protobuf:"bytes,5,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"`     // The hash of the transaction that generated this log
	BlockHash        string   `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`                       // The hash of the block where this log was in
	Removed          bool     `protobuf:"varint,7,opt,name=removed,proto3" json:"removed,omitempty"`                                           // True if the log was reverted due to a chain reorganization
	LogIndex         uint64   `protobuf:"varint,8,opt,name=log_index,json=logIndex,proto3" json:"log_index,omitempty"`                         // The index of the log in the block
	TransactionIndex uint64   `protobuf:"varint,9,opt,name=transaction_index,json=transactionIndex,proto3" json:"transaction_index,omitempty"` // The index of the transaction in the block
	// contains filtered or unexported fields
}

func ToProtoSingleEventLog

func ToProtoSingleEventLog(obj *seer_common.EventJson) *EthereumEventLog

func (*EthereumEventLog) Descriptor deprecated

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

Deprecated: Use EthereumEventLog.ProtoReflect.Descriptor instead.

func (*EthereumEventLog) GetAddress

func (x *EthereumEventLog) GetAddress() string

func (*EthereumEventLog) GetBlockHash

func (x *EthereumEventLog) GetBlockHash() string

func (*EthereumEventLog) GetBlockNumber

func (x *EthereumEventLog) GetBlockNumber() uint64

func (*EthereumEventLog) GetData

func (x *EthereumEventLog) GetData() string

func (*EthereumEventLog) GetLogIndex

func (x *EthereumEventLog) GetLogIndex() uint64

func (*EthereumEventLog) GetRemoved

func (x *EthereumEventLog) GetRemoved() bool

func (*EthereumEventLog) GetTopics

func (x *EthereumEventLog) GetTopics() []string

func (*EthereumEventLog) GetTransactionHash

func (x *EthereumEventLog) GetTransactionHash() string

func (*EthereumEventLog) GetTransactionIndex

func (x *EthereumEventLog) GetTransactionIndex() uint64

func (*EthereumEventLog) ProtoMessage

func (*EthereumEventLog) ProtoMessage()

func (*EthereumEventLog) ProtoReflect

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

func (*EthereumEventLog) Reset

func (x *EthereumEventLog) Reset()

func (*EthereumEventLog) String

func (x *EthereumEventLog) String() string

type EthereumTransaction

type EthereumTransaction struct {
	Hash                 string                           `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
	BlockNumber          uint64                           `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"`
	FromAddress          string                           `protobuf:"bytes,3,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"`
	ToAddress            string                           `protobuf:"bytes,4,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"`
	Gas                  string                           `protobuf:"bytes,5,opt,name=gas,proto3" json:"gas,omitempty"` // using string to handle big numeric values
	GasPrice             string                           `protobuf:"bytes,6,opt,name=gas_price,json=gasPrice,proto3" json:"gas_price,omitempty"`
	MaxFeePerGas         string                           `protobuf:"bytes,7,opt,name=max_fee_per_gas,json=maxFeePerGas,proto3" json:"max_fee_per_gas,omitempty"`
	MaxPriorityFeePerGas string                           ``                                                                /* 127-byte string literal not displayed */
	Input                string                           `protobuf:"bytes,9,opt,name=input,proto3" json:"input,omitempty"` // could be a long text
	Nonce                string                           `protobuf:"bytes,10,opt,name=nonce,proto3" json:"nonce,omitempty"`
	TransactionIndex     uint64                           `protobuf:"varint,11,opt,name=transaction_index,json=transactionIndex,proto3" json:"transaction_index,omitempty"`
	TransactionType      uint64                           `protobuf:"varint,12,opt,name=transaction_type,json=transactionType,proto3" json:"transaction_type,omitempty"`
	Value                string                           `protobuf:"bytes,13,opt,name=value,proto3" json:"value,omitempty"`                                          // using string to handle big numeric values
	IndexedAt            uint64                           `protobuf:"varint,14,opt,name=indexed_at,json=indexedAt,proto3" json:"indexed_at,omitempty"`                // using uint64 to represent timestamp
	BlockTimestamp       uint64                           `protobuf:"varint,15,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` // using uint64 to represent timestam
	BlockHash            string                           `protobuf:"bytes,16,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`                 // Added field for block hash
	ChainId              string                           `protobuf:"bytes,17,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`                       // Used as a field to match potential EIP-1559 transaction types
	V                    string                           `protobuf:"bytes,18,opt,name=v,proto3" json:"v,omitempty"`                                                  // Used as a field to match potential EIP-1559 transaction types
	R                    string                           `protobuf:"bytes,19,opt,name=r,proto3" json:"r,omitempty"`                                                  // Used as a field to match potential EIP-1559 transaction types
	S                    string                           `protobuf:"bytes,20,opt,name=s,proto3" json:"s,omitempty"`                                                  // Used as a field to match potential EIP-1559 transaction types
	AccessList           []*EthereumTransactionAccessList `protobuf:"bytes,21,rep,name=access_list,json=accessList,proto3" json:"access_list,omitempty"`
	YParity              string                           `protobuf:"bytes,22,opt,name=y_parity,json=yParity,proto3" json:"y_parity,omitempty"` // Used as a field to match potential EIP-1559 transaction types
	Logs                 []*EthereumEventLog              `protobuf:"bytes,23,rep,name=logs,proto3" json:"logs,omitempty"`                      // The logs generated by this transaction
	// contains filtered or unexported fields
}

Represents a single transaction within a block

func ToProtoSingleTransaction

func ToProtoSingleTransaction(obj *seer_common.TransactionJson) *EthereumTransaction

func (*EthereumTransaction) Descriptor deprecated

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

Deprecated: Use EthereumTransaction.ProtoReflect.Descriptor instead.

func (*EthereumTransaction) GetAccessList

func (x *EthereumTransaction) GetAccessList() []*EthereumTransactionAccessList

func (*EthereumTransaction) GetBlockHash

func (x *EthereumTransaction) GetBlockHash() string

func (*EthereumTransaction) GetBlockNumber

func (x *EthereumTransaction) GetBlockNumber() uint64

func (*EthereumTransaction) GetBlockTimestamp

func (x *EthereumTransaction) GetBlockTimestamp() uint64

func (*EthereumTransaction) GetChainId

func (x *EthereumTransaction) GetChainId() string

func (*EthereumTransaction) GetFromAddress

func (x *EthereumTransaction) GetFromAddress() string

func (*EthereumTransaction) GetGas

func (x *EthereumTransaction) GetGas() string

func (*EthereumTransaction) GetGasPrice

func (x *EthereumTransaction) GetGasPrice() string

func (*EthereumTransaction) GetHash

func (x *EthereumTransaction) GetHash() string

func (*EthereumTransaction) GetIndexedAt

func (x *EthereumTransaction) GetIndexedAt() uint64

func (*EthereumTransaction) GetInput

func (x *EthereumTransaction) GetInput() string

func (*EthereumTransaction) GetLogs

func (x *EthereumTransaction) GetLogs() []*EthereumEventLog

func (*EthereumTransaction) GetMaxFeePerGas

func (x *EthereumTransaction) GetMaxFeePerGas() string

func (*EthereumTransaction) GetMaxPriorityFeePerGas

func (x *EthereumTransaction) GetMaxPriorityFeePerGas() string

func (*EthereumTransaction) GetNonce

func (x *EthereumTransaction) GetNonce() string

func (*EthereumTransaction) GetR

func (x *EthereumTransaction) GetR() string

func (*EthereumTransaction) GetS

func (x *EthereumTransaction) GetS() string

func (*EthereumTransaction) GetToAddress

func (x *EthereumTransaction) GetToAddress() string

func (*EthereumTransaction) GetTransactionIndex

func (x *EthereumTransaction) GetTransactionIndex() uint64

func (*EthereumTransaction) GetTransactionType

func (x *EthereumTransaction) GetTransactionType() uint64

func (*EthereumTransaction) GetV

func (x *EthereumTransaction) GetV() string

func (*EthereumTransaction) GetValue

func (x *EthereumTransaction) GetValue() string

func (*EthereumTransaction) GetYParity

func (x *EthereumTransaction) GetYParity() string

func (*EthereumTransaction) ProtoMessage

func (*EthereumTransaction) ProtoMessage()

func (*EthereumTransaction) ProtoReflect

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

func (*EthereumTransaction) Reset

func (x *EthereumTransaction) Reset()

func (*EthereumTransaction) String

func (x *EthereumTransaction) String() string

type EthereumTransactionAccessList

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

func (*EthereumTransactionAccessList) Descriptor deprecated

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

Deprecated: Use EthereumTransactionAccessList.ProtoReflect.Descriptor instead.

func (*EthereumTransactionAccessList) GetAddress

func (x *EthereumTransactionAccessList) GetAddress() string

func (*EthereumTransactionAccessList) GetStorageKeys

func (x *EthereumTransactionAccessList) GetStorageKeys() []string

func (*EthereumTransactionAccessList) ProtoMessage

func (*EthereumTransactionAccessList) ProtoMessage()

func (*EthereumTransactionAccessList) ProtoReflect

func (*EthereumTransactionAccessList) Reset

func (x *EthereumTransactionAccessList) Reset()

func (*EthereumTransactionAccessList) String

Jump to

Keyboard shortcuts

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