APP下载

基于Fabric的快速公平合同签署协议

2022-01-25陈焕新李爱萍

计算机工程与应用 2022年2期
关键词:公平性合约公平

陈焕新,李爱萍

太原理工大学 信息与计算机学院,山西 晋中 030600

在商业交易中,交易双方对交易内容的认可需要通过合同形成各种存证,如保险合同、银行存单等,双方互信建立在书面签名、多重备份、分散保存等基础上,即将经双方确认符合自身利益的合同相互交换签署,从而实现对其利益的保障。随着数字化技术的发展,交易存证也在逐渐实现电子化,以顺应信息技术和大数据潮流,同时提高合同存证的管理效率和利用价值。

交易存证数字化后,交易双方通过PKI/CA体系的RSA签名机制和哈希摘要对合同内容进行签名,为合同的合理性背书,在此基础上,针对数字合同的公平合同签署协议(fair contract signing protocol,FCSP)将是保证合同公平进行的必要条件。公平合同签署是指双方在网络中发送带有自身数字签名的合同,签名可由对方进行验证,同时如果合同内容侵犯了某一方的利益,则停止执行,并且回滚到初始状态,以避免任何一方的损失,保证了合同内容的公平性。因此,合同成功运行则代表双方对合同内容的共同认可,而合同异常终止也不会使任何一方形成损失,同时交易双方无法否认自己应负的责任,形成了线上合同的公平。公平合同签署协议可以分为有可信第三方(trusted third party,TTP)和无可信第三方两种模式,前者是一种传统的中心化管理方式[1],而后者则是一种去中心化的管理方式[2],其中有TTP模式要求第三方必须严格中立,一旦第三方不可信,将会对交易其中一方造成损失,从公平角度看,无TTP模式要比有TTP模式更有优势,然而直到区块链出现之前,FCSP也没有建立出无TTP模式。

以去中心化、不可篡改为核心特色的区块链,是一种特殊的电子交易系统,所有交易及数据往来都是以电子形式通过P2P网络进行传递、存储[3],所有用户可进行私密交易,保证交易的完全匿名性,同时所有交易在区块链上存储,形成数据的不可否认性。其去中心化的特性正好顺应FCSP的无TTP需求,相较于以往的传统电子交易,去中心化的分布式存储提升了私自修改数据的代价,同时链上节点的每一次交易都会记录在链上,大大提升了交易的可信度[4]。

然而,当前区块链的信任模式还是单向信任,即交易的发起方对接收方只有利益的输送,而没有确认接收方应负的责任。以比特币支付为例,在单向信任模式中,接收方可以信任发起方的支付行为,而发起方却无法信任接收方的履约行为,当发起方发送交易后,接收方获取利益,却有可能以没有责任约定故意不履行合约,使发起方承受巨大损失,这种情况在现实中并不少见。因此,区块链亟待建立起能保障公平性的双向信任模式,即通过约定利益和责任,通过网络发送经过己方签名的合同,在接受利益的同时也接受责任,使交易双方达成交易互信。当前逐渐兴起的针对双向信任的研究指出,可以通过多种措施形成双向公平,从而更好地促进区块链在某些重点行业的落地推广[4],然而这些措施均存在各种各样的缺陷。本文的贡献主要有以下两点:一是针对现有公平合同签署协议的缺陷,在Fabric区块链中对其进行了改进,形成交易主体的顺序签名、统一验证,在保证双向信任的同时提升了交易确认速度;二是设计了车险区块链架构,并在车险环境下验证上述双向信任保险区块链的公平性和性能。

1 研究背景

1.1 区块链

区块链最初被一种非常有名的加密货币——比特币采用,能够记录跨计算机的操作,并以分散的方式存储,从而形成一个不可变的数字分布式分类账[5]。帐本分布在所有节点中,每个节点都有账本的副本。每个事务以块的形式存储,被组织成线性序列,形成一个链条。区块链的每一个块都包含前一个块的哈希值,一旦块被加到链条末端并且被共识,那么任何人都不能删除或者修改这个块,在比特币使用的区块链中,每个块对所有成员可见[6]。

1.2 Fabric联盟链

Fabric联盟链由IBM提出,适用于在大规模网络上运行分布式应用程序,最大优势是性能开销较小和机密性较好[7]。从性能开销角度考虑:其他区块链结构中,共识被广泛接受,但在区块链网络中以对等方式顺序执行事务,严重降低区块链性能。而在Fabric中通过指定背书节点和共识节点,背书节点模拟执行交易并签名,交由有限的共识节点进行共识并打包成块,提高了效率,避免了不必要的性能开销。相同条件下,相较于以太坊联盟链,Fabric联盟链在吞吐量和事务延迟等方面有更好的性能[8]。从机密性角度考虑,此前的区块链结构中允许任何一方查看链块,不符合商业应用中保密性的要求,而Fabric通过引入成员关系服务提供者(membership service provider,Msp)审核机制和通道技术在一定程度上实现了机密性,其中Msp机制通过身份验证和签名管理建立了节点加入区块链的门槛,通道技术通过保证各通道节点及节点间的交易独立性实现隐私性[7]。在Fabric中,节点的加入都要通过审核[9],同时每个交易环境都在一个通道中发生,每一个通道生成各自的区块链,只有本通道内的节点才可以查看区块信息。

1.3 智能合约

智能合约也称为加密合约,是一种计算机程序,用于依据某种规则在各方之间转移资产或数字货币,允许互不信任的主体进行交易[8]。Fabric提供的智能合约叫作chaincode,即链码,使用Docker容器来运行智能合约,基于Docker提供的隔离性和安全性来实现宿主主机的安全性[10]。智能合约可基于Go和Java高级语言开发,这些语言不但图灵完备、技术成熟,可降低合约开发者的学习门槛。同时区块链本身的特性,使得智能合约保存在区块链中,保证其不可篡改性[11]。

1.4 保险行业现状

信息不对称是当前保险行业的显著特点[12],主要包括两个方面,一是保险公司的条款制定和执行对于被保险人来说是陌生领域,保险公司可能会设置一些漏洞来欺瞒被保险人;二是被保险人利用信息的不同步、不透明等特点,利用时间差、造假等方式,恶意骗取赔付。因此,在区块链出现不久即产生了将该技术应用于保险行业的呼声,多位学者提出了将区块链应用在保险行业中的可行性和必要性[13-14],然而并没有对区块链如何应用在保险行业中进行进一步的研究。

1.5 公平合同签署研究现状

基于区块链技术的公平合同签署协议发展有以下几个阶段:一是基于原始区块链有TTP的实现,二是基于原始区块链无TTP的实现,三是基于智能合约的实现。

基于原始区块链有TTP区块链技术的公平交易实现[14],其内容是交易双方和稳定第三方对交易进行数字签名,发布在比特币网络,没有发送己方签名的一方会被惩罚一定数量的比特币。然而该方案依赖于比特币等数字货币,没有涉及合同内容,并且当惩罚的比特币超过交易额时,此协议即会失效。

针对上述缺陷,于雷等人提出了一种基于原始区块链的无TTP通用的双向及多方信任的公平合同签署协议(BFCSP)[4],交易流程如图1所示,该协议不依赖于货币,当组织A中的普通节点发起交易,会将合同内容与交易一起发出,以下统称交易。首先组织A中的提交节点对交易进行签名并单方面将交易上链,并进行广播,证明A已经发起但B没有确认,当组织B中的节点接收后,会进行签名,同时上链,并进行广播,证明B已接收A未确认,当A接收到信息后,签名并上链,确认A已知B接收到交易。这种共识协议完全保证了双方的公平性,然而在A发起的一次单方交易中,需要生成三个块,降低了区块链的交易效率。

图1 基于原始区块链的公平合同签署协议示意图Fig.1 Diagram of FCSP based on original blockchain

以太坊技术成熟后,出现一种新型的基于以太坊公有链智能合约的公平合同签署(EFCSP)模式[15],其中公平合同签署通过智能合约修改交易规则实现,基本思路是通过智能合约将待确认交易发布到以太坊区块链网络中,由接收方确认签名。但是该方法需要将交易发布在公链环境中,暴露了合同内容,因此只适用交换利益,而不适用交换具体责任,不适用实际商业环境,同时以太坊区块链的交易确认仍然带有挖矿过程,使得交易造成计算浪费和耗时增加。

综上所述,三种公平合同签署协议各自的缺陷如表1。

表1 不同公平合同签署协议的缺陷对比Table 1 Comparison of defects in different FCSP

Fabric架构交易确认速度快的特性使得其更适用于公平交易环境,且相比于公链,Fabric联盟链有如下四个优势:一是引入Msp管理机制确保交易各方可信,二是使用状态数据库利于编写链码,三是各通道发生的交易互不干涉,四是去除了POW共识机制因而消除了算力浪费问题[16],然而当前并没有研究提出基于Fabric的双向公平合同签署协议。图2展示了传统Fabric架构的运作过程[7],组织A中的普通节点发起交易,背书节点endorse进行模拟执行,传递给通道的order节点进行排序共识,再返回给组织A中的commit节点进行上链操作,待确认交易进行加密处理,保证了交易的隐私性。然而在交易流程中可以看到交易接收方组织B并没有证明自己接收交易,也就是说传统Fabric的公平性只体现在了交易接收方,发起方并没有享受到公平性,是一种单向信任。

图2 Fabric区块链运作过程示意图Fig.2 Diagram of Fabric blockchain operation process

2 基于超级分类账结构的车险架构

2.1 TFCSP:基于Fabric联盟链的快速公平合同签署协议

以基于传统区块链架构的FCSP为例,它的提出是为了实现双向及多方信任,然而需要多次共识过程,而每一次共识都需要一定时间进行[17],因此耗费大量时间,而基于以太坊智能合约实现的双向公平又失去了合同内容的隐私。针对基于传统区块链、以太坊FCSP的上述缺陷,本文提出一种基于Fabric架构的快速双向信任的合同签署协议(TFCSP),通过利用Fabric架构特性修改gossip进程来实现,同时Fabric架构提供的私有数据机制将同一交易的隐私数据和非隐私数据分开处理保存,保证了合同内容的隐私,并且通过身份混淆机制赋予用户一个短期凭证来维护交易双方的身份隐私[7]。TFCSP具体执行流程如图3所示。

图3 基于Fabric的快速公平合同签署协议示意图Fig.3 Diagram of TFCSP based on Fabric

组织A和组织B中的背书节点、领导节点、锚节点分别是endorseA(B)、leader A(B)、anchor A(B),组织A和组织B的签名为signA和signB,常用信息以结构体形式储存在区块链上,数据传输过程如图4所示。

图4 TFCSP数据传输过程示意图Fig.4 Diagram of TFCSP data transfer process

当组织A中的普通节点发起交易,交易以结构体为组织形式,方便后续内容比对,利用Fabric架构私有数据(Private Data)机制,可以指定部分数据为隐私数据且制订权限策略,使仅指定节点可见,另外,隐私数据不会明文上传到区块,保证了隐私性[18],背书节点对交易内容模拟执行并签名后发送给order节点进行排序打包成块操作,当返回给leaderA后,由锚节点anchor传向组织B。

gossip进程判断节点身份,若为leaderB,同时进行信息验证,包括签名、合同内容,将组织A的签名保存的签名列表进行比对,随后单独进行交易的责任验证背书,通过与链上已存的常用信息进行比对,验证合同的内容是B可接受的,将B的验证意见及块信息,随同组织B背书节点的签名一起组成结构体返回给leaderB,由anchorB节点发送给组织A,leader节点验证流程如图5所示;若不为leaderB,则根据节点的身份进行对应的背书和上传到链操作。

图5 leader节点的验证过程示意图Fig.5 Diagram of validation process for leader node

最后以同样方式由leaderA节点对组织B的验证信息进行验证,确认B已获知此次交易,则将原来的块交给commitA节点进行上链操作。

其中组织A的签名,形成了交易发起方的不可抵赖性,组织B对块内信息的签名是证明接收方对交易合同责任的认可,所有操作自动化完成。相比于传统的Fabric只是对交易的可达进行背书,在本协议中,leader节点同时承担了交易中责任的确认工作,链上的块内含有交易双方的签名,代表双方都认同此次交易,达到接收方的交易前确认,增加了交易双方的公平性,且每一次交易就只会产生一个块,交易消耗时间将会大大降低。

2.2 公平合同签署模式的车险区块链

为验证本文提出的快速公平合同签署协议TFCSP的有效性,给出最常见的车险方案的实现。在典型的车险场景中,用户一般会连接到一定数量的相关节点,包括保险公司、维修厂、交通警察、医院以及其他涉及的角色。采用本文提出的快速公平合同签署TFCSP的区块链架构参见图6所示,该分层架构中,服务层对外提供复合服务,存储层通过分布方式存储区块链中数据的冗余备份;网络层连接参与车险场景的各个角色节点,每个节点属于各自组织,组织内普通节点可以共享、存储和更新其事务数据,leader节点则负责数据同步和信息解析验证;最上层的智能合约层则提供车险场景中的业务实现;通道和排序则为这些层提供公共服务,其中,通道是车险区块链中各类角色的具体节点进行通信交易的空间,通过通道的隔离实现了车险区块链的整体对外隐私性,排序实现对事务打包成块上链。

图6 车险区块链架构Fig.6 Car insuranceb lockchain architecture

下文对被保人购买保险这一流程进行详细说明,参与主体包括用户方和保险公司方:

用户方:首先意向用户发起保险购买行为,不仅提交用户和保险公司公钥、保额和其他保险信息,还要将保险公司收到信息后的应有行为提交到背书节点,背书节点会对交易进行验证并签名,随后发送信息到order服务节点,order服务节点将交易进行打包成块,发送给用户组织中的leader节点,leader节点获取块内信息,按照交易接收方地址发送块信息并进行确认签名。

保险公司方:保险公司组织内的leader节点,不断接收通道内接收方为自身组织内节点的信息,接收信息并解析后,对合同责任内容进行验证,验证结果信息附带块信息发送给背书节点,背书节点模拟执行并签名,随后返回给leader节点,leader节点向用户方返回加签名的验证信息。

用户方:当接收到接收方为自己组织内节点的信息,核查保险公司的验证信息后,由提交节点进行块的提交上链过程。

3 实验分析

实验的开发环境为18.04.4LTS的64位操作系统,Fabric的版本为1.4.4,在本地搭建了一个车险区块链系统,分别应用了现已有的基于原始区块链的FCSP、基于智能合约的FCSP和本文提出的TFCSP。使用go语言根据常规车险交易流程编写了智能合约,修改了gossip进程的代码;在此基础上模拟了部分交易过程,并使用开源工具Hyperledger Caliper对各种FCSP进行对比测试,并与原生的Fabric进行了对比。

(1)公平性分析

公平性分析包括对交易中的分析和交易后的分析,交易中的公平性指交易双方在一次单向交易中都可以获知交易内容及双方应负的责任;交易后的公平性指区块链本身的不可篡改性和可追溯。

①交易中实现公平:实验中在本地模拟进行了一次用户购买保险的操作,通过查询世界状态的信息,结果如图7所示,其中列出了用户购买保险的具体信息,证明用户已知保险公司确认了该交易。

图7 用户购买保险的信息Fig.7 Information about user’s purchase of insurance

②交易后的公平:块上传到链,那么由于Fabric自身的特性,链对通道内每一个节点透明公开,即每个节点都可以访问本通道的区块链,并查看链上信息,当现实交易出现问题时,相关节点都无法篡改已上传的块。应用本协议后,节点无法否认自己没有接收过交易对方的信息,实现交易全程双向信任。

(2)性能分析

本文性能分析包括将本文提出的快速双向信任模型与其他公平合同签署协议及原始Fabric进行交易完成率、吞吐量及交易耗时的比较,在Fabric架构上以相同实验环境模拟了各FCSP协议,包括基于原始区块链的公平合同签署协议(BFCSP)、基于智能合约实现的公平合同签署协议(EFCSP)、基于Fabric的快速公平合同签署协议(TFCSP),同时与原生Fabric进行对照实验。

①交易完成率和吞吐量对比

在进行性能测试前,为保证区块链所安装智能合约的可执行性,使用caliper进行测试,指定发起次数和发起频率,设置caliper发起频率为100 tps,分别在发起次数为1 000、2 000和5 000时测试交易完成率和吞吐量。

图8为交易完成率的测试结果,交易完成率越高说明系统的稳定性越强,从图中可以看出:Fabric架构及应用各种协议的Fabric区块链都会存在交易失败的情况,随着协议难度的升级,交易失败率也在上升,但交易失败次数增长率远小于交易发起次数的增长率,交易失败次数增长率在四种模式中差距并不明显,说明交易失败次数是相对稳定的。

图8 交易完成率测试结果Fig.8 Trading completion rate test results

表2为吞吐量测试结果,吞吐量代表系统的性能,吞吐量越高说明其交易速度越快,从图中可以看出,随着交易发起次数的增加,吞吐量随之增加,然而在四种模式中,发起次数越大,吞吐量就越大,并且趋于接近发起频率。同时,协议的复杂度也影响着吞吐量,从图中可以看出,原始的区块链相同条件下吞吐量最高,与之相比,TFCSP吞吐量因为协议的复杂而降低。

表2 吞吐量测试结果Table 2 Throughput test results

②耗时测试:在实验中以单次交易消耗的时间为比较标准,即一次交易从提交至上传到链的时间。TFCSP与其他FCSP的不同就在于除了功能智能合约外还需要gossip进程的额外作业,gossip进程不会因为功能变化而变化,随着功能增加,可能还会安装功能智能合约,因此首先进行一次交易,对功能智能合约的耗时进行测试,再测试TFCSP整体的耗时,对各FCSP和TFCSP进行耗时对比。

首先,进行了保险公司方和用户方之间的一次单向交易:用户购买保险。由于Fabric具备出块可配置时间、大小及交易上限等十分灵活的特性,以极端状况为例,设置一个块只记录一个交易,即batchsize:1,从而让结果更加清晰。

其次,通过设置交易字段来改变交易大小,使得块大小从0.2 MB到1 MB按0.2 MB的增幅逐次增加,记录下每一次的耗时。

最后,将应用四种模式的交易耗时进行比较,应用各种协议的车险区块链块大小对端到端延迟的影响比较如图9所示。

图9 块大小对四种模式端到端延迟的影响Fig.9 Effect of block size on end-to-end latency in four modes

结果表明:随着块大小的增加,四种模式的事务确认时间都在增加,然而由于TFCSP的gossip进程有额外任务,使得性能与普通Fabric相比有明显差距,与之相反,相比于另外两种模式,由于TFCSP对事务的计算及上传到链的次数都较少,因此使得TFCSP的事务确认时间小于其他FCSP的确认时间,实验结果也证明完成相同交易,TFCSP消耗的时间相较于其他FCSP更少,效率更高,结合图9可以看到,TFCSP的耗时由gossip进程执行耗时和功能智能合约耗时两部分组成,且gossip进程的耗时占比更大。

综合实验结果可知,当应用到Fabric架构中时,本文提出的TFCSP协议能够保证双向交易的公平,在点对点不互信交易的场景中,维护了整体交易的公平,然而为了维护公平牺牲了交易的完成率、吞吐量及耗时,相比于原生的Fabric,交易耗时有一定增加,完成率及吞吐量有一定下降,而与其他协议相比,交易耗时相对较小,交易完成率及吞吐量差距较小,因此在对交易的实时要求不高的前提下,本文提出的TFCSP协议能够满足对公平需求较强的场景。

4 总结与展望

本文在对Fabric区块链做了简单介绍的基础上,讨论了多种基于区块链的公平合同签署协议,并面向Fabric架构对其进行了改进,减少了生成的块,降低了交易耗时,最后通过实验在具体的车险场景下进行了公平性及性能分析。实验结果表明本文提出的基于Fabric的公平合同签署协议相较于已有的FCSP来说,在保证了双向信任公平性的前提下,大大提高了交易的确认效率,进一步解决了保险领域中由于信息不对称导致的信任缺失问题。然而在实际场景中,可能面临多个角色的多个节点同时进行交易,因此下一步的研究方向是讨论在这种并发场景下如何界定并保证公平性。

猜你喜欢

公平性合约公平
公平对抗
怎样才公平
高管薪酬外部公平性、机构投资者与并购溢价
笨柴兄弟
核心素养视阈下中小学课堂评价的公平性研究
基于公平性原则的员工薪酬分配优化策略
公平的决定