Zcash 计划于 2021 年 10 月 1 日发布 迭代产品套件 Halo Arc,包括对 Zcashd (Zcash 共识节点)、ECC Reference Wallet 应用以及 ECC 钱包 SDK 的更新,并将涵盖 Zcash 即将进行的两项改进,包括 Zcash 网络升级 5 (NU5,预计激活日期也为 2021 年 10 月 1 日)和统一地址(unified addresses),其中,Zcash 网络升级 5 实现Orchard匿名协议,将 Zcash 从 zk-SNARKs 迁移到免除信任初始设置的 Halo 2证明系统中;统一地址是一项补充功能,引入了一种优先采取屏蔽模式(shielded adoption)的未来证明(future-proof)地址格式。
Orchard匿名协议
Orchard匿名协议用新的密钥和地址定义新的匿名池(shielded pool),方便实现未来的规模性提升。
Zcash目前存在两个匿名协议和匿名池。
- Sprout 匿名协议,匿名池于2021年2月关闭。
- Sapling匿名协议,相比Sprout, 大幅提升了功能和性能,目前仍然运行。
但这个两个协议依然存在两个问题:
-
无法兼容递归证明(需要利用椭圆曲线对),阻碍了可扩展性提升;
-
采用Groth16, 需要可信设置,使用不便。
Orchard协议使用椭圆曲线对,采用Halo2证明系统实现递归,并且不需要可信设置。
曲线
Orchard协议使用Pallas/Vesta 椭圆曲线对,代替BLS12-381 和 Jubjub曲线。Pallas 为应用层曲线, Vesta曲线为电路曲线,即Vesta 标量域为Pallas基域。
将采用simplified SWU算法定义GroupHash实现,代替原先易错的 BLAKE2s机制 。
证明系统
Orchard使用Halo 2证明系统,采用UPA(UltraPlonk)算术化过程,代替Groth16和R1CS。
Orchard协议尚未使用Halo 2递归证明,将在未来的协议升级中利用。
电路
Orchard使用一个电路实现所有的输入(spends)和输出 (outputs)。单个action包括一个花掉的note和一个新建的note。
一个Orchard交易可以打包多个actions, 采用一个halo2 证明。
承诺
Orchard协议采用UPA高效的 Sinsemilla代替原先的非同态承诺。
承诺树
Orchard采用和sapling类似的承诺树,只是采用Sinsemilla代替原先的Pedersen hash。
密钥和地址
密钥和地址和Sapling类似,有如下改动:
- 证明授权密钥(
ak,nsk)被移除,nk为域中元素; -
ivk采用Sinsemilla承诺计算; -
ovk由fvk派生,不再是sk的组件; - 所有的
diversifier都可以生成有效的支付地址。
密钥和地址采用Bech32编码,主网上的地址带有前缀zo (Sprout地址前缀为zc, Sapling 地址前缀为zs)。
Orchard密钥采用分层派生(HD)的方式。
Note
Note 结构为,
用于生成nullifier,
和
由随机种子派生。
Nullifier
Nullifier计算方式为:
采用Poseiden 哈希函数,
为固定的基点。
签名
Orchard使用RedPallas 代替原先的RedJubjub 方案。
统一地址
统一地址(unified address, UA)是未来证明(future-proof)的地址格式,可以提升可用性,互操作性,默认支持匿名。
背景
由于Zcash协议一直在迭代升级,出现多种地址类型。采用UA可以提升用户体验,支持自动匿名化。
UA也可促进Zcash网络的迭代升级,推进Layer 2, Defi应用的互操作性。
UA
统一地址由多个Zcash地址类型生成(transparent, Sapling, Orchard), 可以方便用户将资金移到最新的匿名池中,实现自动迁移和自动匿名。
统一地址兼容Zcash所有的资金池(transparent和shielded),当从透明地址转入的时候,能自动转入匿名池中。
参考
https://electriccoin.co/blog/halo-arc-for-zcash-proposed-for-release-later-this-year/
https://github.com/zcash/halo2
https://github.com/zcash/orchard
https://electriccoin.co/blog/unified-addresses-in-zcash-explained/






网友评论