Enhance config init

This commit is contained in:
Kirill Fedoseev 2022-05-25 22:32:59 +04:00
parent 8659671381
commit 47465acf13
2 changed files with 13 additions and 10 deletions

View File

@ -3,6 +3,7 @@ package config
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"math"
"os" "os"
"time" "time"
@ -126,6 +127,14 @@ func (cfg *Config) init() error {
if len(bridge.Foreign.ErcToNativeTokens) == 0 { if len(bridge.Foreign.ErcToNativeTokens) == 0 {
return fmt.Errorf("empty foreign token address list in ERC_TO_NATIVE mode") 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: case BridgeModeArbitraryMessage:
default: default:
bridge.BridgeMode = BridgeModeArbitraryMessage bridge.BridgeMode = BridgeModeArbitraryMessage
@ -152,10 +161,7 @@ func (cfg *BridgeSideConfig) ContractAddresses(fromBlock, toBlock uint) []common
func (cfg *BridgeSideConfig) ErcToNativeTokenAddresses(fromBlock, toBlock uint) []common.Address { func (cfg *BridgeSideConfig) ErcToNativeTokenAddresses(fromBlock, toBlock uint) []common.Address {
addresses := make([]common.Address, 0, len(cfg.ErcToNativeTokens)) addresses := make([]common.Address, 0, len(cfg.ErcToNativeTokens))
for _, token := range cfg.ErcToNativeTokens { for _, token := range cfg.ErcToNativeTokens {
if token.StartBlock > 0 && toBlock < token.StartBlock { if toBlock < token.StartBlock || fromBlock > token.EndBlock {
continue
}
if token.EndBlock > 0 && fromBlock > token.EndBlock {
continue continue
} }
addresses = append(addresses, token.Address) addresses = append(addresses, token.Address)

View File

@ -261,10 +261,7 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu
queries = append(queries, q) queries = append(queries, q)
if m.bridgeCfg.BridgeMode == config.BridgeModeErcToNative { if m.bridgeCfg.BridgeMode == config.BridgeModeErcToNative {
for _, token := range m.cfg.ErcToNativeTokens { for _, token := range m.cfg.ErcToNativeTokens {
if token.StartBlock > 0 && blocksRange.To < token.StartBlock { if blocksRange.To < token.StartBlock || blocksRange.From > token.EndBlock {
continue
}
if token.EndBlock > 0 && blocksRange.From > token.EndBlock {
continue continue
} }
q = ethereum.FilterQuery{ q = ethereum.FilterQuery{
@ -276,10 +273,10 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu
if blocksRange.Topic != nil { if blocksRange.Topic != nil {
q.Topics[0] = []common.Hash{*blocksRange.Topic} 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)) 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)) q.ToBlock = big.NewInt(int64(token.EndBlock))
} }
queries = append(queries, q) queries = append(queries, q)