Skip to content

Commit

Permalink
fix: compilation + simplify watcher init
Browse files Browse the repository at this point in the history
  • Loading branch information
jazg committed Jun 25, 2021
1 parent 1f41b1a commit e73051c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 42 deletions.
53 changes: 19 additions & 34 deletions lightnode.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,52 +141,37 @@ func New(options Options, ctx context.Context, logger logrus.FieldLogger, sqlDB
bindings,
)

whitelistMap := map[tx.Selector]bool{}
for _, i := range options.Whitelist {
whitelistMap[i] = true
chains := map[multichain.Chain]bool{}
assets := map[multichain.Asset]bool{}
for _, selector := range options.Whitelist {
if selector.IsBurn() && selector.IsRelease() {
chains[selector.Source()] = true
}
assets[selector.Asset()] = true
}

watchers := map[multichain.Chain]map[multichain.Asset]watcher.Watcher{}

// Ethereum watchers
ethGateways := bindings.EthereumGateways()
ethClients := bindings.EthereumClients()
for chain, contracts := range ethGateways {
for asset, bindings := range contracts {
solClient := solanaRPC.NewClient(bindingsOpts.Chains[multichain.Solana].RPC.String())
for chain := range chains {
for asset := range assets {
selector := tx.Selector(fmt.Sprintf("%v/from%v", asset, chain))
if !whitelistMap[selector] {
logger.Info("not watching", selector)
continue
}
if watchers[chain] == nil {
watchers[chain] = map[multichain.Asset]watcher.Watcher{}
}
burnLogFetcher := watcher.NewEthBurnLogFetcher(bindings)
blockHeightFetcher := watcher.NewEthBlockHeightFetcher(ethClients[chain])
var burnLogFetcher watcher.BurnLogFetcher
var blockHeightFetcher watcher.BlockHeightFetcher
if chain == multichain.Solana {
burnLogFetcher = watcher.NewSolFetcher(solClient, string(bindings.ContractGateway(chain, asset)))
blockHeightFetcher = watcher.NewSolFetcher(solClient, string(bindings.ContractGateway(chain, asset)))
} else {
burnLogFetcher = watcher.NewEthBurnLogFetcher(bindings.EthereumGateway(chain, asset))
blockHeightFetcher = watcher.NewEthBlockHeightFetcher(bindings.EthereumClient(chain))
}
watchers[chain][selector.Asset()] = watcher.NewWatcher(logger, options.Network, selector, verifierBindings, burnLogFetcher, blockHeightFetcher, resolverI, client, options.WatcherPollRate, options.WatcherMaxBlockAdvance, options.WatcherConfidenceInterval)
logger.Info("watching", selector)
}
}

// Solana watchers
solanaGateways := bindings.ContractGateways()[multichain.Solana]
solClient := solanaRPC.NewClient(bindingsOpts.Chains[multichain.Solana].RPC.String())
for asset, bindings := range solanaGateways {
chain := multichain.Solana
selector := tx.Selector(fmt.Sprintf("%v/from%v", asset, chain))
if !whitelistMap[selector] {
logger.Info("not watching ", selector)
continue
}
if watchers[chain] == nil {
watchers[chain] = map[multichain.Asset]watcher.Watcher{}
}
solanaFetcher := watcher.NewSolFetcher(solClient, string(bindings))
watchers[chain][selector.Asset()] = watcher.NewWatcher(logger, options.Network, selector, verifierBindings, solanaFetcher, solanaFetcher, resolverI, client, options.WatcherPollRate, options.WatcherMaxBlockAdvance, options.WatcherConfidenceInterval)
logger.Info("watching ", selector)
logger.Info("at ", bindings)
}

return Lightnode{
options: options,
logger: logger,
Expand Down
12 changes: 4 additions & 8 deletions watcher/watcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ var _ = Describe("Watcher", func() {
logger.Panicf("bad bindings: %v", err)
}

ethClients := bindings.EthereumClients()
ethClient := ethClients[multichain.Ethereum]
ethClient := bindings.EthereumClient(multichain.Ethereum)
fetcher := NewMockBurnLogFetcher(burnIn)
heightFetcher := NewEthBlockHeightFetcher(ethClient)

Expand Down Expand Up @@ -603,8 +602,7 @@ var _ = Describe("Watcher", func() {

bindings := binding.New(bindingsOpts)

gateways := bindings.EthereumGateways()
btcGateway := gateways[multichain.Ethereum][multichain.BTC]
btcGateway := bindings.EthereumGateway(multichain.Ethereum, multichain.BTC)
burnLogFetcher := NewEthBurnLogFetcher(btcGateway)

results, err := burnLogFetcher.FetchBurnLogs(ctx, 0, 0)
Expand Down Expand Up @@ -678,8 +676,7 @@ var _ = Describe("Watcher", func() {

bindings := binding.New(bindingsOpts)
solClient := solanaRPC.NewClient(bindingsOpts.Chains[multichain.Solana].RPC.String())
gateways := bindings.ContractGateways()
btcGateway := gateways[multichain.Solana][multichain.BTC]
btcGateway := bindings.ContractGateway(multichain.Solana, multichain.BTC)
burnLogFetcher := NewSolFetcher(solClient, string(btcGateway))

results, err := burnLogFetcher.FetchBurnLogs(ctx, 0, 0)
Expand Down Expand Up @@ -740,8 +737,7 @@ var _ = Describe("Watcher", func() {

bindings := binding.New(bindingsOpts)
solClient := solanaRPC.NewClient(bindingsOpts.Chains[multichain.Solana].RPC.String())
gateways := bindings.ContractGateways()
btcGateway := gateways[multichain.Solana][multichain.BTC]
btcGateway := bindings.ContractGateway(multichain.Solana, multichain.BTC)
burnLogFetcher := NewSolFetcher(solClient, string(btcGateway))

results, err := burnLogFetcher.FetchBurnLogs(ctx, 0, 0)
Expand Down

0 comments on commit e73051c

Please sign in to comment.