Support for test-amb bridge
This commit is contained in:
parent
cd6eb2f324
commit
470c781a62
41
config.yml
41
config.yml
|
@ -1,12 +1,20 @@
|
|||
chains:
|
||||
mainnet:
|
||||
rpc:
|
||||
host: https://mainnet.blockscout.com
|
||||
host: https://mainnet.infura.io/v3/5d7bd94c50ed43fab1cb8e74f58678b0
|
||||
timeout: 30s
|
||||
rps: 10
|
||||
chain_id: 1
|
||||
block_time: 15s
|
||||
block_index_interval: 10s
|
||||
block_index_interval: 60s
|
||||
kovan:
|
||||
rpc:
|
||||
host: https://kovan.poa.network
|
||||
timeout: 30s
|
||||
rps: 10
|
||||
chain_id: 42
|
||||
block_time: 5s
|
||||
block_index_interval: 60s
|
||||
xdai:
|
||||
rpc:
|
||||
host: https://dai.poa.network
|
||||
|
@ -14,7 +22,15 @@ chains:
|
|||
rps: 10
|
||||
chain_id: 100
|
||||
block_time: 5s
|
||||
block_index_interval: 5s
|
||||
block_index_interval: 30s
|
||||
sokol:
|
||||
rpc:
|
||||
host: https://sokol.poa.network
|
||||
timeout: 20s
|
||||
rps: 10
|
||||
chain_id: 77
|
||||
block_time: 5s
|
||||
block_index_interval: 30s
|
||||
bridges:
|
||||
xdai-amb:
|
||||
home:
|
||||
|
@ -22,16 +38,29 @@ bridges:
|
|||
address: 0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59
|
||||
start_block: 7408640
|
||||
required_block_confirmations: 12
|
||||
max_block_range_size: 10000
|
||||
max_block_range_size: 2000
|
||||
foreign:
|
||||
chain: mainnet
|
||||
address: 0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e
|
||||
start_block: 9130277
|
||||
required_block_confirmations: 12
|
||||
max_block_range_size: 5000
|
||||
max_block_range_size: 1000
|
||||
test-amb:
|
||||
home:
|
||||
chain: sokol
|
||||
address: 0xFe446bEF1DbF7AFE24E81e05BC8B271C1BA9a560
|
||||
start_block: 9849619
|
||||
required_block_confirmations: 12
|
||||
max_block_range_size: 10000
|
||||
foreign:
|
||||
chain: kovan
|
||||
address: 0xFe446bEF1DbF7AFE24E81e05BC8B271C1BA9a560
|
||||
start_block: 12372929
|
||||
required_block_confirmations: 12
|
||||
max_block_range_size: 10000
|
||||
postgres:
|
||||
user: postgres
|
||||
password: pass
|
||||
host: postgres
|
||||
host: localhost
|
||||
port: 5432
|
||||
database: db
|
||||
|
|
|
@ -1112,5 +1112,32 @@
|
|||
],
|
||||
"name": "RelayedMessage",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "sender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "executor",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "messageId",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "status",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"name": "RelayedMessage",
|
||||
"type": "event"
|
||||
}
|
||||
]
|
|
@ -3,6 +3,7 @@ package contract
|
|||
import (
|
||||
"amb-monitor/entity"
|
||||
"amb-monitor/ethclient"
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"github.com/ethereum/go-ethereum/accounts/abi"
|
||||
|
@ -28,15 +29,6 @@ func (c *Contract) ParseLog(log *entity.Log) (string, map[string]interface{}, er
|
|||
if log.Topic0 == nil {
|
||||
return "", nil, fmt.Errorf("cannot process event without topics")
|
||||
}
|
||||
event, err := c.abi.EventByID(*log.Topic0)
|
||||
if err != nil {
|
||||
return "", nil, nil
|
||||
}
|
||||
m := make(map[string]interface{})
|
||||
err = event.Inputs.UnpackIntoMap(m, log.Data)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
topics := make([]common.Hash, 0, 3)
|
||||
if log.Topic1 != nil {
|
||||
topics = append(topics, *log.Topic1)
|
||||
|
@ -47,7 +39,26 @@ func (c *Contract) ParseLog(log *entity.Log) (string, map[string]interface{}, er
|
|||
}
|
||||
}
|
||||
}
|
||||
err = abi.ParseTopicsIntoMap(m, Indexed(event.Inputs), topics)
|
||||
var event *abi.Event
|
||||
var indexed abi.Arguments
|
||||
for _, e := range c.abi.Events {
|
||||
if bytes.Equal(e.ID.Bytes(), log.Topic0.Bytes()) {
|
||||
indexed = Indexed(e.Inputs)
|
||||
if len(indexed) == len(topics) {
|
||||
event = &e
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if event == nil {
|
||||
return "", nil, nil
|
||||
}
|
||||
m := make(map[string]interface{})
|
||||
err := event.Inputs.UnpackIntoMap(m, log.Data)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
err = abi.ParseTopicsIntoMap(m, indexed, topics)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
|
|
@ -81,11 +81,11 @@ func newContractMonitor(ctx context.Context, logger logging.Logger, repo *reposi
|
|||
}
|
||||
|
||||
func NewMonitor(ctx context.Context, logger logging.Logger, repo *repository.Repo, cfg *config.BridgeConfig) (*Monitor, error) {
|
||||
homeMonitor, err := newContractMonitor(ctx, logger.WithField("side", "home"), repo, cfg.Home)
|
||||
homeMonitor, err := newContractMonitor(ctx, logger.WithField("contract", "home"), repo, cfg.Home)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize home side monitor: %w", err)
|
||||
}
|
||||
foreignMonitor, err := newContractMonitor(ctx, logger.WithField("side", "foreign"), repo, cfg.Foreign)
|
||||
foreignMonitor, err := newContractMonitor(ctx, logger.WithField("contract", "foreign"), repo, cfg.Foreign)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize foreign side monitor: %w", err)
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ func NewMonitor(ctx context.Context, logger logging.Logger, repo *repository.Rep
|
|||
foreignMonitor.eventHandlers["UserRequestForAffirmation"] = handlers.HandleUserRequestForAffirmation
|
||||
foreignMonitor.eventHandlers["UserRequestForAffirmation0"] = handlers.HandleLegacyUserRequestForAffirmation
|
||||
foreignMonitor.eventHandlers["RelayedMessage"] = handlers.HandleRelayedMessage
|
||||
foreignMonitor.eventHandlers["RelayedMessage0"] = handlers.HandleRelayedMessage
|
||||
return &Monitor{
|
||||
cfg: cfg,
|
||||
logger: logger,
|
||||
|
|
Loading…
Reference in New Issue