1703864919
4.谁在制定系统变化规则?
1703864920
1703864921
5.比特币是如何取得交易价值的?
1703864922
1703864923
前三个问题反映了比特币协议的技术细节,我们将在本章重点讨论。
1703864924
1703864925
比特币系统的不同方面是从不同点涉及了中心化及去中心化。点对点网络是最接近去中心化的体系,任何一个人都可以运行一个比特币节点,而且基本没有什么入门门槛,用户只需要上网下载一个比特币客户端,就可以在其个人电脑上运行一个节点,现在全球有成千上万个这样的节点。在本章2.4节中我们将要学习比特币挖矿(bitcoin mining),从技术上讲,挖矿过程也是向所有人开放的,但挖矿需要很多资金投入。正因为如此,挖矿领域具有非常高的中心化及挖矿能力集中的倾向。比特币社区里有许多人认为这种现象并不可取。第三点是关于比特币运行节点软件的更新,这涉及何时以及如何更新系统规则。大家可以想象,就像电子邮件系统那样,这些节点可能有各种根据相同方式但通过不同手段实现的不同版本。但在实际上,绝大多数节点用的都是社区里被大家公认的有权威的资深开发者开发出来的软件。
1703864926
1703864927
[1]CompuServe,美国最大的在线信息服务机构之一。CompuServe产品于1979年问世,它提供留言板、新闻和信息、电子商务以及其他类似网络功能的服务。这款产品的问世时间远远早于网络。美国在线在20世纪90年代早期的崛起,使得CompuServe退居美国第二大在线服务商。不久之后,CompuServe不得不同互联网进行竞争,它变成了一个不那么令人满意的互联网服务提供商。而且,随着用户更多地使用互联网,CompuServe风光一时的留言板也开始被人抛弃。1997年,美国在线收购了CompuServe。正如网景一样,CompuServe成为美国在线用在其他产品上的标示。现在,CompuServe只是一个半门户网站。——译者注
1703864928
1703864929
1703864930
1703864931
1703864933
区块链技术驱动金融:数字货币与智能合约技术 2.2 分布式共识
1703864934
1703864935
在前一节,我们笼统地讨论了去中心化和中心化。现在我们从一个更为技术性的层面看一下比特币的去中心化。接下来,我们会遇到一个被称作“共识”(consensus)的重要概念,特别地,还有“分布式共识”(distributed consensus)。建立一个分布式的电子现金系统的关键技术问题,就在于要达成分布式共识。直观地说,你可以想象我们的目标就是要将第1章提到的财奴币去中心化。
1703864936
1703864937
分布式共识有各种应用,计算机界对其也研究了多年,传统具有启发式的应用就是提高分布式系统的可靠性。设想你在管理一个社交网络公司的后端平台,比如微信,像这样庞大的系统通常有几千台甚至几万台服务器,这些服务器组成了一个巨大的分布式数据库,数据库中记录了这个系统里发生的各种活动,而每条信息都会被记录在后端的若干个节点上,对于整个系统的状态,这些节点必须要做到同步。
1703864938
1703864939
分布式共识协议的意义远远超出了传统意义的范畴。一旦具备了这样的体系,我们就可以建立一个庞大的分布式键值(key-value)存储库,该类存储库可以将任意数据如身高、名字等对应一个相应的开启键,基于此,许多应用得以实现。例如,我们可以建立一个分布式域名系统,将人脑易于理解的域名与IP地址进行配对,我们也可以建立一个公钥目录,这个目录可以把公钥与电邮地址(或者其他真实世界中的身份证明)对应起来。
1703864940
1703864941
以上讨论在直觉上说明了分布式共识的大概含义。对于分布式共识,我们还是要给出一个技术定义,以此我们可以判别一个协定是否符合分布式共识的要求。
1703864942
1703864943
分布式共识协议 在一个有n个节点的系统中,每一个节点都有一个输入值,其中一些节点具有故障,甚至是恶意的。一个分布式共识协议有以下两个属性:
1703864944
1703864945
● 输入值的中止须经所有诚实节点来确定。
1703864946
1703864947
● 这个输入值必须由诚实节点来生成。
1703864948
1703864949
那么以上概念在比特币里又是什么含义呢?想要理解分布式共识在比特币中的用途,我们需要记住比特币是个点对点的系统。当爱丽丝向鲍勃付款的时候,她其实是在向构成比特币网络上的所有节点广播其交易行为,见图2.1。
1703864950
1703864951
1703864952
1703864953
1703864954
图2.1 广播交易
1703864955
1703864956
注:为了向鲍勃付款,爱丽丝需要向整个比特币点对点网络进行广播。
1703864957
1703864958
顺便提一下,你可能注意到,当爱丽丝向整个比特币点对点系统广播时,鲍勃的计算机并不一定在图2.1的网络中。当然鲍勃也有可能在这个网络上运行着一个节点,如果鲍勃想在爱丽丝转币给他时及时被系统通知,运行一个节点当然是个好主意,但其实这并不重要,鲍勃是否运行节点并不影响他收到爱丽丝转给他的比特币。
1703864959
1703864960
在比特币网络里,节点到底要达成什么样的共识呢?网络里有各种各样的用户在向网络广播交易,节点必须对哪些交易可以进行广播和交易发生的次序达成共识,以此系统将形成一个唯一的全球交易总账。回想我们在第1章1.5节中曾提到的财奴币将交易打包成块,对信息进行优化处理。类似地,在比特币体系里,我们也将每个区块进行共识处理。
1703864961
1703864962
在任何时点,所有在点对点网络上的节点都有包含一系列区块的总账本,每个区块中都包含了已经被所有节点达成共识的交易清单。除此之外,每个节点还有一堆没有被打包进入区块的交易,就是那些网络节点已经被通知、交易已经发生,但还没有被写进区块的交易。网络节点对于这些交易还没有达成共识,所以每个节点都有一个略有差异、尚待确认的交易池。在实际中,点对点网络是不完美的,所以有些节点听到了交易,而有些节点却没有听到。
1703864963
1703864964
那么,所有的节点是如何对一个区块达成共识的呢?一个方法是,在一个时间段里,比如说每隔十分钟,每个节点都提议,自己的未被认可的交易成为已经达成共识的区块链后面的下一个区块,然后那些节点会执行一些共识协议,每个节点把自己提议的区块作为输入。但不可避免地,有些节点可能是恶意的,存心要把不当交易放进区块里,其他节点则是诚实的。如果共识协议能够顺利完成,一个正当有效的区块会被选作输出值。尽管有些被选出的区块是由一个节点提交,但只要这个区块是正当有效的,输出就是正当有效的。这时候可能有人会指出,这个被选出的区块可能未包含所有的正当有效的交易,但这并没有关系,如果有些正当有效的交易没被放进区块,它们可以等待下一次机会。
1703864965
1703864966
前面所谈到的这个办法与比特币系统有些相似之处了,但实质还是不完全一样。以上做法有几个技术上的问题:第一,达成共识一般是个难题,因为有些节点会死机或是根本就是恶意节点;第二,就比特币而言,点对点网络是不完美的,并非所有对应的节点是两两相连的,互联网链接的不良可能会造成网络问题,要执行一个所有节点都参与的共识协议好像并不现实;第三,由于交易信息是分布在整个互联网上,信息传递会有严重延迟。
1703864967
1703864968
[
上一页 ]
[ :1.703864919e+09 ]
[
下一页 ]