APP下载

基于区块链的仪器租赁模型

2022-02-18于金刚袁轶皓毛立爽姬鹏翔

小型微型计算机系统 2022年2期
关键词:背书账本仪器

于金刚,袁轶皓,李 姝,毛立爽,姬鹏翔

1(中国科学院大学,北京 100049) 2(中国科学院 沈阳计算技术研究所,沈阳 110168) 3(沈阳理工大学,沈阳 110159)

1 引 言

租赁行业在近十年成长迅速,融资租赁市场规模不断扩大,租赁平台数量也呈上升趋势,交易规模至 2020 年约达 9.8 万亿元[1].从租赁品的种类来看,从之前的相机、电脑、自行车等日常物品,到如今逐渐兴起的大型设备、科研仪器等高价值的物品都在市场占有一席之地.而从租赁形式来看,之前多是平台拥有租赁物的所属权,用户向平台租赁获取物品使用权.但同时用户间的物品租赁也逐渐兴起,第三方平台负责作为中介的角色撮合承租方和出租方.

由于传统商业模式或现有技术手段的限制,租赁行业仍存在部分难以解决的问题,如用户信用信息不对称、租赁纠纷解决难、交易信息不透明等问题.而区块链技术具有去中心化(或多中心化)、可追溯、不可篡改等特点[2].如果以区块链技术手段为基础,结合现有的业务逻辑,可以用去中心化的方式解决上述租赁过程中存在的痛点.

区块链的概念源自中本聪提出的数字货币——比特币[3],它不依赖单一的第三方中心节点,而是将信息的存储,验证和交流通过参与其中的多分布式节点来实现.其中涉及到多领域技术,例如点对点传输、分布式数据存储、加密算法、共识机制等[4].

随着区块链技术的发展,现在区块链行业已经步入3.0时代,应用场景也从最早的数字货币,扩展到例如商品溯源、数字政务、资产结算等行业.技术上也逐渐支持图灵完备的编程语言来运行更加复杂的逻辑[5].例如以太坊(ETH)支持编写智能合约,上传后运行在以太坊网络中的以太坊虚拟机(EVM)上,当合约中的触发条件满足之后会自动执行完成指定事件[6].

本文提出一种基于区块链的仪器租赁模型设计,将联盟链的机制加入租赁平台.主要思路是,首先将出租方和承租方节点映射在搭建好的区块链网络;之后建立通道让不同节点之间完成通信;然后用户通过调用不同的智能合约完成仪器的租赁流程;最后保证产生的交易能在区块链上达成共识,形成区块.这样可以让租赁过程中产生的数据可追溯,不被篡改,解决租赁过程可能产生的信用信息不对称、租赁纠纷取证难等问题.并且在第四部分实现了该模型,采用超级账本(Hyperledger Fabric)框架构建区块链网络,实现租赁模型的智能合约,并且实际运行对系统性能进行评估.

2 相关工作

2.1 现有仪器租赁

现有的仪器租赁平台的业务流程主要如图1所示,需要第三方平台加上中心化的数据库来参与租赁流程的进行,因此从发起租赁请求到归还仪器整个过程无法做到完全的监控,就可能出现以下几个问题:

图1 中心化的租赁平台交易流程Fig.1 Centralized platform transaction process

1)仪器属性可信度低,在传统的租赁平台中,承租方无法知晓仪器的真实属性,仅能通过型号等基础信息判断可信度.

2)仪器租赁历史不全,无法准确查询仪器的租赁历史,致使承租方很难通过平台找到合适的仪器.

3)难以达成多边信任,对于承租方作恶成本低,无法及时解决仪器故障,对于出租方无法获得租赁仪器的使用数据,当纠纷发生时无法确认责任归属.

2.2 超级账本

Hyperledger Fabric是IBM提供的一个开源的区块链平台[7],开发者可以利用该平台完成自己的系统设计.它具有完整的身份和权限管理,主要是以联盟链的形式在节点之间搭建通道,达成共识,而且能够进行模块化扩展.其中关键的组件包括:

1)节点:节点主要分为记账节点和背书节点.其中记账节点负责保存整个区块链的账本信息,记录历史状态.而背书节点此外还会对交易进行检查并背书,来计算交易执行结果,之后将结果发送给排序服务.

2)成员服务提供者(MSP):在区块链网络提供节点权限验证与链上用户管理功能[8].完成身份验证,并颁发证书给网络中的参与者.

3)SDK:提供多种语言的接口,完成应用和区块链网络的交互.目前应用支持区块链网络结构的修改,交易发起,链上信息查询,配置更新等操作.

4)通道&链码:由于超级账本采用的是与公链不同的联盟链式架构,通道是不同节点之间建立通信的途径,而且相同通道内的节点仅维护单一账本.这样能使不同通道拥有独立的数据权限管理,隔离其他通道节点,防止账本数据泄露,同时也能提高共识效率.而超级账本同其他数字货币最大的区别是支持多语言的链码,让更复杂的业务逻辑实现得到可能.其中主要分为系统链码和用户链码.前者是Fabric的系统处理逻辑,主要完成节点和通道配置,为交易背书等工作.而用户链码是由开发者实现,链上用户以调用链码的形式与区块链进行交互,目前用户链码需要在安装之后以链码容器的形式在链上运行.

5)排序服务:交易经过背书节点认证后会通过排序节点来完成区块的打包,新区块会使用Gossip广播协议发送到相同通道中的节点.交易打包结果会根据共识机制[9]的不同有所变化.除了Solo和Raft模式被Fabric官方所支持,同时也支持自定义的共识机制.

2.3 区块链在相关行业的研究

对于能源交易方面祁兵,夏琰等提出基于区块链激励机制的光伏交易机制设计[12],设计了光伏交易系统中的交易流程、共识算法、隐私保障机制以及用户的智能合约.并提出信誉值体系确保交易网络中各节点的正向有效合作.

Zhao G,Liu S等也提及到区块链在农产品溯源上的使用[13],做到可以从原料产地到最终商品上架出售给消费者的全过程监管和溯源.

对于物联网和区块链的结合,文献[14]提出让区块链系统与物联网设备结合来实现设备访问权限的配置和管理.同时于金刚,张弘等人也提出基于区块链的物联网数据共享模型[15],设置智能网关将物联网设备产生的监测指标上传到区块链网络中实现共享.

可以看到目前区块链技术在相关行业的研究多数是在区块链上保存数据记录,而对于将物联网设备连接到区块链中的研究不多,更多的是以数据存储和权限转移为目的[16],以去中心化的数据库的形式使用.

鉴于当前仪器租赁平台的问题,本文设计了结合区块链的仪器租赁模型,来实现基于多中心化信用的交互.不仅将交易数据保存在由承租方和出租方构成的联盟链网络上,而且在租赁过程中将仪器也连接到网络中,从而实现物理设备的上链,发送使用数据.保证整个租赁过程可监控,可溯源,以解决上诉提到的问题.

3 仪器租赁模型与智能合约设计

3.1 模型架构设计

可将基于区块链的仪器租赁体系架构分为应用层、接口层、服务层、账本层和数据采集层.

应用层向出租方和承租方提供交互界面,让双方可以通过该层完成包括注册登录,查询链上数据,完成仪器租赁以及仪器数据上传等功能.

接口层选择 HTTP协议作为网络传输协议,通过调用智能合约中不同的API与区块链进行交互,将租赁双方在应用层发出的交易请求转发到服务层中.

服务层包含基础模块和业务模块两部分,用于处理接口层发来的不同类型的交易提案.其中基础模块负责对账本层中的节点,通道,排序服务等进行管理.而业务模块安装了与仪器租赁相关的智能合约,负责处理租赁流程.

账本层以联盟链的形式呈现,出租方和承租方间会构建通道进行数据交换,而租赁双方都包含记账节点和背书节点.通过排序服务打包的区块,会记录在节点的分布式账本中,使其变得不可篡改以及可追溯.

数据采集层负责租赁过程中设备传感器数据的上传,主要以交易的形式通过网关发送到区块链网络,实现出租方对仪器状态的监控,以及租赁过程中的纠纷定责.

3.2 仪器租赁模型网络结构

仪器租赁模型的网络结构如图2所示,运行过程参与实体包括应用程序、承租方和出租方的节点、排序服务.

图2 仪器租赁模型网络结构Fig.2 Network structure of device leasing model

承租方或出租方作为网络中的一个组织,每个组织都拥有多个节点.这些节点都被视为记账节点,负责验证交易的有效性并将交易同步到账本中.同时他们还可以担任负责和排序服务节点通信的主节点、和其余组织进行通信的锚节点、运行智能合约来对客户端提出的租赁交易请求进行签名背书,并反馈结果给客户端的背书节点的角色.而通道上的排序服务负责接收已经背书签名过的交易,将其排序并生成区块,之后通过Gossip协议分发给记账节点.

每个组织上都设置有成员服务提供者(MSP)组件,MSP包含签名和验证算法,以及一组符合X.509规范的证书,主要负责向加入组织的节点提供数字证书.同时还负责配置组织、通道角色,以及检查智能合约的安装与实例化过程.节点需要在通道中进行数据交换时,也需要验证节点的签名,证书的有效性.

承租方和出租方的节点与排序服务通过构建通道,在其中安装智能合约,维护相互独立的账本,保证账本信息仅通道内部成员可以访问,对外完全隔离.承租方可以通过应用程序查看所有出租方节点,并且申请租赁交易.当有新承租方或出租方节点需要加入时,需要MSP服务为其颁发证书,让它在区块链网络中注册后才能开始租赁服务.

此外对于租赁过程中仪器上传的数据,我们设置有隐私保护策略来实现数据集私有化,定义通道成员的数据访问权限,保证只有仪器归属方能查看.在上诉的交易的背书阶段会首先将仪器上传的数据存入缓存区,之后依据隐私保护策略,将私有数据发送到仪器归属方的数据库.在返回的背书结果仅包含私有数据的键值哈希及内容的哈希.最终对于未授权节点仅能看到账本中私有数据的哈希,而仪器归属方除此之外还能在私有数据库中查询真实数据.

当未授权方需要验证私有数据时可以将保存在本地的哈希值与仪器归属方的私有数据库中私有数据的哈希值来验证数据一致性.

3.3 仪器租赁模型业务流程

与传统租赁相比本文涉及到与区块链网络的交互,需要在节点间达成共识的前提下,完成租赁流程.业务流程具体如下:

1)承租方在应用程序中找到需要租赁的仪器,发起租赁请求,扣除押金.

2)区块链网络通过调用智能合约生成交易,并检查租赁的合法性,如果为合法请求,出租方可以在应用中查询到订单.之后出租方检查仪器状态,确认订单,发送仪器.

3)承租方确认接收到仪器,更新订单状态后开始使用,使用过程中仪器会连接到区块链网络中对应出租方的节点上,然后通过网关调用数据上传的智能合约将使用过程中产生的数据进行上传.

4)承租方在租期结束之前将仪器返还,在出租方检查完仪器状态之后,确认收货,此时调用结算合约扣除租金后将押金退还,并对承租方进行评价.

5)承租方接收到剩余押金后,也对出租方做出评价.自此完成一次正常的仪器租赁流程.

3.4 仪器租赁模型交互过程

图3是承租方发起租赁请求过程与区块链网络交互的时序图,主要包括发起交易,执行合约,验证交易,形成共识的过程.以下为具体介绍.

1)应用程序发起交易.承租方发起租赁请求,应用程序根据预设的背书策略发送交易提案给背书节点.

2)背书节点执行交易.背书节点首先根据MSP验证交易签名并确定提案的操作权限.背书节点接收交易提案后,在当前账本状态基础上形成交易结果,输出读/写集合和反馈值.但此时账本还未全局更新.这些值的集合会联合背书节点的签名以及背书声明形成“提案反馈”返回应用层,应用层再对返回的交易结果进行解析.

3)应用响应背书结果.应用程序会比对背书节点发送的交易结果来决定是否达成共识,以及指定的背书策略的执行情况.达成共识后,排序服务会接受应用中包含通道ID,读/写集合和背书节点签名的“交易信息”.

4)排序交易打包区块.排序服务对交易细节透明,只负责根据特定的共识机制将网络中所有通道的交易打包,创建最新的交易区块.

图3 交互过程时序图Fig.3 Sequence diagram of interaction process

5)记账节点接收交易区块.通道中的所有节点会通过Gossip广播接收打包后的区块.

6)记账节点交易验证.记账节点首先确保背书策略被正确执行,并且确认读/写集合的有效性.之后会对区块中的交易的有效性进行标注.最终区块会被记账节点追加到通道的链上.将有效交易写入集合并提交到数据库.

7)交易结果通知.交易执行结果会被返回给应用层.其中包括交易执行情况,以及记录时间哈希和交易内容的哈希,经由统一处理后返回给承租方.

3.5 仪器租赁模型智能合约设计

智能合约主要存在于服务层的业务模块中,负责实现租赁的业务流程.本文是基于Fabric搭建的租赁平台,因此实现形式为使用Go语言来编写对应智能合约.然后在客户端调用SDK,发起并转发请求到服务层中的对应合约来处理交易.具体实现内容如下:

3.5.1 出租方&承租方的注册

出租方仪器在被租赁之前需要在链上进行注册并完成节点添加.而承租方也需要注册后再完成租赁.注册合约需要例如用户名,密钥,组织归属,联系方式等账户基本信息.此外在账户中还需要添加钱包地址.在发起租赁时,承租方会向出租方钱包地址转账缴纳押金.在仪器归还阶段,出租方将仪器押金返还承租方,从而保证交易的安全性.最终注册的账户是用户在区块链网络中的唯一标识.

3.5.2 仪器的注册

出租方在完成角色注册之后,需要进行仪器注册确认其资产归属.仪器的注册合约目的是与出租方绑定,将实物资产上链.其中包含,基本仪器属性(种类,型号,生产厂家等),仪器归属方,以及出租方网关.其中网关负责与区块链网络的正常交互,完成后续租赁流程中仪器数据的上传和状态的监控.

3.5.3 仪器租赁

本文将正常租赁流程分为五个阶段:订单生成-仪器运输-仪器使用-仪器归还-订单结束.承租方通过调用租赁合约来发起租赁,合约中包含仪器ID,承租方ID,租赁时间,租金,押金,租期等属性.之后进行合法性检查,包括承租方存在性、仪器可用性、账户余额等.如果交易状态合法,会生成订单并发送至区块链,此时该订单处于生成阶段.需要出租方在确认订单后,检查仪器状态后发货,同时调用租赁合约修改订单状态.之后承租方确认收到仪器,订单状态修改为使用中,开始仪器使用.

3.5.4 仪器数据上传

在仪器使用过程中,仪器传感器会通过网关连接到账本层中出租方节点,然后调用智能合约将采集的数据上传到区块链网络,以备之后的查询和校验.消息格式包含消息UID,上传时间,IP地址,通道ID以及载荷数据.具体的上传流程如图4所示.

图4 仪器数据上传流程Fig.4 Device data upload process

3.5.5 仪器归还结算

在在租期结束后,需要将仪器归还,并更新订单状态.在出租方收到仪器并且检查仪器状态后,本次交易正常结束.结算合约会根据承租方的租赁时长和信用度决定租金.出租方会在承租方x在完成租赁后,在1-5分之间评价其信用度,然后进行加权计算.承租方信用度计算具体为公式(1)所示:

(1)

其中Rx为当前信用度,而N代表租赁次数,Cx,i代表单次租赁评分,其中Cx,i∈{1,2,3,4,5},在加权之后计算均值,作为信用度.计算租金时对信用度高的承租方有优惠,以鼓励系统中的正向行为.本文设定当承租方综合评分大于4.0时,每提高信用度0.1,对应优惠1%租金.所以最后计算租金Fx,n的公式为:

(2)

其中f为每日租金,days为仪器租赁的时长.而押金会在扣除租金后返还.

3.5.6 出租方信用度计算

在完成租赁后,承租方也需要评价出租方.当存在同类型的仪器时,系统会根据出租方的信用度进行排序.本文基于文献[17],假定承租方的信用度与评价的准确性成正比,通过区别信用度不同的承租方来根据评分计算出租方的总信用度.具体如公式(3),公式(4)所示:

(3)

(4)

其中出租方l的信用度为Rl,n+1,n为收到的评价次数.θ是大于1的常量,Φ(R)可以使信用度变化更加平滑,其中σ是加速因子,当σ越大,Φ(R)曲线越平滑.D是评分上限,本文设置为5.而Rx是承租方x现在的信用度,信用度为Rx的用户x对此次租赁的评价是Wn+1,其中Wn+1∈{1,2,3,4,5}.表示承租方可以在1-5分的区间选择租赁满意度.

3.5.7 信息查询

租赁过程中订单和仪器等信息可以被出租方和承租方查询,以查询订单为例,首先在应用层根据订单ID和用户信息构建查询请求,然后调用查询合约发送提案给账本层获取查询结果.查询结果包括订单生成时间,仪器ID,租赁时长,押金,租金等信息.由于查询合约不涉及账本状态的改变,因此可以直接返回查询结果而无需达成共识.

4 实验与分析

4.1 模型实现

本文在单机实现了该模型,并且验证隐私数据保护策略,之后测试评价机制的有效性,最后进行性能测试.其中应用层上采用了Vue.js搭建平台界面,接口层采用axios框架将请求发送至服务层,在服务层采用Golang编写相关智能合约[18],最后在账本层使用Docker部署出租方和承租方的节点共4个为交易完成背书,在节点上安装链码以模拟完成租赁流程.此外由于排序节点采用Raft共识机制[19],所以共部署5个排序节点为背书后的交易排序并形成区块.数据库方面为出租方和承租方都部署相应CouchDB.在数据采集层通过HTTP请求发送数据连接到共享账本层.

4.2 用户数据私密性测试

在为保证只有出租方拥有仪器上传数据的使用权,智能合约中包含上传数据的隐私策略.本文以命令行输入的形式模拟用户发起的租赁请求.非私密数据与私密数据的查询结果如图5所示.对于非私密数据以仪器信息查询为例,首先出租方创建仪器,之后分别在出租方和承租方节点上查询该仪器.结果显示租赁双方均能查询到该仪器信息.

图5 数据查询测试结果Fig.5 Data query test results

但是对于私密数据而言,即本文的仪器上传数据.首先出租方对数据进行上传,再分别在两个组织的节点中查询.如图5所示承租方查询时会返回无数据访问权限错误,而出租方节点可以完成信息的查询.由此可以证明仪器上传数据的隐私性.

4.3 出租方信用度测试

初始设置出租方信用度为0,图6展示了出租方接受不同评分对其信用度的影响.可以看到随着订单数增加其增长速率减缓,但整体信用度依旧保持增长.图6(a)是不同正态分布下承租方评分影响信用度的结果.其中评分服从N(4,0.5)分布时信用度最高,服从 N(3,0.5)时次之,而服从 N(2,0.5)时出租方信用度最低.可以确定承租方评分与出租方的租赁服务质量呈正相关.承租方较高的评分.会激励出租方提升服务质量,保证租赁流程顺利完成.图6(b)为常量分别设为100,200,500时出租方信用度的变化曲线.当θ越小的时候,信用度上升的幅度越大,说明受之前评价的影响更小,因此需要合理设置θ来确定惩罚力度,否则容易降低出租方积极性.

图6 出租方信用度变化曲线Fig.6 Change curve of lessor′s credit

图6(c)为承租方本身的不同信用度分布对出租方评分的影响结果.可以看到如果承租方信用度在[2,3]均匀分布时信用度上升速度最慢且最终信用度最低,而在在[4,5]均匀分布时能够更快的获得高信用度.因为在信用度为[4,5]的时候有更多高信用度的承租方为订单进行评价.

由此得出该方法能够有效的计算出租方信用度,且可以调整参数以改变评分变化速度和历史评价对信用度的影响.同时为防止恶评,控制低信用度的承租方对出租方的影响,最终能够激励承租方提升信用度,形成良好循环.

4.4 性能测试

在性能方面,本文采用Hyperleager Caliper框架进行测试,测试模型在总交易数为2000时,完成承租方注册,查询以及承租方的属性更新功能的系统吞吐量和平均时延.测试结果如图7所示,其中横坐标为每秒发起的交易数量(TPS),纵坐标分别为服务吞吐量和平均时延.实验结果如下:

图 7(a)中可看出注册类和更新类操作的性能,由于会受到排序服务中共识机制处理速度的影响而存在瓶颈,在速度达到100tps之后区块链的吞吐量趋于平稳.而查询功能的吞吐量会随着发送速率的增加不断上升,并且与发送速率持平.因此在租赁模型中交易处理速度未达到峰值之前,区块链的吞吐量可以通过不断提高交易发送速率来提升.

图7 性能测试结果Fig.7 Performance test results

图 7(b)中可看出查询功能一直保持低时延,但注册与更新承租方的时延会随着发送速率的增加而逐渐增大.这是因为查询与更新功能涉及更新账本共识状态,其中需要账本层节点为交易背书后模拟执行交易最终返回背书结果,同时排序服务也需打包交易形成新区块并同步到账本.所以时延会逐渐增减并且大于查询功能.因此可以通过增加事务中包含的交易数来降低区块链达成共识的时间,从而降低时延.

实验表明本文搭建的仪器租赁模型可以在保证一定时延和较高吞吐量的情况下完成交易流程,实现去中心化的仪器租赁.同时保证设备数据的私密和交易数据的共享.并设置有效的激励措施来保证系统的良性循环并且后期可以通过网络架构的改进来提高系统性能,实现多出租方及承租方租赁服务的有效连接和仪器租赁流程的透明管理.

5 总 结

本文不同于中心化的租赁系统,提出了基于区块链的仪器租赁系统.首先分析中心化的租赁系统的交易流程和缺点,然后对目前区块链在行业中的研究进行简述.在第三节介绍了本模型的网络结构、业务流程、交互过程以及智能合约设计.模型实现了仪器租赁的全部流程都可以在区块链上监控,用户发起租赁请求之后,仪器会通过网关上传使用数据到区块链中,并以私密数据的形式保存.

最后基于超级账本实现租赁平台模型,验证了该平台的可行性和安全性,首先验证隐私保护策略和激励策略的有效性.证明承租方和出租方双方都有动力维持高信用度,促成系统的良性循环.然后测试系统性能,验证该模型能确保在一定系统吞吐量的情况下,实现交易数据的不可篡改性和可溯源性.以达到当双方发生纠纷时确保能通过访问区块链上的账本信息实现快速定责的目的.

猜你喜欢

背书账本仪器
《现代仪器与医疗》约稿函
《现代仪器与医疗》2022年征订回执
《现代仪器与医疗》约稿函
《现代仪器与医疗》2022年征订回执
嘟嘟熊家的百货商店(二十九)
数说:重庆70年“账本”展示
月亮的账本
丢失的红色账本
浅谈背书涂销制度
背书连续性若干问题探析