区块链的核心技术

1. 分布式账本

  分布式账本技术 DLT Distributed LedgerTechnology)本质上是一种可以在多个网络节点、多个物理地址或者多个组织构成的网络中进行数据分享、同步和复制的去中心化数据存储技术。相较于传统的分布式存储系统,分布式账本技术主要具备两种不同的特征:

  传统分布式存储系统执行受某一中心节点或权威机构控制的数据管理机制,分布式账本往往基于一定的共识规则,采用多方决策、共同维护的方式进行数据的存储、复制等操作。面对互联网数据的爆炸性增长,当前由单一中心组织构建数据管理系统的方式正受到更多区块链的核心技术

的挑战,服务方不得不持续追加投资构建大型数据中心,不仅带来了计算、网络、存储等各种庞大资源池效率的问题,不断推升的系统规模和复杂度也带来了愈加严峻的可靠性问题。然而,分布式账本技术去中心化的数据维护策略恰恰可以有效减少系统臃肿的负担。在某些应用场景,甚至可以有效利用互联网中大量零散节点所沉淀的庞大资源池。

  传统分布式存储系统将系统内的数据分解成若干片段,然后在分布式系统中进行存储,而分布式账本中任何一方的节点都各自拥有独立的、完整的一份数据存储,各节点之间彼此互不干涉、权限等同,通过相互之间的周期性或事件驱动的共识达成数据存储的最终一致性。经过几十年的发展,传统业务体系中的高度中心化数据管理系统在数据可信、网络安全方面的短板已经日益受到人们的关注。普通用户无法确定自己的数据是否被服务商窃取或篡改,在受到黑客攻击或产生安全泄露时更加显得无能为力,为了应对这些问题,人们不断增加额外的管理机制或技术,这种情况进一步推高了传统业务系统的维护成本、降低了商业行为的运行效率。分布式账本技术可以在根本上大幅改善这一现象,由于各个节点均各自维护了一套完整的数据副本,任意单一节点或少数集群对数据的修改,均无法对全局大多数副本造成影响。换句话说,无论是服务提供商在无授权情况下的蓄意修改,还是网络黑客的恶意攻击,均需要同时影响到分布式账本集群中的大部分节点,才能实现对已有数据的篡改,否则系统中的剩余节点将很快发现并追溯到系统中的恶意行为,这显然大大提升了业务系统中数据的可信度和安全保证。

  这两种特有的系统特征,使得分布式账本技术成为一种非常底层的、对现有业务系统具有强大颠覆性的革命性创新。

2. 共识机制

  区块链是一个历史可追溯、不可篡改,解决多方互信问题的分布式(去中心化)系统。分布式系统必然面临着一致性问题,而解决一致性问题的过程我们称之为共识。

  分布式系统的共识达成需要依赖可靠的共识算法,共识算法通常解决的是分布式系统中由哪个节点发起提案,以及其他节点如何就这个提案达成一致的问题。我们根据传统分布式系统与区块链系统间的区别,将共识算法分为可信节点间的共识算法与不可信节点间的共识算法。前者已经被深入研究,并且在现在流行的分布式系统中广泛应用,其中 Paxos Raft及其相应变种算法最为著名。对于后者,虽然也早被研究,但直到近年区块链技术发展如火如荼,相关共识算法才得到大量应用。而根据应用场景的不同,后者又分为以 PoWProofof Work)和 PoSProof of Stake)等算法为代表的适用于公链的共识算法和以PBFT Practical ByzanTIneFault Tolerance)及其变种算法为代表的适用于联盟链或私有链的共识算法。

  工作量证明 POW 算法是比特币系统采用算法,该算法于 1998 年由 W. Dai B-money的设计中提出。以太坊系统当前同样采用 PoW 算法进行共识,但由于以太坊系统出块更快(约 15 秒),更容易产生区块,为了避免大量节点白白陪跑,以太坊提出了叔(Uncle)块奖励机制。PoSProof of Stake)算法最早由 Sunny King 2012 8 月发布的 PPCPeerToPeerCoin 点点币)系统中首先实现,而以太坊系统也一直对 PoS 抱有好感,计划后续以 PoS 代替 PoW 作为其共识机制。PoS 及其变种算法可以解决 PoW 算法一直被诟病的浪费算力问题,但其本身尚未经过足够验证。PBFT 算法最早由 Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在 1999 年的 OSDI99 会议上提出,该算法相较原始拜占庭容错算法具有更高的运行效率。假设系统中共有 N 个节点,那么 PBFT 算法可以容忍系统中存在F 个恶意节点,并且 3F+1 不大于 NPBFT 共识算法虽然随着系统中节点数增多而可以容忍更多的拜占庭节点,但其共识效率却是以极快的速率下降,这也是我们能看到的应用 PBFT做共识算法的系统中很少有超过 100 个节点的原因。

  无论是 PoW 算法还是 PoS 算法,其核心思想都是通过经济激励来鼓励节点对系统的贡献和付出,通过经济惩罚来阻止节点作恶。公链系统为了鼓励更多节点参与共识,通常会发放代币(token)给对系统运行有贡献的节点。而联盟链或者私链与公链的不同之处在于,联盟链或者私链的参与节点通常希望从链上获得可信数据,这相对于通过记账来获取激励而言有意义得多,所以他们更有义务和责任去维护系统的稳定运行,并且通常参与节点数较少,PBFT 及其变种算法恰好适用于联盟链或者私链的应用场景。


©2020 区块链中国 400-800-9644  技术支持:版权所有:北京幸福光彩物联网资产管理公司  访问量:594383  网站管理