zerocash)更为相近,类似的Key结构,类似的Note结构,类似的称呼。本文是基于Zcash最新的论文和Aleo的ZEXE做的比较,虽然在具体的细节上有所不同,比如Key结构,具体使用的密码学方法;但是在high-level的设计上大体相同。
除了前面所讲述的技术细节外,仍然存在一些其他的技术细节暂未涉及,比如delegateprover方案,零知识证明算法,递归/聚合方案等,有兴趣的同学可继续研究。
1.关于Zcash?
一个简短的视频了解Zcash,大概需要2分钟。
https://zcash.readthedocs.io/en/latest/rtd_pages/basics.html
特点:
?匿名版的BTC,类UTXO模型
?只能做支付场景,不具备可编程性
协议升级,我们只关注最新版本。主要介绍Zcash里的各个核心概念。
Zcashprotocolspecification:section3.1,page12)
你可以在Zcashprotocolspecification:section4.2.3,page36了解这些Key的计算方式。
Zcashprotocolspecification:section3.2,page14)
在Zcash的协议中,因为隐私的需求,note是不能公开的,因此,需要计算对应的commitment来代表这个note,计算方式如下:
Zcashprotocolspecification:section3.2,page15)
Zcashprotocolspecification:section4.6,page41)
隐私输入是:
证明statement为:
Zcashprotocolspecification:section4.17.1,page40)
???花费的note的完整性,和noteplaint唯一绑定
???花费的note的有效性,cmtree的存在性证明
???Value承诺的完整性,和rcv,oldvalue,newvalue唯一绑定
???Nullifier的完整性,防止doublespend,维护一个花费的noteset
???花费的note的合法性
???地址的完整性
???新note的完整性
???flag的合法性
Zcashprotocolspecification:section7.1,page119)
整个交易结构包含四个部分:
???Publicinfo(1-5)
???Transparenttransactionsinfo(6-9)
???Saplingtransactionsinfo(10-16)
???Orchardtransactioninfo(17-25)
2.5.2从?transparent到?shield
Orchard协议里包含两种地址,transparentaddress(TA)和shieldaddress(SA)。一般,为了执行隐私交易,需要先从TA往SA转账,此时对应的交易结构应为:
??Publicinfo(1-5)
??Transparenttransactionsinfo(6-9)
ⅰ.tx_in_*:实际值
ⅱ.tx_out_*:默认值
??Saplingtransactionsinfo(10-16)
ⅰ.All:默认值
??Orchardtransactioninfo(17-25)
ⅰ.??All:实际值
2.5.3从?shield到?shield
Orchard协议里包含两种地址,transparentaddress(TA)和shieldaddress(SA)。一般,为了执行隐私交易,需要先从TA往SA转账,此时对应的交易结构应为:
??Publicinfo(1-5)
??Transparenttransactionsinfo(6-9)
ⅰ.?All:默认值
??Saplingtransactionsinfo(10-16)
ⅰ.?All:默认值
??Orchardtransactioninfo(17-25)
ⅰ.?All:实际值
2.5.4从?shield到?transparent
Orchard协议里包含两种地址,transparentaddress(TA)和shieldaddress(SA)。一般,为了执行隐私交易,需要先从TA往SA转账,此时对应的交易结构应为:
??Publicinfo(1-5)
??Transparenttransactionsinfo(6-9)
ⅰ.?tx_in_*:默认值
ⅱ.?tx_out_*:实际值
??Saplingtransactionsinfo(10-16)
ⅰ.?All:默认值
??Orchardtransactioninfo(17-25)
ⅰ.?All:实际值
??Unlinkable
生成的note用cm表示,花费的note用nf表示,nf和cm之间无任何联系,因此,任何人都无法通过这些信息去判断任何一个被生成的note是在哪一笔交易里被花费的。
??Private
ⅰ.?Senderaddress:
交易信息里不包含sender地址且spendAuthSig为一次性签名。
ⅱ.?Receiveraddress:
交易里不包含receiver的地址且新的Noteplaint用的是recevier的公钥加密。
ⅲ.Value:
用pedersencommitment形式隐藏Note,且通过bindsig来保证交易的balance属性。
1.和Zcash的异同
Zcash只能执行基于OUTX模型的隐私交易,不具备可编程性;因此,Aleo和Zcash最主要的区别是隐私可编程性;相同点是都支持隐私属性。
2.1Unit
和Zcash的note不同,Aleo里的基本操作单元是record,下面让我们看一下两者的主要区别:
Zcashprotocolspecification:section3.2,page14)
Zexeprotocolspecification:section3.1,page17)
虽然具体参数名称不相同,但是从功能角度来看,两者之间具有对应关系:
分别对应note拥有者的地址信息,承诺相关信息,nf/sn相关信息,value相关信息。
所以,两者结构基本类似;主要的区别在于record里的birthpredicate,deathpredicate。这是两个Boolean类型的函数,代表着,当一个record在birth(generate)和death(spend)阶段,分别需要满足的条件,这一块是支持user-defined,因此具有可编程性。
Zexeprotocolspecification:section3.1,page17)
和Zcash(2.5.1)的交易主要结构相比,仍然相似:
??消费的record对应的序列号sn,在Zcash里用nf表示,都是具有全局唯一性。
?新生成的record对应的承诺。
?新生成record的plaint,包括拥有者信息,对应的birth/deathpredicate等。
Zexeprotocolspecification:section2.4,page13)
需要证明:
??Oldrecord的有效性
??Oldrecord的合法性
??Newrecord的有效性
??Birth/Deathpredicate的有效性
3.1为什么都是utox-based,不是account-based?
Remark2.3
https://zips.z.cash/protocol/protocol.pdf
2.(Aleo)Zexeprotocolspecification:
https://eprint.iacr.org/2018/962.pdf
3.协议升级:https://z.cash/upgrade/
4.zerocash:https://eprint.iacr.org/2014/349.pdf
关于我们
Sin7y成立于2021年,由顶尖的区块链开发者组成。我们既是项目孵化器也是区块链技术研究团队,探索EVM、Layer2、跨链、隐私计算、自主支付解决方案等最重要和最前沿的技术。
微信公众号:Sin7Y
GitHub?|?Twitter?|?Telegram?|?Medium|?Mirror?|?HackMD?|?HackerNoon
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。