区块链技术:分布式系统

bibo
1006
2018-12-13

链表为区块链提供了概念基础,其中“区块”是一个数据包,而区块通过某种类型的链接机制(如指针、引用、地址等)串联在一起。区块链技术将这个看似简单的概念以全局的方式管理或分配,实现信息交换,为分布式系统奠定基础。

 815511a4b6d18001b929153227ad3d4f.jpg

当链表中的一个链接或分布式系统中的一台计算机(又名节点)响应缓慢、 被黑客攻击或崩溃时,会发生什么?完整的链如何从这样的悲剧事件中恢复?这就引出了分布式系统中的容错概念。一旦对其中一个节点中的数据进行了更改,我们如何确保相同的信息与其他节点一致?这就引入了对协商共识的要求。

 

将链的类比推进了一步来看,管理链的算法经过精心设计,不会破坏链。也就是说将附加链连接到开始和结束,是一个简单的操作(我们只需要确保标记正确性,表明开始和结束的列表更新是正确的即可)。然而,删除一个链或添加一个链是有点棘手的。当需要删除或插入列表的中间位置时,会有一点复杂,但是对于已知的解决方案来说,这是一个众所周知的问题。我们将不在本文中讨论细节,因为本文的目的不是描述这些操作,而是传达一个高级的历史视角。

 

在分布式系统中,容错成为一个非常重要的概念。从某种意义上说,它是在一台计算机上管理链表的逻辑扩展。显然,在实际应用中,分布式系统中的每个节点都是经济实体,它们依赖于其他经济实体来实现其目标。系统内的故障必须尽可能地减少。当故障不可避免时,恢复必须尽可能迅速和完整。计算机科学家在20世纪50年代中期开始研究容错方法,结果在捷克斯洛伐克出现了第一台容错计算机SAPO。

 20181213162328.jpg

除了容错之外,当需要向分布式系统添加信息时(有点像添加、删除或更新链表的元素),不同的方面必须达成一致。达成协议的原因是,进入链表的数据是由这些当事人之间的交易产生的数据。没有协议的话就是一个很混乱的概念举个例子:我的节点会记录我给你发送了90美元,而你的节点只会记录19美元!因此交易双方之间应达成协议。分布式系统中一个更强的要求是,一旦双方同意某件事,在没有另一方或多方同意的情况下,任何一方都不能更改已同意的数据。这一要求的最强版本是不变性,在技术上不可能对同意并提交给链的数据进行任何更改。

 

容错和共识

 

因此,分布式系统在不同程度上需要不同的容错性、共识性和不变性,这取决于业务需求。容错和协商共识的机制从早期就开始发展。显著的进展是:

 

★ Lamport、Shostak和Pease在1982年开发的拜占庭容错(BFT),用于处理分布式系统中的一个或多个节点出现故障或恶意的情况。

 

★ 工作量证明(POW),在1993年首次被描述,这个术语在1999年被创造出来,它是一种为恶意攻击提供经济上的阻碍技术。1992年,Cynthia Dwork和Moni Naor提出了POW的前身,作为一种打击垃圾邮件的手段——早在1992年,这个问题就已经是一个严重的麻烦了!他们的解决方案是要求发件人解决一个计算问题,这个问题对于正常发送电子邮件来说足够简单,但对于发送大量垃圾邮件来说,计算成本就变得非常昂贵。

 

★ Hashcash是一种POW算法,由Adam在1997年提出。2008年,中本聪(Satoshi Nakamoto)将其作为比特币中POW的基础,让更多的人认识到了POW。

 

★ 1999年Miguel Castro 和Barbara Liskov发明了高性能的BFT,称为实用拜占庭容错(PBFT);等等。

 

★ Paxos是一个共识算法家族, Dwork、Lynch和Stockmeyer在1988年的一篇文章中有过描述,并于1998年由Leslie Lamport首次发表。

 

★ Raft consensus算法由Diego Ongaro和John Ousterhout开发。它于2014年发布,旨在成为一个更容易理解的Paxos替代品。

 dca69e6f76f664dfd08b1599d18b0bed.jpg

状态机复制(SMR)是容错框架,而协商共识是解决冲突或在状态值上达成一致的一种方法。SMR最早出现在20世纪80年代初,1984年Leslie Lamport发表了一篇很有影响力的论文而被人们知晓。