网络服务安全与监控
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 区块链

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。区块链技术被认为是继大型机、个人计算机、互联网之后计算模式的颠覆式创新,很可能在全球范围引起一场新的技术革新和产业变革。联合国、国际货币基金组织,以及美国、英国、日本等国家对区块链的发展给予高度关注,积极探索推动区块链的应用。目前,区块链的应用已延伸到物联网、智能制造、供应链管理、数字资产交易等多个领域。

区块链技术起源于化名为“中本聪”(Satoshi Nakamoto)的学者在2008年发表的奠基性论文《比特币:一种点对点的电子现金系统》。从狭义上讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。从广义上讲,区块链技术是利用块链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

区块链是一种去中心化的数据库,它包含一张被称为区块的链表,有着持续增长且排列整齐的记录。每个区块都包含一个时间戳和一个与前一区块的链接,区块链设计使得数据很难被篡改。

1991年,由Stuart Haber和W. Scott Stornetta第一次提出关于区块的加密保护链产品,随后由Ross J. Anderson与Bruce Schneier & John Kelsey分别在1996年和1998年发表。与此同时,Nick Szabo在1998年进行了电子货币分散化的机制研究,他称此为比特金。2000年,Stefan Konst发表了加密保护链的统一理论,并提出了一整套实施方案。

区块链格式作为一种使数据库安全而不需要行政机构的授信的解决方案,首先被应用于比特币。2008年10月,在中本聪的原始论文中,“区块”和“链”这两个词是被分开使用的,之后在被广泛使用时合称为“区块链”。中本聪创造了第一个区块,即“创世区块”。2009年1月3日,比特币的创始人中本聪在创世区块中留下一句永远不可修改的话:

“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks(2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘).”

当时正是英国的财政大臣达林被迫考虑第二次出手纾解银行危机的时刻,这句话是《泰晤士报》当天的头版文章标题。通过区块链的时间戳服务和存在证明,第一个区块链产生的时间和当时正发生的事件被永久保留了下来。

2016年1月20日,中国人民银行数字货币研讨会宣布对数字货币研究取得阶段性成果。会议肯定了数字货币在降低传统货币发行等方面的价值,并表示央行在探索发行数字货币。中国人民银行数字货币研讨会传递的信息,大大增强了数字货币行业的信心。这是继2013年12月5日央行五部委发布关于防范比特币风险的通知之后,第一次对数字货币表示明确的态度。

可以把区块链的发展类比互联网本身的发展,未来会在互联网上形成一个Finance-Internet的东西,而这个东西就是基于区块链的,它的前驱就是比特币(Bitcoin),即传统金融从私有链、行业链出发(局域网),比特币系列从公有链(广域网)出发,都表达了同一种概念——数字资产(Digital Asset),最终向一个中间平衡点收敛。

1.4.1 区块链的特征

(1)去中心化:由于使用分布式核算和存储,区块链体系不存在中心化的硬件或管理机构,因此任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

(2)开放性:系统是开放的,除交易各方的私有信息被加密之外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

(3)自治性:区块链采用基于协商一致的规范和协议(如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境中自由安全的交换数据,使得对“人”的信任换成了对机器的信任,任何人为的干预都不起作用。

(4)信息不可篡改:一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

(5)匿名性:由于节点之间的交换遵循固定的算法,其数据交互是无须信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方对自己产生信任,对信用的累积非常有帮助。

(6)可靠性:区块链上的数据保存多个副本,任何节点的故障都不会影响数据的可靠性。共识机制使得修改大量区块的成本极高,几乎是不可能的。破坏数据并不符合重要参与者的自身利益,这种实用设计增强了区块链上的数据可靠性。

1.4.2 区块链的类型

目前,区块链网络有公共区块链、私有区块链和联盟(行业)区块链3种类型。

1. 公共区块链

公共区块链(Public Block Chains)没有访问限制。任何有互联网连接的人都可以向其发送交易并成为验证者(参与执行共识协议)。通常,此类网络为那些加入区块链节点的人提供经济激励,并利用某种类型的权益证明或工作证明算法。

2. 私有区块链

私有区块链(Private Block Chains)需获得许可,除非网络管理员的邀请,否则无法加入。参与者和验证者访问受到限制。那些对区块链技术感兴趣但对公有区块链提供的控制水平不满意的公司而言,这种类型的区块链可以被视为中间地带。通常,它们寻求将区块链纳入其会计和记录保存程序,但不会牺牲自主权并冒着将敏感数据暴露给公共互联网的风险。

3. 联盟(行业)区块链

联盟区块链(Consortium Block Chains)通常被认为是半分散的。由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。

1.4.3 核心技术

区块链主要解决交易的信任和安全问题,它针对这个问题提出了四个核心技术。

(1)分布式账本。分布式账本就是交易记账由分布在不同地方的多个节点共同完成,而且每个节点都记录的是完整的账目,因此它们都可以参与监督交易的合法性,同时也可以共同为其作证。

与传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般通过中心节点向其他备份节点同步数据。

没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或被贿赂而记假账的可能性。同时,由于记账节点足够多,从理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。

(2)非对称加密和授权技术。存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问,从而保证了数据的安全和个人的隐私。

(3)共识机制。共识机制就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了4种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得了平衡。

区块链的共识机制具备“少数服从多数”及“人人平等”的特点。其中,“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果,直至被其他节点认同,最后有可能成为最终共识结果。

以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造一条不存在的记录。当加入区块链的节点足够多时,可以杜绝造假的可能。

(4)智能合约。智能合约是基于这些可信的不可篡改的数据,可以自动化地执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,就很容易在一些标准化的保险产品中,去进行自动化的理赔。

在保险公司的日常业务中,虽然交易不像银行和证券行业那样频繁,但是对可信数据的依赖是有增无减的。因此利用区块链技术,从数据管理的角度切入,能够有效地帮助保险公司提高风险管理能力。具体来讲,主要分为投保人风险管理和保险公司的风险监督。

1.4.4 共识

1. 拜占庭将军问题

拜占庭将军问题(Byzantine Failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御,每个军队都距离很远,将军与将军之间只能靠信差传消息。在战争时,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能会有叛徒和间谍,不仅会左右将军的决定而且会扰乱整体军队的秩序,导致决策结果并不代表大多数人的意见。这时,在已知有成员谋反的情况下,其余忠诚的将军如何在不受叛徒的影响下达成一致的协议,拜占庭将军问题就此形成了。

拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军必须全体一致的决定是否攻击某支敌军。问题是这些将军在地理上是分隔开的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军不希望进攻时促成进攻行动;迷惑某些将军,使他们无法做出决定。只有排除干扰,完全达成一致的努力才能获得胜利。

拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开,以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效情况,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。

很多经典算法问题只有在n≥3t+1时才有解,如拜占庭将军问题,其中n是系统中进程的总数。

2. PBFT

PBFT(Practical Byzantine Fault Tolerance)为实用拜占庭容错算法。该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。

3. PoW

工作量证明(Proof of Work,PoW)。比特币采用的共识算法就是PoW,从专业角度来讲,矿工在挖一个新的区块时,必须对SHA-256密码散列函数进行运算,区块中的随机散列值以一个或多个0开始。随着0数目的上升,找到这个解所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解。你能够获得的币的数量,取决于挖矿贡献的有效工作,也就是说,用于挖矿的矿机的性能越好,分给你的收益就会越多,这就是根据工作证明来执行币的分配方式。

PoW机制的设计目的是保证安全。无论是在中心化还是非中心化系统中,防止作弊都是很重要的。PoW假设大多数人不会作弊,如果你想作弊,你要有压倒大多数人的算力(51%攻击)。

51%攻击,又称为Majority attack,就是利用一些虚拟区块链货币使用算力作为竞争条件的特点,使用算力优势撤销自己已经发生的付款交易。如果有人掌握了50%以上的算力,他能够比其他人更快地找到开采区块需要的那个随机数,因此他实际上拥有了控制那个区块的有效权利。

因为作弊要付出一定成本,作弊者就会谨慎对待。在比特币的PoW机制中,由于获得计算结果的概率趋近于所占算力比例,因此在不掌握51%以上算力的前提下,矿工欺诈的成本要显著高于诚实挖矿,甚至不可能完成欺诈(由于概率过低)。

4. PoS

PoS(Proof of Stake)直译过来就是权益证明,即直接证明你持有的份额。由于比特币的PoW机制决定了谁的算力强谁就能获得更多收益,拥有更大的记账权。类似比特币这样的PoW币种挖矿带来了巨大的电力能源消耗,为了解决这个问题,因此有了PoS。PoS试图解决PoW机制中大量资源被浪费的情况。这种机制通过计算你持有占总币数的百分比,以及占有币数的时间来决定记账权。在现实世界中PoS很普遍,最为熟知的例子就是股票。股票是用来记录股权的证明,股票持有量多的,拥有更高更多的投票权和收益权。

Pos也能防作弊,如果一名持有51%以上股权的人作弊,他同时会承担相应的损失。PoS机制由股东自己保证安全,工作原理是利益捆绑。在这种模式下,不持有PoS的人无法对PoS构成威胁。PoS的安全取决于持有者,与其他任何因素无关。

5. DPoS

DPoS(Delegated Proof of Stake)即委托权益证明,是PoS的进化方案,由Dan Larimer发明。在常规PoW和PoS中,一大影响效率之处在于任何一个新加入的Block,都需要被整个网络所有节点确认。DPoS优化方案在于:通过不同的策略,不定时地选中一小群节点,这一小群节点做新区块的创建、验证、签名和相互监督,这样就大幅减少了区块创建和确认所需要消耗的时间和算力成本。

6. PoW + PoS混合机制

为了结合两种挖矿方式的优点,开始有了基于PoW+PoS混合共识机制的币。例如,Hcash,以及以太坊ETH也正在向PoW+PoS混合挖升级矿转变。PoW + PoS混合机制的优势是它能够将受众群体最大化。

假设一个币的机制是PoW + PoS的混合机制。那么持有该币的用户与矿工均可以参与投票,共同参与该币社区的重大决定,持币者与矿工都可以影响预先编制好的更新,如隔离见证(SegWit)、增大区块等。如果这些更新被广泛认可,无须开发者干预,链就会自动分叉以配合更新。这才是真正的去中心化。

以混合机制来实现广义上的DAO(去中心化自治组织)的高效运行。通过PoW+PoS公平的按持币数量与工作量分配投票权重,实现社区自治。

7. IOTA

IOTA是一种为物联网(IoT)全新优化的新型小额支付加密货币。不像为其他用途所设计的比特币那样具有复杂的区块链结构。顾名思义,IOTA的设计目标就是尽量使其轻量化,并且IOTA主要侧重于“物联网(IoT)”部分。

据估计,在2020年之后的十来年会有500亿的物联网连接设备渗透到现代社会之中。这些相互连接的设备网络将无缝连接我们,使数字化世界更加完整。当然,这些相互连接绑定在一起的物联网也会面临大量障碍需要客服解决,其中一个主要的问题就是小额交易。物联网设备必须能够彼此之间无摩擦地进行自动支付,并且无须在产品设计之中妥协,而引入额外的硬件。这就是IOTA上述构想的原因。

虽然IOTA是为解决物联网(IoT)的可扩展性问题而开发的,但其底层协议与IoT是不相关的,它可被应用于其他任何具有小额支付交易的应用之中。IOTA背后的主要创新之处在于,Tangle是一种革命性的新型无区块分布式分类账,具有可扩展性、轻便性,并且首次使用无须任何费用即可转让价值。与今天的区块链不同,共识是系统的内在部分,形成分散和自我调节的对等网络。其核心思想是解决固有区块链的限制问题。Tangle是一个全新开源免许可的分布式账本架构,为业界引入了一个安全、可扩展、轻量级和零费用的事务结算解决方案。特别针对物联网和机器对机器的支付,该平台定位成为实时结算和数据完整性的标准层。

1.4.5 侧链

为方便数字资产在不同区块链间互相转移,侧链(Sidechain)技术应运而生。简单地说,侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。侧链完全独立于比特币区块链,但是这两个账本之间能够“互相操作”,实现交互。

侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨胀,实际上是一种天然的分片机制。侧链有独立的区块链,有独立的受托人或见证人,同时也有独立的节点网络,也就是说,一个侧链产生的区块只会在所有安装了该侧链的节点之间进行广播。

独立性既是优点,也是缺点。开发者完成了DAPP的开发工作之后,还要考虑运维。也就是说,要寻找足够的节点来运行它,否则难以维持足够的安全性。从这一点来看,与以太坊相比,这是一个缺陷,在以太坊上一旦发布一个DAPP,所有的节点都可以为它工作,并为它提供安全保障。

但是侧链架构依然有存在的必要性,因为并非所有的应用都需要那么高的安全性。侧链给用户提供了一种可以选择的灵活性。例如,假设有1 000个节点,那么其中有的DAPP比较重要,需要500个节点来运行它,有的DAPP不那么重要,可能只需要100个节点,这完全是由用户和开发者决定的。另外,对于比较重要的、安全性要求较高的应用,可以选择在主链上开发,但是不可能对所有开发者开放这种权力,这还是为了避免主链的膨胀和不可控(DAO事件)。

侧链的灵活性还表现在,所有的区块链参数是可以定制的,如区块间隔、区块奖励、交易费的去向等,高级用户还可以修改共识算法。不过最重要的还是业务逻辑,在侧链上可以轻易地开发出与业务相关的交易类型或智能合约。