Documentation
¶
Index ¶
- Constants
- Variables
- func DecodeGlobalIndex(globalIndex *big.Int) (mainnetFlag bool, rollupIndex uint32, localExitRootIndex uint32, err error)
- func ExtractFromAddrFromCalls(foundCalls []*Call, logEvent *agglayerbridge.AgglayerbridgeBridgeEvent) (common.Address, error)
- func ExtractParamFromCallData(callData []byte) (*bridgeCallParams, error)
- func ExtractTxnAddresses(ctx context.Context, client aggkittypes.EthClienter, bridgeAddr common.Address, ...) (txnSender common.Address, fromAddr *common.Address, toAddr common.Address, ...)
- func GenerateGlobalIndex(mainnetFlag bool, rollupIndex uint32, depositCount uint32) *big.Int
- func GenerateGlobalIndexForNetworkID(networkID uint32, depositCount uint32) *big.Int
- type BackfillTxnSender
- type BackwardLET
- type Bridge
- type BridgeDeployment
- type BridgeSource
- type BridgeSync
- func (s *BridgeSync) GetBlockByLER(ctx context.Context, ler common.Hash) (uint64, error)
- func (s *BridgeSync) GetBridgeByDepositCount(ctx context.Context, depositCount uint32) (*Bridge, error)
- func (s *BridgeSync) GetBridges(ctx context.Context, fromBlock, toBlock uint64) ([]Bridge, error)
- func (s *BridgeSync) GetBridgesByContent(ctx context.Context, leafType uint8, originAddress common.Address, ...) ([]*Bridge, error)
- func (s *BridgeSync) GetBridgesPaged(ctx context.Context, page, pageSize uint32, depositCount *uint64, ...) ([]*Bridge, int, error)
- func (s *BridgeSync) GetContractDepositCount(ctx context.Context) (uint32, error)
- func (s *BridgeSync) GetExitRootByHash(ctx context.Context, root common.Hash) (*tree.Root, error)
- func (s *BridgeSync) GetExitRootByIndex(ctx context.Context, index uint32) (tree.Root, error)
- func (s *BridgeSync) GetLastProcessedBlock(ctx context.Context) (uint64, bool, error)
- func (s *BridgeSync) GetLastReorgEvent(ctx context.Context) (*LastReorg, error)
- func (s *BridgeSync) GetLastRoot(ctx context.Context) (*tree.Root, error)
- func (s *BridgeSync) GetLatestNetworkBlock(ctx context.Context) (uint64, error)
- func (s *BridgeSync) GetLegacyTokenMigrations(ctx context.Context, pageNumber, pageSize uint32) ([]*LegacyTokenMigration, int, error)
- func (s *BridgeSync) GetProof(ctx context.Context, depositCount uint32, localExitRoot common.Hash) (tree.Proof, error)
- func (s *BridgeSync) GetRootByLER(ctx context.Context, ler common.Hash) (*tree.Root, error)
- func (s *BridgeSync) GetTokenMappings(ctx context.Context, pageNumber, pageSize uint32, originTokenAddress string) ([]*TokenMapping, int, error)
- func (s *BridgeSync) IsActive(ctx context.Context) bool
- func (s *BridgeSync) OriginNetwork() uint32
- func (s *BridgeSync) Start(ctx context.Context)
- func (s *BridgeSync) SubscribeToNewBridge(subscriberID string) <-chan uint64
- func (s *BridgeSync) SubscribeToSync(subscriberID string) <-chan sync.Block
- type BridgeSyncRuntimeData
- type BridgeSyncerID
- type Call
- type Config
- type Event
- type ForwardLET
- type LastReorg
- type LeafData
- type LegacyTokenMigration
- type RecordToBackfill
- type RecordUpdate
- type RemoveLegacyToken
- type ReorgDetector
- type TokenMapping
- type Transaction
- type TxnSenderJob
- type TxnSenderResult
Constants ¶
const ( // DebugTraceTxEndpoint is the name of the debug method used to trace a transaction. DebugTraceTxEndpoint = "debug_traceTransaction" // GetTransactionByHashEndpoint is the name of the method used to get transaction details by hash. GetTransactionByHashEndpoint = "eth_getTransactionByHash" )
const ( // CallTypeCall is a callTracer CALL frame. CallTypeCall = "CALL" // CallTypeDelegateCall is a callTracer DELEGATECALL frame. CallTypeDelegateCall = "DELEGATECALL" // CallTypeStaticCall is a callTracer STATICCALL frame. CallTypeStaticCall = "STATICCALL" // CallTypeCallCode is a callTracer CALLCODE frame. CallTypeCallCode = "CALLCODE" // CallTypeCreate is a callTracer CREATE frame. CallTypeCreate = "CREATE" // CallTypeCreate2 is a callTracer CREATE2 frame. CallTypeCreate2 = "CREATE2" // CallTypeSelfDestruct is a callTracer SELFDESTRUCT frame. CallTypeSelfDestruct = "SELFDESTRUCT" )
Variables ¶
var ( // ErrInvalidPageSize indicates that the page size is invalid ErrInvalidPageSize = errors.New("page size must be greater than 0") // ErrInvalidPageNumber indicates that the page number is invalid ErrInvalidPageNumber = errors.New("page number must be greater than 0") )
var ( // bridgeAsset(uint32 destinationNetwork,address destinationAddress,uint256 amount, // address token,bool forceUpdateGlobalExitRoot,bytes permitData) BridgeAssetMethodID = common.Hex2Bytes("cd586579") // bridgeMessage(uint32 destinationNetwork,address destinationAddress, // bool forceUpdateGlobalExitRoot,bytes metadata) BridgeMessageMethodID = common.Hex2Bytes("240ff378") )
Functions ¶
func DecodeGlobalIndex ¶
func DecodeGlobalIndex(globalIndex *big.Int) (mainnetFlag bool, rollupIndex uint32, localExitRootIndex uint32, err error)
Decodes global index to its three parts: 1. mainnetFlag - first byte 2. rollupIndex - next 4 bytes 3. localExitRootIndex - last 4 bytes NOTE - mainnet flag is not in the global index bytes if it is false NOTE - rollup index is 0 if mainnet flag is true NOTE - rollup index is not in the global index bytes if mainnet flag is false and rollup index is 0
func ExtractFromAddrFromCalls ¶ added in v0.8.0
func ExtractFromAddrFromCalls(foundCalls []*Call, logEvent *agglayerbridge.AgglayerbridgeBridgeEvent) (common.Address, error)
func ExtractParamFromCallData ¶ added in v0.8.0
func ExtractTxnAddresses ¶ added in v0.8.0
func ExtractTxnAddresses(ctx context.Context, client aggkittypes.EthClienter, bridgeAddr common.Address, txHash common.Hash, logEvent *agglayerbridge.AgglayerbridgeBridgeEvent, logger *logger.Logger, syncFromInBridges bool) (txnSender common.Address, fromAddr *common.Address, toAddr common.Address, err error)
ExtractTxnAddresses extracts the txn_sender, from address, and to address. When syncFromInBridges is false, only extracts txnSender and toAddr using standard RPC, and returns zero address for fromAddr (avoids expensive debug_traceTransaction).
func GenerateGlobalIndex ¶
GenerateGlobalIndex encodes a unique "global index" used for identifying bridges and claims. The index is constructed as a big integer from three components: - mainnetFlag: indicates if the origin network is mainnet (true) or a rollup (false).
- If true, the first 4-byte segment is set to `0x01` and the next 4 bytes are zero.
- If false, the first 4-byte segment is the rollupIndex (networkID - 1).
- rollupIndex: only used if mainnetFlag is false; represents (networkID - 1). - depositCount: always appended as the final 4-byte segment.
Encoding layout (big-endian concatenation of 4-byte chunks):
[ mainnetFlag ] [ rollupIndex ] [ depositCount ]
Examples:
mainnetFlag=true, depositCount=3 → 0x0100000000000003 mainnetFlag=false, rollupIndex=1, depositCount=3 → 0x0000000100000003
The result is returned as a *big.Int that can be used consistently across mainnet and rollup networks.
Types ¶
type BackfillTxnSender ¶ added in v0.7.0
type BackfillTxnSender struct {
// contains filtered or unexported fields
}
BackfillTxnSender handles the backfilling of txn_sender field for bridge records
func NewBackfillTxnSender ¶ added in v0.7.0
func NewBackfillTxnSender( dbPath string, client types.EthClienter, bridgeAddr common.Address, syncFromInBridges bool, logger *log.Logger, ) (*BackfillTxnSender, error)
NewBackfillTxnSender creates a new instance of BackfillTxnSender
func (*BackfillTxnSender) BackfillAll ¶ added in v0.7.0
func (b *BackfillTxnSender) BackfillAll(ctx context.Context) error
BackfillAll processes bridge table to backfill txn_sender field
func (*BackfillTxnSender) Close ¶ added in v0.7.0
func (b *BackfillTxnSender) Close() error
Close closes the database connection
type BackwardLET ¶
type BackwardLET struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
PreviousDepositCount *big.Int `meddler:"previous_deposit_count,bigint"`
PreviousRoot common.Hash `meddler:"previous_root,hash"`
NewDepositCount *big.Int `meddler:"new_deposit_count,bigint"`
NewRoot common.Hash `meddler:"new_root,hash"`
}
BackwardLET representation of a BackwardLET event, that is emitted by the L2 bridge contract when a LET is rolled back.
func (*BackwardLET) String ¶
func (b *BackwardLET) String() string
String returns a formatted string representation of BackwardLET for debugging and logging.
type Bridge ¶
type Bridge struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
FromAddress *common.Address `meddler:"from_address,address"`
TxHash common.Hash `meddler:"tx_hash,hash"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
LeafType uint8 `meddler:"leaf_type"`
OriginNetwork uint32 `meddler:"origin_network"`
OriginAddress common.Address `meddler:"origin_address"`
DestinationNetwork uint32 `meddler:"destination_network"`
DestinationAddress common.Address `meddler:"destination_address"`
Amount *big.Int `meddler:"amount,bigint"`
Metadata []byte `meddler:"metadata"`
DepositCount uint32 `meddler:"deposit_count"`
TxnSender common.Address `meddler:"txn_sender,address"`
Source BridgeSource `meddler:"source"`
ToAddress common.Address `meddler:"to_address,address"`
}
Bridge is the representation of a bridge event
type BridgeDeployment ¶ added in v0.8.0
type BridgeDeployment byte
BridgeDeployment represents the type of bridge contract deployment (sovereign vs non-sovereign).
const ( Unknown BridgeDeployment = iota NonSovereignChain SovereignChain )
type BridgeSource ¶
type BridgeSource string
const ( BridgeSourceBackwardLET BridgeSource = "backward_let" BridgeSourceForwardLET BridgeSource = "forward_let" )
type BridgeSync ¶
type BridgeSync struct {
// contains filtered or unexported fields
}
BridgeSync manages the state of the exit tree for the bridge contract by processing Ethereum blockchain events.
func NewL1 ¶
func NewL1( ctx context.Context, cfg Config, rd ReorgDetector, ethClient aggkittypes.EthClienter, originNetwork uint32, ) (*BridgeSync, error)
NewL1 creates a bridge syncer that synchronizes the mainnet exit tree
func NewL2 ¶
func NewL2( ctx context.Context, cfg Config, rd ReorgDetector, ethClient aggkittypes.EthClienter, originNetwork uint32, syncFullClaims bool, initialLER common.Hash, ) (*BridgeSync, error)
NewL2 creates a bridge syncer that synchronizes the local exit tree.
func (*BridgeSync) GetBlockByLER ¶
func (*BridgeSync) GetBridgeByDepositCount ¶ added in v0.8.2
func (s *BridgeSync) GetBridgeByDepositCount(ctx context.Context, depositCount uint32) (*Bridge, error)
GetBridgeByDepositCount returns the bridge with the given deposit count (bridge or bridge_archive).
func (*BridgeSync) GetBridges ¶
func (*BridgeSync) GetBridgesByContent ¶ added in v0.8.2
func (s *BridgeSync) GetBridgesByContent( ctx context.Context, leafType uint8, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte, ) ([]*Bridge, error)
GetBridgesByContent returns all bridges matching the given content fields.
func (*BridgeSync) GetBridgesPaged ¶ added in v0.5.0
func (*BridgeSync) GetContractDepositCount ¶ added in v0.5.0
func (s *BridgeSync) GetContractDepositCount(ctx context.Context) (uint32, error)
GetContractDepositCount returns the last deposit count from the bridge contract
func (*BridgeSync) GetExitRootByHash ¶ added in v0.7.0
func (*BridgeSync) GetExitRootByIndex ¶
GetExitRootByIndex returns the root of the exit tree at the moment the leaf with the given index was added
func (*BridgeSync) GetLastProcessedBlock ¶
func (*BridgeSync) GetLastReorgEvent ¶ added in v0.5.0
func (s *BridgeSync) GetLastReorgEvent(ctx context.Context) (*LastReorg, error)
func (*BridgeSync) GetLastRoot ¶ added in v0.5.0
func (*BridgeSync) GetLatestNetworkBlock ¶ added in v0.7.0
func (s *BridgeSync) GetLatestNetworkBlock(ctx context.Context) (uint64, error)
GetLatestNetworkBlock returns the latest block number from the network
func (*BridgeSync) GetLegacyTokenMigrations ¶ added in v0.5.0
func (s *BridgeSync) GetLegacyTokenMigrations( ctx context.Context, pageNumber, pageSize uint32) ([]*LegacyTokenMigration, int, error)
func (*BridgeSync) GetRootByLER ¶
func (*BridgeSync) GetTokenMappings ¶ added in v0.5.0
func (s *BridgeSync) GetTokenMappings(ctx context.Context, pageNumber, pageSize uint32, originTokenAddress string, ) ([]*TokenMapping, int, error)
func (*BridgeSync) IsActive ¶ added in v0.7.0
func (s *BridgeSync) IsActive(ctx context.Context) bool
IsActive returns true if the syncer is active (not halted)
func (*BridgeSync) OriginNetwork ¶
func (s *BridgeSync) OriginNetwork() uint32
OriginNetwork returns the network ID of the origin chain
func (*BridgeSync) Start ¶
func (s *BridgeSync) Start(ctx context.Context)
Start starts the synchronization process
func (*BridgeSync) SubscribeToNewBridge ¶
func (s *BridgeSync) SubscribeToNewBridge(subscriberID string) <-chan uint64
SubscribeToNewBridge allows a subscriber to receive block number notifications when new bridge events occur
func (*BridgeSync) SubscribeToSync ¶ added in v0.8.0
func (s *BridgeSync) SubscribeToSync(subscriberID string) <-chan sync.Block
SubscribeToSync allows a subscriber to receive block notifications
type BridgeSyncRuntimeData ¶ added in v0.5.0
type BridgeSyncRuntimeData struct {
// This fields are coming from legacy sync.RuntimeData
ChainID uint64
Addresses []common.Address
// DBVersion tracks the database schema version for compatibility validation
DBVersion *int
// SyncFromInBridges tracks if FromAddress extraction was enabled for this database
// By default is true
SyncFromInBridges *bool
}
BridgeSyncRuntimeData contains runtime environment data used for database compatibility checks. It includes chain ID, contract addresses, and database version information.
func (BridgeSyncRuntimeData) IsCompatible ¶ added in v0.5.0
func (b BridgeSyncRuntimeData) IsCompatible(storage BridgeSyncRuntimeData) (*BridgeSyncRuntimeData, error)
func (BridgeSyncRuntimeData) String ¶ added in v0.5.0
func (b BridgeSyncRuntimeData) String() string
type BridgeSyncerID ¶ added in v0.8.0
type BridgeSyncerID int
BridgeSyncerID represents the type of bridge syncer
const ( L1BridgeSyncer BridgeSyncerID = iota L2BridgeSyncer // CurrentDBVersion represents the current version of the bridge syncer's database schema. // It is used to ensure the database is reset if an upgrade requires a full resync. // Increment this value whenever the database schema changes in a way that is not backward-compatible. CurrentDBVersion = 1 )
func (BridgeSyncerID) String ¶ added in v0.8.0
func (b BridgeSyncerID) String() string
type Config ¶
type Config struct {
// DBPath path of the DB
DBPath string `mapstructure:"DBPath"`
// BlockFinality indicates the status of the blocks that will be queried in order to sync
BlockFinality aggkittypes.BlockNumberFinality `` //nolint:lll
/* 134-byte string literal not displayed */
// InitialBlockNum is the first block that will be queried when starting the synchronization from scratch.
// It should be a number equal or bellow the creation of the bridge contract
InitialBlockNum uint64 `mapstructure:"InitialBlockNum"`
// BridgeAddr is the address of the bridge smart contract
BridgeAddr common.Address `mapstructure:"BridgeAddr"`
// SyncBlockChunkSize is the amount of blocks that will be queried to the client on each request
SyncBlockChunkSize uint64 `mapstructure:"SyncBlockChunkSize"`
// RetryAfterErrorPeriod is the time that will be waited when an unexpected error happens before retry
RetryAfterErrorPeriod types.Duration `mapstructure:"RetryAfterErrorPeriod"`
// MaxRetryAttemptsAfterError is the maximum number of consecutive attempts that will happen before panicing.
// Any number smaller than zero will be considered as unlimited retries
MaxRetryAttemptsAfterError int `mapstructure:"MaxRetryAttemptsAfterError"`
// WaitForNewBlocksPeriod time that will be waited when the synchronizer has reached the latest block
WaitForNewBlocksPeriod types.Duration `mapstructure:"WaitForNewBlocksPeriod"`
// RequireStorageContentCompatibility is true it's mandatory that data stored in the database
// is compatible with the running environment
RequireStorageContentCompatibility bool `mapstructure:"RequireStorageContentCompatibility"`
// DBQueryTimeout is the timeout for database operations (queries, transactions)
// This is separate from HTTP timeouts to allow database operations more time when needed
DBQueryTimeout types.Duration `mapstructure:"DBQueryTimeout"`
// SyncFromInBridges controls whether to extract FromAddress for bridge Asset events.
// Possible values:
// - "true": always extracts FromAddress using debug_traceTransaction (requires archive node)
// - "false": never extracts FromAddress (no archive node needed)
// - "auto": automatically decides based on whether BRIDGE component is active
// Note: TxnSender and ToAddress are always extracted via standard eth_getTransactionByHash.
// Default: "auto"
// SyncFromInBridges.Resolved is set programmatically after resolution; not read from config.
SyncFromInBridges types.TrueFalseAutoMode `jsonschema:"enum=true, enum=false, enum=auto" mapstructure:"SyncFromInBridges"` //nolint:lll
}
func (*Config) ResolvedString ¶
ResolvedString returns a string representation of the resolved configuration to log it
type Event ¶
type Event struct {
Bridge *Bridge
TokenMapping *TokenMapping
LegacyTokenMigration *LegacyTokenMigration
RemoveLegacyToken *RemoveLegacyToken
BackwardLET *BackwardLET
ForwardLET *ForwardLET
}
Event combination of bridge, claim, token mapping and legacy token migration events
type ForwardLET ¶
type ForwardLET struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
TxnHash common.Hash `meddler:"tx_hash,hash"`
PreviousDepositCount *big.Int `meddler:"previous_deposit_count,bigint"`
PreviousRoot common.Hash `meddler:"previous_root,hash"`
NewDepositCount *big.Int `meddler:"new_deposit_count,bigint"`
NewRoot common.Hash `meddler:"new_root,hash"`
NewLeaves []byte `meddler:"new_leaves"`
}
ForwardLET representation of a ForwardLET event, that is emitted by the L2 bridge contract when a LET is advanced.
func (*ForwardLET) String ¶
func (f *ForwardLET) String() string
String returns a formatted string representation of ForwardLET for debugging and logging.
type LeafData ¶
type LeafData struct {
LeafType uint8 `abi:"leafType"`
OriginNetwork uint32 `abi:"originNetwork"`
OriginAddress common.Address `abi:"originAddress"`
DestinationNetwork uint32 `abi:"destinationNetwork"`
DestinationAddress common.Address `abi:"destinationAddress"`
Amount *big.Int `abi:"amount"`
Metadata []byte `abi:"metadata"`
}
LeafData represents the data structure of a leaf in the local exit tree used in ForwardLET events.
type LegacyTokenMigration ¶ added in v0.5.0
type LegacyTokenMigration struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
TxHash common.Hash `meddler:"tx_hash,hash"`
Sender common.Address `meddler:"sender,address"`
LegacyTokenAddress common.Address `meddler:"legacy_token_address,address"`
UpdatedTokenAddress common.Address `meddler:"updated_token_address,address"`
Amount *big.Int `meddler:"amount,bigint"`
}
LegacyTokenMigration representation of a MigrateLegacyToken event, that is emitted by the sovereign chain bridge contract.
func (*LegacyTokenMigration) String ¶ added in v0.8.0
func (l *LegacyTokenMigration) String() string
type RecordToBackfill ¶ added in v0.7.0
type RecordToBackfill struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
FromAddress *string `meddler:"from_address"`
TxHash common.Hash `meddler:"tx_hash,hash"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
LeafType uint8 `meddler:"leaf_type"`
OriginNetwork uint32 `meddler:"origin_network"`
OriginAddress common.Address `meddler:"origin_address"`
DestinationNetwork uint32 `meddler:"destination_network"`
DestinationAddress common.Address `meddler:"destination_address"`
Amount *big.Int `meddler:"amount,bigint"`
Metadata []byte `meddler:"metadata"`
DepositCount uint32 `meddler:"deposit_count"`
TxnSender *string `meddler:"txn_sender"`
}
RecordToBackfill represents a record that needs txn_sender backfilling
type RecordUpdate ¶ added in v0.7.0
type RecordUpdate struct {
BlockNum uint64
BlockPos uint64
TxnSender common.Address
FromAddr *common.Address // nil means not available (e.g. syncFromInBridges=false for asset events)
ToAddr common.Address
}
RecordUpdate represents a record update with txn_sender data
func (*RecordUpdate) String ¶ added in v0.8.0
func (r *RecordUpdate) String() string
type RemoveLegacyToken ¶ added in v0.5.0
type RemoveLegacyToken struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
TxHash common.Hash `meddler:"tx_hash,hash"`
LegacyTokenAddress common.Address `meddler:"legacy_token_address,address"`
}
RemoveLegacyToken representation of a RemoveLegacySovereignTokenAddress event, that is emitted by the sovereign chain bridge contract.
func (*RemoveLegacyToken) String ¶ added in v0.8.0
func (r *RemoveLegacyToken) String() string
type ReorgDetector ¶
type ReorgDetector interface {
sync.ReorgDetector
GetLastReorgEvent(ctx context.Context) (reorgdetector.ReorgEvent, error)
}
type TokenMapping ¶ added in v0.5.0
type TokenMapping struct {
BlockNum uint64 `meddler:"block_num"`
BlockPos uint64 `meddler:"block_pos"`
BlockTimestamp uint64 `meddler:"block_timestamp"`
TxHash common.Hash `meddler:"tx_hash,hash"`
OriginNetwork uint32 `meddler:"origin_network"`
OriginTokenAddress common.Address `meddler:"origin_token_address,address"`
WrappedTokenAddress common.Address `meddler:"wrapped_token_address,address"`
Metadata []byte `meddler:"metadata"`
IsNotMintable bool `meddler:"is_not_mintable"`
Type bridgetypes.TokenMappingType `meddler:"token_type"`
}
TokenMapping representation of a NewWrappedToken event, that is emitted by the bridge contract
func (*TokenMapping) String ¶ added in v0.8.0
func (t *TokenMapping) String() string
type Transaction ¶ added in v0.7.0
type Transaction struct {
FromRaw string `json:"from"`
To string `json:"to"`
Hash string `json:"hash"`
Value string `json:"value"`
Gas string `json:"gas"`
GasPrice string `json:"gasPrice"`
Nonce string `json:"nonce"`
Input string `json:"input"`
BlockHash string `json:"blockHash"`
BlockNumber string `json:"blockNumber"`
TransactionIndex string `json:"transactionIndex"`
}
Transaction represents the structure of a transaction returned by eth_getTransactionByHash
func RPCTransactionByHash ¶ added in v0.8.0
func RPCTransactionByHash(client aggkittypes.EthClienter, txHash common.Hash) (*Transaction, error)
func (*Transaction) From ¶ added in v0.7.0
func (t *Transaction) From() common.Address
func (*Transaction) ToAddress ¶ added in v0.8.0
func (t *Transaction) ToAddress() common.Address
type TxnSenderJob ¶ added in v0.7.0
type TxnSenderJob struct {
Record RecordToBackfill
}
TxnSenderJob represents a job for extracting transaction sender
type TxnSenderResult ¶ added in v0.7.0
type TxnSenderResult struct {
Update RecordUpdate
Error error
}
TxnSenderResult represents the result of extracting transaction sender