diff --git a/go.mod b/go.mod index 12479e8..2bfd9e7 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.3 require ( cosmossdk.io/math v1.4.0 cosmossdk.io/x/tx v0.13.5 - github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4 + github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161 github.com/cometbft/cometbft v0.38.12 github.com/cosmos/cosmos-sdk v0.50.10 github.com/cosmos/gogoproto v1.7.0 diff --git a/go.sum b/go.sum index 8f78c6d..ffac504 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4 h1:7bsvpGDgM62+AKJIRtKX8UJX2B8x7ezMVNiUpOherVY= -github.com/bandprotocol/chain/v3 v3.0.0-20241129172445-c5b601ea4ba4/go.mod h1:7609g+Iyhar8ySbKEJiqHfRq8xwJh5r2YE5vBebXMS4= +github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161 h1:WMKRzgZL3OEiW2AbIzlYiHOplKY3ZBimTTPFNi8OhNA= +github.com/bandprotocol/chain/v3 v3.0.0-20241202095241-21710ba55161/go.mod h1:7609g+Iyhar8ySbKEJiqHfRq8xwJh5r2YE5vBebXMS4= github.com/bandprotocol/go-owasm v0.3.1 h1:L38qAEmb0KyTICHBHJaBoo6yy5+BlbOzQeQ+ioUV5Uw= github.com/bandprotocol/go-owasm v0.3.1/go.mod h1:SAzGihlBl8eZDXA1dO2aeAZLm8J2QkNd+KvnA2Dw9Kg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= diff --git a/relayer/band/client_test.go b/relayer/band/client_test.go index 8a9df96..52a1462 100644 --- a/relayer/band/client_test.go +++ b/relayer/band/client_test.go @@ -72,7 +72,6 @@ func (s *AppTestSuite) TestGetTunnel() { ID: uint64(1), Sequence: 100, Route: any, - Encoder: 0, FeePayer: "cosmos1xyz...", SignalDeviations: []tunneltypes.SignalDeviation{}, Interval: 60, diff --git a/relayer/chains/evm/provider.go b/relayer/chains/evm/provider.go index a1beb7a..de8cad2 100644 --- a/relayer/chains/evm/provider.go +++ b/relayer/chains/evm/provider.go @@ -171,6 +171,18 @@ func (cp *EVMChainProvider) RelayPacket( return fmt.Errorf("failed to estimate gas: %w", err) } + // get a free sender + sender := <-cp.FreeSenders + defer func() { cp.FreeSenders <- sender }() + + cp.Log.Debug( + fmt.Sprintf("Relaying packet using address: %v", sender.Address), + zap.String("evm_sender_address", sender.Address.String()), + zap.String("chain_name", cp.ChainName), + zap.Uint64("tunnel_id", packet.TunnelID), + zap.Uint64("sequence", packet.Sequence), + ) + retryCount := 0 for retryCount < cp.Config.MaxRetry { cp.Log.Info( @@ -182,7 +194,7 @@ func (cp *EVMChainProvider) RelayPacket( ) // create and submit a transaction; if failed, retry, no need to bump gas. - txHash, err := cp.handleRelay(ctx, packet, gasInfo) + txHash, err := cp.handleRelay(ctx, packet, sender, gasInfo) if err != nil { cp.Log.Error( "HandleRelay error", @@ -293,6 +305,7 @@ func (cp *EVMChainProvider) RelayPacket( func (cp *EVMChainProvider) handleRelay( ctx context.Context, packet *bandtypes.Packet, + sender *Sender, gasInfo GasInfo, ) (txHash string, err error) { calldata, err := cp.createCalldata(packet) @@ -300,21 +313,6 @@ func (cp *EVMChainProvider) handleRelay( return "", fmt.Errorf("failed to create calldata: %w", err) } - if len(cp.FreeSenders) == 0 { - return "", fmt.Errorf("no key available to relay packet") - } - - sender := <-cp.FreeSenders - defer func() { cp.FreeSenders <- sender }() - - cp.Log.Debug( - fmt.Sprintf("Relaying packet using address: %v", sender.Address), - zap.String("evm_sender_address", sender.Address.String()), - zap.String("chain_name", cp.ChainName), - zap.Uint64("tunnel_id", packet.TunnelID), - zap.Uint64("sequence", packet.Sequence), - ) - tx, err := cp.newRelayTx(ctx, calldata, sender.Address, gasInfo) if err != nil { return "", fmt.Errorf("failed to create an evm transaction: %w", err)