本文首发于 2017-11-04 15:58 原地址:http://www.blockchainbrother.com/article/93
密码学的用途就是解决各种难题(当然,这也是计算机的主要用途)。密码学解决的各种难题围绕机密性、鉴别、完整性和不诚实的人。你也许对各种算法和技术有一定了解,但除非其能够解决某些问题,否则其只是理论而已,这也就是为什么要先对协议进行了解的原因。区块链技术当中一个很重要的组成部分就是密码学,作为从事区块链研究的工程技术人员,应该对密码学有一定的了解。现我想分享一些密码学的基本概念以供交流学习,大家共同学习,更加充实对区块链技术的理解。
仲裁协议
仲裁者(arbitrator)是在完成协议的过程中,值得信任的公正的第三方。
“公正”意味着仲裁者在协议中没有既得的利益,对参与协议的任何人也没有特别的利害关系。
“值得信任”表示协议中的所有人都接受这一事实,即仲裁者说的都是真实的,他做的都是正确的,并且他会完成协议中涉及他的部分。
仲裁者能帮助任何互不信任的双方完成协议。
在现实社会中,经常扮演仲裁者的是律师。我举一个例子,Alice要卖一个房子给不认识的Bob。Bob想用支票付账,但是Alice不知道支票的真假。在Alice将房子转给Bob之前,其必须查清楚支票的真伪。同样,Bob也不是完全信任Alice,这样在没有获得所有权之前,Bob也是不愿意将支票交给Alice的。
这个时候,就需要双方共同信任的律师。在律师的帮助下,Alice和Bob能够使用下面的协议保证相互不欺骗。
1)Alice将房子的所有权交给律师。
2)Bob将支票交给Alice。
3)Alice在银行兑现支票。
4)在等到支票鉴定无误能兑换现金之后,律师将房子的所有权交给Bob。如果在规定的时间内支票不能兑现,Alice将证据出示给律师,律师将房子的所有权交还给Alice。
在这个协议中,Alice相信律师不会在支票没有兑换成现金之前将房子的所有权交给Bob;如果经过证实支票是不能兑现的,律师会把房子的所有权交还给自己。而Bob相信律师现在拥有房子的所有权,在支票兑现之后,会将房子的所有权交给自己。而律师其实并不关心支票是否可以兑现,不管在什么情况下,他只做他应该去做的事情,因为其实无论哪种情况发生,律师都是有报酬的。
在上述例子中,律师起着担保代理的作用。当然,还有别的例子,比如遗嘱和合同谈判,律师都可以作为仲裁者。在我们生活中,银行也经常使用仲裁协议。现再举一个买卖汽车的例子:Bob使用保付支票从Alice手上购买汽车。
1)Bob开具一张支票并交给银行。
2)在验证证实Bob有足够的钱支付支票上的数目后,银行将保付支票交给Bob。
3)Alice将汽车的所有权交给Bob,Bob将保付支票交给Alice。
4)Alice凭借保付支票去银行兑现。
需要说明的是公证人是另一种仲裁者,当Bob从Alice接收到已公证的文件时,他相信Alice签署的文件是其资金亲自签署的。如果有必要,公证人可以出庭作证证实这一事实。
其实仲裁者的概念是非常悠久的。在人类社会中总是存在那么一些人有公平处理事情的权威,一般仲裁者都是有一定社会地位和声望的人。而背叛公众的信任是一件非常危险的事情,其社会地位和声望都将受到严重影响。比如,视担保为儿戏的律师几乎无一例外会被开除出律师界。当然,虽然仲裁协议看上去十分美好,也有相当的历史,但我们知道任何事物都不是十全十美的。
现在我们将仲裁思想转换到计算机的世界中,计算机仲裁者存在下面几个问题:
1)假设你知道对方是谁,并能与之见面,那么很容易找到和相信中立的第三方。而互相怀疑的双方很可能也怀疑在网络别的什么地方并不露面的仲裁者。
2)计算机网络必须负担仲裁者的费用。就像我们知道的律师费用,但谁想负担那种网络费用呢
3)在任何仲裁协议中都有延迟的特性。
4)仲裁者必须处理每一笔交易。任何一个协议在大的范围执行时,仲裁者是潜在的瓶颈。增加仲裁者的数目似乎是一个好主意,可以缓解这个问题,但费用将会增加。
5)由于网络上每一个人都必须相信仲裁者,那么对于试图破坏网络的人来说,仲裁者便是一个易于攻击的弱点。
当然尽管如此,仲裁者仍扮演一个角色。在使用可信任的仲裁协议中,这个角色由Trent来扮演。
于中阳 Mercina-zy