From 47465acf1392afca3c294b735104dfc478213d3b Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Wed, 25 May 2022 22:32:59 +0400 Subject: [PATCH] Enhance config init --- config/config.go | 14 ++++++++++---- monitor/contract_monitor.go | 9 +++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/config/config.go b/config/config.go index 1ce06c8..733772f 100644 --- a/config/config.go +++ b/config/config.go @@ -3,6 +3,7 @@ package config import ( "bytes" "fmt" + "math" "os" "time" @@ -126,6 +127,14 @@ func (cfg *Config) init() error { if len(bridge.Foreign.ErcToNativeTokens) == 0 { return fmt.Errorf("empty foreign token address list in ERC_TO_NATIVE mode") } + for i, tokenCfg := range bridge.Foreign.ErcToNativeTokens { + if tokenCfg.StartBlock == 0 { + bridge.Foreign.ErcToNativeTokens[i].StartBlock = bridge.Foreign.StartBlock + } + if tokenCfg.EndBlock == 0 { + bridge.Foreign.ErcToNativeTokens[i].EndBlock = math.MaxUint32 + } + } case BridgeModeArbitraryMessage: default: bridge.BridgeMode = BridgeModeArbitraryMessage @@ -152,10 +161,7 @@ func (cfg *BridgeSideConfig) ContractAddresses(fromBlock, toBlock uint) []common func (cfg *BridgeSideConfig) ErcToNativeTokenAddresses(fromBlock, toBlock uint) []common.Address { addresses := make([]common.Address, 0, len(cfg.ErcToNativeTokens)) for _, token := range cfg.ErcToNativeTokens { - if token.StartBlock > 0 && toBlock < token.StartBlock { - continue - } - if token.EndBlock > 0 && fromBlock > token.EndBlock { + if toBlock < token.StartBlock || fromBlock > token.EndBlock { continue } addresses = append(addresses, token.Address) diff --git a/monitor/contract_monitor.go b/monitor/contract_monitor.go index 2370cc5..3269a4e 100644 --- a/monitor/contract_monitor.go +++ b/monitor/contract_monitor.go @@ -261,10 +261,7 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu queries = append(queries, q) if m.bridgeCfg.BridgeMode == config.BridgeModeErcToNative { for _, token := range m.cfg.ErcToNativeTokens { - if token.StartBlock > 0 && blocksRange.To < token.StartBlock { - continue - } - if token.EndBlock > 0 && blocksRange.From > token.EndBlock { + if blocksRange.To < token.StartBlock || blocksRange.From > token.EndBlock { continue } q = ethereum.FilterQuery{ @@ -276,10 +273,10 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu if blocksRange.Topic != nil { q.Topics[0] = []common.Hash{*blocksRange.Topic} } - if token.StartBlock > 0 && token.StartBlock > blocksRange.From { + if token.StartBlock > blocksRange.From { q.FromBlock = big.NewInt(int64(token.StartBlock)) } - if token.EndBlock > 0 && token.EndBlock < blocksRange.To { + if token.EndBlock < blocksRange.To { q.ToBlock = big.NewInt(int64(token.EndBlock)) } queries = append(queries, q)