一种对Fabric复杂背书策略在跨链中验证的方法与流程

文档序号:21935485发布日期:2020-08-21 15:07阅读:1092来源:国知局
一种对Fabric复杂背书策略在跨链中验证的方法与流程

本发明属于区块链技术领域,尤其涉及一种对fabric复杂背书策略在跨链中验证的方法。



背景技术:

跨链技术指的是通过连接相对独立的区块链系统,实现账本的跨链互操作。在资产交换方面,一些区块链事实上仍处于互相隔离的状态,目前各个区块链应用之间互通壁垒极高,并且资产交换时对交易的验证是个非常巨大的挑战。

而对fabric区块链产生的跨链交易的验证尤其是一个难点,fabric区块链拥有规定的背书节点对交易进行背书,fabric的背书节点是由多个节点组成的集合,用户可以对这个集合进行自定义的背书策略制定,比如规定必须由哪几个节点背书或者几个节点中的某几个背书。例如fabric区块链中存在背书节点a,b,c,d,用户可以定义只要任意节点背书成功即使得交易背书成功,也可指定必须有a,b两个节点背书成功才能使得交易背书成功。然而这样自定义的虽然提供了区块链对背书要求的灵活性,但是在跨链交易中对fabric抛出的交易的背书信息的验证规则的编写提供了极大的障碍,如果针对每一种策略都编写一种对应的验证规则,无论从工作量还是从复杂度来说都是一笔不小的开销。

通常的跨链验证无法对复杂的背书策略进行验证,只能验证简单的背书策略,比如只能验证由一个节点签名或者由固定几个节点进行签名的交易。一般来说对于默认的fabric的网络,背书策略是只要背书节点池的任意一个节点对交易做背书,即可以认为交易是有效的,所以简单的背书策略只需要将所有背书节点的证书存入到跨链网络,在验证时只需要遍历这些证书进行验签即可。但是对于复杂的背书策略来说,是无法通过简单的遍历做到的,这也完全无法满足在实际生产中的fabric复杂背书策略的跨链需求。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种对fabric复杂背书策略在跨链中验证的方法。

本发明的目的是通过以下技术方案来实现的:一种对fabric复杂背书策略在跨链中验证的方法,包括以下步骤:

(1)fabric区块链将区块链网络中所有的msp名单、链码id和背书策略的表达式注册到跨链网络中;

(2)当fabric区块链产生一笔跨链交易时,将已经上链的该笔交易信息传给跨链网络的中继链,中继链对该交易信息进行背书验证,包括以下子步骤:

(2.1)中继链从交易信息中解析出交易提案的执行结果和背书节点对交易提案的执行结果的签名集合;

(2.2)先对步骤(1)中fabric区块链注册在跨链网络中的背书策略的表达式进行语义分析拆分成逻辑语法树,然后将逻辑语法树与步骤(1)传入跨链网络的msp名单进行映射,生成背书策略解释器;

(2.3)中继链将步骤(2.1)得到的交易提案的执行结果中的链码id和步骤(1)中fabric注册在跨链网络中的链码id进行对比,确认链码id一致,如不一致则验证失败;

(2.4)将步骤(2.1)得到的背书节点对交易提案的执行结果的签名集合放入步骤(2.2)生成的背书策略解释器中,背书策略解释器查看签名集合的数量是否符合步骤(1)传入的背书策略的表达式,判断签名集合的逻辑是否符合逻辑语法树,并提取步骤(2.2)中与逻辑语法树挂钩的msp名单中背书策略要求的证书,对签名集合进行验签;如签名集合的签名符合背书策略解释器的要求且验签通过则验证通过,否则验证失败。

进一步地,所述步骤(2.2)具体为:采用抽象语法树对步骤(1)中fabric区块链注册在跨链网络中的背书策略的表达式进行语义分析转化成树状数据结构,得到逻辑语法树,然后将逻辑语法树与步骤(1)传入跨链网络的msp名单进行映射,生成背书策略解释器。

进一步地,当fabric区块链中的背书策略更新时,将背书策略的表达式同步更新到跨链网络中,并在每次交易验证时生成新的背书策略解释器。

本发明的有益效果是:本发明中fabric区块链首先将msp名单、链码id和背书策略描述注册到跨链网络中,将产生的跨链交易传给中继链,然后中继链解析出交易执行结果和背书节点签名集,生成背书策略解释器,并确认交易执行结果和注册在跨链网络中的链码id一致,最后背书策略解释器验证签名集;本发明具有以下特点:

1、本发明能够对用户自定义的复杂背书策略进行验证;

2、本发明对fabric网络用户友好,不需要自己编写验证策略,只需要提交背书策略描述即可;

3、本发明能够防止用户通过不同链码进行恶意攻击。

附图说明

图1为fabric注册到跨链网络的注册阶段示意图;

图2为fabric复杂验证规则验证流程图。

具体实施方式

本发明一种对fabric复杂背书策略在跨链中验证的方法,包括以下步骤:

(1)如图1所示,在fabric区块链注册到跨链网络的注册阶段,fabric区块链将区块链网络中所有机构的msp名单、用来发送跨链交易的链码id和背书策略描述一起注册到跨链网络中。

其中,fabric的msp名单需要包含fabric区块链网络中所有机构的msp名单,在生成背书策略时需要将多个机构的msp名单组合起来,而不是只以单一机构的msp名单作为背书策略的输入源。

(2)如图2所示,当fabric区块链产生一笔跨链交易时,将已经上链的该笔交易信息传给跨链网络的中继链,中继链对该交易信息进行背书验证,包括以下子步骤:

(2.1)中继链从交易信息中解析出交易提案的执行结果和背书节点对交易提案的执行结果的签名集合。

(2.2)对步骤(1)中fabric区块链注册在跨链网络中的背书策略描述进行编译,结合注册在跨链网络中的msp名单生成背书策略解释器,具体为:先对背书策略描述进行语义分析,拆分成逻辑语法树,比如用抽象语法树(abstractsyntaxtree,ast),将背书策略表达式转化成树状数据结构,然后将逻辑语法树与步骤(1)传入跨链网络的msp名单进行挂钩。

需要说明的是,当fabric区块链中的背书策略更新时,将背书策略同步更新到跨链网络中,本发明中的验证方法在每一次交易验证时都会生成一个新的背书策略解释器,而不是针对某一个特定的fabric区块链永久生成一个带缓存的解释器。所以背书策略的更新不会影响到验证方法的更新。

(2.3)中继链将交易提案的执行结果中的链码id和步骤(1)中fabric注册在跨链网络中的链码id进行对比,确认链码id一致,如不一致则验证失败。

为了防止恶意攻击,在验证fabric发送的交易时,需要对链码的id进行校验,防止有恶意的攻击者通过不同的链码构造虚假的交易来达到恶意交易的目的,所以在解析传入跨链网络的交易信息时,首先需要提取出链码的id,将提取的id与事先注册在跨链网络中的链码id进行比对,只有相同的id才能表明该交易确实是对应的链码产生的,可以继续进行msp身份认证。

(2.4)将步骤(2.1)得到的背书节点对交易提案的执行结果的签名集合放入步骤(2.2)生成的背书策略解释器中,背书策略解释器通过步骤(2.2)得到的逻辑语法树对其进行验证,具体为:查看签名集合的数量是否符合步骤(1)传入的背书策略描述,判断签名集合的逻辑是否符合逻辑语法树,并提取步骤(2.2)中与逻辑语法树挂钩的msp名单中背书策略要求的证书,对背书节点对交易提案的执行结果的签名集合进行验签;如签名集合的签名符合背书策略解释器的要求且验签通过则验证通过,否则验证失败。

可以用一个例子来详细说明具体的验证过程,当机构1(含成员a、b)、机构2(含成员c、d)和机构3(含成员e、f)组成了fabric区块链网络后,在fabric网络注册到跨链网络阶段,需要将机构1、机构2和机构3的msp名单提交到跨链网络中。同时,如果此时该fabric区块链规定了背书策略是and(org1.a,or(org2.c,org3.e))这样的背书策略,需要将该策略表达式也一并注册到跨链网络中,还有需要将该跨链交易所牵扯到的链码id进行注册。注册结束后,如果fabric网络产生一笔跨链交易,就会将跨链交易提交到跨链网络,跨链网络需要对交易信息进行验证,首先会根据上面的背书策略表达式生成一棵语法树,语法树的叶子节点即为成员a,成员c和成员e,此时需要将叶子节点的成员和msp名单中该成员的证书建立映射。通过这棵产生映射的语法树来生成背书策略解释器。这样就可以通过该解释器对交易信息中的背书节点的签名集合进行验证了。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1