AZTEC is a layer 2 solution that combines privacy and scalability, capable of creating private and programmable transactions. “Programmable money” is the great revolution brought about by blockchain, namely a smart contract that controls the movement of capital within a financial application. This has made it possible to bring vast areas of finance onto blockchain systems, radically changing the way they work and eliminating counterparty risk.
Ethereum today represents a simple and efficient system for creating “programmable money”, however, this possibility requires public algorithms, where every input and output of transactions, as well as their validation, are visible to all. The counterpart to this system is the lack of privacy in transactions, hence the concept of “confidential transactions” or transactions on a public blockchain network whose value is hidden.
There are already blockchains that have implemented confidential transactions, e.g. Monero and Zcash, but there is a lack of implementation to support generic calculations on complete Turing virtual machines like Ethereum. This lack has limited the use of confidential transactions only to native cryptocurrency transfers on their respective blockchains.
The AZTEC protocol enables confidential transactions on blockchains that support generic computations, on Ethereum it is possible to attach the AZTEC protocol to all existing digital assets in existence on the platform (assets using the ERC-20 standard). In order to enable privacy on public blockchains, through a series of zero-knowledge proofs and cryptography, the protocol allows logical checks to be performed on cryptographic values without the underlying values being revealed on the blockchain.
Moreover, zero-knowledge validation on Ethereum encounters limitations, given the lack of interoperability and the inability to perform proof building on a client browser. Let’s take a detailed look at how Aztec works and how it manages to overcome these limitations…
How does Aztec work?
In Aztec, each transaction is a memo, which goes into a record of memos. Each balance of a user is given by all the memos that his address has on the memo ledger. Unlike AZTEC, most Zero Knowledge systems lack interoperability, the latter allows interoperable use of funds (e.g. using funds obtained as interest from a loan, to settle trades with different assets) and makes it possible to interoperate between dApps that interact with zero knowledge proofs.
AZTEC Cryptography Engine
To achieve this interoperability, AZTEC maintains a common configuration managed by a single smart contract ACE (AZTEC Cryptography Engine), with two main functions delegating the validation of proofs to specific validation contracts to process and update the status of records of memos resulting from validated proofs.
The AZTEC protocol allows building dApps, thanks to modular building blocks, each with its own functionality. Developers can build their own private dApps without the involvement of a cryptographer.
Privacy, anonymity and confidentiality
These are terms often used when talking about ‘zero-knowledge proofs’. Let’s look at the meaning in more detail and see how the AZTEC protocol handles them:
- privacy; any aspect of a transaction remains secret from the public.
- anonymity; input and output of a transaction are public, but the transactions are obscured thus preventing the identification of the parties involved in the transaction
- confidentiality; inputs and outputs are public, transactions remain hidden.
By default using normal Ethereum addresses the transaction graph of AZTEC is not anonymous.
However since AZTEC does not require the sender to be a party involved in the transaction, the transaction graph can be hidden. Anonymity is achieved by the mixed use of invisible addresses and transactions forwarded by a trusted party for the purpose of hiding gas payments. Ongoing updates will allow the gas of transactions to be obscured in a decentralized manner, thus we will have completely private transactions.
AZTEC 2.0 coming soon
The new solution announced by AZTEC involves the use of a new zk-SNARK standard called PLONK. It is new because it provides a two-layered system capable of scaling the Ethereum network, applying privacy but also increasing scalability.
The processing system bundles transactions into a single public trial, in the Ethereum main chain, increasing the number of transaction throughputs and significantly reducing gas consumption. Unlike classic layer 2 solutions, which offer scalability while neglecting privacy, AZTEC 2.0 combines them by offering both of these important features. The solution hides the sender, the recipient and the zkSNARK amount, these are then collected, grouped and subjected to a further zkSNARK rollup, thus creating a double rollup.
Sending them as a single piece of evidence to the Ethereum network.
Programmable privacy with NOIR
One of the main hurdles for DeFi could be privacy, given the fact that it is encompassing more and more sectors of the financial world.
AZTEC 2.0 and the use of PLONK, allows the development of a “universal” zk-SNARK, programmable with any DeFi interaction that uses a token.
To enable developers to create AZTEC 2.0 compatible zk-SNARK transactions, an ad-hoc script language called Noir has been created, an open source language that will allow developers to create custom logic to be applied and run on any DeFi application.
We have seen how AZTEC differs from classical zk-SNARK systems in its ability to combine privacy and scalability.
DeFi scalability with built-in user protection, gas reduction and programmability of private contracts thanks to the Noir script language.
AZTEC 2.0 is currently available on the Ropsten test network, which is being used for testing purposes prior to its launch on the mainnet in November.