作者:郭宇(安倍实验室创始人)
本文阐述了利用ZKP(零知识证明)和区块链实现去中介化交易协议的原理,并讲述了如何将这一理论转化为实际代码。这是概述,想了解更多请关注后续。
【注意】:如果你相信区块链科技可以在未来改变世界,请关注文末。
没有第三,交易的公平性能保证吗?想象这样一个交易场景,一个买家提着一个钱箱,另一个卖家提着一个装有某种贵重商品的箱子。在电影的情节中,买卖双方会坐在一张桌子的两边,倒数,倒数,把箱子推到右边(很酷的姿势)。当然两个人都武装最好,所以防权还是作弊。除了买卖双方,没有第三方在场(可能是市场交易),双方互不信任。可想而知,没有人敢先出去,把盒子交给合适的人,因为接下来很可能出现的情况是,合适的人拿到盒子就跑了,导致钱货两空。
在上世纪90年代,在互联的早期阶段,电子商务已经是经济学家中流行的互联应用。但在这些早期的网络交易实验中,会出现上述两个交易问题:卖家先发货还是买家先付款?当然,卖家收到钱后拒绝发货;或者买家收货后拒绝付款,这种情况很难避免。因此,如何在网上实现买卖双方的“公平交易”,即实现可靠的“支付和交付”,成为一个热门而经典的学术问题。但遗憾的是,科学家早就证明了这样一个结论[1-2]:
法律在没有可信第三方的前提下,实现买卖双方的公平交易。
所谓“公平交易”,是指买卖双方在不了解对方(没有相互信任)的情况下可以进入交易,就要承担欺骗的责任。如果交易成功完成,买家拿到货,卖家拿到钱;如果协议中途有任何退出或欺骗行为,协议将保证其他利益不受损害。
在谷歌的理论搜索引擎上搜索“公平交换”,可以看到多达两百万的学术理论。如果以一天看十篇的速度来估计,我一辈子也看不完。
在过去30年的研究中,公平交易案件必须要求存在一个绝对可信和可靠的第三方。富宝正扮演着这样一个关键的角色,作为每个家庭都信任的第三个地方。一旦买卖发生纠纷,富宝负责调解事务,解决问题。在互联网商务蓬勃发展的今天,这种信任第三者已经成为一个巨人。大家感受不到的是,第三个“信任成本”在快速上升。毫无疑问,过度依赖第三会导致隐私泄露、单点失效、信息滥用等严重问题。当然,也有学术成果表明,这个条件可以放宽,即依靠一个“半信任的第三方”。但请想一想,所谓的‘半可信’并没有解决根本问题,半可信第三方只是理论层面的一个假设。
是时候来到2008年了,特别币诞生了。中本聪给出了一个天才的设计:在任意权限的P2P网络中,采用“POW和最长链”的共识协议,以公平的方式进行集中记账[3]。我们可以从另一个角度理解中本聪的创新:
比特币实行分布式协议,以去中国化的方式“模拟”出一个“虚拟的”“可信第三方”。
当我们使用特殊货币时,我们完全可以想象存在这样一种虚假的信誉。第三,记错账够靠谱。所以经济学家很容易想到刚才的问题:特种硬币或者区块链是否也可以模拟一个虚拟的可信第三方来实现经典的公平交易?这样,买卖对交易就不能不再依赖于第三实体了吗?这样交易效率会大大提高,中介成本极低。
如果区块链科技真的能做到这一点,那么它其实是可以实现的:“零信任公平交易”。想象一下,我们可以在网上和另一个没有互信的“数字商品”自由交易,不用担心他会作弊,因为有一个区块链充当助手或者仲裁者。这将把交易、商品流通或贸易的效率提高到一个不可想象的高度。
零信任双方公平交易的先驱3354简介ZKCP特殊货币开发者Greg Maxwell早在2011年就在特殊货币Wiki上提出了“零知识有条件支付”(ZKCP)的思想[4]。比特币,一种模拟的第三方,在交易支付中作为可信的第三方。因为比特币网络是去中心化的,这个第三方会是零信任的第三方。
通过这个案例,买卖双方可以通过BTC进入数据交易,所谓的“原子交换”就可以实现了。卖家收到钱的那一刻,买家就拿到了数据。这个原理往往很简单。整个过程如下:
卖家:爱丽丝
买家:鲍勃
第一步:爱丽丝加密数据密钥,并把它们锁在盒子里。
第二步:爱丽丝把盒子发给鲍勃,爱丽丝会附上一个“零知识证明”,证明两个事实:(1)盒子可以用钥匙打开,(2)钥匙的hash等于一个值“H”
第三步:Bob检查零知识证明,确认上述事实为真。然后Bob撕下一部分零知识证书作为“收货”。这张收据上写着密钥的散列,也就是“H”
第四步:Bob创建智能合约,锁定1BTC,写“H”。脚本要求:任何能够提供“H”的哈希图像的人都可以提到这个BTC。
步骤5: Alice给出智能合同的密钥。
步骤6:智能合同检查“钥匙”是否与“货物收据”匹配
第七步:如果智能合约通过检查,它将向爱丽丝支付1BTC,并将密钥交给鲍勃。
第八步:鲍勃用钥匙打开盒子,取出数据。至此,双方完成交易。
所谓原生交换,就是家要么交换,要么不交换,这种交换动作再也分不开,就像原来的物理世界一样。在第六到第八步中,这三步是不可分割的。爱丽丝的“钥匙”提到了1btc,同时“钥匙”暴露在区块链上,所以鲍勃可以用“钥匙”解密数据,同时得到数据。“原物交换”是一种公平的体现,保证买卖双方的交换能够完成。嗯,其实只有“原厂换货”是不够的。思考,在整个过程中,有两个技术难点同样关键:
问题(1):数据D确实是Bob想要的。
问题(2):爱丽丝出示的钥匙一定是正确的钥匙。
2016年,G. Maxwell和S. Bowe基于区块链技术实现了第一个“完美公平”的交易案例[5]。这是一个惊人的实验,人类历史上第一次在没有可信的第三方进行公平交易的情况下完成。实验完成了两个数独答案的公平交易。他们使用ZK斯纳克技术产生零知识证明,同时解决世界上的问题(1)和(2)。
信任的产生:零知识证明技术零知识证明如何解决问题(1)和(2)。接下来我打断一下科普。什么是零知识证明?大家可能都听说过这个概念,尤其是在一些匿名加密的数字货币中。零知识证明的英语是
零知识证明
里面每一个字背后的深意都值得一说(这里篇幅太小,写不出来:P)。但这里我要试着用白话解释一下。零知识证明是由Goldwasser、Micali和Rackoff于1984年提出的。当时他们写了一篇文章,题目是《The Knowledge Complextiy of Interactive Proof Systems》,中文名翻译成《交互式证明系统中的知识复杂性》。
如果你仔细看这张图的左上角,你会发现这篇论文实际上发表于1989年。因为这篇文章的思想是如此的先进和震撼,所以他们花了五年的时间,在1984年写出了初稿,并在1989年正式采用发表。正是这篇文章提出了零知识证明这个伟大的概念,它逐渐成为现代密码学的基础之一。后来我们都知道,2012年,Goldwasser和Micali因为他们的开创性工作分享了图灵奖。
【注】我们通常理解的零知识证明技术,是指狭义上如何高效构造普适零知识证明的理论和技术,而广义的“零知识”是密码学的核心理论基础。
我想引用这篇文章中的一段话:
一般来说,在协议的设计中经常会遇到这种问题:A想让B相信什么。我们知道,如果有一个“天使”(或者B信任的人)能够让B相信A说的是真话,那么这个协议就是安全的。我们希望“零知识证明”的概念在这里起作用,而不是依赖于可信任的第三方,这样该协议仍然是安全的。——[GMR89]
这段话是不是有点绕,不过一句话就能说清楚:
零知识证明提供的“信任”可以代替一个“可信任的第三方”
听起来很棒,不是吗?零知识证明如何「凭空产生信任」?我们如何信任零知识证明?零知识证明的信任基础是什么?回答这些问题并不难。事实上,它的信任是基于相对客观的理论。一类是基础理论,包括数论和代数,数理逻辑和计算理论。还有一些安全假设,比如“离散对数问题”、“揭露的知识”等等。如果我们相信数学、逻辑和这些安全假设没有被违反,那么我们可以得出以下结论:
零证明实现了一种密码学理论和技术,基于一些安全假设“模拟”出一个虚拟的可信第三方。
听起来很熟悉,不是吗?我前面说过类似的话,复制一下:
比特币实现的是分布式协议,以去中国化的方式“模拟”一个虚拟的可信第三。
多巧啊,不是吗?自从2016年《经济学人》提出“区块链是信任机器”的说法后,我就一直在思考这个问题:如何体现“信任机器”?深入思考零知识证明后,慢慢发现殊途同归,只是维度不同。区块链解决的是“分布式计算的信任”,零知识证明解决的是“数据的信任”。如果加上形式验证,“逻辑信任”就可以解决了。
这三点:逻辑-计算-数据真的构成了一个闭环,或许“信任机器”的想法才能真正实现。而我们正在实践的zkPoD项目,就是从这三个不同的维度出发,在黑暗中前进。
【思考】三个维度缺一不可。这种观点能解决区块链在真实场景中难以落地的问题吗?
ZKCP的“局限性”和零知识证明漏洞ZKCP的想法是2011年提出的,但是已经发生了很多好事。这个想法直到2016年2月才正式实现。ZKCP基于前沿的零知识证明技术3354—ZKCSNARK [5]。ZCash团队的肖恩鲍(Sean Bowe)编写了ZKCP代码,格雷戈里马克斯韦尔(Gregory Maxwell)从肖恩鲍那里买了一个1616的数独答案,花了0.1 BTC。
但是ZKCP案例只是一个玩具,很难容下一点数据(比如1MB),因为会给买家带来计算量(计算量主要是产生ZKCSNARK零知识证明)。虽然这个案子是合法的,但它显示了区块链科技的真正力量:
总的来说,我认为像这些“不可信”的智能合约是很有价值的。无论是低价值但高频率的自动交易3354传统交易中的冲突开销(开销太高,但交易价值太低)剥夺了寻求严肃和公正的参与,还是高价值交易中的低速度和不可靠性(特别是需要诉诸司法),还是传统交易冲突仲裁中隐私保护的缺失,都会变得不可接受。
当这项技术变得越来越实用时,我预计会有非常令人兴奋的应用。
—————格雷戈里麦克斯韦尔
然而,2017年,M. Campanelli等人在ACM CCS安全峰会上发表的一篇文章披露了ZKCP案的一个安全漏洞[6]。ZKCP实验对卖家是不公平的,买家可以让零知识证明不再是零知识,从而拿走(部分)数独答案而不付费。在ZKCP的基础上,他们改进并提出了ZKCP案例,但仍然没有解决实际问题。2018年,S. Dziembowski等。朝着使用的方向努力,并在ACM CCS的论文中解释了一个新的想法3354 fair swap[7]。它可以容纳高达数GB的数据事务。Fairswap通过虚电路解决问题(1),对于问题(2),Fairswap采用“恶意举报”的方式处理。这种想法类似于区块链层协议,如闪电网络和等离子体。卖家Alice先交付钥匙,但此时买家Bob需要在一定时间内(比如说三个小时)检查钥匙的正确性。如果不正确,迅速上报,并向区块链(或合同)提供证据,证明密钥或数据有问题。这种情况要求买方必须能够在规定的时间内完成申报动作。虽然从理论上来说,这种交易并没有实现“付出交付”,但仍然是一种零信任的公平交易。就拿卖家爱丽丝来说,她需要等三个小时才能拿到货款。
zkPoD是什么?零信任公平交易是很多行业的普遍需求,也是电商技术的未来。是我们安比实验室推出的真正的零信任公平交易系统,进行大宗数据(数字商品)交易。
Zk代表“零知识”,PoD是底层安全协议的名称,是一个(非)交互证明系统(PoD代表交付证明),用于实现可验证的数据交付(也可以理解为可验证的数据传输)。
ZkPoD基于零知识证明[8-13](包括Groth09、防弹、ZkSnark-Groth16等技术),结合区块链实现交易中的零信任,既解决了ZKCP方法的交易数据问题,又保留了支付/交付动作的独创性,实现了真正意义上的“完美公平”。与FairSwap相比,zkPoD协议效率更高,网络流量更大,智能合约更轻,区块链架构类型多样。任何数字化商品都可以在供应链中交付,同时在供应链中支付。
或者更直白一点:zkPoD是一个实用的零知识、有条件付费的ZKCP系统。事实上,zkPoD不仅实现了ZKCP中的“原单换货”,即“付款发货”的有效交易流程,还持有类似于Fairswap的投诉证明。后者具有更高的数据吞吐量。
ZkPoD正在尝试解决这样一些问题:
如何在尽善尽美和公平的前提下切实可行?所谓实用,不是交易几个字节的信息,而是上至GB甚至TB。
如何有效整合优化前沿的零知识证明技术,让我们可以利用手机和移动网络参与其中。
如何保证底层协议和基本算法不可摧毁,是保证区块链开放环境下安全的“唯一途径”。
要做一个安全实用的系统,相比纸面上的理论,我们要处理更多的实际问题:比如协议的设计要考虑以太坊平台的各种安全风险,比如“抢跑攻击”,比如我们去年发现的针对FOMO3D游戏的“阻断攻击”;比如协议要考虑各交易方的恶意行为;比如,协议要使各方成本达到可以接受的水平;比如计算量大的算法未来能否支持硬件加速;加密强度是否合适等。
zkPoD如何解决双方交易中的公平性问题?让我们重复一下上面提到的关于公平的两个关键问题:
Key (1):加密的数据确实是你想要的数据。
关键问题(2):我给你看的钥匙必须是正确的钥匙。
首先,我们来分析一下问题(1)。zkPoD是如何保证买家在付费前知道数据的真实性的?其实数据的真实性是一个标准,可以是主观的,也可以是客观的。比如我买的音乐,mp3好不好,就是一个很主观的判断。或者退一步说,我买的一首歌真的是明星唱的吗?这是一个半主观的判断。再退一步。想付费看一部动作片,没想到买了喜羊羊。那么这个判断能很客观吗?可以,但是要写一个算法来检查一部电影是恐怖片还是动画,并不容易。最后可以客观判断数据的真实性。比如在ZKCP实验中,数据就是一个数独游戏的答案。这个可以通过写一个算法来客观检查。所以,如果有针对数据的算法,或者可以编写程序自动判定真伪,那么这里就可以直接构造一个“零知识证明”展示给买家,这就像“模拟天使”告诉用户,数据的真实性是值得信任的,尽管它是加密的。但如果是别的呢?这个程序写起来太复杂了,或者说基本判断很主观。为了应对这种情况,zkPoD采用了最简单粗暴的方案。用户可以先买一点数据,验货。批量购买前确保数据正确。“味觉图式”无疑是现实世界中最简单有效的方法。但与普通的“品尝”不同,zkPoD可以额外保证:
检验数据可由用户随机选择。
检查次数没有限制。
多次检验和批量采购的数据必须来自同一个数据集。
为了保证以上三点,zkPoD还采用零知识证明技术来做。更具体地说,任何购买的数据都必须带有数据片段来自“唯一”数据集的证明。针对问题(1),目前版本的zkPoD采用Pedersen承诺实现隐藏和半同态计算,使用扩展的Schnorr认证协议传输加密数据,采用J. Groth等人的方法构造零知识证明[8-13],从而保证数据的真实性。
我们再来分析一下问题(2)。zkPoD中区块链的核心功能就是检查这样一件事:卖家出示的钥匙必须是正确的钥匙。这个问题我们可以想象。我展示了“智能合同”的关键。它如何确保我显示的密钥在完全不接触或加密数据的情况下真的可以被解密?这听起来很难做到。其实这里我们也可以用零知识证明来“模拟一个天使”告诉买家,用户还是有智能合约的:我给你看的钥匙是正确的。这里的原理涉及到了PoD安全协议,所以本文不解释原理,只是一个大概的想法。首先我(作为卖家)给你(买家)看一个关于钥匙的零知识证明,还有一把锁(不锁任何东西,只是简单锁一下的锁)。关于密钥的零知识证明了一个事实,任何可以打开这个锁的密钥都可以解密刚刚发送给你的数据。在交易的最后一步,你把锁交给智能合约,我把钥匙交给智能合约,智能合约则负责检查钥匙是否能打开锁。如果可以正常打开,那么就可以把钥匙拿走解密数据。如果打不开,说明我交的钥匙是假的,所以拿不到货款。我们可以这样理解。通过零知识证明,我们将密钥有效性的检查“归结”为一个密钥解锁问题。这个问题很容易通过智能合约来解决。(zkPoD充分考虑了现有智能合约平台上计算的成本和实用性)。对于问题(2),zkPoD受益于安全哈希函数,结合零知识证明技术,保证了密钥的验证。Zkpod之前只支持以太坊,经过几次协议优化,之前以太坊的耗气已经基本达到现实。
“零信任”,形式验证和安全证明。我们之前讨论过区块链和零知识证明。我们继续说“形式验证”。在zkPoD中,无论是零知识证明、智能契约还是底层椭圆曲线算法,这些都是zkPoD公平性的基础。我经常被问到这样的问题:
那么这些低级的东西可信吗?
我想你会有同样的问题,尤其是在魔鬼跳舞的区块链行业。为什么我能相信你零知识证明技术没问题?为什么我认为区块链很好?这篇文章的标题是《零信任》,但这种说法并不准确。
任何“信任”都需要建立在某种可信计算基础上,任何“安全”都有安全假设。
ZkPoD也不例外。它的可信度还是建立在很多“可能没问题”的部分,甚至很多“不清楚”的东西上。
补充信任的最后一个环节是“形式验证”。这里不再赘述,我将简单地讨论形式验证能做什么,以及在zkPoD场景中能解决什么问题。形式化实际上是逻辑、流程或业务的形式化建模。你可以理解为是用数学语言描述的。模型是一些数学概念(或数学对象),比如集合、代数、范畴等等。然后,所有的形式验证都以显式或隐式的方式“严格证明”一个结论(或定理)。一旦组件的可靠性论证被“证明”,就可以将其从可信计算库中移除。
【注意】不产生证明(包括隐含证明)的分析过程不能称为形式验证,因为这些分析过程没有客观的检验标准。
我们上面提到了两个“模拟”,一个是区块链,另一个是零知识证明。他们可以被信任,因为他们可以“模拟一个可信的第三方”。这个模拟过程是如何模拟的?首先,结论是两种仿真过程都是可以形式化和可证明的。
在Goldwasser和Micali的论文中,他们解释了如何证明“零知识”和如何证明“模拟”。迄今为止,模拟和安全证明一直是密码学的共识,也是基本的形式化工具。没有证明/验证的模拟,不是所有人都能接受的。证明零知识的过程恰好是一个直观的构造性证明:构造一个概率图灵机,可以模拟各种第三方和各种有趣的概念。我看过的大部分关于零知识证明的科普文章都很少提到“仿真”这个概念,更不用说安全证明了。这就引出了如何解释零知识证明的问题。读者理解起来就像雾里看花,始终抓不住重点。他们隐约好像明白了,但又说不清楚。因为我研究了十几年的逻辑证明,吃了一些论文和证明,从那些密码安全证明中逐渐体会到了“模拟”和“零知识”所表达的神奇思想。这些想法与我们用来验证操作系统和编译器的想法非常一致。另一方面,学术界已经开始对“区块链模拟”进行非常严格的数学建模和证明,即共识协议的信任[14-16]。
在zkPoD中正式验证“区块链”和“零知识证明”等技术所依赖的那些“信任基”的可信度。理论上,从安全协议到一行代码,所有客观标准都可以被验证。所有经过正式验证的组件都将成为“零信任”。这是一个渐进的过程。我们正在形式化验证PoD安全协议,证明“零知识证明”相关理论,在zkPoD中形式化建模验证以太坊智能合约(零信任第三方)。未来,我们将使用形式化方法对交易协议进行更详细的建模和验证。
zkPoD zkPoD的进化起源于去年国庆。团队胡扯了一个好玩的想法,家里人听了很兴奋,很快就出了一个小样。然而令人沮丧的是,我们很快就发现了其中的理论漏洞。然后就是在密码学上东拉西扯,补充理论的过程,又酸又爽。咨询了各路大神,一直很迷茫,但每次突破都能偷偷开好阵。
告诉这家人一个测试数据。以1GB的数据块为例。卖家初始化这个数据需要90秒,也就是多喝几分钟水。那么,如果买卖双方要采用最慢的原子交易协议(zkPoD提供三种不同的协议),对接低TPS公链(如以太坊),卖方需要计算产生更多的零知识证明,耗时9小时(普通PC,6核CPU),平均速度20KB/s,比年前调制解调器拨号时代的下载速度快很多。以太坊单笔交易的用气量在15万单位左右,相当于一毛钱,折合人民币7毛钱。如果是“投诉证明”的交易协议,卖家只需要124秒就可以完成零知识证明的制作,买家基本上同样需要120秒的时间来接收和验证数据。请注意,在这种模式下,网络流量会翻倍,即需要传输2GB以上的数据,以太坊气要消耗20万单位。整体来说,传输速率可以达到3MB/秒,接近年前普通本地设备的传输速度。对于高TPS的公共链,或者说联盟链,zkPoD也提供了更好的性能协议模式。虽然zkPoD的核心性能已经可以达到支持开销、频率、视频的效果,但是系统还需要对协议进行改进、完善和优化,才能支持丰富的上层响应。目前,系统中只有一个粗略的命令边界:
好奇的同学们,请点击这里观看完整的演示:
有关zkPoD的更多技术细节、系统架构、代码结构和测试结果,请参考我们的代码仓库以获得技术白皮书:
也可以下载代码进行编译和试运行,默认zkPoD会链接我们在以太坊测试网上部署的合约。
rops ten:0x 07d 04d 5912383 f 8523208 b 978 c 73d 4786 a5 B1 e 86
zkPoD虽然能达到Demo演示的状态,但还是半成品。周围的协议、链、客户端还有待完善。ZkPoD在途中有很多有趣的扩展功能,有些创意功能还没有实现。ZkPoD还将对接更多优秀的公链。
我们的想法是这样一个好玩的项目能不能做成一个开源的社区项目,希望有各种技能的伙伴一起合作。社区后续会整理一些技术档案,包括经验分享,以及在这个过程中学到的各种有趣的知识。请保持注意力。
zkPoD的标志?我还没想明白。也许它将成为下一代互联的基本协议,实现数据和价值的双向流动。
知识零证明:知识零证明是我这几年看到的最有趣的理论和技术。知识零证明的学术理论确实有一定的深度。不过它的概念和应用并没有那么难懂,虽然门槛略高。无论是中文还是英文,这里的信息都极其匮乏,实践更是少之又少。
我想通过一个简单的例子来说明。如果父母问我数学考了61分,我只需要出示零知识证书就可以了。这个证书是一串数字,但能让我爸妈相信这个分数真的过了。但是多少分呢?对不起,爸爸无论如何也无法从这一串数字中计算出来,甚至无法知道是80分以上还是80分以下。这种零知识证明被称为“范围证明”。当然,我还要捆绑一个数字签名的零知识证明,可验证的计算证明,向我父亲证明这个分数是老师签的(我们假设这里采用的是BLS短数字签名)。可验证的计算证明,你可以想象一下,我用手机拍下了老师签名的过程,但是我把镜头里的点都打了马赛克。
如果我保守了你的一个秘密,比如特殊货币的助记符,我可以给你看一串数字证明我没有忘记你的助记符,但是没有人能从这个证明中得到这个助记符的任何一段。这种零知识证明也叫“知识证明”。因为从这个证明中没有任何东西能告诉我更多关于记忆术的秘密,所以这个证明是零知识。换句话说,这个证明就是一串数字。看起来只是一个随机数,没有任何信息。(给读者提个小问题:我怎么向你的朋友证明这个助记符对应的比特币地址上的钱没有被我花掉?有想法请后台留言)
知识零证明很常见,科学家可以通过各种方式脑洞大开。其中最直接最重要的一点就是敏感数据的保护。无论是成绩单、病历、账本、密码等。你可以把它的任何一部分推导出来,换成一个和随机数非常相似的零知识证明。可以证明被扣除的敏感数据依然可信真实。(请各位脑洞大开,还有哪些有趣的场景。)
在zkPoD中,零知识证明起着非常重要的作用。数据的交付过程是零知识证明的形式,买方先得到堆的零知识证明。当然,数据是隐藏在这些数据中的,但是从外部整体来看,根本没有办法在这些看似随机的数据中获取哪怕一点关于原始数据的信息。(这个是可以证明的,请原谅我插入一些学术术语:基于离散对数问题假设的“完美零知识”。)理解零知识证明理论的核心是理解我上面反复提到的“模拟”这个黑暗而有趣的概念。我们以后再谈这个。
参考文献[1]帕格尼亚、亨宁和费利克斯c格特纳。论没有可信第三方的公平交易的不可能性TUD-BS-1999-02技术报告,达姆施塔特技术大学计算机科学系,德国达姆施塔特,1999年。
[2]加比纳托、贝诺和伊恩瑞克布施.公平交换的不可能性结果。第十届创新互联网社区系统国际会议(I2CS)-2010年年大庆版(2010)。
[3]中本聪。比特币:一种点对点的电子现金系统。(2008).
[4]麦克斯韦,G零知识或有报酬。2011.\’网址:https://en。比特硬币。it/wiki/Zero _ Knowledge _ content _ Payment(2016年05月01日访问)(2016年)。
[5]格雷格麦克斯韦尔。\”第一次成功的零知识应急支付.\”https://bitcoincore。org/en/2016/02/26/零知识-内容-支付-公告/
[6]坎帕内利、马特奥、罗萨里奥根纳罗、史蒂文戈德费德和卢卡尼扎尔多。零知识或有支付再探:攻击和服务支付。2017年ACM SIGSAC计算机与通信安全会议论文集,第229-243页ACM,2017年。
[7]齐姆博斯基、斯特凡、丽莎埃克伊和塞巴斯蒂安浮士德公平交换:如何公平交换数字商品。2018年ACM SIGSAC计算机与通信安全会议论文集ACM,2018 .
[8]延斯格罗特。带有次线性零知识参数的线性代数。年度国际密码学会议。施普林格,柏林,海德堡,2009。
[9]布特尔法官、塞鲁利法官、柴多斯法官、格罗特法官、佩蒂特法官(2016年年5月)。离散对数设置中算术电路的有效零知识论证。在年度密码技术理论和应用国际会议上(第327-357页)。斯普林格,柏林,海德堡。
[10]贝内迪克特比恩兹等,“Bulletproofs:机密交易的简短证明及其他“2018年IEEE安全与隐私研讨会(SP).IEEE,2018 .
[11]罗萨里奥根纳罗等人,\”二次跨度程序和无PCP的简洁尼茨克\”密码技术理论与应用国际年会。施普林格柏林,海德堡,2013。
[12]帕诺,布莱恩等着,〈皮诺曹:近乎实际的可验证计算〉。2013年电气电子工程师学会安全与隐私研讨会IEEE,2013年。年。
[13]延斯格罗特。基于配对的非互动论点的大小。密码技术理论与应用国际年会。施普林格,柏林,海德堡,2016。
14道格伍斯、詹姆斯威尔科克斯、史蒂夫安东、扎卡里塔特洛克、迈克尔恩斯特和托马斯安德森木筏。共识协议正式验证中的变化计划2016年CPP,佛罗里达州圣彼得堡,2016年一月。
15乔治p莱莉娅和伊利亚谢尔盖.机械化区块链共识第七届ACM信号计划认证程序和证明国际会议录ACM,2018 .
16卡尔帕姆斯科格,等在Coq证明助手中验证卡斯帕.2018.
(作者:SECBIT实验室,内容来自链得得内容开放平台\”得得号\”;本文仅代表作者观点,不代表链得得官方立场)