Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ import type { CapsuleDataProvider } from '../storage/capsule_data_provider/capsu
import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../storage/tagging_data_provider/sender_address_book.js';
import type { SenderTaggingDataProvider } from '../storage/tagging_data_provider/sender_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { ExecutionNoteCache } from './execution_note_cache.js';
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
import { HashedValuesCache } from './hashed_values_cache.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import type { CapsuleDataProvider } from '../../storage/capsule_data_provider/ca
import type { ContractDataProvider } from '../../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../../storage/tagging_data_provider/sender_address_book.js';
import type { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { ContractFunctionSimulator } from '../contract_function_simulator.js';
import { UtilityExecutionOracle } from './utility_execution_oracle.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ import type { CapsuleDataProvider } from '../../storage/capsule_data_provider/ca
import type { ContractDataProvider } from '../../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../../storage/tagging_data_provider/sender_address_book.js';
import type { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { ContractFunctionSimulator } from '../contract_function_simulator.js';

jest.setTimeout(60_000);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ import type { CapsuleDataProvider } from '../../storage/capsule_data_provider/ca
import type { ContractDataProvider } from '../../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../../storage/tagging_data_provider/sender_address_book.js';
import type { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { syncSenderTaggingIndexes } from '../../tagging/sync/sync_sender_tagging_indexes.js';
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
import type { ExecutionNoteCache } from '../execution_note_cache.js';
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
import type { HashedValuesCache } from '../hashed_values_cache.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ import type { CapsuleDataProvider } from '../../storage/capsule_data_provider/ca
import type { ContractDataProvider } from '../../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../../storage/tagging_data_provider/sender_address_book.js';
import type { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { ContractFunctionSimulator } from '../contract_function_simulator.js';
import { UtilityExecutionOracle } from './utility_execution_oracle.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import type { CapsuleDataProvider } from '../../storage/capsule_data_provider/ca
import type { ContractDataProvider } from '../../storage/contract_data_provider/contract_data_provider.js';
import type { NoteDataProvider } from '../../storage/note_data_provider/note_data_provider.js';
import type { PrivateEventDataProvider } from '../../storage/private_event_data_provider/private_event_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../../storage/tagging_data_provider/sender_address_book.js';
import type { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { TreeMembershipService } from '../../tree_membership/tree_membership_service.js';
import { EventValidationRequest } from '../noir-structs/event_validation_request.js';
import { LogRetrievalRequest } from '../noir-structs/log_retrieval_request.js';
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/pxe/src/logs/log_service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import { LogRetrievalRequest } from '../contract_function_simulator/noir-structs
import { AddressDataProvider } from '../storage/address_data_provider/address_data_provider.js';
import { AnchorBlockDataProvider } from '../storage/anchor_block_data_provider/anchor_block_data_provider.js';
import { CapsuleDataProvider } from '../storage/capsule_data_provider/capsule_data_provider.js';
import { RecipientTaggingDataProvider } from '../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import { SenderAddressBook } from '../storage/tagging_data_provider/sender_address_book.js';
import { RecipientTaggingDataProvider } from '../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { LogService } from './log_service.js';

describe('LogService', () => {
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/pxe/src/logs/log_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import { LogRetrievalResponse } from '../contract_function_simulator/noir-struct
import { AddressDataProvider } from '../storage/address_data_provider/address_data_provider.js';
import { AnchorBlockDataProvider } from '../storage/anchor_block_data_provider/anchor_block_data_provider.js';
import { CapsuleDataProvider } from '../storage/capsule_data_provider/capsule_data_provider.js';
import type { RecipientTaggingDataProvider } from '../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import type { SenderAddressBook } from '../storage/tagging_data_provider/sender_address_book.js';
import { loadPrivateLogsForSenderRecipientPair } from '../tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js';
import type { RecipientTaggingDataProvider } from '../tagging/recipient_sync/recipient_tagging_data_provider.js';
import { loadPrivateLogsForSenderRecipientPair } from '../tagging/index.js';

export class LogService {
private log = createLogger('log_service');
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/pxe/src/pxe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ import { CapsuleDataProvider } from './storage/capsule_data_provider/capsule_dat
import { ContractDataProvider } from './storage/contract_data_provider/contract_data_provider.js';
import { NoteDataProvider } from './storage/note_data_provider/note_data_provider.js';
import { PrivateEventDataProvider } from './storage/private_event_data_provider/private_event_data_provider.js';
import { RecipientTaggingDataProvider } from './storage/tagging_data_provider/recipient_tagging_data_provider.js';
import { SenderAddressBook } from './storage/tagging_data_provider/sender_address_book.js';
import { SenderTaggingDataProvider } from './storage/tagging_data_provider/sender_tagging_data_provider.js';
import { RecipientTaggingDataProvider } from './tagging/recipient_sync/recipient_tagging_data_provider.js';

export type PackedPrivateEvent = InTx & {
packedEvent: Fr[];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export { SenderTaggingDataProvider } from './sender_tagging_data_provider.js';
export { SenderAddressBook } from './sender_address_book.js';
export { RecipientTaggingDataProvider } from '../../tagging/recipient_sync/recipient_tagging_data_provider.js';
export { RecipientTaggingDataProvider } from './recipient_tagging_data_provider.js';
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
import { DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
import { TxHash } from '@aztec/stdlib/tx';

import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../../tagging/sync/sync_sender_tagging_indexes.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../../tagging/index.js';
import { SenderTaggingDataProvider } from './sender_tagging_data_provider.js';

describe('SenderTaggingDataProvider', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
import type { DirectionalAppTaggingSecret, PreTag } from '@aztec/stdlib/logs';
import { TxHash } from '@aztec/stdlib/tx';

import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../../tagging/sync/sync_sender_tagging_indexes.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../../tagging/index.js';

/**
* Data provider of tagging data used when syncing the sender tagging indexes. The recipient counterpart of this class
Expand Down
26 changes: 26 additions & 0 deletions yarn-project/pxe/src/tagging/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,28 @@
/**
* This directory contains the sender and recipient synchronization algorithms that use tagging.
*
* The objective of the sender sync algorithm is to determine which tags have already been used by a sender, thereby
* deciding which tag should be used next.
*
* The objective of the recipient sync algorithm is to load and process the corresponding logs.
*
* @module tagging
*/

export { loadPrivateLogsForSenderRecipientPair } from './recipient_sync/load_private_logs_for_sender_recipient_pair.js';
export { syncSenderTaggingIndexes } from './sender_sync/sync_sender_tagging_indexes.js';

// This window has to be as large as the largest expected number of logs emitted in a tx for a given directional app
// tagging secret. If we get more tag indexes consumed than this window, an error is thrown in `PXE::proveTx` function.
// This is set to a larger value than MAX_PRIVATE_LOGS_PER_TX (currently 64) because there could be more than
// MAX_PRIVATE_LOGS_PER_TX indexes consumed in case the logs are squashed. This happens when the log contains a note
// and the note is nullified in the same tx.
//
// Having a large window significantly slowed down `e2e_l1_with_wall_time` test as there we perform sync for more than
// 1000 secrets. For this reason we set it to a relatively low value of 20. 20 should be sufficient for all the use
// cases.
export const UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN = 20;

// Re-export tagging-related types from stdlib
export { DirectionalAppTaggingSecret, Tag, SiloedTag } from '@aztec/stdlib/logs';
export { type PreTag } from '@aztec/stdlib/logs';
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import { makeBlockHeader, randomTxScopedPrivateL2Log } from '@aztec/stdlib/testi

import { type MockProxy, mock } from 'jest-mock-extended';

import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../sync/sync_sender_tagging_indexes.js';
import { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../index.js';
import { loadPrivateLogsForSenderRecipientPair } from './load_private_logs_for_sender_recipient_pair.js';
import { RecipientTaggingDataProvider } from './recipient_tagging_data_provider.js';

// In this test suite we don't care about the anchor block behavior as that is sufficiently tested by
// the loadLogsForRange test suite, so we use a high block number to ensure it occurs after all logs.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
import type { DirectionalAppTaggingSecret, TxScopedL2Log } from '@aztec/stdlib/logs';

import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../sync/sync_sender_tagging_indexes.js';
import type { RecipientTaggingDataProvider } from './recipient_tagging_data_provider.js';
import type { RecipientTaggingDataProvider } from '../../storage/tagging_data_provider/recipient_tagging_data_provider.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../index.js';
import { findHighestIndexes } from './utils/find_highest_indexes.js';
import { loadLogsForRange } from './utils/load_logs_for_range.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import { TxHash, TxStatus } from '@aztec/stdlib/tx';
import { type MockProxy, mock } from 'jest-mock-extended';

import { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import { DirectionalAppTaggingSecret, SiloedTag, Tag } from '../index.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN, syncSenderTaggingIndexes } from './sync_sender_tagging_indexes.js';
import { DirectionalAppTaggingSecret, SiloedTag, Tag, UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../index.js';
import { syncSenderTaggingIndexes } from './sync_sender_tagging_indexes.js';

describe('syncSenderTaggingIndexes', () => {
// Contract address and secret to be used on the input of the syncSenderTaggingIndexes function.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,10 @@ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';

import type { SenderTaggingDataProvider } from '../../storage/tagging_data_provider/sender_tagging_data_provider.js';
import { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from '../index.js';
import { getStatusChangeOfPending } from './utils/get_status_change_of_pending.js';
import { loadAndStoreNewTaggingIndexes } from './utils/load_and_store_new_tagging_indexes.js';

// This window has to be as large as the largest expected number of logs emitted in a tx for a given directional app
// tagging secret. If we get more tag indexes consumed than this window, an error is thrown in `PXE::proveTx` function.
// This is set to a larger value than MAX_PRIVATE_LOGS_PER_TX (currently 64) because there could be more than
// MAX_PRIVATE_LOGS_PER_TX indexes consumed in case the logs are squashed. This happens when the log contains a note
// and the note is nullified in the same tx.
//
// Having a large window significantly slowed down `e2e_l1_with_wall_time` test as there we perform sync for more than
// 1000 secrets. For this reason we set it to a relatively low value of 20. 20 should be sufficient for all the use
// cases.
export const UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN = 20;
Copy link
Contributor Author

@benesjan benesjan Jan 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is shared between sender and recipient sync algos so made sense to move it index.ts in the parent dir.


/**
* Syncs tagging indexes. This function needs to be called whenever a private log is being sent.
*
Expand Down
Loading