Aztec 介绍

CYC
Nov 23, 2021

Aztec 是以太坊的隐私引擎,⽀持通过公共主⽹进⾏加密交易。该协议利⽤零知识证明来加密和隐藏在Aztec 上的交易。作为区块链隐私中间件,Aztec和前⽂所介绍的Aleo有不少共同点。不过Aleo做出的是集成开发环境(IDE),⽽Aztec做的是软件开发⼯具包(SDK)。

Aztec核⼼部分

这部分将介绍有关Aztec 的⼀些关键内容,包括其所使⽤的账⼾模型,加⼊分割证明,核⼼智能合约,以及标准交易流程等。关于Aztec 最核⼼的零知识证明选择与版本⽅⾯,将放开下⼀⼩节介绍。

账⼾模型

Aztec 使⽤类似于⽐特币的 UTXO 模型,其中 UTXO 被称为票据(notes)。这些票据是Aztec系统中加密值的基本表示。

加⼊分割交易(JoinSplit)

票据可以被转移并因此以加密⽅式发送交易的基本机制是通过 JoinSplit 证明。这是Aztec 允许以加密⽅式发送交易的基本构建块。在 JoinSplit 证明中,提供特定票据作为输⼊,⽽提供某些票据作为输出。输⼊票据是正在转移的交易额,这些票据将在证明验证成功后销毁并从系统中删除。将创建输出票据并将其所有权授予所需的以太坊地址。

示例:

Fig. 1: 加⼊分割交易⽰例(AZTEC Docs)

Alice 希望加密交易给 Bob 75 zkDAI。她从 2 个票据开始,其价值总和为100 zkDAI,⽽ Bob 开始时没有票据也没有 zkDAI。

为了转移,Alice 构建了⼀个 joinSplit 证明,其中她提供了 60 和 40 个 zkDAI 票据作为输⼊。她创建了两个输出票据,⼀个价值 75 zkDAI 给 Bob,另⼀个价值 25 zkDAI 给她⾃⼰。重要的是要注意 joinSplit 证明只有在总输⼊等于总输出时才能成功验证 — 这对于防⽌双重⽀付⾄关重要。

⼀旦证明在链上得到验证,输⼊票据将被销毁并且输出票据被创建。这样,Alice 就转移了 Bob 75 zkDAI。

在该协议中,票据存储在资产票据注册表中的链上,⽤⼾的余额等于⽤⼾票据的总和。

核⼼智能合约

Aztec 的核⼼智能合约有三块:

1. AZTEC 密码引擎 (ACE): ACE 可以被认为是 Aztec 智能合约系统的“⼤脑”,它是协调智能合约。具体来说,ACE 有两个主要职责:

  • 将 zk 证明的验证委托给适当的智能合约;
  • 从成功验证的证明中处理状态更新指令;

2. 证明验证器:每个零知识证明都有⼀个证明验证器合约。验证者有责任验证提供的证据,从⽽确认提议⾏动的合法性。

3. zkAsset:可以被认为是 ERC20 合约的机密版本,例如 zkDAI。它们⽤于将⽤⼾的资⾦存储在票 据注册表中并执⾏机密交易。

标准交易流程

使⽤ AZTEC 的标准流程包括 4 个关键阶段:

  • (本地)证明构造:构造证明交易正确性的 zk 证明。这发⽣在本地,通常在浏览器中
  • (本地)连接到以太坊区块链:发送所需的交易,调⽤ ZkAsset 具有适当证明数据的⽅法
  • (链上)验证证明:验证证明是正确有效的
  • (链上)执⾏相关逻辑:⼀旦证明被验证,执⾏相关逻辑

Aztec的零知识证明

想要了解Aztec 的零知识证明版本选取,我们⾸先需要知道有哪些零知识证明。

零知识证明

⾸先我们回顾⼀下前⽂介绍中,我们提起过的SNARK, STARK, DARK 和 Bulletproofs。这⾥有⼀个较为直观的⽐较图(⻅下)。

Fig. 2: 零知识证明⽐较(Understanding PLONK)

就图上⽽⾔,很难说有什么零知识证明是完美的,SNARK的证明最⼩,但是安全性也最差,PLONK和 DARK⽐较折中,但是PLONK仍然需要信任第三⽅,STARK最安全但是需要的证明gas费也最贵。那么Aztec使⽤的是哪种零知识证明呢,我们通过两个版本的⽩⽪书分开介绍。

⽩⽪书V1

最初的版本(2018)中,Aztec 使⽤的是椭圆曲线配对,也就是SNARK的版本,但是因为⼀些技术原因,当时的验证零知识交易的gas费⾼达840,000。

⽩⽪书V2

⽬前的版本(2021.09)中,Aztec 改进了PLONK中的⼀些参数,使⽤的是PLONK和SNARK的改进糅合版本。据称验证零知识gas费可被优化⾄3,000–5,000。想要简单了解PLONK的读者可⾃⾏翻阅 [1]和[2]。

⼩结

⽬前区块链隐私⽅⾯的中间件还尚未成熟,和Aleo⼀样,Aztec也是值得期待的项⽬。相较于Aleo, Aztec 有优有劣,但总的来说都仍未达到笔者的预期。⽬前⽽⾔, Aztec虽也着眼于理论,仍是对现有SNARK进⾏修修补补。希望在接下来的数年⾥零知识证明能在理论这块有更⼤的突破,开创出⽆须信任第三⽅且证明⼤⼩较⼩的版本。

参考⽂献:

1. Aztec⽩⽪书v1:

https://github.com/AztecProtocol/AZTEC/blob/master/AZTEC.pdf

2. Aztec⽩⽪书v2:

https://eprint.iacr.org/2019/953.pdf

3. Aztec官⽹:Aztec

4. Plonk介绍:https://hackmd.io/Iuu9P7S5Sca0TCoYJ-sFdA

5. Aleo: Aleo介绍

6. 零知识:Rollup 学习笔记

--

--

CYC

Distributed blockchain research institution. Focusing on underlying technology research and practice. Support us: http://giveth.io/project/cyc