Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Changelog

The complete project changelog is embedded below. The format follows Keep a Changelog, and versions follow Semantic Versioning.

Per-crate changes are tagged inline with the affected crate (e.g. (aztec-ethereum)). Until individual crates ship separate changelogs, this file is the authoritative record for all workspace members.


Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

  • Tier 8 e2e test suite mirroring upstream cross-chain messaging failure and public-bridge tests (5 tests across 2 files):
    • e2e_cross_chain_token_bridge_failure_cases — authwit-required public burn rejected when unauthorized; wrong content on private claim rejected; wrong secret on public claim rejected (3 tests)
    • e2e_cross_chain_token_bridge_public — public L1→L2 deposit with L2→L1 withdrawal round-trip (hash verified locally); third-party consumption honors the baked recipient (2 tests)
  • tests/ reorganized into per-crate test groups so cargo test --test <group> runs only the tests tied to a given crate (9 groups: account, contract, core, crypto, ethereum, fee, node_client, pxe, wallet) — individual test modules moved under tests/<group>/ and mounted via a single entry file tests/<group>.rs sharing tests/common/ as crate::common
  • E2E_TEST_COVERAGE.md gains a “Test Groups (per-crate)” section mapping each group → crate → file count → run command; implemented-tests count refreshed to 57

Fixed

  • Split overlong first doc paragraphs on tests/common/mod.rs::create_wallet and TokenTestState to satisfy clippy::nursery::too_long_first_doc_paragraph (raised by cargo lint)

[0.5.1] - 2026-04-13

Added

  • Tier 7 e2e test suite mirroring upstream ABI, encoding, and edge-case tests (29 tests across 8 files):
    • e2e_abi_types — ABI encoding/decoding across public/private/utility entrypoints (bool, Field, u64, i64, struct) (3 tests)
    • e2e_option_params — ergonomic Option<_> parameter handling for public/private/utility functions (3 tests)
    • e2e_expiration_timestamp — tx validity windows (future/next-slot/past, with and without public enqueue) (6 tests)
    • e2e_nested_contract_manual_public — nested public calls, fresh-read-after-write, public call ordering (3 tests)
    • e2e_nested_contract_importer — autogenerated interface calls (no-args, public-from-private, public-from-public) (3 tests)
    • e2e_deploy_legacy — legacy deploy codepath, duplicate-salt reject, bad-public-part revert (5 tests)
    • e2e_kernelless_simulation — AMM add_liquidity, matching gas estimates, note squashing, settled read requests (4 tests)
    • e2e_phase_check — tx phase validation and #[allow_phase_change] opt-out (2 tests)
  • load_abi_types_artifact, load_option_param_artifact, load_import_test_artifact, load_amm_artifact, load_sponsored_fpc_no_end_setup_artifact loaders in tests/common/ (fall back to upstream noir-contracts/target/ paths when local fixtures are missing)
  • fixtures/abi_types_contract_compiled.json, fixtures/option_param_contract_compiled.json, fixtures/import_test_contract_compiled.json, fixtures/amm_contract_compiled.json, fixtures/sponsored_fpc_no_end_setup_contract_compiled.json compiled contract fixtures
  • E2E_TEST_COVERAGE.md refreshed to reflect Tier 7 completion (55 implemented files)
  • Tier 6 e2e test suite mirroring upstream token-completeness, events, and common-contract tests (20 tests across 5 files):
    • e2e_token_contract_transfer — unified transfer patterns (less-than-balance with Transfer private event decode, non-deployed recipient, self-transfer, over-balance simulation failure)
    • e2e_token_contract_reading_constants — private/public name, symbol, decimals getters verified via direct PublicImmutable slot reads (both dispatch paths back the same storage)
    • e2e_nft — full NFT lifecycle in a single sequential test: set_minter, mint, transfer_to_private, transfer_in_private, transfer_to_public, transfer_in_public, with owner_of/is_minter read directly from the public_owners and minters maps since the contract’s public views ship as AVM bytecode
    • e2e_escrow_contract — escrow with a custom keypair via Contract::deploy_with_public_keys, explicit PXE registration of the escrow’s secret key + complete address + instance on both wallets (mirroring upstream wallet.registerContract(instance, artifact, secretKey)), withdraw, non-owner reject, and a batched transfer+withdraw tx proving multiple keys work in a single payload
    • e2e_event_only — emits and retrieves a private TestEvent for a contract with no notes
  • load_escrow_compiled_artifact, load_nft_artifact, load_event_only_artifact loaders in tests/common/ (fall back to upstream noir-contracts/target/ paths when local fixtures are missing)
  • fixtures/escrow_contract_compiled.json, fixtures/event_only_contract_compiled.json, fixtures/nft_contract_compiled.json compiled contract fixtures
  • E2E_TEST_COVERAGE.md refreshed to reflect Tier 6 completion (47 implemented files)

Fixed

  • DeployMethod::send no longer calls wait_for_contract when skip_instance_publication is set — the instance is never published to the node in that path, so polling for it would always time out (matches upstream TS behavior) (aztec-contract)
  • flatten_abi_value now encodes signed integers using Noir’s two’s-complement-in-width convention: negative values in i64 range wrap to u64, with a fallthrough to u128 two’s-complement for the outer range. Previously (*i as u128).to_be_bytes() sign-extended to 128 bits, diverging from the target circuit’s width-wrapped witness hash (aztec-core)

0.5.0 - 2026-04-13

Added

  • L1 Fee Juice bridge (aztec-ethereum)
    • prepare_fee_juice_on_l1 — mints Fee Juice via the FeeAssetHandler, approves the Fee Juice Portal, calls depositToAztecPublic, and parses the Inbox MessageSent event for the L1→L2 message hash and leaf index
    • FeeJuiceBridgeResult carrying claim_amount, claim_secret, message_leaf_index, and message_hash for use with FeeJuicePaymentMethodWithClaim
    • L1ContractAddresses.fee_juice and fee_asset_handler optional fields parsed from node info
    • EthClient::rpc_call made public for direct JSON-RPC access
  • Fee execution payload merging in BaseWallet::send_tx and simulate_txSendOptions.fee_execution_payload / SimulateOptions.fee_execution_payload calls, auth witnesses, capsules, extra hashed args, and fee payer are merged into the outgoing tx; fee payment method auto-selects FeeJuiceWithClaim when a fee payload is present (aztec-wallet)
  • AccountProvider::create_tx_execution_request now accepts an optional fee payment method id so account entrypoints can encode the correct fee flow (aztec-wallet, aztec-account)
  • Capsule seeding from the tx request in EmbeddedPxe::execute_tx — protocol contract handlers (e.g., contract class registerer) can now access bytecode capsules carried on the request (aztec-pxe)
  • Tier 5 fee e2e test suite mirroring upstream e2e_fees/ (13 tests across 5 files): e2e_fee_public_payments (FPC public fees), e2e_fee_sponsored_payments (SponsoredFeePaymentMethod), e2e_fee_account_init (fee payment during account deployment), e2e_fee_failures (reverts, setup/teardown failures), e2e_fee_settings (gas settings, max/priority fees)
  • e2e_fee_public_payments bridges Fee Juice to the FPC via prepare_fee_juice_on_l1, waits for L1→L2 readiness, and claims with FeeJuicePaymentMethodWithClaim — mirrors upstream feeJuiceBridgeTestHarness.bridgeFromL1ToL2
  • e2e_fee_juice_payments reworked to deploy a dedicated Bob Schnorr account with fails_to_simulate_without_funds coverage and explicit gas_settings

Changed

  • AztecNode::get_l1_to_l2_message_membership_witness now returns Result<Option<serde_json::Value>, Error> via call_optional, matching the node’s nullable response (aztec-node-client)
  • Contract class log fields in PXE execution results are now constructed via ContractClassLogFields::from_emitted_fields rather than direct struct initialization (aztec-pxe)
  • SchnorrAccountContract constructor now uses flat signing_pub_key_x / signing_pub_key_y fields instead of a PublicKey struct, matching the compiled Noir artifact and fixing PXE selector computation (aztec-account)

Fixed

  • FunctionSelector ABI encoding accepts AbiValue::Integer in addition to AbiValue::Field, since the Noir artifact can express the inner value either way (aztec-core)
  • Integer authwit args are now hashed as full u128 right-padded into 32 bytes, preserving values above u64::MAX (previously truncated via as u64) (aztec-core)
  • PXE L1→L2 membership witness oracle now:
    • Handles the utilityGetL1ToL2MembershipWitness oracle alias alongside the canonical name
    • Parses leafIndex as either hex string or decimal
    • Supports base64-encoded sibling paths (4-byte count prefix + 32-byte Fr elements) in addition to JSON arrays
  • Account entrypoint encoding, Schnorr key handling, and deployment option defaults cleaned up for artifact parity (aztec-account, aztec-contract)

0.4.0 - 2026-04-12

Added

  • Embedded PXE runtime — full in-process private execution engine replacing the HTTP PXE client (aztec-pxe)
    • Private kernel execution prover with barretenberg integration
    • Persistent stores: NoteStore (scopes, status filtering, rollback), ContractStore, AddressStore, PrivateEventStore, sender/recipient tagging stores
    • Block sync service with proven anchor blocks
    • Execution oracle with note select clause filtering, nested private function calls, and auth witness propagation
    • L1-to-L2 membership witness resolution
    • Key validation, AES decrypt, shared secret derivation, and witness extraction
    • Pending note support with consumed nullifier tracking and transient squashing
    • Scope isolation for multi-account access control
    • Private return value extraction via PCPI witness and execution cache
    • Side-effect counter sync and sorted public calldata
  • L1↔L2 cross-chain messaging (aztec-ethereum)
    • Messaging types: L1Actor, L2Actor, L1ToL2Message, L2Claim, L2AmountClaim, generate_claim_secret
    • EthClient — minimal Ethereum JSON-RPC client for Inbox/Outbox contract interaction
    • send_l1_to_l2_message with MessageSent event log parsing
    • L1ContractAddresses parsed from node info
    • Cross-chain readiness utilities: is_l1_to_l2_message_ready, wait_for_l1_to_l2_message_ready
  • compute_l1_to_l2_message_nullifier and compute_l2_to_l1_message_hash hash functions (aztec-core)
  • MESSAGE_NULLIFIER domain separator, L1_TO_L2_MSG_SUBTREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP constants (aztec-core)
  • sha256_to_field_pub — public cross-crate SHA-256 to field conversion (aztec-core)
  • Protocol constants, kernel types, and crypto primitives for embedded PXE (aztec-core)
  • Silo note-hash and nullifier domain separators (aztec-core)
  • pedersen_hash and corrected Schnorr signing to match Noir scheme (aztec-crypto)
  • get_l1_to_l2_message_checkpoint on AztecNode trait and HttpNodeClient (aztec-node-client)
  • Phase 2 RPC methods on AztecNode trait: simulation, state queries, tree lookups (aztec-node-client)
  • cross_chain and l1_client modules re-exported from aztec-rs umbrella crate
  • Public authwit validity check via direct storage read (aztec-wallet)
  • Public call simulation on node during simulate_tx (aztec-wallet)
  • Gas extraction from private and public tx simulation in BaseWallet
  • Tx validation and preflight simulation (aztec-wallet, aztec-contract)
  • Multi-account shared encryption key support (aztec-account)
  • Auth witness signature verification in PXE (aztec-pxe)
  • AuthRegistry public call support and nested call context sharing (aztec-pxe)
  • 30 e2e test files covering: token transfers (private, public, shielding, unshielding), minting, burning, access control, authwit, account contracts, deploy methods, private initialization, contract class registration, contract updates, scope isolation, note getters, pending note hashes, double spend, key management, static calls, partial notes, nested calls (private call, private enqueue), multi-account encryption, pruned blocks, event logs, fee payments (gas estimation, fee juice, private fees), offchain effects, and cross-chain messaging (L1→L2, L2→L1, token bridge private)
  • Shared e2e test utilities module with wallet setup, token deployment, signing key note helpers, and Ethereum address helpers

Changed

  • Architecture switched from HTTP PXE client to embedded in-process PXE — private execution now runs locally without requiring a separate PXE server
  • RpcTransport exposes url and timeout accessors (aztec-rpc)
  • is_static renamed to is_private in tx request hash computation (aztec-core)
  • ABI encoder accepts Field values for integer parameters (aztec-core)
  • PXE handles uncompressed ACIR bytecode (aztec-pxe)

Fixed

  • Nullifier siloing, kernel ordering, and note uniquification in PXE
  • Note nullifier sync and contract sync cache handling
  • Tag siloing and note sync validation for sender discovery
  • Auth witness payload hashing
  • Anchor header validation with extended wait and proven block sync
  • Private transfer recursion error reporting
  • Token burn authwit error handling
  • State var and static call runtime handling
  • Constructor argument pre-encoding for correct field padding
  • Event selector position and client-side log filtering
  • findLeavesIndexes response parsing (InBlock wrapper, string-encoded numbers, numeric tree_id)
  • Nested protocol private call handling in PXE

0.3.2 - 2026-04-08

Added

  • SchnorrSignature struct with to_bytes(), from_bytes(), to_fields() for Grumpkin Schnorr signatures (aztec-crypto)
  • schnorr_sign() — Schnorr signing on the Grumpkin curve with Blake2s-256 challenge hash and deterministic nonce (aztec-crypto)
  • schnorr_verify() — Schnorr signature verification against a Grumpkin public key (aztec-crypto)
  • SchnorrAccountContract — real Schnorr-based account contract implementing AccountContract, Account, and AuthorizationProvider with actual cryptographic signing (aztec-account)
  • SchnorrAuthorizationProvider — creates auth witnesses with real Schnorr signatures matching the TS SDK convention (64 Fr fields, one per signature byte) (aztec-account)
  • SchnorrAccount — account implementation routing through DefaultAccountEntrypoint with Schnorr signing (aztec-account)
  • DefaultAccountEntrypoint::entrypoint_abi() made public for account contract implementations to include in their artifacts (aztec-account)
  • SchnorrAccountContract re-exported from aztec-account and aztec-rs umbrella crate
  • blake2 dependency added to aztec-crypto
  • 15 new unit tests across aztec-crypto (sign/verify roundtrip, determinism, serialization) and aztec-account (artifact structure, signature verification, AccountManager integration, deploy payload)
  • WaitOpts.wait_for_status field replacing proven: bool — wait for any TxStatus target (aztec-node-client)
  • WaitOpts.dont_throw_on_revert — accept reverted receipts without error (aztec-node-client)
  • WaitOpts.ignore_dropped_receipts_for — grace period before treating Dropped as failure (aztec-node-client)
  • WaitForProvenOpts struct and wait_for_proven() — poll until a receipt’s block is proven on L1 (aztec-node-client)
  • AztecNode::get_proven_block_number() trait method and HttpNodeClient implementation (aztec-node-client)
  • ContractFunctionInteraction::profile() and BatchCall::profile() — delegate to Wallet::profile_tx (aztec-contract)
  • DeployMethod::profile() for profiling deployment transactions (aztec-contract)
  • Contract::deploy() and Contract::deploy_with_public_keys() — static deployment shorthands (aztec-contract)
  • Contract::with_wallet() — swap wallet on an existing contract handle (aztec-contract)
  • ContractFunctionInteraction::with() — augment interactions with auth witnesses and capsules (aztec-contract)
  • ContractFunctionInteraction::get_function_call() — access the underlying FunctionCall (aztec-contract)
  • ProfileMode enum (Gates, ExecutionSteps, Full) replacing Option<String> in ProfileOptions (aztec-wallet)
  • FieldLayout and ContractStorageLayout types for storage slot descriptors (aztec-core)
  • abi_checker() artifact validator with recursive AbiType validation (aztec-core)
  • SendOptions.fee_execution_payload, SimulateOptions.fee_execution_payload, ProfileOptions.fee_execution_payload — pre-resolved fee payload merged into transactions (aztec-wallet)
  • SimulateOptions.estimate_gas and SimulateOptions.estimated_gas_padding for gas estimation (aztec-wallet)
  • Fee payload merging in ContractFunctionInteraction and BatchCall send()/simulate()/profile() methods (aztec-contract)
  • All new types re-exported from aztec-contract and aztec-rs umbrella crate
  • 25+ new unit tests across aztec-node-client, aztec-contract, aztec-wallet, and aztec-core

Changed

  • WaitOpts default timeout increased from 60s to 300s to match TypeScript SDK (aztec-node-client)
  • WaitOpts.proven: bool removed — use wait_for_status: TxStatus::Proven instead (aztec-node-client)
  • ProfileOptions.profile_mode changed from Option<String> to Option<ProfileMode> (aztec-wallet)
  • SimulateOptions no longer derives Eq (now contains f64 padding field) (aztec-wallet)
  • ContractFunctionInteraction now carries auth_witnesses and extra_hashed_args fields included in generated payloads (aztec-contract)
  • BaseWallet::profile_tx uses typed ProfileMode enum instead of string matching (aztec-wallet)
  • All examples (account_flow, contract_call, deploy_contract) now use SchnorrAccountContract and real BaseWallet connections instead of inline mock account contracts and MockWallet

0.3.1 - 2026-04-08

Added

  • Salt type alias (pub type Salt = Fr) for deployment salt ergonomics (aztec-core)
  • AztecAddress::zero() convenience constructor (aztec-core)
  • FunctionCall::empty(), FunctionCall::is_empty() — canonical empty call for entrypoint payload padding (aztec-core)
  • FunctionCall.hide_msg_sender field for controlling msg_sender visibility to callees (aztec-core)
  • FunctionSelector::empty() — zero selector constant (aztec-core)
  • HashedValues::from_args(), HashedValues::from_calldata(), HashedValues::hash() — helpers for entrypoint call encoding (aztec-core)
  • domain_separator::SIGNATURE_PAYLOAD constant for entrypoint payload hashing (aztec-core)
  • get_contract_instance_from_instantiation_params() — shared helper for computing contract instances from artifact + params, used by both generic deployment and account address pre-computation (aztec-contract)
  • ContractInstantiationParams struct for the shared instance-construction helper (aztec-contract)
  • EncodedAppEntrypointCalls — encodes function calls for account/multi-call entrypoint payloads with Poseidon2 hashing (aztec-account)
  • DefaultAccountEntrypoint — standard account entrypoint wrapping calls through the account contract with auth witness creation (aztec-account)
  • AccountFeePaymentMethodOptions enum (External, PreexistingFeeJuice, FeeJuiceWithClaim) (aztec-account)
  • DefaultAccountEntrypointOptions for configuring cancellable, tx_nonce, and fee payment method (aztec-account)
  • DefaultMultiCallEntrypoint — multi-call entrypoint for unsigned transactions via protocol contract address 4 (aztec-account)
  • SignerlessAccount — account requiring no signing, routes through DefaultMultiCallEntrypoint for fee-sponsored and protocol-level operations (aztec-account)
  • AccountEntrypointMetaPaymentMethod — wraps fee payment through account entrypoint for self-paying account deployments with auto-detection of fee payment options (aztec-account)
  • get_account_contract_address() — computes deterministic account address before deployment using shared instance-construction helper (aztec-account)
  • DeployAccountOptions struct with skip flags, fee payment, and fee entrypoint options (aztec-account)
  • DeployResult struct (account-specific) returning SendResult + ContractInstanceWithAddress from account deployment (aztec-account)
  • New modules: entrypoint/, signerless, meta_payment in aztec-account
  • All new types re-exported from aztec-account and aztec-rs umbrella crate
  • 30+ new unit tests across entrypoint encoding, account entrypoint, multi-call entrypoint, signerless account, and meta payment method

Changed

  • AccountManager::create() salt parameter now accepts Option<impl Into<Salt>> for ergonomic salt input (aztec-account)
  • AccountManager::create() now computes real contract instance with derived keys, class ID, initialization hash, and deterministic address instead of using zero placeholders (aztec-account)
  • AccountManager::address() now returns a real derived address (aztec-account)
  • DeployAccountMethod replaced from a stub returning errors to a full implementation wrapping aztec-contract::DeployMethod with account-specific fee-payment logic (aztec-account)
  • DeployAccountMethod::request() is now async and accepts &DeployAccountOptions; builds real deployment payloads with correct fee ordering (deploy-first for self-deploy, fee-first for third-party) (aztec-account)
  • DeployAccountMethod::simulate() and send() signatures updated to accept &DeployAccountOptions (aztec-account)
  • DeployMethod::get_instance() refactored to delegate to shared get_contract_instance_from_instantiation_params() helper (aztec-contract)
  • aztec-account now depends on aztec-contract and aztec-fee for deployment reuse and fee payment integration
  • Updated examples/account_flow.rs to demonstrate full lifecycle: real address derivation, deployment payload construction, and get_account_contract_address() verification

0.3.0 - 2026-04-08

Added

  • Full key derivation pipeline in aztec-crypto: derive_keys, derive_master_nullifier_hiding_key, derive_master_incoming_viewing_secret_key, derive_master_outgoing_viewing_secret_key, derive_master_tagging_secret_key, derive_signing_key, derive_public_key_from_secret_key (aztec-crypto)
  • sha512_to_grumpkin_scalar — SHA-512 hash reduced to a Grumpkin scalar for master key derivation (aztec-crypto)
  • DerivedKeys struct containing all four master secret keys and their corresponding PublicKeys (aztec-crypto)
  • App-scoped key derivation: KeyType enum, compute_app_secret_key, compute_app_nullifier_hiding_key, compute_ovsk_app (aztec-crypto)
  • complete_address_from_secret_key_and_partial_address for deriving a CompleteAddress from a secret key and partial address (aztec-crypto)
  • compute_address — extracted address derivation from public keys and partial address as a standalone function (aztec-core)
  • compute_secret_hash — Poseidon2 hash with SECRET_HASH domain separator for L1-L2 messages (aztec-core)
  • Domain separators for key derivation: NHK_M, IVSK_M, OVSK_M, TSK_M, SECRET_HASH (aztec-core)
  • Fq type expanded with zero(), one(), to_be_bytes(), from_be_bytes_mod_order(), is_zero(), random(), hi(), lo(), From<u64>, From<[u8; 32]>, Mul (aztec-core)
  • aztec-rs::crypto module re-exporting the full aztec-crypto public API from the umbrella crate
  • sha2 dependency added to aztec-crypto
  • 15+ new unit tests cross-validated against TypeScript SDK test vectors (secret_key = 8923)

Changed

  • GrumpkinScalar type alias changed from Fr to Fq for type correctness — Grumpkin scalars live in the BN254 base field (aztec-core)
  • grumpkin::scalar_mul now accepts &Fq instead of &Fr as the scalar argument (aztec-core)
  • compute_contract_address_from_instance refactored to delegate to the new compute_address function (aztec-core)
  • AccountManager::complete_address() now performs real key derivation and address computation instead of returning an error (aztec-account)
  • aztec-account now depends on aztec-crypto for key derivation

0.2.5 - 2026-04-08

Added

  • Fr::to_be_bytes(), Fr::to_usize(), Fr::is_zero() public helper methods on the scalar field type (aztec-core)
  • From<i64>, From<u128>, From<bool>, From<AztecAddress>, From<EthAddress>, From<FunctionSelector> conversions for Fr (aztec-core)
  • From<u64> conversion for AztecAddress (aztec-core)
  • FieldLike, AztecAddressLike, EthAddressLike type aliases mirroring TypeScript SDK union types (aztec-core)
  • ABI type checker functions: is_address_struct, is_aztec_address_struct, is_eth_address_struct, is_function_selector_struct, is_wrapped_field_struct, is_public_keys_struct, is_bounded_vec_struct, is_option_struct (aztec-core)
  • abi_type_size() and count_arguments_size() for computing flattened field-element counts from ABI types (aztec-core)
  • Enhanced encode_arguments() with special-case handling for Address, FunctionSelector, wrapped-field, BoundedVec, and Option structs (aztec-core)
  • Signed integer encoding using proper two’s complement (safe for widths > 64 bits), replacing the previous as u64 truncation (aztec-core)
  • AbiDecoded enum and decode_from_abi() for reconstructing typed values from flat field-element arrays (aztec-core)
  • NoteSelector type — 7-bit note selector with validation, field/hex/serde roundtrips (aztec-core)
  • ContractArtifact::to_buffer(), from_buffer(), to_json() serialization methods (aztec-core)
  • buffer_as_fields() / buffer_from_fields() for round-tripping byte buffers through field elements (aztec-core)
  • 60+ new unit tests covering all new functionality including encode-decode roundtrips

Changed

  • Split abi.rs into sub-modules (abi/types.rs, abi/selectors.rs, abi/checkers.rs, abi/encoder.rs, abi/decoder.rs, abi/buffer.rs) with abi/mod.rs re-exporting the full public API (aztec-core)
  • hash.rs private helpers fr_to_be_bytes / fr_to_usize now delegate to the new public Fr methods (aztec-core)

0.2.4 - 2026-04-08

Added

  • Grumpkin curve module with affine point addition, doubling, and scalar multiplication for contract address derivation (aztec-core)
  • Contract class ID computation: compute_private_functions_root, compute_artifact_hash, compute_public_bytecode_commitment, compute_contract_class_id, compute_contract_class_id_from_artifact (aztec-core)
  • Contract address derivation: compute_salted_initialization_hash, compute_partial_address, compute_contract_address_from_instance using Grumpkin EC operations (aztec-core)
  • Initialization hash computation: compute_initialization_hash, compute_initialization_hash_from_encoded (aztec-core)
  • PublicKeys::hash() with PUBLIC_KEYS_HASH domain separator and empty-key shortcut (aztec-core)
  • PublicKeys::is_empty() and Point::is_zero() helpers (aztec-core)
  • Domain separators: PUBLIC_KEYS_HASH, PARTIAL_ADDRESS, CONTRACT_CLASS_ID, PRIVATE_FUNCTION_LEAF, PUBLIC_BYTECODE, INITIALIZER, CONTRACT_ADDRESS_V1 (aztec-core)
  • Protocol contract addresses: contract_instance_deployer (2), contract_class_registerer (3), multi_call_entrypoint (4) (aztec-core)
  • Size constants: FUNCTION_TREE_HEIGHT, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT (aztec-core)
  • FunctionArtifact fields: bytecode, verification_key_hash, verification_key, custom_attributes, is_unconstrained, debug_symbols — all Option with #[serde(default)] (aztec-core)
  • ContractArtifact fields: outputs, file_map — both Option with #[serde(default)] (aztec-core)
  • FunctionSelector::from_name_and_parameters() for deriving selectors from ABI metadata (aztec-core)
  • abi_type_signature() helper converting AbiType to canonical Noir signature strings (aztec-core)
  • buffer_as_fields() utility for encoding byte buffers as field elements (31 bytes per field) (aztec-core)
  • publish_contract_class() — builds interaction payload targeting the Contract Class Registerer with bytecode capsule (aztec-contract)
  • publish_instance() — builds interaction payload targeting the Contract Instance Deployer with universal deploy flag (aztec-contract)
  • DeployMethod::get_instance() now computes real contract class ID, initialization hash, and deterministic address (aztec-contract)
  • DeployMethod::request() fully wires registration, class publication, instance publication, and constructor call (aztec-contract)
  • DeployResult struct returning SendResult + ContractInstanceWithAddress from DeployMethod::send() (aztec-contract)
  • SuggestedGasLimits struct and get_gas_limits() with configurable padding factor (aztec-contract)
  • DeployOptions::from field for explicit deployer address selection (aztec-contract)
  • ContractFunctionInteraction::new() and new_with_capsules() constructors (aztec-contract)
  • sha2 crate dependency for artifact hash computation (aztec-core)
  • 30+ new unit tests across aztec-core (grumpkin, deployment hashes, address derivation) and aztec-contract (gas limits, class/instance publication, full deployment flow)

Changed

  • Capsule struct now has contract_address: AztecAddress, storage_slot: Fr, and data: Vec<Fr> fields instead of data: Vec<u8> (aztec-core)
  • DeployMethod::request() is now async and returns real deployment payloads instead of stub errors (aztec-contract)
  • DeployMethod::get_instance() now returns Result<ContractInstanceWithAddress, Error> (was infallible) (aztec-contract)
  • DeployMethod::send() now returns DeployResult containing both the tx hash and deployed instance (aztec-contract)
  • ContractFunctionInteraction now carries an optional capsules field included in generated payloads (aztec-contract)

0.2.3 - 2026-04-08

Added

  • Poseidon2 hash module with poseidon2_hash_with_separator, poseidon2_hash_bytes, compute_var_args_hash matching barretenberg/TS SDK output (aztec-core)
  • Authwit hash computation functions: compute_inner_auth_wit_hash, compute_outer_auth_wit_hash, compute_inner_auth_wit_hash_from_action, compute_auth_wit_message_hash (aztec-core)
  • abi_values_to_fields helper for flattening AbiValue to Vec<Fr> for hash input (aztec-core)
  • Domain separator constants: AUTHWIT_INNER, AUTHWIT_OUTER, FUNCTION_ARGS (aztec-core)
  • protocol_contract_address::auth_registry() — AuthRegistry protocol contract at address 1 (aztec-core)
  • AuthWitness.request_hash field identifying which message a witness authorizes (aztec-core)
  • MessageHashOrIntent::InnerHash variant for pre-computed inner hashes with consumer address (aztec-core)
  • CallAuthorizationRequest struct with new(), selector(), and from_fields() for authwit preimage handling (aztec-account)
  • AuthorizationSelector type for authorization request type identification (aztec-core)
  • FunctionSelector::from_field() and FunctionSelector::to_field() field-element conversions (aztec-core)
  • SetPublicAuthWitInteraction — convenience type for setting public authwits in the AuthRegistry (aztec-contract)
  • lookup_validity() — check authwit validity in both private and public contexts (aztec-contract)
  • AuthWitValidity result type for validity checks (aztec-contract)
  • Intent-to-hash resolution in SingleAccountProvider.create_auth_wit() so AuthorizationProvider implementations always receive resolved hashes (aztec-account)
  • Hash functions, authwit helpers, and authorization types re-exported from the aztec-rs umbrella crate
  • 25+ new unit tests across aztec-core (hash, constants), aztec-account (authorization), and aztec-contract (authwit)

Changed

  • ChainInfo and MessageHashOrIntent moved from aztec-wallet to aztec-core::hash to avoid circular dependencies; re-exported from aztec-wallet for backward compatibility

Fixed

  • Corrected selector derivation to use Aztec-compatible Poseidon2-over-bytes semantics rather than Keccak-based hashing (aztec-core)
  • Added AuthorizationSelector-aware authwit request decoding so CallAuthorizationRequest now validates the upstream selector field and deserializes the correct field order (aztec-account)
  • Corrected authwit validity helper selectors for Aztec address-typed arguments (lookup_validity((Field),Field) and utility_is_consumable((Field),Field)) and added SetPublicAuthWitInteraction::profile() parity (aztec-contract)
  • Removed the now-unused sha3 dependency from aztec-core

0.2.2 - 2026-04-07

Added

  • FeePaymentMethod async trait defining the fee payment strategy interface (aztec-fee)
  • NativeFeePaymentMethod — pay fees using existing Fee Juice balance (aztec-fee)
  • SponsoredFeePaymentMethod — gasless transactions via a sponsor contract (aztec-fee)
  • FeeJuicePaymentMethodWithClaim — claim bridged Fee Juice from L1 and pay fees in one transaction (aztec-fee)
  • L2AmountClaim type for L1-to-L2 bridge deposit claim data (aztec-fee)
  • FunctionSelector::from_signature() — compute 4-byte selectors from Noir function signature strings (aztec-core)
  • ExecutionPayload::merge() — combine multiple execution payloads with fee payer conflict detection (aztec-core)
  • protocol_contract_address::fee_juice() — well-known Fee Juice contract address constant (aztec-core)
  • Fee types and constants re-exported from the aztec-rs umbrella crate
  • 30+ new unit tests across aztec-core (selectors, merge) and aztec-fee (all three payment methods)

0.2.1 - 2026-04-07

Added

  • BaseWallet<P, N, A> — production Wallet implementation backed by PXE + Aztec node connections (aztec-wallet)
  • AccountProvider trait decoupling wallet implementations from specific account types (aztec-wallet)
  • SingleAccountProvider for the common single-account wallet pattern (aztec-account)
  • create_wallet() convenience factory function
  • send_tx, get_contract, get_contract_class methods on AztecNode trait and HttpNodeClient (aztec-node-client)
  • Private event decoding from PXE PackedPrivateEvent to wallet-level PrivateEvent objects
  • PXE module re-exported from aztec-wallet crate
  • 19 new unit tests for BaseWallet covering all Wallet trait methods with mock PXE/node/account backends
  • BaseWallet, AccountProvider, SingleAccountProvider, and create_wallet re-exported from the aztec-rs umbrella crate
  • PXE integration tests (tests/pxe_integration.rs) — 9 tests covering connectivity, account/sender lifecycle, contract queries, and wire-format roundtrips against a live PXE
  • BaseWallet integration tests (tests/wallet_integration.rs) — 7 tests covering chain info, address book, contract metadata, and contract registration against a live PXE + node

Fixed

  • Aligned aztec-pxe-client request option payloads with upstream PXE semantics by adding simulatePublic, overrides, profileMode, skipProofGeneration, and authwits to the Rust wire types
  • Corrected private event transport types in aztec-pxe-client to use upstream field names and metadata (packedEvent, contractAddress, txHash, afterLog, l2BlockNumber, l2BlockHash, eventSelector)
  • Corrected UtilityExecutionResult to deserialize the upstream PXE response shape (result plus optional stats)
  • Expanded PXE client tests to cover the corrected wire formats and added local BlockHash / LogId transport helpers needed for event parity
  • Added PartialEq derive to ExecuteUtilityOpts for test assertions

0.2.0 - 2026-04-07

Added

  • Pxe trait in aztec-pxe-client mirroring the TypeScript PXE interface (18 methods: simulate_tx, prove_tx, register_account, register_contract, get_private_events, etc.)
  • HttpPxeClient — HTTP/JSON-RPC client for connecting to a running PXE node
  • create_pxe_client(url) factory function with 30s default timeout
  • wait_for_pxe() polling helper (120s timeout, 1s interval)
  • PXE-specific types: BlockHeader, TxExecutionRequest, TxProvingResult, TxSimulationResult, TxProfileResult, UtilityExecutionResult, PackedPrivateEvent, PrivateEventFilter, RegisterContractRequest
  • PXE option types: SimulateTxOpts, ProfileTxOpts, ExecuteUtilityOpts
  • RpcTransport::call_void() for void-returning JSON-RPC methods
  • PXE module re-exported from the aztec-rs umbrella crate
  • 34 unit tests covering serde roundtrips, mock PXE, trait safety, and polling

Changed

  • Restructured codebase from a single flat crate into a Cargo workspace with 10 internal crates (aztec-core, aztec-crypto, aztec-rpc, aztec-node-client, aztec-pxe-client, aztec-wallet, aztec-contract, aztec-account, aztec-fee, aztec-ethereum)
  • Migrated all existing modules into their respective workspace crates while preserving the public API via umbrella re-exports in aztec-rs
  • Root Cargo.toml now defines a workspace and the aztec-rs umbrella crate depends on all workspace members

Removed

  • Flat src/*.rs module files (code moved into workspace crates)

0.1.1 - 2026-04-06

Fixed

  • README installation instructions

0.1.0 - 2026-04-06

Added

  • Core Aztec SDK types (addresses, hashes, keys, fields, transactions, logs)
  • Aztec node JSON-RPC client
  • Wallet API aligned with Aztec.js semantics
  • Contract interaction and deployment modules
  • Event decoding and filter support
  • Account model with entrypoint abstraction
  • BatchCall contract interaction helper
  • Contract artifact fixtures for testing
  • Integration tests and deployment/account examples
  • Documentation comments on all public types
  • Project README and fixture artifacts README
  • CI/CD workflows for GitHub Actions

Changed

  • License from MIT/Apache-2.0 dual to Apache-2.0 only

Removed

  • Implementation plan and spec documents