Aleo 是一个专注于隐私保护的区块链项目,通过零知识证明技术(ZKP)实现更高的隐私和可扩展性。Aleo 的核心理念是让用户能够在不泄露个人数据的前提下进行身份验证和数据处理。
本文主要介绍了 Aleo 的项目概要及最新进展,对市场十分关心的 puzzle 算法更新做了详细的解读。
最新算法抢先看 ;)TLDR
Aleo 网络每小时随机生成一个ZK电路;矿工在这一小时内需要尝试不同的 nonce 作为电路的输入,计算出 witness(即电路中的所有变量,这个计算过程也叫 synthesize),对 witness 求 Merkle root 后,判断是否满足挖矿难度要求。由于电路的随机性,这个挖矿算法对 GPU 并不友好,在计算加速方面存在很大的难度。
融资背景
Aleo 于 2021 年完成了由 a16z 领投的 2800 万美元的 A 轮融资,并在 2024 年完成了 2 亿美元的 B 轮融资,投资方包括 Kora Management、SoftBank Vision Fund 2、Tiger Global、Sea Capital、Slow Ventures 和 Samsung Next 等。这轮融资使 Aleo 的估值达到了 14.5 亿美元。
项目概要
隐私性
Aleo 的核心是零知识证明(ZKPs)技术,这使得交易和智能合约的执行可以在保持隐私的前提下进行。用户的交易细节,如发送方和交易金额,默认情况下是隐藏的。这种设计不仅保护了用户隐私,还允许在必要时进行选择性披露,非常适合 DeFi 应用的发展。其主要组件包括:
-
Leo 编译语言:基于 Rust 语言改编,专门用于开发零知识应用(ZKApps),降低了开发者对密码学知识的要求。
-
snarkVM 和 snarkOS:snarkVM 允许链下执行计算,链上仅验证计算结果,从而提升了效率。snarkOS 确保数据和计算的安全,并允许无许可的功能执行。
-
zkCloud:提供安全、私密的链下计算环境,支持用户、组织和 DAO 之间的编程交互。
Aleo 还提供了集成开发环境(IDE)和软件开发工具包(SDK),支持开发者快速编写和发布应用;此外,开发者可以在 Aleo 的程序注册表中部署应用,无需依赖第三方,如此便降低了平台风险。
可扩展性
Aleo 采用了 off-chain 的处理方式,交易首先在用户设备上计算证明,然后仅将验证结果上传到区块链。这种方式大大提高了交易的处理速度和系统的可扩展性,避免了类似以太坊的网络拥堵和高昂的费用。
共识机制
Aleo 引入了 AleoBFT,这是一种混合架构的共识机制,结合了验证者的即时最终性和证明者的计算能力。AleoBFT 不仅提高了网络的去中心化程度,还增强了性能和安全性。
-
区块快速最终性:AleoBFT 确保每个区块在生成后立即得到确认,提升了节点稳定性和用户体验。
-
去中心化保障:通过将区块生产与 coinbase 生成分离,验证者负责生成区块,证明者进行证明计算,防止少数实体垄断网络。
-
激励机制:验证者和证明者共享区块奖励;鼓励证明者通过质押代币成为验证者,从而提升网络的去中心化程度和计算能力。
Aleo 允许开发者创建不受 gas 限制的应用程序,因此尤其适用于机器学习等需要长时间运行的应用。
当前进展
Aleo 将于 7月1日启动激励测试网,以下是一些重要的最新信息:
-
ARC-100 投票通过:ARC-100(“Aleo 开发人员和运营商的合规最佳实践”提案,涉及合规方面、Aleo 网络上资金的锁定和延时到帐等安全措施) 的投票已经结束,并获得通过。团队正在进行最终的调整。
-
验证者激励计划:该计划将于 7 月 1 日启动,旨在验证新的 puzzle 机制。计划将运行至 7 月 15 日,期间将分配 100 万 Aleo 积分作为奖励。节点生成的积分百分比将决定其奖励份额,每个验证者至少需赚取 100 代币才能获得奖励。具体细则尚未敲定。
-
初始供应和流通供应:初始供应量为 15 亿代币,初始流通供应量约为 10%(尚未最终确定)。这些代币主要来自 Coinbase 任务(7500 万),将在前六个月内分发,同时包括质押、运行验证者和验证节点的奖励。
-
Testnet Beta 重置:这是最后一次网络重置,完成后将不会添加新功能,网络将与主网类似。重置是为了添加 ARC-41 和新 puzzle 功能。
-
代码冻结:代码冻结已于一周前完成。
-
验证节点扩展计划:初始验证节点数量为 15 个,目标是在年内增加到 50 个,并最终达到 500 个。成为委托者需要 1 万代币,成为验证者需要 1000 万代币,这些数额将随着时间逐渐减少。
算法更新解读
Aleo 于近日公布最新测试网消息的同时,更新了最新版本的 puzzle 算法,新算法不再着重于 zk proof 结果的生成,移除了 MSM 和 NTT (二者是 zk 中生成 proof 大量使用到的计算模块,之前测试网参与者以优化该算法的效率来提升挖矿收益)的计算,着重于产生 proof 之前的中间数据 witness 的生成。我们在参考官方的 puzzle spec 和代码后,对最新算法做一个简单介绍。
共识流程
共识协议层面上,其流程中 prover 和 validator 分别负责产生计算结果 solution 和出块并聚合打包 solution。流程如下:
-
Prover 计算 puzzle 构建出 solutions 并广播到网络中
-
Validator 聚合交易和 solution 为下一个新区块,保证 solution 数量不超出共识限制(MAX_SOLUTIONS)
-
Solution 的合法性需要校验其 epoch_hash 符合 validator 维护的 latest_epoch_hash,其计算出的proof_target 符合网络中 valiator 维护的latest_proof_target,同时该 block 中包含的 solution 数量小于共识限制
-
有效的 solution 可以获得共识奖励
Synthesis Puzzle
最新版的算法核心称为 Synthesis Puzzle,其核心是针对每个 epoch 固定产生一个共同的 EpochProgram,通过为输入和 EpochProgram 构建 R1CS 证明电路,产生对应 R1CS assignment (即大家提到的 witness)并作为 Merkle tree 的叶子节点,计算出所有叶子节点后生成 Merkle root 并转换为 solution 的 proof_target。构建 Synthesis Puzzle 的详细流程和规范如下:
-
每一次 puzzle 计算称为 nonce,它是由接收挖矿奖励的地址、epoch_hash 和 一个随机数 counter 构建,每次需要计算新的 solution 时可以通过更新 counter 获得新的 nonce
-
每一个 epoch 中,网络中所有 prover 需要计算的 EpochProgram 是同一个,它由当前的 epoch_hash 产生的随机数从指令集中抽样出来,抽样逻辑是:
- 指令集是固定的,每一个指令(instruction)包含一个或多个计算操作,每一个指令有一个预设的权重和操作计数
- 抽样时根据当前 epoch_hash 生成随机数,根据该随机数从指令集中结合权重获取指令并顺序排列,累积操作计数到 97 之后停止抽样
- 将所有指令组成 EpochProgram
-
使用 nonce 作为随机数种子生成 EpochProgram 的输入
-
聚合 EpochProgram 对应的 R1CS 和 input,进行 witness (R1CS assignment) 计算
-
计算出所有 witness 后,这些 witness 将被转换为对应的 merkle tree 的叶子节点序列,merkle tree 是一个深度为 8 的 8 元 K-ary Merkle tree
-
计算 merkle root 并将其转换为 solution 的 proof_target,判断其是否满足当前 epoch 的 latest_proof_target,若满足则计算成功,提交上文中构建输入需要的 reward address、epoch_hash 和 counter 作为 solution 并广播
-
同一个 epoch 中可通过迭代 counter 的方式更新 EpochProgram 的输入进行多次 solution 计算
挖矿的变化和影响
经过此次更新后,puzzle 由生成 proof 转变为生成 witness,每一个 epoch 内的所有 solution 计算逻辑一致但是不同 epoch 计算逻辑有较大区别。
从之前的测试网中我们可以发现很多优化手段着重于使用 GPU 对生成 proof 阶段的 MSM 和 NTT 计算进行优化从而提高挖矿效率,此次更新完全摒弃了这部分计算;同时由于生成 witness 的过程产生于执行一个跟随 epoch 变化的 program,其中的指令将存在部分串行执行的依赖关系,所以实现并行化具有不小的挑战。