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 (
"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)

View File

@ -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)