From 854ad5a36d0136f97be16b28e7a2ad8e70c43ac6 Mon Sep 17 00:00:00 2001 From: Callum Waters Date: Fri, 5 Apr 2024 10:58:12 +0200 Subject: [PATCH] fix: disable automatic resigning for the signer pkg (#3257) Ref: https://github.com/celestiaorg/celestia-app/issues/3256 --- pkg/user/e2e_test.go | 5 ++--- pkg/user/signer.go | 10 +++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/user/e2e_test.go b/pkg/user/e2e_test.go index 27885e835e..e906929b2f 100644 --- a/pkg/user/e2e_test.go +++ b/pkg/user/e2e_test.go @@ -70,9 +70,8 @@ func TestConcurrentTxSubmission(t *testing.T) { } func TestSignerTwins(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } + // Ref: https://github.com/celestiaorg/celestia-app/issues/3256 + t.Skip() // Setup network tmConfig := testnode.DefaultTendermintConfig() diff --git a/pkg/user/signer.go b/pkg/user/signer.go index 1f7e5ed294..ad35f2a622 100644 --- a/pkg/user/signer.go +++ b/pkg/user/signer.go @@ -294,9 +294,13 @@ func (s *Signer) broadcastTx(ctx context.Context, txBytes []byte, sequence uint6 } s.networkSequence = nextSequence s.localSequence = nextSequence - return s.retryBroadcastingTx(ctx, txBytes, nextSequence) - } - if resp.TxResponse.Code == abci.CodeTypeOK { + // FIXME: We can't actually resign the transaction. A malicious node + // may manipulate us into signing the same transaction several times + // and then executing them. We need some proof of what the last network + // sequence is rather than relying on an error provided by the node + // return s.retryBroadcastingTx(ctx, txBytes, nextSequence) + // Ref: https://github.com/celestiaorg/celestia-app/issues/3256 + } else if resp.TxResponse.Code == abci.CodeTypeOK { s.outboundSequences[sequence] = struct{}{} s.reverseTxHashSequenceMap[resp.TxResponse.TxHash] = sequence return resp.TxResponse, nil