Aztec 3 is the next and final network on Aztec's journey to building a privacy-preserving, programmable extension to Ethereum. It will be a layer 2 rollup on Ethereum with smart contracts that allow for private and public state as well as private and public functions. Layer 2 contracts will be linked to layer 1 Ethereum contracts, similar to how Aztec Connect works.
These docs are a work in progress and will be updated as we release software around the new protocol.
Aztec 3 is being built and launched as a credibly neutral, decentralized protocol. The protocol is being developed as open source software and will be run by a community of infrastructure providers and stakeholders.
Aztec (the company) is doing much of the cryptography and engineering research and coordination to make the protocol possible. We are designing, building and auditing much of the software that others will run to create the Aztec network.
The Aztec community upholds many of the values of the Ethereum community by also building permissionlessness, decentralization and censorship resistance into the system.
Privacy in Aztec 3
Aztec 3 has three distinct domains of privacy--user privacy, data privacy and code privacy.
User privacy refers to the fact that transactions on the Aztec network can be completely confidential. Transactions may not include information about the sender, the recipient, the transaction amount or asset type. This is a significant deviation from most blockchains where all transaction data is transparent.
Data privacy refers to data stored in program's state. Like other blockchains, programs that run on Aztec 3 are called smart contracts. Smart contracts on Aztec differ from smart contracts in many other programming contexts in that they can optionally have private state as well as private functions.
Code privacy refers to program logic in smart contracts. Developers can specify
private functions in their smart contracts that allow users to privately interact with contracts.
Watch Zac, CEO of Aztec, describe our approach to building a privacy preserving smart contract blockchain.
You can watch Mike, one of our engineering team leads, talk about public-private composablity in Aztec 3 at Devcon here.
Our cryptography team is building Honk, a cutting edge proving system that makes Aztec 3 possible, under the Apache 2.0 License.
Noir is a domain specific programming language for writing zero knowledge circuits and developers will write smart contracts for Aztec 3 using Noir.
You can find more information and resources for learning about Noir on this page.
There are a number of components that we are working on to make the Aztec network robust and decentralized.
The Aztec network will need a peer-to-peer transaction pool for sequencers to discover transactions.
The network will need sequencer that works in a decentralized context, that follows a sequencer selection protocol and incentivizes liveness, minimizes redundant work and avoids race conditions.
There will be a prover network that will generate the required proofs to publish a rollup. Sequencers will rely on the prover network to generate proofs for rollup blocks. The prover network should allow people to create proofs on commodity hardware to avoid centralization of proof construction.
The sequence and prover networks must avoid "winner take all" and "fastest hardware wins" dynamics and will penalize censorship and missed blocks.
The network will need to define upgrade mechanics, so it can be updated over time as new technology and designs are developed.
There will need to be an incentive mechanism baked into the protocol that allows the various required parties to coordinate effectively and reliably.
Local Developer Testnet
First on our roadmap is to release a local developer testnet. This network will run on a single development machine and will allow developers to write, test and deploy Aztec 3 smart contracts.
Developers will be able to:
- deploy contracts with public and private functions
- deploy contracts with Aztec 3 <--> Ethereum contract calls
- call other Aztec 3 contract private and public functions
- read / write to private state
- read / write to public state
In parallel to building the local developer testnet we are working on the networking stack for the network. As mentioned above, this requires several components (including the transaction pool, the sequencer and prover networks and data retrieval).
After the launch of the local developer testnet we will be testing these networks on the Ethereum public testnets. These docs will be updated as we progress through the development process.
In the meantime, feel free to engage with us via the Community links in the footer.