1. 引言
Aztec zkRollup为混合zkRollup:
- 支持通用私有计算的加密zkRollup(命名为Aztec):构建trustless、可扩展的、去中心化的Layer2 zkRollup,同时支持private smart contract execution。
- 同时支持public state和private state。
- private state:是指归具有解密密钥的用户或group所有的 加密数据。存储在append-onl数据库中(可防止record updates以保护隐私)。
- 非zkEVM:因privacy isn’t EVM compatible。
Aztec Hybrid Rollup的原理示意图为:
为创建privacy centric dapps,Aztec的Private Smart Contracts将使用:
- Secret Functions:管理private state,并与public state、L1 messages以及Ethereum交互。
- Public Functions:管理public state,并与L1 messages以及Ethereum交互。
- Portal Contracts:在L1和L2之间bridge messages。
Aztec的L1-L2通讯使用portals和message boxes来传递message。从而可 以“pull”模式,支持L2 private与L1 public contracts之间的交互的同时,保持了隐私以及最小化的rollup-block size。
不同于由sender直接将message发送给receiver的“push”模式,"pull"模式中,messages存储于指定的区域(message box),接收方需要的时候可从该区域“pull”或retrieves messages。
- Aztec Kernel:管理函数调用的kernel circuits。具有private kernel circuits以及public kernel circuits,对应特定类型的函数调用。
- Txns arebuilt by generating proofs for multiple recursive iterations of kernel circuits. Private proofs precede public ones
- txn is complete when both call stacks are empty
Aztec Hybrid Rollup中,Private functions的执行优先级要高于 Public functions:
- Private functions可单方面调用Public functions,反之则不可以。
- Txn order:private(historic data),then public(current state)。
- 用户创建kernel proofs,Sequencers管理public state。
- Public functions modify private storage,反之则不可以。
Aztec Hybrid Rollup的programmable privacy主要依赖于3大电路类型:
- 1)Private Kernel Circuit:由用户执行,通过使用zk来验签、隐藏地址、验证Noir Contract proofs、管理private state 以 确保隐私性。
- 2)Public Kernel Circuit:由知悉public data tree的Sequencers运行。会forwards data、验证之前的kernel proofs、强化function execution rules。
- 3)Rollup Circuits:包括Base circuits、Merge circuits和Root circuits。将交易压缩为单一SNARK,支持高效以太坊验证和并行化证明生成。
其中Connect为Aztec已实现的协议,采用了encrypted UTXO架构,以notes来表示money(value of token)。详细可参看博客:
- Proof Compression
- Aztec Connect即将主网上线
- Aztec connect bridge代码解析
在Aztec Hybrid Rollup中,采用了与Connect类似的架构设计,不同之处在于:
- UTXO不仅代表了“the value of a token”
- UTXO还代表了任意data,当前UTXO可存储整个智能合约。
Aztec Hybrid Rollup中采用UTXO模式来表示和管理txn,并使用UTXO模型来管理private state variables,使用nullifiers来做delete操作,使用record replacement来做modification。
Connect仅支持3中custom-built circuits,而Aztec zkRollup支持任意智能合约逻辑,且同时支持public state和private state。这意味着开发者可访问整个以太坊用例,以及所有新的支持加密的应用。
Connect设计为仅限于DeFi,而Aztec zkRollup不受限。
Aztec zkRollup可用于:
- Private voting for public DAOs
- Private sessions of public games
- Private trades on public AMM’s
当前处于Milestone 1.0阶段。
附录 Noir
Noir为用户和开发者简化了UTXO,使得可用户友好的方式来访问和与private state交互。
Noir将底层circuit进行了抽象,为开发者提供了便利和灵活性,其底层可根据开发需要支持多种不同的ZKP证明系统。
Noir为Aztec Labs主导开发的zero knowledge开发语言,致力于:
- LLVM for zkSNARKs。这意味着Solana和Cosmos等都可借助Noir集成ZK proofs。
参考资料
[1] Aztec团队2023年5月4日博客 Aztec: the Hybrid zkRollup
[2] 2023年5月6日twitter
[3] 2023年5月5日twitter