APP下载

区块链技术及应用

2018-06-15郭学沛杨宇光

信息安全研究 2018年6期
关键词:以太记账比特

郭学沛 杨宇光

(北京工业大学信息学部 北京 100124) (876816720@qq.com)

1 区块链概述

区块链是在区块链技术之上形成的公共数据库,是多种计算机技术的全新的、综合的应用,包含有分布式数据存储、加密算法、点对点传输、共识机制等,借此具有去中心化的特性.可信互联网的真正构建始于区块链的问世.

区块链独特之处在于能够在陌生节点之间构建点对点的可靠的信任,而无需第三方可信权威机构介入,信息得到公开的同时隐私也得到保护,所有的个人在维护自身利益之余又可一起参与决策,既提高了交易的效率,又大幅降低了成本.区块链技术的优势在于去中心化,通过运用加密算法、时间戳、树形结构、共识机制等,构建了真正去中心化的分布式可信网络,加入其中的节点无需知道并信任彼此也可进行交易,解决了目前中心化模式存在的低可靠性和低安全性、高成本、低效率等问题[1].

2 区块链分类

公有链:对节点的加入和数据的公开没有任何限制.所有节点均可在不受其他影响的情况下进行交易,以及参与其他共识决策活动.

私有链:某组织拥有并管理此种区块链.读取权限由该组织完全决定,参与节点的类型和数量也由组织控制.相比于传统的分享数据库,私有链由于控制了权限等内容,使得交易更加安全,更利用加密技术.

联盟链:部分组织共同拥有的区块链是一种特殊的私有链.已有的应用有R3区块链联盟、Chinaledger、超级账本项目联盟等[2].

数据库的创建最初是服务于文件系统的,关系数据库领域中的关系模型、事务处理、查询优化三大成就的出现满足了以银行为代表的金融机构的业务需求,进而产生了一系列的关系数据库产品.互联网行业的迅速发展对数据库也产生了更高的要求,由于非结构化数量的大量增多,NoSQL数据库应运而生并产生了一系列的相关产品.如今区块链去中心化、分布式存储的特性很好地解决了信任问题,迎合了发展迅速的去中介的共享经济,成为其理想的数据库平台.

比特币是发展最完全的区块链应用,但其仅为数字货币提供服务,为此业界推出了多种支持通用应用的区块链平台,众多公有链应用中以太坊发展最为完善,Quorum,Monax,Dfinity,HydraChain和BCOS等众多平台都是基于以太坊构建和扩展的;而联盟链中应用最广泛的通用平台则是Hyperledger Fabric.

3 区块链架构

以比特币、以太坊、超级账本三者为例来看,不同的平台在具体实现上各有不同,但整体布局上大同小异,整体上可划分为网络层、共识层、数据层、智能合约层和应用层5个层次.

3.1 网络层

区块链建立在P2P网络之上,主要服务于涉及数字资产的金融应用,且节点地位平等,对节点的出入也没有严格的控制.因此,可容忍单点故障的P2P协议就很好地满足了区块链平台的分布式要求,成为其网络传输协议首选.链上节点以平等的身份,通过扁平的拓扑结构来相互连接,各节点功能相同,无层次等级之分.

P2P协议主要用于点对点的交易和数据共享,不同的平台P2P协议的实现方式有所不同.比特币和以太坊都基于TCP协议,Hyperledger Fabric则是利用了HTTP2协议.每个节点都在实时地监听整个网络,当收到相邻节点发来的交易请求,节点会验证其数字签名,证明机制是否完备,依次来判断交易是否有效,是否值得进行下一步处理和转发,无效的交易和区块会被抛弃,减少了整个链上存储的数据量.

3.2 共识层

一致性问题历来是分布式数据库的一大难题,Paxos算法和Raft算法为该问题提供了解决方案,单一机构管理下的这些数据库无需考虑节点是否可信的问题,崩溃容错是算法唯一要解决的问题.区块链由于去中心化的特性需要多方共同管理,此时节点是否可信也需要纳入考虑的范围,需要支持拜占庭容错,复杂度明显上升.PBFT(practical Byzantine fault tolerance)将拜占庭协议的复杂度降至多项式级别,从而允许分布式系统使用拜占庭协议,PBFT由Castro和Liskov[3]提出.

Kotla等人[4]提出了Zyzzyva,充分任可节点的可信度,认为只需在发生错误后在节点间达成共识即可,正常情况下无需实时共识一致.Kwon等人[5]提出了Tendermint,类似PoS机制,采用投票机制的同时根据节点的重要程度来分配不同权重的选票,最后权重超过23即可达成共识.这样无需所有节点都参与投票,提高了共识的效率.Liu等人[6]提出了CFT(Cross Fault Tolerance),肯定了网络和拜占庭节点的可靠性,认为二者不会完全被恶意攻击者控制,简化了BFT过程.

由于节点可自由进出,恶意节点可能仿造大量无效交易进行女巫攻击,为了防止这一点,比特币平台采用了工作量证明机制,要求节点利用自己拥有的算力来完成任务,从而争夺新区快的记账权.但这样会高度依赖节点的算力,未得到记账权的节点花费的资源就全部浪费了,因此又提出了根据节点所拥有的股权多少来决定区块生成难度的权益证明机制——PoS机制.比特股又创新地建立了股份授权证明机制——DPoS机制,投票选出几位代表来轮流获得区块的记账权.

3.2.1PoW机制

PoW机制通过设计与引入分布式网络节点的算力竞争,保证数据一致性和共识.所有参与“挖矿”的网络节点的目标都是通过遍历来寻找一个随机数,以使得当前区块的区块头经过2次SHA256运算后结果小于等于某个给定值.优先实现目标的节点获得此区块的拥有权,同时获得一定比特币的回报作为挖矿的奖励.此外,比特币会动态地调整预定难度值,使得寻找随机数所需时间稳定在10 min左右.PoW共识机制关联起了比特币的发行、交易和记录,又以随机的方式提供了记账权,保证了比特币系统的安全和去中心化.

PoW 在区块链网络中的共识流程如下:

1) 通过广播,所有加入区块链网络的节点均收到新交易产生的信息.

2) 每个节点都会收集自前一区块生成以来接收到的所有交易,并根据这些交易计算出区块头部的Merkle根.节点需要将区块头中的随机数Nonce部分从0递增至1,递增的过程中不断计算区块头经过2次SHA256运算后的Hash值,直至结果小于等于当前网络给定的目标值.

3) 全网节点同时参与计算,若某节点率先达成条件找到合适的随机数,则该节点将获得新区块的记账权及一定数量的比特币作为挖矿的奖励,并将挖到的新区块向全网广播.

4) 其他节点接收到新区块后,会验证区块中包含的交易和其计算出的随机数是否符合条件,如果满足则承认该区块,将其加入区块链中,并开始争夺下一区块的记账权.

通过该机制,节点间无需交换额外的信息即可达成共识,破坏系统的代价极高,因此易于实现且难以破坏.但会造成能源(电力)和资源(算力)的浪费,同时区块的确认时间较长[8].

3.2.2PoS机制

PoS采用的是权益证明,记账权由拥有最高权益的节点获得,而非PoW机制中拥有最高算力的节点.节点对特定数量货币的所有权成为权益、币龄或币天数.币龄等于货币数量乘以最后一次交易时间长度.长期持币者有更长的币龄,币龄可以视为其在系统中的权益.PoS共识过程的难度与节点拥有的币龄成反比,累计消耗币龄最高的区块将被链接到主链.PoS机制无需消耗链外资源和能量,因此相较PoW机制很大程度上减少了能源和算力的浪费.

PoS机制直接根据矿工拥有的股权(数字货币量)来决定挖矿难度,省去了矿工购买矿机等硬件设备的花销,也节约了电力等能源的消耗:

H(n‖h)≤s(M).t,

M表示某矿工;函数s用于计算矿工拥有的股权,拥有的股权越多挖矿的整体难度就会越低,越容易找到合适的n.

PoS的优点是所需算力很少.但由于权益拥有者并非都是记账的有效参与者,因此很多时候还需通过挖矿来决定记账权[8].

3.2.3DPoS机制

DPoS在继承PoS优点的基础上,通过将记账人专业化改进了其不足.通过投票的方式选出一定数量的记账人来轮流记账,节点拥有的权益多少就是选票的多少.被选中的记账人节点代替全网的普通节点进行验证和记账,同一时刻需要90%以上的记账人节点在线才能保证安全与可靠.该共识机制中每个节点都能够自主投票来选择适合的记账人节点,且由这些节点轮流记账生成新的区块.

该机制无需所有节点参与记账,节约了时间,可以达到秒级的共识验证.缺点是该共识机制依赖于代币,但很多商业应用是不需要代币存在的[8].

3.2.4PBFT

1) 全网中选出1个节点负责生成新区快,该节点称为主节点;

2) 网络中所有节点会向全网广播新产生的交易,主节点负责从中筛选出部分交易放入新区快内,并将其排序后产生的列表告知全网;

3) 收到主节点广播的列表后,每个节点都需要通过排序模拟来执行交易,并计算新区快的Hash摘要,之后告知全网;

4) 如果1个节点收到2f(f为可容忍的恶意节点数)条和自己计算结果相同的Hash摘要,就向全网广播1条commit消息;

5) 1个节点在收到2f+1条commit消息后,即可正式提交新区块及其交易到本地的区块链和状态数据库.

3.2.5瑞波共识算法

该算法需要参与的全网节点通过一些特殊节点列表来形成共识.初始特殊节点列表数量有限,新特殊节点的加入需要得到现有特殊节点中51%的节点同意.共识遵循着核心成员的51%权力,非特殊节点则权利很有限.该算法实际上是由特殊节点控制的中心化的算法,特殊节点群发生问题时整个机制将崩溃,外部节点无法进行任何挽救.

3.3 数据层

在数据结构的组织上,时间戳是区块链在前人研究基础上的一大创新.文档时间戳用于对新生成的文档、当前时间节点以及指向旧文档的Hash指针三者签名,之后的新文档又将当前的文档当作旧文档来签名,这样便由时间戳为引子产生了一条证书链.链中时间一旦被签名就无法篡改,可以用来很好地追溯文件的生成时间和前后顺序等.现有区块链平台正是采用了基于文档时间戳的数字公证服务来对文档等信息进行签名处理.

每个区块由区块头和区块体2部分组成,交易数据主体、时间戳、前一区块的区块Hash值存放于区块体内.本块内的交易数据经过哈希运算生成的Merkle根用于保证数据的稳定安全,同时用于简单支付验证.前块哈希则是将不同的区块联系在一起的纽带.不可篡改的时间戳用于说明区块的生成时间,方便以后追溯查找.比特币的区块头还含有当前挖矿的难度系数、挖矿时找到的合适的随机数Nonce等.

在数据模型方面,比特币使用的是基于交易的数据模型,交易的输入和输出分别表示交易的来源和去向,二者共同构成了一笔交易,且将不同的交易联系在一起.以太坊和Hyperledger Fabric则采用了基于账户的模型,方便快速查找到当前账户的余额和状态,以便支持更多的通用应用.

在数据存储的设计上,区块链数据常以日志文件格式来存储,这点类似于传统数据库的预写式日志.而索引数据和状态数据则存入键值对数据库方便系统进行基于Hash值的键值对查找.

3.4 智能合约层

智能合约本质上是一种部署在区块链的数字协议,由算法和程序来编写,达到触发条件后可自动执行,无需人为的干预.起初,智能合约是一组数字形式的承诺,包括合约双方同意履行承诺而拟定的协议,期望将合约与实物结合来创造灵活的智能资产.由于区块链可去中心分布式存储的特点,智能合约借此完成了去中心化的计算.

智能合约中含有提前定义好的状态信息、转换规则、合约执行条件以及合约约定的操作等,合约参与方签署后,作为一段代码加入区块链数据中,通过区块链网络的传播,经各节点验证后被记入分布式账本中.区块链可以实时监控整个智能合约的状态,在确认满足特定的合约执行条件后启动并执行合约中规定的操作.

比特币的脚本可视为智能合约的雏形,其是一组类型单一、功能有限的指令.以太坊使用了图灵完备的编程语言Solidity,Serpent,与可模拟程序执行的沙盒环境——以太坊虚拟机EVM(Ethereum virtual machine),以供用户编写和运行智能合约.Hyperledger Fabric的智能合约被称为Chaincode,Docker容器是其沙盒环境,编程语言则选用Go和Java.

3.5 应用层

基于比特币的交易是比特币平台上应用的主体.以太坊则功能更加丰富,除了基于其特有的以太币的数字货币交易外,还支持去各种中心化应用.Dapp是其上的一种Web前端应用,由JavaScript语言编写,利用JSON-RPC与运行在以太坊节点上的智能合约进行交互.超级账本上的应用则主要面向企业级,未提供数字货币,其应用可基于Go,Java,Python,Node.js等编程语言构建,并通过gPRC或REST与运行在Hyperledger Fabric节点上的智能合约进行通信.

4 智能合约

智能合约本质上是写好的一段代码,在预定条件满足时无需用户干预可自动执行代码内容,实现“代码即法律”的目标.借助区块链拥有的去中心化特点,智能合约无需管理者参与,一旦部署并触发就无人可将其强制停止,且可同时运行在全链的所有节点上.智能合约的运作机制如图1所示,其中Txn表示每个区块所含的n笔交易:

图1 智能合约运行机制

智能合约通常与商业活动挂钩,依照其逻辑编写完成后就可布置到全网的所有节点上.在以太坊中,合约存放在区块链上,满足条件触发合约时由以太坊虚拟机(EVM)加载运行;在 Hyperledger Fabric中,合约被打包成Docker镜像,网络中所有节点会基于此各自构建一个Docker容器,同时对合约进行初始化,然后等待被调用.外部应用通过调用智能合约来实现各种交易,欲修改智能合约需要在全网达成共识,同时所有的修改还会被记录在区块链上,状态数据库同时会保存修改后的结果,方便有据可查(例如,转账交易的转账金额会被记录到区块链,账户余额的增减会被应用到状态数据库).仅查询不涉及修改时则无需共识和记录.

5 可扩展性

数据库的性能可通过横向扩展增加节点数来提高,且提高过程呈线性.比特币、以太坊和Hyperledger Fabric目前采用单链方案,即整个网络只有一条链作为区块链的主链,网络上的每个节点地位、功能都相同,都需要完成同样多的工作,因此单个节点的能力强弱就成为制约整个系统处理能力的关键.同时,无论何种共识算法,其都会有资源、能源、时间的消耗,因此节点过多可能会导致系统的整体能力不升反降.为了实现动态的可扩展性,以太坊和Hyperledger Fabric分别创新了分片和多通道2种解决方案,使得全网中同时含有多条区块链,克服了全网处理能力受限于单个节点的短板,又可并行处理多笔交易,从而提升系统整体性能[7].

5.1 分 片

以太坊分片的依据是账户地址,分片之间并非完全独立,每个分片内都有一条独立子链,加入哪个分片由用户自行选择,每个节点选择加入哪个分片或哪几个分片由节点基于自身能力来决定,加入后则要负责处理和存储这些分片上的交易.最终所有的分片都会至少有一个节点加入,某一节点不再需要存储和处理全部的数据,访问自身没有的数据时可从其他分片内的节点读取.应用分片技术后,每个片相当于成为一条独立的链,由于每个片都只包含了全网的部分节点,所以片内的算力和明显小于之前的全网所有节点算力总和.单个分片内攻击者容易突破51%的算力,因此不再适用工作量证明机制,改进后的以太坊2.0使用的是基于权益证明机制的Casper共识算法.

5.2 多通道

不同于以太坊是出于均衡资源的考虑来将全网按地址划分成片,Hyperledger Fabric的通道技术则是基于交易规则将整个区块链网络划分为多个逻辑上的通道,每个节点根据自身需要负责参与的交易不同自主地选择加入不同的通道,如图2所示,每个节点可以加入多个不同的通道,并可以同时接收并处理多条链上的区块,多个链上的交易可以独立、并发地执行.相对于原来的单链结构,全网吞吐量将显著提升.

图2 多通道示意图

基于PoW共识机制的比特币和以太坊对节点的出入并没有进行任何限制,节点数量并不固定.而Hyperledger Fabric采用的PBFT算法要求节点数目已知且固定不变,因此限制了节点的加入和退出.Hyperledger Fabric1.0将网络节点分为共识节点和记账节点,将共识服务和记账服务分离开来,从而使得记账节点可以按照需求动态加入或退出,进一步提高了系统的可扩展性.

6 安全性

出于安全性的考虑,传统数据库一般都设计了一整套完备的用户管理机制和存取控制系统,但二者通常都需要一个权威可信的中心节点来运行控制,并不适合区块链所倡导的去中心化;同时,若对数据的存取进行限制,公有链所说的数据完全公开透明便无法实现.因此这2种传统的方法都不适合于区块链网络.区块链采用的是数字签名来证明货币对的归属权,同时可通过签名验证来保证交易不可篡改、不可否认;为保障交易双方及交易具体信息的隐私性,每次交易时都会使用不同的数字证书和账户地址.

6.1 签名验证

由于公有链强调数据的公开透明,因此比特币和以太坊都未设置用户管理,公钥是用户唯一的身份证明.交易的安全可靠则由数字签名算法来保证,签名算法使用了椭圆曲线数字签名算法(ECDSA)[9].

交易过程中(以转账交易为例),接受者需要向发起者提供其比特币地址pubKeyHash,该地址是接受者公钥经SHA256和RIPEMD160 2次Hash运算的结果.该比特币地址会被存放在交易的输出脚本ScriptPubKey中.为保证交易的可靠性,发送者需要对该笔交易数据进行签名,签名用于说明发起者承认该笔交易由自己发出,自己亲自花出了前一笔交易中获得的比特币.之后把签名sig和发送者自身的公钥pubKey放在输入脚本ScriptSig中.接受者一方面可用公钥来验证签名sig的有效性,另一方面可以验证其Hash值是否和前一笔交易输出脚本中的比特币地址pubKeyHash一致,以验证发送者确实拥有交易中约定数量的比特币.以上所有签名与验证过程都是基于输入脚本和输出脚本自动完成的.

以太坊的签名过程如图3所示.基于椭圆曲线算法强大的功能,交易数据无需再包含发送者的公钥和地址,结合发送者提供的ECDSA签名、交易数据、椭圆曲线参数便可还原出发送者公钥,再经SHA3运算可得出发送者的地址.这样虽然提高了一些验证过程中的运算量但减少了交易所含的字节数,节约了存储开销.

Hyperledger Fabric主要服务于联盟链,因此所有节点和用户的出入必须经过联盟的授权与同意.为此Hyperledger Fabric提供了相应的成员管理服务——Membership,并基于CA中心分别提供了ECert(enrollment cert),TCert(transaction cert)和TLSCert(transport layer security cert)3种类型的数字证书用于不同环节的验证.ECert证书用于在登录系统时确认节点和用户的身份.TCert证书用于交易过程中的签名与验证,Hyperledger Fabric的每笔交易都需要发送者提供签名和交易证书,为保护用户的隐私性,防止恶意攻击者通过交易证书发现交易发起者,每次交易可使用不同的TCert证书.TLSCert证书则用于系统组件间的SSLTLS通信.

图3 以太坊签名过程

6.2 SHA-256算法

SHA-256算法计算过程中涉及6个逻辑函数和1组常数Kt,采用了512 b大小的消息块,每一个消息块xi又分成16个32 b的字M0,M1,…,M15,计算过程如下[10]:

1) 初始化:

2) 构建消息列表Wt:

4) 对于0≤t≤63,执行:

5) 计算每个分组的中间Hash值:

最后输出256 b长度的Hash值:

整个过程中涉及到的函数计算如下:

Ch(x,y,z)=(x∧y)⊕(x∧z),

Mai(x,y,z)=(x∧y)⊕(x∧z)⊕(y∧z),

6.3 椭圆曲线签名算法

椭圆曲线密码系统(ECC)具有密钥短、运算快等优点,因此可以在ECC理论基础上建立相应的方案体系来增强交易的安全性.椭圆曲线定义在有限域G(p)上,其上的有理数点构成了一个阿贝尔群,因此椭圆曲线密码的密钥只可单向推导,即从公钥得到私钥很容易实现,反之则很难,单向性很好地保护了数据的安全.

6.3.1椭圆曲线系统ECC

y2+a1xy+a3=x3+a2x2+a4x+a6.

图4 椭圆曲线上的加法定义

椭圆曲线上的加法定义如图4所示:椭圆曲线(EC)上任取2点p1,p2,求和后可得到点p4:过p1,p2作直线L,它与EC相交于点p3,过p3作x轴垂线交EC于点p(x,y),令p4=p=p1+p2.曲线上的点对所定义的加法运算构成一个阿贝尔群.

当p1=p2时,多个p连续相加则转化为数乘运算:kp=p+p+…+p,共需完成k-1次加法.数乘运算也具有单向性,当k和p已知时很容易求出kp,反之知道结果要求k则十分困难.利用其单向性的优点,可令x=k为私钥,公钥为y=xp.由公钥很难推导出私钥[11].

6.3.2签名与验证方程

签名方程对实现ElGamal,DSA等系统方案至关重要.在ElGamal系统中签名过程如下:

取素数p,另取q使q=p-1或q是p-1的大素数因子.然后取g介于1和p之间并满足gq=1(modp).令私钥x

签名方程(SE):sk=m+rx(modq),

(1)

验证方程(VE):rs=gmyr(modp).

(2)

签名者通过式(1)生成签名(s,r),验证者将其带入式(2),若等式成立则说明签名有效.式(1)、式(2)中涉及到了乘法和幂运算,计算过程中有一定困难,椭圆曲线签名方程对二者进行了一定的改进,得到新的方程如下:

签名方程(SE):sk=m+rx,

(3)

验证方程(VE):rs=mg+ry,

(4)

其中,m为待签名文件,可为明文,已加密文件或经过Hash函数的结果.r=kg,g为椭圆曲线加法群生成元,x为私钥,y为公钥,即有y=xg.从式(3)中求出s,若代入式(4)中,有式(4)成立,则通过签名验证.

6.4 隐私性

比特币和以太坊的账户地址都是公钥的Hash值,不直接反映用户的真实身份信息,二者借此实现了一定程度的匿名性,保护了用户的信息.另外,每次交易都使用互相毫无关联的新地址,切断了交易之间的关联性,使得不可通过一个交易来牵扯出其他交易.但是,这些方案无法保障绝对的隐私性.

区块链需要在验证交易正确的同时保证交易具体内容的隐秘与安全.目前常用的隐私保护方案包括混币、环签名、零知识证明、同态加密等.

Hyperledger Fabric 0.6采用了单链的方案,链上用户都存有并可访问到全网的所有数据.联盟链主要面向商业应用,用户多为大型企业,因此保护其数据显得更为重要.Hyperledger Fabric 1.0采用了多通道的方案,交易的双方通过建立专属于自己的通道来保证交易的安全与隐秘.

7 区块链应用

当前,区块链主流应用重点分布在以下几个领域:

1) 金融领域

金融一直以来都是各国经济发展的最大动力,然而当前金融行业普遍需要权威中介机构的存在,很大程度上提高了成本且降低了效率.区块链技术独有的分布式、去中心化特点则可将金融行业从现有的约束中解放出来,当前在证券、支付、理赔等方面都有典型的成功应用[12],如B2B跨境支付项目、Linq交易平台等,极大地简化了流程,提高了效率,降低了成本.

2) 物联网领域

当前物联网需要大型的云端服务器来连接不同的设备,中心化的网络架构一定程度上限制了其规模的扩大,否则需要支付巨额的搭建和维护费用.而借助区块链,物联网上的所有设备都可当作一个独立的主体来运行,彼此之间互相合作而不互相约束[13].典型的有三星和IBM打造的ADEPT系统.

3) 公共服务领域

区块链中交易一旦被打包入块并加入链上,便具有了很高的安全性,很难被攻破并篡改.利用区块链的这一特点,可以在公共服务领域建立全新的认证机制,提高管理效率,改善管理水平,缩短价值的创造和投入利用的周期[14].例如:Ujo Music平台可通过区块链管理音乐版权;BitProof利用区块链来快速认证用户的学历信息等.

4) 公益慈善领域

同样借助区块链上信息可靠性高、不易被篡改的特点,公益领域中的相关信息均可存放在区块链上,并可选择性地公开相关信息,方便公众实时监督的同时尊重参与者的意志,保护其私有信息,例如BitGive建立了一个致力于将比特币用于慈善事业的捐赠平台,极大地促进了慈善事业的发展.

5) 供应链

由于加入区块链的所有节点都共享有全链的所有数据,所以借助区块链后供应链的信息共享和确认变得异常容易,其中存在的问题也可被快速发现并针对性地提出解决方案,其数据不可篡改且可追踪时间戳的特性,可以轻松地实现问题的举证与追责.如英国的Provenance就为加入其中的企业提供了完整的供应溯源服务.

6) 发展路线

针对区块链的特点及当前的发展现状,大致形成了2条不同的发展路线:

自上而下的路线将重心放在大型金融机构如银行,投资机构等,促进其组建区块链联盟,进而带动其他行业中的区块链发展;自下而上的路线则将目光聚焦于低层社区,推动诸如比特币和以太坊这样的商业模式的形成和运作.

8 国内区块链发展

中国企业级的区块链发展始于2015年年底,经过1年的发展,已有近百家相关公司落地生根,并涌现出了一大批优秀的代表性企业.

我国的区块链行业始于联盟的成立,国内主要形成三大联盟:2016年1月5日,中国首个区块链联盟“中国区块链研究联盟”落户北京;2016 年4月19日,中国分布式总账基础协议联盟(China Ledger)宣告成立;5月31日,由微众银行、深金信会等25家单位发起的金融区块链合作联盟正式成立,其中绝大多数是金融机构,剩余则是金融科技企业和互联网企业.

2016年国内区块链研究联盟相继成立,国内金融机构开始由简单地使用区块链向对区块链进行进一步的探索.2017年区块链应用落地将进一步加速.同时,海外区块链成为国内企业的投资热点,国内企业积极利用全球资源,进而发展自身并带动全行业发展.

无论从哪个方面来看,中国的区块链产业都处于一个十分活跃且前景良好的阶段.

9 区块链的优势与缺点

9.1 优 势

1) 去中心化.不同于传统数据库受制于单一机构,由该机构提供管理和维护,部署也局限于有限的集群内,去中心化是区块链的最大特点,区块链网络中所有节点都处于平等地位,没有中心节点的存在,所有节点都享有对全部数据的存储和访问权,从而实现了陌生节点间可彼此信任,从而进行交易和信息共享.

2) 不可篡改.不同区块间依靠区块头内的Hash指针和区块体内的Merkle树来连接,这种方式保证了已录入块内的数据是安全、不可篡改的.去中心化的分布式存储和共识机制的运用更增加了信息的安全性,单一节点被攻破不会影响其他节点.

3) 可追溯.区块内的时间戳部分记录了区块的生成时间,整个链上存储着初始以来的所有交易数据,基于数据的不可篡改和时间戳的存在,各节点和监管机构都可随时方便地追溯、监管任一交易.

4) 高可信.由于去中心化的特性,加入区块链的节点彼此之间无需互相信任也可安全地进行点对点交易和信息传输.且链上的每笔交易都包含发送者的签名,都需经过全网共识,多重机制保证了数据的不可篡改、不可否认.

5) 高可用.传统分布式数据库多应用主备模式来保证系统的正常运行:主数据库要求较高,一般运行在高配服务器上;备份数据库则实时地同步主数据库的信息.当主数据库崩溃时,需要将备份数据库切换为主数据库.该模式需要复杂的配置和昂贵的造价与维护.而在区块链系统中,所有节点地位平等,没有主从之分,少数节点即使出现故障或遭到攻击也不会影响其他节点,且问题节点恢复正常后还可重新存储全网的所有数据.

9.2 缺点与问题

1) 吞吐量.相较于传统数据库的吞吐量,比特币的7 TBs和以太坊的25 TBs显然要低很多,即使Hyperledger Fabric有所改进,其吞吐量也未超过2 000 TBs.区块链是将一定时间内发生的全部交易集体打包后再统一处理,无法实现实时的认证和交易.共识机制的引入,无论是PoW还是PBFT,都在提高安全性的同时降低了系统的性能,其复杂的签名与认证过程都涉及一定的系统开销.

2) 事务处理.目前区块链所依赖的底层数据库多为键值对(Key-Value)数据库,这种数据库缺乏事务处理能力.三大主流平台:比特币、以太坊、Hyperledger Fabric都采用了LevelDB数据库来存储链上的索引和状态数据.但该数据库也不支持严格的事务处理,当单节点合约执行有误时需要从其他节点重新同步数据来恢复正常.

3) 并发处理.传统数据库可同时并发处理大量客户端的请求,但区块链上的节点大多是身份对等地参与区块链的P2P网络,无法支持大量客户端的高并发访问.

4) 查询统计.由于数据库的架构和特性不同,传统数据库中用户可方便地通过函数语句来查询想要的信息并作出统计.但区块链底层的Key-Value数据库或文件系统使得简单的历史数据查询都变得复杂,统计和复合查询则更难实现.针对这一问题,区块链可通过插件化来支持多种不同的数据库,改进数据访问机制.

5) 访问控制.去中心化带来的一大问题就是访问控制机制的弱化.大多数区块链平台尤其是公有链,数据都是存储在全网所有节点并可公开透明访问的,唯一的安全机制只有交易过程中的签名与认证,以保证交易的不可伪造和否认.而传统数据库的访问控制机制已经十分成熟[15].

6) 可扩展性.如前所述,共识机制的存在使得区块链平台在节点数增加的过程中性能不升反降,除分片和多通道外,其他扩展性方案还有待验证.而传统数据库的横向扩展则可通过增加节点来线性地提高系统的性能.

7) 若2个算力相近的节点A和B在较短的时间差内分别创建了各自的区块,链上节点可能优先收到二者任一发出的确认信息,这样2个新区快都会接入链中且包含了相同的数据信息并都是有效的,便形成了分叉.之后全网节点可以选择任何2个新区快中的任一区块作为父区块并创建下一区块,当某一支链率先创建了新区块该支链便称为较长的支链,另一条短的支链就会被抛弃,这样分叉便结束了.

软分叉:区块链有时会出现协议替换的现象,新旧协议下创建的区块都可互相接受,新旧区块便可共存于一条链上,这称为向上兼容模式,并不会产生分叉.实际过程中因为新协议逐渐得到认同,旧协议创建的区块会逐渐消失.

硬分叉:当新协议下创建的区块无法被链上旧区块接受时,新区快便会从旧链中分叉出来,之后经过共识算法各节点会将算力投入到新区快分叉出来的支链中,这被称为向下兼容模式,最后会发生硬分叉.

8) 效率问题.区块链记录了整个网络从诞生到现在链上发生的全部交易,数据量十分巨大,如比特币网络在短短7年内数据量已达60 GB.完整记录交易在保证数据不可篡改的同时带来了严重的存储问题.

9) 中心化问题.算力证明机制中算力高的节点率先找到满足条件的随机数的概率就大,便更有可能获得区块的记账权.这样,原本平等的节点间记账权争夺就变成了硬件设备的比拼,越来越多的节点和设备聚在一起组成矿池,单一的节点完全无法与矿池相较高低,导致了节点间的不对等.目前,使用CPU挖矿几乎已经不再可能,这就违背了区块链去中心化的初衷,矿池实质上逐渐成为了一种新的中心节点.

10 结束语

回顾整个IT行业的发展,每次重大的变革,无一例外都是由于新架构的出现带来了新的生产力,出现了新的应用,推动了变革的发生.作为数字加密货币的底层核心技术,区块链之所以如此重要,是因为其架构有着独特的优点:去中心化、准匿名性、安全透明、可防篡改防伪造、交易可追溯、智能合约、低成本高效率等.现有的互联网+时代在信任建立、维护以及安全问题上存在致命的缺陷,因此未来互联网+必须与区块链+相结合,从而使得各种业务更加安全,交易成本更低,交易效率更高.

虽然区块链仍旧存在较为明显的问题,在发展过程中也受到过几次较为大型的攻击,如The DAO项目就由于智能合约出现漏洞而被黑客攻击,导致巨额的比特币丢失.但随着各方的不断努力,区块链的不足之处都会得到改进和完善,成为一个更加完备的系统平台,未来区块链一定会发挥更大的作用,彻底颠覆诸多行业的现状,很大程度上改变我们的生活.中国在这场新的竞赛中应当后起发力,努力赶上世界前沿水平,抓住这场机遇,好好应对挑战,在这场新的科技浪潮中发展自身.

[1]袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 自动化学报, 2016, 42(4): 481-494

[2]沈鑫, 裴庆祺, 刘雪峰. 区块链技术综述[J]. 网络与信息安全学报, 2016, 2(11): 11-20

[3]Castro M, Liskov B. Practical byzantine fault tolerance and proactive recovery[J]. ACM Trans on Computer Systems, 2002, 20(4): 398-461

[4]Kotla R, Alvisi L, Dahlin M, et al. Zyzzyva: Speculative byzantine fault tolerance[J]. ACM Trans on Computer Systems, 2007, 51(6): 45-58

[5]Kwon J. Tendermint: Consensus without mining[OL]. [2018-03-15]. https:tendermint.comstaticdocstendermint.pdf

[6]Liu S, Viotti P, Cachin C, et al. XFT: Practical fault tolerance beyond crashes[JOL]. [2018-03-15]. http:www.eurecom.frenpublication4575/downloadsec-publi-4575_1.pdf

[7]邵奇峰, 金澈清, 张召等. 区块链技术:架构及进展[J]. 计算机学报, 2018, 41(5): 969-988

[8]王晓光. 区块链技术共识算法综述[J]. 信息与电脑: 理论版, 2017, 9(9): 72-74

[9]旷华. 安全哈希算法SHA[J]. 华南金融电脑, 2003, 10(6): 24-26

[10]何润民, 马俊. SHA-256算法的安全性分析[J]. 电子设计工程, 2014, 22(3): 31-33

[11]罗皓, 乔秦宝, 刘金龙, 等. 椭圆曲线签名方案[J]. 武汉大学学报: 理学版, 2003, 32(1): 95-98

[12]孙国茂. 区块链技术的本质特征及其金融领域应用研究[J]. 理论学刊, 2017, 33(2): 58-67

[13]姚忠将, 葛敬国. 关于区块链原理及应用的综述[J]. 科研信息化技术与应用, 2017, 8(2): 3-17

[14]朱建明, 付永贵. 区块链应用研究进展[J]. 科技导报, 2017, 35(13): 70-76

[15]张滨. 区块链安全风险研究[J]. 电信工程技术与标准化, 2017, 30(11): 1-5

猜你喜欢

以太记账比特
财务自由第1步,从记账开始
记账类APP
以太万物理论概述
记账理财的好处有哪些
车易链:做汽车业的“以太坊”
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
中小企业代理记账存在的问题及对策
A Study on the Contract Research Organization