Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

Commit 9ad5cad

Browse files
mpetrun5Matija Petrunic
andauthored
feat: implement transaction monitor (#340)
* feat: implement transaction monitor * Increase gas by one if the percentage increase didn't change the value * Avoid blocking calls if message channel not ready * Improve logs * Add increase gas tests * Rename increaseFactor param --------- Co-authored-by: Matija Petrunic <matija.petrunic@gmailcom>
1 parent 2ce7357 commit 9ad5cad

File tree

15 files changed

+630
-115
lines changed

15 files changed

+630
-115
lines changed

chains/evm/calls/calls.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type GasPricer interface {
3030
type ClientDispatcher interface {
3131
WaitAndReturnTxReceipt(h common.Hash) (*types.Receipt, error)
3232
SignAndSendTransaction(ctx context.Context, tx evmclient.CommonTransaction) (common.Hash, error)
33+
TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
3334
GetTransactionByHash(h common.Hash) (tx *types.Transaction, isPending bool, err error)
3435
UnsafeNonce() (*big.Int, error)
3536
LockNonce()

chains/evm/calls/contracts/bridge/bridge_test.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor"
1212

1313
mock_transactor "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/mock"
14-
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/signAndSend"
1514
"github.com/ChainSafe/chainbridge-core/chains/evm/executor/proposal"
1615
"github.com/ChainSafe/chainbridge-core/relayer/message"
1716
"github.com/ethereum/go-ethereum/common"
@@ -133,7 +132,7 @@ func (s *ProposalStatusTestSuite) TestBridge_AddRelayer_Success() {
133132
gomock.Any(),
134133
gomock.Any(),
135134
).Return(&common.Hash{1, 2, 3, 4, 5}, nil)
136-
res, err := s.bridgeContract.AddRelayer(common.HexToAddress(testRelayerAddress), signAndSend.DefaultTransactionOptions)
135+
res, err := s.bridgeContract.AddRelayer(common.HexToAddress(testRelayerAddress), transactor.DefaultTransactionOptions)
137136
s.Equal(
138137
&common.Hash{1, 2, 3, 4, 5},
139138
res,
@@ -147,7 +146,7 @@ func (s *ProposalStatusTestSuite) TestBridge_AdminSetGenericResource_Success() {
147146
gomock.Any(),
148147
gomock.Any(),
149148
).Return(&common.Hash{10, 11, 12, 13, 14}, nil)
150-
res, err := s.bridgeContract.AdminSetGenericResource(common.HexToAddress(testHandlerAddress), [32]byte{1}, common.HexToAddress(testInteractorAddress), [4]byte{2}, big.NewInt(0), [4]byte{3}, signAndSend.DefaultTransactionOptions)
149+
res, err := s.bridgeContract.AdminSetGenericResource(common.HexToAddress(testHandlerAddress), [32]byte{1}, common.HexToAddress(testInteractorAddress), [4]byte{2}, big.NewInt(0), [4]byte{3}, transactor.DefaultTransactionOptions)
151150
s.Equal(
152151
&common.Hash{10, 11, 12, 13, 14},
153152
res,
@@ -161,7 +160,7 @@ func (s *ProposalStatusTestSuite) TestBridge_AdminSetResource_Success() {
161160
gomock.Any(),
162161
gomock.Any(),
163162
).Return(&common.Hash{10, 11, 12, 13, 14, 15, 16}, nil)
164-
res, err := s.bridgeContract.AdminSetResource(common.HexToAddress(testHandlerAddress), testResourceId, common.HexToAddress(testContractAddress), signAndSend.DefaultTransactionOptions)
163+
res, err := s.bridgeContract.AdminSetResource(common.HexToAddress(testHandlerAddress), testResourceId, common.HexToAddress(testContractAddress), transactor.DefaultTransactionOptions)
165164
s.Equal(
166165
&common.Hash{10, 11, 12, 13, 14, 15, 16},
167166
res,
@@ -175,7 +174,7 @@ func (s *ProposalStatusTestSuite) TestBridge_SetDepositNonce_Success() {
175174
gomock.Any(),
176175
gomock.Any(),
177176
).Return(&common.Hash{20, 21, 22, 23}, nil)
178-
res, err := s.bridgeContract.SetDepositNonce(testDomainId, uint64(0), signAndSend.DefaultTransactionOptions)
177+
res, err := s.bridgeContract.SetDepositNonce(testDomainId, uint64(0), transactor.DefaultTransactionOptions)
179178
s.Equal(
180179
&common.Hash{20, 21, 22, 23},
181180
res,
@@ -189,7 +188,7 @@ func (s *ProposalStatusTestSuite) TestBridge_SetThresholdInput_Success() {
189188
gomock.Any(),
190189
gomock.Any(),
191190
).Return(&common.Hash{22, 23, 24, 25}, nil)
192-
res, err := s.bridgeContract.AdminChangeRelayerThreshold(uint64(2), signAndSend.DefaultTransactionOptions)
191+
res, err := s.bridgeContract.AdminChangeRelayerThreshold(uint64(2), transactor.DefaultTransactionOptions)
193192
s.Equal(
194193
&common.Hash{22, 23, 24, 25},
195194
res,
@@ -203,7 +202,7 @@ func (s *ProposalStatusTestSuite) TestBridge_SetBurnableInput_Success() {
203202
gomock.Any(),
204203
gomock.Any(),
205204
).Return(&common.Hash{25, 26, 27, 28}, nil)
206-
res, err := s.bridgeContract.SetBurnableInput(common.HexToAddress(testHandlerAddress), common.HexToAddress(testContractAddress), signAndSend.DefaultTransactionOptions)
205+
res, err := s.bridgeContract.SetBurnableInput(common.HexToAddress(testHandlerAddress), common.HexToAddress(testContractAddress), transactor.DefaultTransactionOptions)
207206
s.Equal(
208207
&common.Hash{25, 26, 27, 28},
209208
res,
@@ -217,7 +216,7 @@ func (s *ProposalStatusTestSuite) TestBridge_Erc20Deposit_Success() {
217216
gomock.Any(),
218217
gomock.Any(),
219218
).Return(&common.Hash{30, 31, 32, 33}, nil)
220-
res, err := s.bridgeContract.Erc20Deposit(common.HexToAddress(testInteractorAddress), big.NewInt(10), testResourceId, testDomainId, signAndSend.DefaultTransactionOptions)
219+
res, err := s.bridgeContract.Erc20Deposit(common.HexToAddress(testInteractorAddress), big.NewInt(10), testResourceId, testDomainId, transactor.DefaultTransactionOptions)
221220
s.Equal(
222221
&common.Hash{30, 31, 32, 33},
223222
res,
@@ -231,7 +230,7 @@ func (s *ProposalStatusTestSuite) TestBridge_Erc721Deposit_Success() {
231230
gomock.Any(),
232231
gomock.Any(),
233232
).Return(&common.Hash{32, 33, 34, 35}, nil)
234-
res, err := s.bridgeContract.Erc721Deposit(big.NewInt(55), "token_uri", common.HexToAddress(testInteractorAddress), testResourceId, testDomainId, signAndSend.DefaultTransactionOptions)
233+
res, err := s.bridgeContract.Erc721Deposit(big.NewInt(55), "token_uri", common.HexToAddress(testInteractorAddress), testResourceId, testDomainId, transactor.DefaultTransactionOptions)
235234
s.Equal(
236235
&common.Hash{32, 33, 34, 35},
237236
res,
@@ -245,7 +244,7 @@ func (s *ProposalStatusTestSuite) TestBridge_GenericDeposit_Success() {
245244
gomock.Any(),
246245
gomock.Any(),
247246
).Return(&common.Hash{35, 36, 37, 38}, nil)
248-
res, err := s.bridgeContract.GenericDeposit([]byte{1, 2, 3}, testResourceId, testDomainId, signAndSend.DefaultTransactionOptions)
247+
res, err := s.bridgeContract.GenericDeposit([]byte{1, 2, 3}, testResourceId, testDomainId, transactor.DefaultTransactionOptions)
249248
s.Equal(
250249
&common.Hash{35, 36, 37, 38},
251250
res,
@@ -259,7 +258,7 @@ func (s *ProposalStatusTestSuite) TestBridge_ExecuteProposal_Success() {
259258
gomock.Any(),
260259
gomock.Any(),
261260
).Return(&common.Hash{36, 37, 38}, nil)
262-
res, err := s.bridgeContract.ExecuteProposal(&s.proposal, signAndSend.DefaultTransactionOptions)
261+
res, err := s.bridgeContract.ExecuteProposal(&s.proposal, transactor.DefaultTransactionOptions)
263262
s.Equal(
264263
&common.Hash{36, 37, 38},
265264
res,
@@ -273,7 +272,7 @@ func (s *ProposalStatusTestSuite) TestBridge_VoteProposal_Success() {
273272
gomock.Any(),
274273
gomock.Any(),
275274
).Return(&common.Hash{37, 38, 39}, nil)
276-
res, err := s.bridgeContract.VoteProposal(&s.proposal, signAndSend.DefaultTransactionOptions)
275+
res, err := s.bridgeContract.VoteProposal(&s.proposal, transactor.DefaultTransactionOptions)
277276
s.Equal(
278277
&common.Hash{37, 38, 39},
279278
res,
@@ -298,7 +297,7 @@ func (s *ProposalStatusTestSuite) TestBridge_Pause_Success() {
298297
gomock.Any(),
299298
gomock.Any(),
300299
).Return(&common.Hash{40, 41, 42}, nil)
301-
res, err := s.bridgeContract.Pause(signAndSend.DefaultTransactionOptions)
300+
res, err := s.bridgeContract.Pause(transactor.DefaultTransactionOptions)
302301
s.Equal(
303302
&common.Hash{40, 41, 42},
304303
res,
@@ -312,7 +311,7 @@ func (s *ProposalStatusTestSuite) TestBridge_Unpause_Success() {
312311
gomock.Any(),
313312
gomock.Any(),
314313
).Return(&common.Hash{42, 43, 44}, nil)
315-
res, err := s.bridgeContract.Unpause(signAndSend.DefaultTransactionOptions)
314+
res, err := s.bridgeContract.Unpause(transactor.DefaultTransactionOptions)
316315
s.Equal(
317316
&common.Hash{42, 43, 44},
318317
res,
@@ -330,7 +329,7 @@ func (s *ProposalStatusTestSuite) TestBridge_Withdraw_Success() {
330329
common.HexToAddress(testHandlerAddress),
331330
common.HexToAddress(testContractAddress),
332331
common.HexToAddress(testInteractorAddress),
333-
big.NewInt(5), signAndSend.DefaultTransactionOptions,
332+
big.NewInt(5), transactor.DefaultTransactionOptions,
334333
)
335334
s.Equal(
336335
&common.Hash{44, 45, 46},

chains/evm/calls/contracts/erc20/erc20_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66

77
erc20 "github.com/ChainSafe/chainbridge-core/chains/evm/calls/contracts/erc20"
88
mock_calls "github.com/ChainSafe/chainbridge-core/chains/evm/calls/mock"
9+
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor"
910
mock_transactor "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/mock"
10-
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/signAndSend"
1111
"github.com/ethereum/go-ethereum/common"
1212
"github.com/golang/mock/gomock"
1313
"github.com/stretchr/testify/suite"
@@ -63,7 +63,7 @@ func (s *ERC20ContractCallsTestSuite) TestErc20Contract_MintTokens_Success() {
6363
gomock.Any(),
6464
gomock.Any(),
6565
).Return(&common.Hash{1, 2, 3, 4, 5}, nil)
66-
res, err := s.erc20contract.MintTokens(common.HexToAddress(testInteractorAddress), big.NewInt(10), signAndSend.DefaultTransactionOptions)
66+
res, err := s.erc20contract.MintTokens(common.HexToAddress(testInteractorAddress), big.NewInt(10), transactor.DefaultTransactionOptions)
6767
s.Equal(
6868
&common.Hash{1, 2, 3, 4, 5},
6969
res,
@@ -77,7 +77,7 @@ func (s *ERC20ContractCallsTestSuite) TestErc20Contract_ApproveTokens_Success()
7777
gomock.Any(),
7878
gomock.Any(),
7979
).Return(&common.Hash{1, 2, 3, 4, 5, 6, 7, 8, 9}, nil)
80-
res, err := s.erc20contract.ApproveTokens(common.HexToAddress(testInteractorAddress), big.NewInt(100), signAndSend.DefaultTransactionOptions)
80+
res, err := s.erc20contract.ApproveTokens(common.HexToAddress(testInteractorAddress), big.NewInt(100), transactor.DefaultTransactionOptions)
8181
s.Equal(
8282
&common.Hash{1, 2, 3, 4, 5, 6, 7, 8, 9},
8383
res,
@@ -112,7 +112,7 @@ func (s *ERC20ContractCallsTestSuite) TestErc20Contract_AddMinter_Success() {
112112
gomock.Any(),
113113
gomock.Any(),
114114
).Return(&common.Hash{1, 2, 3}, nil)
115-
res, err := s.erc20contract.AddMinter(common.HexToAddress(testInteractorAddress), signAndSend.DefaultTransactionOptions)
115+
res, err := s.erc20contract.AddMinter(common.HexToAddress(testInteractorAddress), transactor.DefaultTransactionOptions)
116116
s.Equal(
117117
&common.Hash{1, 2, 3},
118118
res,

chains/evm/calls/contracts/erc721/erc721_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99

1010
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor"
1111
mock_transactor "github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/mock"
12-
"github.com/ChainSafe/chainbridge-core/chains/evm/calls/transactor/signAndSend"
1312
"github.com/ethereum/go-ethereum/common"
1413
"github.com/golang/mock/gomock"
1514
"github.com/stretchr/testify/suite"
@@ -108,7 +107,7 @@ func (s *ERC721CallsTestSuite) TestERC721Contract_AddMinter_Success() {
108107
gomock.Any(),
109108
gomock.Any(),
110109
).Return(&common.Hash{1, 2, 3}, nil)
111-
res, err := s.erc721Contract.AddMinter(common.HexToAddress(testInteractorAddress), signAndSend.DefaultTransactionOptions)
110+
res, err := s.erc721Contract.AddMinter(common.HexToAddress(testInteractorAddress), transactor.DefaultTransactionOptions)
112111
s.Equal(
113112
&common.Hash{1, 2, 3},
114113
res,
@@ -122,7 +121,7 @@ func (s *ERC721CallsTestSuite) TestERC721Contract_MintTokens_Success() {
122121
gomock.Any(),
123122
gomock.Any(),
124123
).Return(&common.Hash{1, 2, 3, 4, 5}, nil)
125-
res, err := s.erc721Contract.Mint(big.NewInt(5), "token_uri", common.HexToAddress(testInteractorAddress), signAndSend.DefaultTransactionOptions)
124+
res, err := s.erc721Contract.Mint(big.NewInt(5), "token_uri", common.HexToAddress(testInteractorAddress), transactor.DefaultTransactionOptions)
126125
s.Equal(
127126
&common.Hash{1, 2, 3, 4, 5},
128127
res,

chains/evm/calls/mock/calls.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)