用户登陆
正在加载
零知识有条件支付:真正做到「一手交钱、一手交货」
互联网 · 2019-02-01 10:03:57

假如我们现在要做一笔交易,我想把自己的数据卖给你,怎样交易才是最安全的?

显然这里会有两个问题:

1、因为我卖的是数据,肯定不能直接给你,否则你得到数据后直接跑了怎么办?

2、但我肯定也不能先拿你的钱,因为可能我给你的数据是不符合你要求的,或者我拿了钱之后也跑了。

要解决上面这个问题,我们就需要一个完美精准的「一手交钱、一手交货」方案,零知识证明和区块链这时就可以派上用场了。

在这篇文章里,安比(SECBIT)实验室创始人郭宇尽可能用普通人能听懂的语言,完整讲解了这样一个有趣的解决方案:零知识有条件支付。

很少能有像郭老师这样的、拥有学术背景的的从业者,能为我们这些小白亲自讲解一个具体的技术原理。这篇文章看三遍一定能看懂,同学们抓住这次机会,好好学习吧~

原文标题:《有趣的「零知识有条件支付」:真正完美的「一手交钱一手交货」是什么样的?》
作者:郭宇,安比(SECBIT)实验室创始人

以下为正文:

零知识有条件支付:真正做到「一手交钱、一手交货」

Bitcoin Core 团队的 Greg Maxwell 早在 2011 年的时候就提到了一个非常非常牛的概念:

ZKCP —「零知识有条件支付」
https://en.bitcoin.it/wiki/Zero_Knowledge_Contingent_Payment

这个概念意味着什么呢?

简单点讲,就是在没有_信任第三方_的场合下达成_完美公平地「_一手交钱一手交货」的方案。

这里敲黑板,上面这句话我用了三个学术黑话。想象一个交易场景,如果交易双方在没有信任第三方在场的情况下,谁也不愿意先出手付款 / 交货给对方,否则对方会跑路。一手交钱一手交货就意味着:付款 / 交货动作必须具备原子性(大白话:要么交换完成,要么不交换,不给任何一方赖账的空间)。

所谓完美公平是指任何一方都没办法占更多的小便宜。不过这个概念并不是 Greg 的原创想法,这是一个古老的话题,早在 80 年代起就有很多学者在研究如何做到完美公平交易。但是长期以来,大家一致认为一个受信任的第三方是必不可少的。后来等到比特币诞生,Greg 敏锐地发现利用比特币这一个_无需信任的第三方_可以做到。

在 2016 年发表的一篇博文里,Greg 宣布 伙同 ZCash 团队的 Sean Bowe 等人一起演示了如何借助比特币这个系统(作为一个 Trustless 第三方)做到一次完美公平交易,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 的人(也就是说,任何拥有 K 的人)可以花掉脚本所带的 0.1 BTC。A 最后发起一笔交易,提供 K, 提走钱;B 从区块链上看到 K,解密 D’ 得到 D。

我们回头看,比特币脚本提供了一个原子操作(大白话:实现了密钥和 BTC 的一手交钱,一手交货);同时 zksnarks 技术提供了零知识证明,保证 B 的 BTC 没有被 A 提走之前 B 得不到 D 的,做到了完美公平性。

免责声明:
本网站所提供的所有信息仅供参考,不构成任何投资建议。用户在使用本网站的信息时应自行判断和承担风险。币界网不对用户因使用本网站信息而导致的任何损失负责。用户在进行任何投资活动前应自行进行调查和研究,并谨慎决策。币界网不对用户基于本网站信息做出的任何投资决策负责。用户在本网站发布的任何内容均由其个人负责,与币界网无关。
免责声明:本网站、超链接、相关应用程序、论坛、博客等媒体账户以及其他平台和用户发布的所有内容均来源于第三方平台及平台用户。币界网对于网站及其内容不作任何类型的保证,网站所有区块链相关数据以及其他内容资料仅供用户学习及研究之用,不构成任何投资、法律等其他领域的建议和依据。币界网用户以及其他第三方平台在本网站发布的任何内容均由其个人负责,与币界网无关。币界网不对任何因使用本网站信息而导致的任何损失负责。您需谨慎使用相关数据及内容,并自行承担所带来的一切风险。强烈建议您独自对内容进行研究、审查、分析和验证。
s_logo
App内打开