Aleo电路和GPU性能加速

Aleo 是一个用于构建隐私应用程序的平台。为此,Aleo 总共使用了四个电路和两个零知识算法(Groth16/Marlin)。本文试图从电路的角度来解释Aleo的设计。此外,这些电路的证明性能可以使用GPU加速,实测PoSW 电路的性能可以提高4倍以上。

四个电路

Aleo 用了四种电路来实现隐私应用 - PoSW circuit,Inner circuit,Outer circuit,以及 Program circuit。这些电路组织在一起,使 Aleo 支持隐私特性。

Aleo的四种电路总结
Aleo的四种电路总结

为了保持交易的匿名性,对发送方/接收方的信息和交易信息进行了加密。一个Transaction由若干个Transition组成。 一个Transition是由两个输入Record和两个输出Record组成的元组。Record 是"基础"的transition信息,包括owner, value, payload, program ID等。 请记住,一个Record是加密后的数据,只能通过"viewing key"解密。利用Inner电路,Program电路, Outer电路来约束一个Transition, 从而确保这个transition是正确的。

  • Inner 电路

Inner circuit 用于约束两个输入Record的值等于输出Record的值加上Transition fee。Inner circuit 采用 groth16算法。

  • Program 电路

Transition 可以是不同的操作, 比如Noop,Coinbase,Transfer 和 Evaluate。没有操作使用 Noop 。 区块奖励使用Coinbase 。 转帐使用 Transfer。Evaluation带来了可编程性。 在指定程序电路约束下, 在一个转换中, 两个输入Record被指定的程序“消耗”。 两个输出Record被指定的程序电路“生成”。 Program circuit采用 groth16算法。

  • Outer 电路

如上所述,对于一个转换,有两个电路。也就是说,一个转换有两个证明。Outer 电路帮助将这两个证明合并成一个。 Outer 电路是用来验证 Inner circuit的证明,以及 Program circuit的证明。Outer circuit采用groth16算法。

  • PoSW 电路

Aleo 使用“ PoSW”共识算法。 PoSW - 简洁的工作量证明。区块头由上一个区块的 Ledger root,当前区块的Transactions root, Metadata, 和一个Nonce组成。 Metadata包括区块高度,难度等信息。PoSW circuit 尝试计算一个“masked” Merkle tree, 其中Nonce 是 mask。如果指定难度的证明被发现, 那么矿工可以创建区块。 顺便说一下, Aleo 的Ledger root不是账户的 Merkle root , 而是所有区块头的 Merkle root。PoSW Circuit采用Marlin算法。

GPU证明性能加速

GPU 可以加速上述所有电路的证明性能。性能是在 CPU (Intel Xeon Gold 6254)和 GPU (Nvidia RTX 3090)上测试的。 注意,Program Circuit的证明性能依赖于程序本身, Program电路没有被测试和总结到表中。

post image

总结:

Aleo 是一个用于构建隐私应用程序的平台。Aleo 使用四个电路来保持所有交易信息的隐私。PoSW 电路被用于共识。所有电路的证明性能都可以通过 GPU 加速。采用Nvidia RTX 3090, PoSW 电路证明性能可以加快四倍以上。