由浅入深理解区块链技术

2023-11-02

一、区块链技术概述

        区块链技术的核心思想与密码朋克组织的渊源很深,这个组织由一批致力于个人隐私保护的密码学爱好者组成,他们认为在互联网环境下想要保护个人隐私,应该使用基于技术的而非其他组织背书的加密方法,不能够全部依靠大型机构提供的加密工具,以免个人隐私问题受到侵犯。中本聪作为密码朋克组织中一员创造了区块链系统。这个组织中除了中本聪外,还有许多著名的信息自由主义者,例如”维基解密”的创始人朱利安·保罗·阿桑奇(Julian Paul Assange)、Facebook的创始人之一肖恩·帕克(Sean Parker)、BT下载的创始人布拉姆·科恩(Bram Cohen)等。如今,密码朋克们的作品,大多已经成为互联网时代价值传输的底层协议,而前密码朋克时代传承至今的RSA等加密技术,在区块链系统中作为核心技术被应用。

二、区块链技术原理

1. 区块链基础运行原理

        区块链技术不同于大数据与云计算等信息技术,它的原理更加复杂且会涉及到密码学原理。为了更清楚地描述区块链技术,我们先从区块链技术最初也是最典型的应用实例讲起,其机制可以帮助大家更好地理解区块链的运行原理。

(1)区块构建

        区块链系统用户节点参与维护区块链网络的行为需要被激励,激励的手段就是向其发放数据认证,从而使区块链中的用户节点都会愿意为此做出维护行为,但维护行为的需求是有限的,那么到底挑选谁来进行这次维护呢?共识机制由此产生。其为一种利用计算机硬件进行数学运算的行为,是区块链网络挑选单次网络维护(记账)节点的一种手段,谁在最短的时间内计算出了正确的结果,谁就拥有此次记账的权利,并将在记账完成后获得激励。用户在进行共识计算时需要投入很多的成本,包括硬件成本、时间成本、电力成本等,区块链网络使用的这种挑选网络维护节点的机制,被称为POW(工作量证明)机制。

        在理解了网络维护人的挑选机制后,区块链网络维护原理也就容易理解了。区块链网络中的每次数据更新都会带来一条新的数据记录,而同时发生数据变化方会在网络中进行广播,当其他用户收到了广播后基于将把数据记录在信息池中,当信息池中占用的空间达到1M后,数据会被打成一个含有验证签名(数学运算结果)的数据包,即区块。区块中的验证签名是基于POW机制下的计算结果生成的,且包含了对前一区块的验证签名的验证,那么每一个区块都有唯一确定的前一个区块,即所有区块都是有前后顺序的。这些区块按照时间顺序串联记录在每个用户的本地存储空间中,形成链状的数据存储结构,即账本。每段时间新产生的区块由被POW机制选出来的网络维护节点(记账节点)来进行串联操作(记账),并广播给所有用户节点使其验证并添加这个新区块,以保证网络中的所有节点有相同的数据记录。

        现在我们互补了解区块链系统的基本机制了,即所有用户都拥有相同的链状数据记录,并且新的数据会由pow机制选择记账节点进行记账并广播进行全网同步。那么在这种以算力强弱来决定谁记录数据的机制下,若恶意节点想要篡改某一个区块的数据,它必须在很短的时间内,把篡改目标区块以及之后所有的区块都重新计算一遍验证签名,再把新生成的账本同步给其他人。又因为区块链网络一般中规定最长链才是正确的链,所以恶意节点还必须在赶上现有区块的高度的同时,让自己篡改后的账本成为最长链,误导其他用户节点认为其新账本是正确的账本。而在恶意节点进行这些计算和操作的同时,其他矿工们已经在原链上继续向后记账了,且就算其达到这些要求,其新账本还需要其他节点验证通过才能成功进行账本同步。这几乎是不可能办到的事情。

(2)区块内容确认

       在区块链网络中,只有最终记录在主链上的数据才是有效的内容。每一条数据都需要进行全网的确认,验证失败的异常数据会被直接丢弃,而通过验证的数据则会被节点记录在信息池中,然后形成区块。但由于复杂的网络拓扑结构,每个节点新生成区块中的数据顺序或数据集合可能不同,基于前文关于共识机制的介绍可知,只有记账节点可以进行记账操作,以确定唯一的区块。但有网络延迟的情况下,还有可能出现节点同时收到两个有效区块的情况,这时节点的账本将呈Y字型分叉,同时在这两个分叉上记录后面的数据,直到一条分叉先达到一定的长度的被选为主链,而另一条分叉将自动被舍弃。

        在经历了反复的确认与筛选后,区块内容的数据才会最终出现在主链上,完成数据确认的过程。这往往会经历比较长的时间,包括数据传输、数据验证等的较短时间与共识计算与分叉筛选等的较长时间,平均在十分钟左右。因此数据确认时间过长的是区块链的一个缺点,它使区块链难以进行实时支付,而缩短数据确认时间也成为了区块链技术发展的重要方向。

(3)账户管理

        纸币不存在账户管理的问题,因为它是有实体的,谁持有纸币实体,纸币就自然归属于谁,但在电子信息时代,账户管理是一个复杂的问题。对于银行来说,每个账户都与客户的身份信息联系在一起,客户通过身份核验后作为该账户唯一对应的所有人,通过银行卡、信用卡、手机银行等媒介发起这个账户的支付指令,而这个账户的余额、数据记录等信息一般被存储在银行的多个数据库中进行备份,以免出现意外的情况。而对于区块链来说,账户与用户的真实身份无关,账户也不包含任何数据信息,只有一对公钥和私钥。公钥与私钥的概念涉及到密码学知识,这里只需知道私钥可以计算出公钥,公钥不能反推私钥,但可以验证私钥是否与自己匹配。

        区块链网络在进行登录时,需要验证的就是账户的私钥,私钥是用户对账户所有权的唯一证明。那么一个人可以拥有多个区块链账户,只要记住每个账户的私钥即可。而账户名又称账户地址,是由账户的公钥进行运算推导后,得出的一串数字地址,有了对方的账户地址后就可以对其发起数据更改,或是查询其数据记录等。这么看来,可以将区块链账户的公私钥理解为用户名和密码,只是用户名可以由密码计算推导出来,用户名又可以独立对密码进行验证,而对外公开的账户名又是依据用户名推导出来的。

        除了账户验证方式不同之外,区块链并不单独记录账户余额,每次查询账户余额都基于之前的数据记录重新计算得出。因为一个用户可以拥有无数个区块链账户,那么区块链账户的总量可能是无限大的。而如果想要保存每个账户的余额,基于前面所讲的区块链网络运行原理,就需要在每个用户节点的账本中都实时记录所有账户的余额,也就是说每一个区块里都要有当前所有账户余额的数据。这将占用区块的很多空间,且在验证区块的时候需要对每个账户的余额进行追溯验证,这将大大降低区块的验证效率。既然区块链网络中的每一个节点都有相同的全部数据记录,那么只需在本地对此账户的全部数据进行追溯和计算,就可以得到其当前的账户余额信息。

2. 区块链数据结构

        区块链在本质上是一种分布式的存储系统,由于其采用了两方数据记账式的存储模型,也可以称其为分布式记账系统。其链式的存储结构如下图所示:

图1 单区块结构

        每个区块都包含3个部分,分别是区块头、数据数量和数据列表。数据列表是区块的核心内容,列表承载了上个区块生成后至这个区块生成的这段时间内全部的数据;数据数量是对本区块数据条数的声明;区块头主要用来验证区块信息以及链接上一个区块。区块头的结构相对复杂,主要包括版本号、上一个区块的哈希值、用于验证区块的哈希默克尔树树根值、生成区块的时间戳、pow的目标难度值与pow计算结果,如图2所示。

图2 区块头间的联系

        每个区块头都包含的上一个区块的哈希值以及本区块的哈希默克尔树树根值,这是区块链安全机制的基础。哈希运算是一种将任意长度的数据信息转换成固定长度的二进制数列的运算方式。从专业上讲哈希运算是一种不可逆的数据摘要算法,这里不做具体解释,而哈希值则是指对某数据信息进行哈希运算得出的摘要值。只有完全相同的数据信息经过相同的哈希算法运算,才能得到相同的哈希值。而不同的数据信息往往会得到不同的哈希值,且数据信息中的任何改动都会导致其哈希值变得截然不同,所以哈希值可以用来对数据做相同验证对于区块链来说,只要两个区块的哈希值相同,那么就可以认为这两个区块是完全相同的。不同的数据信息产生相同哈希值的情况几乎不会出现,所以哈希值还可以作为区块的唯一标识。部分区块链系统使用的哈希算法SHA256,可以生成 个不同的哈希值,如此庞大的哈希数据集基本可以保证任意不同的数据都有不同的哈希值,其运算的输入与结果形式如图3所示。

图3 哈希运算示意图

        而哈希默克尔树的作用主要是快速归纳和校验区块数据的完整性,它会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个哈希节点,即哈希默克尔根值,在校验区块数据完整性和一致性时,只需要对比这个根植是否一致即可。这种方式极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,在不运行完整区块链网络节点的情况下,也能够对数据进行检验。

        除了这种特殊的链式数据结构外,区块链通过共识机制保证每一个节点上都记录了相同的数据,且每个节点的权利和义务完全一致,所有节点共同维护整个区块链系统的运行,任何一个节点的宕机都不会影响系统的稳定运行,这就是区块链的分布式与去中心化特点的由来。而这种链式的分布存储结构是区块链技术的根本特点,使其与其他平台类底层技术区分开来,独立成为一种新的技术。

3. 区块链整体架构

        区块链的整体架构如图所示,包括数据层、网络层、共识层、激励层、合约层、应用层六层。

· 数据层已在上文着重介绍过,是一切区块链技术的底层依赖,也是区块链的本质。

图7.4 区块链五层模型

· 网络层是进行点对点沟通和广播多播的部分,保证数据数据确认的顺利进行。正是由于区块链点对点沟通的特性,使数据传输是分散在各个节点之间进行的,部分节点或网络遭到破坏对其他部分影响很小。

· 共识层是为了将区块链网络中各节点的数据快速进行统一,保证全网数据的一致性。共识算法基本分为证明类、拜占庭类、传统共识类和混合类这几种,之前介绍常规区块链时涉及到的POW(工作量证明)机制就是一种典型的证明类共识机制。但POW共识算法的耗费的成本太大,区块链应用现在已经开始逐步放弃了POW共识算法转向其他的共识算法。

· 合约层是在底层技术的基础上对外提供的一种用于编写可执行代码的接口,也就是智能合约所在的部分。智能合约是可以存储在区块链中的一段代码,它们可以被区块链上的数据所触发,被触发后的代码可以从区块链上读取数据或者向区块链上写入数据,以助于区块链平台的使用开发其定制化的实际应用。

· 应用层可以封装区块链的各种应用场景,例如搭建在以太坊上的各类应用有以太猫游戏(CryptoKittes)、开源开发者激励网络(Giten)、基于真实世界事件的观测平台(Veil)等。

三、区块链特征

1. 技术特征

(1)分布协作

        区块链需要链中所有或部分指定节点协作进行数据的确认,共同维护区块链网络,基于非对称加密的签名技术保障链上一切数据与认证可追溯,实现数据的可靠分布式协作。

(2)难以篡改

        因为区块链特殊的链式数据结构,以及全节点拥有全部的数据记录的数据存储方式,篡改历史记录至少需要一半以上节点的验证通过才有可能实现,包括区块链运营人员在内的所有人都很难实现链上数据的修改。

(3)强制执行

        智能合约代码遵循区块生成流程写入区块链,保证了合约的可靠和公开性,当智能合约的条件被触发后,合约内容将依照具体的代码逻辑被强制执行。

(4)扩展性高

        由于区块链节点不依赖任何中心组织或节点,因此只要有一个节点在运行那么区块链网络就依旧在运转。同时,新的参与方作为新节点接入区块链网络的成本低,且几乎没有任何限制,整个区块链网络具备较高的拓展性。

2. 功能特征

(1)去中心化

        在传统的平台技术中,中心决策是非常常见的一种数据处理方式,例如银行传统的转账方式中,数据信息要经过银行的中心服务器集群进行处理,通过层层的数据上传和指令分发完成两个账户间的数据变化。而区块链中的每条数据都是数据发生人双方直接进行沟通的,从发起到完成确认,不经过任何中介机构,所有节点都是平等的,具有完全相同的权限,这种在网络中点对点沟通的模式,使区块链应用免于中介的风险。

        需要注意的是,区块链虽然经常被称为分布式账本,甚至其本质就是一种分布式的存储系统,但区块链与常规的分布式系统不同,它的分布式结构更加特殊。分布式是与中心化相对应的一个概念,中心化结构中的所有分节点都只与中心节点进行数据交互,相互之间没有任何联系,因此中心节点需要承担全部的负载,一个中心化系统的效率基本只与中心节点的处理速度相关,同时一旦中心节点出现阻塞、死锁、宕机等问题,整个中心化系统就会随之停滞运行甚至直接崩溃。而分布式结构中的特点则是存在多个可以与其他节点的进行数据交互的节点,分布式网络存储技术则是将数据分散的存储于多台独立的机器设备上。这听起来有些拗口,但如果对其基于中心化特点进行分类描述就容易理解了,分布式结构包括了多中心化结构与去中心化结构。

        多中心化系统是指由多个中心化系统构成的系统,其中每一个中心化系统都包括一个主节点和若干个从节点。在进行任务处理时,由主节点将任务拆解为多个分任务,并分别下发至其下属的多个从节点同时进行处理。从节点将处理结果回传至主节点后,主节点将对各个分任务的处理结果进行整合,最终完成任务。当然这只是一个简化的任务处理描述,多中心化系统可能存在多层主从结构,形成树状的任务分配结构。同时,从节点还可能听命于多个主节点的调配,基于复杂的任务管理机制,实现效率最大化。但多中心化与去中心的根本区别在于是否有一个中心节点控制着各个主节点的运行,如果最顶层的节点是多个节点,那么它就是去中心化,相反,如果顶层只有一个节点,它就是多中心化的。

        在去中心化里,还有更为特殊的一种不存在任何中心的结构,可以称其为完全去中心化结构,这也就是点对点网络结构,这种结构在常规区块链网络中就有所体现。点对点网络结构的相对优点是高容错、节点拓展性强、隐私性强和数据一致等,但相应也存在冗余通信、消息延迟等问题。

图5  网络结构划分示意图

        一般区块链领域内强调的”去中心化”,大多指的是系统的归属层面。系统归于社区和所有账户是去中心化的,系统归于机构甚至某个人则是中心化的。去中心化是区块链的共同特征,但点对点网络这种完全去中心化结构却在当前的应用较少,只有公有链属于这种结构,因为全世界任何人都可以随时进入到系统中进行读取数据、发送可确认数据、竞争记账行为,这导致了其安全性和系统效率不能得到保障。私有链往往具有一个或多个中心对节点进行管控,所有操作均需得到该中心的许可并受其约束和限制,虽然其进行常规数据处理时采用去中心化的机制,但它在严格意义只是一种分布式的区块链部署模型。而联盟链则可被视为私有链的集合,是公有链在安全性与高效性上的妥协,它采用了多中心的技术架构。

(2)去信任化

        区块链由于具有不可篡改的天然特点,基于共识算法保证数据一致,系统中的任何节点都无法篡改和伪造数据,所有数据内容都是确定的、没有争议的,数据将不存在信用风险,那么区块链系统也就具备了去信任化特征。

        基于区块中承载内容由交易到智能合约的变化,区块链的去信任化有两个阶段,第一阶段是对区块链网络中历史数据行为真实性的信任,第二阶段是以智能合约规则为基础,对未来数据行为的信任。

        第一阶段对历史行为真实性的信任,可以简单理解为区块链系统免除了证明历史数据的过程。当我们向别人说明某事曾经发生过时,需要有证据才能让别人相信。例如进行网络购物时购物平台提供的电子交易单是证据、在外用餐时餐厅提供的税务局发票是证据、或者在使用夫妻身份购房时机构提供的结婚证是证据。而在接受这些信息的人也需要对这些证据验真才能确信这些事确实是发生过的,与前文对应的,在出现网络购物纠纷时,需要查询购物平台的电子交易单是否真实存在;进行餐费报销时,需要对发票的签章进行核验;确认两人夫妻身份时,需要对结婚证的防伪标志进行核验。但区块链系统的数据被认为是不可篡改和伪造的,因此只要是向链上的其他节点说明一件历史发生的事就不需要任何第三方证明,因为数据块上的信息随时可以被拿出来直接考证,这便形成了区块链的历史数据去信任化。

        第二阶段对未来数据行为的信任,因为在理想的状态下,区块链的智能合约是与业务绑定的,即智能合约在区块链系统中具备强制执行力。因为智能代码是完全公开的,且被记录在主链中被所有账户所储存。在智能合约被调用或是被某一机制触发后数据更改将被强制执行等操作,不存在抵赖的可能性。因此在区块链系统中的用户不必担心对方在未来的信用风险,这边形成了对未来数据去信任化。

(3)开放可追溯

        在公有链中,每一个节点的账本都完整记录了所有数据,区块链不直接进行账户信息的实时记录,而是通过追溯的方式得出账户实时信息,同时由于任何人都可以创建区块链账户以形成区块链节点,那么公有链中的信息可以被认为是对所有人公开的,这就形成了区块链的开放与可追溯特征。且因公有链的代码往往是开源的,那么开放可追溯的不仅是系统中的数据,还有整个系统的运行规则,高度的公开透明化使区块链满足了许多需要公开数据的应用场景。

        不过区块链基于原始的网络结构还发展出多种变体,例如比轻节点,以及私有链与联盟链等,这些变体不能满足严格意义上的开放可追溯。轻节点只能执行和验证数据,没有全部的数据可供回溯,因此轻节点不具备可追溯性。不过这一问题只是在于用户的选择,如果具备足够好的硬件环境,用户完全可以选择成为一个全节点而非轻节点,以便掌握全部数据。另外,加入私有链与联盟链是需要准入许可或者被验证的,读取权限是有选择性地对外开放,并非对全网公开,这也就不满足严格意义上的开放性。

四、区块链技术发展

1. 单项技术的发展

(1)数据层发展

        区块链的数据随着时间增加而不断增加,这将导致两个问题。一是新节点的准入门槛增加,因为其海量的历史数据将会占用很大的存储空间,而对存储空间的高需求将许多没有高性能设备的个人用户拒之门外。二是可扩展性与安全性的冲突,如果存在大量的非验证节点,那么在进行验证时需指定全节点,这将导致安全性下降,但又不可能要求所有的账户都是存储全部数据记录,一方面是不现实,另一方面是会导致数据同步时间过长。因此,目前的数据层的发展方向为开发能完成验证操作但无须存储完整状态数据的新型节点,但仅有验证功能的新型节点仍无法避免因出块节点高门槛而带来的中心化趋势,未来可能需要在出块节点的轻量化上进行进一步研究。

        目前含有验证功能的轻量节点有:

· 轻节点

        轻节点的专业技术名称为无状态客户端,其与全节点是一组相对应的概念。全节点就是传统意义上的区块链节点,链中的每个区块都包含区块头、数据数量、数据列表三部分,而轻节点为了保证数据轻量化,只存储区块头,不存储全量的数据列表等信息。在新块出现时,轻节点会被额外提供新块中全部所需访问状态,在收到数据后轻节点通过默克尔证明来判断数据是否在现在的区块链数据列表中,实现数据的验证,大幅降低了节点对存储空间的要求,因此轻节点能够运行在小容量的个人PC等终端设备上。当前的验证工作有了一些新进展,以太坊表示可以利用多项式承诺来代替默克尔树,好处是可以降低验证成本。

· 简洁区块链

        新的加密货币协议Coda提出了一种比轻节点更加轻量的具有验证功能的节点,支持在移动端运行。这种简洁区块链节点只需要拥有当前的哈希默克尔根就可以通过一种密码学证明对数据进行快速验证。

(2)网络层发展

        网络层是区块链中的底层支持,控制着数据的开放权限与节点准入等问题。由于对数据公开需求不同,区块链发展出了不同的网络组织形式,主要包括以下几种:

· 公有链

        公有链即区块链最初始的网络形式,任何人都可以读取数据、发送数据数据能够获得有效确认的共识区块链。它不受任何人控制,也不归任何人所有,被认为是”完全去中心化”的区块链,大众熟知的区块链系统就就是典型的公有链。

        然而由于每个人都可以记账,数据确认是时间会很长,整个区块链网络的效率较低。

· 私有链  

        私有链仅对单独的个人或是实体开放,由一个实体来控制所有的数据,即写入权掌握在某个人或是某个组织手中,其具有交易速度快、隐私性强、规则可修改、交易成本低等特点。私有链严格的准入机制,链中的节点具有很高的可信度,因此交易确认并不需要所有节点参与,这就使其具备了极高的交易速度,几乎与常规数据库速度在同一个量级。同时严格的准入机制还为私有链带来了高隐私性的特点,链上的数据不会被链外的任何人获取。因为私有是被个人或组织控制的,控制人可以修改链的规则,例如抛弃交易或还原交易等,而且所有节点受到控制人控制那么就不再需要为节点的记账等工作发放奖励,且各个节点间也不需要完全的协议,因此私有链几乎没有交易成本。

· 联盟链

        联盟链是去中心化程度介于公有链与私有链中间的一种链,其只针对某个特定群体的成员和有限的第三方开放,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定,其他的节点可以参与交易但没有记账权限。或者是条件开放区块链的根哈希与应用程序接口,限制访问次数或是访问者身份。联盟链往往被用于机构间的协作,同时具备私有链和公有链的优点,但又因为其半私有的形式,导致其各方面的优点都不突出,是对去中心化、隐私性与区块链性能的一种折中方案。联盟链因为可以解决机构间合作问题,是目前金融领域运用最多的一种区块链网络形式。

        除了数据公开性的差异化发展,区块链扩展性的也有一定的发展,一定程度上解决了不同区块链间信息孤岛的问题,具体在以下几种不同的解决方案中有所体现:

· 跨链

        跨链是通过特定的数据同步机制,将价值在不同区块链之间进行转换的技术,实现区块链间的价值流通。跨链主要包括资产兑换与资产转移两种,资产兑换的本质与货币兑换有些类似,兑换时不会改变每个区块链上的价值总值,只是以跨链机制为中介,在不同持有人之间进行了价值兑换;而资产的转移则是直接锁定原链上的资产,并在目标链上铸造相同价值的资产。目前主流的跨链机制有选举一组节点在两条链之间进行验证和证明的公证人机制、通过资产锁定并设置解锁时间与条件的哈希锁定机制、分布式控制资产私钥并映射的分布式私钥控制机制等。

· 侧链

        与侧链相对应的概念是主链,早期的侧链主要是为提高区块链网络的吞吐量,而当前主要应用在数字资产在不同的区块链的转移,也就是主链与侧链之间的价值转移。转移原理为通过双向锚定冻结主链上的资产,并通过特定的协议使资产在侧链上产生并流通,当侧链完成流通之后资产再回到主链中,即解除主链资产的冻结。因此从原理上看,侧链其实是一种特殊的跨链。只要符合侧链协议,任何区块链都可以成为侧链,且侧链的设计不受主链的制约,所以当主链的拓展性较差时,可以使用侧链来对主链的功能与性能进行拓展,在一定程度上分担主链的压力。

· 多链

        多链是指同一个区块链系统具有多条链,每条链相互独立并且可以并行执行交易,可以解决单链架构隔离性、隐私性、并发能力差的问题。系统中所有的链都是架构的一部分,若架构内多条链的共识机制相同可称为同构多链,是与异构跨链的相对应的一组概念,同时同构多链也是侧链的变种。若多条链的共识机制不同则称为异构多链架构,例如EKT通用积分生态就是并行多主链架构,其中可以有多条并行的主链,且不同的主链可以采用不同的共识机制,为区块链的应用提供了更丰富的场景。

(3)共识层发展

        近年来共识机制的不断进步促进了区块链的发展,是区块链能够被迅速和广泛应用的重要支撑。最开始流行的工作量证明机制(PoW)到权益证明机制(PoS)都是为保证电子货币的安全发行而设计的,在性能与拓展性方面的考虑较少。之后出现的验证池pool和拜占庭容错PBFT共识机制在性能上有了很大的改进,但相应的,在去中心化上做了让步。共识机制演化的愈发复杂,若要逐一解释清楚并非易事,本书不在密码学技术上做过多描述,仅介绍各类共识算法的大致特点。目前的主流共识机制的特点如表1所示。

表1 区块链共识机制特点

共识机制

去中心化

共识速度

成本

工作量证明(POW)

权益证明(POS)

较高

较低

较高

股份授权证明(DPOS)

中等

较高

中等

验证池(POOL)

较低

较高

拜占庭容错(BFT)

较低

较高

权威证明(PoA)

雪崩协议(Avalanche)

较高

较高

较低

(4)合约层发展

        合约层的智能合约是区块链在实际应用中实现自动交易功能非常重要的一环,智能合约的发展方向主要在于运行环境的突破,因为运行环境与区块链整体性能的约束,目前智能合约在实际应用仅能发挥”合约”的作用,而离实现”智能”还有一定距离。

        区块链中的智能合约概念最早被以太坊提出,智能合约以代码形式写入区块链,在之后的数据中依靠条件语句触发合约规则的执行。但智能合约的执行会为整个区块链网络带来一定的安全隐患,因此智能合约一般会在沙箱环境中运行,目前以太坊的EVM与超级账本的Docker容器即是区块链中的沙箱环境。另外智能合约的编程语言种类也逐步增加,以太坊目前仅支持特定的Solidity语言,而后的超级账本还支持golang、JAVA、Python等语言。

        目前智能合约还无法在高隐私保护或是跨链等复杂场景中应用,主要因为其受制于区块链整体性能的约束,而绕开区块链性能约束的办法主要为通过实现合约层与共识层的解绑,使智能合约运行在可信的硬件环境总,共识层仅记录智能合约执行结果,不过这类解决方案的安全性等问题还在持续的讨论中。

(5)应用层发展

        作为区块链的展示层,应用层中的应用场景一般就是与用户直接接触的业务场景。应用层有点像是平常的APP、web网页等前端应用概念,应用层将请求数据发送给区块链网络,在进行完数据处理之后,区块链网络又会将数据结果返回给应用层,使其与用户进行交互。

        应用层的发展就是前台业务与技术的发展,几乎不属于区块链技术的范畴,因此不做过多讨论。

2. 总体发展

        区块链作为本世纪才出现的新技术,虽然脱胎于虚拟货币网络仅十余年,但其发展速度极快。区块链的发展可以分为三个阶段,第一阶段是加密货币时代,区块链网络很高的去中心化特性;第二阶段标志是智能合约的出现,是能合约使区块链成为一种能够承载应用场景的开放的底层平台,为商业化提供了可行性基础;第三阶段是区块链与物联网的结合,通过物联网技术与硬件相连接,为更多的行业提供去中心化的自主可信平台。

图6 区块链不可能三角

        虽然已经进入了区块链发展的第三阶段,但目前区块链还存在”不可能三角”的说法,也称为”三元悖论”,指区块链网络无论采用哪种共识机制来决定新区块的生成方式,皆无法同时兼顾扩展性、安全隐私性、去中心这三项要求,至多只能三者取其二,如图7.所示。这种说法暂时还没有严格的证明,但在实践中确实没有一个区块链项目做到了三者兼顾,因此这个问题的确是区块链领域的当前难题,同时也是研究的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由浅入深理解区块链技术 的相关文章

随机推荐

  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 【转载】odoo技术开发白皮书 第一部分 第九章 权限

    转载 http book odoomommy com chapter1 README8 html 第九章 权限 Odoo的权限管理 从粗到细可以大概分为四个等级 对象级 视图级 字段级 记录级 什么意思呢 总结起来大概如下面的描述 对象级
  • 大家的毕业设计怎么做的?跟我一样吗?无极低码说你:只管建库建表,剩下的交给我

    首先呢 介绍一下无敌低代码平台 无极低代码平台是作者自己搭建的一个框架 刚开始由3行代码写服务升级而来 3行代码写服务当然也是作者自己写的 目的就是为了减少基础的开发工作 让不会后端开发的人员能够通过简单的步骤实现服务接口的编写 后面觉得3
  • 对比 Exception 和 Error,运行时异常与一般异常有什么区别?

    相同点 Exception 和 Error 都是继承了 Throwable 类 在 Java 中只有 Throwable 类型的实例才可以被抛出 throw 或者捕获 catch 它是异常处理机制的基本组成类型 Exception 和 Er
  • vue5种方式实现页面“刷新“

    vue中五种方式实现页面 刷新 1 使用window location reload 强制刷新 都会使页面有短暂的空白 体验效果不是特别好 home vue
  • 提高生活、学习、工作效率的方法——时间管理Vs个人管理

    首先 我想对于大家来说 时间管理这个词应该并不陌生 不过 在开会之前 又有几个知道呢 反正我当时并不知道 这就需要反思了 不过这里 先不做反思 先说说时间管理 初次接触到这个词 我想的是 为什么要管理 怎样进行时间管理 该怎么管理 随后 米
  • 12. 集群调度

    文章目录 简介 调度过程 自定义调度器 调度亲和性 Node亲和性 preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringE
  • 针对于MLE和MLP的代码例子实现

    背景 首先该例子来源于CSDN 详解最大似然估计 MLE 最大后验概率估计 MAP 以及贝叶斯公式的理解 nebulaf91的博客 这里的代码作为对上述内容的补充和实现 代码 import numpy as np import matplo
  • SSD接口种类

    转自微信公众号 存储随笔 随着SSD价格的不断下降以及SSD性能的不断提升 越来越多的朋友开始考虑给自己的电脑升级SSD固态硬盘 但是市面上现在SSD的根据不同的大小与尺寸 有多种多样的接口的SSD 本篇文章就当下主流的一些SSD接口进行简
  • OpenStack核心组件-horizon web 界面管理

    1 horizon 介绍 Horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 UI 服务 通过 Horizone 所提供的 DashBoard 服务 管理员可以使用通过 WEB UI 对 Opensta
  • Oracle 批量提交,批量绑定 OCIBindByName 和OCIBindObject 的使用

    穷遍所有OCI文档找不出一个能绑定多行数据的说明和示例 自己尝试快两周解决了Oracle Spatial 批量绑定将Oracle的写入效率提升到了5000行左右 以下是一点心得 Oracle OCI 基本操作 本文不多说 假设你会用基本的O
  • [面试题]java程序内存泄漏怎么排查

    java程序内存泄漏怎么排查 首先了解几个命令 怎么判断当前程序有没有出现内存溢出 模拟代码 模拟步骤 判断依据 出现内存溢出怎么办 最原始的方法 使用JProfiler解析hprof文件 在线dump文件分析网站https console
  • PCB相关知识-封装+元件属性+印制电路板PCB

    文章目录 封装Footprint 元件属性Properties 印制电路板PCB 封装Footprint 每个元器件都对应一个封装 封装相当于元器件在现实中的载体 原理图导入到PCB中的除了网络信息 还有封装信息 我们在PCB中移动摆放的就
  • vscode 好用的插件推荐

    vscode 好用的插件推荐 文章目录 vscode 好用的插件推荐 1 Tabnine 安装 使用 2 Git Graph 安装 使用 3 Comment Translate 安装 使用 1 Tabnine Tabnine 需要大量的代码
  • Vue3 Vite4 ElementPlus TS模板(含Vue-Router4+Pinia4)

    引言 手动安装配置Vue3 ElementPlus模板比较繁琐 网上寻找一些模板不太符合自己预期 因此花点精力搭建一个符合自己需求的架子 采用最新的组件 版本如下 vite 4 3 9 vite plugin mock 2 9 8 vue
  • Openwrt 自编译后安装官方ipk时产生kernel MD5不兼容的问题处理

    目录 环境 原因 解决方法 最后 环境 芯片 V3S 软件 基于Openwrt 19 07 3的自编译版本 问题 在安装需要校验kernel版本的ipk时 无法安装 报错 satisfy dependencies for Cannot sa
  • Linux·深入理解 ext4 等 Linux 文件系统

    了解 ext4 的历史 包括其与 ext3 和之前的其它文件系统之间的区别 目前的大部分 Linux 文件系统都默认采用 ext4 文件系统 正如以前的 Linux 发行版默认使用 ext3 ext2 以及更久前的 ext 对于不熟悉 Li
  • 网络安全课程设计Java实现DES加密算法(可视化界面)代码+设计文档

    一 DES加密 解密算法 DES是一种对称加密算法 DES算法明文分组长度为64 bit 秘钥长度也为64 bit 但是实际密钥长度只有56位 其中第8 16 24 32 40 48 56 64位是奇偶校验位 用于检查密钥在产生 分配及存储
  • 安装 Nginx后无法正常显示欢迎界面的问题--解决方案

    问题 在终端中输入 curl 127 0 0 1 后 代码中出现404 解决方案 1 卸载nginx 需要预先安装 aptitude aptitude remove nginx 2 重装nginx apt get install nginx
  • 由浅入深理解区块链技术

    一 区块链技术概述 区块链技术的核心思想与密码朋克组织的渊源很深 这个组织由一批致力于个人隐私保护的密码学爱好者组成 他们认为在互联网环境下想要保护个人隐私 应该使用基于技术的而非其他组织背书的加密方法 不能够全部依靠大型机构提供的加密工具