Commit c5af6db0 authored by hezhengjun's avatar hezhengjun Committed by vipwzw

make two client for ethereum relayer

parent 31886222
...@@ -91,6 +91,7 @@ func main() { ...@@ -91,6 +91,7 @@ func main() {
ethStartPara := &ethRelayer.EthereumStartPara{ ethStartPara := &ethRelayer.EthereumStartPara{
DbHandle: db, DbHandle: db,
EthProvider: cfg.EthProvider, EthProvider: cfg.EthProvider,
EthProviderHttp: cfg.EthProviderCli,
BridgeRegistryAddr: cfg.BridgeRegistry, BridgeRegistryAddr: cfg.BridgeRegistry,
DeployInfo: cfg.Deploy, DeployInfo: cfg.Deploy,
Degree: cfg.EthMaturityDegree, Degree: cfg.EthMaturityDegree,
......
...@@ -42,6 +42,7 @@ import ( ...@@ -42,6 +42,7 @@ import (
//Relayer4Ethereum ... //Relayer4Ethereum ...
type Relayer4Ethereum struct { type Relayer4Ethereum struct {
provider string provider string
providerHttp string
clientChainID *big.Int clientChainID *big.Int
bridgeRegistryAddr common.Address bridgeRegistryAddr common.Address
db dbm.DB db dbm.DB
...@@ -56,6 +57,7 @@ type Relayer4Ethereum struct { ...@@ -56,6 +57,7 @@ type Relayer4Ethereum struct {
fetchHeightPeriodMs int32 fetchHeightPeriodMs int32
eventLogIndex ebTypes.EventLogIndex eventLogIndex ebTypes.EventLogIndex
clientSpec ethinterface.EthClientSpec clientSpec ethinterface.EthClientSpec
clientWss ethinterface.EthClientSpec
bridgeBankAddr common.Address bridgeBankAddr common.Address
bridgeBankSub ethereum.Subscription bridgeBankSub ethereum.Subscription
bridgeBankLog chan types.Log bridgeBankLog chan types.Log
...@@ -86,6 +88,7 @@ const ( ...@@ -86,6 +88,7 @@ const (
type EthereumStartPara struct { type EthereumStartPara struct {
DbHandle dbm.DB DbHandle dbm.DB
EthProvider string EthProvider string
EthProviderHttp string
BridgeRegistryAddr string BridgeRegistryAddr string
DeployInfo *ebTypes.Deploy DeployInfo *ebTypes.Deploy
Degree int32 Degree int32
...@@ -101,6 +104,7 @@ func StartEthereumRelayer(startPara *EthereumStartPara) *Relayer4Ethereum { ...@@ -101,6 +104,7 @@ func StartEthereumRelayer(startPara *EthereumStartPara) *Relayer4Ethereum {
} }
ethRelayer := &Relayer4Ethereum{ ethRelayer := &Relayer4Ethereum{
provider: startPara.EthProvider, provider: startPara.EthProvider,
providerHttp: startPara.EthProviderHttp,
db: startPara.DbHandle, db: startPara.DbHandle,
unlockchan: make(chan int, 2), unlockchan: make(chan int, 2),
bridgeRegistryAddr: common.HexToAddress(startPara.BridgeRegistryAddr), bridgeRegistryAddr: common.HexToAddress(startPara.BridgeRegistryAddr),
...@@ -129,12 +133,17 @@ func StartEthereumRelayer(startPara *EthereumStartPara) *Relayer4Ethereum { ...@@ -129,12 +133,17 @@ func StartEthereumRelayer(startPara *EthereumStartPara) *Relayer4Ethereum {
// Start clientSpec with infura ropsten provider // Start clientSpec with infura ropsten provider
relayerLog.Info("Relayer4Ethereum proc", "Started Ethereum websocket with provider:", ethRelayer.provider) relayerLog.Info("Relayer4Ethereum proc", "Started Ethereum websocket with provider:", ethRelayer.provider)
client, err := ethtxs.SetupWebsocketEthClient(ethRelayer.provider) client, err := ethtxs.SetupWebsocketEthClient(ethRelayer.providerHttp)
if err != nil { if err != nil {
panic(err) panic(err)
} }
ethRelayer.clientSpec = client ethRelayer.clientSpec = client
ethRelayer.clientWss, err = ethtxs.SetupWebsocketEthClient(ethRelayer.provider)
if err != nil {
panic(err)
}
ctx := context.Background() ctx := context.Background()
clientChainID, err := client.NetworkID(ctx) clientChainID, err := client.NetworkID(ctx)
if err != nil { if err != nil {
...@@ -809,7 +818,7 @@ func (ethRelayer *Relayer4Ethereum) subscribeEvent() { ...@@ -809,7 +818,7 @@ func (ethRelayer *Relayer4Ethereum) subscribeEvent() {
// We will check logs for new events // We will check logs for new events
logs := make(chan types.Log, 10) logs := make(chan types.Log, 10)
// Filter by contract and event, write results to logs // Filter by contract and event, write results to logs
sub, err := ethRelayer.clientSpec.SubscribeFilterLogs(context.Background(), query, logs) sub, err := ethRelayer.clientWss.SubscribeFilterLogs(context.Background(), query, logs)
if err != nil { if err != nil {
errinfo := fmt.Sprintf("Failed to SubscribeFilterLogs due to:%s, bridgeBankAddr:%s", err.Error(), ethRelayer.bridgeBankAddr) errinfo := fmt.Sprintf("Failed to SubscribeFilterLogs due to:%s, bridgeBankAddr:%s", err.Error(), ethRelayer.bridgeBankAddr)
panic(errinfo) panic(errinfo)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment