您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 网络/安全 > 正文

区块链常用架构是什么?

发表于:2018-02-25 作者:李赫 来源:今日头条

区块链2.0的分类与特点

区块链2.0的典型代表是以太坊(Ethereum)和超级账本(Hyperledger),分别代表了区块链的两个重要的发展方向:应用于公众的公有链和应用于企业的联盟链。

公有链、联盟链和私有链

公有链是指对所有人开放,任何人都可以参与的区块链;联盟链是被多个组织构成的联盟控制,进入和退出需要授权的区块链;私有链是完全被单独的个人或某个组织控制的区块链。公有链不适合大部分企业应用场景,未来企业应用的重点是联盟链,但现阶段关注的重点是公有链,公有链是区块链技术的试验田,会遇到各种复杂的情况和问题,是对新技术和新业务的测试,这对企业应用提供很好的借鉴。

对于区块链的去中心化、安全、高效这三个特性,符合蒙代尔不可能三角关系,即不可能同时满足三个条件。公有链实现了完全的去中心化和安全,因此在性能上就很低,联盟链为了企业应用,提高了性能和安全,就不得不在去中心化上进行妥协,通过一个中心化的授权方式来管理节点,实现了半中心化。

区块链2.0的优势

区块链1.0被称之为“全球账簿”。相应的,区块链2.0可以被看作一台“全球计算机”:实现了区块链系统的图灵完备,可以在区块链上传和执行应用程序,并且程序的有效执行能得到保证,在此基础上实现了智能合约的功能。相对于区块链1.0,区块链2.0有如下优势:

1. 支持智能合约

区块链2.0定位于应用平台,在这个平台上,可以发布各种智能合约,并能与其它外部IT系统进行数据交互和处理,从而实现各种行业应用。

2. 适应大部分应用场景的交易速度

通过采用PBFT、POS、DPOS等新的共识算法,区块链2.0的交易速度有了很大的提高,峰值速度已经超过了3000TPS(每秒处理交易数量),远远高于比特币的5TPS,已经能够满足大部分的金融应用场景。

3. 支持信息加密

区块链2.0因为支持完整的程序运行,可以通过智能合约对发送和接收的信息进行自定义加密和解密,从而达到保护企业和用户隐私的目的,同时零知识证明等先进密码学技术的应用进一步推动了其隐私性的发展。

4. 无资源消耗

为了维护网络共识,比特币使用的算力超122029 TH/s,相当于5000台天河2号A运算速度,每天耗电超过2000MWh,约合几十万人民币(估测数据)。区块链2.0采用PBFT、DPOS、POS等新的共识算法,不再需要通过消耗算力达成共识,从而实现对资源的零消耗,使其能绿色安全的部署于企业信息中心。

技术架构

区块链2.0采用五层架构,从下到上分别是数据层、网络层、共识层、激励层、智能合约层,如图1所示。

图1 五层架构

数据层

数据层最底层的技术,是一切的基础,主要实现了两个功能,一个是相关数据的存储,另一个是账户和交易的实现与安全。数据存储主要基于Merkle树,通过区块的方式和链式结构实现,大多以KV数据库的方式实现持久化,比如以太坊采用leveldb。帐号和交易的实现基于数字签名、哈希函数和非对称加密技术等多种密码学算法和技术,保证了交易在去中心化的情况下能够安全的进行。

网络层

网络层主要实现网络节点的连接和通讯,又称点对点技术,是没有中心服务器、依靠用户群交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,其具有去中心化与健壮性等特点。

共识层

共识层主要实现全网所有节点对交易和数据达成一致,防范拜占庭攻击、女巫攻击、51%攻击等共识攻击,其算法称为共识机制,因为其应用场景不同,区块链2.0出现了多种富有特色的共识机制。

1. PoS:Proof of Stake,权益证明

原理:节点获得区块奖励的概率与该节点持有的代币数量和时间成正比,在获取区块奖励后,该节点的代币持有时间清零,重新计算。但由于代币在初期分配时人为因素过高,容易导致后期贫富差距过大。

2. DPoS:Delegate Proof of Stake,股份授权证明

原理:所有的节点投票选出100个(或其他数量)委托节点,区块完全由这100个委托节点按照一定算法生成,类似于美国的议会制。

3. Casper:投注共识

原理:以太坊下一代的共识机制,每个参与共识的节点都要支付一定的押金,节点获取奖励的概率和押金成正比,如果有节点作恶押金则要被扣掉。

4. PBFT:Practical Byzantine Fault Tolerance,拜占庭容错算法

原理:与一般公有链的共识机制主要基于经济博弈原理不同,PBFT基于异步网络环境下的状态机副本复制协议,本质上是由数学算法实现了共识,因此区块的确认不需要像公有链一样在若干区块之后才安全,可以实现出块即确认。

5. PoET:Proof of Elapsed Time,消逝时间量证明

原理:该共识机制由intel提出,核心是用Intel支持SGX技术的CPU硬件,在受控安全环境(TEE)下随机产生一些延时,同时CPU从硬件级别证明延时的可信性,类似于彩票算法,谁的延时最低,谁将获取记账权。这样,增加记账权的唯一方法就是多增加CPU的数量,具备了当初中本聪设想的一个CPU一票的可能,同时增加的CPU会提升整个系统的资源,变相实现了记账权与提供资源之间的正比例关系。

共识机制有各自的优缺点,适应不同的场景,进行对比,如表1所示。

表1 不同共识算法对比

激励层

激励层主要实现区块链代币的发行和分配机制,比如以太坊,定位以太币为平台运行的燃料,可以通过挖矿获得,每挖到一个区块固定奖励5个以太币,同时运行智能合约和发送交易都需要向矿工支付一定的以太币。

智能合约层

智能合约赋予账本可编程的特性,区块链2.0通过虚拟机的方式运行代码实现智能合约的功能,比如以太坊的以太坊虚拟机(EVM)。同时,这一层通过在智能合约上添加能够与用户交互的前台界面,形成去中心化的应用(DAPP)。当然,在某些技术文档中认为DAPP应该在智能合约层之上单独为应用层,也是有一定道理,只要不影响读者理解即可。

智能合约

智能合约简介

智能合约又称智能合同,是由事件驱动的、具有状态的、获得多方承认的、运行在区块链之上的、且能够根据预设条件自动处理资产的程序,智能合约最大的优势是利用程序算法替代人仲裁和执行合同。

本质上讲,智能合约也是一段程序,但是与传统的IT系统不同,智能合约继承了区块链的三个特性:数据透明、不可篡改、永久运行。

1. 数据透明

区块链上所有的数据都是公开透明的,因此智能合约的数据处理也是公开透明的,运行时任何一方都可以查看其代码和数据。

2. 不可篡改

区块链本身的所有数据不可篡改,因此部署在区块链上的智能合约代码以及运行产生的数据输出也是不可篡改的,运行智能合约的节点不必担心其他节点恶意修改代码与数据。

3. 永久运行

支撑区块链网络的节点往往达到数百甚至上千,部分节点的失效并不会导致智能合约的停止,其可靠性理论上接近于永久运行,这样就保证了智能合约能像纸质合同一样每时每刻都有效。

智能合约运行原理

本文通过最典型的以太坊为例简述智能合约运行的原理。

1. 以太坊虚拟机(EVM)

以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。如果做比喻的话智能合约更像是Java程序,Java程序通过Java虚拟机(JVM)将代码解释字节进行执行,以太坊的智能合约通过以太坊虚拟机(EVM)解释成字节码进行执行。EVM被沙箱封装起来,也就是说运行在EVM内部的代码不能接触到网络、文件系统或者其他进程,甚至智能合约之间也只有有限的调用。

2. RPC接口

RPC接口是以太坊与其他IT系统交互的接口,以太坊节点在8545端口提供了JSON RPC API接口,数据传输采用JSON格式,可以执行Web3库的各种命令,可以向前端,比如Mist等图形化客户端提供区块链的信息。

智能合约是部署在区块链的代码,区块链本身不能执行代码,代码的执行是每个节点在本地通过太坊虚拟机(EVM)实现, 智能合约的运行原理如图2所示。

图2 以太坊智能合约运行原理图

从图2可以看出,部署在区块链上的智能合约是一段能够在本地产生原智能合约代码的数据串,可以理解区块链为一个数据库,首先客户端通过发起一笔交易,告诉以太坊节点需要调用的函数及相关参数,然后所有的以太坊节点都会接收到这笔交易,从区块链这个数据库中读取了存储的智能合约运行代码,在本地EVM运行出结果,最后为避免节点作恶,节点运行智能合约的结果将与其他以太坊节点进行对比,确认无误后才将结果写入到了区块链中,从而实现智能合约的正确执行。

区块链保险业应用展望

综合来说,区块链是一种可以制造信用的技术,它能够让毫无任何关系的节点互相信任,并达成共识,而不需要任何权威机构作为中介进行背书,通过智能合约处理各种事务,减少了人为干预的风险,这种新的技术特点,可以应用于很多金融领域,比如:

1. 跨境支付与结算:实现点到点交易,减少中间费用;

2. 证券发行与交易:实现准实时资产转移,加速交易清算速度;

3. 客户征信与反欺诈:降低法律合规成本,防止金融犯罪。

本文尝试性的提出一些可能的保险业应用场景进行探讨。

互助保险

互助保险又叫相互保险,指具有同样风险保障需求的人所组成的,不以牟利为目的,以互相帮助为原则,实行“共享收益,共摊风险”的保险形式。相互保险与商业保险最大的不同是商业保险的承保人是公司,其利益与客户对立,而互助保险的承保人是每个参与者,实现了保险人和被保险人的身份合一。

互助保险已经存在很长的历史,从全球互助保险的实践来看,大多数都是从互助的初衷出发,但因为缺乏一个可操作的信任体系,落入了公司陷阱,导致互助保险组织越做越像一家保险公司,甚至很多最终转为公司。

区块链技术构成了一个信息对称、透明、不可篡改的信任网络,使得点对点的区块链互助保险能够建立信息安全和参与者之间的互信体系,并通过智能合约实现民主决策和组织规则准确无误的执行,最终实现组织结构扁平化,降低运营成本,降低互助保障成本,真正形成一个人人为我,我为人人的保险互助形式。

在互助保险的应用中,尤其需要注意合规问题,为了保障参与者的权益,防止再次出现P2P行业的乱象,中国保监会已于2015年1月印发了《相互保险组织监管试行办法》,明确规定相互保险组织应当经中国保监会批准设立,并接受其监管,截至发稿日,全国仅有三家获批。

积分通兑

积分本质上就是一种数字资产,是以商家自己的服务或者产品作为价值背书发行的数字资产。保险企业一直存在积分难于兑换,客户活跃度不高的问题。借助区块链技术,不同行业的几个企业构成一个联盟链,在链上完成积分的发行,后续积分就可以自由的在链上流通,实现积分流通从单中心控制变成社会化传播,任何有资源的渠道都可以成为资产流通的催化剂,极大地提升流通效率。客户可以获取更好的消费体验,保险企业可以有效增加客户粘度并扩展获客渠道。

图3 一种可能的区块链积分通兑架构

集团内子公司间支付网络

近年来金融企业集团化趋势越来越明显,保险企业集团化不但有利于集中统一管理各项资金,实现投资专业化管理,取得投资规模效益,还有利于增强专业子公司的抗风险能力,提高规模竞争的优势。使用如图4所示的区块链点对点支付技术作为各个子公司之间的支付网络,一方面省去了银行作为中介,可以提高集团内资金流动的效率,实现跨子公司的业务部门对业务部门、业务部门对销售人员之间的快速支付清算,确保业务行为的真实性与合法性,强化信息对称与交易安全;另一方面集团总部和各级管理机构作为网络中的实时验证和监控节点,既作为业务流程中的一环直接接触业务数据,又不会对业务流程产生任何干扰,实现对业务的有效跟踪、监控和预警,促使公司治理从制度管理向技术管理转变。

图4 区块链点对点的支付方式