From c8bd668130cc685709339abfd7d57922edd7a786 Mon Sep 17 00:00:00 2001 From: Jerry Fan Date: Thu, 3 Oct 2024 12:21:42 -0400 Subject: [PATCH] fix tsnonce preventing multisignature bug --- protocol/x/accountplus/ante/timestampnonce.go | 11 ++++++++--- protocol/x/accountplus/ante/timestampnonce_test.go | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/protocol/x/accountplus/ante/timestampnonce.go b/protocol/x/accountplus/ante/timestampnonce.go index a914a6cc83..4871766e76 100644 --- a/protocol/x/accountplus/ante/timestampnonce.go +++ b/protocol/x/accountplus/ante/timestampnonce.go @@ -20,9 +20,14 @@ func IsTimestampNonceTx(ctx sdk.Context, tx sdk.Tx) (bool, error) { return false, err } - if len(signatures) != 1 { - return false, errorsmod.Wrap(sdkerrors.ErrTxDecode, "more than one signature") + // multi signature cannot contain timestamp nonce + if len(signatures) > 1 { + for _, sig := range signatures { + if accountpluskeeper.IsTimestampNonce(sig.Sequence) { + return false, errorsmod.Wrap(sdkerrors.ErrTxDecode, "multi signature contains timestampnonce") + } + } } - return accountpluskeeper.IsTimestampNonce(signatures[0].Sequence), nil + return len(signatures) == 1 && accountpluskeeper.IsTimestampNonce(signatures[0].Sequence), nil } diff --git a/protocol/x/accountplus/ante/timestampnonce_test.go b/protocol/x/accountplus/ante/timestampnonce_test.go index 88ba421526..1a5fc5cc3a 100644 --- a/protocol/x/accountplus/ante/timestampnonce_test.go +++ b/protocol/x/accountplus/ante/timestampnonce_test.go @@ -32,7 +32,12 @@ func TestIsTimestampNonceTx(t *testing.T) { expectedResult: true, expectedErr: false, }, - "Returns error for more than one signature": { + "Returns false with no error if multisignature with regular seq number": { + seqs: []uint64{1, 1}, + expectedResult: false, + expectedErr: false, + }, + "Returns error for multisignature with timestamp nonce": { seqs: []uint64{keeper.TimestampNonceSequenceCutoff, keeper.TimestampNonceSequenceCutoff}, expectedResult: false, expectedErr: true,