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 socargo 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 undertests/<group>/and mounted via a single entry filetests/<group>.rssharingtests/common/ascrate::commonE2E_TEST_COVERAGE.mdgains 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_walletandTokenTestStateto satisfyclippy::nursery::too_long_first_doc_paragraph(raised bycargo 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— ergonomicOption<_>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— AMMadd_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_artifactloaders intests/common/(fall back to upstreamnoir-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.jsoncompiled contract fixturesE2E_TEST_COVERAGE.mdrefreshed 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— unifiedtransferpatterns (less-than-balance withTransferprivate event decode, non-deployed recipient, self-transfer, over-balance simulation failure)e2e_token_contract_reading_constants— private/publicname,symbol,decimalsgetters verified via directPublicImmutableslot 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, withowner_of/is_minterread directly from thepublic_ownersandmintersmaps since the contract’s public views ship as AVM bytecodee2e_escrow_contract— escrow with a custom keypair viaContract::deploy_with_public_keys, explicit PXE registration of the escrow’s secret key + complete address + instance on both wallets (mirroring upstreamwallet.registerContract(instance, artifact, secretKey)), withdraw, non-owner reject, and a batched transfer+withdraw tx proving multiple keys work in a single payloade2e_event_only— emits and retrieves a privateTestEventfor a contract with no notes
load_escrow_compiled_artifact,load_nft_artifact,load_event_only_artifactloaders intests/common/(fall back to upstreamnoir-contracts/target/paths when local fixtures are missing)fixtures/escrow_contract_compiled.json,fixtures/event_only_contract_compiled.json,fixtures/nft_contract_compiled.jsoncompiled contract fixturesE2E_TEST_COVERAGE.mdrefreshed to reflect Tier 6 completion (47 implemented files)
Fixed
DeployMethod::sendno longer callswait_for_contractwhenskip_instance_publicationis 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_valuenow 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, callsdepositToAztecPublic, and parses the InboxMessageSentevent for the L1→L2 message hash and leaf indexFeeJuiceBridgeResultcarryingclaim_amount,claim_secret,message_leaf_index, andmessage_hashfor use withFeeJuicePaymentMethodWithClaimL1ContractAddresses.fee_juiceandfee_asset_handleroptional fields parsed from node infoEthClient::rpc_callmade public for direct JSON-RPC access
- Fee execution payload merging in
BaseWallet::send_txandsimulate_tx—SendOptions.fee_execution_payload/SimulateOptions.fee_execution_payloadcalls, auth witnesses, capsules, extra hashed args, and fee payer are merged into the outgoing tx; fee payment method auto-selectsFeeJuiceWithClaimwhen a fee payload is present (aztec-wallet) AccountProvider::create_tx_execution_requestnow 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_paymentsbridges Fee Juice to the FPC viaprepare_fee_juice_on_l1, waits for L1→L2 readiness, and claims withFeeJuicePaymentMethodWithClaim— mirrors upstreamfeeJuiceBridgeTestHarness.bridgeFromL1ToL2e2e_fee_juice_paymentsreworked to deploy a dedicated Bob Schnorr account withfails_to_simulate_without_fundscoverage and explicitgas_settings
Changed
AztecNode::get_l1_to_l2_message_membership_witnessnow returnsResult<Option<serde_json::Value>, Error>viacall_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_fieldsrather than direct struct initialization (aztec-pxe) SchnorrAccountContractconstructor now uses flatsigning_pub_key_x/signing_pub_key_yfields instead of aPublicKeystruct, matching the compiled Noir artifact and fixing PXE selector computation (aztec-account)
Fixed
FunctionSelectorABI encoding acceptsAbiValue::Integerin addition toAbiValue::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 viaas u64) (aztec-core) - PXE L1→L2 membership witness oracle now:
- Handles the
utilityGetL1ToL2MembershipWitnessoracle alias alongside the canonical name - Parses
leafIndexas either hex string or decimal - Supports base64-encoded sibling paths (4-byte count prefix + 32-byte Fr elements) in addition to JSON arrays
- Handles the
- 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 interactionsend_l1_to_l2_messagewithMessageSentevent log parsingL1ContractAddressesparsed from node info- Cross-chain readiness utilities:
is_l1_to_l2_message_ready,wait_for_l1_to_l2_message_ready
- Messaging types:
compute_l1_to_l2_message_nullifierandcompute_l2_to_l1_message_hashhash functions (aztec-core)MESSAGE_NULLIFIERdomain separator,L1_TO_L2_MSG_SUBTREE_HEIGHT,NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUPconstants (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_hashand corrected Schnorr signing to match Noir scheme (aztec-crypto)get_l1_to_l2_message_checkpointonAztecNodetrait andHttpNodeClient(aztec-node-client)- Phase 2 RPC methods on
AztecNodetrait: simulation, state queries, tree lookups (aztec-node-client) cross_chainandl1_clientmodules re-exported fromaztec-rsumbrella 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
RpcTransportexposesurlandtimeoutaccessors (aztec-rpc)is_staticrenamed tois_privatein 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
findLeavesIndexesresponse parsing (InBlock wrapper, string-encoded numbers, numeric tree_id)- Nested protocol private call handling in PXE
0.3.2 - 2026-04-08
Added
SchnorrSignaturestruct withto_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 implementingAccountContract,Account, andAuthorizationProviderwith 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 throughDefaultAccountEntrypointwith Schnorr signing (aztec-account)DefaultAccountEntrypoint::entrypoint_abi()made public for account contract implementations to include in their artifacts (aztec-account)SchnorrAccountContractre-exported fromaztec-accountandaztec-rsumbrella crateblake2dependency added toaztec-crypto- 15 new unit tests across
aztec-crypto(sign/verify roundtrip, determinism, serialization) andaztec-account(artifact structure, signature verification, AccountManager integration, deploy payload) WaitOpts.wait_for_statusfield replacingproven: bool— wait for anyTxStatustarget (aztec-node-client)WaitOpts.dont_throw_on_revert— accept reverted receipts without error (aztec-node-client)WaitOpts.ignore_dropped_receipts_for— grace period before treatingDroppedas failure (aztec-node-client)WaitForProvenOptsstruct andwait_for_proven()— poll until a receipt’s block is proven on L1 (aztec-node-client)AztecNode::get_proven_block_number()trait method andHttpNodeClientimplementation (aztec-node-client)ContractFunctionInteraction::profile()andBatchCall::profile()— delegate toWallet::profile_tx(aztec-contract)DeployMethod::profile()for profiling deployment transactions (aztec-contract)Contract::deploy()andContract::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 underlyingFunctionCall(aztec-contract)ProfileModeenum (Gates,ExecutionSteps,Full) replacingOption<String>inProfileOptions(aztec-wallet)FieldLayoutandContractStorageLayouttypes for storage slot descriptors (aztec-core)abi_checker()artifact validator with recursiveAbiTypevalidation (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_gasandSimulateOptions.estimated_gas_paddingfor gas estimation (aztec-wallet)- Fee payload merging in
ContractFunctionInteractionandBatchCallsend()/simulate()/profile()methods (aztec-contract) - All new types re-exported from
aztec-contractandaztec-rsumbrella crate - 25+ new unit tests across
aztec-node-client,aztec-contract,aztec-wallet, andaztec-core
Changed
WaitOptsdefault timeout increased from 60s to 300s to match TypeScript SDK (aztec-node-client)WaitOpts.proven: boolremoved — usewait_for_status: TxStatus::Proveninstead (aztec-node-client)ProfileOptions.profile_modechanged fromOption<String>toOption<ProfileMode>(aztec-wallet)SimulateOptionsno longer derivesEq(now containsf64padding field) (aztec-wallet)ContractFunctionInteractionnow carriesauth_witnessesandextra_hashed_argsfields included in generated payloads (aztec-contract)BaseWallet::profile_txuses typedProfileModeenum instead of string matching (aztec-wallet)- All examples (
account_flow,contract_call,deploy_contract) now useSchnorrAccountContractand realBaseWalletconnections instead of inline mock account contracts andMockWallet
0.3.1 - 2026-04-08
Added
Salttype 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_senderfield 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_PAYLOADconstant 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)ContractInstantiationParamsstruct 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)AccountFeePaymentMethodOptionsenum (External, PreexistingFeeJuice, FeeJuiceWithClaim) (aztec-account)DefaultAccountEntrypointOptionsfor 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 throughDefaultMultiCallEntrypointfor 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)DeployAccountOptionsstruct with skip flags, fee payment, and fee entrypoint options (aztec-account)DeployResultstruct (account-specific) returningSendResult+ContractInstanceWithAddressfrom account deployment (aztec-account)- New modules:
entrypoint/,signerless,meta_paymentinaztec-account - All new types re-exported from
aztec-accountandaztec-rsumbrella 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 acceptsOption<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)DeployAccountMethodreplaced from a stub returning errors to a full implementation wrappingaztec-contract::DeployMethodwith account-specific fee-payment logic (aztec-account)DeployAccountMethod::request()is nowasyncand accepts&DeployAccountOptions; builds real deployment payloads with correct fee ordering (deploy-first for self-deploy, fee-first for third-party) (aztec-account)DeployAccountMethod::simulate()andsend()signatures updated to accept&DeployAccountOptions(aztec-account)DeployMethod::get_instance()refactored to delegate to sharedget_contract_instance_from_instantiation_params()helper (aztec-contract)aztec-accountnow depends onaztec-contractandaztec-feefor deployment reuse and fee payment integration- Updated
examples/account_flow.rsto demonstrate full lifecycle: real address derivation, deployment payload construction, andget_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)DerivedKeysstruct containing all four master secret keys and their correspondingPublicKeys(aztec-crypto)- App-scoped key derivation:
KeyTypeenum,compute_app_secret_key,compute_app_nullifier_hiding_key,compute_ovsk_app(aztec-crypto) complete_address_from_secret_key_and_partial_addressfor deriving aCompleteAddressfrom 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 withSECRET_HASHdomain separator for L1-L2 messages (aztec-core)- Domain separators for key derivation:
NHK_M,IVSK_M,OVSK_M,TSK_M,SECRET_HASH(aztec-core) Fqtype expanded withzero(),one(),to_be_bytes(),from_be_bytes_mod_order(),is_zero(),random(),hi(),lo(),From<u64>,From<[u8; 32]>,Mul(aztec-core)aztec-rs::cryptomodule re-exporting the fullaztec-cryptopublic API from the umbrella cratesha2dependency added toaztec-crypto- 15+ new unit tests cross-validated against TypeScript SDK test vectors (secret_key = 8923)
Changed
GrumpkinScalartype alias changed fromFrtoFqfor type correctness — Grumpkin scalars live in the BN254 base field (aztec-core)grumpkin::scalar_mulnow accepts&Fqinstead of&Fras the scalar argument (aztec-core)compute_contract_address_from_instancerefactored to delegate to the newcompute_addressfunction (aztec-core)AccountManager::complete_address()now performs real key derivation and address computation instead of returning an error (aztec-account)aztec-accountnow depends onaztec-cryptofor 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 forFr(aztec-core)From<u64>conversion forAztecAddress(aztec-core)FieldLike,AztecAddressLike,EthAddressLiketype 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()andcount_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 u64truncation (aztec-core) AbiDecodedenum anddecode_from_abi()for reconstructing typed values from flat field-element arrays (aztec-core)NoteSelectortype — 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.rsinto sub-modules (abi/types.rs,abi/selectors.rs,abi/checkers.rs,abi/encoder.rs,abi/decoder.rs,abi/buffer.rs) withabi/mod.rsre-exporting the full public API (aztec-core) hash.rsprivate helpersfr_to_be_bytes/fr_to_usizenow delegate to the new publicFrmethods (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_instanceusing Grumpkin EC operations (aztec-core) - Initialization hash computation:
compute_initialization_hash,compute_initialization_hash_from_encoded(aztec-core) PublicKeys::hash()withPUBLIC_KEYS_HASHdomain separator and empty-key shortcut (aztec-core)PublicKeys::is_empty()andPoint::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) FunctionArtifactfields:bytecode,verification_key_hash,verification_key,custom_attributes,is_unconstrained,debug_symbols— allOptionwith#[serde(default)](aztec-core)ContractArtifactfields:outputs,file_map— bothOptionwith#[serde(default)](aztec-core)FunctionSelector::from_name_and_parameters()for deriving selectors from ABI metadata (aztec-core)abi_type_signature()helper convertingAbiTypeto 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)DeployResultstruct returningSendResult+ContractInstanceWithAddressfromDeployMethod::send()(aztec-contract)SuggestedGasLimitsstruct andget_gas_limits()with configurable padding factor (aztec-contract)DeployOptions::fromfield for explicit deployer address selection (aztec-contract)ContractFunctionInteraction::new()andnew_with_capsules()constructors (aztec-contract)sha2crate dependency for artifact hash computation (aztec-core)- 30+ new unit tests across
aztec-core(grumpkin, deployment hashes, address derivation) andaztec-contract(gas limits, class/instance publication, full deployment flow)
Changed
Capsulestruct now hascontract_address: AztecAddress,storage_slot: Fr, anddata: Vec<Fr>fields instead ofdata: Vec<u8>(aztec-core)DeployMethod::request()is nowasyncand returns real deployment payloads instead of stub errors (aztec-contract)DeployMethod::get_instance()now returnsResult<ContractInstanceWithAddress, Error>(was infallible) (aztec-contract)DeployMethod::send()now returnsDeployResultcontaining both the tx hash and deployed instance (aztec-contract)ContractFunctionInteractionnow carries an optionalcapsulesfield 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_hashmatching 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_fieldshelper for flatteningAbiValuetoVec<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_hashfield identifying which message a witness authorizes (aztec-core)MessageHashOrIntent::InnerHashvariant for pre-computed inner hashes with consumer address (aztec-core)CallAuthorizationRequeststruct withnew(),selector(), andfrom_fields()for authwit preimage handling (aztec-account)AuthorizationSelectortype for authorization request type identification (aztec-core)FunctionSelector::from_field()andFunctionSelector::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)AuthWitValidityresult type for validity checks (aztec-contract)- Intent-to-hash resolution in
SingleAccountProvider.create_auth_wit()soAuthorizationProviderimplementations always receive resolved hashes (aztec-account) - Hash functions, authwit helpers, and authorization types re-exported from the
aztec-rsumbrella crate - 25+ new unit tests across
aztec-core(hash, constants),aztec-account(authorization), andaztec-contract(authwit)
Changed
ChainInfoandMessageHashOrIntentmoved fromaztec-wallettoaztec-core::hashto avoid circular dependencies; re-exported fromaztec-walletfor 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 soCallAuthorizationRequestnow 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)andutility_is_consumable((Field),Field)) and addedSetPublicAuthWitInteraction::profile()parity (aztec-contract) - Removed the now-unused
sha3dependency fromaztec-core
0.2.2 - 2026-04-07
Added
FeePaymentMethodasync 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)L2AmountClaimtype 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-rsumbrella crate - 30+ new unit tests across
aztec-core(selectors, merge) andaztec-fee(all three payment methods)
0.2.1 - 2026-04-07
Added
BaseWallet<P, N, A>— productionWalletimplementation backed by PXE + Aztec node connections (aztec-wallet)AccountProvidertrait decoupling wallet implementations from specific account types (aztec-wallet)SingleAccountProviderfor the common single-account wallet pattern (aztec-account)create_wallet()convenience factory functionsend_tx,get_contract,get_contract_classmethods onAztecNodetrait andHttpNodeClient(aztec-node-client)- Private event decoding from PXE
PackedPrivateEventto wallet-levelPrivateEventobjects - PXE module re-exported from
aztec-walletcrate - 19 new unit tests for
BaseWalletcovering allWallettrait methods with mock PXE/node/account backends BaseWallet,AccountProvider,SingleAccountProvider, andcreate_walletre-exported from theaztec-rsumbrella 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 BaseWalletintegration 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-clientrequest option payloads with upstream PXE semantics by addingsimulatePublic,overrides,profileMode,skipProofGeneration, andauthwitsto the Rust wire types - Corrected private event transport types in
aztec-pxe-clientto use upstream field names and metadata (packedEvent,contractAddress,txHash,afterLog,l2BlockNumber,l2BlockHash,eventSelector) - Corrected
UtilityExecutionResultto deserialize the upstream PXE response shape (resultplus optionalstats) - Expanded PXE client tests to cover the corrected wire formats and added local
BlockHash/LogIdtransport helpers needed for event parity - Added
PartialEqderive toExecuteUtilityOptsfor test assertions
0.2.0 - 2026-04-07
Added
Pxetrait inaztec-pxe-clientmirroring 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 nodecreate_pxe_client(url)factory function with 30s default timeoutwait_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-rsumbrella 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.tomlnow defines a workspace and theaztec-rsumbrella crate depends on all workspace members
Removed
- Flat
src/*.rsmodule 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
BatchCallcontract 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