Documentation ¶
Index ¶
- func DecodeGlobalIndex(globalIndex *big.Int) (mainnetFlag bool, rollupIndex uint32, localExitRootIndex uint32, err error)
- func GenerateGlobalIndex(mainnetFlag bool, rollupIndex uint32, localExitRootIndex uint32) *big.Int
- type Bridge
- type BridgeContractor
- type BridgeSync
- func (s *BridgeSync) BlockFinality() etherman.BlockNumberFinality
- func (s *BridgeSync) GetBlockByLER(ctx context.Context, ler common.Hash) (uint64, error)
- func (s *BridgeSync) GetBridgeRootByHash(ctx context.Context, root common.Hash) (*tree.Root, error)
- func (s *BridgeSync) GetBridges(ctx context.Context, fromBlock, toBlock uint64) ([]Bridge, error)
- func (s *BridgeSync) GetBridgesPublished(ctx context.Context, fromBlock, toBlock uint64) ([]Bridge, error)
- func (s *BridgeSync) GetClaims(ctx context.Context, fromBlock, toBlock uint64) ([]Claim, error)
- func (s *BridgeSync) GetExitRootByIndex(ctx context.Context, index uint32) (tree.Root, error)
- func (s *BridgeSync) GetLastProcessedBlock(ctx context.Context) (uint64, 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) OriginNetwork() uint32
- func (s *BridgeSync) Start(ctx context.Context)
- type Claim
- type Config
- type EthClienter
- type Event
- type ReorgDetector
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DecodeGlobalIndex ¶ added in v0.4.0
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
Types ¶
type Bridge ¶
type Bridge struct { BlockNum uint64 `meddler:"block_num"` BlockPos uint64 `meddler:"block_pos"` 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"` }
Bridge is the representation of a bridge event
type BridgeContractor ¶ added in v0.4.0
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, dbPath string, bridge common.Address, syncBlockChunkSize uint64, blockFinalityType etherman.BlockNumberFinality, rd ReorgDetector, ethClient EthClienter, initialBlock uint64, waitForNewBlocksPeriod time.Duration, retryAfterErrorPeriod time.Duration, maxRetryAttemptsAfterError int, originNetwork uint32, ) (*BridgeSync, error)
NewL1 creates a bridge syncer that synchronizes the mainnet exit tree
func NewL2 ¶
func NewL2( ctx context.Context, dbPath string, bridge common.Address, syncBlockChunkSize uint64, blockFinalityType etherman.BlockNumberFinality, rd ReorgDetector, ethClient EthClienter, initialBlock uint64, waitForNewBlocksPeriod time.Duration, retryAfterErrorPeriod time.Duration, maxRetryAttemptsAfterError int, originNetwork uint32, ) (*BridgeSync, error)
NewL2 creates a bridge syncer that synchronizes the local exit tree
func (*BridgeSync) BlockFinality ¶ added in v0.4.0
func (s *BridgeSync) BlockFinality() etherman.BlockNumberFinality
BlockFinality returns the block finality type
func (*BridgeSync) GetBlockByLER ¶ added in v0.4.0
func (*BridgeSync) GetBridgeRootByHash ¶
func (*BridgeSync) GetBridges ¶
func (*BridgeSync) GetBridgesPublished ¶ added in v0.4.0
func (*BridgeSync) GetExitRootByIndex ¶ added in v0.4.0
GetExitRootByIndex returns the root of the exit tree at the moment the leaf with the given index was added
func (*BridgeSync) GetLastProcessedBlock ¶
func (s *BridgeSync) GetLastProcessedBlock(ctx context.Context) (uint64, error)
func (*BridgeSync) GetRootByLER ¶
func (*BridgeSync) OriginNetwork ¶ added in v0.4.0
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
type Claim ¶
type Claim struct { BlockNum uint64 `meddler:"block_num"` BlockPos uint64 `meddler:"block_pos"` GlobalIndex *big.Int `meddler:"global_index,bigint"` OriginNetwork uint32 `meddler:"origin_network"` OriginAddress common.Address `meddler:"origin_address"` DestinationAddress common.Address `meddler:"destination_address"` Amount *big.Int `meddler:"amount,bigint"` ProofLocalExitRoot types.Proof `meddler:"proof_local_exit_root,merkleproof"` ProofRollupExitRoot types.Proof `meddler:"proof_rollup_exit_root,merkleproof"` MainnetExitRoot common.Hash `meddler:"mainnet_exit_root,hash"` RollupExitRoot common.Hash `meddler:"rollup_exit_root,hash"` GlobalExitRoot common.Hash `meddler:"global_exit_root,hash"` DestinationNetwork uint32 `meddler:"destination_network"` Metadata []byte `meddler:"metadata"` IsMessage bool `meddler:"is_message"` }
Claim representation of a claim event
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 string `` //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"` // OriginNetwork is the id of the network where the bridge is deployed OriginNetwork uint32 `mapstructure:"OriginNetwork"` }
type EthClienter ¶
type EthClienter interface { ethereum.LogFilterer ethereum.BlockNumberReader ethereum.ChainReader bind.ContractBackend Client() *rpc.Client }
EthClienter defines the methods required to interact with an Ethereum client.
type ReorgDetector ¶ added in v0.4.0
type ReorgDetector interface { sync.ReorgDetector }