{"_id":"@aztec-foundation/aztec-standards","_rev":"7-4191e66d80a1b341cb282917b7c9a72c","name":"@aztec-foundation/aztec-standards","dist-tags":{"rc":"5.2.0-rc.2","latest":"5.2.0"},"versions":{"5.0.1-rc.1":{"name":"@aztec-foundation/aztec-standards","version":"5.0.1-rc.1","author":{"name":"Wonderland"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.0.1-rc.1","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"a175a7b7750d8844688adf97783e1d68bcce1ca8","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.0.1-rc.1.tgz","fileCount":81,"integrity":"sha512-FfKwvV1Silt+lIqvtr5GiJGdpMWfOkn3HQHcm+46z/EpwAvbRfPW4L5OQs8wgQpUg/TwxB6IaB0NMl9Kd2IwFQ==","signatures":[{"sig":"MEYCIQC60aB3vv6HjjZZ/ta0rdI+P2zQy+BmCt4fFZnA3bk/SAIhANdoggTTxy2LQpzaMpw2w3Zog5HdxKLD67eKWaN2Brys","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.0.1-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102544767},"type":"module","config":{"aztecVersion":"5.0.1"},"gitHead":"e64469bbdc067e4c90822cd366ea98490f0179d1","_npmUser":{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"10.9.8","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.0.1-rc.1_1784206932847_0.7268314296279768","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@aztec-foundation/aztec-standards","version":"5.0.1","author":{"name":"Wonderland"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.0.1","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"840fe27a11cf48afac4f7405c0d8e944b96481e7","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.0.1.tgz","fileCount":81,"integrity":"sha512-i+O7v7Qqu2O9haFFducx7+42DIpxOUj+JNWUqIaE+laZJ2x+le/XEXuTLr60gCDQfo2m3b97ywH/QLk5engwAA==","signatures":[{"sig":"MEUCIBKCk4W3OazyqjQ3h6/vq2p2yJhKKER9g4nrmCtyfjI5AiEA0jPYHUqDhzFvQ/2LXU7ogWF/G3LG1dxWczSUbMooevs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102544762},"type":"module","config":{"aztecVersion":"5.0.1"},"gitHead":"c74541f7cf2bb23b704e96fd326ea95d98252669","_npmUser":{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"10.9.8","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.0.1_1784212122186_0.47798625713296805","host":"s3://npm-registry-packages-npm-production"}},"5.1.0-rc.1":{"name":"@aztec-foundation/aztec-standards","version":"5.1.0-rc.1","author":{"name":"Wonderland"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.1.0-rc.1","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"0de35a0e6d171fb5855f191bf0ab060de6ef7c17","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.1.0-rc.1.tgz","fileCount":81,"integrity":"sha512-9zsf0K7yez0JDza/q0ux3FhQbl4GLlRr9rUzJQr6dFmpQA9bvEOrCF6TH9j7jKS7b8QFl3WottYoyKAJO9OOFg==","signatures":[{"sig":"MEUCIQDkeKBbtoEBzol6Lln6k0xZDi/pXCLbsle0MPdFcsme1AIgZBJR81kv+TmG/0YhSGJfGYfoqNauzQPOGSit3PcDZC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.1.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":102258722},"type":"module","config":{"aztecVersion":"5.1.0"},"gitHead":"bb209af341fd07b60fe2480798375448061c7dd5","_npmUser":{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"10.9.8","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.1.0-rc.1_1784798000044_0.9721157858210161","host":"s3://npm-registry-packages-npm-production"}},"5.2.0-rc.1":{"name":"@aztec-foundation/aztec-standards","version":"5.2.0-rc.1","author":{"name":"Aztec Foundation"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.2.0-rc.1","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"fa0446e8d6d8cbcf91e461ea49798b10564a3ad3","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.2.0-rc.1.tgz","fileCount":94,"integrity":"sha512-NoWLppXXXd/RIOsNSPohOuD+Mu5TBifltbj2mJFEoUUjtxN3b95paC7oj1F+P7N9mjVY6hMrwO5En4JZtg9img==","signatures":[{"sig":"MEYCIQCU2Z+jm/1qbfulBzQ0nnCXZhjI2rjDJ3lzlTgdFRVi4wIhALXMjMsLrsPOqesADw2hEWpi3qfqLe8pR/Cm+q0rPP//","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.2.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109504922},"type":"module","config":{"aztecVersion":"5.2.0"},"gitHead":"44d17b765ada3dc21c6dcb0246259a4d941948d6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:548c93da-f765-4fa7-b336-f136762bac4a"}},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"11.5.1","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.2.0-rc.1_1787065682792_0.05163570954785657","host":"s3://npm-registry-packages-npm-production"}},"5.2.0-rc.2":{"name":"@aztec-foundation/aztec-standards","version":"5.2.0-rc.2","author":{"name":"Aztec Foundation"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.2.0-rc.2","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"89157e4511c581b4fa802ff9f73ec51b858debd2","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.2.0-rc.2.tgz","fileCount":94,"integrity":"sha512-CZrXoC1S85ymh3lGrrJbdYZuKEz31mB+UVf/TsLnhtuqr98iqvBNRNss0XsOB6UUWBmDukh4jRPQG/Vvn1M93g==","signatures":[{"sig":"MEUCIDBVjkQnnUj1rTYE3wDec/A0aY4MwY+gNXFGlusy/LqBAiEAzff8fxBGcCHdcf7YOB/boTR0wWaSHDgPwLPBhHnXP3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.2.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109504847},"type":"module","config":{"aztecVersion":"5.2.0"},"gitHead":"3a7604c70041eeab48c94a978e56373f6e17d5da","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:548c93da-f765-4fa7-b336-f136762bac4a"}},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"11.5.1","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.2.0-rc.2_1787731612535_0.42974440591357643","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@aztec-foundation/aztec-standards","version":"5.2.0","author":{"name":"Aztec Foundation"},"license":"MIT","_id":"@aztec-foundation/aztec-standards@5.2.0","maintainers":[{"name":"aztec-foundation-user-account","email":"npm@aztec.foundation"}],"homepage":"https://github.com/AztecProtocol/aztec-standards#readme","bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"dist":{"shasum":"848f574684c8b0e84ff15dc2c4f058499d17bcc3","tarball":"https://registry.npmjs.org/@aztec-foundation/aztec-standards/-/aztec-standards-5.2.0.tgz","fileCount":94,"integrity":"sha512-CG1h2d/RNKG/lFz0WE0iphMCZpDT2FSxLtjgt9P/oOjJcPan46Vb73QA6diq2TaRW6z9eOpTEFXYG/fwjB/7Fw==","signatures":[{"sig":"MEQCIAZjPqKOaXf0eyUj7CsM4zEGqLI06WPAuwfWSILSdudOAiBZ73E+hxKgPI9UeX7kywOXhikomFwirbR4rh0jVS8C4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aztec-foundation%2faztec-standards@5.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109504842},"type":"module","config":{"aztecVersion":"5.2.0"},"gitHead":"6fd2912de1fecd477e53861e95e7e551d0cae067","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:548c93da-f765-4fa7-b336-f136762bac4a"}},"repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"_npmVersion":"11.5.1","description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/aztec-standards_5.2.0_1787752138595_0.13900308516834992","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-16T13:02:12.744Z","modified":"2026-08-27T14:15:46.103Z","5.0.1-rc.1":"2026-07-16T13:02:13.420Z","5.0.1":"2026-07-16T14:28:42.767Z","5.1.0-rc.1":"2026-07-23T09:13:20.565Z","5.2.0-rc.1":"2026-08-18T15:08:03.453Z","5.2.0-rc.2":"2026-08-26T08:06:53.284Z","5.2.0":"2026-08-26T13:48:59.184Z"},"bugs":{"url":"https://github.com/AztecProtocol/aztec-standards/issues"},"author":{"name":"Aztec Foundation"},"license":"MIT","homepage":"https://github.com/AztecProtocol/aztec-standards#readme","repository":{"url":"git+https://github.com/AztecProtocol/aztec-standards.git","type":"git"},"description":"[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)","maintainers":[{"email":"npm@aztec.foundation","name":"aztec-foundation-user-account"},{"email":"adamdomurad@gmail.com","name":"ludamad"}],"readme":"# Aztec Standards\n\n[![npm version](https://img.shields.io/npm/v/@aztec-foundation/aztec-standards.svg)](https://www.npmjs.com/package/@aztec-foundation/aztec-standards)\n\nAztec Standards is a comprehensive collection of reusable, standardized contracts for the Aztec Network. It provides a robust foundation of token primitives and utilities that support both private and public operations, empowering developers to build innovative privacy-preserving applications with ease.\n\n## ⚠️ Security Status: Unaudited\n\n> [!WARNING]\n> **This code has not been audited. Do not use it in production or to secure assets of value.**\n>\n> The contracts in this repository are experimental, unaudited software under active development. They have not undergone any external security review, audit, or formal verification, and they may contain bugs, security vulnerabilities, or economic flaws that could result in the irrecoverable loss of funds.\n>\n> The software is provided on an \"AS IS\" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied (see [LICENSE](LICENSE)). Anyone deploying or interacting with these contracts does so entirely at their own risk, and is responsible for obtaining their own independent security review. No representation is made that the code is free of defects, and nothing here should be relied upon as security, legal, or financial advice.\n>\n> This notice will be updated if and when an audit is completed.\n\n## Development\n\n**Prerequisite**: Start an Aztec local network in a separate terminal:\n```bash\naztec start --local-network\n```\n\n**Tests**: `yarn test` runs Noir and JS tests. JS tests expect the network to be running at `http://localhost:8080` (or `NODE_URL`).\n\n**Benchmarks**: `yarn bench` connects to the same running network.\n\nSet `NODE_URL` to override the default (e.g. `http://localhost:9000`).\n\n## Table of Contents\n- [Security Status: Unaudited](#️-security-status-unaudited)\n- [Development](#development)\n- [Standards & Naming (AIP vs ARC)](#standards--naming-aip-vs-arc)\n- [Dripper Contract](#dripper-contract)\n- [Token Contract](#token-contract)\n- [MultiToken Contract](#multitoken-contract)\n- [Vault Contract](#vault-contract)\n- [Vault Deployer Contract](#vault-deployer-contract)\n- [NFT Contract](#nft-contract)\n- [Escrow Standard Contract & Library](#escrow-standard-contract--library)\n- [Scope & Maintenance](#scope--maintenance)\n- [License](#license)\n\n## Standards & Naming (AIP vs ARC)\n\nTwo proposal-numbering tracks appear in this repository, and they are not interchangeable:\n\n- **AIP-x** — Aztec Improvement Proposals published as RFCs on the [Aztec forum](https://forum.aztec.network). This repository implements [AIP-20](https://forum.aztec.network/t/request-for-comments-aip-20-aztec-token-standard/7737) (Token) and [AIP-4626](https://forum.aztec.network/t/request-for-comments-aip-4626-tokenized-vault/8079) (Vault). Both are drafts under discussion, not ratified standards.\n- **ARC-x** — Aztec Request for Comments, a separate track. The Token and MultiToken contracts implement [ARC-403](https://forum.aztec.network/t/arc-403-authtoken/7887), an optional authorization-hook extension (compliance checks on transfers via an external authorization contract). The ARC-403 spec is still under active discussion; the implementation here tracks the draft. The canonical hook interface lives in `src/arc403_interface`.\n\n> [!CAUTION]\n> The `Arc403Authorizer` and `Arc403MultiTokenAuthorizer` artifacts shipped with this package are **interface stubs with empty bodies**. They exist to define the ABI. Never deploy them or wire them as a token's `auth_contract` — an empty hook approves every operation. Deploy your own implementation of the interface instead.\n\nThere is no \"AIP-403\" — if you have seen that name, it refers to ARC-403.\n\n## Dripper Contract\n\nThe `Dripper` contract provides a convenient faucet mechanism for minting tokens into private or public balances. Anyone can easily invoke the functions to request tokens for testing or development purposes.\n\n📖 **[View detailed Dripper documentation](src/dripper/README.md)**\n\n## Token Contract\n\nThe `Token` contract implements an ERC-20-like token with Aztec-specific privacy extensions. It supports transfers and interactions explicitly through private balances and public balances, offering full coverage of Aztec's confidentiality features.\n\nWe published the [AIP-20 Aztec Token Standard](https://forum.aztec.network/t/request-for-comments-aip-20-aztec-token-standard/7737) to the forum. Feel free to review and discuss the specification there. The token optionally implements the [ARC-403](https://forum.aztec.network/t/arc-403-authtoken/7887) authorization hook (draft).\n\n📖 **[View detailed Token documentation](src/token_contract/README.md)**\n\n## MultiToken Contract\n\nThe `MultiToken` contract implements an ERC-1155-like multi-token (many token ids under one contract) with Aztec-specific privacy extensions: per-id private and public balances, partial-note commitments for public→private transfers, and the [ARC-403](https://forum.aztec.network/t/arc-403-authtoken/7887) authorization hook (draft).\n\n📖 **[View detailed MultiToken documentation](src/multitoken_contract/README.md)**\n\n## Vault Contract\n\nThe `Vault` contract is a standalone yield-bearing vault that holds an underlying AIP-20 asset and issues AIP-20 share tokens to depositors. The vault and shares token are separate contracts — the vault manages deposit/withdraw/redeem logic while delegating share token operations (mint, burn, transfer) to an external AIP-20 `Token` contract configured with the vault as its minter.\n\nWe published the [AIP-4626: Tokenized Vault Standard](https://forum.aztec.network/t/request-for-comments-aip-4626-tokenized-vault/8079) to the forum. Feel free to review and discuss the specification there.\n\n> [!WARNING]\n> The Vault is **not production-ready**, even by this repository's unaudited standards. It is exposed to [reentrancy when the underlying asset token has an ARC-403 authorization hook configured](src/vault_contract/README.md) (its ordering-based protection does not hold, because the hook runs *during* a transfer, before balances move), and it has a known overflow issue in the asset↔share conversion logic plus known privacy limitations. No fix is currently scheduled — see its README before wrapping any hooked token.\n\n📖 **[View detailed Vault documentation](src/vault_contract/README.md)**\n\n## Vault Deployer Contract\n\nThe `VaultDeployer` contract deploys and links a `Vault` and its shares `Token` in a single transaction. It exists as a workaround until [public contract-instance registration](https://github.com/AztecProtocol/aztec-packages/issues/20771) lands upstream; without it, a vault and its shares token cannot be deployed and wired together atomically.\n\n📖 **[View detailed Vault Deployer documentation](src/vault_deployer/README.md)**\n\n## NFT Contract\n\nThe `NFT` contract implements an ERC-721-like non-fungible token with Aztec-specific privacy extensions. It supports transfers and interactions through both private and public ownership, offering full coverage of Aztec's confidentiality features for unique digital assets.\n\n📖 **[View detailed NFT documentation](src/nft_contract/README.md)**\n\n## Escrow Standard Contract & Library\n\nThe Escrow Standard contains two elements:\n- Escrow Contract: a minimal private contract designed to have keys with which authorized callers can spend private balances of AIP-20 tokens and of the NFT contract in this repository.\n- Logic Library: a set of contract library methods that standardizes and facilitates the management of Escrow contracts from another contract, a.k.a. the Logic contract. \n\n📖 **[View detailed Escrow documentation](src/escrow_contract/README.md)**\n\nTo see examples of Logic contract implementations, such as a linear vesting contract or a clawback escrow contract, go to [aztec-escrow-extensions](https://github.com/defi-wonderland/aztec-escrow-extensions).\n\n## Scope & Maintenance\n\nThe contracts above are the complete, intended scope of this repository. The Aztec Foundation maintains them (dependency bumps, bug fixes, spec alignment), but **no new standards are planned unless there is clear ecosystem demand**. If you need a standard that isn't here — or want one of the draft specs (AIP-20, AIP-4626, ARC-403) pushed toward finalization — say so on the [Aztec forum](https://forum.aztec.network) or open a GitHub issue on this repository. Demand is what gets things built.\n\n## License\n\nReleased under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}