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/
网友评论