基于gas机制的联盟链激励机制设计

2021-06-25 14:18李慧凡
软件导刊 2021年6期
关键词:发起者以太背书

李慧凡,孙 力

(江南大学 人文学院,江苏无锡 214122)

0 引言

大数据时代的到来为海量数据运用创造了价值[1],但随着数据信息量呈现爆炸式增长,数据信息隐私泄露、数据可用性差、数据滥用[4]、共享率低等数据管理问题逐渐凸显[2-4]。在区块链3.0 时代背景下,作为跨领域技术整合体的区块链技术为社会各领域的发展提供了新的动力[5-6]。由于其去中心化、高可信、不可篡改等特性,在提高数据安全与共享方面提供了新的技术支持与帮助。简言之,区块链技术是一种按照一定时间顺序将区块加密后以链的方式组合在一起的分布式数据结构[7],其基础架构包含数据层、网络层、共识层、激励层、合约层、应用层共6 层[8]。从功能层面看,底层的数据层和网络层实现了数据信息存储和传输;合约层和应用层实现了与用户需求的连接,共识层决定着执行操作的成败,而位于共识层之上的激励层承担着对参与共识的节点进行激励,从而提高共识效率的作用;位于顶层的合约层和应用层实现了区块链与用户需求的连接。因此,区块链中激励层的改进必定会为优化共识过程提供新思路。

区块链技术按照准入机制与共识过程不同,分为公有链、私有链、联盟链3 类[9]。3 类区块链由于激励机制不同,存在着不同程度的安全性和不同的共识效率。在公有链中,比特币作为激励手段对矿工参与共识过程的工作量进行激励[10],其共识过程虽然具有去中心化、数据不可篡改的特性,但因存在共识效率不高、存储资源消耗过大导致使用成本较高、数据信息全网节点可见等问题[11],难以快速实现应用。由特定节点组成的私有链仍保留着中心化的特点,因此在私有链上执行操作并无共识过程,也无激励机制,这使得私有链难以在多方合作者之间发展。联盟链指其共识过程受到预选节点控制的区块链[12],因此联盟链的共识过程具有弱中心化和强信任等特点。通过比较发现,不同类型区块链的共识过程与激励机制也各不相同,受预先控制的联盟链较符合学校、银行、商业等领域的应用需求。

在区块链激励机制的已有应用中,以太坊内部用于激励矿工的gas 机制已较为成熟。在以太坊中,通过使用者付费方式对参与每笔交易的矿工给予激励[13],其激励方式不仅增强了以太坊运行的安全性和稳定性,还提高了交易效率,促进了以太坊平台发展。Li 等[14]针对车辆公告网络中个人信息隐私保护较差、发布或转发信息动力低等问题,运用区块链技术开发出一种通过账户给予外在激励作用,名为CreditCoin 的公告网络;Lin 等[15]针对数据处理中的数据准确性和数据存在的内部攻击等问题,提出了一种基于信誉的激励机制;王娟等[16]认为激励机制分为内在激励机制和外在激励机制,内在激励机制包括自我实现激励、娱乐、社交和情感,外在激励机制包括经济利益和外部影响;何云华等[17]基于区块链视角总结了激励机制研究现状并进行分类,指出针对不同场景采用不同的激励方法,并从隐私性、可拓展性等方面评价激励机制。然而,关于联盟链缺乏激励机制导致其共识效率不高、联盟内成员数量增加缓慢等问题仍有待深入研究。

基于此,本文通过对联盟链与gas 机制原理的介绍,分析来自gas 机制对联盟链激励机制设计带来的启示,在联盟链上设计出包括申请加入联盟、数据信息上传、修改、查询和下载5 种不同应用场景下的激励机制流程,并结合联盟链的应用平台Hyperledger Fabric,设计了上传、下载激励机制的运用流程,以期为联盟链激励机制设计与研究提供参考,为实现联盟链自身发展、推动联盟链上数据信息共享、加快业务流通提供帮助。

1 联盟链定义与特点

1.1 联盟链定义

联盟链由多个组织,例如学校、企业、公司等组成联盟,在联盟组织内,成员的身份通常是可知的。联盟链上的节点可以读取链上信息[18],但写入与更新区块链内容仅具有管理身份的节点才能执行操作,并使用一致性机制验证其管理身份之间的数据写入。由此,联盟链是限定加入、读写权限的一种可控区块链。

1.2 联盟链特点

1.2.1 弱中心化

通过与公有链准入机制的比较,联盟链对成员的加入与权限分配有着非常严格的限制。申请加入联盟链的成员都要经过准入许可后才能加入,并且联盟链会对节点的身份进行预先设置,联盟链上账本的查询与写入功能仅让有权限的成员参与[19]。而与私有链相比较,私有链的应用场景一般在企业内部,进入权限由某个组织进行控制,各节点参与资格由该组织授权控制,因此私有链仍保留着中心化的特点。对比发现,不同于去中心化的公有链和中心化的私有链,联盟链有着弱中心化的特点。

1.2.2 高速率

联盟链上节点数目不多,因此发起交易后达成共识的速度会比需要全网共识的公有链速度更快。公有链上的数据具有不可篡改的特性是由于需要50%以上的节点达成共识才可以对数据进行修改,而联盟链上的数据信息在有权限的节点中达成共识后,就可以进行更改。因此,联盟链的交易速率更高。

1.2.3 高可信

在公有链上的所有节点都有权参与执行公有链上的交易信息。虽然在节点处理信息时会通过非对称加密技术对交易进行匿名处理,但是公有链不能保证交易隐私,因为每个公钥的所有交易和余额的值都是公开可见的。而比较于公有链,在联盟链上只有联盟内部的成员可以访问联盟链上的数据信息,而外部成员则无法访问[20]。因此,联盟链具有更高的可信度。

2 以太坊的gas 激励机制原理及启示

2.1 gas 机制来源

以太坊上智能合约的应用意味着区块链2.0 时代的到来[20]。智能合约在以太坊中的应用实现了用户需求与区块链技术的对接。智能合约是通过在以太坊的虚拟机上运行代码实现,网络中的每个节点都会成为运行实现代码验证协议的一部分。因此,智能合约在交易执行过程中被每个节点执行,代码的重复执行都消耗着一定的资源。为了解决每个节点执行过程中过度消耗、资源浪费的问题,以太坊提出了一种简称gas 的激励机制。gas 是以太坊虚拟机内部流通的货币,以太坊虚拟机用gas 对交易打包、智能合约执行等操作收取费用[21]。

2.2 gas 机制激励过程

2.2.1 gas 组成

gas 是衡量执行某些操作所需计算量的单位,用来计算为了执行操作而需要支付给网络的费用数额,由已消耗gas(gas used)、gas 单价(gas price)、gas 额度限制(gas limit)、支付用费(fees)4 个部分组成。已消耗gas(gas used)是用来交易的实际的gas 量;gas 单价(gas price)是每单位gas 的价格;gas 额度限制(gas limit)是交易发起者在本次交易中支付的最大额度的gas 量;支付给矿工的费用-支付用费(fees)由已消耗gas(gas used)和gas 单价(gas price)组成,在支付前需要对支付费用进行换算后以以太币的形式发放给矿工。

2.2.2 激励过程

用户在以太坊中发起一笔交易的执行流程大致分为发起交易、验证交易信息、广播交易、矿工选择交易、执行交易、交易执行结果记录6 个阶段,如图1 所示。第一阶段,用户发起交易时需要设定本次交易执行过程中gas limit 的值,需要注意的是,gas limit 的设定将决定在第四阶段时交易被处理的速度与是否被矿工所选择;第二阶段,对用户签名、交易账户、交易值等进行确定;第三阶段,对发起的交易进行广播,网络中的节点将接收到广播;第四阶段,矿工节点将根据gas limit、gas price 的设定选择是否打包该交易;第五阶段,矿工完成对交易的打包,并且收取交易发起者设定的gas limit;第六阶段,在以太坊世界状态中刷新用户状态,全网节点进行记录。

gas 机制的优势之一是对矿工的工作量设置了保护。如果gas limit 设置过小,一旦交易被矿工处理,所消耗的gas 将不会再返回交易发起人账户,而是将消耗的gas 用于奖励矿工执行代码的工作量。即在交易未被完全处理时gas limit 就被耗尽,则造成已执行的合约被复原,并在区块链上记录交易失败信息。由此,无论交易成功与否、选择对交易打包的矿工都会收到gas 奖励。

Fig.1 Flow of gas incentive mechanism图1 gas 激励机制流程

gas 机制的另一个优势是对交易发起人将要消耗的gas总量进行保护,避免用户余额浪费。交易发生前用户很难准确预估将要消耗的gas 值,因此,gas 机制设定支付矿工消耗费用后将剩余的gas 返回到用户账户。

2.3 gas 机制意义

首先,gas 机制在以太坊中的执行,使得每个被发起的交易都要由使用者付出一定费用,按照工作量的不同去支付,因此赢得了许多矿工的加入,使得以太坊得以不断发展;其次,由于每一个交易代码的运行都需要向以太坊网络支付费用,如果有恶意攻击者发起攻击,也需要为攻击运算的代码付费,且攻击一旦失败则会支付更多费用,gas机制的设定提高了以太坊网络的安全性;最后,为了减少代码费用支付,开发者会使用简洁高效的代码进行开发,使得以太坊网络的运行速率大幅提高。简而言之,gas 机制在以太坊中的应用不仅优化了以太坊网络的安全性与运行速率,还让更多想要得到激励奖励的矿工加入其中,让以太坊得到稳定发展。

3 联盟链激励机制设计

gas 机制提供了一种用户需要对矿工在交易中的劳动贡献进行付费的方式,联盟链也需要这样一种方式以促进数据信息共享与使用,并在安全可信的联盟链环境下提高交易效率。本文从联盟链的底层技术与运作原理出发,采用积分机制的激励方法,当非联盟成员或联盟内成员发起交易请求时,由管理节点进行请求消息审核,审核通过后将请求消息广播到联盟链内,从而触发联盟链上的积分激励机制。具体操作是,首先在联盟链上设置一个积分管理中心,用于对所有节点的积分生成与消耗进行记录;并设置联盟链上节点的身份分别为证书认证中心、交易发起者和处理者、管理节点(共识节点和执行节点)和普通用户成员。其次,根据交易发起者在联盟链上提出的业务请求类型,分别为申请加入联盟、数据信息上传、数据信息修改、数据信息查询和数据信息下载等请求。不同的请求类型将带来不同的积分消耗和生成过程,交易发起者被消耗的积分将依据一定规则奖励给参与共识过程的管理节点和交易处理者,积分生成或消耗的记录会分别记录到积分管理中心、交易发起者和交易处理者个人积分账户、管理节点的积分账户。本文将对不同请求下联盟链的激励流程进行阐述,如图2 所示。

Fig.2 Flow of consortium chain incentive mechanism图2 联盟链激励机制流程

(1)申请加入联盟请求。设定入盟规则为随着时间变化入盟奖励会越来越少,当联盟链上的成员达到饱和后,后续加入的成员需要上交一定的入盟费用并获得已有成员的认可后方可加入,此入盟费用将用于奖励给联盟内部的已有成员。入盟审核是由网络中的用户提出加入申请,具有管理身份的共识节点和执行节点对该申请进行审核,审核通过后由证书认证中心发布出该节点的认证证书信息与公私钥对,提出申请的节点保留自己的私钥,证书管理节点广播此用户的身份信息和公钥信息,便于全网节点对资源进行校检。在成功加入联盟后对该节点进行积分奖励并由积分管理中心在新入盟成员的个人积分账户进行记录。此积分可用于查询、下载联盟链上的数据信息。

(2)数据信息上传请求。由网络中的用户节点向管理身份的节点提出数据信息上传申请,并审查数据信息的安全与质量。在审查通过后,证书认证中心要对数据信息的版本信息进行审核,校检该数据信息是否为新数据信息。审核通过后,由证书认证中心发布认证证书与公私钥对并注明数据信息的版本号,以方便后续修改与更新业务。对发布数据信息的用户、参与数据请求过程的管理节点账户进行积分奖励并由积分管理中心对参与该过程的节点与成员分别进行积分激励记录,以此激励联盟链上的成员共享数据信息。

(3)数据信息修改请求。网络中的用户节点提出数据信息修改请求后,要先由管理节点核查数据信息的安全与质量,核查通过之后交给证书认证中心核查该数据信息的版本历史信息,若无版本历史信息则认定为新的数据信息并发布认证证书与公私钥对。核查通过后,对上传该资源的账户、参与数据请求过程的管理节点账户按一定规则分别进行积分奖励,并由积分管理中心与参与该过程的节点与成员分别进行记录。需要注意的是,更新后原版本信息和更新后信息都会在区块链上有所记录。

(4)数据信息查询请求。与上述不同的是,数据信息查询请求会消耗用户积分,但若积分不足可能会引起查询失败或无法查询完整信息,并且对应于gas 机制已消耗的积分将不再返回交易发起者账户。因此,在用户账户积分充足的情况下才会查询成功。查询流程是由单个或多个交易发起者用户发起交易查询申请,多人共同查询的优势是平摊查询成本,以此激励更多用户参与到资源查询中。在发起交易申请后由管理节点对交易节点账户进行审核,判断是单账户还是多账户发起的交易,并对账户的认证信息进行身份核查。确定交易发起人用户信息后将交易广播到全网节点,联盟上的成员收到查询请求后可以选择是否加入此交易。确认参加后由管理节点对参加交易的节点进行排序,最先决定参加处理该交易的成员将得到被查询的机会。并且,向交易发起者公开被查询的数据信息,在查询成功后,交易发起者将被扣除查询所消耗的积分,按照一定规则将部分积分转移到交易处理者账户,另一部分转到参与交易处理的管理节点账户,积分转移信息由积分管理中心和相关成员账户进行记录。

(5)数据信息下载请求。数据信息下载请求属于积分消耗请求,对应于gas 机制中的劳动付费原则,若交易发起者账户积分不足,数据信息下载将会失败,并且用户下载消耗的积分不会被退回到原有积分账户。此外,网络中的交易发起者节点发布数据信息下载请求的前提是已被成功查询。具体流程如下,交易发起者判断是所需数据信息后,需要再次对管理节点发送下载请求。管理节点审核成功后向数据信息所有者广播下载请求消息。该消息得到交易处理者确认后,向交易发起者提供下载该数据信息的链接。当积分被消耗完时,链接将会失效,交易发起者将无法继续对该资源进行下载。同时,按照一定规则将消耗的积分部分转移到交易处理者与管理节点的账户并由积分管理中心记录。

4 基于Hyperledger Fabric 平台的联盟链激励机制应用设计

4.1 Hyperledger Fabric 交易机制

Hyperledger 是Linux 基金会于2015 年发起的旨在推进区块链技术发展的开源项目,提供一个开放平台的方式,为全球商业、金融、物联网等领域提供支持[22]。本文以Hyperledger Fabric 平台为例,对联盟链的激励机制应用过程进行阐述,明确Hyperledger Fabric 的组织架构与共识机制是该平台实现激励机制的基础。

4.1.1 Hyperledger Fabric 组织架构

Hyperledger Fabric 由联盟、通道、组织、若干不同身份节点组成。联盟通常由一个或多个组织构成,处于同一通道内为一个联盟。通道是一个逻辑概念,是在通道上的部分网络成员之间拥有的独立通信渠道。Hyperledger Fabric内部由不同的组织划分,组织内由分布在世界各地的联网机器或虚拟机组成不同身份的成员,成员身份包括:客户端节点、记账节点、提交节点、背书节点、排序节点、锚节点、CA 节点等,不同的成员可以选择加入不同的组织。

4.1.2 Hyperledger Fabric 共识机制

超级账本采用PBFT 共识算法,目的在于保持网络节点之间的分布式状态一致。共识过程通常分为背书、排序、校检3 个阶段[23],如图3 所示。第一阶段是背书阶段,在超级账本中会设定若干个节点或特定的节点担任背书节点身份。背书节点对客户端发起的交易数据信息进行合法性校检并模拟链码执行得到交易结果、根据预先设定的背书策略判断是否支持该交易。校检通过后,对该交易提案签名再返回客户端。第二阶段是在超级账本上各通道内对各组织上的交易进行排序,目的是确定交易信息之间的时序关系。同时,通过kafka 模式对交易消息进行处理并分发给通道中的成员,保证所有节点数据一致性。第三阶段是校检阶段,由提交节点对排序后的交易进行一系列检验,包括交易数据的完整性和唯一性、背书签名正确性等。校检通过则按照交易的顺序记录于账本,始终保持不同记账节点的状态一致。

Fig.3 Hyperledger Fabric consensus process flow图3 Hyperledger Fabric 共识过程流程

4.2 基于Hyperledger Fabric 激励流程的应用流程

联盟链中的一般激励机制是由不同身份的联盟成员、证书认证中心、积分管理中心组成。在Hypeledger Fabric中激励机制的执行同样需要通过客户端节点、记账节点、提交节点、背书节点、排序节点、锚节点、CA 节点的参与共同完成。但还缺少实现激励机制的触发节点,因此要在Hyperledger Fabric 的联盟内部设置某个节点的特定身份为积分管理中心,用于实现存储积分激励机制的触发功能。当数据信息交易请求被提起时,首先由管理节点进行请求消息审核,审核通过后将该消息广播到联盟链上,并同时触发数据信息交易的激励机制。

4.2.1 上传数据信息事务激励流程

根据上文联盟链的用户成员发送上传数据信息请求的一般激励流程,基于Hyperledger Fabric 上传请求激励具体流程如图4 所示。首先,客户端的应用程序发起上传交易提案请求到背书节点,背书节点接收到交易上传请求后,先对交易提案进行合法性检验,验证通过后模拟执行链码并得到交易结果;再依据背书策略决定是否支持交易提案,若支持则生成提案响应和背书签名并发送给客户端的应用程序。在应用程序收到所有背书节点的背书签名并进行检验后,需要向排序节点提交交易。排序节点接收到交易请求后,要先对交易提案请求、背书节点的提案响应与背书签名进行验证并打包;之后对所有通道发出的交易信息,按照交易的接收时间进行打包并生成区块广播给通道上不同组织的主节点;再由每个组织的主节点将交易消息发送到组织内部的每个记账节点并进行更新。如果该交易无效,则不再更新当前的世界状态,但区块仍会更新。因此,在对客户端节点的上传请求进行激励时,应判断该交易是否成功更新世界状态。若成功更新,应依据规则,给予参与该共识过程的背书节点和执行节点相应的积分奖励并记入节点的积分账户上,将奖励生成的积分记录到积分管理中心以便后期查询以及积分使用情况记录。

Fig.4 Fabric upload request excitation flow图4 Fabric 上传请求激励流程

4.2.2 下载数据信息事务激励流程

根据上文联盟链的用户成员发送下载数据信息请求的一般流程,基于Hyperledger Fabric 的下载流程如图5 所示。首先,由个人或多人客户端共同发起同一个下载交易提案请求到背书节点,此时客户端的身份为交易发起者。背书节点要经过3 部分校检,首先对交易信息进行验证;然后,对该交易是否完成查询请求进行校检,若未完成,则不返回交易提案,若已完成查询,则返回背书签名和交易提案;再由背书节点对用户的积分余额进行查询,以免余额为空无法进行交易。背书完成后,由排序节点对交易进行排序,并广播到每个组织的主节点。在组织内部成员收到下载资源请求后,第一个接收该数据信息下载请求者为交易处理者,由交易处理者向交易发起者提供下载数据信息链接,并由交易发起者支付一定积分。需要注意的是,当资源下载未成功时,已支付积分不再返回交易发起者账户,并由积分管理中心对两者积分变动进行记录。当下载成功时,处于组织上的主节点将交易成功消息进行广播,并由各组织上记账节点进行记录并更新区块的世界状态。被使用于下载当前数据信息消耗的积分将依据一定规则,将部分积分转移到交易处理者账户,同时将另一部分积分转移到参与该交易的背书节点与执行节点的账户。由积分管理中心对参与该交易的成员与管理节点的个人积分账户进行记录。

Fig.5 Fabric download request excitation flow图5 Fabric 下载请求激励流程

5 结语

加快区块链技术的商业应用部署能够更好地提高社会各领域之间的合作与共建共享,推动数字化时代数据信息流通模式变革。激励机制作为提高区块链运行速率与安全性的重要手段,其进步与发展必定会成为驱动区块链技术应用持续发展的核心动力。通过对不同类型区块链的比较分析发现,联盟链相较于公有链和私有链更适合于商业应用。基于此,本文对联盟链原理与特征、gas 激励机制的激励过程及启示进行了阐述。经分析发现,gas 激励机制的核心在于采用对矿工所有劳动量付费的方式。因此,本文结合联盟链的原理与特点设计了在联盟链上入盟、数据信息上传、下载、查询等应用场景的激励流程,并结合Hyperledger Fabric 设计实际应用流程,以期通过激励机制设计,实现联盟链成员扩大,进而加强联盟内部稳定性。此外,每位成员都有在联盟链上分享与获取数据信息的权利,希望通过不同成员之间的分享,提高数据信息使用价值,并吸引更多领域的人为联盟链的应用与发展作出贡献。

猜你喜欢
发起者以太背书
以太极为旗,开启新时代“黄河大合唱”
不对称信息下考虑参与者行为的众筹参数设计
背书是写作的基本功
背书
车易链:做汽车业的“以太坊”
背书
诤言传播的发起者研究——动机和影响因素
百通推出入门级快速工业以太网络交换器系列
背书连续性若干问题探析
以太互联 高效便捷 经济、可靠、易用的小型可编程控制器