1.本发明涉及一种监管方法,具体涉及一种面向以链治链的区块链跨链监管方法,具体应用于面向金融、通信、能源、物流等行业的区块链应用监管领域,属于大数据环境下政府信息化管理、数据处理技术领域。
背景技术:
2.2008年,中本聪设计并实现了一套基于对等网络、密码学技术的电子现金系统,标志着区块链技术的诞生。区块链是一个分布式账本,因其具有去中心化、多方维护、全程留痕、不可篡改、公开透明、可追溯等优点,自诞生起便被认为是解决互联网信任与价值可靠转移难题的有效手段,在数字货币、交易结算、数字政务、存证防伪数据服务等领域具有广阔的应用前景。
3.近年来,国家已将区块链作为核心技术自主创新的重要突破口,一方面从国家战略上推动了区块链应用和研究的迅速发展,同时在另一方面也使得解决区块链监管问题成为了行业发展的迫切需要。一直以来,面向数字信息系统的监管大都采用中心化模式。然而,由于区块链自身的特性,中心化监管模式存在“管不了”、“管不住”与“管不得”三个问题。“管不了”,即由于区块链具备用户匿名的特点,使得监管机构很难实现有效监管。“管不住”即目前基于不同实现技术的区块链项目大量共存,中心化的监管模式很难实现对异构区块链的大规模监管。“管不得”,由于监管活动的中心化管理需求与区块链应用中用户和业务的分布式需求存在矛盾,企业组织或个人用户会在思想上与技术上对抗中心化监管。
4.由于中心化模式的局限性,采用分布式的监管架构已成为业界与学界的共识。其中,利用区块链技术自身的特性来监管区块链应用系统,即“以链治链”成为一条思路新颖、颇具前景的实践之路。在“以链治链”的区块链监管架构下,各种异构链可借助跨链技术接入监管链,从而实现对大规模异构区块链应用的分布式监管。
[0005]“以链治链”监管架构的核心是跨链技术,目前主流的区块链跨链技术包括公证人机制、哈希锁定机制、中继\侧链机制以及分布式密钥控制机制。然而,公证人机制存在中心化的问题,哈希锁定机制存在仅适用于资产交换业务的问题,中继\侧链和分布式密钥控制机制存在实现难度大且效率低下的问题。目前基于上述技术的跨链方案大多专注于公链之间的资产转移与交换业务,并未针对区块链应用监管需求提供安全、高效的数据跨链传输服务。因此,基于“以链治链”的架构设计并实现一套跨链监管方法是推动我国区块链技术发展与应用产业落地中亟待解决的问题。
技术实现要素:
[0006]
本发明针对当前区块链应用监管中存在的难题,在深入分析当前主流跨链技术的基础上提出了一套面向“以链治链”的区块链跨链监管方法,以满足对区块链监管分布式部署、跨链快速高效、传输安全可靠的需求。该方法通过部署链上节点代理程序构建分布式跨链监管体系,并在此基础上设计跨链监管交互协议,避免了中心化监管模式潜在的性能瓶
颈与安全风险,更好地解决了区块链应用监管中存在的难题,能够保障区块链行业健康有序地发展。
[0007]
为了实现上述目的,本发明的技术方案如下,一种面向以链治链的区块链跨链监管方法,所述方法包括以下步骤:步骤s1:搭建面向“以链治链”的跨链监管系统,步骤s2:实现面向“以链治链”的跨链监管交互协议;其中,所述步骤s1:搭建面向“以链治链”的跨链监管系统,具体如下:s11:设计跨链监管体系层次化结构;s12:设计链上节点代理程序;s13:构建分布式跨链监管网络。
[0008]
其中,所述步骤s11:设计跨链监管体系层次化结构,具体如下,提出跨链监管体系的层次化结构,分为业务层、监管层与许可层3层,业务层中部署有多条业务链,每条业务链由多个单位或组织构成的联盟共同部署并维护,对外提供特定类型的服务,对内存储相关业务数据并接受监管层的审查,监管层中部署有多条监管链,每条监管链由多个监管部门或机构共同部署并维护,对外监管特定类型的区块链应用与服务,对内存储监管活动的数据,使得多个监管部门或机构共享监管数据并对监管活动的结果进行审计达成共识,许可层中部署有一条许可链以及基于此链搭建的服务平台,该平台提供面向跨链监管的多项接口供监管链与业务链调用,覆盖了登记注册、令牌申请与数据查询等服务,许可链及平台由中央权威机构联合部署并维护,负责整个体系的接入许可与访问许可工作。
[0009]
其中,所述步骤s12:设计链上节点代理程序,具体如下,代理程序部署于每条监管链与业务链的物理节点上,能够屏蔽区块链底层实现技术提供网络通信功能与链上数据读写功能,本方法中,代理程序采用多线程技术,将并行的线程分为通信守护线程与业务响应线程两类,通信守护线程负责侦听从网络发来消息,解析出其中的命令后将其作为参数调用业务响应线程完成对应的操作,业务响应线程根据不同命令参数调用区块链接口对其进行读写操作;代理程序在接收到来自网络的消息后的处理流程包含以下七个步骤:s121通信守护线程从收到的消息中解析出相关的命令与执行参数;s122通信守护线程调用执行函数为当前命令的任务分配业务响应线程;s123如果代理程序当前开启的业务响应线程数量小于核心线程池容量,执行函数创建一个核心业务响应线程执行当前命令;s124如果核心线程池容量已满,当前命令对应的任务先被放入拥塞队列中。当核心线程池中一个核心业务响应线程执行完上一个任务后,执行函数将从拥塞队列中顺序取出新的任务分配给该线程执行;s125如果拥塞队列已满且代理程序当前运行的业务响应线程数量小于线程池规定的最大容量,执行函数创建一个业务响应线程执行当前任务;s126如果拥塞队列已满且代理程序当前运行的业务响应线程数量达到线程池规定的最大容量,执行函数拒绝响应当前命令的任务,并按照默认策略对当前任务进行处理;s127通信守护线程在调用完执行函数后将保持侦听状态,等待下一条消息的到来。
[0010]
上述步骤需要注意两点,首先,代理程序的核心业务响应线程在执行完任务后不
会被销毁,而是处于休眠状态等待被分配给下一个任务。核心线程池外的所有业务响应线程在执行完任务后会被自动关闭以释放资源。其次,在步骤s126中,当执行函数拒绝响应当前任务时,默认策略包含以下四种类型:a)abortpolicy,区块链操作任务遭到拒绝将抛出运行时拒绝执行异常;b)callerrunspolicy,操作任务被拒绝执行后等待一段时间再次调用执行函数;c)discardpolicy无法被执行的操作任务将被直接删除;d)discardoldestpolicy,丢弃拥塞队列中的时间最早的任务,将最新被拒绝执行的任务添加进去。
[0011]
其中,所述步骤s13:构建分布式跨链监管网络,采用套接字socket编程的方法在代理程序上实现了网络连接功能,具体过程分为以下五个步骤;s131调用函数socket为代理程序的通信守护线程创建一个套接字s,调用函数bind将s绑定在主机55533端口,调用函数listen让通信守护线程侦听来自网络的请求消息;s132在通信守护线程中调用函数connect,尝试与对端代理程序的55533端口建立tcp连接,此步骤一般由监管链代理程序发起;s133在通信守护线程中调用函数accept,接收来自网络的tcp连接请求,连接成功后,将结果返回给通信守护线程,由通信守护线程调用执行函数分配业务响应线程,此步骤一般由业务链代理程序完成;s134在业务响应线程中调用函数recv接收请求消息,并返回接收缓冲区的访问地址;s135在业务响应线程中调用函数send将区块链操作的执行结果发送给对端代理程序。
[0012]
本方法构建了分布式跨链监管网络,在整个跨链监管体系中,监管层与业务层之间的交互是日常监管活动的主要表现形式,加入体系的监管链与业务链上所有节点的代理程序共同构成一个跨链监管网络。任何一条监管链上的节点都可以在得到许可后通过跨链监管网络成功连接任何一条业务链上的节点,从而实现分布式的跨链监管结构。需要说明的是,跨链监管网络不仅支持一个监管链上的节点与多个业务链上的节点建立连接,还支持一个业务链上的节点与多个监管链上的节点建立连接。通过跨链网络,监管层与业务层之间能够构建动态变化的多对多监管关系。
[0013]
其中,所述步骤s2:实现面向“以链治链”的跨链监管交互协议,具体包括以下步骤:s21:监管链与业务链的许可接入;s22:监管活动的申请与授权;s23:面向监管活动的节点选取;s24:执法节点与对象节点建立连接;s25:对象节点验证并响应执法节点的请求;s26:执法节点验证执行结果;s27:监管链对监管活动的查询结果达成共识并上链存储。
[0014]
其中,所述步骤s21:监管链与业务链的许可接入,具体过程分为以下五个步骤:s211区块链节点代理程序向许可层的服务平台发送消息applymsg申请加入跨链
监管系统,applymsg包含字段有:区块链规模chainsize、区块链实现技术chaintech、链上区块数量chainblocknum、链上节点信息列表nodelist,在nodelist中,每一个节点的信息包括:节点标识符nodeid、节点所在主机的ip地址ipaddr、节点所在主机的物理地址macaddr、以及节点所在主机硬件配置信息hardware;s212许可层平台在收到消息applymsg后,首先检查消息队列,如果收到的是来自同一条区块链的重复消息,则直接丢弃;否则依次调用函数chainverification与nodevertification对发送申请的区块链及其链上节点进行验证;s213许可层平台调用函数buildrelationship为申请接入的区块链分配监管关系;s214许可层平台利用工具库keytool为申请接入的区块链上所有节点颁发数字证书;s215许可层平台将上述区块链及其所有节点的信息提交给许可链存储。
[0015]
其中,所述步骤s22:监管活动的申请与授权,s22:监管活动的申请与授权。该步骤在“以链治链”的跨链监管体系中建立访问控制机制,要求由监管链发起的每一次监管活动都需要通过许可层的授权,具体过程分为四个步骤。
[0016]
s221监管链根据需求向许可层发送一次监管活动的请求;s222许可层在收到监管链发起一次监管活动的请求后,验证监管链与其申请监管的目标业务链是否已确立监管关系,若验证成功,则给监管链颁发一个授权令牌,否则向监管链返回请求不合法消息,令牌由许可层平台签发,包含了针对当前监管活动的标识符、有效期、操作范围以及目标业务链的节点列表;s223监管链在获得令牌后向许可层返回一个确认消息;s224许可层在收到确认消息后将与此次监管活动相关的信息记录在许可链上。
[0017]
其中,所述步骤s23:面向监管活动的节点选取;s23:面向监管活动的节点选取。监管链在获得许可层对一次监管活动的授权后,从自身链上选择出若干节点作为执法节点,同时根据业务链节点列表选择出若干节点作为对象节点。无论是执法节点还是对象节点,它们的选取算法包括以下三个步骤:s231确定当前监管链或业务链的规模,即区块链上的节点数量m,以及需要选取出的节点数量n;s232随机生成映射到节点序号空间(1~m)的正整数r,序号r所对应的节点被选出作为执法节点或对象节点;s233根据选取节点的数量n重复执行步骤s232,直到面向当前监管活动的执法节点列表或对象节点列表选择完毕。
[0018]
其中,所述步骤s24:执法节点与对象节点建立连接,具体如下:执法节点上的代理程序向对象节点上的代理程序发送连接请求以发起跨链监管活动。为了保证在连接上传输数据的机密性,代理程序之间通过多次交互进行密钥协商,具体过程分为十一个步骤,图3中,代理程序a表示执法节点上的代理程序,而代理程序b表示对象节点上的代理程序;s241代理程序a向代理程序b发送建立连接的请求;
s242代理程序b接收到请求后,将所在对象节点的数字证书c2发送给代理程序a;s243代理程序a接收到数字证书c2后,利用许可层根证书提供的公钥对其进行验证,并从c2中获得代理程序b所在对象节点的公钥pk2;s244c2验证成功后,代理程序a将所在执法节点的数字证书c1发送给代理程序b;s245代理程序b接收到数字证书c1后,利用许可层根证书提供的公钥对其进行验证,并从c1中获得代理程序a所在执法节点的公钥pk1;s246代理程序b向代理程序a发送一个用公钥pk1加密的确认消息;s247代理程序a接收并确认代理程序b返回的确认消息后,将其支持的所有通信加密方案用所在执法节点的私钥sk1加密后发送给代理程序b;s248代理程序b用对应公钥pk1解密后从所有方案中选出一种,然后用对应公钥pk1加密选择的方案并返回给代理程序a;s249代理程序a用私钥sk1解密从而确认加密方案,然后产生一个随机数,并用公钥pk2加密后发送给代理程序b;s2410代理程序b利用所在对象节点的私钥sk2解密获得随机数,并将其作为对称密钥k,然后按照选择的方案用密钥k加密一个确认命令返回给代理程序a;s2411代理程序a收到返回的消息后,按照选定的加密方法用此前发送的随机数作为对称密钥k进行解密,若获得代理程序b的确认命令,则连接建立成功,代理程序a能够通过连接向代理程序b发送后续监管请求。
[0019]
其中,所述步骤s25:对象节点验证并响应执法节点的请求,具体如下:s25:对象节点验证并响应执法节点的请求。在收到执法节点上的代理程序发来的跨链监管请求之后,对象节点上的代理程序先验证请求的合法性,然后在链上执行对应的操作,最后将结果返回给执法节点,上述过程具体分为以下四个步骤:s251对象节点上的代理程序先从请求中获取当前监管活动的令牌,然后向许可层提出申请验证此令牌,若验证成功,则继续下面步骤;否则,忽略请求;s252对象节点上的代理程序先从请求中获取监管链选定的对象节点列表,然后判断自身所在节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;s253对象节点上的代理程序先从请求中获取监管链选定的执法节点列表,然后判断发送当前请求的代理程序所在的节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;s254对象节点上的代理程序根据请求指定的命令访问业务链,然后利用步骤s24中协商的对称密钥k加密执行结果,最后将其返回给执法节点的代理程序。
[0020]
其中,所述步骤s26:执法节点验证执行结果,具体如下:s26:执法节点验证执行结果。由于在一次监管活动中执法节点上的代理程序同时向多个对象节点上的代理程序提出请求,因此会收到多份返回的执行结果。为了提取最终结果,执法节点上的代理程序需要执行以下两个步骤:s261针对返回的每一份执行结果,验证发送者的身份是否处于选定的对象节点列表中;同时验证返回结果的完整性;s262采用投票算法从多份结果中确定最终结果,以保证多渠道并发执行的一致性。
[0021]
其中,所述步骤s27:监管链对监管活动的查询结果达成共识并上链存储,具体如下:s271发起监管活动的执法节点在验证查询结果之后,提出上链请求;s272其它选定的执法节点根据其获得并验证后的查询结果对上链请求进行背书;s273当背书次数达到智能合约的要求时,查询结果提交上链。
[0022]
相对于现有技术,本发明具有如下优点,(1)该技术方案构建“以链治链”的区块链跨链监管体系,在步骤s11中,建立了层次化的监管结构,通过引入许可层保障监管活动的安全可控;在步骤s12中,通过部署链上代理程序构建跨链网络,实现了在大规模异构链之间动态灵活地构建多对多的监管关系;在步骤s13中,采用分布式监管模式,避免了中心化监管模式潜在的性能瓶颈与安全风险。因此,该体系能够在保障区块链用户对等性需求的同时实现高效、安全的区块链应用监管;(2)该技术方案设计“以链治链”的跨链监管交互协议。在步骤s21中,通过许可层的接入控制机制,实现了对区块链的接入鉴别审查,进而建立链与链之间的监管关系;在步骤s22中,通过许可层的访问控制机制,实现了对每次监管活动的授权,提高了监管活动抵御中间人攻击的能力;在步骤s23-s26中,为每次监管活动提供多对多的访问路径并提出面向多执行结果的验证方法,提高了查询过程的鲁棒性,保障了查询结果的可靠性。因此,该协议不仅具备普遍适用性,还能够保障跨链监管活动的安全可控。
附图说明
[0023]
图1:跨链监管体系层次化结构图;图2:代理程序的线程池示意图;图3:代理程序之间建立连接示意图;图4:跨链监管系统整体架构图;图5:业务链架构图;图6:监管链架构图;图7:为跨链服务平台架构图;图8:跨链监管令牌验证流程示意图;图9:执法节点验证执行结果示意图;图10:监管结果上链流程图。
具体实施方式
[0024]
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
[0025]
实施例1:参见图1-图10,一种面向以链治链的区块链跨链监管方法,所述方法包括以下步骤:步骤s1:搭建面向“以链治链”的跨链监管系统,步骤s2:实现面向“以链治链”的跨链监管交互协议。
[0026]
其中,所述步骤s1:搭建面向“以链治链”的跨链监管系统,具体如下:s11:设计跨链监管体系层次化结构;s12:设计链上节点代理程序;
s13:构建分布式跨链监管网络。
[0027]
其中,所述步骤s11:设计跨链监管体系层次化结构,具体如下,提出跨链监管体系的层次化结构,分为业务层、监管层与许可层3层,业务层中部署有多条业务链,每条业务链由多个单位或组织构成的联盟共同部署并维护,对外提供特定类型的服务,对内存储相关业务数据并接受监管层的审查,监管层中部署有多条监管链,每条监管链由多个监管部门或机构共同部署并维护,对外监管特定类型的区块链应用与服务,对内存储监管活动的数据,使得多个监管部门或机构共享监管数据并对监管活动的结果进行审计达成共识,许可层中部署有一条许可链以及基于此链搭建的服务平台,该平台提供面向跨链监管的多项接口供监管链与业务链调用,覆盖了登记注册、令牌申请与数据查询等服务。许可链及平台由中央权威机构联合部署并维护,负责整个体系的接入许可与访问许可工作。
[0028]
其中,所述步骤s12:设计链上节点代理程序,具体如下,代理程序部署于每条监管链与业务链的物理节点上,能够屏蔽区块链底层实现技术提供网络通信功能与链上数据读写功能,本方法中,代理程序采用多线程技术,将并行的线程分为通信守护线程与业务响应线程两类,通信守护线程负责侦听从网络发来消息,解析出其中的命令后将其作为参数调用业务响应线程完成对应的操作,业务响应线程根据不同命令参数调用区块链接口对其进行读写操作;如图2所示,代理程序在接收到来自网络的消息后的处理流程包含以下七个步骤:s121通信守护线程从收到的消息中解析出相关的命令与执行参数;s122通信守护线程调用执行函数为当前命令的任务分配业务响应线程;s123如果代理程序当前开启的业务响应线程数量小于核心线程池容量,执行函数创建一个核心业务响应线程执行当前命令。
[0029]
s124如果核心线程池容量已满,当前命令对应的任务先被放入拥塞队列中。当核心线程池中一个核心业务响应线程执行完上一个任务后,执行函数将从拥塞队列中顺序取出新的任务分配给该线程执行。
[0030]
s125如果拥塞队列已满且代理程序当前运行的业务响应线程数量小于线程池规定的最大容量,执行函数创建一个业务响应线程执行当前任务。
[0031]
s126如果拥塞队列已满且代理程序当前运行的业务响应线程数量达到线程池规定的最大容量,执行函数拒绝响应当前命令的任务,并按照默认策略对当前任务进行处理。
[0032]
s127通信守护线程在调用完执行函数后将保持侦听状态,等待下一条消息的到来。
[0033]
上述步骤需要注意两点,首先,代理程序的核心业务响应线程在执行完任务后不会被销毁,而是处于休眠状态等待被分配给下一个任务。核心线程池外的所有业务响应线程在执行完任务后会被自动关闭以释放资源。其次,在步骤s126中,当执行函数拒绝响应当前任务时,默认策略包含以下四种类型:a)abortpolicy,区块链操作任务遭到拒绝将抛出运行时拒绝执行异常;b)callerrunspolicy,操作任务被拒绝执行后等待一段时间再次调用执行函数;c)discardpolicy无法被执行的操作任务将被直接删除;d)discardoldestpolicy,丢弃拥塞队列中的时间最早的任务,将最新被拒绝执行的任务添加进去。
[0034]
其中,所述步骤s13:构建分布式跨链监管网络,采用套接字socket编程的方法在
代理程序上实现了网络连接功能,具体过程分为以下5个步骤;s131调用函数socket为代理程序的通信守护线程创建一个套接字s,调用函数bind将s绑定在主机55533端口,调用函数listen让通信守护线程侦听来自网络的请求消息;s132在通信守护线程中调用函数connect,尝试与对端代理程序的55533端口建立tcp连接,此步骤一般由监管链代理程序发起;s133在通信守护线程中调用函数accept,接收来自网络的tcp连接请求,连接成功后,将结果返回给通信守护线程,由通信守护线程调用执行函数分配业务响应线程,此步骤一般由业务链代理程序完成;s134在业务响应线程中调用函数recv接收请求消息,并返回接收缓冲区的访问地址;s135在业务响应线程中调用函数send将区块链操作的执行结果发送给对端代理程序。
[0035]
步骤s13:本方法构建了分布式跨链监管网络,在整个跨链监管体系中,监管层与业务层之间的交互是日常监管活动的主要表现形式,加入体系的监管链与业务链上所有节点的代理程序共同构成一个跨链监管网络。如图1所示,任何一条监管链上的节点都可以在得到许可后通过跨链监管网络成功连接任何一条业务链上的节点,从而实现分布式的跨链监管结构。需要说明的是,跨链监管网络不仅支持一个监管链上的节点与多个业务链上的节点建立连接,还支持一个业务链上的节点与多个监管链上的节点建立连接,通过跨链网络,监管层与业务层之间能够构建动态变化的多对多监管关系。
[0036]
其中,所述步骤s2:实现面向“以链治链”的跨链监管交互协议,具体包括以下步骤:s21:监管链与业务链的许可接入;s22:监管活动的申请与授权;s23:面向监管活动的节点选取;s24:执法节点与对象节点建立连接;s25:对象节点验证并响应执法节点的请求;s26:执法节点验证执行结果;s27:监管链对监管活动的查询结果达成共识并上链存储。
[0037]
其中,所述步骤s21:监管链与业务链的许可接入,具体如下:s21:监管链与业务链的许可接入,具体过程分为以下五个步骤:s211区块链节点代理程序向许可层的服务平台发送消息applymsg申请加入跨链监管系统,applymsg包含字段有:区块链规模chainsize、区块链实现技术chaintech、链上区块数量chainblocknum、链上节点信息列表nodelist,在nodelist中,每一个节点的信息包括:节点标识符nodeid、节点所在主机的ip地址ipaddr、节点所在主机的物理地址macaddr、以及节点所在主机硬件配置信息hardware等;s212许可层平台在收到消息applymsg后,首先检查消息队列,如果收到的是来自同一条区块链的重复消息,则直接丢弃;否则依次调用函数chainverification与nodevertification对发送申请的区块链及其链上节点进行验证;
s213许可层平台调用函数buildrelationship为申请接入的区块链分配监管关系;s214许可层平台利用工具库keytool为申请接入的区块链上所有节点颁发数字证书,数字证书颁发的流程可分为以下六个步骤:a)为许可层生成ca密钥库ca.keystore,密钥库中包含有一对公私钥;b)许可层利用ca.keystore生成自签名证书cer文件;c)为区块链的每个peer节点生成节点密钥库peer.keystore;d)peer节点通过peer.keystore生成证书请求签名csr文件;e)许可层利用ca.keystore中存储的私钥对csr文件进行签发,生成cer文件;f)peer节点将许可层签发的cer文件与ca的自签名证书导入密钥库;s215)许可层平台将上述区块链及其所有节点的信息提交给许可链存储。
[0038]
步骤s21在“以链治链”的跨链监管体系中建立接入控制机制,要求无论监管链还是业务链在接入体系前都需要通过许可层的检验,具体过程分为以下两个步骤。
[0039]
s211许可层对当前申请接入的区块链进行审核,一方面从区块链的角度核查其关键配置信息,包括节点的数量、底层实现技术、上链的区块情况等;一方面从链上节点的角度鉴别其身份,包括节点的物理地址、ip地址、硬件配置,通过鉴别的节点将被颁发一个数字证书;s212许可层根据接入区块链的请求确立监管关系,如果申请接入的是监管链,在完成对区块链本身的检验后根据请求内容将其与相关业务链的监管关系作为记录保存在许可链中,如何申请接入的是业务链,在完成对区块链本身的审核后根据其业务类型自动配备对应的监管链并将监管关系作为记录保存在许可链中,在后续步骤中,只有通过许可层确立了监管关系的一对监管链与业务链之间才能开展监管活动。
[0040]
其中,所述步骤s22:监管活动的申请与授权,s22:监管活动的申请与授权。该步骤在“以链治链”的跨链监管体系中建立访问控制机制,要求由监管链发起的每一次监管活动都需要通过许可层的授权,具体过程分为四个步骤。
[0041]
s221监管链根据需求向许可层发送一次监管活动的请求,s222许可层在收到监管链发起一次监管活动的请求后,验证监管链与其申请监管的目标业务链是否已确立监管关系,若验证成功,则给监管链颁发一个授权令牌,否则向监管链返回请求不合法消息。令牌由许可层平台签发,包含了针对当前监管活动的标识符、有效期、操作范围以及目标业务链的节点列表;s223监管链在获得令牌后向许可层返回一个确认消息,s224许可层在收到确认消息后将与此次监管活动相关的信息记录在许可链上。
[0042]
其中,所述步骤s23:面向监管活动的节点选取;s23:面向监管活动的节点选取。监管链在获得许可层对一次监管活动的授权后,从自身链上选择出若干节点作为执法节点,同时根据业务链节点列表选择出若干节点作为对象节点。无论是执法节点还是对象节点,它们的选取算法包括以下三个步骤:s231确定当前监管链或业务链的规模,即区块链上的节点数量m,以及需要选取出的节点数量n;
s232随机生成映射到节点序号空间(1~m)的正整数r,序号r所对应的节点被选出作为执法节点或对象节点;s233根据选取节点的数量n重复执行步骤s232,直到面向当前监管活动的执法节点列表或对象节点列表选择完毕。
[0043]
其中,所述步骤s24执法节点与对象节点建立连接,具体如下:执法节点上的代理程序向对象节点上的代理程序发送连接请求以发起跨链监管活动,为了保证在连接上传输数据的机密性,代理程序之间通过多次交互进行密钥协商,如图3所示,具体过程分为十一个步骤,图3中,代理程序a表示执法节点上的代理程序,而代理程序b表示对象节点上的代理程序;s241代理程序a向代理程序b发送建立连接的请求;s242代理程序b接收到请求后,将所在对象节点的数字证书c2发送给代理程序a;s243代理程序a接收到数字证书c2后,利用许可层根证书提供的公钥对其进行验证,并从c2中获得代理程序b所在对象节点的公钥pk2;s244 c2验证成功后,代理程序a将所在执法节点的数字证书c1发送给代理程序b;s245代理程序b接收到数字证书c1后,利用许可层根证书提供的公钥对其进行验证,并从c1中获得代理程序a所在执法节点的公钥pk1;s246代理程序b向代理程序a发送一个用公钥pk1加密的确认消息;s247代理程序a接收并确认代理程序b返回的确认消息后,将其支持的所有通信加密方案用所在执法节点的私钥sk1加密后发送给代理程序b;s248代理程序b用对应公钥pk1解密后从所有方案中选出一种,然后用对应公钥pk1加密选择的方案并返回给代理程序a;s249代理程序a用私钥sk1解密从而确认加密方案,然后产生一个随机数,并用公钥pk2加密后发送给代理程序b;s2410代理程序b利用所在对象节点的私钥sk2解密获得随机数,并将其作为对称密钥k,然后按照选择的方案用密钥k加密一个确认命令返回给代理程序a;s2411代理程序a收到返回的消息后,按照选定的加密方法用此前发送的随机数作为对称密钥k进行解密,若获得代理程序b的确认命令,则连接建立成功,代理程序a能够通过连接向代理程序b发送后续监管请求。
[0044]
其中,所述步骤s25:对象节点验证并响应执法节点的请求,具体如下:s25:对象节点验证并响应执法节点的请求。在收到执法节点上的代理程序发来的跨链监管请求之后,对象节点上的代理程序先验证请求的合法性,然后在链上执行对应的操作,最后将结果返回给执法节点。上述过程具体分为以下四个步骤:s251对象节点上的代理程序先从请求中获取当前监管活动的令牌,然后向许可层提出申请验证此令牌,若验证成功,则继续下面步骤;否则,忽略请求;s252对象节点上的代理程序先从请求中获取监管链选定的对象节点列表,然后判断自身所在节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;s253对象节点上的代理程序先从请求中获取监管链选定的执法节点列表,然后判断发送当前请求的代理程序所在的节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;
s254对象节点上的代理程序根据请求指定的命令访问业务链,然后利用步骤s24中协商的对称密钥k加密执行结果,最后将其返回给执法节点的代理程序。
[0045]
其中,所述步骤s26:执法节点验证执行结果,具体如下:s26:执法节点验证执行结果。由于在一次监管活动中执法节点上的代理程序同时向多个对象节点上的代理程序提出请求,因此会收到多份返回的执行结果。为了提取最终结果,执法节点上的代理程序需要执行以下两个步骤:s261针对返回的每一份执行结果,验证发送者的身份是否处于选定的对象节点列表中;同时验证返回结果的完整性;s262采用投票算法从多份结果中确定最终结果,以保证多渠道并发执行的一致性。
[0046]
其中,所述步骤s27:监管链对监管活动的查询结果达成共识并上链存储,具体如下:s271发起监管活动的执法节点在验证查询结果之后,提出上链请求;s272其它选定的执法节点根据其获得并验证后的查询结果对上链请求进行背书;s273当背书次数达到智能合约的要求时,查询结果提交上链。
[0047]
实施例2:参见图1—图10,一种面向以链治链的区块链跨链监管方法,所述方法包括以下步骤:步骤s1:搭建面向“以链治链”的跨链监管系统,步骤s2:实现面向“以链治链”的跨链监管交互协议。
[0048]
其中步骤s1:搭建面向“以链治链”的跨链监管系统:本实施例以hyperledger fabric技术作为基础,搭建一个分布式跨链监管系统,从而实现图1所描述的层次化跨链监管结构。
[0049]
进一步的,所述步骤s1的实现过程具体包括以下三个步骤:s11:搭建层次化的跨链监管结构:如图4所示,本实施例系统的架构包含业务层、监管层和许可层。
[0050]
如图5所示,在业务层利用hyperledger fabric技术搭建有一条业务链。链上部署有6个peer节点,分别隶属于三个不同组织org1、org2以及org3。每个组织对应现实中的一个企业或单位机构。每个组织拥有2个peer节点,其中一个节点设置为主节点与锚节点。每个节点上都安装有代理程序并部署在一台独立的主机上。业务链上的所有节点都加入hyperledger fabric网络中的一个通道channel1,从而针对某领域的区块链应用共同维护一个分布式账本,实现业务数据的多方共享与安全存储。
[0051]
如图6所示,在监管层利用hyperledger fabric技术搭建有一条监管链。链上部署有6个peer节点,分别隶属于三个不同组织org1、org2以及org3。每个组织对应现实中的一个监管部门或机构。每个组织拥有2个peer节点,其中一个节点设置为主节点与锚节点。每个节点上都安装有代理程序并部署在一台独立的主机上。业务链上的所有节点都加入hyperledger fabric网络中的一个通道channel2,从而针对某领域的区块链应用监管共同维护一个分布式账本,实现监管数据的多方共享与安全存储。
[0052]
如图7所示,在许可层利用hyperledger fabric技术搭建有一条监管链。链上部署有6个peer节点,分别隶属于三个不同组织org1、org2以及org3。每个组织对应现实中的一
个中央政府管理部门。许可链上的所有节点都加入hyperledger fabric网络中的一个通道channel3。在此基础上利用spring cloud技术搭建了一个跨链服务平台,以服务跨链监管活动中各类需求。该平台对外提供三类基本功能接口,包括区块链登记注册registerchain()、监管活动令牌申请applytoken()、以及链上数据查询请求querydata()。
[0053]
业务链、监管链以及许可链的部署过程类似,以下以监管链为例介绍具体搭建过程。整个过程共分为以下3个步骤:(1)编辑配置文件crypto-config.yaml,分别配置order节点与org1、org2、org3的信息。然后,利用工具cryptogen搭建链上节点的组织结构并为它们生成身份证书;(2)利用工具configtxgen创建5个配置文件,分别为创世区块配置文件genesis.block、应用通道配置交易文件channel.tx、以及3个锚节点的更新配置交易文件orgmsppanchors1.tx、orgmsppanchors2.tx、orgmsppanchors3.tx;(3)编辑配置文件docker-compose-cli.yaml,为各节点配置环境变量,其中包括文件挂载路径、网络信息等。
[0054]
实现链上节点代理程序,代理程序主要实现监管链与业务链上节点之间的通信功能以及对所属区块链的读写操作,在本实施例中,监管链与业务链上节点的代理程序均采用多线程技术编程实现,以业务链上的代理程序为例,实现过程包含以下六个步骤:s121将代理程序的主线程设置为通信守护线程,开启端口55533,侦听来自网络的请求消息;s122根据节点所在的主机性能设置线程池最大容量maxpoolsize为30,核心业务响应线程的数量corethreadnum为5,拥塞队列pendingqueuesize的大小为5;s123通信守护线程收到请求消息后,从消息中提取出相关信息,其中包括区块链标识符chainid、节点标识符nodeid、节点证书nodecert、操作命令optcmd等;s124通信守护线程将步骤3的信息作为参数输入调用执行函数execute,为当前请求分配一个业务响应线程;s125在函数execute中,根据不同条件选择调用函数pthread_push将当前请求任务分配给空闲的核心业务线程,或调用函数pthread_create为当前请求任务创建一个新的业务响应线程;s126在业务响应线程中,根据请求操作命令optcmd调用hyperledger fabric的区块链访问sdk,本实施例已经通过函数querydata与savedata实现了链上数据查询以及信息上链存储两项基本功能,具体实现封装在函数invoke中,伪代码如下:
s13:构建分布式跨链监管网络。监管链与业务链上的代理程序需要通过网络通信实现动态灵活的跨链信息交互,本实施例采用套接字socket编程的方法在代理程序上实现了网络连接功能,具体过程分为以下五个步骤,s131调用函数socket为代理程序的通信守护线程创建一个套接字s,调用函数bind将s绑定在主机55533端口,调用函数listen让通信守护线程侦听来自网络的请求消息;s13在通信守护线程中调用函数connect,尝试与对端代理程序的55533端口建立tcp连接。此步骤一般由监管链代理程序发起;s133在通信守护线程中调用函数accept,接收来自网络的tcp连接请求。连接成功后,将结果返回给通信守护线程。由通信守护线程调用执行函数分配业务响应线程。此步骤一般由业务链代理程序完成;s134在业务响应线程中调用函数recv接收请求消息,并返回接收缓冲区的访问地址;s135在业务响应线程中调用函数send将区块链操作的执行结果发送给对端代理程序。
[0055]
实现“以链治链”的跨链监管交互协议,本实施例基于s1中所搭建的跨链监管系统实现了一套跨链监管交互协议;进一步的,所述步骤s2具体包括以下七个步骤:s21:实现监管链与业务链的许可接入。无论是监管链还是业务链,在加入s1搭建的跨链监管系统前都需要经过许可层的验证。在本实施例中,接入许可过程分为以下五个步骤:s211区块链节点代理程序向许可层的服务平台发送消息applymsg申请加入跨链
监管系统。applymsg包含字段有:区块链规模chainsize、区块链实现技术chaintech、链上区块数量chainblocknum、链上节点信息列表nodelist。在nodelist中,每一个节点的信息包括:节点标识符nodeid、节点所在主机的ip地址ipaddr、节点所在主机的物理地址macaddr、以及节点所在主机硬件配置信息hardware等;s212许可层平台在收到消息applymsg后,首先检查消息队列。如果收到的是来自同一条区块链的重复消息,则直接丢弃;否则依次调用函数chainverification与nodevertification对发送申请的区块链及其链上节点进行验证;s213许可层平台调用函数buildrelationship为申请接入的区块链分配监管关系;s214许可层平台利用工具库keytool为申请接入的区块链上所有节点颁发数字证书,数字证书颁发的流程可分为以下六个步骤:a)为许可层生成ca密钥库ca.keystore,密钥库中包含有一对公私钥,b)许可层利用ca.keystore生成自签名证书cer文件,c)为区块链的每个peer节点生成节点密钥库peer.keystore,d)peer节点通过peer.keystore生成证书请求签名csr文件,e)许可层利用ca.keystore中存储的私钥对csr文件进行签发,生成cer文件,f)peer节点将许可层签发的cer文件与ca的自签名证书导入密钥库;s215许可层平台将上述区块链及其所有节点的信息提交给许可链存储。
[0056]
实现监管活动的申请与授权,本实施例中,每次监管活动都需要由监管层发起申请并通过许可层的授权,如图8所示,具体交互过程分为以下十个步骤:s221监管链节点的代理程序在收到来自用户的监管活动需求后,向许可层服务平台发送一条监管活动请求消息applyactmsg,该消息包含了当前监管链节点的身份证书cert、监管对象actobj、以及监管操作的类型acttype等信息;s222许可层平台程序在收到applyactmsg消息后,调用链码getnode在许可链上查找发送消息的节点,验证其是否属于一条已经注册的监管链,如果查找成功后,保存监管链的标识符chainid,继续下面的步骤;s223许可层平台程序调用函数verifycert验证发送请求消息的监管节点的数字证书是否正确,如果验证成功后,继续下面的步骤,s224许可层平台程序将chainid作为输入调用链码getrelationshipbychain获得当前节点所属监管链的所有已登记的监管关系列表;s225许可层平台程序判断applyactmsg消息中申请的监管对象actobj是否在第s224步获得的监管关系列表中,如果验证成功后,继续下面的步骤;s226许可层平台程序根据applyactmsg消息中申请的操作类型acttype,调用函数generatetoken为当前跨链监管活动生成一个令牌tk;s227许可层平台程序调用链码getnodelistbychain获得本次请求监管活动目标业务链的节点列表list;s228许可层平台程序将第7步获得的业务链节点列表list与第s226步获得的令牌tk一并封装在respondmsg消息中,发送给监管节点的代理程序;s229监管节点的代理程序在收到respondmsg消息后,向许可层平台返回一条确认
消息tkackmsg;s2210许可层平台程序在收到确认消息tkackmsg后,调用函数submitapplyrcd将本次监管活动的申请与授权信息作为记录打包提交许可链存储。
[0057]
实现面向监管活动的节点选取,监管节点在获得许可层的授权后,需要针对本次监管活动完成执法节点与对象节点的选取工作。执法节点与对象节点的选取方法相同,都是通过调用基于椭圆曲线的可验证随机函数vrf(veri
fi
able random function)实现。以下以执法节点的选取为例进行介绍,具体过程分为以下五个步骤,s231调用链码getnodelist,获得当前监管链节点列表以及所有节点数量m,s232根据本次监管活动的操作类型acttype确定执法节点的数量n,s233执行n-1轮循环语句,循环变量为整数i,且1≤i≤n-1,在每一轮循环中调用两个生成函数result = getrandom(sk,id i)与proof = getproof(sk,id i),分别生成一个随机数和它的证明,其中,sk为当前监管节点的私钥,id为由于本次监管活动的标识符与监管链的标识符拼接而成,s234将生成函数getrandom的值域被平均划分为m个区间,每个区间对应监管链上一个节点,在第3步每轮调用getrandom后,根据result所属区间情况选出对应序号的监管节点作为执法节点;s235重复步骤s233与步骤s234,直到选出除当前监管节点之外的其余n-1个执法节点。
[0058]
需要说明的是,在选取执法节点时由于当前监管节点必然作为执法节点,因此只需要从监管链上再选择操作所需的n-1个监管节点作为执法节点即可,而在选取对象节点时需要从目标业务链上选择操作所需的n个业务节点作为对象节点。
[0059]
执法节点与对象节点建立连接,该步骤要求执法节点的代理程序与对象节点的代理程序通过多次密钥协商建立一条加密的连接。在本实施例中,代理程序之间采用tls协议建立连接并实现通信交互,在实现方面,代理程序调用java安全套接字拓展jsse来实现彼此之间的tls双向认证通信,具体过程可以分为以下四个步骤:s241首先导入在s21中利用keytool生成的客户端密钥库peerkeystore。该密钥库包含节点自身的数字证书以及公私钥,s242利用keytool创建信任密钥库trustkeystore,将许可层的数字证书及公钥导入到该密钥库中,s243通过两个密钥库分别生成keymanagerfactory和trustmanagerfactory两个对象实例,s244利用所得的两个对象实例初始化tls上下文,建立tls套接字连接。
[0060]
对象节点验证并响应执法节点的请求,在本实施例中,对象节点的代理程序在收到执法节点的监管活动请求后,需要完成令牌验证、资格验证、执行操作并返回结果三项工作,具体过程可以分为以下四个主要步骤:s251对象节点代理程序从监管活动请求消息actionrqstmsg中提取出相关信息,包括本次监管活动的标识符actionid、监管活动的令牌actiontk、监管活动的操作命令actioncmd、执法节点的标识符regulatorid、执法节点的证书regulatorcert、执法节点列表regulatorlist、对象节点列表objlist等;
s252对象节点代理程序调用函数verifytk对监管活动的令牌进行验证。首先利用md5算法重新计算令牌的摘要获得结果r1,然后利用许可层的ca公钥解密封装在actiontk尾部的摘要密文获得结果r2。如果r1与r2相等,那么令牌验证成功;s253对象节点代理程序分别调用函数verifyregulatorlist与verifyobjlist验证执法节点列表与对象节点列表的真实性。verifyregulatorlist与verifyobjlist均利用了s23中基于椭圆曲线的可验证随机函数vrf,实现方法类似。以下以verifyregulatorlist为例介绍验证过程,具体流程分为三个步骤,a)根据执法节点列表的大小n,确定循环验证的次数为n-1,b)在循环体中调用函数vrf_p2h(proof)计算出一个验证值value,其中proof为s23中生成的随机数证明,将value映射到与监管链对应的m个区间计算出执法节点的序号。若该序号在消息actionrqstmsg包含的执法节点列表中,则继续下一步,c)将发起监管活动的执法节点的公钥pk、本次监管活动的标识符与监管链的标识符拼接而成的id、本轮的循环变量i(1≤i≤n-1)、以及proof作为参数输入,调用验证函数vrf_verify(pk, id i, proof)以验证proof。若成功,则监管链上对应序号的节点被确认为执法节点,d)重复执行步骤b与c,直到循环次数达到n-1;s254对象节点代理程序根据监管活动的操作命令actioncmd调用业务链对应的链码,执行指定监管活动,然后将执行结果加密后返回给执法节点。
[0061]
执法节点验证执行结果,如图9所示,每个执法节点会接收到多个对象节点返回的执行结果,在本实施例中,执法节点代理程序在收到一个执法节点返回的结果后,首先调用函数verifyobjnode验证对象节点的身份。在所有请求的执法节点都返回结果后,调用函数votingforresult,利用摩尔投票算法选出出现次数最多且超过总数一半的结果作为最终结果。
[0062]
监管链对监管活动的查询结果达成共识并上链存储,本实施例采用hyperledger fabric技术搭建监管链,在监管活动中所有执法节点获得的执行结果需要通过背书策略验证后才能提交上链,在实现过程中,在监管链上编写了一个链码submitresult,submitresult中定义了一个变量tmpresult与一个函数savedata。监管活动结果的上链过程通过各执法节点调用链码submitresult实现,如图10所示具体过程分为以下三个步骤:s271发起监管活动的执法节点执行链码submitresult,并调用函数savedata将其获得的监管结果保存在变量tmpresult中;s272其它执法节点依次执行链码submitresult,并调用函数savedata。若自身在s26中获得的监管结果与tmpresult的值不同,则判定上链结果有误,本次背书失败;否则,本次背书成功;s273在所有执法节点都执行链码submitresult后,统计成功背书的次数k。如果k大于或等于背书策略规定的最小阈值minendornum,那么将tmpresult中的结果作为记录打包上链。
[0063]
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。
技术特征:
1.一种面向以链治链的区块链跨链监管方法,其特征在于,所述方法包括以下步骤:步骤s1:搭建面向“以链治链”的跨链监管系统,步骤s2:实现面向“以链治链”的跨链监管交互协议;所述步骤s1具体如下:s11:设计跨链监管体系层次化结构;s12:设计链上节点代理程序;s13:构建分布式跨链监管网络;所述步骤s2具体如下:s21:监管链与业务链的许可接入;s22:监管活动的申请与授权;s23:面向监管活动的节点选取;s24:执法节点与对象节点建立连接;s25:对象节点验证并响应执法节点的请求;s26:执法节点验证执行结果;s27:监管链对监管活动的查询结果达成共识并上链存储。2.根据权利要求1所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s11:设计跨链监管体系层次化结构,具体如下,提出跨链监管体系的层次化结构,分为业务层、监管层与许可层3层,业务层中部署有多条业务链,每条业务链由多个单位或组织构成的联盟共同部署并维护,对外提供特定类型的服务,对内存储相关业务数据并接受监管层的审查,监管层中部署有多条监管链,每条监管链由多个监管部门或机构共同部署并维护,对外监管特定类型的区块链应用与服务,对内存储监管活动的数据,使得多个监管部门或机构共享监管数据并对监管活动的结果进行审计达成共识,许可层中部署有一条许可链以及基于此链搭建的服务平台,该平台提供面向跨链监管的多项接口供监管链与业务链调用,覆盖了登记注册、令牌申请与数据查询,许可链及平台由中央权威机构联合部署并维护,负责整个体系的接入许可与访问许可工作。3.根据权利要求1所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s12:设计链上节点代理程序,具体如下,代理程序部署于每条监管链与业务链的物理节点上,能够屏蔽区块链底层实现技术提供网络通信功能与链上数据读写功能,代理程序采用多线程技术,将并行的线程分为通信守护线程与业务响应线程两类,通信守护线程负责侦听从网络发来消息,解析出其中的命令后将其作为参数调用业务响应线程完成对应的操作,业务响应线程根据不同命令参数调用区块链接口对其进行读写操作;代理程序在接收到来自网络的消息后的处理流程包含以下七个步骤:s121通信守护线程从收到的消息中解析出相关的命令与执行参数;s122通信守护线程调用执行函数为当前命令的任务分配业务响应线程;s123如果代理程序当前开启的业务响应线程数量小于核心线程池容量,执行函数创建一个核心业务响应线程执行当前命令;s124如果核心线程池容量已满,当前命令对应的任务先被放入拥塞队列中,当核心线程池中一个核心业务响应线程执行完上一个任务后,执行函数将从拥塞队列中顺序取出新的任务分配给该线程执行;
s125如果拥塞队列已满且代理程序当前运行的业务响应线程数量小于线程池规定的最大容量,执行函数创建一个业务响应线程执行当前任务;s126如果拥塞队列已满且代理程序当前运行的业务响应线程数量达到线程池规定的最大容量,执行函数拒绝响应当前命令的任务,并按照默认策略对当前任务进行处理;s127通信守护线程在调用完执行函数后将保持侦听状态,等待下一条消息的到来。4.根据权利要求2所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s13:构建分布式跨链监管网络,采用套接字socket编程的方法在代理程序上实现了网络连接功能,具体过程分为以下五个步骤;s131调用函数socket为代理程序的通信守护线程创建一个套接字s,调用函数bind将s绑定在主机55533端口,调用函数listen让通信守护线程侦听来自网络的请求消息;s132在通信守护线程中调用函数connect,尝试与对端代理程序的55533端口建立tcp连接,s133在通信守护线程中调用函数accept,接收来自网络的tcp连接请求,连接成功后,将结果返回给通信守护线程,由通信守护线程调用执行函数分配业务响应线程,s134在业务响应线程中调用函数recv接收请求消息,并返回接收缓冲区的访问地址,s135在业务响应线程中调用函数send将区块链操作的执行结果发送给对端代理程序。5.根据权利要求3所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s21:监管链与业务链的许可接入,具体过程分为以下五个步骤:s211区块链节点代理程序向许可层的服务平台发送消息applymsg申请加入跨链监管系统,applymsg包含字段有:区块链规模chainsize、区块链实现技术chaintech、链上区块数量chainblocknum、链上节点信息列表nodelist,在nodelist中,每一个节点的信息包括:节点标识符nodeid、节点所在主机的ip地址ipaddr、节点所在主机的物理地址macaddr、以及节点所在主机硬件配置信息hardware;s212许可层平台在收到消息applymsg后,首先检查消息队列,如果收到的是来自同一条区块链的重复消息,则直接丢弃;否则依次调用函数chainverification与nodevertification对发送申请的区块链及其链上节点进行验证;s213许可层平台调用函数buildrelationship为申请接入的区块链分配监管关系;s214许可层平台利用工具库keytool为申请接入的区块链上所有节点颁发数字证书;s215许可层平台将上述区块链及其所有节点的信息提交给许可链存储。6.根据权利要求3所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s22:监管活动的申请与授权,具体过程分为四个步骤,s221监管链根据需求向许可层发送一次监管活动的请求;s222许可层在收到监管链发起一次监管活动的请求后,验证监管链与其申请监管的目标业务链是否已确立监管关系,若验证成功,则给监管链颁发一个授权令牌,否则向监管链返回请求不合法消息,令牌由许可层平台签发,包含了针对当前监管活动的标识符、有效期、操作范围以及目标业务链的节点列表;s223监管链在获得令牌后向许可层返回一个确认消息;s224许可层在收到确认消息后将与此次监管活动相关的信息记录在许可链上。7.根据权利要求3所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤
s23:面向监管活动的节点选取,选取算法包括以下三个步骤:s231确定当前监管链或业务链的规模,即区块链上的节点数量m,以及需要选取出的节点数量n;s232随机生成映射到节点序号空间1~m的正整数r,序号r所对应的节点被选出作为执法节点或对象节点;s233根据选取节点的数量n重复执行步骤s232,直到面向当前监管活动的执法节点列表或对象节点列表选择完毕。8.根据权利要求3所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s24:执法节点与对象节点建立连接,具体如下:执法节点上的代理程序向对象节点上的代理程序发送连接请求以发起跨链监管活动,代理程序a表示执法节点上的代理程序,代理程序b表示对象节点上的代理程序;s241代理程序a向代理程序b发送建立连接的请求;s242代理程序b接收到请求后,将所在对象节点的数字证书c2发送给代理程序a;s243代理程序a接收到数字证书c2后,利用许可层根证书提供的公钥对其进行验证,并从c2中获得代理程序b所在对象节点的公钥pk2;s244 c2验证成功后,代理程序a将所在执法节点的数字证书c1发送给代理程序b;s245代理程序b接收到数字证书c1后,利用许可层根证书提供的公钥对其进行验证,并从c1中获得代理程序a所在执法节点的公钥pk1;s246代理程序b向代理程序a发送一个用公钥pk1加密的确认消息;s247代理程序a接收并确认代理程序b返回的确认消息后,将其支持的所有通信加密方案用所在执法节点的私钥sk1加密后发送给代理程序b;s248代理程序b用对应公钥pk1解密后从所有方案中选出一种,然后用对应公钥pk1加密选择的方案并返回给代理程序a;s249代理程序a用私钥sk1解密从而确认加密方案,然后产生一个随机数,并用公钥pk2加密后发送给代理程序b;s2410代理程序b利用所在对象节点的私钥sk2解密获得随机数,并将其作为对称密钥k,然后按照选择的方案用密钥k加密一个确认命令返回给代理程序a;s2411代理程序a收到返回的消息后,按照选定的加密方法用此前发送的随机数作为对称密钥k进行解密,若获得代理程序b的确认命令,则连接建立成功,代理程序a能够通过连接向代理程序b发送后续监管请求。9.根据权利要求3所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s25:对象节点验证并响应执法节点的请求,具体如下:s251对象节点上的代理程序先从请求中获取当前监管活动的令牌,然后向许可层提出申请验证此令牌,若验证成功,则继续下面步骤;否则,忽略请求;s252对象节点上的代理程序先从请求中获取监管链选定的对象节点列表,然后判断自身所在节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;s253对象节点上的代理程序先从请求中获取监管链选定的执法节点列表,然后判断发送当前请求的代理程序所在的节点是否处于列表之中,若存在,则继续下面步骤;否则,忽略请求;
s254对象节点上的代理程序根据请求指定的命令访问业务链,然后利用步骤s24中协商的对称密钥k加密执行结果,最后将其返回给执法节点的代理程序。10.根据权利要求3或4所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s26:执法节点验证执行结果,具体如下:s261针对返回的每一份执行结果,验证发送者的身份是否处于选定的对象节点列表中;同时验证返回结果的完整性;s262采用投票算法从多份结果中确定最终结果,以保证多渠道并发执行的一致性。11.根据权利要求3或4所述的面向以链治链的区块链跨链监管方法,其特征在于,所述步骤s27:监管链对监管活动的查询结果达成共识并上链存储,具体如下:s271发起监管活动的执法节点在验证查询结果之后,提出上链请求;s272其它选定的执法节点根据其获得并验证后的查询结果对上链请求进行背书;s273当背书次数达到智能合约的要求时,查询结果提交上链。
技术总结
本发明涉及一种面向以链治链的区块链跨链监管方法,以满足区块链监管的分布式部署、数据安全可靠、跨链快速高效的需求。该方法设计了一个层次化的跨链监管体系结构与一套交互协议,以构建一个安全、高效的区块链跨链监管系统。整个跨链监管体系分为业务层、监管层与许可层。业务层负责实现面向各种区块链应用的业务数据可信存储,监管层负责实现跨链业务数据在多个监管机构之间的共享与审计,许可层负责实现对业务链和监管链的体系接入控制和跨链监管活动的访问控制。为了实现跨链通信,本方案利用链上节点代理程序构建了一个跨链网络,提出一套面向“以链治链”的跨链监管交互协议,从而实现在监管活动中跨链数据的高效访问与安全传输。问与安全传输。问与安全传输。
技术研发人员:许昱玮 何冉 王皓宇 张玉健 王良民
受保护的技术使用者:东南大学
技术研发日:2022.04.23
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-7162.html