首页 / 专利库 / 银行与财务事项 / 智能合约 / 一种基于AP-PBFT算法的区块链信用机制

一种基于AP-PBFT算法链信用机制

阅读:468发布:2020-05-08

专利汇可以提供一种基于AP-PBFT算法链信用机制专利检索,专利查询,专利分析的服务。并且一种基于AP-PBFT 算法 的 区 块 链 信用机制,包括如下步骤,步骤S1、在区块链网络中部署选取 节点 的 智能合约 ,符合智能合约参选规则的节点成为候选节点,将所有候选节点进行等级制排名,根据排名选出若干个节点加入区块链网络进行分布式记账;步骤S2、成为记账节点后,记账节点之间通过PBFT共识算法产生区块,根据记账节点对网络的贡献轮流成为视图中的主节点,主节点将需要共识的内容打包封装并在网络中广播,其他副本节点收到广播内容后进行共识,经历了REQUEST,PRE-PREPARE、PREPARE和COMMIT阶段后,网络中达成共识的节点数目大于2/3,产生新的区块。步骤S3、对主节点进行分析,并予以奖惩。该机制大大减少拜占庭问题出现的概率,增加出块效率,并提升了安全性,同时,利用超时重发机制,增加消息的 送达 率,提高网络共识效率。,下面是一种基于AP-PBFT算法链信用机制专利的具体信息内容。

1.一种基于AP-PBFT算法链信用机制,其特征在于,包括如下步骤,步骤S1、在区块链网络中部署选取节点智能合约,符合智能合约参选规则的节点成为候选节点,将所有候选节点进行等级制排名,根据排名选出若干个节点加入区块链网络进行分布式记账;
步骤S2、成为记账节点后,记账节点之间通过PBFT共识算法产生区块,根据记账节点对网络的贡献轮流成为视图中的主节点,主节点将需要共识的内容打包封装并在网络中广播,其他副本节点收到广播内容后进行共识,经历了REQUEST,PRE-PREPARE、PREPARE和COMMIT阶段后,网络中达成共识的节点数目大于2/3,产生新的区块。
步骤S3、对主节点进行分析,并予以奖惩。
2.根据权利要求1所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述步骤S1中,智能合约的节点通过率设置为大于2/3,智能合约采用信用积分制,将所有被选举节点的初始积分设为0,当被选举节点进行第一次共识时,不作为节点或恶意节点的积分会被降低,积极参与共识的节点,积分会增加。预设一个时间间隔TA,当TA时间到达时,根据积分情况将所有被选举的节点进行排名,积分较低的节点会被重新选举出的节点替换,被替换的节点将被收回记账的权利。
3.根据权利要求1所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述步骤S2中,客户端对需要共识的内容进行签名,并将共识的内容发送至区块链网络中,区块链网络中任意一个节点接收所需共识的内容,并判断该次交易是否满足转发条件,若满足,则将该交易缓存在共识队列,在新一轮共识之前,初始化区块链系统,从共识队列中取出优先级最高的交易,从而实现动态选举;对被选举出的节点用数字进行编号,节点集合为G{0,
1,2,3,4,……},G中最大能容忍的恶意节点数为n,根据PBFT机制集合大小应大于3n+1;则令|G|=3n+1。N为集合G中的节点数;每次重新选举后,节点会进行随机重新编号;每次共识过程前选取出议长节点p,则有p=(h+v)mod|R|;
其中,h为该区块的高度,v为视图编号,议长节点p负责整个共识的过程。
4.根据权利要求3所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述初始化区块链系统为创建共识对象,共识对象包括将要生成的区块链的高度、时间戳、区块链的哈希头部和打包的交易集合。
5.根据权利要求3所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述转发条件为判断该次交易的签名是否正确,检查该节点是否在之前有收到过这笔交易的输入,并确保该交易的发起客户有足够的余额支付此次交易产生的费用
6.根据权利要求1所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述步骤S2中,打包封装的消息格式为σ;
其中,Message为该消息格式的消息记号,v为视图编号,blockHeight为区块高度,TXs为参与共识的交易集合,nounce为交易集合的随机数,nounce随着交易次数的增长而增长。
7.根据权利要求1所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,主节点完成封装后进行签名,向全网进行广播,共识网络中每个副节点接受到消息记号后需要先进行判断,首先,判断blockHeight即区块链高度是否在规定的高度范围内;其次,判断该消息记录的签名是否正确,并且判断该消息视图与该副本节点的视图是否是同一个视图,最后,同样也需要判断该副本节点在此之前是否没有收到过该消息记号;当副本节点判断消息符合标准时,该节点进入PREPARE阶段,在该阶段中,会封装PREPARE消息并进行签名σ;其中,Prepare为prepare阶段的消息记号;v为视图编号,blockHeigh为区块高度,hash(TXs)为交易集合的哈希值,σ为该消息的签名;封装消息之后Prepare消息记号会向共识网络进行信息广播;进入prepare阶段副本节点同样需要先对该消息进行判断:首先对blockHeight进行判断,判断区块链高度是否在规定的高度范围之内;其次,确认消息签名的正确性,该消息视图是否与副本所在视图为同一视图;最后,确认该副本节点在此之前没有接受过此Prepare消息记号;满足上述的三个条件后,进入commit阶段,网络中的副本节点会发出COMMIT消息;COMMIT的消息格式为:σ;其中,COMMIT为该消息阶段的COMMIT阶段标志;v为视图编号,blockHeight为区块链区块高度,hash(TXs)为交易集合的hash值,σ为该消息的签名;副本节点在收到该COMMIT消息之后仍需进行判断;首先,判断该消息的区块高度blockHeight是否在规定的区块高度范围内;其次,判断消息签名是否正确,该消息的消息视图是否与该副本节点的视图一致;最后,判断,该副本节点在此之前没有收到过COMMIT消息;在符合上述的三个条件后,通过判断条件的COMMIT消息加入COMMIT消息队列,当消息队列中的通过判断的COMMIT消息数量达到2f+1个时,该COMMIT消息最终与共识网络达成一致。
8.根据权利要求1所述的一种基于AP-PBFT算法的区块链信用机制,其特征在于,所述步骤S3中,若主节点达成共识,则对达成共识的主节点进行奖励;若主节点不作为甚至作恶时,则不能产生区块,对不作为甚至作恶节点进行废除。

说明书全文

一种基于AP-PBFT算法链信用机制

技术领域

[0001] 本发明属于区块链技术领域,具体涉及一种基于AP-PBFT算法的区块链信用机制。

背景技术

[0002] 近些年,区块链技术在许多领域都是研究的热点,尤其是互联网金融领域更是将区块链技术广泛深刻地应用。一切涉及到中心化账本技术的领域都有可能存在区块链的应用前景,可以说区块链是一种既有效率又值得信任的分布式账本技术。去中心化、不可篡改以及具有较高的安全性是区块链的显著特点。
[0003] 区块链作为一本记录所有交易的分布式公开账簿,区块链网络中的每一个参与者都把其看作是一本最具权威的记录。既然作为公开账本,那么其上的所有历史数据都不可被篡改,只允许在其后继续添加账本数据,并且每个区块链网络中的节点都有权利向账本中继续写入数据。共识机制是用来选出写入账本数据的一种方法,这一机制确保了所有参与节点的平等,并按某种秩序达成一致意见。拜占庭将军问题是区块链各种共识算法必须要考虑的一个问题。简述该问题:一群将军想要进攻防御能极大的拜占庭,想要攻下的必要条件是所有将军必须达成共识,行动一致,并且还要保证行动的正确性。
[0004] 拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低至多项式级,使得拜占庭容错算法在实际应用中变得具有可行性。PBFT是一种状态机副本复制算法,每个状态机都保存了服务的状态,同时实现了服务的操作。用R表示所有副本所组成的集合,0至|R|-1中的整数表示每一个副本。所有的副本在一个被称为视图的轮换过程中运作。在每一个视图中,一个副本作为主节点,其他副本作为备份。

发明内容

[0005] 本发明所要解决的技术问题是克服现有技术的不足,提供一种基于AP-PBFT算法的区块链信用机制,可以让PBFT算法网络节点动态化,并对作恶节点设置一套惩戒机制。
[0006] 本发明提供一种基于AP-PBFT算法的区块链信用机制,包括如下步骤,[0007] 步骤S1、在区块链网络中部署选取节点的智能合约,符合智能合约参选规则的节点成为候选节点,将所有候选节点进行等级制排名,根据排名选出若干个节点加入区块链网络进行分布式记账;
[0008] 步骤S2、成为记账节点后,记账节点之间通过PBFT共识算法产生区块,根据记账节点对网络的贡献轮流成为视图中的主节点,主节点将需要共识的内容打包封装并在网络中广播,其他副本节点收到广播内容后进行共识,经历了REQUEST,PRE-PREPARE、PREPARE和COMMIT阶段后,网络中达成共识的节点数目大于2/3,产生新的区块。
[0009] 步骤S3、对主节点进行分析,并予以奖惩。
[0010] 作为本发明的进一步技术方案,步骤S1中,智能合约的节点通过率设置为大于2/3,智能合约采用信用积分制,将所有被选举节点的初始积分设为0,当被选举节点进行第一次共识时,不作为节点或恶意节点的积分会被降低,积极参与共识的节点,积分会增加。预设一个时间间隔TA,当TA时间到达时,根据积分情况将所有被选举的节点进行排名,积分较低的节点会被重新选举出的节点替换,被替换的节点将被收回记账的权利。
[0011] 进一步的,步骤S2中,客户端对需要共识的内容进行签名,并将共识的内容发送至区块链网络中,区块链网络中任意一个节点接收所需共识的内容,并判断该次交易是否满足转发条件,若满足,则将该交易缓存在共识队列,在新一轮共识之前,初始化区块链系统,从共识队列中取出优先级最高的交易,从而实现动态选举;对被选举出的节点用数字进行编号,节点集合为G{0,1,2,3,4,……},G中最大能容忍的恶意节点数为n,根据PBFT机制集合大小应大于3n+1;则令|G|=3n+1。N为集合G中的节点数;每次重新选举后,节点会进行随机重新编号;每次共识过程前选取出议长节点p,则有p=(h+v)mod|R|;
[0012] 其中,h为该区块的高度,v为视图编号,议长节点p负责整个共识的过程。
[0013] 更进一步的,初始化区块链系统为创建共识对象,共识对象包括将要生成的区块链的高度、时间戳、区块链的哈希头部和打包的交易集合。
[0014] 更进一步的,转发条件为判断该次交易的签名是否正确,检查该节点是否在之前有收到过这笔交易的输入,并确保该交易的发起客户有足够的余额支付此次交易产生的费用
[0015] 进一步的,步骤S2中,打包封装的消息格式为σ;其中,Message为该消息格式的消息记号,v为视图编号,blockHeight为区块高度,TXs为参与共识的交易集合,nounce为交易集合的随机数,nounce随着交易次数的增长而增长。
[0016] 进一步的,主节点完成封装后进行签名,向全网进行广播,共识网络中每个副节点接受到消息记号后需要先进行判断,首先,判断blockHeight即区块链高度是否在规定的高度范围内;其次,判断该消息记录的签名是否正确,并且判断该消息视图与该副本节点的视图是否是同一个视图,最后,同样也需要判断该副本节点在此之前是否没有收到过该消息记号;当副本节点判断消息符合标准时,该节点进入PREPARE阶段,在该阶段中,会封装PREPARE消息并进行签名σ;其中,Prepare为prepare阶段的消息记号;v为视图编号,blockHeigh为区块高度,hash(TXs)为交易集合的哈希值,σ为该消息的签名;封装消息之后Prepare消息记号会向共识网络进行信息广播;进入prepare阶段副本节点同样需要先对该消息进行判断:首先对blockHeight进行判断,判断区块链高度是否在规定的高度范围之内;其次,确认消息签名的正确性,该消息视图是否与副本所在视图为同一视图;最后,确认该副本节点在此之前没有接受过此Prepare消息记号;满足上述的三个条件后,进入commit阶段,网络中的副本节点会发出COMMIT消息;COMMIT的消息格式为:σ;其中,COMMIT为该消息阶段的COMMIT阶段标志;v为视图编号,blockHeight为区块链区块高度,hash(TXs)为交易集合的hash值,σ为该消息的签名;副本节点在收到该COMMIT消息之后仍需进行判断;首先,判断该消息的区块高度blockHeight是否在规定的区块高度范围内;其次,判断消息签名是否正确,该消息的消息视图是否与该副本节点的视图一致;最后,判断,该副本节点在此之前没有收到过COMMIT消息;在符合上述的三个条件后,通过判断条件的COMMIT消息加入COMMIT消息队列,当消息队列中的通过判断的COMMIT消息数量达到2f+1个时,该COMMIT消息最终与共识网络达成一致。
[0017] 进一步的,步骤S3中,若主节点达成共识,则对达成共识的主节点进行奖励;若主节点不作为甚至作恶时,则不能产生区块,对不作为甚至作恶节点进行废除。
[0018] 本发明的有益效果为:
[0019] 1.该区块链信用机制使投票过程更加透明,从共识网络中取出记账节点,通过AP-PBFT算法进行共识,采用积分机制选取节点,可以降低不作为节点和作恶节点的积分,收回其记账权力,并给予惩罚。
[0020] 2.网络中的共识节点进行共识需经历REQUEST,PRE-PREPARE、PREPARE和COMMIT阶段,从而大大减少拜占庭问题出现的概率,增加出块效率,并提升了安全性。
[0021] 3.在共识网络中利用超时重发机制,增加消息的送达率,提高网络共识效率。附图说明
[0022] 图1为本发明的节点选举过程示意图;
[0023] 图2为本发明的主节点进行全网广播示意图;
[0024] 图3为本发明的PBFT视图切换过程示意图。
[0025] 图4为本发明的AP-PBFT视图切换过程示意图。

具体实施方式

[0026] 本实施例提供一种基于AP-PBFT算法的区块链信用机制,包括如下步骤,[0027] 步骤S1、在区块链网络中部署选取节点的智能合约,符合智能合约参选规则的节点成为候选节点,将所有候选节点进行等级制排名,根据排名选出若干个节点加入区块链网络进行分布式记账;
[0028] 步骤S2、成为记账节点后,记账节点之间通过PBFT共识算法产生区块,根据记账节点对网络的贡献轮流成为视图中的主节点,主节点将需要共识的内容打包封装并在网络中广播,其他副本节点收到广播内容后进行共识,经历了REQUEST,PRE-PREPARE、PREPARE和COMMIT阶段后,网络中达成共识的节点数目大于2/3,产生新的区块。
[0029] 步骤S3、对主节点进行分析,并予以奖惩。
[0030] 该机制的实现流程分为三个步骤:记账节点选举、共识流程和视图切换流程。
[0031] 记账节点选举的过程如下:
[0032] 首先需要在区块链网络中部署选取节点的智能合约,该智能合约一旦编码到程序中也具有不可篡改性。网络中的节点参选候选节点,在智能合约中设定好参选规则,符合条件后成为候选节点。考虑到拜占庭节点的存在,因此节点的通过率设置为大于2/3,避免拜占庭节点作恶。
[0033] 在区块链网络中,任何节点都可以参与选举。采用信用积分制,所有被选举的节点初始积分为0。当被选举的节点进行第一次共识时,不作为节点或者是恶意节点的积分会被降低,对网络中积极参与共识的节点,积分会增加。定义一个时间间隔TA,当TA时间到达时,所有被选举的节点的积分情况会进行排名,积分较低的节点会被重新选举出的节点替换。被替换的节点将被收回记账的权利。
[0034] 引入惩罚机制,可以大大提升区块链网络的安全性,因为节点作恶时需要考虑到后续的结果。如图1,展示了节点选举的过程,节点通过率设置为大于2/3,此轮通过节点数为5个。图1中,每个节点中横线以上的数字表示节点编号,横线以下的数字表示该节点的积分。
[0035] 共识流程的具体方法为:
[0036] 客户首先要对需要共识的内容进行签名,并将共识的内容发送至区块链网络中。区块链网络中的任意一个节点收到需要共识的内容后,不会立即将需要共识的内容转发给其他节点,而是需要对共识内容进行判断,判断此次的交易的所有签名是否正确,有最基础的安全保障;检查该节点是否在之前没有收到过这笔交易的输入;确保该交易的发起客户有足够的余额去支付此次交易产生的费用。只有同时满足上述三个条件,该节点才会将这次交易转发给其他的节点。
[0037] 满足上述的三个条件后,该交易进入缓存共识队列。在进行新一轮共识之前,首先需要对区块链系统进行初始化,包括以下步骤:创建共识对象,包括将要生成的区块链的高度,时间戳,区块链的哈希头部,以及打包的交易集合。
[0038] 缓存队列中的所有交易存在优先级,每次从队列中取出优先级最高的交易,从而实现动态选举。
[0039] 被选举出来的节点用数字进行编号1,2,3,4,……,被选举出来的代表节点集合G{0,1,2,3,4,……},G中最大能容忍的恶意节点数为n,根据PBFT机制集合大小应大于3n+1。一般令|G|=3n+1。N表示集合G中的节点数。每次重新选举后,节点会进行随机重新编号。每次共识过程前选取出议长节点p,满足p=(h+v)mod|R|
[0040] h表示该区块的高度,v表示视图编号。议长节点p负责整个共识的过程。
[0041] 节点封装签名的消息格式通常定义为σ。其中Message表示此消息格式的消息记号,v表示视图编号,blockHeight表示区块高度,TXs是参与共识的交易集合,nounce表示交易集合的随机数。nounce随着交易次数的增长而增长。
[0042] 主节点将完成上述格式封装后,进行签名,并向全网进行广播。网络中的每个副本节点在接受到消息记号后同样也需要先进行判断,只有满足下述条件的消息记号才会被副本节点所接受:首先需要判断blockHeight即区块链高度是否在规定的高度范围内;其次,判断该消息记录的签名是否正确,并且判断该消息视图与该副本节点的视图是否是同一个视图。最后,同样也需要判断该副本节点在此之前是否没有收到过该消息记号。主节点向副节点广播过程如图2所示。
[0043] 当副本节点判断消息记号符合标准时,该节点进入PREPARE阶段。在该阶段中,会封装PREPARE消息并进行签名σ。其中Prepare表示prepare阶段的消息记号。v表示视图编号,blockHeight表示区块高度,hash(TXs)表示交易集合的哈希值,σ是该消息的签名。封装消息之后Prepare消息记号会向共识网络进行信息广播。进入prepare阶段副本节点同样需要先对该消息进行判断:首先对blockHeight进行判断,判断区块链高度是否在规定的高度范围之内;其次,确认消息签名的正确性,该消息视图是否与副本所在视图为同一视图;最后,确认该副本节点在此之前没有接受过此Prepare消息记号。
[0044] 满足上述的三个条件后,进入commit阶段,网络中的副本节点会发出COMMIT消息。COMMIT的消息格式为:σ。其中COMMIT表示该消息阶段的COMMIT阶段标志。v表示视图编号,blockHeight表示区块链区块高度,hash(TXs)表示交易集合的hash值,σ是该消息的签名。副本节点在收到该COMMIT消息之后仍需进行判断。首先,判断该消息的区块高度blockHeight是否在规定的区块高度范围内;其次,判断消息签名是否正确,该消息的消息视图是否与该副本节点的视图一致;最后,判断,该副本节点在此之前没有收到过COMMIT消息。
[0045] 在符合上述的三个条件后,通过判断条件的COMMIT消息加入COMMIT消息队列,当消息队列中的通过判断的COMMIT消息数量达到2f+1个时,该COMMIT消息最终与共识网络达成一致。
[0046] 完成上述的Message,Prepare,Commit阶段后,此次共识过程结束。如果在此次共识过程结束后,主节点未在规定时间内完成共识流程,则可认为共识节点不作为甚至作恶,会进行视图切换,进而主节点切换,最终副本节点进入下一轮共识。
[0047] 视图切换流程的具体过程如下:
[0048] 视图切换保证了区块链网络中主节点失效的情况下,仍然保证了区块链系统正常运作,确保了系统的活性。当主节点在规定的时间内没有响应,共识网络就会进行视图切换,避免让副本节点一直无限的等待下去。
[0049] 如图3所示,视图切换过程分为五步,:
[0050] 1.Leader:从区块链网络中的所有节点中选取了一个主节点,新的区块由主节点负责产生;
[0051] 2.Pre-prepare:在pre-prepare阶段中,每个节点都会把客户端发来的交易进行全网广播。主节点0将新的交易进行排序后存入列表,并进行全网广播,如上图所示扩散到节点1,节点2以及节点3;
[0052] 3.Prepare:每个节点在收到交易列表后,会根据排序先对这些交易进行模拟。在所有交易执行完成后,基于交易结果会计算新的区块的哈希摘要,随后进行全网广播。如上图所示,图中,节点1向节点0,节点2,节点3进行广播,节点2向节点0,节点1,节点3进行广播,以此类推;
[0053] 4.Commit:如果一个节点收到2f个其他节点发来的摘要都与自己的相等,这个节点就会像全网进行广播,发出一条commit消息;
[0054] 5.Reply:如果一个节点收到2f+1条commit消息,即可提交新区块。并且,这个节点交易到本地的区块链和状态数据库也一并提交。
[0055] 在AP-PBFT区块链算法中,使用计时器的超时机制触发视图变更事件。在引用超时机制的区块链网络中,主节点失效后,系统仍然保证活性。一旦超时,视图变更将被及时触发。在副本节点收到请求时,会检查超时计时器是否在运行,如果计时器不在运行,由副本节点激发计时器运行。如果计时器超时,将会把视图变更的消息进行全网广播。
[0056] 新的VIEW-CHANGE消息格式为σ。如图4所示,以下围绕PBFT的视图切换流程进行分步阐述:
[0057] 1.如果网络中的多数节点处于不活跃的状态,则进入下一轮共识;
[0058] 2.副本节点创建VIEW-CHANGE消息,并将在共识网络中广播;
[0059] 3.副本网络收到VIEW-CHANGE消息后,会首先判断该消息的签名是否正确,然后判断v的大小,是否比副本节点目前的编号大,如果比目前的编号大则说明在此之前接受过该消息,
[0060] 4.如果view-change中有2f+1个VIEW-CHANGE消息的时候,区块链网络会创建v+1作为该视图的新编号;
[0061] 5.区块链网络中的副本节点收到新的视图编号同样也会先进行判断,判断v+1是否比该副本目前的编号大1。
[0062] 以上显示和描述了本发明的基本原理、主要特征和优点。本领域的技术人员应该了解,本发明不受上述具体实施例的限制,上述具体实施例和说明书中的描述只是为了进一步说明本发明的原理,在不脱离本发明精神范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由权利要求书及其等效物界定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈