# Zk.Money v2 (Aztec Connect) Markdown version of https://l2beat.com/layer2s/projects/aztecconnect ## Summary **Warning:** This project is archived and no longer maintained. - Total Value Secured: $0.00 (0.00% compared to seven days ago; canonically bridged $0.00, natively minted $0.00, externally bridged $0.00; 0.00% with additional trust assumptions compared to the tokens involved and the Stage assigned to the project's canonical messaging bridge) - Stage: Stage 2 - Type: ZK Rollup - Purposes: Payments, Privacy - Host chain: Ethereum ### Risks - Sequencer failure: Self sequence (sentiment: good) - State validation: Validity proofs (SN) (sentiment: good) - Data availability: Onchain (sentiment: good) - Exit window: ∞ (sentiment: good) - Proposer failure: Self propose (sentiment: good) ### About Aztec Connect is an open source layer 2 network that aims to enable affordable, private crypto payments via zero-knowledge proofs. ## Value Secured Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/aztecconnect#tvs). - [TVS chart (JSON)](https://l2beat.com/api/scaling/tvs/aztecconnect) - [TVS breakdown by token (JSON)](https://l2beat.com/api/scaling/tvs/aztecconnect/breakdown) ## Onchain costs Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/aztecconnect#onchain-costs). ## Milestones & Incidents - 2026-06-15 (incident): [Immutable smart contract exploit](https://www.aztec-labs.com/blog/aztec-connect-incident.html). $~2.3M of assets are drained by exploiting a bug in a smart contract. - 2024-04-30: [Aztec operator sunset](https://medium.com/aztec-protocol/sunsetting-aztec-connect-a786edce5cae). Aztec stops rollup operators, renouces ownership. Users must run the Rollup manually to withdraw. - 2022-10-06: [Introducing Noir](https://medium.com/aztec-protocol/introducing-noir-the-universal-language-of-zero-knowledge-ff43f38d86d9). Noir - programming language for zero-knowledge proofs, has been introduced. - 2022-07-07: [Mainnet Launch](https://medium.com/aztec-protocol/aztec-network-launches-first-ever-private-defi-solution-for-ethereum-e5ec7624d430). Aztec Connect is live on mainnet, enabling private DeFi on Ethereum. ## Risk analysis **Warning:** EOL: Aztec team shut down their offchain rollup infrastructure on March 31st, 2024. Onchain deposits are disabled and ownership of the rollup contract is irrevocably renounced. Assets in the escrow can be manually withdrawn with the [Aztec Connect Ejector](https://github.com/AztecProtocol/aztec-connect-ejector). ### Sequencer failure Self sequence (sentiment: good) In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. Proposing new blocks requires creating ZK proofs. ### State validation Validity proofs (SN) (sentiment: good) SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup. ### Data availability Onchain (sentiment: good) All of the data needed for proof construction is published on Ethereum L1. ### Exit window ∞ (sentiment: good) Users can exit funds at any time because contracts are not upgradeable. ### Proposer failure Self propose (sentiment: good) If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. ## Stage Zk.Money v2 (Aztec Connect) is a Stage 2 ZK Rollup. ### Stage 0 - [x] A complete and functional proof system is deployed. - [x] The project calls itself a rollup. - [x] State roots are posted to Ethereum L1. - [x] Inputs for the state transition function are posted to Ethereum L1. - [x] A source-available node exists that can recreate the state from Ethereum L1 data. Please note that the L2BEAT team has not verified the validity of the node source code. [View code](https://github.com/AztecProtocol/aztec-connect/tree/v2.1) ### Stage 1 - [x] Principle: Compromising ≥75% of the Security Council is the only way (other than bugs) for a rollup to indefinitely block an L2→L1 message (e.g. a withdrawal) or push an invalid L2→L1 message (e.g. an invalid withdrawal) with a <7d exit window. - [x] Users are able to exit without the help of the permissioned operators. - [x] In case of an unwanted upgrade by actors more centralized than a Security Council, users have at least 7d to exit. ### Stage 2 - [x] Users can exit at any time and the rollup contract is immutable. ## Data availability ### All data required for proofs is published onchain Since EOL this is only true if the user themself runs the rollup locally and publishes the data. **References** - [RollupProcessorV3.sol#L686 - Etherscan source code](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code#F1#L686) ## State derivation ### Node software The entire stack's source code is housed in a single monorepo, which can be found [here](https://github.com/AztecProtocol/aztec-connect/). For instructions on running the node, please refer to [this readme](https://github.com/AztecProtocol/aztec-connect/blob/v2.1/yarn-project/README.md). Since EOL the [aztec-connect-ejector](https://github.com/AztecProtocol/aztec-connect-ejector) can be used to run a rollup instance and withdraw. ### Compression scheme No compression is used. ### Genesis state The genesis file is available [here](https://github.com/AztecProtocol/aztec-connect/blob/v2.1/yarn-project/falafel/src/environment/init/data/mainnet/accounts), and it includes accounts from [zk.money](http://zk.money) as well. ### Data format The code to decode onchain data can be found [here](https://github.com/AztecProtocol/aztec-connect/blob/master/yarn-project/barretenberg.js/src/rollup_proof/rollup_proof_data.ts#L453) ## State validation ### Validity proofs Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Ethereum by a smart contract. **References** - [RollupProcessorV3.sol#L706 - Etherscan source code](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code#F1#L706) ## Upgrades & Governance ## Updates Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/aztecconnect#updates). ## Operator ### No operator Only specific addresses appointed by the owner were permitted to propose new blocks during regular rollup operation. Now that the system is EOL, the rollup can only be processed locally by volunteers. **References** - [RollupProcessorV3.sol#L692 - Etherscan source code](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code#F1#L692) - [Aztec Connect Ejector - Codespace template for running the Aztec Connect rollup.](https://github.com/AztecProtocol/aztec-connect-ejector) ### Users can force any transaction Because the block production is open to anyone if users experience censorship from the operator they can propose their own blocks which would include their transactions. ## Withdrawals ### EOL: Manual withdrawal using Aztec Connect Ejector EOL: Aztec team announced they are going to shut down the rollup infrastructure on March 31st, 2024. Deposits are disabled and ownership of the rollup contract is irrevocably renounced. Assets in the escrow can be manually withdrawn with the [Aztec Connect Ejector](https://github.com/AztecProtocol/aztec-connect-ejector). **References** - [Aztec Connect Ejector - Codespace template for running the Aztec Connect rollup.](https://github.com/AztecProtocol/aztec-connect-ejector) ### Regular withdraw (disabled) The user initiates the withdrawal by submitting a transaction on L2. When the block containing that transaction is proven on L1 the assets are automatically withdrawn to the user. **References** - [RollupProcessorV3.sol#F1#L1174 - Etherscan source code](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code#F1#L1174) - [RollupProcessorV3.sol#F1#L1332 - Etherscan source code](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code#F1#L1332) ## Other considerations ### Payments are private Balances and identities for all tokens on the Aztec rollup are encrypted. Each transaction is encoded as a zkSNARK, protecting user data. **References** - [Fast Privacy, Now - Aztec Medium Blog](https://medium.com/aztec-protocol/aztec-zkrollup-layer-2-privacy-1978e90ee3b6#3b25) ## Smart contracts ### Ethereum #### RollupProcessorV3 Addresses: [0xFF1F2B4ADb9dF6FC8eAFecDcbF96A2B351680455](https://etherscan.io/address/0xFF1F2B4ADb9dF6FC8eAFecDcbF96A2B351680455#code), [0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728](https://etherscan.io/address/0x7d657Ddcf7e2A5fD118dC8A6dDc3dC308AdC2728#code) (Implementation (Upgradable)), [0xC5b735d05c26579B701Be9bED253Bb588503B26B](https://etherscan.io/address/0xC5b735d05c26579B701Be9bED253Bb588503B26B#code) (Admin) Main Rollup contract (immutable) responsible for withdrawals and accepting transaction batches alongside a ZK proof. #### AztecFeeDistributor Addresses: [0x4cf32670a53657596E641DFCC6d40f01e4d64927](https://etherscan.io/address/0x4cf32670a53657596E641DFCC6d40f01e4d64927#code) Contract responsible for distributing fees and reimbursing gas to Rollup Providers. #### DefiBridgeProxy Addresses: [0xA1BBa894a6D39D79C0D1ef9c68a2139c84B81487](https://etherscan.io/address/0xA1BBa894a6D39D79C0D1ef9c68a2139c84B81487#code) Bridge Connector to various DeFi Bridges. #### Verifier28x32 Addresses: [0xb7baA1420f88b7758E341c93463426A2b7651CFB](https://etherscan.io/address/0xb7baA1420f88b7758E341c93463426A2b7651CFB#code) Standard Plonk zkSNARK Verifier.