Jellyfish密码学库

1. 引言

Jellyfish为Espresso团队开源的密码学库,采用MIT license
开源代码见:

Jellyfish是一个密码学工具套件,实现了多种密码学原语,如:

  • 哈希函数
  • 累加器
  • 零知识证明系统ZKP

根据性能测试,Jellyfish中所实现的PLONK证明系统,是目前已开源的PLONK实现中性能最完备、速度最快的。

目前Jellyfish已用于:

  • Espresso的扩容和隐私链的基础设施
  • Configurable Asset Privacy for Ethereum(CAPE)

2. Jellyfish库成员

Jellyfish库中实现了一些关键的密码学原语,如:

  • 1)PLONK:zk-SNARK with universal setup
  • 2)基于Rescue的哈希函数、伪随机函数(PRF)和承诺,为ZKP的理想arithmetization-frienldly cipher。
  • 3)Merkle tree accumulators。
  • 4)Schnorr签名
  • 5)ElGamal公钥加密
  • 6)AEAD对称认证加密

3. Jellyfish中的PLONK

Jellyfish中实现了Gabizon等人2019年论文PLONK。尽管PLONK仍需trusted setup,但其使用了universal and updatable trusted setup procedure:

  • “universal”是指:对所有程序,仅需要一次trusted setup。而不需要为每个程序做一次trusted setup。
  • “updatable”是指:其trusted setup可由新参与方持续进行更新——只要有一个参与者是honest的,则整个证明系统都是安全的。

Jellyfish在实现PLONK过程中,做了多处关键优化:

  • 1)采用高效的Rescue hash circuit:单个3-to-1 hash gadget(over BLS12-381 scalar field),需148个PLONK约束。
  • 2)实现了Plookup:支持高效的lookup gates和range-check gates。
  • 3)优化了PLONK verifier circuit:
    • 3.1)(验证单个PLONK proof)的PLONK verifier gadget仅需约22000个PLONK约束。
  • 4)实现了高效的椭圆曲线运算circuit:
    • 4.1)如,椭圆曲线addition/doubling circuit仅需2个PLONK约束。
    • 4.2)如,具有128个base points和256-bit scalars的variable-base multi-scalar multiplication gadget仅需约36000个PLONK约束,相比于naive circuit size,要小8倍之多。
  • 5)实现了高效的modular multiplication circuit(即,约束 a + b = c m o d    N a+b=c\mod N a+b=cmodN a ∗ b = c m o d    N a*b=c\mod N ab=cmodN,其中 N N N为不同于circuit field size的参数值):
    • 5.1)对于384-bit cricuit field,modular multiplication gadget with 256-bit modulus仅需约20个PLONK约束。
  • 6)实现了多种密码学原语circuit,如:Merkle tree circuit、Schnorr签名circuit、ElGamal加密circuit、PRF circuit、承诺circuit等。

同时,在Jellyfish的PLONK证明系统中:

  • 1)集成了Plookup arguments
  • 2)支持batch prove,即,可为多个SNARK instances生成单个(更大的)PLONK proof。
  • 3)支持PLONK proving/verification key merging和circuit merging:
    • 可将SNARK instance A A A的proving key/verification key/circuit 与 SNARK B B B的进行合并,获得instance A ∧ B A\wedge B AB(即A与B结合)的proving key/verification key/circuit。

Jellyfish PLONK为通用实现,支持不同的prime fields和椭圆曲线。

参考资料

[1] Releasing the Jellyfish cryptography library
[2] Introducing Espresso Systems

附录A. Espresso Sytems简介

Espresso Sytems当前:

  • 1)正在开发Espresso链:为Layer 1链,采用PoS共识,以及ZK-Rollup机制来实现高吞吐量和低手续费。
  • 2)开发了Configurable Asset Privacy for Ethereum(CAPE):可运行在任何EVM链上的应用,最终也将原生运行在Espresso链。CAPE可为用户提供自定义隐私保护。

附录A.1 去中心化ZK-Rollups

Espresso扩容方案中,将EVM的ZK-Rollup 与 去中心化PoS(Proof-of-Stake)共识协议做了结合。
ZK-Rollup作为扩容技术,通常作为现有共识协议的Layer 2。某server将大量交易聚合为一个汇总交易,然后生成一个简洁零知识证明来证明这些交易的有效性,后续该证明将发送到共识系统。rollup proof会同时压缩共识协议验证交易所需的信息量和计算量,从而提升吞吐量。当前以太坊开发中的多个rollup解决方案,其设计空间都有一个警告:数据可用性问题。用户需要数据来构建新的交易。而零知识证明在传达交易有效性的同时,并不会泄露其原始数据内容,从而无法提供构建未来交易所需的可用数据。为解决该问题,现有rollups:

  • 要么 在汇总交易中包含原始交易数据 一起发送到共识系统,
  • 要么 使用中心化数据可用性委员会来签署其所看到的数据。

这2个方案都不够理想:第一个方案压缩量有限,从而限制了扩容上限;第二个方案破坏了去中心化。

理想的方案应为:保证去中心化数据可用性的同时,使吞吐量尽可能大。Espresso Systems,正在开发相应的解决方案:

  • 将PoS共识协议与ZK-Rollup扩容机制结合。

即Espresso ZK-Rollup与共识原生集成,无需将其看成是黑盒,从而可避免将rollup看成是独立于底层共识协议的独立模块。

附录A.2 Configurable Asset Privacy on Ethereum

CAPE (Configurable Asset Privacy for Ethereum) 为Espresso Systems开发的智能合约应用,是支持数字资产创建者配置谁能看到其mint token的活动信息。

CAPE上的数字资产,可为稳定币或NFT,可自定义balance透明度,为用户可自定义隐私属性的Web3产品。对于正常viewers来说,CAPE交易是你们的,看起来与普通交易一样不可区分,可隐藏所交易资产的类型。资产的creator可配置a viewing poly,从而确保选中的人可解密相关资产的指定交易。

CAPE可用于创建新资产,或wrap以太坊上现有资产,为其提供隐私属性。用CAPE来wrap某ERC-20需要指定wrapper type,即配置谁能看到什么,以及谁能维护该资产的特定控制。Wrapping可锁定ERC-20合约的资产,并创建相应指定类型的CAPE资产,而unwrapping会burn CAPE资产并解锁相应的ERC-20合约资产。

任何人都可使用CAPE来创建或wrap资产,该协议也支持stablecoin providers的诉求。stablecoin providers通常希望有途径来解决欺诈、盗窃和争议,以维护对资产账本活动的洞察力以及类似冻结的控制力。在CAPE之前,没有相应的解决方案——为资产创建者提供隐私视角的同时满足可见性和争议处理能力。借助CAPE的viewing policy和freezing policy,这些皆可实现,同时相应的用户也可控制其数据和交易的可见性。

CAPE开源代码见:

CAPE可运行在任意EVM链上。将部署在以太坊Rinkeby测试网,未来将迁移到Espresso,并通过一个token bridge与以太坊资产进行交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值