一种联盟链共识方法及系统与流程

文档序号:12729060阅读:258来源:国知局
一种联盟链共识方法及系统与流程

本发明涉及数据处理技术领域,特别涉及一种联盟链共识方法及系统。



背景技术:

一般来说,当网络中多个主机通过异步通讯方式组成网络集群进行协作时,这种异步网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,取得共识。

具体到区块链网络上,共识问题又引入了新的不确定因素,即恶意节点的问题。恶意节点可能故意发送错误数据、虚假数据(统称为伪数据)甚至联合多个恶意节点发送相同的伪数据。一旦恶意节点超过总节点的某个阈值(例如50%),系统可能就会达成错误的共识,从而导致重大错误。

公有区块链一般采取POW共识算法,即工作量证明方案。该共识方案基本思路是每个需要共识的数据块(即区块)的共识达成需要附带一个工作量证明,该工作量证明通常是计算一个密码学上比较困难的问题,但是检验该答案的正确性却很简单。例如公有区块链节点上某节点A如果想对某个数据块b进行共识申请,它需要对b进行一系列密码学计算,最终得到一个结果h,它把(b,h)发送到区块链上。其他节点可能同时也会提交自己的(b,h)’,收到这些数据的节点只会认可计算难度最高的b,这样就达成了POW共识。POW共识产生了大量的计算浪费,每年消耗在比特币POW上的电费高达数千万美元。公有链采用POW的原因主要是参与节点进出没有监管,对于联盟链则不需要采用POW共识算法。

联盟链中可以采用轮流记账方案,即参与节点是N个,规定好从第一个节点开始以某个确定的预定次序依次提交区块数据,只要轮到的节点出的区块,其他节点在检验区块中数据的真实性后都进行共识确认。但这样的问题在于参与节点N的个数可能随时发生变化,并且每个节点的在线时间是不稳定的,如何在节点变化时动态调整记账次序是一个难题。



技术实现要素:

本发明的目的是提供一种联盟链共识系统及方法,能够对共识节点的数量和记账次序进行共识,可以在共识节点变化时动态调整记账次序。

为解决上述技术问题,本发明提供一种联盟链共识系统,包括:

共识节点管理合约模块,用于根据管理员发送的共识节点修改操作更新共识节点白名单;

共识规则智能合约模块,用于获取更新后的共识节点白名单中各共识节点对应的hash值,按照预定排序规则对所述hash值进行排序得到记账次序,根据所述记账次序确定当前区块记账节点;其中,hash值为将共识节点的公钥地址利用hash算法进行计算得到数值;

共识确认模块,用于在所述当前区块记账节点提交区块数据后对所述区块数据进行共识确认。

可选的,所述共识规则智能合约模块,包括:

当前区块记账节点确定单元,用于当前一个区块记账节点完成记账后,将所述前一个区块记账节点的记账次序加1确定当前区块记账节点;

判断单元,用于利用超时规则判断所述当前区块记账节点是否在预定时间内开始记账,若未开始,则将所述当前区块记账节点的记账次序加1确定新的当前区块记账节点。

可选的,所述共识规则智能合约模块,还包括:

共识规则修改单元,用于修改共识规则智能合约中的规则,并在达成共识后同步到联盟链中各个参与方;其中,所述规则包括所述超时规则和所述预定排序规则。

可选的,本方案还包括:

初始化模块,用于确定初始管理员和预定数量的共识节点。

可选的,所述共识节点管理合约模块,还包括:

管理员白名单维护单元,用于根据所述初始管理员发送的管理员修改操作更新管理员白名单。

可选的,本方案还包括:

同步节点白名单生成模块,用于生成并发布的具有网络连接及数据同步权限的同步节点白名单。

可选的,本方案还包括:

节点白名单配置模块,用于根据管理员对所述同步节点白名单以及所述共识节点白名单的选择操作,确定节点白名单配置文件;其中,所述节点白名单配置文件用于记录允许连接的网络通信、数据同步以及联盟链记账的节点。

可选的,所述共识确认模块具体为在所述当前区块记账节点提交区块数据后,根据更新后的共识节点白名单,利用动态PBFT共识算法对所述区块数据进行共识确认。

本发明还提供一种联盟链共识方法,包括:

根据管理员发送的共识节点修改操作更新共识节点白名单;

获取更新后的共识节点白名单中各共识节点对应的hash值;其中,hash值为将共识节点的公钥地址利用hash算法进行计算得到数值;

按照预定排序规则对所述hash值进行排序得到记账次序;

根据所述记账次序确定当前区块记账节点;

在所述当前区块记账节点提交区块数据后对所述区块数据进行共识确认。

可选的,在所述当前区块记账节点提交区块数据后对所述区块数据进行共识确认,包括:

在所述当前区块记账节点提交区块数据后,根据更新后的共识节点白名单,利用动态PBFT共识算法对所述区块数据进行共识确认。

本发明所提供的一种联盟链共识系统,包括:共识节点管理合约模块,根据管理员发送的共识节点修改操作更新共识节点白名单;共识规则智能合约模块,获取更新后的共识节点白名单中各共识节点对应的hash值,按照预定排序规则对hash值进行排序得到记账次序,根据记账次序确定当前区块记账节点;其中,hash值为将共识节点的公钥地址利用hash算法进行计算得到数值;共识确认模块,在当前区块记账节点提交区块数据后对区块数据进行共识确认。

可见,该系统对共识节点的数量和记账次序进行共识,可以在共识节点变化时动态调整记账次序,实现了系统的高灵活性和高可靠性;本发明还提供了一种联盟链共识方法,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的联盟链共识系统的结构框图;

图2为本发明实施例所提供的联盟链共识方法的流程图。

具体实施方式

本发明的核心是提供一种联盟链共识系统及方法,能够对共识节点的数量和记账次序进行共识,可以在共识节点变化时动态调整记账次序。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对本实施例中出现的名词进行说明:

区块链:分布式统一账本,由所有参与方共同决定记账内容,每个参与方都保存有全量数据,任何个体无法对数据进行篡改。

共识:区块链专有名词。区块链上不存在单一的记账中心,账本是由全网共同记录的,这就出现一个问题,即如何确定一个交易是否合法。确定某交易是否合法以及某节点推荐的一个打包区块是否被大家认可的过程叫做共识。只有通过共识的区块才会被全网认可。

联盟链:与公有链相对,是区块链的一种。特点是具有准入制度,只有获得批准的参与方才能加入。对应的,联盟链中会有监管方和普通参与方两种角色。

区块链交易:或简称交易,特指参与方发出的一段信息并使用自己的私钥对其进行数字签名后发送到区块链上的内容。通常交易包括支付交易,或者智能合约创建、调用交易。

智能合约:区块链上的一段程序代码,规定了合约相关人的权利与义务以及动作条款。合约相关人通过发送区块链交易来确认智能合约、支付合约可能需要的数字货币、调用智能合约规定的功能等等。

账户地址:区块链网络上的一个账户,通常是由某非对称密钥的公钥的某种变形的形式出现,只有持有该地址对应的私钥才能够获得操作该账户的权限。

智能合约地址:智能合约对应的虚拟账户,与普通账户地址不同,智能合约地址没有对应的操作私钥,它是由合约代码规定哪些账户地址可以有操作权限。

数字货币:区块链上的可支付、可累计、可分割合并的数字信息,用来在区块链上作为货币流通,它由前述账户地址或智能合约地址持有。法定数字货币:由政府央行发行的数字货币。

数字资产:区块链上可转移的数字信息,往往与现实世界的某种实物对应,它由前述账户地址或智能合约地址持有。

创世块:区块链中的第一块数据,往往记录基础的预定信息,例如管理账户地址和权限等。

出块:记账(同时提交区块内容和共识提议)。

出块人:预先约定好的记账节点。

区块高度:区块链上区块的序号。

round:一次出块周期内的不同交互阶段。

本实施例提供了参与记账的共识节点数量动态变化、共识节点在线时间不定、共识节点数据准确性无法得到保证前提下联盟链上记账共识的达成方案。具体请参考图1,图1为本发明实施例所提供的联盟链共识系统的结构框图;该系统可以包括:

共识节点管理合约模块100,用于根据管理员发送的共识节点修改操作更新共识节点白名单。

其中,作为联盟链需要保证监管方即管理员能有一定的权限对共识节点进行管理,例如增加新的共识节点和删除共识节点。共识节点管理合约模块100主要即实现管理员对共识节点的修改,其中,这里的共识节点修改操作可以包括删除共识节点操作,增加共识节点操作,暂停共识节点操作等。本实施例对此并不进行限定。并利用共识节点白名单来记录最新的共识节点。即引入监管方(本实施例中指管理员)对联盟链上共识节点的进出准入进行管理。这里的共识节点可以理解为在联盟链中具有记账功能的节点。

本实施例中的管理员发送的共识节点修改操作才能够修改共识节点白名单,且共识节点修改操作内容都可以设置到共识节点管理合约内。即该共识节点管理合约对共识节点白名单进行相应的规定。采用合约的方式来实现共识节点的管理,可以保证安全性和一致性。管理员的修改权限可以时增加,删除,暂停共识节点。该共识节点管理合约可以在创世块中内置,维护共识节点白名单。只有在共识节点白名单中的账户签名打包的区块才是合法区块。

进一步,该共识节点管理合约还可以规定普通权限即除了管理员之外的其他节点的验证功能。例如可以验证某一个节点是否是共识节点,获取共识节点白名单(本实施例中的共识节点白名单可以通过列表的形式进行展示),判断共识节点修改操作发起地址是否是管理员对应的地址等。即可选的,共识节点管理合约模块还可以包括权限验证单元用于验证上述功能。通过这些验证可以使联盟链的参与方可以随时对联盟链中发布的数据进行验证,增强系统的可靠性。

具体的,由于实际业务中分发起和生效两步操作,对于添加共识节点,需要首先添加再启动,对于删除共识节点需要首先暂停再删除。

其中,增加共识节点的过程可以是:一个联盟链中的普通节点安装生成后如果希望成为共识节点,首先需要将自己的账户地址提交给管理员,管理员验证通过后发起共识节点增加操作,并在添加生效完成后即共识节点白名单更新后,该普通节点再和其他节点共同修改本地共识节点白名单,等待区块数据同步完成后即可等待参与记账。

共识规则智能合约模块200,用于获取更新后的共识节点白名单中各共识节点对应的hash值,按照预定排序规则对hash值进行排序得到记账次序,根据记账次序确定当前区块记账节点;其中,hash值为将共识节点的公钥地址利用hash算法进行计算得到数值。

具体的,共识规则智能合约模块200主要为了实现动态的更新记账次序,确定当前区块记账节点。即利用共识规则智能合约对共识节点的数量和记账次序进行共识。该共识规则智能合约由管理员(即监管方)设置。本实施例并不限定具体共识规则智能合约的内容。管理员可以根据实际联盟链的需求进行设置,同样可以根据实际情况对已有的规则进行适应性修改等,例如该共识规则智能合约详细规定了如下信息:

1、有记账权限的节点列表即最新的共识节点白名单。

2、最长记账等待时间即当前区块记账节点必须在该最长记账等待时间内进行记账行为。

3、当前区块记账节点的确定方式即本实施例中指的利用hash值进行排序的方式确定当前区块记账节点。

4、其他与共识规则有关的信息例如一些修改规则的要求等。

其中,本实施例中获取更新后的共识节点白名单中各共识节点对应的hash值,按照预定排序规则对hash值进行排序得到记账次序。可以是首先确定更新后的共识节点白名单中增加或者删除的共识节点,然后计算其对应的hash值,若增加共识节点,则在记账次序中按照预定排序规则将增加的共识节点对应的hash值加入到对应位置,若删除共识节点,则在记账次序中将删除对应的共识节点,并依次调整其他共识节点对应的记账次序。也可以是每次首先确定更新后的共识节点白名单中增加或者删除的共识节点,然后计算其对应的hash值,在调取其他共识节点的hash值,最后按照预定排序规则对hash值进行排序得到记账次序。当然也可以是计算更新后的共识节点白名单中各共识节点对应的hash值,按照预定排序规则对hash值进行排序得到记账次序。本实施例对此并不进行限定。只要可以根据hash值得到更新后的共识节点白名单中各共识节点对应的记账次序即可。

本实施例中的预定排序规则可以是按照hash值从大到小的顺序,或者是hash值从小到大的顺序等。本实施例并不对预定排序规则进行限定。只要该预定排序规则能够被认可,每次都按照该预定排序规则进行记账次序的确定即可。在得到记账次序后,就按照该顺序轮流记账,当前一个区块记账节点完成记账后,后一个共识节点就为当前区块记账节点,进行记账。

进一步,本实施例为了防止出现一个故障的共识节点长时间不能执行记账行为,从而影响整体效率。优选的,共识规则智能合约模块可以包括:

当前区块记账节点确定单元,用于当前一个区块记账节点完成记账后,将前一个区块记账节点的记账次序加1确定当前区块记账节点;

判断单元,用于利用超时规则判断当前区块记账节点是否在预定时间内开始记账,若未开始,则将当前区块记账节点的记账次序加1确定新的当前区块记账节点。

具体的,超时规则即设定一个预定时间,该预定时间即为最长等待记账时间。若当前区块记账节点在该预定时间内没有执行记账行为,则按照记账次序顺延到下一个共识节点,将其作为当前记账节点。

进一步,为了保证共识规则智能合约中的规则中各个规则可以顺应实际应用的需求。本实施例中共识规则智能合约模块还可以包括:

共识规则修改单元,用于修改共识规则智能合约中的规则,并在达成共识后同步到联盟链中各个参与方;其中,规则包括超时规则和预定排序规则。

其中,本实施例并不对共识规则智能合约中的规则的具体内容进行限定。管理员可以对该共识规则智能合约进行修改,以满足实际应用的需求。且由于公式规则对于该系统的正常运行至关重要,因此对其的修改也必须要得到共识才可以保证修改的可靠性。即共识规则修改本身也应通过联盟链的共识。

具体的,当监管方即管理员需要修改共识规则智能合约中的规则时,监管方首先调用该共识规则智能合约进行规则修改,该动作需要在之前共识规则下达成共识。达成共识后,每个参与方就会同步到这条规则变更,新的共识规则就做到了全网确认。通过这种方式,联盟链可以随时增删节点、修改共识规则,实现了高灵活性和高可靠性。实现共识节点的身份,能否提交共识,权限功能等功能管理。

共识确认模块300,用于在当前区块记账节点提交区块数据后对区块数据进行共识确认。

其中,目前常用的共识确认方式是利用PBFT共识算法对区块数据进行共识确认。但是该PBFT共识算法不能够动态的识别当前新的共识节点的记账次序等。即不能够动态的获取共识节点白名单。为了实现动态的PBFT共识算法实时读取共识节点列表,以解决传统的中心化方式,无法保证安全性和一致性的问题。优选的,共识确认模块具体为在当前区块记账节点提交区块数据后,根据更新后的共识节点白名单,利用动态PBFT共识算法对区块数据进行共识确认。即动态PBFT共识算法实现了(n-1)/3n的错误容忍度,n是节点总数量。

具体的,动态PBFT共识算法的实现过程可以如下:

1、根据上一个高度块的出块人公钥、当前的高度、当前的round这个三个信息来决定当前round的出块人。非出块人进入pre-prepare阶段。出块人打包交易产生新的block并广播pre-prepare消息(包含block hash以及出块人用自己私钥对block hash的签名),然后直接进入prepare阶段。

2、pre-prepare阶段。非出块人接收出块人广播的pre-prepare消息,验证其中的block之后,广播prepare消息(包含出块人对block的签名,以及该节点对签名的签名)。然后进入prepare阶段。

3、prepare阶段。收集到2/3以上节点发出的针对某个block的prepare消息后,广播commit消息(包含出块人对block的签名,以及该节点对签名的签名)。并进入commit阶段。

4、commit阶段。收集到2/3以上节点发出的针对某个block的commit消息后,将该block加入区块链,进入下一个高度。

5、以上三个阶段发生任何问题,包括等待超时,签名验证失败等。仍然继续执行完上述流程,只不过投票给NULL。如果最终2/3以上节点都投票给NULL,则进入下一个round。

6、如果接收到大于当前高度或者当前round的消息,都存到消息日志中。如果收集到2/3以上节点的当前高度未来round的某个阶段的消息,则直接跳到该round的该阶段继续等待接收消息。

7、如果期间同步了新的block,则直接进入最新的高度,从round 0开始。

基于上述技术方案,本发明实施例提的联盟链共识系统,该系统对共识节点的数量和记账次序进行共识,可以在共识节点变化时动态调整记账次序,实现了系统的高灵活性和高可靠性;且利用动态的PBFT共识算法实时读取共识节点列表,以解决传统的中心化方式,无法保证安全性和一致性的问题。

基于上述实施例,该系统还包括:

初始化模块,用于确定初始管理员和预定数量的共识节点。

具体的,在联盟链生成创世块阶段,需要指定初始管理员即写入初始管理员地址(外部账号地址),并指定预定数量的共识节点(例如至少3个共识节点),本实施例并不对预定数量的数值进行限定。

初始化完成后,联盟链正常启动后,会将合约写入到创世块中。联盟链一旦运行将无法修改创世块内容,初始管理员地址也无法变更,所以需要非常妥善地保存初始管理员私钥。

基于上述实施例,为了提高管理员的工作效率,减轻初始管理员的任务量,共识节点管理合约模块还可以包括:

管理员白名单维护单元,用于根据初始管理员发送的管理员修改操作更新管理员白名单。

具体的,联盟链网络在创建时,首先传入一个账户地址,作为该系统的初始管理员,该初始管理员可以对管理员白名单进行修改。只有在管理员白名单中的账户才可以进行共识节点的增删操作。本实施例对此并不进行限定。例如该初始管理员以后可以添加更多的管理员,但不能删除管理员。共识节点管理合约模块维护着共识节点白名单和管理员白名单。

基于上述任意实施例,该系统还可以进行网络权限的管理,由于公有链没有节点准入机制,任何节点都可以从公网上同步全部数据,在获得一定的记账权力后也都可以签名出块。本实施例中的网络交易由共识节点排序并打包成块,再广播至网络其他节点,收集到一定的票数即被确认为合法区块,只读(普通)节点虽然不出区块,但是其可以同步到联盟链所有的原始数据,所以共识和只读节点都需要严格的准入管理。即本实施例中该系统还可以包括:

同步节点白名单生成模块,用于生成并发布的具有网络连接及数据同步权限的同步节点白名单。

具体的,同步节点白白名单由管理机构即管理员生成并发布。同步节白点名单中可以包括节点公钥、IP地址、端口等节点信息,以便参与方对节点进行识别。

基于上述实施例,由于管理员需求不同,其需要的同步节点白名单以及共识节点白名单也不相同;为了便于管理员设置自身需要的节点,该系统还可以包括:

节点白名单配置模块,用于根据管理员对所述同步节点白名单以及共识节点白名单的选择操作,确定节点白名单配置文件;其中,节点白名单配置文件用于记录允许连接的网络通信、数据同步以及联盟链记账的节点。

具体的,每个节点本地都有一份节点白名单配置文件,记录允许连接的网络通信和数据同步的节点,包括其公钥、IP地址、端口等信息,不在该节点白名单配置文件里的节点通信请求会被拒绝。各节点运维人员进行手工维护,选择若干自己希望连接的其他节点并可以为自己配置若干个只读节点,承担数据分析等工作。从而实现网络层节点管理,即网络连接权限的管理。

基于上述技术方案,本发明实施例提的联盟链共识系统,该系统对共识节点的数量和记账次序进行共识,可以在共识节点变化时动态调整记账次序,实现了系统的高灵活性和高可靠性;且利用动态的PBFT共识算法实时读取共识节点列表,以解决传统的中心化方式,无法保证安全性和一致性的问题,进一步从网络层面和身份层面对参与方节点进行管理,提高管理全面性和管理效率。

下面对本发明实施例提供的联盟链共识方法进行介绍,下文描述的联盟链共识方法与上文描述的联盟链共识系统可相互对应参照。

请参考图2,图2为本发明实施例所提供的联盟链共识方法的流程图;该方法可以包括:

S100、根据管理员发送的共识节点修改操作更新共识节点白名单;

S110、获取更新后的共识节点白名单中各共识节点对应的hash值;其中,hash值为将共识节点的公钥地址利用hash算法进行计算得到数值;

S120、按照预定排序规则对hash值进行排序得到记账次序;

S130、根据记账次序确定当前区块记账节点;

S140、在当前区块记账节点提交区块数据后对区块数据进行共识确认。

基于上述实施例,在当前区块记账节点提交区块数据后对区块数据进行共识确认可以包括:

在当前区块记账节点提交区块数据后,根据更新后的共识节点白名单,利用动态PBFT共识算法对区块数据进行共识确认。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种联盟链共识方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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