From 67b0285d8280af2f89adb556ab1a2de99fd11b15 Mon Sep 17 00:00:00 2001 From: mj52951 Date: Thu, 18 Jan 2024 14:21:13 +0100 Subject: [PATCH] Removing deprecated Substrate message handling logic --- app/app.go | 4 +- chains/substrate/executor/message-handler.go | 54 +++---------------- .../executor/message-handler_test.go | 24 +++++---- 3 files changed, 22 insertions(+), 60 deletions(-) diff --git a/app/app.go b/app/app.go index 63b3a244..9183607f 100644 --- a/app/app.go +++ b/app/app.go @@ -246,8 +246,8 @@ func Run() error { eventHandlers = append(eventHandlers, substrate_listener.NewRetryEventHandler(l, conn, depositHandler, *config.GeneralChainConfig.Id)) substrateListener := substrate_listener.NewSubstrateListener(conn, eventHandlers, config) - mh := substrateExecutor.NewSubstrateMessageHandler() - mh.RegisterMessageHandler(substrateExecutor.FungibleTransfer, substrateExecutor.FungibleTransferMessageHandler) + mh := coreMessage.NewMessageHandler() + mh.RegisterMessageHandler(substrateExecutor.FungibleTransfer, &substrateExecutor.SubstrateMessageHandler{}) sExecutor := substrateExecutor.NewExecutor(host, communication, coordinator, bridgePallet, keyshareStore, conn, exitLock) substrateChain := coreSubstrate.NewSubstrateChain(substrateListener, mh, sExecutor, *config.GeneralChainConfig.Id, config.StartBlock) diff --git a/chains/substrate/executor/message-handler.go b/chains/substrate/executor/message-handler.go index b13506c1..d8b3f401 100644 --- a/chains/substrate/executor/message-handler.go +++ b/chains/substrate/executor/message-handler.go @@ -5,32 +5,15 @@ package executor import ( "errors" - "fmt" "math/big" "github.com/ChainSafe/sygma-relayer/chains" "github.com/ethereum/go-ethereum/common" "github.com/sygmaprotocol/sygma-core/relayer/message" "github.com/sygmaprotocol/sygma-core/relayer/proposal" - - "github.com/rs/zerolog/log" ) -type Handlers map[message.MessageType]MessageHandlerFunc -type MessageHandlerFunc func(m *chains.TransferMessage) (*proposal.Proposal, error) - -type SubstrateMessageHandler struct { - handlers Handlers -} - -// NewSubstrateMessageHandler creates an instance of SubstrateMessageHandler that contains -// message handler functions for converting deposit message into a chain specific -// proposal -func NewSubstrateMessageHandler() *SubstrateMessageHandler { - return &SubstrateMessageHandler{ - handlers: make(map[message.MessageType]MessageHandlerFunc), - } -} +type SubstrateMessageHandler struct{} func (mh *SubstrateMessageHandler) HandleMessage(m *message.Message) (*proposal.Proposal, error) { transferMessage := &chains.TransferMessage{ @@ -39,39 +22,14 @@ func (mh *SubstrateMessageHandler) HandleMessage(m *message.Message) (*proposal. Data: m.Data.(chains.TransferMessageData), Type: m.Type, } - // Based on handler that was registered on BridgeContract - handleMessage, err := mh.matchTransferTypeHandlerFunc(transferMessage.Type) - if err != nil { - return nil, err - } - log.Info().Str("type", string(transferMessage.Type)).Uint8("src", transferMessage.Source).Uint8("dst", transferMessage.Destination).Uint64("nonce", transferMessage.Data.DepositNonce).Str("resourceID", fmt.Sprintf("%x", transferMessage.Data.ResourceId)).Msg("Handling new message") - prop, err := handleMessage(transferMessage) - if err != nil { - return nil, err - } - return prop, nil -} - -func (mh *SubstrateMessageHandler) matchTransferTypeHandlerFunc(transferType message.MessageType) (MessageHandlerFunc, error) { - h, ok := mh.handlers[transferType] - if !ok { - return nil, fmt.Errorf("no corresponding message handler for this transfer type %s exists", transferType) - } - return h, nil -} - -// RegisterEventHandler registers an message handler by associating a handler function to a specified transfer type -func (mh *SubstrateMessageHandler) RegisterMessageHandler(transferType message.MessageType, handler MessageHandlerFunc) { - if transferType == "" { - return + switch transferMessage.Type { + case FungibleTransfer: + return fungibleTransferMessageHandler(transferMessage) } - - log.Info().Msgf("Registered message handler for transfer type %s", transferType) - - mh.handlers[transferType] = handler + return nil, errors.New("wrong message type passed while handling message") } -func FungibleTransferMessageHandler(m *chains.TransferMessage) (*proposal.Proposal, error) { +func fungibleTransferMessageHandler(m *chains.TransferMessage) (*proposal.Proposal, error) { if len(m.Data.Payload) != 2 { return nil, errors.New("malformed payload. Len of payload should be 2") diff --git a/chains/substrate/executor/message-handler_test.go b/chains/substrate/executor/message-handler_test.go index b002d206..f84b2f45 100644 --- a/chains/substrate/executor/message-handler_test.go +++ b/chains/substrate/executor/message-handler_test.go @@ -35,7 +35,7 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessage() { recipientAddr := *(*[]types.U8)(unsafe.Pointer(&substrate.SubstratePK.PublicKey)) recipient := substrate.ConstructRecipientData(recipientAddr) - message := &chains.TransferMessage{ + message := &message.Message{ Source: 1, Destination: 2, Data: chains.TransferMessageData{ @@ -61,14 +61,15 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessage() { Type: "Transfer", } - prop, err := executor.FungibleTransferMessageHandler(message) + mh := executor.SubstrateMessageHandler{} + prop, err := mh.HandleMessage(message) s.Nil(err) s.Equal(prop, expectedProp) } func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageIncorrectDataLen() { - message := &chains.TransferMessage{ + message := &message.Message{ Source: 1, Destination: 0, Data: chains.TransferMessageData{ @@ -82,7 +83,8 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageInco Type: executor.FungibleTransfer, } - prop, err := executor.FungibleTransferMessageHandler(message) + mh := executor.SubstrateMessageHandler{} + prop, err := mh.HandleMessage(message) s.Nil(prop) s.NotNil(err) @@ -90,7 +92,7 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageInco } func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageIncorrectAmount() { - message := &chains.TransferMessage{ + message := &message.Message{ Source: 1, Destination: 0, Data: chains.TransferMessageData{ @@ -105,7 +107,8 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageInco Type: executor.FungibleTransfer, } - prop, err := executor.FungibleTransferMessageHandler(message) + mh := executor.SubstrateMessageHandler{} + prop, err := mh.HandleMessage(message) s.Nil(prop) s.NotNil(err) @@ -113,7 +116,7 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageInco } func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageIncorrectRecipient() { - message := &chains.TransferMessage{ + message := &message.Message{ Source: 1, Destination: 0, Data: chains.TransferMessageData{ @@ -128,7 +131,8 @@ func (s *FungibleTransferHandlerTestSuite) TestFungibleTransferHandleMessageInco Type: executor.FungibleTransfer, } - prop, err := executor.FungibleTransferMessageHandler(message) + mh := executor.SubstrateMessageHandler{} + prop, err := mh.HandleMessage(message) s.Nil(prop) s.NotNil(err) @@ -169,9 +173,9 @@ func (s *FungibleTransferHandlerTestSuite) TestSuccesfullyRegisterFungibleTransf Type: "NonFungibleTransfer", } - depositMessageHandler := executor.NewSubstrateMessageHandler() + depositMessageHandler := message.NewMessageHandler() // Register FungibleTransferMessageHandler function - depositMessageHandler.RegisterMessageHandler(executor.FungibleTransfer, executor.FungibleTransferMessageHandler) + depositMessageHandler.RegisterMessageHandler(executor.FungibleTransfer, &executor.SubstrateMessageHandler{}) prop1, err1 := depositMessageHandler.HandleMessage(messageData) s.Nil(err1) s.NotNil(prop1)