diff --git a/yarn-project/aztec.js/src/contract/sent_tx.ts b/yarn-project/aztec.js/src/contract/sent_tx.ts index 66a0dbfb489..33af8912162 100644 --- a/yarn-project/aztec.js/src/contract/sent_tx.ts +++ b/yarn-project/aztec.js/src/contract/sent_tx.ts @@ -1,4 +1,4 @@ -import { FieldsOf } from '@aztec/circuits.js'; +import { FieldsOf, MAX_NEW_NULLIFIERS_PER_TX } from '@aztec/circuits.js'; import { retryUntil } from '@aztec/foundation/retry'; import { ExtendedNote, GetUnencryptedLogsResponse, PXE, TxHash, TxReceipt, TxStatus } from '@aztec/types'; @@ -66,7 +66,34 @@ export class SentTx { } const receipt = await this.waitForReceipt(opts); if (receipt.status !== TxStatus.MINED) { - throw new Error(`Transaction ${await this.getTxHash()} was ${receipt.status}`); + // ############## Temporary code start ############## + // A few logs placed here temporarily to help me (@benesjan) debug an issue with intermittent failure of + // 2 pixies test. + // https://github.com/AztecProtocol/aztec-packages/issues/3357 + // For whatever reason (according to logs) the tx which appears here as dropped seems to be correctly included + // in a block and the block built and submitted on-chain. I will try to fetch the latest block here and see + // which txs it contains to check if the block source used here has the relevant block. If it doesn't then + // the test is probably misconfigured and an incorrect block source is used (pxe pointing to a different aztec + // node or smt like that) or there is some bigger issue with block sync somewhere. + const blockNum = await this.pxe.getBlockNumber(); + const block = await this.pxe.getBlock(blockNum); + if (block) { + const txHashes = []; + for (let txIndex = 0; txIndex < block!.numberOfTxs; txIndex++) { + const txHash = block!.newNullifiers[MAX_NEW_NULLIFIERS_PER_TX * txIndex]; + txHashes.push(txHash.toString()); + } + throw new Error( + `Transaction ${await this.getTxHash()} was ${ + receipt.status + }.\nTx hashes of txs included in the last synced block ${block?.number} are: ${txHashes}`, + ); + } else { + throw new Error(`Transaction ${await this.getTxHash()} was ${receipt.status}. Block ${blockNum} not found.`); + } + // ############## Temporary code end ############## + + // throw new Error(`Transaction ${await this.getTxHash()} was ${receipt.status}`); } if (opts?.debug) { const txHash = await this.getTxHash(); diff --git a/yarn-project/end-to-end/src/e2e_2_pxes.test.ts b/yarn-project/end-to-end/src/e2e_2_pxes.test.ts index 6af6d29dab0..9543b801fdf 100644 --- a/yarn-project/end-to-end/src/e2e_2_pxes.test.ts +++ b/yarn-project/end-to-end/src/e2e_2_pxes.test.ts @@ -119,7 +119,7 @@ describe('e2e_2_pxes', () => { ); }; - it('transfers fund from user A to B via PXE A followed by transfer from B to A via PXE B', async () => { + it('transfers funds from user A to B via PXE A followed by transfer from B to A via PXE B', async () => { const initialBalance = 987n; const transferAmount1 = 654n; const transferAmount2 = 323n;