diff --git a/Makefile b/Makefile index 4806f79f..8e402664 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,6 @@ genmocks: mockgen -source=./api/handlers/signing.go -destination=./api/handlers/mock/signing.go mockgen -package mock_message -destination=./chains/evm/message/mock/pricing.go github.com/sprintertech/solver-sdk/pkg/pricing OrderPricer mockgen -source=./chains/lighter/message/lighter.go -destination=./chains/lighter/message/mock/lighter.go - mockgen -source=./chains/tron/message/signing.go -destination=./chains/tron/message/mock/signing.go mockgen -source=./protocol/lifi/event.go -destination=./protocol/lifi/mock/event.go mockgen -source=./protocol/across/deposit.go -destination=./protocol/across/mock/deposit.go diff --git a/app/app.go b/app/app.go index 07beff95..f2ea11cd 100644 --- a/app/app.go +++ b/app/app.go @@ -39,8 +39,6 @@ import ( "github.com/sprintertech/sprinter-signing/chains/evm/calls/events" evmListener "github.com/sprintertech/sprinter-signing/chains/evm/listener" evmMessage "github.com/sprintertech/sprinter-signing/chains/evm/message" - "github.com/sprintertech/sprinter-signing/chains/tron" - tronMessage "github.com/sprintertech/sprinter-signing/chains/tron/message" "github.com/sprintertech/sprinter-signing/metrics" "github.com/sprintertech/sprinter-signing/price" @@ -415,11 +413,6 @@ func Run() error { domains[lighter.LIGHTER_DOMAIN_ID] = lighterChain supportedChains[lighter.LIGHTER_DOMAIN_ID] = struct{}{} - tronMh := message.NewMessageHandler() - tronSignHandler := tronMessage.NewSignHandler(coordinator, host, communication, keyshareStore) - tronMh.RegisterMessageHandler(evmMessage.SignMessageType, tronSignHandler) - domains[tron.ChainID] = tron.NewTronChain(tronMh) - go jobs.StartCommunicationHealthCheckJob(host, configuration.RelayerConfig.MpcConfig.CommHealthCheckInterval, sygmaMetrics) r := relayer.NewRelayer(domains, sygmaMetrics) diff --git a/chains/tron/chain.go b/chains/tron/chain.go deleted file mode 100644 index fdd0c89e..00000000 --- a/chains/tron/chain.go +++ /dev/null @@ -1,34 +0,0 @@ -package tron - -import ( - "context" - - "github.com/sygmaprotocol/sygma-core/relayer/message" - "github.com/sygmaprotocol/sygma-core/relayer/proposal" -) - -type MessageHandler interface { - HandleMessage(m *message.Message) (*proposal.Proposal, error) -} - -type TronChain struct { - messageHandler MessageHandler -} - -func NewTronChain(messageHandler MessageHandler) *TronChain { - return &TronChain{messageHandler: messageHandler} -} - -func (c *TronChain) PollEvents(_ context.Context) {} - -func (c *TronChain) ReceiveMessage(m *message.Message) (*proposal.Proposal, error) { - return c.messageHandler.HandleMessage(m) -} - -func (c *TronChain) Write(_ []*proposal.Proposal) error { - return nil -} - -func (c *TronChain) DomainID() uint64 { - return ChainID -} diff --git a/chains/tron/config.go b/chains/tron/config.go deleted file mode 100644 index 37d6add7..00000000 --- a/chains/tron/config.go +++ /dev/null @@ -1,7 +0,0 @@ -package tron - -import ( - "github.com/sprintertech/solver-sdk/pkg/chains/caip" -) - -const ChainID = caip.TronChainID diff --git a/chains/tron/message/mock/signing.go b/chains/tron/message/mock/signing.go deleted file mode 100644 index ab7e1d29..00000000 --- a/chains/tron/message/mock/signing.go +++ /dev/null @@ -1,57 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: ./chains/tron/message/signing.go -// -// Generated by this command: -// -// mockgen -source=./chains/tron/message/signing.go -destination=./chains/tron/message/mock/signing.go -// - -// Package mock_message is a generated GoMock package. -package mock_message - -import ( - context "context" - reflect "reflect" - - peer "github.com/libp2p/go-libp2p/core/peer" - tss "github.com/sprintertech/sprinter-signing/tss" - gomock "go.uber.org/mock/gomock" -) - -// MockCoordinator is a mock of Coordinator interface. -type MockCoordinator struct { - ctrl *gomock.Controller - recorder *MockCoordinatorMockRecorder - isgomock struct{} -} - -// MockCoordinatorMockRecorder is the mock recorder for MockCoordinator. -type MockCoordinatorMockRecorder struct { - mock *MockCoordinator -} - -// NewMockCoordinator creates a new mock instance. -func NewMockCoordinator(ctrl *gomock.Controller) *MockCoordinator { - mock := &MockCoordinator{ctrl: ctrl} - mock.recorder = &MockCoordinatorMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockCoordinator) EXPECT() *MockCoordinatorMockRecorder { - return m.recorder -} - -// Execute mocks base method. -func (m *MockCoordinator) Execute(ctx context.Context, tssProcesses []tss.TssProcess, resultChn chan any, coordinator peer.ID) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Execute", ctx, tssProcesses, resultChn, coordinator) - ret0, _ := ret[0].(error) - return ret0 -} - -// Execute indicates an expected call of Execute. -func (mr *MockCoordinatorMockRecorder) Execute(ctx, tssProcesses, resultChn, coordinator any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockCoordinator)(nil).Execute), ctx, tssProcesses, resultChn, coordinator) -} diff --git a/chains/tron/message/signing.go b/chains/tron/message/signing.go deleted file mode 100644 index cc95e9b3..00000000 --- a/chains/tron/message/signing.go +++ /dev/null @@ -1,91 +0,0 @@ -package message - -import ( - "context" - "math/big" - - "github.com/libp2p/go-libp2p/core/host" - "github.com/libp2p/go-libp2p/core/peer" - evmMessage "github.com/sprintertech/sprinter-signing/chains/evm/message" - "github.com/sprintertech/sprinter-signing/chains/evm/signature" - "github.com/sprintertech/sprinter-signing/chains/tron" - "github.com/sprintertech/sprinter-signing/comm" - "github.com/sprintertech/sprinter-signing/tss" - "github.com/sprintertech/sprinter-signing/tss/ecdsa/signing" - "github.com/sygmaprotocol/sygma-core/relayer/message" - "github.com/sygmaprotocol/sygma-core/relayer/proposal" -) - -type Coordinator interface { - Execute(ctx context.Context, tssProcesses []tss.TssProcess, resultChn chan interface{}, coordinator peer.ID) error -} - -type SignHandler struct { - coordinator Coordinator - host host.Host - comm comm.Communication - fetcher signing.SaveDataFetcher -} - -func NewSignHandler( - coordinator Coordinator, - host host.Host, - comm comm.Communication, - fetcher signing.SaveDataFetcher, -) *SignHandler { - return &SignHandler{ - coordinator: coordinator, - host: host, - comm: comm, - fetcher: fetcher, - } -} - -func (h *SignHandler) HandleMessage(m *message.Message) (*proposal.Proposal, error) { - req := m.Data.(*evmMessage.SignRequest) - - borrowToken, err := tron.ToCommonAddress(req.BorrowToken) - if err != nil { - return nil, err - } - target, err := tron.ToCommonAddress(req.Target) - if err != nil { - return nil, err - } - caller, err := tron.ToCommonAddress(req.Caller) - if err != nil { - return nil, err - } - liquidityPool, err := tron.ToCommonAddress(req.LiquidityPool) - if err != nil { - return nil, err - } - - unlockHash, err := signature.BorrowUnlockHash( - req.Calldata, - req.BorrowAmount, - borrowToken, - new(big.Int).SetUint64(m.Destination), - target, - req.Deadline, - caller, - liquidityPool, - req.Nonce, - ) - if err != nil { - return nil, err - } - - signingProcess, err := signing.NewSigning( - new(big.Int).SetBytes(unlockHash), - req.SessionID, - req.SessionID, - h.host, - h.comm, - h.fetcher) - if err != nil { - return nil, err - } - - return nil, h.coordinator.Execute(context.Background(), []tss.TssProcess{signingProcess}, req.ResultChn, req.Coordinator) -} diff --git a/chains/tron/message/signing_test.go b/chains/tron/message/signing_test.go deleted file mode 100644 index 40d112b8..00000000 --- a/chains/tron/message/signing_test.go +++ /dev/null @@ -1,92 +0,0 @@ -package message_test - -import ( - "math/big" - "testing" - - "github.com/libp2p/go-libp2p/core/peer" - evmMessage "github.com/sprintertech/sprinter-signing/chains/evm/message" - "github.com/sprintertech/sprinter-signing/chains/tron" - "github.com/sprintertech/sprinter-signing/chains/tron/message" - mock_tron "github.com/sprintertech/sprinter-signing/chains/tron/message/mock" - mock_communication "github.com/sprintertech/sprinter-signing/comm/mock" - mock_host "github.com/sprintertech/sprinter-signing/comm/p2p/mock/host" - "github.com/sprintertech/sprinter-signing/keyshare" - mock_tss "github.com/sprintertech/sprinter-signing/tss/ecdsa/common/mock" - "github.com/stretchr/testify/suite" - "go.uber.org/mock/gomock" -) - -type SignHandlerTestSuite struct { - suite.Suite - - mockCoordinator *mock_tron.MockCoordinator - mockFetcher *mock_tss.MockSaveDataFetcher - - handler *message.SignHandler -} - -func TestRunSignHandlerTestSuite(t *testing.T) { - suite.Run(t, new(SignHandlerTestSuite)) -} - -func (s *SignHandlerTestSuite) SetupTest() { - ctrl := gomock.NewController(s.T()) - - s.mockCoordinator = mock_tron.NewMockCoordinator(ctrl) - mockHost := mock_host.NewMockHost(ctrl) - mockCommunication := mock_communication.NewMockCommunication(ctrl) - s.mockFetcher = mock_tss.NewMockSaveDataFetcher(ctrl) - - s.handler = message.NewSignHandler(s.mockCoordinator, mockHost, mockCommunication, s.mockFetcher) -} - -func (s *SignHandlerTestSuite) baseRequest(resultChn chan any, coordinatorID peer.ID) *evmMessage.SignRequest { - // TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t is Tron's well-known USDT (TRC20) - // contract address. - const tronAddress = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" - return &evmMessage.SignRequest{ - Calldata: []byte("calldata"), - BorrowAmount: big.NewInt(1000), - BorrowToken: tronAddress, - Target: tronAddress, - Deadline: 1234, - Caller: tronAddress, - LiquidityPool: tronAddress, - Nonce: big.NewInt(1), - SessionID: "1-orderID", - Coordinator: coordinatorID, - ResultChn: resultChn, - } -} - -func (s *SignHandlerTestSuite) Test_HandleMessage_ComputesHashAndRunsSigningSession() { - s.mockFetcher.EXPECT().LockKeyshare() - s.mockFetcher.EXPECT().UnlockKeyshare() - s.mockFetcher.EXPECT().GetKeyshare().Return(keyshare.ECDSAKeyshare{}, nil) - - resultChn := make(chan any, 1) - coordinatorID := peer.ID("coordinator") - s.mockCoordinator.EXPECT(). - Execute(gomock.Any(), gomock.Any(), gomock.Eq(resultChn), gomock.Eq(coordinatorID)). - Return(nil) - - req := s.baseRequest(resultChn, coordinatorID) - m := evmMessage.NewSignMessage(0, tron.ChainID, req) - - prop, err := s.handler.HandleMessage(m) - - s.Nil(prop) - s.Nil(err) -} - -func (s *SignHandlerTestSuite) Test_HandleMessage_InvalidAddress() { - req := s.baseRequest(make(chan any, 1), peer.ID("")) - req.BorrowToken = "not-a-valid-tron-address" - m := evmMessage.NewSignMessage(0, tron.ChainID, req) - - prop, err := s.handler.HandleMessage(m) - - s.Nil(prop) - s.NotNil(err) -} diff --git a/chains/tron/utils.go b/chains/tron/utils.go deleted file mode 100644 index 84520b8e..00000000 --- a/chains/tron/utils.go +++ /dev/null @@ -1,22 +0,0 @@ -package tron - -import ( - "fmt" - - "github.com/ethereum/go-ethereum/common" - tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" -) - -func ToCommonAddress(addr string) (common.Address, error) { - isHex := common.IsHexAddress(addr) - if isHex { - return common.HexToAddress(addr), nil - } - - decoded, err := tronaddress.Base58ToAddress(addr) - if err != nil { - return common.Address{}, fmt.Errorf("invalid tron address %q: %w", addr, err) - } - - return common.BytesToAddress(decoded[1:]), nil -} diff --git a/go.mod b/go.mod index 21e1abd3..57dc06d0 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ require ( github.com/centrifuge/go-substrate-rpc-client/v4 v4.2.1 github.com/creasty/defaults v1.6.0 github.com/ethereum/go-ethereum v1.17.1 - github.com/fbsobreira/gotron-sdk v0.26.0 github.com/golang/mock v1.6.0 github.com/gorilla/mux v1.8.1 github.com/hashicorp/go-retryablehttp v0.7.8 @@ -63,6 +62,7 @@ require ( github.com/emicklei/dot v1.6.2 // indirect github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/ferranbt/fastssz v0.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -74,6 +74,7 @@ require ( github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/holiman/uint256 v1.3.2 // indirect github.com/libp2p/go-yamux/v5 v5.0.1 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect @@ -102,7 +103,6 @@ require ( github.com/quic-go/quic-go v0.57.1 // indirect github.com/quic-go/webtransport-go v0.9.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/shengdoushi/base58 v1.0.0 // indirect github.com/supranational/blst v0.3.14 // indirect github.com/tmaxmax/go-sse v0.11.0 // indirect github.com/vedhavyas/go-subkey/v2 v2.0.0 // indirect diff --git a/go.sum b/go.sum index ec08d747..48959ef3 100644 --- a/go.sum +++ b/go.sum @@ -894,8 +894,6 @@ github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4Nij github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fbsobreira/gotron-sdk v0.26.0 h1:/RJUryR0W+eT+5X0ZUpYBPNKHFSPmzNLL8vz0Se/I9U= -github.com/fbsobreira/gotron-sdk v0.26.0/go.mod h1:K1mpu5NUkndm1Krt2u97sVmNCcAlqVOOabTm8sd67EQ= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= github.com/fjl/gencodec v0.1.0/go.mod h1:Um1dFHPONZGTHog1qD1NaWjXJW/SPB38wPv0O8uZ2fI= @@ -1659,8 +1657,6 @@ github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shengdoushi/base58 v1.0.0 h1:tGe4o6TmdXFJWoI31VoSWvuaKxf0Px3gqa3sUWhAxBs= -github.com/shengdoushi/base58 v1.0.0/go.mod h1:m5uIILfzcKMw6238iWAhP4l3s5+uXyF3+bJKUNhAL9I= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M=