在联盟链网络中创建节点组、基于节点组的交易方法与流程

文档序号:21411653发布日期:2020-07-07 14:47阅读:579来源:国知局
在联盟链网络中创建节点组、基于节点组的交易方法与流程

本说明书实施例涉及信息技术领域,尤其涉及一种在联盟链网络中创建节点组、基于节点组的交易方法。



背景技术:

联盟链网络,又称联盟式的区块链网络,一般由多个机构作为联盟成员,将多个机构分别控制的节点组成联盟链网络。

对于作为联盟成员的每个机构而言,该机构对接的用户可以将发起的业务的业务数据封装成交易(区块链协议规定的数据结构)提交给该机构对应的节点,进而由该机构对应的节点将该交易广播到联盟链网络,进而由联盟链网络中各节点对该交易进行共识后写入本地的区块链。如此,可以确保写入区块链中的业务数据难以被篡改。

现有的联盟链网络的运行机制为了追求业务数据的不可篡改,导致任一节点对接的业务数据都会公开给全网。



技术实现要素:

为了解决现有技术中无法保护节点对接的业务数据隐私的问题,本说明书实施例提供一种在联盟链网络中创建节点组、基于节点组的交易方法,方案如下:

根据本说明书实施例的第1方面,提供一种在联盟链网络中创建节点组的方法,所述联盟链网络包括多个节点,所述方法包括:

第一节点接收第一管理方账户构建的组创建交易;所述组创建交易包括组创建子交易,所述组创建子交易包含组公钥;所述第一管理方账户是所述第一节点的管理方在所述联盟链网络中注册的账户;所述组公钥是所述第一节点的管理方指定的;

所述第一节点向所述联盟链网络广播所述组创建交易;

所述第一节点执行所述组创建交易,包括:在本地创建私有链,将所述创建子交易写入本地的私有链,以及使用所述组公钥对第一节点标识进行加密;

所述第一节点之外的每个其他节点在未创建私有链的情况下执行所述组创建交易,包括:使用所述组公钥对第一节点标识进行加密;

所述联盟链网络中每个节点将所述组创建交易与对应的执行结果写入本地的联盟链;所述组创建交易对应的执行结果包含加密后的所述第一节点标识。

根据本说明书实施例的第2方面,提供一种基于第1方面所创建的节点组的匿名注册方法,包括:

所述第一节点接收对应的用户账户构建的匿名注册交易;所述匿名注册交易包含匿名注册子交易,所述匿名注册子交易包含匿名公钥、使用所述组公钥对应的组私钥生成的签名;其中,所述用户账户是所述第一节点对接的用户在联盟链网络中注册的账户,所述匿名公钥是所述第一节点对接的用户指定的;

所述第一节点使用所述组公钥对所述匿名注册子交易中对应于所述组私钥的签名进行验证,若验证通过,则对所述匿名注册交易进行处理,包括:通过所述第一管理方账户,重新构建包含所述匿名注册子交易的匿名注册交易;

所述第一节点向所述联盟链网络广播重新构建的匿名注册交易;

所述第一节点执行所述匿名注册交易,包括:将所述匿名注册子交易写入本地的私有链;

所述第一节点之外的每个其他节点在未创建私有链的情况下,执行重新构建的所述匿名注册交易;

所述联盟链网络中每个节点将所述匿名注册交易写入本地的联盟链。

根据本说明书实施例的第3方面,提供一种基于第2方面所述的匿名注册方法的交易方法,包括:

所述第一节点接收对应的用户账户构建的业务交易;所述业务交易包含业务子交易,所述业务子交易包含业务数据、使用所述组私钥生成的签名、使用所述匿名公钥对应的匿名私钥生成的签名;

所述第一节点使用所述组公钥对所述业务子交易中对应于组私钥的签名进行验证,以及,使用所述用户账户对应的匿名公钥对所述业务子交易中的对应于所述匿名私钥的签名进行验证,若验证皆通过,则对所述业务交易进行处理,包括:通过所述第一管理方账户重新构建包含所述业务子交易的哈希值的业务交易;

所述第一节点向所述联盟链网络广播重新构建的业务交易;

所述第一节点执行所述业务交易,包括:将所述业务子交易写入本地的私有链;

所述第一节点之外的其他节点在未创建私有链的情况下,执行重新构建的所述业务交易;

所述联盟链网络中每个节点将所述业务交易写入本地的联盟链。

本说明书实施例所提供的技术方案,联盟链网络中的第一节点的管理方可以通过自己的联盟链账户发起组创建交易,组创建交易包含组创建子交易。组创建交易被广播到联盟链网络之后,第一节点在执行该组创建交易时,根据组创建子交易,在本地创建私有链,相当于创建包含第一节点的节点组。而其他节点在执行该组创建交易时,并不会在本地创建私有链。最终第一节点与其他节点都会将该组创建交易写入本地的联盟链。

如此,第一管理方通过自己的联盟链账户发起向第一节点发起业务交易时,第一节点如果确定业务交易包含的业务子交易中携带有组私钥的签名,则认定业务子交易指定了组私钥对应的节点组,业务子交易的内容并不能公开到联盟链中,因此,第一节点会将业务交易中的业务子交易替换成哈希值后才会广播给联盟链网络,第一节点执行业务交易时,会将业务子交易写入本地的私有链,而联盟链网络中除了第一节点以外的其他节点在执行业务交易时,由于业务交易中并没有业务子交易的内容(而是哈希值),且本地也没有私有链,因此并不会如第一节点那样进行执行。最终,联盟链网络中每个节点会将包含业务子交易的哈希值的业务交易写入本地的联盟链。

通过本说明书实施例提供的技术方案,一方面,第一节点对接的业务数据明文只会存储于第一节点所在的节点组的私有链中,这保护了第一节点的业务数据隐私;另一方面,第一节点对应的业务数据的哈希值又会存储于联盟链中,起到了存证的效果(不可篡改)。此外,由于组创建交易对应的执行结果中的第一节点标识经过加密,因此,联盟链网络中每个节点本地也不会存储创建节点组的第一节点的实际身份信息。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是一种现有的区块链系统的结构示意图;

图2是本说明书实施例提供一种区块链系统的结构示意图;

图3是本说明书实施例提供的一种在联盟链网络中创建节点组的方法的流程示意图;

图4是本说明书实施例提供的第一节点本地维护联盟链与私有链的示意图;

图5是本说明书实施例提供的一种基于节点组的匿名注册方法的流程示意图;

图6是本说明书实施例提供的一种基于匿名注册方法的交易方法的流程示意图;

图7是本说明书实施例提供的一种加入节点组的方法的流程示意图;

图8是本说明书实施例提供的第二节点本地维护联盟链与私有链的示意图;

图9是本说明书实施例提供的一种基于节点组的匿名注册方法的流程示意图;

图10是本说明书实施例提供的一种基于匿名注册方法的交易方法的流程示意图;

图11用于配置本说明书实施例方法的一种设备的结构示意图。

具体实施方式

图1是一种现有的区块链系统的结构示意图。如图1所示,在现有技术中,联盟链账户可以通过任一节点发送交易,交易包含业务数据,交易会被广播到全网,如此每个节点都会将交易缓存在本地。在共识阶段,节点a~节点d基于共识算法,生成区块,区块中打包有若干交易,每个节点对共识生成的区块中的交易进行执行,并将区块写入本地的联盟链(相当于将区块中每个交易都写入本地的联盟链),实现交易执行与交易的上链存储。

图1所述的区块链系统会将每个节点对接的业务数据明文公开在联盟链中,联盟链网络中的所有节点都可以互相查看彼此的业务数据,无法实现业务数据隐私的保护。

而本方案用于在一个联盟链网络中实现节点之间的数据隔离(也可以节点组之间的数据隔离,还可以是节点与节点组之间的数据隔离),从而保护节点所对接的业务数据隐私。

此处先对本方案所应用的区块链系统的架构进行说明。区块链系统包括一个联盟链网络,联盟链网络由多个节点组成,每个节点上部署有联盟链网络所维护的区块链(为了描述的方便,本文将联盟链网络所维护的区块链称为联盟链)。联盟链网络中每个节点除了维护本地的联盟链之外,还可以维护本地的至少一条私有的区块链(为了描述的方便,称为私有链)。

需要说明的是,本文所谓的“私有”,是指节点组私有,并不是指节点私有。维护有相同私有链的节点构成一个节点组,而一个节点可以创建或加入一个或不止一个节点组。如果某个节点组只包括一个节点,那么,这个节点本地的私有链也就是这个节点组维护的私有链;如果某个节点组包括不止一个节点,那么,这个节点组内每个节点本地的私有链是相同的,该相同私有链就是这个节点组维护的私有链。

在本方案中,任一节点可以创建或者加入节点组,同一节点组内的节点维护相同私有链,同一节点组内的节点对接的业务数据明文可以仅写入节点组的私有链中,实现节点组内外的数据隔离。

图2是本说明书实施例提供一种区块链系统的结构示意图。如图2所示,联盟链网络包括节点a、节点b、节点c与节点d,其中,节点a~节点d都在本地维护有相同的联盟链,该相同联盟链就是联盟链网络所维护的区块链。此外,节点a与节点d属于同一节点组,维护相同的私有链1,彼此共享业务数据,节点c自己创建了一个节点组,该节点组只包括节点c,节点c独自维护私有链2(当然,也可以允许节点a、b、d后续加入该节点组),节点b并未创建或加入任何节点组,节点b对接的业务数据会共享给全网。

需要说明的是,节点a与节点d的业务数据不会共享给节点b和节点c,这实现了节点组与节点、节点组之间的数据隔离。节点c的业务数据不会共享给其他节点,这实现了节点间的数据隔离。

可以看出,本方案中区块链系统的架构实际上是两层网络嵌套结构,外层是联盟链网络,而联盟链网络内部,又可以形成若干私有链网络(一个私有链网络就是一个节点组)。

另外,还需要对本方案的描述中会出现的若干概念进行解释。

交易:是指由在联盟链网络上注册的账户(如某个节点的管理方在联盟链网络中注册的管理方账户,以及,管理方所服务的普通用户在联盟网络中注册的用户账户)发起的交易,其是联盟链网络层面上的概念,交易被广播到联盟链网络中每个节点之后,会被进一步写入联盟链中。例如,组创建交易、组加入交易、业务交易。

子交易:是指交易内嵌套的数据结构,其是私有链网络层面上的概念。子交易会指定其所要写入的私有链,维护该私有链的所有节点会将该子交易写入该私有链。例如,组创建子交易、组加入子交易、业务子交易。

众所周知,在区块链领域,交易有执行型交易与存证型交易之分,对于执行型交易,节点不仅需要将执行型交易写入区块链,还需要基于执行型交易中的一些数据参数执行操作,得到执行结果;对于存证型交易,节点不需要执行,仅会将存证型交易写入区块链进行存证。

而本方案中所述的联盟链层面上的交易,通常是指执行型交易,而私有链层面上的子交易,可以是存证型交易,也可以是执行型交易。

第一节点:为了描述的方便,将联盟链网络中创建节点组的某个节点称为第一节点。

第二节点:为了描述的方便,将联盟链网络中加入第一节点创建的节点组的某个其他节点称为第二节点。

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

以下结合附图,详细说明本说明书各实施例提供的技术方案。

图3是本说明书实施例提供的一种在联盟链网络中创建节点组的方法的流程示意图,包括以下步骤:

s300:第一节点接收第一管理方账户构建的组创建交易。

第一管理方账户是第一节点的管理方在联盟链网络中注册的账户。一般而言,节点的管理方是向用户提供业务服务的机构(如银行)。通常,节点的管理方的中心化服务器会对接若干用户。对于用户而言,节点的管理方提供的是中心化服务,用户向节点的管理方的中心化服务器发起业务,中心化服务器会通过第一管理方账户将相应的业务数据封装到业务交易中,提交给第一节点,以便联盟链网络对业务交易进行处理与存储。

而对于节点组创建操作以及节点组加入操作,其通常是节点的管理方发起的,并不是节点的管理方对接的用户发起的。

在本说明书实施例中,组创建交易中包含创建子交易(当然,通常还包含其他参数),创建子交易包含组公钥,组公钥是第一节点的管理方指定的,用于作为创建的节点组对应的公钥。可以理解,第一节点的管理方既然指定了组公钥,当然也会一并指定组私钥。

此处需要说明,交易是区块链技术领域公知的数据结构,交易中除了包含待处理数据(data)以外,通常还包含其他参数(如账户地址、交易的哈希值、发起交易的账户对交易的签名等等),其中,交易中的其他参数并不是本方案关注的重点,后文对其他参数不再强调,只重点关注交易中包含的data。

s302:所述第一节点向所述联盟链网络广播所述组创建交易。

s304:所述第一节点执行所述组创建交易。

s306:所述第一节点之外的每个其他节点在未创建私有链的情况下执行所述组创建交易。

s308:所述联盟链网络中每个节点将所述组创建交易与对应的执行结果写入本地的联盟链。

从联盟链网络层面来看,第一节点在受理第一管理方账户发起的组创建交易之后,会将组创建交易广播到全网。联盟链网络中各节点会基于共识算法,将组创建交易打包进区块(可以理解,区块中还会有其他交易,其他交易不一定是其他的组创建交易,也可能是组加入交易或者业务交易)。本次共识产生区块后,每个节点都需要对区块中的每个交易进行执行,并且将区块写入本地的联盟链。此处需要说明的是,节点通常会基于本地部署的智能合约或固件来执行交易。

由于第一节点是本次创建节点组的主体,因此,只有第一节点本地才能创建私有链,而其他节点本地不能创建私有链。这意味着第一节点执行所述组创建交易的方式与其他节点不同。

第一节点执行组创建交易时,会在本地创建私有链,并将所述组创建交易中内嵌的组创建子交易提取出来,写入本地的私有链,以及使用所述组公钥对第一节点标识进行加密。

而第一节点之外的每个其他节点,在执行组创建交易时,不会创建私有链,实际是在未创建私有链的情况下执行所述组创建交易,以及使用所述组公钥对第一节点标识进行加密。其他节点可以“象征性”执行所述组创建交易(此外,只要确保使用所述组公钥对第一节点标识进行加密即可),为了实现第一节点与其他节点对所述组创建交易的不同执行方式,可以具体采用如下实现:

每个节点上可以部署两种组创建交易执行逻辑,分别对应两种不同的逻辑触发条件。组创建交易执行逻辑1可以是在本地创建私有链,并且将组创建子交易写入本地的私有链,以及使用所述组公钥对第一节点标识进行加密,其对应的触发条件是执行节点是受理并广播组创建交易的节点;组创建交易执行逻辑2可以是不实际执行组创建交易的任何执行逻辑,只要确保使用所述组公钥对第一节点标识进行加密即可,其对应的触发条件是执行节点不是受理并广播组创建交易的节点。此处值得强调,本说明书并不对组创建交易执行逻辑2进行具体限定,只要满足在未创建私有链的情况下对组创建交易进行“象征性”执行即可。

可以理解,组创建交易的执行结果当然也会被写入联盟链,每个节点写入联盟链中的执行结果当然也一致的。在具体实现上,可以将上述组创建交易执行逻辑1与组创建交易执行逻辑2设置为生成某个相同执行结果的逻辑,将所述组创建交易对应的执行结果设置为包含组公钥与加密后的第一节点标识,以便存证组创建交易所创建的节点组对应的公钥以及创建节点组的节点的加密身份。

可以理解,本文中所谓的将执行结果写入联盟链(或私有链),不一定是指将执行结果明文存储到联盟链(或私有链),也可能是将执行结果明文存储到本地,并将执行结果明文的哈希值锚定到联盟链上(私有链)。

上述有关“象征性”执行组创建交易的说明同样也适应于“象征性”执行其他交易的情况,后文在提及“象征性”执行时,对具体原理不再赘述。值得强调,在象征性执行匿名注册交易与业务交易时,并不需要对节点标识进行加密。

此外,在实际应用中,联盟链网络中可能创建有不止一个节点组,这种情况下,可以使用节点组的组公钥作为唯一标识来区别不同的节点组,也可以另行为节点组设置组标识。

具体而言,所述组创建子交易还可以包括组标识,相应地,组创建交易对应的执行结果也可以包含组标识。

在本说明书实施例中,所述组创建子交易还可以包括使用组私钥生成的签名,如此,第一节点在向全网广播所述组创建交易之前,可以先验证此签名,如果验证通过,则说明组创建交易是组私钥的持有者授权发起的,可以基于组创建交易创建节点组。

在本说明书实施例中,可以理解,第一节点将组创建子交易写入本地创建的私有链,实际是第一节点将打包有所述组创建子交易的私有链创世区块(其中通常还包含私有链创建后受理的若干组加入子交易或业务交易)并写入本地创建的私有链。

可见,对于组创建交易与其内嵌的组创建子交易而言,组创建交易被打包进某个联盟链区块并写入联盟链,组创建子交易被打包进第一节点本地的私有链的创世区块。为了明确此联盟链区块与此私有链区块之间的关联关系,方便查阅记录,第一节点可以在封装有所述组创建子交易的私有链区块(具体可以是区块头中)中写入指针对象,用于指向封装有所述组创建交易的联盟链区块。

图4是本说明书实施例提供的第一节点本地维护联盟链与私有链的示意图。如图4所示,第一节点本地的私有链的私有链创世区块(打包有组创建子交易)通过指针对象指向本地维护的联盟链中的某个联盟链区块,该联盟链区块中打包有组创建交易。

本方案中的节点组可以仅包括一个节点,而这个节点可以将自身对接的业务数据明文写入本地的私有链。为此,先对节点组中仅包括一个节点的情况下如何对用户进行匿名注册以及如何交易进行描述。

在实际应用中,第一节点对接的用户可以不委托第一节点代理发起业务交易,而是用户自己在联盟链网络中注册账户,通过自己的联盟链网络发起业务交易。这种情况下,用户有匿名的需求,不希望将自己的身份公开在联盟链网络中。为此,图5是本说明书实施例提供的一种基于节点组的匿名注册方法的流程示意图,包括如下步骤:

s500:第一节点接收对应的用户账户构建的匿名注册交易。

所述匿名注册交易包含匿名注册子交易,所述匿名注册子交易包含匿名公钥、使用所述组公钥对应的组私钥生成的签名;其中,所述用户账户是所述第一节点对接的用户在联盟链网络中注册的账户,所述匿名公钥是所述第一节点对接的用户指定的。

可以理解,在联盟链网络层面,由于匿名注册交易是用户账户发起的,因此匿名注册交易事实上包含用户账户的身份信息。

s502:第一节点使用所述组公钥对所述匿名注册子交易中对应于所述组私钥的签名进行验证,若验证通过,则对所述匿名注册交易进行处理。

所述处理包括:通过所述第一管理方账户,重新构建包含所述匿名注册子交易的匿名注册交易。进行此处理的作用在于,第一节点以自身的身份重新构建匿名注册交易,如此,可以将用户账户的身份信息剥离。

s504:第一节点向所述联盟链网络广播重新构建的匿名注册交易。

由于用户账户的身份信息已经从匿名注册交易中剥离,因此,第一节点将匿名注册交易广播到全网,不会造成用户账户的身份信息泄露。

s506:第一节点执行所述匿名注册交易。

具体而言,第一节点将所述匿名注册子交易写入本地的私有链。如此,相当于在私有链网络层面,将用户进行匿名注册。用户后续在私有链网络层面,可以使用匿名私钥生成的签名来发起业务子交易。

s508:第一节点之外的每个其他节点在未创建私有链的情况下,执行重新构建的所述匿名注册交易。

具体而言,第一节点之外的每个其他节点在未创建私有链的情况下,象征性执行重新构建的匿名注册交易。

s510:联盟链网络中每个节点将重新构建的匿名注册交易写入本地的联盟链。

此外,所述匿名注册子交易还可以包含使用所述匿名公钥对应的匿名私钥生成的签名,用于证明匿名注册子交易的发起者持有匿名私钥。

相应地,所述第一节点可以使用所述匿名公钥对所述匿名注册子交易中对应于所述匿名私钥的签名进行验证,所述第一节点若对对应于所述匿名私钥的签名验证通过,则对所述匿名注册子交易进行处理。

另外,用户虽然是匿名注册,但是为了后续审计用户以匿名身份发起的业务交易,第一节点可以在本地建立并存储所述匿名公钥与所述用户账户之间的对应关系,从而只有第一节点可以掌握注册的匿名公钥对应的用户真实身份。

此外,第一节点可以在封装有所述匿名注册子交易的私有链区块中写入指针对象,用于指向封装有重新构建的匿名注册交易的联盟链区块。

图6是本说明书实施例提供的一种基于匿名注册方法的交易方法的流程示意图,包括如下步骤:

s600:第一节点接收对应的用户账户构建的业务交易。

所述业务交易包含业务子交易,所述业务子交易包含业务数据、使用所述组私钥生成的签名、使用所述匿名公钥对应的匿名私钥生成的签名。

业务子交易可以是存证型交易,也可以是执行型交易。当业务子交易是存证型交易时,业务数据可以是管理方根据业务请求执行操作后得到的数据结果;当业务子交易是执行型交易时,业务数据可以是业务请求本身,节点组内的节点需要在私有链网络层面上执行业务子交易,得到执行结果,业务子交易与执行结果都会被写入私有链。

业务子交易中包含组私钥对应的签名的作用是,证明业务子交易有权调用节点组内的节点来对交易进行处理。此外,当联盟链网络中存在不止一个节点组时,业务子交易还可以包含组标识,用于表明业务子交易所要调用的节点组。所述第一节点使用所述组标识对应的所述组公钥对所述业务子交易中的签名进行验证。

业务子交易中包含匿名私钥对应的签名的作用是,证明业务子交易是匿名公钥对应的用户账户授权发起的。

s602:第一节点使用所述组公钥对所述业务子交易中对应于组私钥的签名进行验证,以及,使用所述用户账户对应的匿名公钥对所述业务子交易中的对应于所述匿名私钥的签名进行验证,若验证皆通过,则对所述业务交易进行处理。

所述处理包括:通过所述第一管理方账户重新构建包含所述业务子交易的哈希值的业务交易。一方面业务数据涉及数据隐私,不能够共享给节点组之外,另一方面,在联盟链网络层面上,包含业务子交易的业务交易需要写入联盟链,通过上述处理,第一节点可以获取到业务子交易的明文,而其他节点只能获取到业务子交易的哈希值。同时,发起业务交易的用户账户信息也不会泄露给第一节点之外的其他节点。

此外,所述第一节点可以根据本地存储的匿名公钥与用户账户之间的对应关系,在判断出所述匿名公钥与所述用户账户之间具有对应关系之后,对所述业务交易进行上述处理。

s604:第一节点向所述联盟链网络广播处理后的业务交易。

s606:所述第一节点执行所述业务交易。

所述第一节点执行所述业务交易时,如果发现业务子交易是存证型交易,则会将业务子交易写入本地的私有链,如果发现业务子交易是执行型交易,则会执行业务子交易,并得到相应的执行子结果,将业务子交易与相应的执行子结果写入本地的私有链。

s608:所述联盟链网络中其他节点在未创建私有链的情况下执行所述业务交易。

此处,其他节点实际上“象征性”执行所述业务交易。

s610:所述联盟链网络中每个节点将所述业务交易写入本地的联盟链。

此外,所述第一节点可以在封装有所述业务子交易的私有链区块中写入指针对象,用于指向封装有处理后的业务交易的联盟链区块。

以下对加入节点组的方法进行描述。需要说明的是,可以参考前文对创建节点组的原理描述来理解后文,原理相通的地方不再赘述。

图7是本说明书实施例提供的一种加入节点组的方法的流程示意图,包括如下步骤:

s700:第二节点接收第二管理方账户构建的组加入交易。

所述组加入交易包括组加入子交易,所述组加入子交易包含使用所述组公钥对应的组私钥生成的签名;所述第二管理方账户是所述第二节点的管理方在所述联盟链网络中注册的账户。

第一节点在创建节点组之后,第二节点的管理方可以使第二节点也加入该节点组,与第一节点共享业务数据。第一节点的管理方可以在线下将组私钥提供给第二节点的管理方。

s702:所述第二节点使用所述组公钥对所述组加入子交易中的签名进行验证,若验证通过,则向所述联盟链网络广播所述组加入交易。

s704:所述第二节点执行所述组加入交易。

具体而言,第二节点在本地创建私有链,使用所述组公钥对第二节点标识进行加密,从存储有相同私有链的其他节点(如第一节点以及已经加入同一节点组的其他节点)同步私有链历史数据,以及将所述组加入子交易写入本地的私有链。

s706:存储有相同私有链的其他节点执行所述组加入交易。

具体而言,存储有相同私有链的其他节点使用所述组公钥对第二节点标识进行加密,将所述组加入子交易写入本地的私有链。

s708:所述联盟链网络中未存储有所述相同私有链的其他节点在未创建私有链的情况下执行所述组加入交易。

所述联盟链网络中未存储有所述相同私有链的其他节点是指为加入此节点组的其他节点,其使用所述组公钥对第二节点标识进行加密。

s710:所述联盟链网络中每个节点将所述组加入交易与对应的执行结果写入本地的联盟链。

所述组加入交易对应的执行结果可以包含加密后的第二节点标识。

进一步地,所述组加入交易还包括组标识,所述第二节点使用所述组标识对应的所述组公钥对所述组加入子交易中的签名进行验证。

此外,所述第二节点与存储有相同私有链的其他节点在封装有所述组加入子交易的私有链区块中写入指针对象,用于指向封装有所述组加入交易的联盟链区块。

图8是本说明书实施例提供的第二节点本地维护联盟链与私有链的示意图。如图8所示,第二节点在第一节点维护私有链已经有一段时间之后请求加入节点组,在此之前,第一节点维护的私有链存储有两个私有链区块,组加入子交易被打包进第三个私有链区块,同时,第三个私有链区块也与打包有组加入交易的某个联盟链区块有关联。

本方案中的节点组可以包括不止一个节点,同一节点组中各节点可以共享自身对接的业务数据。此处对节点组中包括不止一个节点的情况下如何交易进行描述。需要说明的是,可以参考前文对节点组中仅包括一个节点情况下如何交易的原理描述来理解后文,原理相通的地方不再赘述。

图9是本说明书实施例提供的一种基于节点组的匿名注册方法的流程示意图,包括如下步骤:

s900:第二节点接收对应的用户账户构建的匿名注册交易。

所述匿名注册交易包含匿名注册子交易,所述匿名注册子交易包含匿名公钥、使用所述组私钥生成的签名;其中,所述用户账户是所述第二节点对接的用户在联盟链网络中注册的账户,所述匿名公钥是所述第二节点对应的用户指定的。

s902:第二节点使用所述组公钥对所述匿名注册子交易中对应于所述组私钥的签名进行验证,若验证通过,则对所述匿名注册交易进行处理。

所述处理包括:通过所述第二管理方账户,重新构建包含所述匿名注册子交易的匿名注册交易。

s904:第二节点向所述联盟链网络广播处理后的匿名注册交易。

s906:第二节点与存储有相同私有链的其他节点执行所述匿名注册交易。

具体而言,第二节点与存储有相同私有链的其他节点将所述匿名注册子交易写入本地的私有链。

s908:联盟链网络中未存储有所述相同私有链的其他节点在未创建私有链的情况下,执行重新构建的所述匿名注册交易。

s910:联盟链网络中每个节点将所述匿名注册交易写入本地的联盟链。

此外,所述匿名注册子交易还可以包含使用所述匿名公钥对应的匿名私钥生成的签名,如此,所述第二节点可以使用所述匿名公钥对所述匿名注册子交易中对应于所述匿名私钥的签名进行验证。相应地,所述第二节点若对对应于所述匿名私钥的签名验证通过,则对所述匿名注册交易进行处理。

另外,所述第二节点可以在本地建立并存储所述匿名公钥与所述用户账户之间的对应关系。

图10是本说明书实施例提供的一种基于匿名注册方法的交易方法的流程示意图,包括:

s1000:第二节点接收对应的用户账户构建的业务交易。

所述业务交易包含业务子交易,所述业务子交易包含业务数据、使用所述组私钥生成的签名、使用所述匿名公钥对应的匿名私钥生成的签名。

s1002:第二节点使用组公钥对所述业务子交易中对应于所述组私钥的签名进行验证,以及,使用所述匿名公钥对所述业务子交易中的对应于所述匿名私钥的签名进行验证,若验证皆通过,则将所述业务子交易发送给同一节点组内的其他节点,并对所述业务交易进行处理。

由于节点组中不仅包括第二节点,还至少包括第一节点(还可能有更多节点),因此,第二节点需要在私有链网络层面上,将受理的业务交易中的业务子交易发送给同一节点组内的其他节点。

此外,第二节点还需要通过所述第二管理方账户重新构建包含所述业务子交易的哈希值的业务交易。如此,发起业务交易的用户账户信息也不会泄露给第一节点之外的其他节点。

此外,所述第二节点可以根据本地存储的匿名公钥与用户账户之间的对应关系,在判断出所述匿名公钥与所述用户账户之间具有对应关系之后,对所述业务交易进行上述处理。

s1004:第二节点向所述联盟链网络广播处理后的所述业务交易。

s1006:第二节点与存储有相同私有链的其他节点执行所述业务交易。

s1008:联盟链网络中未存储有所述相同私有链的其他节点在未创建私有链的情况下,执行处理后的所述业务交易。

s1010:联盟链网络中每个节点将处理后的所述业务交易写入本地的联盟链。

具体而言,如果业务子交易是存证型交易,则第二节点与存储有相同私有链的其他节点将所述业务子交易写入本地的私有链。如果业务子交易是执行型交易,则第二节点与存储有相同私有链的其他节点执行业务子交易,并且将业务子交易与相应的执行子结果写入本地的私有链。

进一步地,所述业务子交易还包括组标识,所述第二节点可以使用所述组标识对应的所述组公钥对所述业务子交易中的签名进行验证。

进一步地,所述第二节点与存储有相同私有链的其他节点在封装有所述业务子交易的私有链区块中写入指针对象,用于指向封装有处理后的业务交易的联盟链区块。

此外,针对存储有相同私有链的每个其他节点,该其他节点若确定接收到所述业务子交易,则向所述第二节点返回签名。如此,所述第二节点若确定接收到的其他节点的签名的数量满足预设的分布式容错条件,则对所述业务交易进行处理。

分布式容错条件可以是接收到的签名数量达到指定数量。例如,如果同一节点组内的节点数量不少于4个,则指定数量可以是2f+1,其中,f=(n-1)/3,n为该节点组内的节点数量。

此外,本说明书实施例还提供一种区块链系统,包括联盟链网络,所述联盟链网络包括多个节点;

第一节点,接收第一管理方账户构建的组创建交易;所述组创建交易包括组创建子交易,所述组创建子交易包含组公钥;所述第一管理方账户是所述第一节点的管理方在所述联盟链网络中注册的账户;所述组公钥是所述第一节点的管理方指定的;向所述联盟链网络广播所述组创建交易;执行所述组创建交易,包括:在本地创建私有链,将所述创建子交易写入本地的私有链,以及使用所述组公钥对第一节点标识进行加密;

所述第一节点之外的每个其他节点,在未创建私有链的情况下执行所述组创建交易,包括:使用所述组公钥对第一节点标识进行加密;

所述联盟链网络中每个节点,将所述组创建交易与对应的执行结果写入本地的联盟链;所述组创建交易对应的执行结果包含加密后的所述第一节点标识。

所述第一节点,接收对应的用户账户构建的匿名注册交易;所述匿名注册交易包含匿名注册子交易,所述匿名注册子交易包含匿名公钥、使用所述组公钥对应的组私钥生成的签名;其中,所述用户账户是所述第一节点对接的用户在联盟链网络中注册的账户,所述匿名公钥是所述第一节点对接的用户指定的;使用所述组公钥对所述匿名注册子交易中对应于所述组私钥的签名进行验证,若验证通过,则对所述匿名注册交易进行处理,包括:通过所述第一管理方账户,重新构建包含所述匿名注册子交易的匿名注册交易;向所述联盟链网络广播重新构建的匿名注册交易;执行所述匿名注册交易,包括:将所述匿名注册子交易写入本地的私有链;

所述第一节点之外的每个其他节点,在未创建私有链的情况下,执行重新构建的所述匿名注册交易;

所述联盟链网络中每个节点,将所述匿名注册交易写入本地的联盟链。

所述第一节点,接收对应的用户账户构建的业务交易;所述业务交易包含业务子交易,所述业务子交易包含业务数据、使用所述组私钥生成的签名、使用所述匿名公钥对应的匿名私钥生成的签名;使用所述组公钥对所述业务子交易中对应于组私钥的签名进行验证,以及,使用所述用户账户对应的匿名公钥对所述业务子交易中的对应于所述匿名私钥的签名进行验证,若验证皆通过,则对所述业务交易进行处理,包括:通过所述第一管理方账户重新构建包含所述业务子交易的哈希值的业务交易;向所述联盟链网络广播重新构建的业务交易;执行所述业务交易,包括:将所述业务子交易写入本地的私有链;

所述第一节点之外的其他节点,在未创建私有链的情况下执行重新构建的所述业务交易;

所述联盟链网络中每个节点,将所述业务交易写入本地的联盟链。

第二节点,接收第二管理方账户构建的组加入交易;所述组加入交易包括组加入子交易,所述组加入子交易包含使用所述组公钥对应的组私钥生成的签名;所述第二管理方账户是所述第二节点的管理方在所述联盟链网络中注册的账户;使用所述组公钥对所述组加入子交易中的签名进行验证,若验证通过,则向所述联盟链网络广播所述组加入交易;执行所述组加入交易,包括:在本地创建私有链,使用所述组公钥对第二节点标识进行加密,从存储有相同私有链的其他节点同步私有链历史数据,以及将所述组加入子交易写入本地的私有链;

存储有相同私有链的其他节点,执行所述组加入交易,包括:使用所述组公钥对第二节点标识进行加密,将所述组加入子交易写入本地的私有链;

所述联盟链网络中未存储有所述相同私有链的其他节点,在未创建私有链的情况下执行所述组加入交易,包括:使用所述组公钥对第二节点标识进行加密;

所述联盟链网络中每个节点,将所述组加入交易与对应的执行结果写入本地的联盟链;所述组加入交易对应的执行结果包含加密后的所述第二节点标识。

所述第二节点,接收对应的用户账户构建的匿名注册交易;所述匿名注册交易包含匿名注册子交易,所述匿名注册子交易包含匿名公钥、使用所述组私钥生成的签名;其中,所述用户账户是所述第二节点对接的用户在联盟链网络中注册的账户,所述匿名公钥是所述第二节点对应的用户指定的;使用所述组公钥对所述匿名注册子交易中对应于所述组私钥的签名进行验证,若验证通过,则对所述匿名注册交易进行处理,包括:通过所述第二管理方账户,重新构建包含所述匿名注册子交易的匿名注册交易;向所述联盟链网络广播重新构建的匿名注册交易;

所述第二节点与存储有相同私有链的其他节点,执行所述匿名注册交易,包括:将所述匿名注册子交易写入本地的私有链;

所述联盟链网络中未存储有所述相同私有链的其他节点,在未创建私有链的情况下,执行重新构建的所述匿名注册交易;

所述联盟链网络中每个节点,将所述匿名注册交易写入本地的联盟链。

所述第二节点,接收对应的用户账户构建的业务交易;所述业务交易包含业务子交易,所述业务子交易包含业务数据、使用所述组私钥生成的签名、使用所述匿名公钥对应的匿名私钥生成的签名;使用组公钥对所述业务子交易中对应于所述组私钥的签名进行验证,以及,使用所述匿名公钥对所述业务子交易中的对应于所述匿名私钥的签名进行验证,若验证皆通过,则将所述业务子交易发送给同一节点组内的其他节点,并对所述业务交易进行处理,包括:通过所述第二管理方账户重新构建包含所述业务子交易的哈希值的业务交易;向所述联盟链网络广播重新构建的业务交易;

所述第二节点与存储有相同私有链的其他节点,执行所述业务交易,包括:将所述业务子交易写入本地的私有链;

所述联盟链网络中未存储有所述相同私有链的其他节点,在未创建私有链的情况下执行重新构建的业务交易;

所述联盟链网络中每个节点,将重新构建的业务交易写入本地的联盟链。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现本说明书实施例中节点的功能。

图11示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1110、存储器1120、输入/输出接口1130、通信接口1140和总线1150。其中处理器1110、存储器1120、输入/输出接口1130和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1110可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1120可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1120可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1120中,并由处理器1110来调用执行。

输入/输出接口1130用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1140用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1150包括一通路,在设备的各个组件(例如处理器1110、存储器1120、输入/输出接口1130和通信接口1140)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1110、存储器1120、输入/输出接口1130、通信接口1140以及总线1150,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本说明书实施例中节点的功能。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务设备,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

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