diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_to_private.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_to_private.nr index 6c2ce2239166..b71e9ef5f429 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_to_private.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_to_private.nr @@ -41,14 +41,7 @@ unconstrained fn transfer_to_private_external_orchestration() { &mut env.public(), ); - // We need to manually add the note because #8771 has not yet been implemented - utils::add_token_note( - env, - token_contract_address, - recipient, - amount, - note_randomness, - ); + env.advance_block_by(1); // Recipient's private balance should be equal to the amount utils::check_private_balance(token_contract_address, recipient, amount); diff --git a/yarn-project/simulator/src/public/fixtures/index.ts b/yarn-project/simulator/src/public/fixtures/index.ts index b7da98b72bce..18dedee64013 100644 --- a/yarn-project/simulator/src/public/fixtures/index.ts +++ b/yarn-project/simulator/src/public/fixtures/index.ts @@ -160,6 +160,7 @@ export function createTxForPublicCalls( appExecutionRequests: PublicExecutionRequest[], teardownExecutionRequest?: PublicExecutionRequest, gasUsedByPrivate: Gas = Gas.empty(), + firstNullifier: Fr = Fr.random(), ): Tx { assert( setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined, @@ -172,7 +173,7 @@ export function createTxForPublicCalls( const forPublic = PartialPrivateTailPublicInputsForPublic.empty(); // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash. - forPublic.nonRevertibleAccumulatedData.nullifiers[0] = Fr.random(); // fake tx nullifier + forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier; // fake tx nullifier // We reverse order because the simulator expects it to be like a "stack" of calls to pop from for (let i = setupCallRequests.length - 1; i >= 0; i--) { diff --git a/yarn-project/telemetry-client/package.json b/yarn-project/telemetry-client/package.json index d2f76ca021ea..887088da9179 100644 --- a/yarn-project/telemetry-client/package.json +++ b/yarn-project/telemetry-client/package.json @@ -88,4 +88,4 @@ "../../foundation/src/jest/setup.mjs" ] } -} \ No newline at end of file +} diff --git a/yarn-project/txe/src/oracle/txe_oracle.ts b/yarn-project/txe/src/oracle/txe_oracle.ts index b10bae922ad6..19d07192551c 100644 --- a/yarn-project/txe/src/oracle/txe_oracle.ts +++ b/yarn-project/txe/src/oracle/txe_oracle.ts @@ -827,11 +827,19 @@ export class TXE implements TypedOracle { /*appExecutionRequests=*/ isTeardown ? [] : [executionRequest], /*teardownExecutionRequests=*/ isTeardown ? executionRequest : undefined, gasUsedByPrivate, + this.getTxRequestHash(), ); const result = await simulator.simulate(tx); + const noteHashes = result.avmProvingRequest.inputs.output.accumulatedData.noteHashes.filter(s => !s.isEmpty()); - this.addPublicLogs(result.avmProvingRequest.inputs.publicInputs.publicLogs); + await this.addUniqueNoteHashesFromPublic(noteHashes); + + this.addPublicLogs( + result.avmProvingRequest.inputs.output.accumulatedData.publicLogs.filter( + log => !log.contractAddress.equals(AztecAddress.ZERO), + ), + ); return Promise.resolve(result); } @@ -883,7 +891,7 @@ export class TXE implements TypedOracle { const sideEffects = executionResult.avmProvingRequest.inputs.output.accumulatedData; const publicDataWrites = sideEffects.publicDataWrites.filter(s => !s.isEmpty()); const noteHashes = sideEffects.noteHashes.filter(s => !s.isEmpty()); - const nullifiers = sideEffects.nullifiers.filter(s => !s.isEmpty()); + const nullifiers = sideEffects.nullifiers.filter(s => !s.isEmpty()).filter(s => !s.equals(this.getTxRequestHash())); await this.addPublicDataWrites(publicDataWrites); await this.addUniqueNoteHashesFromPublic(noteHashes); await this.addSiloedNullifiers(nullifiers); @@ -997,7 +1005,9 @@ export class TXE implements TypedOracle { const sideEffects = executionResult.avmProvingRequest.inputs.output.accumulatedData; const publicDataWrites = sideEffects.publicDataWrites.filter(s => !s.isEmpty()); const noteHashes = sideEffects.noteHashes.filter(s => !s.isEmpty()); - const nullifiers = sideEffects.nullifiers.filter(s => !s.isEmpty()); + const nullifiers = sideEffects.nullifiers + .filter(s => !s.isEmpty()) + .filter(s => !s.equals(this.getTxRequestHash())); await this.addPublicDataWrites(publicDataWrites); await this.addUniqueNoteHashes(noteHashes); await this.addSiloedNullifiers(nullifiers);