首页 区块链正文

中移雄研咨询洞察:区块链关键技术研究

admin 区块链 2020-06-09 263 0

区块链概念

一个完整的区块链系统包含了很多技术,包括链表式数据结构、共识机制、智能合约、P2P网络、密码学,其中密码学包括:哈希算法、非对称公钥算法、数字签名等。这些技术整合汇聚到一起组成了区块链技术。区块链就是将一串数据块链接起来,本质上是在一个P2P对等网络中的一个分布式记账系统。

区块链主要包括三种即:公有链、联盟链、私有链。

公有链是最早也是当前最广泛的区块链种类,全球任何组织和个人都有资格写入,并且能够得到认可。当前主流的数字货币都是基于公有链实现的,每个币种只有一条链。

联盟链只允许组织内部的成员接入,并且生成区块的权利只有部分成员拥有,大部分成员只能记账,但是没有打包的权利,不知晓记账的流程。

私有链指的只对单独的个人或者企业开放,由于私有链的节点都是内部可信的,不需要进行验证,所以私有链的吞吐量、速度高于公有链和联盟链。

区块链关键技术

区块链关键技术包括密码学算法、共识算法、智能合约。

2.1 密码学算法

区块链技术最重要的特点就是保障数据的不可篡改性。不可篡改性主要是体现在多节点的分布式存储和密码学相关的信息安全技术,主要包括:哈希算法、加密算法、数字签名等。

哈希算法

使用哈希函数,输入任意长度的消息,输出一个固定长度的字符串,其字符串就是哈希值。哈希函数能够很好地满足区块链数据不可篡改和可验证的安全需求。首先,哈希算法逆向困难,即根据一个哈希值,很难计算出相应的输入值;其次,哈希函数对输入十分敏感,即使输入值发生微小变化,产生的哈希值也完全不同;最后,哈希算法具有强抗碰撞性,很难找到两个不同的输入,使得他们的哈希值相同。在比特币系统中,用户的比特币地址是利用哈希函数(例如,SHA256和RIPEMD160),将公钥作为其输入,计算哈希值,该哈希值就是用户的比特币地址,即用户钱包。由于每个区块的信息是全网公开的,节点拿到前一个区块数据,使用哈希函数对区块信息进行哈希计算,得出的哈希值与当前区块头部存储的前一区块的哈希值进行校验,利用哈希函数具有强抗碰撞性来校验区块和交易真实性。

公钥密码算法

公钥密码算法是区块链的重要组成部分。在区块链中,主要采用的密码算法有两类:数字签名和公钥加密。区块链除了使用常规的数字签名算法外,根据特定应用场景的实际安全需求,还使用一些特殊的数字签名技术,例如:盲签名、多重签名等。在比特币系统中就采用的多重签名的技术,实现多个节点对单个账户交易的共同管理。

公钥加密算法包含两种密钥:公钥和私钥,公钥用于加密数据,私钥用于解密密文。公钥是公开的,任意节点可以获取;私钥必须由用户自己秘密保存,不能被其他节点获取。根据用户公钥,不能推测或计算出相应的私钥。

公钥密码技术用于保障区块链中交易信息的安全性。为了保障交易信息的机密性,发送者利用公钥加密算法和接收者公钥,对交易信息进行加密,生成密文并发送给接收者,接收者利用其私钥解密密文,获取交易信息。同时,为了验证发送者的身份信息,并确保交易信息不被篡改,发送者利用数字签名算法,将其私钥和交易信息作为输入,生成签名,并将该数字签名发送给接收者,接收者利用发送者的公钥验证该数字签名,从而确保交易信息来源的可靠性和防篡改性。

2.2 共识机制

区块链的底层是通过P2P网络搭建的,构建了一个去中心化的分布式网络环境,网络中所有节点的地位平等,每个节点都可以作为服务器,承担区块数据传输、验证、存储工作。共识机制主要是解决分布式节点如何达成共识的问题。在现有的区块链系统中,主要有四种共识机制:PoW、PoS和PBFT等方式。

PoW算法

PoW算法最早在比特币中使用, 其核心思想是通过节点的算力竞争来选取打包节点。比特币系统中的各节点基于各自的计算机算力相互竞争来共同解决一个数学难题,最快解决该难题的节点将获得下一区块的记账权和系统自动生成的比特币奖励。PoW在比特币中的应用具有重要意义,其奠定了比特币系统的虚拟货币发行、流通功能,并保障了系统的安全性和去中心化的特性,有效防止了女巫攻击。然而,PoW也存在明显的缺陷,其矿工重复和循环的算力消耗造成巨大资源浪费,而且长达10min的交易确认时间使其不适合小额交易的商业应用。

矿工通过不断尝试随机数使得计算得到的区块哈希值小于难度值,当找到合适的随机数后 , 广播该随机数和对应区块, 随后其他节点验证该区块的合法性,验证成功后将该区块写入链中。因此算力越高得到记账权的几率越大。基于PoW的区块链的去中心化程度较高,节点可以自由进出系统,基于算力竞争的共识算法可以最多抵抗50 %攻击。但是采用PoW方式会消耗大量的计算资源和能源,对系统的可持续发展造成较大影响。为了防止支链的产生,一个区块产生以后要在那个区块后挂上六个区块才能保证被系统认可。由于比特币系统设置的挖矿难度是平均十分钟产生一个区块,也就是一笔交易的确认需要至少1h的时间,可用性较低。而且PoW方式容易造成矿工联合成集中式的矿池 , 背离了原来去中心化的初衷。

POS算法

PoS 算法的提出是为了解决PoW巨大能源浪费的问题。PoS 由系统中具有最高权益而非最高算力的节点获得记账权,权益一般指用户在区块链上的虚拟资源,常用持有token数量或持有token时间(币龄)来衡量,根据用户持有权益的大小决定该用户挖矿的难度,权益越高,挖矿的难度就越低。权益更高的用户有更高的概率决定下一个区块并获得出块的奖励,在成功出块后相应的币龄会清空,这样可以保证区块链的有效性由具有经济权益的用户来保障,同时避免 PoW 的大量能源消耗。

PoS 共识算法中的通过权益的大小来决定记账权可以有效避免资源浪费,进而缩短出块时间和交易的处理时间。但是基于PoS的系统仍然需要进行挖矿,且区块的确定性也是概率型的,需要其他多个节点对区块确认后完成最终确定。

PBFT算法

在最早的拜占庭容错算法(Byzantine Fault Tolerance,BFT)算法,首先选出某个节点作为记账节点,记账节点将某一时间段内的交易信息检验过后,打包成块,并且用自己的私钥对其签名,然后广播到所有节点。当网络中的其他节点收到消息后,检查消息的合法性。只有当这个交易被全网至少2/3的节点验证通过后,才能够加到区块链中。当拜占庭节点(出现错误的节点)不超过总节点数的1/3时,共识问题才能解决。

实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT),是为了解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到二次方级,使得拜占庭容错算法在实际系统应用中变得可行。可以在保证活性和安全性的前提下提供小于1/3的拜占庭容错性。

2.3 智能合约

智能合约是一段运行在区块链上的计算机程序,智能合约一旦部署在区块链上就可以自我执行和自我验证,而且不需要人工干预。智能合约执行过程首先会自主验证执行条件,如果满足某个或某几个执行条件,就会依据合约自动执行相应动作,不需要第三方进行干预和处理,可以根据应用场景功能的逻辑与需求,自动执行相应的脚本和算法,并且产生合约数据,同时会产生验证数据保证智能合约操作执行的合法性,常用if……语句完成操作。智能合约实现了区块链系统灵活编程等功能,可以适应各种场景需求的变换。

但是,智能合约是一个事务处理和状态记录的模块,智能合约自身既不能产生新的智能合约,也不能修改智能合约,只是为了让能够被条件触发执行的函数按照调用者的意志准确执行,在预设条件下,自动强制地执行合同条款,实现“ 代码即法律 ” 的目标。

从实现方式上看,智能合约在共识和网络的封装之上,隐藏了区块链网络中各节点的复杂行为,同时提供了区块链应用层的接口,使得区块链技术的应用前景广阔。智能合约也是区块链的一项重要功能,它标志着区块链不仅是加密货币,而且可以形成基于区块链的服务,即BaaS智能合约使得区块链可以承载可编程的程序、运行去中心化的应用和构建需要信任的合作环境。

智能合约的典型应用包括在公有链上的以太坊和建立在联盟链上的Fabric。

以太坊在区块链之上引入了以太坊虚拟机(EVM),虚拟机的引用使得智能合约的编写变得非常容易,采用脚本化的编程语言(Solidity)使用用户可以非常轻松的编写智能合约。而且EVM并不是部署在区块链之上,而是部署在计算节点上,每个计算节点都运行EVM,智能合约经过EVM编译成二进制代码,存储在区块链上,一同存储在区块链上的还有智能合约的输入、输出、状态变化、调用情况。

Fabric项目的目标是实现一个通用的权限链的底层基础框架。为了适用于不同的场合,采用模块化架构,提供可切换、可扩展的组件,包括共识算法、加密、数字资产、记录仓库、智能合约和身份鉴权等服务。Fabric克服了公有链的缺陷,如吞吐量低、无隐私性、无最终确定性以及共识算法低效等,使得用户能够方便地开发商业应用。

Fabric网络由几类节点组成包括:身份服务节点、验证节点和非验证节点和客户端应用。应用节点把交易请求发给验证节点。多个验证节点采用PBFT算法验证成功以后,更新本地数据;每个验证节点都要在本地保存账本。非验证节点一般是接收交易请求进行打包后转发给验证节点,为了加快查询速度,一般非验证节点也会在本地存储账本。

Fabric采用Docker容器作为智能合约的执行环境,智能合约的代码执行效率很高,但是在启动和部署智能合约的相应环境时需要消耗大量的时间和资源,对其性能和效率有较大影响。Hyperledger的设计原则是“用例驱动”,相较于以太坊而言,Hyperledger Fabric智能合约的开发更需要注重商业的需求和实际应用需要。

Fabric是联盟链结构,组成联盟的节点都属于不同的机构,只要相互之间可以通过网络连接即可,所以成员即可以选择在本地部署也可以选择部署在云环境中。

区块链发展

3.1 跨链技术

跨链技术是一个宽泛的概念,跨链是指多个链上的信息、状态、资产进行传递、交换、转移。每个区块链都是一本账本、一条价值链,在发展初期之时各个区块链都是发展独立的技术手段和生态模式,产生了非常多的公链。同时以Hyperledger为代表的联盟链中,也存在着多链模式即在联盟链内部存在着多个小集体自己组成一条链。随着区块链的数目增加和对业务的需求也日益复杂。区块链跨链技术应运而生,跨链操作可以带来价值自由流动,促进链间协同工作,是区块链向着网络效应规模化发展的强力推手。

区块链的三种主流跨链方案包括:基于公证人制度、基于中继链/侧链和哈希锁定模式。

第一种是基于公证人制度,这种模式非常直接,即A和B不能互相信任,就引入A和B同时信任的C充当公证人中介,通过C对交易和数据进行验证。典型方案是瑞博公司的Interledger协议,Interledger构建了一个“连接者”的托管系统,连接者并不是一个新的账本或者平台,它只是依托于现有的系统的一套协议,实现方式还是通过在现有链上的“写账”,其实并没有进行真正的跨链操作,只是在连接者内部实现了资产、价值转移。连接者需要在多个链上有账户,这样当两个用户想要进行跨链交易,只需要发送者在自己链上将资产转给连接者,然后连接者在另一个链上的账户将等额的资产转给接收者,就完成了交易,资产在转移过程中是处于托管状态。

第二种跨链方案是哈希锁定。哈希锁定最早起源于闪电网络,闪电网络本身是一种小额的快速支付的手段,后来它的关键技术哈希时间锁合约被应用到跨链技术上来。虽然哈希锁定实现了跨链资产的交换,但是没有实现跨链资产的转移,更不能实现这种跨链的智能合约,所以它的应用场景是相对比较受限的。

第三种是基于侧链的方案。最初的侧链的方案提出是为了解决数字资产从一个区块链到二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主链,每二个区块链则被称为侧链;侧链协议是一种允许主链、侧链资产转移的方式。侧链也提供了一种更安全的协议升级方式,即便当侧链发生严重的安全问题时,主链依然安然无恙。侧链实现的技术基础是双向锚定,双向锚定技术可以实现暂时的将数字资产在主链中锁定,同时将等价的数字资产在侧链中释放,同样当等价的数字资产在侧链中被锁定的时候,主链的数字资产也可以被释放。

为了保证资产的安全,侧链提出了SPV工作量证明的方案。SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。用户首先在主链上将数字资产发送到主链的一个特殊的地址来锁定资产,随后会创建一个SPV证明并发送到侧链上。侧链记录下带有SPV证明的交易,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上释放出等值的另一种数字资产。在侧链上的使用和变更资产,也会被主链记录下。当资产返回到主链上时,会锁定侧链的资产然后创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。

第四种方案是基于中继链的方案,其中典型代表是Cosmos Hub。Hub是一种多资产权益证明加密货币网络,并且具有一个中枢节点,它可以与各个链通信,通信方式可以采用TCP或者UDP。资产通过中心节点可以安全、快速地从一个链转到其他链,并且所有跨链的资产转移都必须通过中枢节点,以此来追踪记录每个链持有的资产总量。这个中枢节点还可以鼓掌隔离。Hub方案由于可以兼容新的区块链接入,所以具有很强的扩展性。

3.2 分片技术

吞吐量一直是区块链应用的瓶颈,导致区块链吞吐量不高的重要原因之一就是全网的节点都需要处理所有的交易,这给处理速度以及存储资源带来了极大的压力。网络分片是一种链上扩容技术,旨在通过对区块链节点划分不同的分片,使同一个分片内的节点维护同一条区块链,不同分片之间维护不同的区块链,合理的分片划分可以实现全网容量的翻倍,也增大了吞吐量。

分片技术还可以将区块链网络里的所有待处理任务(比如确认交易、运行 DApp 等)进行分解,全网的节点也进行分组,每一组同时处理一个分解后的任务(比如 150 笔待确认交易),这样就从原先单一节点处理全网的所有任务变成了多组节点同时并行处理多个任务。

区块链分片的层级分为四层包括:网络分片、交易分片、计算分片和状态分片。

网络分片是最基础的分片,也就是将整个网络分为多个子网络即切片,不同的切片处理网络不同的交易。

交易分片的前提条件是进行了网络分片,然后将按照交易的特征值将交易划分到不同的的切片种进行验证打包。

网络中只有一个切片进行计算任务,保证了计算的高效性。

状态分片是值每个分片只保存区块链的部分状态,不会保存完整的区块链信息。

相比较于扩容方案,区块链分片技术更多的是减少冗余计算和存储、提升吞吐量,而且保证了 去中心化。但是将区块链分片导致系统的实施难度打,而且带来了更高的安全风险,分片技术也引入了跨片操作的难题。

区块链典型场景

4.1 区块链+金融

区块链最早就是在金融行业开始应用。在支付、结算、清算领域,区块链可以成为“杀手级”的应用。例如在多方参与的跨地域、跨网络支付场景中,Ripple支付就是一个很 好的案例;在多方参与的结算、清算场景,R3联盟也在利用区块链技术构建银行间的联盟链。同时在多方参与的虚拟货币发行、流通、交易、股权(私募、公募)、债券以及金融衍生品(包括期货、期权、次贷、票据)的交易(NASDAQ Linq平台案例),以及在众筹、 P2P小额信贷、小额捐赠、抵押、信贷等方面,区块链也可以提供公正、透明、信用托管的平台。在保险方面,区块链也可以应用于互助保险、定损、理赔等业务场景。

4.2 区块链+政务

区块链技术可以大力推动政务数据开放度、透明度,促进跨部门的数据交换和共享,推进大数据技术在政府治理、公共服务、社会治理、宏观调控、市场监管和城市管理等领域的应用,实现公共服务多元化、政府治理透明化、城市管理精细化。

4.3 区块链+物联网

利用区块链的智能合约,可以通过接口和物理世界的钥匙、酒店门卡、车钥匙、公共储物柜钥匙做程序的对接,可以达到区块链上一手交钱、物理世界一手交货的原子交易的效果。区块链在物联网的应用非常广泛,特别是在智能设备的自主管理,以及智能设备之间的互联、协调方面有着非常大的优势。

4.4 区块链+能源

区块链在能源行业的应用前景广阔。采用区块链技术可提供公正、透明的能源交易多边市场和碳交易市场,减少支付和结算成本、提高效率的。另外在缴费领域、分布式发电,特别是新能源微电网中发电家庭、用电家庭和电网间的电交易,区块链都是非常理想的技术。区块链也可以用来记录发电、配电、输电、调度、用电、售电记录,提供公正、可追溯、透明的审计、监管记录。更重要的是,区块链在未来智能电网、能源互联网中会扮演更重要的角色,理论上可以通过区块链智能合约实现发、输、变、配、用电的同步调控。

4.5 区块链+供应链

基于区块链的供应链协同应用将供应链上各参与方、各环节的数据信息上链,做到实时上链,数据自产生就记录到区块链中。典型的采购和销售供应链阶段包括:生产采购订单、仓库备货、物流运输、收货确认、商品销售等环节。通过供应链上各参与方数据信息上链,数据加密存储保证数据隐私,智能合约控制数据访问权限,做到数据和信息的共享与协同管理。

结束语

区块链1.0是指的区块链技术在数字货币领域应用,也就是与转账、汇款和支付功能结合的“账本”功能。区块链2.0则是指的智能合约的应用,智能合约本质上是将区块链作为编译环境,本质上是将可执行“代码”上链。是经济、市场和金融的区块链应用的重要补充。区块链3.0则是超越传统的货币、金融领域,应用在政务、工业、能源、审计等领域的应用。未来区块链3.0将会赋能智慧城市的建设,使城市成为一个多方无缝对接的价值互联网城市,促尽信息、资本、价值的有效配置和流通。