1、 区块链的产生
2008年,随着比特币的出现,为当今世界带来一个全新的概念,对各行各业产生深远的影响,其中包括金融业、政府部门以及媒体。把区块链描述为一场革命,而另一些人则认为,这是一种进化,而需要许多年才能从区块链获得实际利益。这些说法并不为过,但总的说来变革已经开始了;因为其颠覆性潜力已经得到了充分的认可。一些机构对于区块链的各类场景的应用研究仍处于初步探索阶段,但随着技术的开发与成熟化,必将会更快地取得进展。
区块链究竟是什么?狭义地说,区块链就是比特币的底层技术;不过,经过十几年的发展,区块链已经不再“依附于”比特币,而是独立地发展成为了一种革命性的技术,比特币则是区块链最大、最成功的应用。从密码币(cryptocurrency)角度看,区块链曾一度被认为是一类奇特的货币,但在过去的几年里,人们对区块链技术的兴趣大增;当今,一些公司和组织都在研究这一技术,并对其展开各项试验。图1.1显示了过去的几年中区块链技术发展趋势分析。
区块链技术的优势包括去中心化信任机制、成本节约、透明度以及高效性。尽管如此,这一活跃领域仍存在各种各样的挑战,例如,扩展性以及隐私性。后续章节将讨论区块链技术的局限性以及所面临的各项挑战任务。
互联网产生于庞大的组织和机构,区块链起源于极客和草根阶级。互联网解决了人类信息不对称的问题,区块链解决了人类价值不对称的问题。和互联网一样,区块链对未来社会的影响深远而又巨大,是超出人们的预想的。由于区块链从技术上和逻辑上较难理解;区块链运行的激励环节,带有货币属性,所以,常被妖魔化或者神秘化。
2008年,中本聪发表了一篇名为《比特币:P2P电子货币系统》的论文,介绍了P2P电子货币并引入了区块链这一术语。
本章简要介绍了区块链技术,包括技术基础、该技术后面的理论以及各种技术,进而用于构建今天人们所知道的区块链。
2、 什么是区块链
在详细介绍区块链技术之前,先举一个简单的例子说明什么是区块链和区块链应用:
假如您是一位股民,在某天某月某日的晚上十点钟,您的一位股友对您说了一条“某某股票将在某天在某个价位上涨停”的信息。然后您把这条信息发到您的朋友圈、微信群、朋友和父母等,这样您的这位股友就无法抵赖了。您打赏一些小费给他们感谢他们为您记住并作证,这个小费就是token,您、您的股友、“某某股票将在某天在某个价位上涨停”这句话、说这句话的的时间地点等信息打包为一个结构化的数据包,这个数据包叫“区块”,而您的朋友圈、微信群、朋友和父母等则是“链”。
到了某天股票没有涨停,反而跌停,您的股友不承认说过这样的话。您翻出账本对质,并在“链”上作证,证明他提供虚假股票信息,这就是区块链应用。还有就是股友这个节点被永远“踢”出网络。当然如果网络足够大,这个股友可能被更多的股民屏蔽。
从技术层面来看,区块链是一个基于共识机制、去中心化的公开数据库。共识机制是指在分布式系统中保证数据一致性的算法;去中心化是指参与区块链的所有节点都是权力对等的,没有高低之分,同时也指所有人都可以平等自由地参与区块链网络,唯一的限制就是个人自己的选择;公开数据库则意味着所有人都可以看到过往的区块和交易,这也保证了无法造假和改写。基于以上特性,可以总结得出:区块链由许多对等的节点组成,通过共识算法保证区块数据和交易数据的一致性,从而形成一个统一的分布式账本。
从价值层面来看,区块链是一个价值互联网,用于传递价值。目前的互联网仅用来传递消息,但是还不能可靠地传递价值;而比特币区块链却可以在全球范围内自由地传递比特币,并且能够保证不被双花、不被冒用。从这个角度来说,区块链是记录价值、传递消息和价值本身转移的一个可信账本。
在维基百科上是如此定义区块链的:一个区块链是一个基于比特币协议的不需要许可的分布式数据库,它维护了一个持续增长的不可篡改的数据记录列表,即使对于该数据库节点的运营者们也是如此。简而言之,区块链就是区块用某种方式组织起来的链条。在区块链中,信用或记录被放在各个区块中,然后用密码签名的方式“链接”到下一个区块。这些区块在系统的每一个节点上都有完整的副本,所有的信息都带有时间戳,是可追溯的。事实上,在区块链创建之初,我们在大多数情况下谈论的区块链都是比特币的底层实现方式。
3、 区块链的特征
区块链实质上是一个去中心化、分布式的数据库或账本。基于区块链的系统和以往的其他系统存在很多不同之处,以区块链技术为核心的系统包括如下典型特征:
●去中心化:简单来说,在网络上一个或多个服务器瘫痪的情况下,应用或服务仍然能够持续地运行,这就是去中心化。服务和应用部署在网络上后,尽管每个服务器都有一份数据和执行程序的副本,但是没有任何一个服务器能够绝对控制数据和程序的执行过程。
●分布式:区块链是全球化的,网络上的每个服务器或节点都互相连接在一起,服务器之间是多对多连接。区块链没有中心节点,数据分布式地存储在各个节点上,即使绝大部分节点毁灭了,只要还有1个节点存在,就可以重新建立并还原区块链数据。
●自治性:区块链是一种去中心化的、自治的交易体系,这种自治性表现在两个方面:1)所有节点都是对等的,每个节点都可以自由加入和离开,并且这一行为对整个区块链系统的运行没有任何影响。所有的节点都是按照相同的规则来达成共识,且无需其他节点的参与。2)区块链系统本身一旦运行起来,就可自行产生区块并且同步数据,无需人工参与。
●按照合约执行:区块链是按照合约执行的,第一体现在各个节点的运行规则(指的是交易、区块链或协议)上,按照既定的规则执行,一旦出现违背规则的行为,就会被其他节点所抛弃;第二体现在智能合约上,智能合约是一种可程序化的合同条款、规则或规定,包含在每个交易中,交易验证时必须先运行智能合约,只有通过了验证的交易才能被接受。
●可追溯性:区块链的数据是公开透明的,不能被篡改,而且相关交易之间有一定的关联性,因而很容易被追溯。比如比特币区块链,每一枚比特币都有其特定的来源,通过输入可以追溯到上一个交易,或者通过输出追溯到下一个交易。
此外,区块链代码本身也是可追溯的,区块链系统是开源软件,其对于所有的人都是公开的,因此任何人都可以查看并修改这些代码,不过修改后的代码需要经过开源社区上其他程序员的审核。
如图1.2所示:
区块链是由区块组成的一个链条。这意味着它是由多个区块前后连接在一起的,而交易记录则是保存在每个区块的内部,采用这种方式后,这些交易记录就不可能再被更改。在后面的章节中,我们会谈到交易记录的存储方式以及区块链的不可篡改特征是如何实现的。
原则上,区块链的核心内容是一个分布式系统,更确切地说,它是一个去中心化的分布式系统。
分布式系统是一种计算模式,其中,两个或多个节点以协调的方式相互协作,以实现一个共同的结果;其建模方式可描述为:终端用户将其视为一个单一的逻辑平台。
分布式系统中的节点是系统的组成部分,所有节点都能够相互发送和接收消息。其中,节点可以是可信节点,或者是具有缺陷的节点或者是恶意的节点,并且包含自身的内存和处理器。一个可以展示任意行为的节点也被称为拜占庭节点。这种任意行为可能包含了某种恶意操作,并对网络的运行带来负面影响,通常,网络上某个节点的任何意外行为都可以归类为拜占庭节点。此类节点通常包含了意外或恶意的行为,如图1.3所示。
分布式系统的主要挑战是节点与容错之间的协调。即使某些节点出现故障或网络链接中断,分布式系统也能继续工作,以达到预期的结果。多年来,个研究领域都很活跃,并相继产生了各种算法和机制来克服此类问题。
分布式系统设计具有较大的挑战,并随之产生了一个被称为CAP的定理,该定理指出:分布式系统不能同时拥有所期望的属性。在下节中,将简单介绍CAP定理。
distributed system design has greater challenges, and followed by has produced a theory called /span>cap>cap, which states that distributional systems cannot simultaneously possess the desired properties.
CAP定理也被称为布鲁尔定理,最初是由埃里克.布鲁尔在1998年提出的想法:2002年,赛斯.吉尔伯特和南希.林奇将其总结为分布式系统的设计定理。
CAP定理指出,任何分布式系统都不能同时具有一致性、可用性和分区容错性。
一致性是一种属性,它确保分布式系统中的所有节点都有一个最新的数据副本。
可用性意味着系统在使用过程中具有可访问性,接收传入的请求并在必要时对数据做出应有的响应。
分区容错性确保如果一组节点出现故障,分布式系统仍然能够正确地运行。
也就是说,分布式系统不能同时具备上述3个属性。而区块链则能够实现所有这些属性。
可采用复制方式实现容错机制,这也是实现容错的一种常用方法。一致性是通过一致性算法实现的,以确保所有节点都具有相同的数据副本,这也称为状态机复制。区块链基本上是一种实现状态机复制的方法。
节点可以涵盖两种类型的错误。其中,一个错误的节点只是简单地崩溃:而有缺陷的节点可以显示具有恶意或不一致的行为,它会因为误导信息而引起混乱。
在讨论分布式系统一致性问题之前,有必要回顾一下一致性机制的发展历程。
1962年9月,Paul Baran发表了一篇名为On distributed communications networks的论文,其中引入了加密签名。另外,在该论文中,还首次提出了去中心化网络这一概念。
1982年,Lamport等人提出了一项实验,即一群领导拜占庭各部军队的陆军将军,计划从某一城市进攻或撤退。这里,将军们之间唯一的沟通方式是信使,他们需要就同时进攻达成一致意见。此处的问题是,一名或多名将军或许是叛徒,可以传达一个误导信息。因此,有必要找到一种可行的机制,让将军们之间达成某种协议,这样就可以同时进行攻击,相比于分布式系统,将军可视作节点,叛国者则视作拜占庭(恶意的)节点,而信使则是将军之间的沟通渠道。
该问题于1999年由卡斯特罗和利斯科夫提出,同时发布了可用的拜占庭容错(PBFT)算法。在2009年,首个实现方案随着比特币的出现而定。其中,Proof of Work(Pow)算法形成了一种达成共识的机制。
在数据的最终状态上,一致性是指节点之间的协议过程。为了达成共识,可以使用不同的算法。在两个节点之间(例如,在客户端-服务器系统中)达成协议相对简单;但是当多个节点参与到某一个分布式系统中,则达成一致机制难以实现。因此在多个节点之间达成一致性,这一概念称为分布式一致性问题。
1.—致性机制
一致性机制定义为一组步骤,并被所有或大多数节点采用,以便在所提出的状态或值上达成一致。最近,随着比特币和区块链的出现,一致性机制已经成为人们关注的焦点。
为了在一致性机制中提供所需的结果,必须满足各种需求,简述如下.
协议:全部可信节点指定同一值;
有效性:所有可信节点的商定值必须与至少一个可信节点所提议的初始值相同;
容错性:一致性算法应该能够在出现故障或恶意节点(拜占庭节点)的情况下运行;
完整性:作为一项要求,任何节点都不可做出多次决策。在单一的一致性循环中,节点仅可制定一次决策。
2.一致性机制的类型
相应地,存在多种类型的一致性机制;一些常见的类型描述如下。
基于拜占庭式的容错:该机制不存在计算密集型操作(如部分哈希反转),这种方法依赖于一个简单的,发布签名消息的节点方案。最终,当收到一定数量的消息时,就会达成协议。
3. 优势节点一致性机制:需要在节点之间选取优势节点机制,而取得优势节点则提供结果值
现在已经存在一些方案,例如Paxos是Leslie Lamport1989年提出的最为著名的协议。Paxos节点分配了不同的角色,例如,申请人、接受者和学习者。同时,节点或进程被命名为副本,在存在故障节点的情况下,可在大多数节点之间达成一致。
RAFT则是Paxos的替代方案,其工作方式为:向节点赋予任意3种状态之一,即跟随者(Follower)、候选人(Candidate)或领导者(Leader).领导者在候选者获取足够的选票后当选,并检查当前全部变化。如果完成了大多数跟随者节点的复制,那么领导者将提交所建议的全部更改。
从分布式系统的观点来看,更多关于一致性机制的细节内容已经超出了本章的范围,稍后将对此进行完整的介绍。具体的算法将在后续章节中讨论比特币和其他区块链时加以阐述。
From the point of view of the distributed system, more details on the coherence mechanism are beyond the scope of this chapter and will be presented in full at a later stage. Specific algorithms will be discussed in subsequent sections when discussing the Bitcoin and other block chains.
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论