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
- func GlobalIndexForBridge(destinationNetwork uint32, blockNum uint64, depositCount uint32, ...) (*big.Int, bool)
- 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) IsBlockFinalized(ctx context.Context, blockNum uint64, blockHash common.Hash) (finalized, found bool, err error)
- 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" )
const LegacyZkEVMRollupNetworkID uint32 = 1
LegacyZkEVMRollupNetworkID is the legacy zkEVM rollup network ID whose pre-Etrog bridges used a bare deposit-count global index instead of the encoded global index.
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.
func GenerateGlobalIndexForNetworkID ¶ added in v0.7.0
GenerateGlobalIndexForNetworkID builds the "global index" used to identify bridges and claims.
func GlobalIndexForBridge ¶ added in v0.11.0
func GlobalIndexForBridge( destinationNetwork uint32, blockNum uint64, depositCount uint32, networkID uint32, etrogL1UpgradeBlock uint64, ) (*big.Int, bool)
GlobalIndexForBridge computes the global index for a bridge exit, applying the legacy pre-Etrog zkEVM encoding (a bare deposit count) for bridges destined to the legacy zkEVM rollup at or before etrogL1UpgradeBlock. An etrogL1UpgradeBlock of 0 disables the pre-Etrog special-casing. networkID is the network used to encode the post-Etrog global index. It returns the global index and whether the bridge was treated as pre-Etrog.
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 ¶ added in v0.10.0
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 ¶ added in v0.10.0
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"`
// BlockHash is the hash of the block BlockNum, as stored in the block table. It is not a column of
// the bridge tables: the read queries that serve it (GetBridgesPaged, GetBridgeByDepositCount and
// GetBridgesByContent) join it from the block table in the same statement that reads the row, so it
// is the hash of the block the row belonged to when it was read. Zero if that block has no hash, or
// when the bridge was read by any other query.
BlockHash common.Hash `meddler:"-"`
}
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 ¶ added in v0.10.0
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) IsBlockFinalized ¶
func (s *BridgeSync) IsBlockFinalized(ctx context.Context, blockNum uint64, blockHash common.Hash) (finalized, found bool, err error)
IsBlockFinalized reports whether the block with the given number and hash, as read from this syncer, is finalized, i.e. it can no longer be reorged. The legacy syncer doesn't store a finality flag, but the reorg detector tracks every block that was not final when processed and only stops tracking it once its hash was checked against the canonical chain and it is below the finalized block. So a processed block that is not tracked anymore is a finalized one. found is false when it can't be determined: no hash was given, or the block is not stored with that same hash (unknown, no hash stored for it, or it was replaced after the caller read it).
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 ¶ added in v0.10.0
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 ¶ added in v0.10.0
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 ¶ added in v0.10.0
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 ¶ added in v0.10.0
func (f *ForwardLET) String() string
String returns a formatted string representation of ForwardLET for debugging and logging.
type LeafData ¶ added in v0.10.0
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