编者按:本文来自橙皮书,作者:安比实验室创始人郭宇,星球日报经授权发布。假如我们现在要做一笔交易,我想把自己的数据卖给你,怎样交易才是最安全的?显然这里会有两个问题:1、因为我卖的是数据,肯定不能直接给你,否则你得到数据后直接跑了怎么办?2、但我肯定也不能先拿你的钱,因为可能我给你的数据是不符合你要求的,或者我拿了钱之后也跑了。要解决上面这个问题,我们就需要一个完美精准的“一手交钱、一手交货”方案,零知识证明和区块链这时就可以派上用场了。在这篇文章里,安比实验室创始人郭宇尽可能用普通人能听懂的语言,完整讲解了这样一个有趣的解决方案:零知识有条件支付。很少能有像郭老师这样的、拥有学术背景的的从业者,能为我们这些小白亲自讲解一个具体的技术原理。这篇文章看三遍一定能看懂,同学们抓住这次机会,好好学习吧~以下为正文:
BitcoinCore团队的GregMaxwell早在2011年的时候就提到了一个非常非常牛的概念:ZKCP—“零知识有条件支付”
https://en.bitcoin.it/wiki/Zero_Knowledge_Contingent_Payment这个概念意味着什么呢?简单点讲,就是在没有信任第三方的场合下达成完美公平地“一手交钱一手交货”的方案。这里敲黑板,上面这句话我用了三个学术黑话。想象一个交易场景,如果交易双方在没有信任第三方在场的情况下,谁也不愿意先出手付款/交货给对方,否则对方会跑路。一手交钱一手交货就意味着:付款/交货动作必须具备原子性。所谓完美公平是指任何一方都没办法占更多的小便宜。不过这个概念并不是Greg的原创想法,这是一个古老的话题,早在80年代起就有很多学者在研究如何做到完美公平交易。但是长期以来,大家一致认为一个受信任的第三方是必不可少的。后来等到比特币诞生,Greg敏锐地发现利用比特币这一个无需信任的第三方可以做到。在2016年发表的一篇博文里,Greg宣布伙同ZCash团队的SeanBowe等人一起演示了如何借助比特币这个系统做到一次完美公平交易,Demo演示了如何完美公平地交易一个16x16的数独答案。接下来请原谅我用十分晦涩难懂的语言讲讲ZKCP原理。Greg的ZKCP方案使用了zksnarks技术,首先大家需要了解zksnarks能干什么。传说中的zksnarks能提供一个零知识证明,证明什么呢?证明一个已知算法的计算过程是否真实发生过。这个计算过程可以发生在遥远的星球上,程序运行过程附带产生一个证明,这个证明可以发回地球进行验证,如果验证通过,那么我们可以知道:在遥远星球上确实运行过某个已知程序,并且程序的输入是某一个未知数。最难的部分已经讲完了,如果没看懂就不要继续往下看了。假设卖家A,买家B要交易一个数D,这时候买家B要提前知道D是否是他想要的,B会提供一个函数F()来判断D符合不符合B的要求。A拿到F之后,运行一下F(D),如果返回true,那么A继续用一个加密函数E()得到密文D’=E(K,D),这里K是A为了这笔交易新生成的随机数,然后A计算HASH(K)=H。接下来A交给B三样东西,第一个是密钥的哈希值H,第二个是加密数据D’,第三个是用zksnarks产生的计算过程证明。计算过程就是:F(D)=true;E(K,D)=D’,HASH(K)=H。最后B构造一个比特币脚本:声明任何提供H的Preimage的人可以花掉脚本所带的0.1BTC。A最后发起一笔交易,提供K,提走钱;B从区块链上看到K,解密D’得到D。我们回头看,比特币脚本提供了一个原子操作;同时zksnarks技术提供了零知识证明,保证B的BTC没有被A提走之前B得不到D的,做到了完美公平性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。