diff --git a/.github/workflows/mocks.yml b/.github/workflows/mocks.yml index b2e089e7..2662e744 100644 --- a/.github/workflows/mocks.yml +++ b/.github/workflows/mocks.yml @@ -14,9 +14,9 @@ jobs: - uses: actions/setup-go@v2 with: - go-version: "^1.17" + go-version: "^1.23" - - run: go install github.com/golang/mock/mockgen@v1.6.0 + - run: go install go.uber.org/mock/mockgen@v0.5.0 - run: make genmocks diff --git a/.github/workflows/publish-binaries.yml b/.github/workflows/publish-binaries.yml index 39b875ac..5f1debc0 100644 --- a/.github/workflows/publish-binaries.yml +++ b/.github/workflows/publish-binaries.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.19' + go-version: '1.23' - name: Build run: make build-all diff --git a/Makefile b/Makefile index 7f3f3eb6..a7c9031c 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ test: genmocks: mockgen -destination=./tss/ecdsa/common/mock/tss.go github.com/binance-chain/tss-lib/tss Message mockgen -destination=./tss/ecdsa/common/mock/communication.go -source=./tss/ecdsa/common/base.go -package mock_tss + mockgen -destination=./tss/ecdsa/common/mock/fetcher.go -source=./tss/ecdsa/signing/signing.go -package mock_tss mockgen --package mock_tss -destination=./tss/mock/ecdsa.go -source=./tss/ecdsa/keygen/keygen.go mockgen -source=./tss/coordinator.go -destination=./tss/mock/coordinator.go mockgen -source=./comm/communication.go -destination=./comm/mock/communication.go @@ -34,6 +35,7 @@ genmocks: mockgen -destination=./comm/p2p/mock/host/host.go github.com/libp2p/go-libp2p/core/host Host mockgen -destination=./comm/p2p/mock/conn/conn.go github.com/libp2p/go-libp2p/core/network Conn mockgen -destination=./comm/p2p/mock/stream/stream.go github.com/libp2p/go-libp2p/core/network Stream,Conn + mockgen -source=./chains/evm/message/across.go -destination=./chains/evm/message/mock/across.go diff --git a/cache/signature.go b/cache/signature.go new file mode 100644 index 00000000..1d928a48 --- /dev/null +++ b/cache/signature.go @@ -0,0 +1,78 @@ +package cache + +import ( + "context" + "fmt" + "time" + + "github.com/jellydator/ttlcache/v3" + "github.com/rs/zerolog/log" + "github.com/sprintertech/sprinter-signing/comm" + "github.com/sprintertech/sprinter-signing/tss/ecdsa/signing" + "github.com/sprintertech/sprinter-signing/tss/message" +) + +const ( + SIGNATURE_TTL = time.Minute * 10 +) + +type SignatureCache struct { + sigCache *ttlcache.Cache[string, []byte] + comm comm.Communication +} + +func NewSignatureCache(ctx context.Context, c comm.Communication, sigChn chan interface{}) *SignatureCache { + cache := ttlcache.New( + ttlcache.WithTTL[string, []byte](SIGNATURE_TTL), + ) + + sc := &SignatureCache{ + sigCache: cache, + comm: c, + } + + go sc.watch(ctx, sigChn) + go cache.Start() + return sc +} + +func (s *SignatureCache) Signature(id string) ([]byte, error) { + sig := s.sigCache.Get(id) + if sig == nil { + return []byte{}, fmt.Errorf("no signature found with id %s", id) + } + + return sig.Value(), nil +} + +func (s *SignatureCache) watch(ctx context.Context, sigChn chan interface{}) { + msgChn := make(chan *comm.WrappedMessage) + subID := s.comm.Subscribe(comm.SignatureSessionID, comm.SignatureMsg, msgChn) + + for { + select { + case sig := <-sigChn: + { + sig := sig.(signing.EcdsaSignature) + s.sigCache.Set(sig.ID, sig.Signature, ttlcache.DefaultTTL) + } + case msg := <-msgChn: + { + msg, err := message.UnmarshalSignatureMessage(msg.Payload) + if err != nil { + log.Warn().Msgf("Failed to unmarshal signature message: %s", err) + continue + } + + log.Debug().Msgf("Received signature for ID: %s", msg.ID) + s.sigCache.Set(msg.ID, msg.Signature, ttlcache.DefaultTTL) + } + case <-ctx.Done(): + { + s.sigCache.Stop() + s.comm.UnSubscribe(subID) + return + } + } + } +} diff --git a/cache/signature_test.go b/cache/signature_test.go new file mode 100644 index 00000000..3ca7f83a --- /dev/null +++ b/cache/signature_test.go @@ -0,0 +1,90 @@ +package cache_test + +import ( + "context" + "testing" + "time" + + "github.com/sprintertech/sprinter-signing/cache" + "github.com/sprintertech/sprinter-signing/comm" + mock_communication "github.com/sprintertech/sprinter-signing/comm/mock" + "github.com/sprintertech/sprinter-signing/tss/ecdsa/signing" + "github.com/sprintertech/sprinter-signing/tss/message" + "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" +) + +type SignatureCacheTestSuite struct { + suite.Suite + + sc *cache.SignatureCache + mockCommunication *mock_communication.MockCommunication + cancel context.CancelFunc + sigChn chan interface{} + msgChn chan *comm.WrappedMessage +} + +func TestRunSignatureCacheTestSuite(t *testing.T) { + suite.Run(t, new(SignatureCacheTestSuite)) +} + +func (s *SignatureCacheTestSuite) SetupTest() { + ctrl := gomock.NewController(s.T()) + + s.sigChn = make(chan interface{}, 1) + + s.mockCommunication = mock_communication.NewMockCommunication(ctrl) + s.mockCommunication.EXPECT().Subscribe(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(sessionID string, msgType comm.MessageType, channel chan *comm.WrappedMessage) comm.SubscriptionID { + s.msgChn = channel + return comm.NewSubscriptionID("ID", comm.SignatureMsg) + }) + s.mockCommunication.EXPECT().UnSubscribe(gomock.Any()).AnyTimes() + + ctx, cancel := context.WithCancel(context.Background()) + s.cancel = cancel + + s.sc = cache.NewSignatureCache(ctx, s.mockCommunication, s.sigChn) + time.Sleep(time.Millisecond * 100) +} +func (s *SignatureCacheTestSuite) TearDownTest() { + s.cancel() +} + +func (s *SignatureCacheTestSuite) Test_Signature_MissingSignature() { + _, err := s.sc.Signature("invalid") + + s.NotNil(err) +} + +func (s *SignatureCacheTestSuite) Test_Signature_ValidSignatureResult() { + expectedSig := signing.EcdsaSignature{ + Signature: []byte("signature"), + ID: "signatureID", + } + s.sigChn <- expectedSig + time.Sleep(time.Millisecond * 100) + + sig, err := s.sc.Signature(expectedSig.ID) + + s.Nil(err) + s.Equal(sig, expectedSig.Signature) +} + +func (s *SignatureCacheTestSuite) Test_Signature_ValidMessage() { + expectedSig := signing.EcdsaSignature{ + Signature: []byte("signature"), + ID: "signatureID", + } + wMsgBytes, _ := message.MarshalSignatureMessage(expectedSig.ID, expectedSig.Signature) + wMsg := &comm.WrappedMessage{ + Payload: wMsgBytes, + } + + s.msgChn <- wMsg + time.Sleep(time.Millisecond * 100) + + sig, err := s.sc.Signature(expectedSig.ID) + + s.Nil(err) + s.Equal(sig, expectedSig.Signature) +} diff --git a/chains/evm/calls/consts/across.go b/chains/evm/calls/consts/across.go new file mode 100644 index 00000000..10a23c5d --- /dev/null +++ b/chains/evm/calls/consts/across.go @@ -0,0 +1,182 @@ +package consts + +import ( + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" +) + +var SpokePoolABI, _ = abi.JSON(strings.NewReader(` +[ + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "depositor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "exclusiveRelayer", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "inputToken", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "outputToken", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "inputAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "originChainId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "depositId", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "fillDeadline", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "exclusivityDeadline", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "internalType": "struct V3SpokePoolInterface.V3RelayData", + "name": "relayData", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "repaymentChainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "repaymentAddress", + "type": "bytes32" + } + ], + "name": "fillRelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, +{ + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "inputToken", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "outputToken", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "inputAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "outputAmount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "destinationChainId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "depositId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "quoteTimestamp", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "fillDeadline", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "exclusivityDeadline", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "depositor", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "exclusiveRelayer", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "FundsDeposited", + "type": "event" +} +] +`)) diff --git a/chains/evm/calls/events/events.go b/chains/evm/calls/events/events.go index 85962764..e8ed47bf 100644 --- a/chains/evm/calls/events/events.go +++ b/chains/evm/calls/events/events.go @@ -4,8 +4,11 @@ package events import ( + "math/big" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" + "github.com/sprintertech/sprinter-signing/chains/evm/calls/consts" ) type EventSig string @@ -17,6 +20,8 @@ func (es EventSig) GetTopic() common.Hash { const ( StartKeygenSig EventSig = "StartKeygen()" KeyRefreshSig EventSig = "KeyRefresh(string)" + + AcrossDepositSig EventSig = "FundsDeposited(bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,uint32,bytes32,bytes32,bytes32,bytes)" ) // Refresh struct holds key refresh event data @@ -24,3 +29,59 @@ type Refresh struct { // SHA1 hash of topology file Hash string } + +type AcrossDeposit struct { + InputToken [32]byte + OutputToken [32]byte + InputAmount *big.Int + OutputAmount *big.Int + DestinationChainId *big.Int + DepositId *big.Int + QuoteTimestamp uint32 + ExclusivityDeadline uint32 + FillDeadline uint32 + Depositor [32]byte + Recipient [32]byte + ExclusiveRelayer [32]byte + Message []byte +} + +func (a *AcrossDeposit) ToV3RelayData(originChainID *big.Int) *AcrossV3RelayData { + return &AcrossV3RelayData{ + Depositor: a.Depositor, + Recipient: a.Recipient, + ExclusiveRelayer: a.ExclusiveRelayer, + InputToken: a.InputToken, + OutputToken: a.OutputToken, + InputAmount: a.InputAmount, + OutputAmount: a.OutputAmount, + OriginChainId: originChainID, + DepositId: a.DepositId, + FillDeadline: a.FillDeadline, + ExclusivityDeadline: a.ExclusivityDeadline, + Message: a.Message, + } +} + +type AcrossV3RelayData struct { + Depositor [32]byte + Recipient [32]byte + ExclusiveRelayer [32]byte + InputToken [32]byte + OutputToken [32]byte + InputAmount *big.Int + OutputAmount *big.Int + OriginChainId *big.Int + DepositId *big.Int + FillDeadline uint32 + ExclusivityDeadline uint32 + Message []byte +} + +func (a *AcrossV3RelayData) Calldata(repaymentChainID *big.Int, repaymentAddress common.Address) ([]byte, error) { + input, err := consts.SpokePoolABI.Pack("fillRelay", a, repaymentChainID, [32]byte(common.LeftPadBytes(repaymentAddress.Bytes(), 32))) + if err != nil { + return []byte{}, err + } + return input, nil +} diff --git a/chains/evm/calls/events/mock/listener.go b/chains/evm/calls/events/mock/listener.go index c561cee2..e30f64ff 100644 --- a/chains/evm/calls/events/mock/listener.go +++ b/chains/evm/calls/events/mock/listener.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./chains/evm/calls/events/listener.go +// +// Generated by this command: +// +// mockgen -source=./chains/evm/calls/events/listener.go -destination=./chains/evm/calls/events/mock/listener.go +// // Package mock_events is a generated GoMock package. package mock_events @@ -11,13 +16,14 @@ import ( common "github.com/ethereum/go-ethereum/common" types "github.com/ethereum/go-ethereum/core/types" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockChainClient is a mock of ChainClient interface. type MockChainClient struct { ctrl *gomock.Controller recorder *MockChainClientMockRecorder + isgomock struct{} } // MockChainClientMockRecorder is the mock recorder for MockChainClient. @@ -47,7 +53,7 @@ func (m *MockChainClient) BlockByNumber(ctx context.Context, number *big.Int) (* } // BlockByNumber indicates an expected call of BlockByNumber. -func (mr *MockChainClientMockRecorder) BlockByNumber(ctx, number interface{}) *gomock.Call { +func (mr *MockChainClientMockRecorder) BlockByNumber(ctx, number any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockByNumber", reflect.TypeOf((*MockChainClient)(nil).BlockByNumber), ctx, number) } @@ -62,7 +68,7 @@ func (m *MockChainClient) FetchEventLogs(ctx context.Context, contractAddress co } // FetchEventLogs indicates an expected call of FetchEventLogs. -func (mr *MockChainClientMockRecorder) FetchEventLogs(ctx, contractAddress, event, startBlock, endBlock interface{}) *gomock.Call { +func (mr *MockChainClientMockRecorder) FetchEventLogs(ctx, contractAddress, event, startBlock, endBlock any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchEventLogs", reflect.TypeOf((*MockChainClient)(nil).FetchEventLogs), ctx, contractAddress, event, startBlock, endBlock) } @@ -92,7 +98,7 @@ func (m *MockChainClient) WaitAndReturnTxReceipt(h common.Hash) (*types.Receipt, } // WaitAndReturnTxReceipt indicates an expected call of WaitAndReturnTxReceipt. -func (mr *MockChainClientMockRecorder) WaitAndReturnTxReceipt(h interface{}) *gomock.Call { +func (mr *MockChainClientMockRecorder) WaitAndReturnTxReceipt(h any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitAndReturnTxReceipt", reflect.TypeOf((*MockChainClient)(nil).WaitAndReturnTxReceipt), h) } diff --git a/chains/evm/config.go b/chains/evm/config.go index 72c5510d..4f600811 100644 --- a/chains/evm/config.go +++ b/chains/evm/config.go @@ -22,6 +22,7 @@ type HandlerConfig struct { type EVMConfig struct { GeneralChainConfig chain.GeneralChainConfig Admin string + LiqudityPool string BlockConfirmations *big.Int BlockInterval *big.Int BlockRetryInterval time.Duration @@ -30,6 +31,7 @@ type EVMConfig struct { type RawEVMConfig struct { chain.GeneralChainConfig `mapstructure:",squash"` Admin string `mapstructure:"admin"` + LiqudityPool string `mapstructure:"liquidityPool"` BlockConfirmations int64 `mapstructure:"blockConfirmations" default:"10"` BlockInterval int64 `mapstructure:"blockInterval" default:"5"` BlockRetryInterval uint64 `mapstructure:"blockRetryInterval" default:"5"` @@ -71,6 +73,7 @@ func NewEVMConfig(chainConfig map[string]interface{}) (*EVMConfig, error) { config := &EVMConfig{ GeneralChainConfig: c.GeneralChainConfig, Admin: c.Admin, + LiqudityPool: c.LiqudityPool, BlockRetryInterval: time.Duration(c.BlockRetryInterval) * time.Second, BlockConfirmations: big.NewInt(c.BlockConfirmations), BlockInterval: big.NewInt(c.BlockInterval), diff --git a/chains/evm/config_test.go b/chains/evm/config_test.go index 1885dc62..e7b3ed8a 100644 --- a/chains/evm/config_test.go +++ b/chains/evm/config_test.go @@ -91,14 +91,15 @@ func (s *NewEVMConfigTestSuite) Test_ValidConfig() { func (s *NewEVMConfigTestSuite) Test_ValidConfigWithCustomTxParams() { rawConfig := map[string]interface{}{ - "id": 1, - "endpoint": "ws://domain.com", - "name": "evm1", - "from": "address", - "bridge": "bridgeAddress", - "admin": "adminAddress", - "retry": "retryAddress", - "frostKeygen": "frostKeygen", + "id": 1, + "endpoint": "ws://domain.com", + "name": "evm1", + "from": "address", + "bridge": "bridgeAddress", + "admin": "adminAddress", + "liquidityPool": "pool", + "retry": "retryAddress", + "frostKeygen": "frostKeygen", "handlers": []evm.HandlerConfig{ { Type: "erc20", @@ -135,5 +136,6 @@ func (s *NewEVMConfigTestSuite) Test_ValidConfigWithCustomTxParams() { BlockInterval: big.NewInt(2), BlockRetryInterval: time.Duration(10) * time.Second, Admin: "adminAddress", + LiqudityPool: "pool", }) } diff --git a/chains/evm/listener/eventHandlers/tss.go b/chains/evm/listener/tss.go similarity index 99% rename from chains/evm/listener/eventHandlers/tss.go rename to chains/evm/listener/tss.go index 05081c9e..cf938a49 100644 --- a/chains/evm/listener/eventHandlers/tss.go +++ b/chains/evm/listener/tss.go @@ -1,7 +1,7 @@ // The Licensed Work is (c) 2022 Sygma // SPDX-License-Identifier: LGPL-3.0-only -package eventHandlers +package listener import ( "context" diff --git a/chains/evm/message/across.go b/chains/evm/message/across.go new file mode 100644 index 00000000..81510236 --- /dev/null +++ b/chains/evm/message/across.go @@ -0,0 +1,307 @@ +package message + +import ( + "context" + "fmt" + "math/big" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/signer/core/apitypes" + "github.com/libp2p/go-libp2p/core/host" + "github.com/libp2p/go-libp2p/core/peer" + "github.com/rs/zerolog/log" + "github.com/sprintertech/sprinter-signing/chains/evm/calls/consts" + "github.com/sprintertech/sprinter-signing/chains/evm/calls/events" + "github.com/sprintertech/sprinter-signing/comm" + "github.com/sprintertech/sprinter-signing/tss" + "github.com/sprintertech/sprinter-signing/tss/ecdsa/signing" + tssMessage "github.com/sprintertech/sprinter-signing/tss/message" + "github.com/sygmaprotocol/sygma-core/relayer/message" + "github.com/sygmaprotocol/sygma-core/relayer/proposal" +) + +const ( + AcrossMessage = "AcrossMessage" + + DOMAIN_NAME = "LiquidityPool" + VERSION = "v1.0.0" + BORROW_TYPEHASH = "Borrow(address borrowToken,uint256 amount,address target,bytes targetCallData,uint256 nonce,uint256 deadline)" + PROTOCOL_ID = 1 + LIQUIDITY_POOL = "0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5" + BLOCK_RANGE = 1000 +) + +type EventFilterer interface { + FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) + LatestBlock() (*big.Int, error) +} + +type AcrossData struct { + depositId *big.Int + coordinator peer.ID +} + +func NewAcrossMessage(source uint8, destination uint8, acrossData AcrossData) *message.Message { + return &message.Message{ + Source: source, + Destination: destination, + Data: acrossData, + Type: AcrossMessage, + Timestamp: time.Now(), + } +} + +type Coordinator interface { + Execute(ctx context.Context, tssProcesses []tss.TssProcess, resultChn chan interface{}, coordinator peer.ID) error +} + +type AcrossMessageHandler struct { + client EventFilterer + sourceChainID *big.Int + + pools map[uint64]common.Address + + coordinator Coordinator + host host.Host + comm comm.Communication + fetcher signing.SaveDataFetcher + + sigChn chan interface{} +} + +func NewAcrossMessageHandler( + chainID *big.Int, + client EventFilterer, + pools map[uint64]common.Address, + coordinator Coordinator, + host host.Host, + comm comm.Communication, + fetcher signing.SaveDataFetcher, + sigChn chan interface{}, +) *AcrossMessageHandler { + return &AcrossMessageHandler{ + sourceChainID: chainID, + client: client, + pools: pools, + coordinator: coordinator, + host: host, + comm: comm, + fetcher: fetcher, + sigChn: sigChn, + } +} + +func (h *AcrossMessageHandler) Listen(ctx context.Context) { + msgChn := make(chan *comm.WrappedMessage) + subID := h.comm.Subscribe(comm.AcrossSessionID, comm.AcrossMsg, msgChn) + + for { + select { + case wMsg := <-msgChn: + { + acrossMsg, err := tssMessage.UnmarshalAcrossMessage(wMsg.Payload) + if err != nil { + log.Warn().Msgf("Failed unmarshaling across message: %s", err) + continue + } + + msg := NewAcrossMessage(acrossMsg.Source, acrossMsg.Destination, AcrossData{ + depositId: acrossMsg.DepositId, + coordinator: wMsg.From, + }) + _, err = h.HandleMessage(msg) + if err != nil { + log.Err(err).Msgf("Failed handling across message %+v because of: %s", acrossMsg, err) + } + } + case <-ctx.Done(): + { + h.comm.UnSubscribe(subID) + return + } + } + } +} + +// HandleMessage finds the Across deposit with the according deposit ID and starts +// the MPC signature process for it. The result will be saved into the signature +// cache through the result channel. +func (h *AcrossMessageHandler) HandleMessage(m *message.Message) (*proposal.Proposal, error) { + data := m.Data.(AcrossData) + err := h.notify(m, data) + if err != nil { + return nil, err + } + + d, err := h.Deposit(data.depositId) + if err != nil { + return nil, err + } + + unlockHash, err := h.unlockHash(d) + if err != nil { + return nil, err + } + + signing, err := signing.NewSigning( + new(big.Int).SetBytes(unlockHash), + data.depositId.Text(16), + data.depositId.Text(16), + h.host, + h.comm, + h.fetcher) + if err != nil { + return nil, err + } + + err = h.coordinator.Execute(context.Background(), []tss.TssProcess{signing}, h.sigChn, data.coordinator) + if err != nil { + return nil, err + } + return nil, nil +} + +func (h *AcrossMessageHandler) notify(m *message.Message, data AcrossData) error { + msgBytes, err := tssMessage.MarshalAcrossMessage(data.depositId, m.Source, m.Destination) + if err != nil { + return err + } + + return h.comm.Broadcast(h.host.Peerstore().Peers(), msgBytes, comm.AcrossMsg, comm.AcrossSessionID) +} + +func (h *AcrossMessageHandler) Deposit(depositId *big.Int) (*events.AcrossDeposit, error) { + latestBlock, err := h.client.LatestBlock() + if err != nil { + return nil, err + } + + q := ethereum.FilterQuery{ + ToBlock: latestBlock, + FromBlock: new(big.Int).Sub(latestBlock, big.NewInt(BLOCK_RANGE)), + Addresses: []common.Address{ + h.pools[h.sourceChainID.Uint64()], + }, + Topics: [][]common.Hash{ + { + events.AcrossDepositSig.GetTopic(), + }, + {}, + { + common.HexToHash(depositId.Text(16)), + }, + }, + } + logs, err := h.client.FilterLogs(context.Background(), q) + if err != nil { + return nil, err + } + if len(logs) == 0 { + return nil, fmt.Errorf("no deposit found with ID: %s", depositId) + } + if logs[0].Removed { + return nil, fmt.Errorf("deposit log removed") + } + + return h.parseDeposit(logs[0]) +} + +func (h *AcrossMessageHandler) parseDeposit(l types.Log) (*events.AcrossDeposit, error) { + d := &events.AcrossDeposit{} + err := consts.SpokePoolABI.UnpackIntoInterface(d, "FundsDeposited", l.Data) + if err != nil { + return nil, err + } + + if len(l.Topics) < 4 { + return nil, fmt.Errorf("across deposit missing topics") + } + + d.DestinationChainId = new(big.Int).SetBytes(l.Topics[1].Bytes()) + d.DepositId = new(big.Int).SetBytes(l.Topics[2].Bytes()) + copy(d.Depositor[:], l.Topics[3].Bytes()) + return d, err +} + +func (h *AcrossMessageHandler) unlockHash(deposit *events.AcrossDeposit) ([]byte, error) { + lpAddress := common.HexToAddress(LIQUIDITY_POOL) + calldata, err := deposit.ToV3RelayData(h.sourceChainID).Calldata(deposit.DestinationChainId, lpAddress) + if err != nil { + return []byte{}, err + } + msg := apitypes.TypedDataMessage{ + "borrowToken": common.BytesToAddress(deposit.OutputToken[12:]).Hex(), + "amount": deposit.OutputAmount, + "target": common.BytesToAddress(deposit.Recipient[12:]).Hex(), + "targetCallData": hexutil.Encode(calldata), + "nonce": h.nonce(deposit), + "deadline": new(big.Int).SetUint64(uint64(deposit.FillDeadline)), + } + + typedData := apitypes.TypedData{ + Types: apitypes.Types{ + "EIP712Domain": []apitypes.Type{ + {Name: "name", Type: "string"}, + {Name: "version", Type: "string"}, + {Name: "chainId", Type: "uint256"}, + {Name: "verifyingContract", Type: "address"}, + }, + "Borrow": []apitypes.Type{ + {Name: "borrowToken", Type: "address"}, + {Name: "amount", Type: "uint256"}, + {Name: "target", Type: "address"}, + {Name: "targetCallData", Type: "bytes"}, + {Name: "nonce", Type: "uint256"}, + {Name: "deadline", Type: "uint256"}, + }, + }, + PrimaryType: "Borrow", + Domain: apitypes.TypedDataDomain{ + Name: DOMAIN_NAME, + ChainId: math.NewHexOrDecimal256(deposit.DestinationChainId.Int64()), + Version: VERSION, + VerifyingContract: lpAddress.Hex(), + }, + Message: msg, + } + + domainSeparator, err := typedData.HashStruct("EIP712Domain", typedData.Domain.Map()) + if err != nil { + return []byte{}, err + } + + messageHash, err := typedData.HashStruct(typedData.PrimaryType, typedData.Message) + if err != nil { + return []byte{}, err + } + + rawData := []byte(fmt.Sprintf("\x19\x01%s%s", string(domainSeparator), string(messageHash))) + return crypto.Keccak256(rawData), nil +} + +// nonce creates a unique ID from the across deposit id, origin chain id and protocol id. +// Resulting id has this format: [originChainID (8 bits)][protocolID (8 bits)][nonce (240 bits)]. +func (h *AcrossMessageHandler) nonce(deposit *events.AcrossDeposit) *big.Int { + // Create a new big.Int + nonce := new(big.Int) + + // Set originChainID (64 bits) + nonce.SetInt64(h.sourceChainID.Int64()) + nonce.Lsh(nonce, 248) // Shift left by 248 bits (240 + 8) + + // Add protocolID in the middle (shifted left by 240 bits) + protocolInt := big.NewInt(PROTOCOL_ID) + protocolInt.Lsh(protocolInt, 240) + nonce.Or(nonce, protocolInt) + + // Add nonce at the end + nonce.Or(nonce, deposit.DepositId) + + return nonce +} diff --git a/chains/evm/message/across_test.go b/chains/evm/message/across_test.go new file mode 100644 index 00000000..6aa68e22 --- /dev/null +++ b/chains/evm/message/across_test.go @@ -0,0 +1,213 @@ +package message_test + +import ( + "encoding/hex" + "fmt" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/libp2p/go-libp2p/p2p/host/peerstore/pstoremem" + "github.com/sprintertech/sprinter-signing/chains/evm/message" + mock_message "github.com/sprintertech/sprinter-signing/chains/evm/message/mock" + "github.com/sprintertech/sprinter-signing/comm" + 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" + coreMessage "github.com/sygmaprotocol/sygma-core/relayer/message" + "go.uber.org/mock/gomock" +) + +type AcrossMessageHandlerTestSuite struct { + suite.Suite + + mockCommunication *mock_communication.MockCommunication + mockCoordinator *mock_message.MockCoordinator + mockEventFilterer *mock_message.MockEventFilterer + mockHost *mock_host.MockHost + mockFetcher *mock_tss.MockSaveDataFetcher + + handler *message.AcrossMessageHandler + sigChn chan interface{} + + validLog []byte +} + +func TestRunAcrossMessageHandlerTestSuite(t *testing.T) { + suite.Run(t, new(AcrossMessageHandlerTestSuite)) +} + +func (s *AcrossMessageHandlerTestSuite) SetupTest() { + ctrl := gomock.NewController(s.T()) + + s.mockCommunication = mock_communication.NewMockCommunication(ctrl) + s.mockCoordinator = mock_message.NewMockCoordinator(ctrl) + s.mockEventFilterer = mock_message.NewMockEventFilterer(ctrl) + s.mockHost = mock_host.NewMockHost(ctrl) + s.mockFetcher = mock_tss.NewMockSaveDataFetcher(ctrl) + s.mockFetcher.EXPECT().UnlockKeyshare().AnyTimes() + s.mockFetcher.EXPECT().LockKeyshare().AnyTimes() + s.mockFetcher.EXPECT().GetKeyshare().AnyTimes().Return(keyshare.ECDSAKeyshare{}, nil) + + pools := make(map[uint64]common.Address) + pools[1] = common.HexToAddress("0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5") + + s.sigChn = make(chan interface{}, 1) + + // Ethereum: 0x93a9d5e32f5c81cbd17ceb842edc65002e3a79da4efbdc9f1e1f7e97fbcd669b + s.validLog, _ = hex.DecodeString("000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab100000000000000000000000000000000000000000000000000119baee0ab0400000000000000000000000000000000000000000000000000001199073ea3008d0000000000000000000000000000000000000000000000000000000067bc6e3f0000000000000000000000000000000000000000000000000000000067bc927b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001886a1eb051c10f20c7386576a6a0716b20b2734000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000") + + s.handler = message.NewAcrossMessageHandler( + big.NewInt(1), + s.mockEventFilterer, + pools, + s.mockCoordinator, + s.mockHost, + s.mockCommunication, + s.mockFetcher, + s.sigChn, + ) +} + +func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_FailedNotify() { + s.mockCommunication.EXPECT().Broadcast( + gomock.Any(), + gomock.Any(), + comm.AcrossMsg, + comm.AcrossSessionID, + ).Return(fmt.Errorf("error")) + p, _ := pstoremem.NewPeerstore() + s.mockHost.EXPECT().Peerstore().Return(p) + + ad := message.AcrossData{} + m := &coreMessage.Message{ + Data: ad, + Source: 1, + Destination: 2, + } + + prop, err := s.handler.HandleMessage(m) + + s.Nil(prop) + s.NotNil(err) +} + +func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_FailedLogQuery() { + s.mockCommunication.EXPECT().Broadcast( + gomock.Any(), + gomock.Any(), + comm.AcrossMsg, + comm.AcrossSessionID, + ).Return(nil) + p, _ := pstoremem.NewPeerstore() + s.mockHost.EXPECT().Peerstore().Return(p) + s.mockEventFilterer.EXPECT().LatestBlock().Return(big.NewInt(100), nil) + s.mockEventFilterer.EXPECT().FilterLogs(gomock.Any(), gomock.Any()).Return([]types.Log{}, fmt.Errorf("error")) + + ad := message.AcrossData{} + m := &coreMessage.Message{ + Data: ad, + Source: 1, + Destination: 2, + } + + prop, err := s.handler.HandleMessage(m) + + s.Nil(prop) + s.NotNil(err) +} + +func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_LogMissing() { + s.mockCommunication.EXPECT().Broadcast( + gomock.Any(), + gomock.Any(), + comm.AcrossMsg, + comm.AcrossSessionID, + ).Return(nil) + p, _ := pstoremem.NewPeerstore() + s.mockHost.EXPECT().Peerstore().Return(p) + s.mockEventFilterer.EXPECT().FilterLogs(gomock.Any(), gomock.Any()).Return([]types.Log{}, nil) + s.mockEventFilterer.EXPECT().LatestBlock().Return(big.NewInt(100), nil) + + ad := message.AcrossData{} + m := &coreMessage.Message{ + Data: ad, + Source: 1, + Destination: 2, + } + + prop, err := s.handler.HandleMessage(m) + + s.Nil(prop) + s.NotNil(err) +} + +func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_IgnoreRemovedLogs() { + s.mockCommunication.EXPECT().Broadcast( + gomock.Any(), + gomock.Any(), + comm.AcrossMsg, + comm.AcrossSessionID, + ).Return(nil) + p, _ := pstoremem.NewPeerstore() + s.mockHost.EXPECT().Peerstore().Return(p) + s.mockEventFilterer.EXPECT().LatestBlock().Return(big.NewInt(100), nil) + s.mockEventFilterer.EXPECT().FilterLogs(gomock.Any(), gomock.Any()).Return([]types.Log{ + { + Removed: true, + Data: s.validLog, + }, + }, nil) + + ad := message.AcrossData{} + m := &coreMessage.Message{ + Data: ad, + Source: 1, + Destination: 2, + } + + prop, err := s.handler.HandleMessage(m) + + s.Nil(prop) + s.NotNil(err) +} + +func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_ValidLog() { + s.mockCommunication.EXPECT().Broadcast( + gomock.Any(), + gomock.Any(), + comm.AcrossMsg, + comm.AcrossSessionID, + ).Return(nil) + p, _ := pstoremem.NewPeerstore() + s.mockHost.EXPECT().Peerstore().Return(p) + s.mockEventFilterer.EXPECT().LatestBlock().Return(big.NewInt(100), nil) + s.mockEventFilterer.EXPECT().FilterLogs(gomock.Any(), gomock.Any()).Return([]types.Log{ + { + Removed: false, + Data: s.validLog, + Topics: []common.Hash{ + {}, + {}, + {}, + {}, + }, + }, + }, nil) + s.mockCoordinator.EXPECT().Execute(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + + ad := message.AcrossData{} + m := &coreMessage.Message{ + Data: ad, + Source: 1, + Destination: 2, + } + + prop, err := s.handler.HandleMessage(m) + + s.Nil(prop) + s.Nil(err) +} diff --git a/chains/evm/message/mock/across.go b/chains/evm/message/mock/across.go new file mode 100644 index 00000000..a6b19e2b --- /dev/null +++ b/chains/evm/message/mock/across.go @@ -0,0 +1,114 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./chains/evm/message/across.go +// +// Generated by this command: +// +// mockgen -source=./chains/evm/message/across.go -destination=./chains/evm/message/mock/across.go +// + +// Package mock_message is a generated GoMock package. +package mock_message + +import ( + context "context" + big "math/big" + reflect "reflect" + + ethereum "github.com/ethereum/go-ethereum" + types "github.com/ethereum/go-ethereum/core/types" + peer "github.com/libp2p/go-libp2p/core/peer" + tss "github.com/sprintertech/sprinter-signing/tss" + gomock "go.uber.org/mock/gomock" +) + +// MockEventFilterer is a mock of EventFilterer interface. +type MockEventFilterer struct { + ctrl *gomock.Controller + recorder *MockEventFiltererMockRecorder + isgomock struct{} +} + +// MockEventFiltererMockRecorder is the mock recorder for MockEventFilterer. +type MockEventFiltererMockRecorder struct { + mock *MockEventFilterer +} + +// NewMockEventFilterer creates a new mock instance. +func NewMockEventFilterer(ctrl *gomock.Controller) *MockEventFilterer { + mock := &MockEventFilterer{ctrl: ctrl} + mock.recorder = &MockEventFiltererMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventFilterer) EXPECT() *MockEventFiltererMockRecorder { + return m.recorder +} + +// FilterLogs mocks base method. +func (m *MockEventFilterer) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FilterLogs", ctx, q) + ret0, _ := ret[0].([]types.Log) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FilterLogs indicates an expected call of FilterLogs. +func (mr *MockEventFiltererMockRecorder) FilterLogs(ctx, q any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterLogs", reflect.TypeOf((*MockEventFilterer)(nil).FilterLogs), ctx, q) +} + +// LatestBlock mocks base method. +func (m *MockEventFilterer) LatestBlock() (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "LatestBlock") + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LatestBlock indicates an expected call of LatestBlock. +func (mr *MockEventFiltererMockRecorder) LatestBlock() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LatestBlock", reflect.TypeOf((*MockEventFilterer)(nil).LatestBlock)) +} + +// 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/comm/messages.go b/comm/messages.go index eff20498..0eaf6f98 100644 --- a/comm/messages.go +++ b/comm/messages.go @@ -33,10 +33,19 @@ const ( CoordinatorPingMsg // CoordinatorPingResponseMsg message type used to respond on CoordinatorPingMsg message. CoordinatorPingResponseMsg + // SignatureMsg message type is used to the share the signature to all relayers + SignatureMsg + // AcrossMsg message type is used for the process coordinator to share across data + AcrossMsg // Unknown message type Unknown ) +const ( + SignatureSessionID = "signatures" + AcrossSessionID = "across" +) + // String implements fmt.Stringer func (msgType MessageType) String() string { switch msgType { diff --git a/comm/mock/communication.go b/comm/mock/communication.go index 227a0100..022b837a 100644 --- a/comm/mock/communication.go +++ b/comm/mock/communication.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./comm/communication.go +// +// Generated by this command: +// +// mockgen -source=./comm/communication.go -destination=./comm/mock/communication.go +// // Package mock_comm is a generated GoMock package. package mock_comm @@ -7,15 +12,16 @@ package mock_comm import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" peer "github.com/libp2p/go-libp2p/core/peer" comm "github.com/sprintertech/sprinter-signing/comm" + gomock "go.uber.org/mock/gomock" ) // MockCommunication is a mock of Communication interface. type MockCommunication struct { ctrl *gomock.Controller recorder *MockCommunicationMockRecorder + isgomock struct{} } // MockCommunicationMockRecorder is the mock recorder for MockCommunication. @@ -44,7 +50,7 @@ func (m *MockCommunication) Broadcast(peers peer.IDSlice, msg []byte, msgType co } // Broadcast indicates an expected call of Broadcast. -func (mr *MockCommunicationMockRecorder) Broadcast(peers, msg, msgType, sessionID interface{}) *gomock.Call { +func (mr *MockCommunicationMockRecorder) Broadcast(peers, msg, msgType, sessionID any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Broadcast", reflect.TypeOf((*MockCommunication)(nil).Broadcast), peers, msg, msgType, sessionID) } @@ -56,7 +62,7 @@ func (m *MockCommunication) CloseSession(sessionID string) { } // CloseSession indicates an expected call of CloseSession. -func (mr *MockCommunicationMockRecorder) CloseSession(sessionID interface{}) *gomock.Call { +func (mr *MockCommunicationMockRecorder) CloseSession(sessionID any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSession", reflect.TypeOf((*MockCommunication)(nil).CloseSession), sessionID) } @@ -70,7 +76,7 @@ func (m *MockCommunication) Subscribe(sessionID string, msgType comm.MessageType } // Subscribe indicates an expected call of Subscribe. -func (mr *MockCommunicationMockRecorder) Subscribe(sessionID, msgType, channel interface{}) *gomock.Call { +func (mr *MockCommunicationMockRecorder) Subscribe(sessionID, msgType, channel any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Subscribe", reflect.TypeOf((*MockCommunication)(nil).Subscribe), sessionID, msgType, channel) } @@ -82,7 +88,7 @@ func (m *MockCommunication) UnSubscribe(subID comm.SubscriptionID) { } // UnSubscribe indicates an expected call of UnSubscribe. -func (mr *MockCommunicationMockRecorder) UnSubscribe(subID interface{}) *gomock.Call { +func (mr *MockCommunicationMockRecorder) UnSubscribe(subID any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnSubscribe", reflect.TypeOf((*MockCommunication)(nil).UnSubscribe), subID) } diff --git a/comm/p2p/libp2p_test.go b/comm/p2p/libp2p_test.go index 613aec67..6642792f 100644 --- a/comm/p2p/libp2p_test.go +++ b/comm/p2p/libp2p_test.go @@ -8,7 +8,6 @@ import ( "fmt" "testing" - "github.com/golang/mock/gomock" "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/peer" @@ -20,6 +19,7 @@ import ( "github.com/sprintertech/sprinter-signing/topology" "github.com/sprintertech/sprinter-signing/tss/message" "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" ) type Libp2pCommunicationTestSuite struct { diff --git a/comm/p2p/manager_test.go b/comm/p2p/manager_test.go index 1a410139..b3bba18a 100644 --- a/comm/p2p/manager_test.go +++ b/comm/p2p/manager_test.go @@ -9,9 +9,9 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/sprintertech/sprinter-signing/comm/p2p" - "github.com/golang/mock/gomock" mock_network "github.com/sprintertech/sprinter-signing/comm/p2p/mock/stream" "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" ) type StreamManagerTestSuite struct { diff --git a/comm/p2p/mock/conn/conn.go b/comm/p2p/mock/conn/conn.go index a89a0078..94d86545 100644 --- a/comm/p2p/mock/conn/conn.go +++ b/comm/p2p/mock/conn/conn.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/libp2p/go-libp2p/core/network (interfaces: Conn) +// +// Generated by this command: +// +// mockgen -destination=./comm/p2p/mock/conn/conn.go github.com/libp2p/go-libp2p/core/network Conn +// // Package mock_network is a generated GoMock package. package mock_network @@ -8,17 +13,18 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" crypto "github.com/libp2p/go-libp2p/core/crypto" network "github.com/libp2p/go-libp2p/core/network" peer "github.com/libp2p/go-libp2p/core/peer" multiaddr "github.com/multiformats/go-multiaddr" + gomock "go.uber.org/mock/gomock" ) // MockConn is a mock of Conn interface. type MockConn struct { ctrl *gomock.Controller recorder *MockConnMockRecorder + isgomock struct{} } // MockConnMockRecorder is the mock recorder for MockConn. @@ -146,7 +152,7 @@ func (m *MockConn) NewStream(arg0 context.Context) (network.Stream, error) { } // NewStream indicates an expected call of NewStream. -func (mr *MockConnMockRecorder) NewStream(arg0 interface{}) *gomock.Call { +func (mr *MockConnMockRecorder) NewStream(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewStream", reflect.TypeOf((*MockConn)(nil).NewStream), arg0) } diff --git a/comm/p2p/mock/host/host.go b/comm/p2p/mock/host/host.go index f79869b0..4dfbb577 100644 --- a/comm/p2p/mock/host/host.go +++ b/comm/p2p/mock/host/host.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/libp2p/go-libp2p/core/host (interfaces: Host) +// +// Generated by this command: +// +// mockgen -destination=./comm/p2p/mock/host/host.go github.com/libp2p/go-libp2p/core/host Host +// // Package mock_host is a generated GoMock package. package mock_host @@ -8,7 +13,6 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" connmgr "github.com/libp2p/go-libp2p/core/connmgr" event "github.com/libp2p/go-libp2p/core/event" network "github.com/libp2p/go-libp2p/core/network" @@ -16,12 +20,14 @@ import ( peerstore "github.com/libp2p/go-libp2p/core/peerstore" protocol "github.com/libp2p/go-libp2p/core/protocol" multiaddr "github.com/multiformats/go-multiaddr" + gomock "go.uber.org/mock/gomock" ) // MockHost is a mock of Host interface. type MockHost struct { ctrl *gomock.Controller recorder *MockHostMockRecorder + isgomock struct{} } // MockHostMockRecorder is the mock recorder for MockHost. @@ -84,17 +90,17 @@ func (mr *MockHostMockRecorder) ConnManager() *gomock.Call { } // Connect mocks base method. -func (m *MockHost) Connect(arg0 context.Context, arg1 peer.AddrInfo) error { +func (m *MockHost) Connect(ctx context.Context, pi peer.AddrInfo) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Connect", arg0, arg1) + ret := m.ctrl.Call(m, "Connect", ctx, pi) ret0, _ := ret[0].(error) return ret0 } // Connect indicates an expected call of Connect. -func (mr *MockHostMockRecorder) Connect(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockHostMockRecorder) Connect(ctx, pi any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Connect", reflect.TypeOf((*MockHost)(nil).Connect), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Connect", reflect.TypeOf((*MockHost)(nil).Connect), ctx, pi) } // EventBus mocks base method. @@ -154,10 +160,10 @@ func (mr *MockHostMockRecorder) Network() *gomock.Call { } // NewStream mocks base method. -func (m *MockHost) NewStream(arg0 context.Context, arg1 peer.ID, arg2 ...protocol.ID) (network.Stream, error) { +func (m *MockHost) NewStream(ctx context.Context, p peer.ID, pids ...protocol.ID) (network.Stream, error) { m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1} - for _, a := range arg2 { + varargs := []any{ctx, p} + for _, a := range pids { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "NewStream", varargs...) @@ -167,9 +173,9 @@ func (m *MockHost) NewStream(arg0 context.Context, arg1 peer.ID, arg2 ...protoco } // NewStream indicates an expected call of NewStream. -func (mr *MockHostMockRecorder) NewStream(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { +func (mr *MockHostMockRecorder) NewStream(ctx, p any, pids ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1}, arg2...) + varargs := append([]any{ctx, p}, pids...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewStream", reflect.TypeOf((*MockHost)(nil).NewStream), varargs...) } @@ -188,27 +194,27 @@ func (mr *MockHostMockRecorder) Peerstore() *gomock.Call { } // RemoveStreamHandler mocks base method. -func (m *MockHost) RemoveStreamHandler(arg0 protocol.ID) { +func (m *MockHost) RemoveStreamHandler(pid protocol.ID) { m.ctrl.T.Helper() - m.ctrl.Call(m, "RemoveStreamHandler", arg0) + m.ctrl.Call(m, "RemoveStreamHandler", pid) } // RemoveStreamHandler indicates an expected call of RemoveStreamHandler. -func (mr *MockHostMockRecorder) RemoveStreamHandler(arg0 interface{}) *gomock.Call { +func (mr *MockHostMockRecorder) RemoveStreamHandler(pid any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveStreamHandler", reflect.TypeOf((*MockHost)(nil).RemoveStreamHandler), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveStreamHandler", reflect.TypeOf((*MockHost)(nil).RemoveStreamHandler), pid) } // SetStreamHandler mocks base method. -func (m *MockHost) SetStreamHandler(arg0 protocol.ID, arg1 network.StreamHandler) { +func (m *MockHost) SetStreamHandler(pid protocol.ID, handler network.StreamHandler) { m.ctrl.T.Helper() - m.ctrl.Call(m, "SetStreamHandler", arg0, arg1) + m.ctrl.Call(m, "SetStreamHandler", pid, handler) } // SetStreamHandler indicates an expected call of SetStreamHandler. -func (mr *MockHostMockRecorder) SetStreamHandler(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockHostMockRecorder) SetStreamHandler(pid, handler any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetStreamHandler", reflect.TypeOf((*MockHost)(nil).SetStreamHandler), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetStreamHandler", reflect.TypeOf((*MockHost)(nil).SetStreamHandler), pid, handler) } // SetStreamHandlerMatch mocks base method. @@ -218,7 +224,7 @@ func (m *MockHost) SetStreamHandlerMatch(arg0 protocol.ID, arg1 func(protocol.ID } // SetStreamHandlerMatch indicates an expected call of SetStreamHandlerMatch. -func (mr *MockHostMockRecorder) SetStreamHandlerMatch(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockHostMockRecorder) SetStreamHandlerMatch(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetStreamHandlerMatch", reflect.TypeOf((*MockHost)(nil).SetStreamHandlerMatch), arg0, arg1, arg2) } diff --git a/comm/p2p/mock/stream/stream.go b/comm/p2p/mock/stream/stream.go index 255ed15d..0e1ae323 100644 --- a/comm/p2p/mock/stream/stream.go +++ b/comm/p2p/mock/stream/stream.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/libp2p/go-libp2p/core/network (interfaces: Stream,Conn) +// +// Generated by this command: +// +// mockgen -destination=./comm/p2p/mock/stream/stream.go github.com/libp2p/go-libp2p/core/network Stream,Conn +// // Package mock_network is a generated GoMock package. package mock_network @@ -9,18 +14,19 @@ import ( reflect "reflect" time "time" - gomock "github.com/golang/mock/gomock" crypto "github.com/libp2p/go-libp2p/core/crypto" network "github.com/libp2p/go-libp2p/core/network" peer "github.com/libp2p/go-libp2p/core/peer" protocol "github.com/libp2p/go-libp2p/core/protocol" multiaddr "github.com/multiformats/go-multiaddr" + gomock "go.uber.org/mock/gomock" ) // MockStream is a mock of Stream interface. type MockStream struct { ctrl *gomock.Controller recorder *MockStreamMockRecorder + isgomock struct{} } // MockStreamMockRecorder is the mock recorder for MockStream. @@ -125,18 +131,18 @@ func (mr *MockStreamMockRecorder) Protocol() *gomock.Call { } // Read mocks base method. -func (m *MockStream) Read(arg0 []byte) (int, error) { +func (m *MockStream) Read(p []byte) (int, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Read", arg0) + ret := m.ctrl.Call(m, "Read", p) ret0, _ := ret[0].(int) ret1, _ := ret[1].(error) return ret0, ret1 } // Read indicates an expected call of Read. -func (mr *MockStreamMockRecorder) Read(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) Read(p any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockStream)(nil).Read), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockStream)(nil).Read), p) } // Reset mocks base method. @@ -176,23 +182,23 @@ func (m *MockStream) SetDeadline(arg0 time.Time) error { } // SetDeadline indicates an expected call of SetDeadline. -func (mr *MockStreamMockRecorder) SetDeadline(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) SetDeadline(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetDeadline", reflect.TypeOf((*MockStream)(nil).SetDeadline), arg0) } // SetProtocol mocks base method. -func (m *MockStream) SetProtocol(arg0 protocol.ID) error { +func (m *MockStream) SetProtocol(id protocol.ID) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetProtocol", arg0) + ret := m.ctrl.Call(m, "SetProtocol", id) ret0, _ := ret[0].(error) return ret0 } // SetProtocol indicates an expected call of SetProtocol. -func (mr *MockStreamMockRecorder) SetProtocol(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) SetProtocol(id any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetProtocol", reflect.TypeOf((*MockStream)(nil).SetProtocol), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetProtocol", reflect.TypeOf((*MockStream)(nil).SetProtocol), id) } // SetReadDeadline mocks base method. @@ -204,7 +210,7 @@ func (m *MockStream) SetReadDeadline(arg0 time.Time) error { } // SetReadDeadline indicates an expected call of SetReadDeadline. -func (mr *MockStreamMockRecorder) SetReadDeadline(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) SetReadDeadline(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetReadDeadline", reflect.TypeOf((*MockStream)(nil).SetReadDeadline), arg0) } @@ -218,7 +224,7 @@ func (m *MockStream) SetWriteDeadline(arg0 time.Time) error { } // SetWriteDeadline indicates an expected call of SetWriteDeadline. -func (mr *MockStreamMockRecorder) SetWriteDeadline(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) SetWriteDeadline(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetWriteDeadline", reflect.TypeOf((*MockStream)(nil).SetWriteDeadline), arg0) } @@ -238,24 +244,25 @@ func (mr *MockStreamMockRecorder) Stat() *gomock.Call { } // Write mocks base method. -func (m *MockStream) Write(arg0 []byte) (int, error) { +func (m *MockStream) Write(p []byte) (int, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Write", arg0) + ret := m.ctrl.Call(m, "Write", p) ret0, _ := ret[0].(int) ret1, _ := ret[1].(error) return ret0, ret1 } // Write indicates an expected call of Write. -func (mr *MockStreamMockRecorder) Write(arg0 interface{}) *gomock.Call { +func (mr *MockStreamMockRecorder) Write(p any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Write", reflect.TypeOf((*MockStream)(nil).Write), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Write", reflect.TypeOf((*MockStream)(nil).Write), p) } // MockConn is a mock of Conn interface. type MockConn struct { ctrl *gomock.Controller recorder *MockConnMockRecorder + isgomock struct{} } // MockConnMockRecorder is the mock recorder for MockConn. @@ -383,7 +390,7 @@ func (m *MockConn) NewStream(arg0 context.Context) (network.Stream, error) { } // NewStream indicates an expected call of NewStream. -func (mr *MockConnMockRecorder) NewStream(arg0 interface{}) *gomock.Call { +func (mr *MockConnMockRecorder) NewStream(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewStream", reflect.TypeOf((*MockConn)(nil).NewStream), arg0) } diff --git a/go.mod b/go.mod index 45473396..20917450 100644 --- a/go.mod +++ b/go.mod @@ -6,15 +6,16 @@ require ( github.com/binance-chain/tss-lib v0.0.0-00010101000000-000000000000 github.com/centrifuge/go-substrate-rpc-client/v4 v4.2.1 github.com/creasty/defaults v1.6.0 - github.com/ethereum/go-ethereum v1.13.4 + github.com/ethereum/go-ethereum v1.15.2 github.com/golang/mock v1.6.0 github.com/imdario/mergo v0.3.12 + github.com/jellydator/ttlcache/v3 v3.3.0 github.com/libp2p/go-libp2p v0.38.2 github.com/mitchellh/mapstructure v1.4.2 github.com/multiformats/go-multiaddr v0.14.0 github.com/multiformats/go-multiaddr-dns v0.4.1 github.com/rs/zerolog v1.25.0 - github.com/spf13/cobra v1.5.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.10.0 github.com/sygmaprotocol/sygma-core v0.0.0-20241028121638-2c5597ae589f @@ -26,16 +27,18 @@ require ( ) require ( - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/bits-and-blooms/bitset v1.7.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/crate-crypto/go-kzg-4844 v0.3.0 // indirect + github.com/consensys/bavard v0.1.22 // indirect + github.com/consensys/gnark-crypto v0.14.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect + github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect github.com/cronokirby/saferith v0.33.0 // indirect - github.com/deckarep/golang-set/v2 v2.1.0 // indirect - github.com/ethereum/c-kzg-4844 v0.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.2.2 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -43,7 +46,7 @@ require ( github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect - github.com/holiman/uint256 v1.2.3 // indirect + github.com/holiman/uint256 v1.3.2 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/onsi/ginkgo/v2 v2.22.0 // indirect @@ -60,6 +63,7 @@ require ( github.com/pion/sdp/v3 v3.0.9 // indirect github.com/pion/srtp/v2 v2.0.20 // indirect github.com/pion/stun v0.6.1 // indirect + github.com/pion/stun/v2 v2.0.0 // indirect github.com/pion/transport/v2 v2.2.10 // indirect github.com/pion/transport/v3 v3.0.7 // indirect github.com/pion/turn/v2 v2.1.6 // indirect @@ -67,7 +71,7 @@ require ( github.com/quic-go/qpack v0.5.1 // indirect github.com/quic-go/quic-go v0.48.2 // indirect github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect - github.com/supranational/blst v0.3.11 // indirect + github.com/supranational/blst v0.3.14 // indirect github.com/vedhavyas/go-subkey/v2 v2.0.0 // indirect github.com/wlynxg/anet v0.0.5 // indirect github.com/x448/float16 v0.8.4 // indirect @@ -103,11 +107,10 @@ require ( github.com/flynn/noise v1.1.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-ole/go-ole v1.2.5 // indirect - github.com/go-stack/stack v1.8.1 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/gopacket v1.1.19 // indirect github.com/gorilla/websocket v1.5.3 // indirect @@ -115,7 +118,7 @@ require ( github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/huin/goupnp v1.3.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-log v1.0.5 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect @@ -181,13 +184,13 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.32.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.28.0 // indirect + golang.org/x/tools v0.29.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.36.0 // indirect diff --git a/go.sum b/go.sum index a15696ef..a7cb2799 100644 --- a/go.sum +++ b/go.sum @@ -59,13 +59,13 @@ github.com/ChainSafe/threshlib v0.0.0-20230420112309-603112eb4684 h1:l5IpX6FFHNF github.com/ChainSafe/threshlib v0.0.0-20230420112309-603112eb4684/go.mod h1:QWOI8ORRuVh3uoHDqcDVOjUmg+CIVvNmzJOs4vWlfcY= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= -github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -83,8 +83,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/binance-chain/edwards25519 v0.0.0-20200305024217-f36fc4b53d43 h1:Vkf7rtHx8uHx8gDfkQaCdVfc+gfrF9v6sR6xJy7RXNg= github.com/binance-chain/edwards25519 v0.0.0-20200305024217-f36fc4b53d43/go.mod h1:TnVqVdGEK8b6erOMkcyYGWzCQMw7HEMCOw3BgFYCFWs= -github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= -github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= +github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.24.0 h1:gL3uHE/IaFj6fcZSu03SvqPMSx7s/dPzfpG/atRwWdo= @@ -125,22 +125,22 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/errors v1.8.1 h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= -github.com/cockroachdb/redact v1.0.8 h1:8QG/764wK+vmEYoOlfobpe12EQcS81ukx/a4hdVMxNw= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= -github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= +github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= +github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= @@ -155,10 +155,12 @@ github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-kzg-4844 v0.3.0 h1:UBlWE0CgyFqqzTI+IFyCzA7A3Zw4iip6uzRv5NIXG0A= -github.com/crate-crypto/go-kzg-4844 v0.3.0/go.mod h1:SBP7ikXEgDnUPONgm33HtuDZEDtWa3L4QtN1ocJSEQ4= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= +github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= +github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/creasty/defaults v1.6.0 h1:ltuE9cfphUtlrBeomuu8PEyISTXnxqkBIoQfXgv7BSc= github.com/creasty/defaults v1.6.0/go.mod h1:iGzKe6pbEHnpMPtfDXZEr0NVxWnPTjb1bbDy08fPzYM= github.com/cronokirby/saferith v0.33.0 h1:TgoQlfsD4LIwx71+ChfRcIpjkw+RPOapDEVxa+LhwLo= @@ -169,8 +171,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= -github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -196,14 +198,14 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v0.3.1 h1:sR65+68+WdnMKxseNWxSJuAv2tsUrihTpVBTfM/U5Zg= -github.com/ethereum/c-kzg-4844 v0.3.1/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.13.4 h1:25HJnaWVg3q1O7Z62LaaI6S9wVq8QCw3K88g8wEzrcM= -github.com/ethereum/go-ethereum v1.13.4/go.mod h1:I0U5VewuuTzvBtVzKo7b3hJzDhXOUtn9mJW7SsIPB0Q= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.15.2 h1:CcU13w1IXOo6FvS60JGCTVcAJ5Ik6RkWoVIvziiHdTU= +github.com/ethereum/go-ethereum v1.15.2/go.mod h1:wGQINJKEVUunCeoaA9C9qKMQ9GEOsEIunzzqTUO2F6Y= +github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= +github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= @@ -217,8 +219,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -230,10 +232,9 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= @@ -247,8 +248,8 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -284,8 +285,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= @@ -309,8 +310,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -382,12 +383,12 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZKHF9GxxWKDJGj8I0IqOUol//sw= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= +github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= @@ -395,8 +396,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= @@ -409,6 +410,8 @@ github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+ github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jellydator/ttlcache/v3 v3.3.0 h1:BdoC9cE81qXfrxeb9eoJi9dWrdhSuwXMAnHTbnBm4Wc= +github.com/jellydator/ttlcache/v3 v3.3.0/go.mod h1:bj2/e0l4jRnQdrnSTaGTsh4GSXvMjQcy41i7th0GVGw= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -439,8 +442,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= @@ -618,6 +621,8 @@ github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= github.com/pion/srtp/v2 v2.0.20/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= +github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0= +github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ= github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= @@ -664,8 +669,8 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -717,16 +722,14 @@ github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= -github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -747,8 +750,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= +github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/sygmaprotocol/sygma-core v0.0.0-20241028121638-2c5597ae589f h1:tZb5+2slQMAb+OTYZGDvri7JJn8osd9lPJWbNv9Z8XU= github.com/sygmaprotocol/sygma-core v0.0.0-20241028121638-2c5597ae589f/go.mod h1:Shna6DuIf/SE2yGmhO+76Ou0oszfWKabX4n8gMnIH8U= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= @@ -760,8 +763,6 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -865,8 +866,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -960,8 +961,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= -golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1066,6 +1067,7 @@ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1073,8 +1075,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -1165,8 +1167,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1327,8 +1329,8 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/topology/mock/topology.go b/topology/mock/topology.go index 6ceb2b02..cf686b03 100644 --- a/topology/mock/topology.go +++ b/topology/mock/topology.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./topology/topology.go +// +// Generated by this command: +// +// mockgen -source=./topology/topology.go -destination=./topology/mock/topology.go +// // Package mock_topology is a generated GoMock package. package mock_topology @@ -8,14 +13,15 @@ import ( http "net/http" reflect "reflect" - gomock "github.com/golang/mock/gomock" topology "github.com/sprintertech/sprinter-signing/topology" + gomock "go.uber.org/mock/gomock" ) // MockFetcher is a mock of Fetcher interface. type MockFetcher struct { ctrl *gomock.Controller recorder *MockFetcherMockRecorder + isgomock struct{} } // MockFetcherMockRecorder is the mock recorder for MockFetcher. @@ -45,7 +51,7 @@ func (m *MockFetcher) Get(url string) (*http.Response, error) { } // Get indicates an expected call of Get. -func (mr *MockFetcherMockRecorder) Get(url interface{}) *gomock.Call { +func (mr *MockFetcherMockRecorder) Get(url any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockFetcher)(nil).Get), url) } @@ -54,6 +60,7 @@ func (mr *MockFetcherMockRecorder) Get(url interface{}) *gomock.Call { type MockDecrypter struct { ctrl *gomock.Controller recorder *MockDecrypterMockRecorder + isgomock struct{} } // MockDecrypterMockRecorder is the mock recorder for MockDecrypter. @@ -82,7 +89,7 @@ func (m *MockDecrypter) Decrypt(data []byte) []byte { } // Decrypt indicates an expected call of Decrypt. -func (mr *MockDecrypterMockRecorder) Decrypt(data interface{}) *gomock.Call { +func (mr *MockDecrypterMockRecorder) Decrypt(data any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Decrypt", reflect.TypeOf((*MockDecrypter)(nil).Decrypt), data) } @@ -91,6 +98,7 @@ func (mr *MockDecrypterMockRecorder) Decrypt(data interface{}) *gomock.Call { type MockNetworkTopologyProvider struct { ctrl *gomock.Controller recorder *MockNetworkTopologyProviderMockRecorder + isgomock struct{} } // MockNetworkTopologyProviderMockRecorder is the mock recorder for MockNetworkTopologyProvider. @@ -120,7 +128,7 @@ func (m *MockNetworkTopologyProvider) NetworkTopology(hash string) (*topology.Ne } // NetworkTopology indicates an expected call of NetworkTopology. -func (mr *MockNetworkTopologyProviderMockRecorder) NetworkTopology(hash interface{}) *gomock.Call { +func (mr *MockNetworkTopologyProviderMockRecorder) NetworkTopology(hash any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetworkTopology", reflect.TypeOf((*MockNetworkTopologyProvider)(nil).NetworkTopology), hash) } diff --git a/topology/topology_test.go b/topology/topology_test.go index 30d4c991..5e6b7141 100644 --- a/topology/topology_test.go +++ b/topology/topology_test.go @@ -11,11 +11,11 @@ import ( "strings" "testing" - "github.com/golang/mock/gomock" "github.com/libp2p/go-libp2p/core/peer" "github.com/sprintertech/sprinter-signing/config/relayer" "github.com/sprintertech/sprinter-signing/topology" "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" mock_topology "github.com/sprintertech/sprinter-signing/topology/mock" ) diff --git a/tss/coordinator.go b/tss/coordinator.go index 17dd20b9..9acbb67e 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -23,9 +23,9 @@ import ( ) var ( - initiatePeriod = 15 * time.Second - coordinatorTimeout = 3 * time.Minute - tssTimeout = 15 * time.Minute + initiatePeriod = 1 * time.Second + coordinatorTimeout = 10 * time.Second + tssTimeout = 30 * time.Second ) type TssProcess interface { diff --git a/tss/ecdsa/common/base_test.go b/tss/ecdsa/common/base_test.go index c4ccc9d3..ff2a9cdb 100644 --- a/tss/ecdsa/common/base_test.go +++ b/tss/ecdsa/common/base_test.go @@ -12,7 +12,6 @@ import ( "time" "github.com/binance-chain/tss-lib/tss" - "github.com/golang/mock/gomock" "github.com/libp2p/go-libp2p/core/peer" "github.com/sourcegraph/conc/pool" "github.com/sprintertech/sprinter-signing/comm" @@ -21,6 +20,7 @@ import ( mock_tss "github.com/sprintertech/sprinter-signing/tss/ecdsa/common/mock" "github.com/sprintertech/sprinter-signing/tss/message" "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" ) type BaseTssTestSuite struct { diff --git a/tss/ecdsa/common/mock/communication.go b/tss/ecdsa/common/mock/communication.go index 43eaf7bc..b782ee1f 100644 --- a/tss/ecdsa/common/mock/communication.go +++ b/tss/ecdsa/common/mock/communication.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./tss/ecdsa/common/base.go +// +// Generated by this command: +// +// mockgen -destination=./tss/ecdsa/common/mock/communication.go -source=./tss/ecdsa/common/base.go -package mock_tss +// // Package mock_tss is a generated GoMock package. package mock_tss @@ -9,13 +14,14 @@ import ( reflect "reflect" tss "github.com/binance-chain/tss-lib/tss" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockParty is a mock of Party interface. type MockParty struct { ctrl *gomock.Controller recorder *MockPartyMockRecorder + isgomock struct{} } // MockPartyMockRecorder is the mock recorder for MockParty. @@ -59,7 +65,7 @@ func (m *MockParty) UpdateFromBytes(wireBytes []byte, from *tss.PartyID, isBroad } // UpdateFromBytes indicates an expected call of UpdateFromBytes. -func (mr *MockPartyMockRecorder) UpdateFromBytes(wireBytes, from, isBroadcast, sessionID interface{}) *gomock.Call { +func (mr *MockPartyMockRecorder) UpdateFromBytes(wireBytes, from, isBroadcast, sessionID any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateFromBytes", reflect.TypeOf((*MockParty)(nil).UpdateFromBytes), wireBytes, from, isBroadcast, sessionID) } diff --git a/tss/ecdsa/common/mock/fetcher.go b/tss/ecdsa/common/mock/fetcher.go new file mode 100644 index 00000000..51079b77 --- /dev/null +++ b/tss/ecdsa/common/mock/fetcher.go @@ -0,0 +1,80 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: ./tss/ecdsa/signing/signing.go +// +// Generated by this command: +// +// mockgen -destination=./tss/ecdsa/common/mock/fetcher.go -source=./tss/ecdsa/signing/signing.go -package mock_tss +// + +// Package mock_tss is a generated GoMock package. +package mock_tss + +import ( + reflect "reflect" + + keyshare "github.com/sprintertech/sprinter-signing/keyshare" + gomock "go.uber.org/mock/gomock" +) + +// MockSaveDataFetcher is a mock of SaveDataFetcher interface. +type MockSaveDataFetcher struct { + ctrl *gomock.Controller + recorder *MockSaveDataFetcherMockRecorder + isgomock struct{} +} + +// MockSaveDataFetcherMockRecorder is the mock recorder for MockSaveDataFetcher. +type MockSaveDataFetcherMockRecorder struct { + mock *MockSaveDataFetcher +} + +// NewMockSaveDataFetcher creates a new mock instance. +func NewMockSaveDataFetcher(ctrl *gomock.Controller) *MockSaveDataFetcher { + mock := &MockSaveDataFetcher{ctrl: ctrl} + mock.recorder = &MockSaveDataFetcherMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockSaveDataFetcher) EXPECT() *MockSaveDataFetcherMockRecorder { + return m.recorder +} + +// GetKeyshare mocks base method. +func (m *MockSaveDataFetcher) GetKeyshare() (keyshare.ECDSAKeyshare, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetKeyshare") + ret0, _ := ret[0].(keyshare.ECDSAKeyshare) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetKeyshare indicates an expected call of GetKeyshare. +func (mr *MockSaveDataFetcherMockRecorder) GetKeyshare() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetKeyshare", reflect.TypeOf((*MockSaveDataFetcher)(nil).GetKeyshare)) +} + +// LockKeyshare mocks base method. +func (m *MockSaveDataFetcher) LockKeyshare() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "LockKeyshare") +} + +// LockKeyshare indicates an expected call of LockKeyshare. +func (mr *MockSaveDataFetcherMockRecorder) LockKeyshare() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LockKeyshare", reflect.TypeOf((*MockSaveDataFetcher)(nil).LockKeyshare)) +} + +// UnlockKeyshare mocks base method. +func (m *MockSaveDataFetcher) UnlockKeyshare() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "UnlockKeyshare") +} + +// UnlockKeyshare indicates an expected call of UnlockKeyshare. +func (mr *MockSaveDataFetcherMockRecorder) UnlockKeyshare() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnlockKeyshare", reflect.TypeOf((*MockSaveDataFetcher)(nil).UnlockKeyshare)) +} diff --git a/tss/ecdsa/common/mock/tss.go b/tss/ecdsa/common/mock/tss.go index 7bd6d8b0..0f4d5757 100644 --- a/tss/ecdsa/common/mock/tss.go +++ b/tss/ecdsa/common/mock/tss.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: github.com/binance-chain/tss-lib/tss (interfaces: Message) +// +// Generated by this command: +// +// mockgen -destination=./tss/ecdsa/common/mock/tss.go github.com/binance-chain/tss-lib/tss Message +// // Package mock_tss is a generated GoMock package. package mock_tss @@ -9,13 +14,14 @@ import ( reflect "reflect" tss "github.com/binance-chain/tss-lib/tss" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockMessage is a mock of Message interface. type MockMessage struct { ctrl *gomock.Controller recorder *MockMessageMockRecorder + isgomock struct{} } // MockMessageMockRecorder is the mock recorder for MockMessage. diff --git a/tss/ecdsa/signing/signing.go b/tss/ecdsa/signing/signing.go index 4a550696..9ec1b98c 100644 --- a/tss/ecdsa/signing/signing.go +++ b/tss/ecdsa/signing/signing.go @@ -14,6 +14,7 @@ import ( tssCommon "github.com/binance-chain/tss-lib/common" "github.com/binance-chain/tss-lib/ecdsa/signing" "github.com/binance-chain/tss-lib/tss" + ethCommon "github.com/ethereum/go-ethereum/common" "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/peer" "github.com/rs/zerolog/log" @@ -24,6 +25,7 @@ import ( "github.com/sprintertech/sprinter-signing/keyshare" errors "github.com/sprintertech/sprinter-signing/tss" "github.com/sprintertech/sprinter-signing/tss/ecdsa/common" + "github.com/sprintertech/sprinter-signing/tss/message" "github.com/sprintertech/sprinter-signing/tss/util" ) @@ -33,6 +35,11 @@ type SaveDataFetcher interface { UnlockKeyshare() } +type EcdsaSignature struct { + Signature []byte + ID string +} + type Signing struct { common.BaseTss coordinator bool @@ -196,12 +203,20 @@ func (s *Signing) processEndMessage(ctx context.Context, endChn chan tssCommon.S { s.Log.Info().Msg("Successfully generated signature") - if s.coordinator { - s.resultChn <- &sig - } else { - s.resultChn <- nil + es := []byte{} + es = append(es[:], ethCommon.LeftPadBytes(sig.R, 32)...) + es = append(es[:], ethCommon.LeftPadBytes(sig.S, 32)...) + es = append(es[:], sig.SignatureRecovery...) + + s.resultChn <- EcdsaSignature{ + Signature: es, + ID: s.SID, } + err := s.distributeSignature(es) + if err != nil { + log.Warn().Msgf("Failed distributing signature: %s", err) + } return nil } case <-ctx.Done(): @@ -258,3 +273,17 @@ func (s *Signing) monitorSigning(ctx context.Context) error { } } } + +func (s *Signing) distributeSignature(sig []byte) error { + if s.coordinator { + return nil + } + + sigMsg, err := message.MarshalSignatureMessage(s.SessionID(), sig) + if err != nil { + return err + } + + err = s.Communication.Broadcast(s.Host.Peerstore().Peers(), sigMsg, comm.SignatureMsg, comm.SignatureSessionID) + return err +} diff --git a/tss/ecdsa/signing/signing_test.go b/tss/ecdsa/signing/signing_test.go index 120bbf5a..a3fa8bef 100644 --- a/tss/ecdsa/signing/signing_test.go +++ b/tss/ecdsa/signing/signing_test.go @@ -69,7 +69,7 @@ func (s *SigningTestSuite) Test_ValidSigningProcess() { sig1 := <-resultChn sig2 := <-resultChn - s.NotEqual(sig1, sig2) + s.Equal(sig1, sig2) if sig1 == nil && sig2 == nil { s.Fail("signature is nil") } diff --git a/tss/message/message.go b/tss/message/message.go index 8165493a..84331ff9 100644 --- a/tss/message/message.go +++ b/tss/message/message.go @@ -5,6 +5,7 @@ package message import ( "encoding/json" + "math/big" ) type TssMessage struct { @@ -62,3 +63,63 @@ func UnmarshalStartMessage(msgBytes []byte) (*StartMessage, error) { return msg, nil } + +type SignatureMessage struct { + Signature []byte `json:"signature"` + ID string `json:"id"` +} + +func MarshalSignatureMessage(id string, signature []byte) ([]byte, error) { + signatureMessage := &SignatureMessage{ + Signature: signature, + ID: id, + } + + msgBytes, err := json.Marshal(signatureMessage) + if err != nil { + return []byte{}, err + } + + return msgBytes, nil +} + +func UnmarshalSignatureMessage(msgBytes []byte) (*SignatureMessage, error) { + msg := &SignatureMessage{} + err := json.Unmarshal(msgBytes, msg) + if err != nil { + return nil, err + } + + return msg, nil +} + +type AcrossMessage struct { + DepositId *big.Int `json:"depositId"` + Source uint8 `json:"source"` + Destination uint8 `json:"destination"` +} + +func MarshalAcrossMessage(depositId *big.Int, source, destination uint8) ([]byte, error) { + signatureMessage := &AcrossMessage{ + DepositId: depositId, + Source: source, + Destination: destination, + } + + msgBytes, err := json.Marshal(signatureMessage) + if err != nil { + return []byte{}, err + } + + return msgBytes, nil +} + +func UnmarshalAcrossMessage(msgBytes []byte) (*AcrossMessage, error) { + msg := &AcrossMessage{} + err := json.Unmarshal(msgBytes, msg) + if err != nil { + return nil, err + } + + return msg, nil +} diff --git a/tss/message/message_test.go b/tss/message/message_test.go index 6a8d1919..88d3d738 100644 --- a/tss/message/message_test.go +++ b/tss/message/message_test.go @@ -4,6 +4,7 @@ package message_test import ( + "math/big" "testing" "github.com/sprintertech/sprinter-signing/tss/message" @@ -52,3 +53,48 @@ func (s *StartMessageTestSuite) Test_UnmarshaledMessageShouldBeEqual() { s.Equal(originalMsg, unmarshaledMsg) } + +type SignatureMessageTestSuite struct { + suite.Suite +} + +func TestRunSignatureMessageTestSuite(t *testing.T) { + suite.Run(t, new(SignatureMessageTestSuite)) +} + +func (s *SignatureMessageTestSuite) Test_UnmarshaledMessageShouldBeEqual() { + originalMsg := &message.SignatureMessage{ + ID: "id", + Signature: []byte("test"), + } + msgBytes, err := message.MarshalSignatureMessage(originalMsg.ID, originalMsg.Signature) + s.Nil(err) + + unmarshaledMsg, err := message.UnmarshalSignatureMessage(msgBytes) + s.Nil(err) + + s.Equal(originalMsg, unmarshaledMsg) +} + +type AcrossMessageTestSuite struct { + suite.Suite +} + +func TestRunAcrossMessageTestSuite(t *testing.T) { + suite.Run(t, new(AcrossMessageTestSuite)) +} + +func (s *AcrossMessageTestSuite) Test_UnmarshaledMessageShouldBeEqual() { + originalMsg := &message.AcrossMessage{ + DepositId: big.NewInt(100), + Source: 1, + Destination: 2, + } + msgBytes, err := message.MarshalAcrossMessage(originalMsg.DepositId, originalMsg.Source, originalMsg.Destination) + s.Nil(err) + + unmarshaledMsg, err := message.UnmarshalAcrossMessage(msgBytes) + s.Nil(err) + + s.Equal(originalMsg, unmarshaledMsg) +} diff --git a/tss/mock/coordinator.go b/tss/mock/coordinator.go index 8268dd2b..23a64213 100644 --- a/tss/mock/coordinator.go +++ b/tss/mock/coordinator.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./tss/coordinator.go +// +// Generated by this command: +// +// mockgen -source=./tss/coordinator.go -destination=./tss/mock/coordinator.go +// // Package mock_tss is a generated GoMock package. package mock_tss @@ -8,14 +13,15 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" peer "github.com/libp2p/go-libp2p/core/peer" + gomock "go.uber.org/mock/gomock" ) // MockTssProcess is a mock of TssProcess interface. type MockTssProcess struct { ctrl *gomock.Controller recorder *MockTssProcessMockRecorder + isgomock struct{} } // MockTssProcessMockRecorder is the mock recorder for MockTssProcess. @@ -45,7 +51,7 @@ func (m *MockTssProcess) Ready(readyPeers, excludedPeers []peer.ID) (bool, error } // Ready indicates an expected call of Ready. -func (mr *MockTssProcessMockRecorder) Ready(readyPeers, excludedPeers interface{}) *gomock.Call { +func (mr *MockTssProcessMockRecorder) Ready(readyPeers, excludedPeers any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Ready", reflect.TypeOf((*MockTssProcess)(nil).Ready), readyPeers, excludedPeers) } @@ -65,7 +71,7 @@ func (mr *MockTssProcessMockRecorder) Retryable() *gomock.Call { } // Run mocks base method. -func (m *MockTssProcess) Run(ctx context.Context, coordinator bool, resultChn chan interface{}, params []byte) error { +func (m *MockTssProcess) Run(ctx context.Context, coordinator bool, resultChn chan any, params []byte) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Run", ctx, coordinator, resultChn, params) ret0, _ := ret[0].(error) @@ -73,7 +79,7 @@ func (m *MockTssProcess) Run(ctx context.Context, coordinator bool, resultChn ch } // Run indicates an expected call of Run. -func (mr *MockTssProcessMockRecorder) Run(ctx, coordinator, resultChn, params interface{}) *gomock.Call { +func (mr *MockTssProcessMockRecorder) Run(ctx, coordinator, resultChn, params any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockTssProcess)(nil).Run), ctx, coordinator, resultChn, params) } @@ -101,7 +107,7 @@ func (m *MockTssProcess) StartParams(readyPeers []peer.ID) []byte { } // StartParams indicates an expected call of StartParams. -func (mr *MockTssProcessMockRecorder) StartParams(readyPeers interface{}) *gomock.Call { +func (mr *MockTssProcessMockRecorder) StartParams(readyPeers any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StartParams", reflect.TypeOf((*MockTssProcess)(nil).StartParams), readyPeers) } diff --git a/tss/mock/ecdsa.go b/tss/mock/ecdsa.go index c69f986c..bcad1f35 100644 --- a/tss/mock/ecdsa.go +++ b/tss/mock/ecdsa.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: ./tss/ecdsa/keygen/keygen.go +// +// Generated by this command: +// +// mockgen --package mock_tss -destination=./tss/mock/ecdsa.go -source=./tss/ecdsa/keygen/keygen.go +// // Package mock_tss is a generated GoMock package. package mock_tss @@ -7,14 +12,15 @@ package mock_tss import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" keyshare "github.com/sprintertech/sprinter-signing/keyshare" + gomock "go.uber.org/mock/gomock" ) // MockECDSAKeyshareStorer is a mock of ECDSAKeyshareStorer interface. type MockECDSAKeyshareStorer struct { ctrl *gomock.Controller recorder *MockECDSAKeyshareStorerMockRecorder + isgomock struct{} } // MockECDSAKeyshareStorerMockRecorder is the mock recorder for MockECDSAKeyshareStorer. @@ -70,7 +76,7 @@ func (m *MockECDSAKeyshareStorer) StoreKeyshare(keyshare keyshare.ECDSAKeyshare) } // StoreKeyshare indicates an expected call of StoreKeyshare. -func (mr *MockECDSAKeyshareStorerMockRecorder) StoreKeyshare(keyshare interface{}) *gomock.Call { +func (mr *MockECDSAKeyshareStorerMockRecorder) StoreKeyshare(keyshare any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StoreKeyshare", reflect.TypeOf((*MockECDSAKeyshareStorer)(nil).StoreKeyshare), keyshare) } diff --git a/tss/test/utils.go b/tss/test/utils.go index 98314e39..6f39dcef 100644 --- a/tss/test/utils.go +++ b/tss/test/utils.go @@ -8,7 +8,6 @@ import ( "os" "time" - "github.com/golang/mock/gomock" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/host" @@ -16,6 +15,7 @@ import ( "github.com/libp2p/go-libp2p/core/peerstore" "github.com/sprintertech/sprinter-signing/config/relayer" "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" mock_comm "github.com/sprintertech/sprinter-signing/comm/mock" mock_tss "github.com/sprintertech/sprinter-signing/tss/mock" @@ -25,7 +25,6 @@ type CoordinatorTestSuite struct { suite.Suite GomockController *gomock.Controller MockECDSAStorer *mock_tss.MockECDSAKeyshareStorer - MockFrostStorer *mock_tss.MockFrostKeyshareStorer MockCommunication *mock_comm.MockCommunication MockTssProcess *mock_tss.MockTssProcess @@ -38,7 +37,6 @@ type CoordinatorTestSuite struct { func (s *CoordinatorTestSuite) SetupTest() { s.GomockController = gomock.NewController(s.T()) s.MockECDSAStorer = mock_tss.NewMockECDSAKeyshareStorer(s.GomockController) - s.MockFrostStorer = mock_tss.NewMockFrostKeyshareStorer(s.GomockController) s.MockCommunication = mock_comm.NewMockCommunication(s.GomockController) s.MockTssProcess = mock_tss.NewMockTssProcess(s.GomockController) s.PartyNumber = 3