Skip to content

Commit

Permalink
Prevent nonce deposit collision
Browse files Browse the repository at this point in the history
  • Loading branch information
mpetrun5 committed Sep 4, 2024
1 parent 7db6167 commit 2441af9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
9 changes: 8 additions & 1 deletion chains/evm/listener/eventHandlers/event-handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import (
"github.com/libp2p/go-libp2p/core/host"
)

const NONCE_OFFSET uint64 = 1000000000000000

type EventListener interface {
FetchKeygenEvents(ctx context.Context, address common.Address, startBlock *big.Int, endBlock *big.Int) ([]ethTypes.Log, error)
FetchFrostKeygenEvents(ctx context.Context, address common.Address, startBlock *big.Int, endBlock *big.Int) ([]ethTypes.Log, error)
Expand Down Expand Up @@ -498,11 +500,16 @@ func (eh *TransferLiqudityEventHandler) HandleEvents(
e.DestinationAddress,
}

depositNonce := chains.CalculateNonce(endBlock, e.TransactionHash)
// prevents nonce collisions with regular deposits
if depositNonce < NONCE_OFFSET {
depositNonce += NONCE_OFFSET
}
msg := message.NewMessage(
eh.domainID,
e.DomainID,
transfer.TransferMessageData{
DepositNonce: chains.CalculateNonce(endBlock, e.TransactionHash),
DepositNonce: depositNonce,
ResourceId: e.ResourceID,
Metadata: nil,
Payload: payload,
Expand Down
5 changes: 2 additions & 3 deletions chains/evm/listener/eventHandlers/event-handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/suite"

"github.com/ChainSafe/sygma-relayer/chains"
"github.com/ChainSafe/sygma-relayer/chains/evm/calls/events"
"github.com/ChainSafe/sygma-relayer/chains/evm/listener/eventHandlers"
mock_listener "github.com/ChainSafe/sygma-relayer/chains/evm/listener/eventHandlers/mock"
Expand Down Expand Up @@ -567,7 +566,7 @@ func (s *TransferLiqudityHandlerTestSuite) Test_ValidEvents() {
s.Equal(len(msg1), 1)
s.Equal(len(msg2), 1)
s.Equal(msg1[0].Data.(transfer.TransferMessageData), transfer.TransferMessageData{
DepositNonce: chains.CalculateNonce(big.NewInt(5), e1.TransactionHash),
DepositNonce: 1147060075541026355,
ResourceId: e1.ResourceID,
Metadata: nil,
Payload: []interface{}{
Expand All @@ -577,7 +576,7 @@ func (s *TransferLiqudityHandlerTestSuite) Test_ValidEvents() {
Type: transfer.FungibleTransfer,
})
s.Equal(msg2[0].Data.(transfer.TransferMessageData), transfer.TransferMessageData{
DepositNonce: chains.CalculateNonce(big.NewInt(5), e2.TransactionHash),
DepositNonce: 17571779095163939953,
ResourceId: e2.ResourceID,
Metadata: nil,
Payload: []interface{}{
Expand Down

0 comments on commit 2441af9

Please sign in to comment.