CN111683121B - 基于DPoS的云端数据溯源区块链共识机制改进方法 - Google Patents

基于DPoS的云端数据溯源区块链共识机制改进方法 Download PDF

Info

Publication number
CN111683121B
CN111683121B CN202010438374.7A CN202010438374A CN111683121B CN 111683121 B CN111683121 B CN 111683121B CN 202010438374 A CN202010438374 A CN 202010438374A CN 111683121 B CN111683121 B CN 111683121B
Authority
CN
China
Prior art keywords
node
block
consensus
nodes
round
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010438374.7A
Other languages
English (en)
Other versions
CN111683121A (zh
Inventor
杨武
玄世昌
王巍
苘大鹏
吕继光
陈治瑀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Engineering University
Original Assignee
Harbin Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Engineering University filed Critical Harbin Engineering University
Priority to CN202010438374.7A priority Critical patent/CN111683121B/zh
Publication of CN111683121A publication Critical patent/CN111683121A/zh
Application granted granted Critical
Publication of CN111683121B publication Critical patent/CN111683121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明属于区块链中的共识机制技术领域,具体涉及一种基于DPoS的云端数据溯源区块链共识机制改进方法。本发明将云计算资源量化为DPoS共识机制中的权益,根据权益的大小为每个节点开启一个类似于Raft共识中的有偏计时器,分散了投票的结果;结合了“一人一票”的投票方法,在提高节点选举效率的同时保证了优质云资源拥有者的当选概率;通过在共识过程中引入反馈机制,使得在共识过程中发现超过50%节点不认可的区块,立即重新开始节点选举流程,保证了区块产生的正确性。本发明在共识过程中对资源的消耗更少,在大规模节点的情况下,共识速度更快,共识速度不易受节点数量影响,可以更好的服务于面向云计算的数据溯源模型BlockCloud。

Description

基于DPoS的云端数据溯源区块链共识机制改进方法
技术领域
本发明属于区块链中的共识机制技术领域,具体涉及一种基于DPoS的云端数据溯源区块链共识机制改进方法。
背景技术
共识机制是区块链系统整体中最为关键的要素,它的效率直接决定着区块链系统的性能。PoW共识机制目前虽然安全稳定的服务于以太坊等区块链环境,但却因对资源的消耗巨大,生产区块的时间过久而饱受诟病。PoS共识机制是为解决PoW共识消耗资源过大的问题而产生的,它虽然能极大的缓解对资源的消耗问题,但是其共识速度依旧不够快。DPoS共识机制是PoS共识机制的改进版,相比于PoS共识机制,它产出区块的速度更快,对资源的消耗也更少,但它对区块链系统的中心化作出了一定的妥协。
应用于云端数据溯源模型BlockCloud的共识机制CloudPoS,是PoS共识机制在云计算模型中的一种应用,它的目标是保持云数据交易的分布式帐本的一致性状态。CloudPoS将云服务提供商CSP作为共识内容的一部分,CSP将扮演共识节点管理者的角色。在CloudPoS共识机制中,任何云用户都可以自由参与区块链共识流程,因为它们可以在CSP那里验证其身份和确定其与CSP的隶属关系。该机制将N个完全连接的云端节点{P1,P2,...,PN}称为Validator,这些节点是共识过程的参与者。在这种情况下,PoS中参与共识的节点将是云计算架构中的虚拟节点,N个云端节点负责维护区块链的整体运转。在共识开始之前,Validator将收集数据溯源作为交易,为之后区块的生成提供内容。CSP通过将参与共识的云用户的空闲资源,用做PoS共识机制中用户的权益。在CloudPoS中,共识的过程发生在一些不同的时间段间,这些时间段可以被定义为Epoch。在每个Epoch结束时,都会有一个包含交易的区块被成功确认,从而在区块链上扩展一个区块。在每个Epoch中,例如领导人选举、交易验证和多方确认等任务都将在新区块正式连入区块链之前完成。CloudPoS目前能够正常的服务于BlockCloud云端数据溯源模型,但是它存在着资源消耗过大的问题,随着参与共识的云端节点增多,共识所造成的资源消耗将急剧增加,从而严重影响共识效率。
发明内容
本发明的目的在于提供减少BlockCloud对资源的消耗,提高其工作效率以及提升其对大规模节点的支持能力的一种基于DPoS的云端数据溯源区块链共识机制改进方法。
本发明的目的通过如下技术方案来实现:包括以下步骤:
步骤1:区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少从大到小将节点排序;
步骤2:区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,Ni>;其中,HASH(PreBlockHead)为前一个区块头部的哈希值;Round为当前选举的轮次信息;
步骤3:收到信息的节点Ni从当前的区块链中获取前一个区块的区块头部,提取其中的Round信息后,将其加1,并计算前一个区块头部的哈希值HASH(PreBlockHead);
步骤4:若节点Ni计算得出的HASH(PreBlockHead)与Round信息和收到的信息完全一致,则节点Ni计算HASH(HASH(PreBlockHead),Round,Ni)的值,并广播消息<HASH(HASH(PreBlockHead),Round,Ni),Ni>;否则节点Ni会忽略掉此条信息;
步骤5:区块链系统将节点Ni划分到共识节点集合NC中,以(int)(Random()*l+i)作为该节点在本轮投票中的编号;
步骤6:若区块链系统收到l条<HASH(HASH(PreBlockHead),Round,Ni),Ni>的验证消息,则区块链系统将共识节点集合NC进行广播;
若区块链系统收到的验证消息不足l条,则区块链系统按照缺少的数量,依照排名顺延发送消息<HASH(PreBlockHead),Round,Ni>,返回步骤3;
步骤7:区块链系统将云端虚拟节点集合N中未进入共识节点集合NC中的节点划分为交易节点集合NT
步骤8:区块链系统将向云服务提供商CSP确认共识节点集合NC中每个节点
Figure GDA0003838306120000021
所代表的用户为维护区块链贡献的资源量,锁定用户资源;计算共识节点集合NC中的每个节点偏向成为见证者的概率{P1(Round),P2(Round),P3(Round),...,Pl(Round)};为共识节点集合NC中的每个节点开启TIMER;
步骤9:当共识节点集合NC中的节点
Figure GDA0003838306120000022
的TIMER到期后,区块链系统将向交易节点集合NT中的节点发送消息<(int)(Random()*l+i),Round>;
步骤10:交易节点集合NT中的节点
Figure GDA0003838306120000023
收到<(int)(Random()*l+i),Round>消息后,若确认Round信息无误且自身仍没有投过票,则将私钥
Figure GDA0003838306120000024
Figure GDA0003838306120000025
作为签名函数<Message>Prk=Sign(Message,Prk)的输入,计算得到
Figure GDA0003838306120000031
后,广播消息
Figure GDA0003838306120000032
步骤11:区块链系统收到从交易节点集合NT中的节点
Figure GDA0003838306120000033
广播的
Figure GDA0003838306120000034
消息后,将
Figure GDA0003838306120000035
的公钥
Figure GDA0003838306120000036
与信息
Figure GDA0003838306120000037
作为解签名函数Message=Unsign(<Message>PrK,PuK)的输入,得到原始信息
Figure GDA0003838306120000038
步骤12:区块链系统对已收到的相同的随机数(int)(Random()*l+i)进行统计,得出共识节点集合NC中每个节点
Figure GDA0003838306120000039
获得的总票数;
步骤13:区块链系统根据共识节点集合NC中每个节点
Figure GDA00038383061200000310
获得的总票数进行排名,选出得票数量排名最高的前m个节点,构建见证者节点集合NW;共识节点集合NC中其余节点组成参与者节点集合NP
步骤14:区块链系统将见证者节点集合NW进行乱序处理后与参与者节点集合NP一并广播至区块链网络中,各节点更新自身的身份,并保存节点集信息;
步骤15:见证者节点集合NW中的节点
Figure GDA00038383061200000311
生成一个区块,区块中包含了上一个区块的哈希值HASH(PreBlock)、状态标签INITIAL、节点选举轮次Round、当前的见证者节点集合NW、生产区块的见证者节点序号,区块的时间戳TimeStamp、近期的交易TX和由交易信息生成的Merkle树的树根MerkleRoot;
步骤16:区块链系统根据见证者节点集合NW中的排序,确认下一个生产区块的见证者节点是否能够继续参与共识过程,如果确认失败将触发节点的重新选举,而确认成功的见证者节点集合NW负责将自己生产的区块广播至区块链网络中;
步骤17:交易节点集合NT中的节点
Figure GDA00038383061200000312
转发收到的
Figure GDA00038383061200000313
参与者节点集合中的节点
Figure GDA00038383061200000314
提取
Figure GDA00038383061200000315
中的交易信息TX,根据自己手中与TX对应的交易信息生成Merkle树,然后与收到的区块中的所有信息进行比较;
若节点
Figure GDA0003838306120000041
中的信息与收到的区块中的所有信息完全一致,则节点
Figure GDA0003838306120000042
将自己的私钥
Figure GDA0003838306120000043
与收到的区块
Figure GDA0003838306120000044
作为签名函数的输入,签名后广播此消息;否则,节点
Figure GDA0003838306120000045
将根据收到区块所提供的信息生成一个自己认为正确的区块
Figure GDA0003838306120000046
Figure GDA0003838306120000047
与自己的私钥
Figure GDA0003838306120000048
作为签名函数的输入,签名后广播此消息;
步骤18:见证者节点集合NW中的节点
Figure GDA0003838306120000049
根据接收到的来自节点
Figure GDA00038383061200000410
的消息,通过解签名函数对内容进行解签名,得到区块
Figure GDA00038383061200000411
Figure GDA00038383061200000412
步骤19:节点
Figure GDA00038383061200000413
统计接收到的区块
Figure GDA00038383061200000414
的数量
Figure GDA00038383061200000415
和接收到的区块
Figure GDA00038383061200000416
的数量
Figure GDA00038383061200000417
Figure GDA00038383061200000418
则将区块
Figure GDA00038383061200000419
的状态判定为CORRECT,见证者节点
Figure GDA00038383061200000420
广播BlockCORRECT;否则,见证者节点
Figure GDA00038383061200000421
广播BlockERROR
步骤20:所有参与整体共识过程的云端虚拟节点集合N中的节点Ni会将收到的BlockCORRECT区块添加至自身的区块链中,将收到的BlockERROR区块丢弃;区块链系统在检测到BlockERROR区块后将停止本轮的区块共识流程,开始下一轮的共识节点的选举流程。
本发明还可以包括:
步骤8中计算共识节点集合NC中的每个节点偏向成为见证者的概率的方法具体为:一名用户拥有的总资源为
Figure GDA00038383061200000422
代表CPU的总核心数,
Figure GDA00038383061200000423
是以KB为单位的内存大小,
Figure GDA00038383061200000424
是以Kbps为单位的网络带宽;根据用户已使用的资源量为其保留一定的资源大小
Figure GDA00038383061200000425
用户成为见证者的偏向概率pi的计算方法为:
Figure GDA00038383061200000426
其中,|ai|表示节点拥有的权益量的值,具体计算方法为:
Figure GDA00038383061200000427
Figure GDA00038383061200000428
Figure GDA00038383061200000429
Figure GDA0003838306120000051
其中,
Figure GDA0003838306120000052
代表贪婪因子对应的CPU分量,
Figure GDA0003838306120000053
代表贪婪因子对应的内存分量,
Figure GDA0003838306120000054
代表贪婪因子所对应的网络带宽分量。
步骤8中为共识节点集合NC中的每个节点开启TIMER具体为:TIMER使用等待时间TIMEWAIT作为上限进行计时,TIMEWAIT的计算公式为:
TIMEWAIT=MAXTO*Pi
其中,MAXTO为150ms至300ms间的随机数;当共识节点集合NC中的节点
Figure GDA0003838306120000055
向交易节点集合NT中的节点
Figure GDA0003838306120000056
发起投票申请前,共识节点集合NC中每个节点将先开启各自的TIMER,在等待各自的TIMEWAIT长度的时间后方可发起投票申请。
本发明的有益效果在于:
本发明将云计算资源量化为DPoS共识机制中的权益,根据权益的大小为每个节点开启一个类似于Raft共识中的有偏计时器,分散了投票的结果;结合了“一人一票”的投票方法,在提高节点选举效率的同时保证了优质云资源拥有者的当选概率;通过在共识过程中引入反馈机制,使得在共识过程中发现超过50%节点不认可的区块,立即重新开始节点选举流程,保证了区块产生的正确性。与现有的技术相比,经过本方法改进的云端数据溯源区块链共识机制在共识过程中对资源的消耗更少,在大规模节点的情况下,共识速度更快,共识速度不易受节点数量影响,可以更好的服务于面向云计算的数据溯源模型BlockCloud。
附图说明
图1是节点分类示意图。
图2是共识节点选举的方法图。
图3是区块的产生与共识方法图。
图4是改进后共识机制的整体流程图。
图5是共识机制性能分析折线图。
图6是共识机制性能对比折线图。
图7是内存使用率对比折线图。
具体实施方式
下面结合附图对本发明做进一步描述。
本发明提供的云端数据溯源区块链的共识机制改进方法通过以下步骤实现:
1)根据用户为参与共识过程贡献的云计算资源的数量,进行节点的选举,将参与共识过程的节点的集合分为见证者节点、参与者节点和交易节点三个子集;
2)区块链系统开始进行区块的产生与共识过程,见证者节点集合中的节点根据其在集合中的顺序依次产生新的区块交予参与者节点检查。如果超过百分之50的节点检查无误,则重复步骤2)的过程,直至计时器超时进行步骤1)的过程重新选举节点;如果超过百分之50的检点检查有误,则直接进行步骤1)的过程重新选举节点。
在本方法中,共识过程被分为两部分,如DPoS共识机制一样,在第一部分选出一定数量的负责生产区块的“代表”。在第二部分将“代表”生产的区块交予其它参与共识的节点加以验证。将参与到共识流程中的所有云端虚拟节点的集合定义为N,其大小为k,(k∈N*),将集合N划分为两种不同的节点集合:共识节点集合NC,大小为l,(l∈N*,l<k)和交易节点集合NT,大小为(k-l)。对于NC和NT,NC∪NT=N,
Figure GDA0003838306120000061
由共识节点
Figure GDA0003838306120000062
组成的子网络被称为共识网络,由交易节点
Figure GDA0003838306120000063
组成的子网络被称为交易网络。由于每次共识都会使共识网络和交易网络中的节点发生变化,所以它们都不是静态的。共识网络从当前节点身份信息确定,至下一轮节点选举导致节点身份转变之前都将保持不变。
共识节点集合被再次划分为见证者节点集合NW,大小为m,(m∈N*,m<l)和参与者节点集合NP,大小为(l-m)。在本方法所涉及的区块链环境中,交易节点负责生成、加密和签名交易,将交易广播至区块链网络中,交易节点还负责为共识节点投票;见证者节点是根据投票得出的优胜者,即为之前提到的“代表”节点,它负责生产区块;参与者节点负责验证见证者节点所产生的区块;所有的节点都保存有完整的区块链副本。节点的分类如图1所示。
在共识过程中,共识节点NC将不被允许中途退出,只有当下一轮节点选举开始时,共识节点才可以选择退出。但如果有见证者节点产出不正确区块的现象出现,下一轮节点的选举将被立即执行。
在本方法中,每一名拥有云计算资源的用户被定义为参与区块链共识过程的节点,云用户的资源将被抵押,用于维护区块链系统的正常运转,这部分用户资源将作为传统的DPoS共识机制中用于决定节点成为区块生产者的权益量。本方法中定义了一个向量
Figure GDA0003838306120000064
用以表示一名云计算用户拥有的总资源,其中
Figure GDA0003838306120000065
代表CPU的总核心数,
Figure GDA0003838306120000066
是以KB为单位的内存大小,
Figure GDA0003838306120000067
是以Kbps为单位的网络带宽。为保证云用户的正常业务操作,本方法将根据云计算用户Ni已使用的资源量为其保留一定的资源大小
Figure GDA0003838306120000071
本方法还为每一名云计算用户Ni设置了一个贪婪因子σi∈(0,1],用户可以通过设置σ的大小来决定要将多少空闲资源作为权益投入到区块链共识过程中。贪婪因子σi的计算公式为:
Figure GDA0003838306120000072
公式中的
Figure GDA0003838306120000073
代表贪婪因子对应的CPU分量,
Figure GDA0003838306120000074
代表贪婪因子对应的内存分量,
Figure GDA0003838306120000075
代表贪婪因子所对应的网络带宽分量,公式中的w1,w2,w3为缩放参数,并且∑k∈{1,2,3}wk=1。引入贪婪因子的目的是为了保证云计算用户不会抵押相同的资源作为权益,为共识中的投票带来异质性。因此,权益函数被定义为:
f(R,RU,σ)=σ(R-RU) (2)
对于云计算用户Ni,(i∈[1,k])而言,它的权益量被定义为
Figure GDA0003838306120000076
其中:
Figure GDA0003838306120000077
Figure GDA0003838306120000078
Figure GDA0003838306120000079
公式中的
Figure GDA00038383061200000710
代表权益量所对应的CPU分量,
Figure GDA00038383061200000711
代表权益量所对应的的内存分量,
Figure GDA00038383061200000712
代表权益量所对应的网络带宽分量。参与共识的用户用作权益量抵押的资源将在每一轮共识开始时被扣除,只有当新一轮共识开始或用户被确定为交易节点且中途退出的情况下,资源才会被返还给用户。
在本方法中,对于任何一个节点(用户)Ni,(i∈[1,k])而言,其拥有的权益量的值|ai|越大,成为见证者的概率也就越高,这种概率被定义为偏向概率Pi,其计算公式为:
Figure GDA00038383061200000713
公式中的分子部分表示任意参加选举的节点拥有的权益量的值,分母部分代表所有共识节点拥有的权益量的值的总和,偏向概率将被用于见证者选举过程。在选举过程中,本方法引入了Raft共识机制中计时器的思想,为每一名参与见证者选举的节点准备了一个有偏计时器TIMER,TIMER使用等待时间TIMEWAIT作为上限进行计时,TIMEWAIT的最大值为MAXTO,在CloudDPoS中,MAXTO的大小被设置为一个150ms至300ms间的随机数,经实验验证,数值取该值时可以使投票结果的分布更加均匀。
TIMEWAIT的计算公式为:
TIMEWAIT=MAXTO*Pi (7)
当共识节点向交易节点发起投票申请前,每个节点将先开启各自的TIMER TIMER,在等待各自的TIMEWAIT长度的时间后方可发起投票申请。由于在本方法中,每个交易节点在每轮投票中仅能投一票,所以有偏计时器TIMER可以保证权益量大的节点有获取更多票数的机会,从而保证其有更高的概率当选为见证者。
(1)共识节点的选举过程
本方法通过共识节点的选举来完成节点集合的筛选和划分。如图2所示,共识节点的选举过程将分为以下12个步骤来完成:
1)在开始时,区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少将节点排序;
2)区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,Ni>,其中的Round为当前选举的轮次信息;
3)节点Ni在收到消息<HASH(PreBlockHead),Round,Ni>后,从当前的区块链中获取前一个区块的区块头部,提取其中的Round信息后,将其加1,并计算前一个区块头部的哈希值HASH(PreBlockHead);
4)节点Ni根据自己计算得出的HASH(PreBlockHead)信息与Round信息和收到的信息分别进行比较,若二者比较的结果完全一致,节点Ni会计算HASH(HASH(PreBlockHead),Round,Ni)的值,并广播消息<HASH(HASH(PreBlockHead),Round,Ni),Ni>。如果比较结果不一致,则会忽略掉此条信息;
5)在收到l条<HASH(HASH(PreBlockHead),Round,Ni),Ni>的验证消息后,系统将以(int)(Random()*l+i)作为该节点在本轮投票中的编号,并将节点集NC进行广播,节点Ni,(i∈[1,l])被划分到节点集NC中,如果收到的验证消息不足l条,系统将继续依照排名顺延发送步骤2中的消息,直至收到l条验证消息为止;
6)系统将向云服务提供商CSP确认节点
Figure GDA0003838306120000081
所代表的用户为维护区块链贡献的资源量,锁定用户资源,并根据公式(6)计算出NC中的节点偏向成为见证者的概率{P1(Round),P2(Round),P3(Round),...,Pl(Round)},根据公式(7)计算出NC中每个节点的TIMEWAIT,为NC中的每个节点开启TIMER;
7)当节点Ni的TIMER到期后,系统将向NT中的节点发送消息<(int)(Random()*l+i),Round>;
8)节点
Figure GDA0003838306120000091
收到<(int)(Random()*l+i),Round>消息后,在确认Round信息无误与确认自身仍没有投过票的前提下,通过将私钥
Figure GDA0003838306120000092
Figure GDA0003838306120000093
作为输入,使用签名函数:
<Message>Prk=Sign(Message,Prk) (8)
得到
Figure GDA0003838306120000094
在此之后广播消息
Figure GDA0003838306120000095
9)在收到从
Figure GDA0003838306120000096
广播的
Figure GDA0003838306120000097
消息后,系统通过将
Figure GDA0003838306120000098
的公钥
Figure GDA0003838306120000099
与信息
Figure GDA00038383061200000910
作为输入,通过解签名函数:
Message=Unsign(<Message>PrK,PuK) (9)
得到原始信息
Figure GDA00038383061200000911
10)系统对已收到的相同的随机数(int)(Random()*l+i)进行统计,得出获得的总票数;
11)系统根据收到的票数为节点
Figure GDA00038383061200000912
进行排名,选出得票数量排名最高的前m个节点成为见证者节点
Figure GDA00038383061200000913
余下的节点成为参与者节点
Figure GDA00038383061200000914
12)系统将见证者节点集NW进行乱序处理后与节点集NP一并广播至区块链网络中,各节点更新自身的身份,并保存节点集信息。
(2)区块的产生与共识过程
当节点的选举流程结束后,各节点的身份信息已经确定,区块链系统将开始正式的区块产生及共识过程,以完成对区块链系统中区块链的扩展。如图3所示,区块的产生及共识过程将分为以下8个步骤完成:
1)见证者节点
Figure GDA0003838306120000101
生成一个包含了上一个区块的哈希值HASH(PreBlock),状态标签为INITIAL,节点选举轮次为Round,当前的见证者节点集合NW,生产区块的见证者节点序号,区块的时间戳TimeStamp,以及一些近期的交易TX和由交易信息生成的Merkle树的树根MerkleRoot这些内容的区块;
2)系统根据见证者节点集NW中的排序,确认下一个生产区块的见证者节点是否能够继续参与共识过程,如果确认失败将触发节点的重新选举,而确认成功的NW负责将自己生产的区块广播至区块链网络中;
3)交易节点
Figure GDA0003838306120000102
将转发收到的
Figure GDA0003838306120000103
而参与者节点
Figure GDA0003838306120000104
会提取
Figure GDA0003838306120000105
中的交易信息TX,根据自己手中与TX对应的交易信息生成Merkle树,并将生成的MerkleRoot与收到的区块中的MerkleRoot作比较,区块中的其他信息的正确性也将被比较,例如产生区块的节点顺序等;
4)如果比较结果相同,参与者节点
Figure GDA0003838306120000106
会将自己的私钥
Figure GDA0003838306120000107
与收到的区块
Figure GDA0003838306120000108
作为输入,通过使用签名函数(8)签名后广播此消息。如果比较结果不相同,参与者节点
Figure GDA0003838306120000109
将根据收到区块所提供的信息生成一个自己认为正确的区块
Figure GDA00038383061200001010
将其与自己的私钥
Figure GDA00038383061200001011
作为输入,通过签名函数(8)签名后广播此消息;
5)见证者节点
Figure GDA00038383061200001012
将会根据它所接收到的消息,通过解签名函数(9)对内容进行解签名,得到区块
Figure GDA00038383061200001013
Figure GDA00038383061200001014
6)见证者节点
Figure GDA00038383061200001015
统计接收到的区块数量
Figure GDA00038383061200001016
Figure GDA00038383061200001017
7)如果接收到的正确区块数量大于错误区块数量,区块
Figure GDA00038383061200001018
的状态将被判定为CORRECT,见证者节点
Figure GDA00038383061200001019
将广播BlockCORRECT。反之,见证者节点
Figure GDA00038383061200001020
将广播BlockERROR区块;
8)所有参与整体共识过程的节点Ni会将收到的BlockCORRECT区块添加至自身的区块链中,将收到的BlockERROR区块丢弃,区块链系统在检测到BlockERROR区块后将停止本轮的区块共识流程,开始下一轮的共识节点的选举流程。
通过多组对比实验发现,如图5所示,经本方法改进的共识机制在1000个节点的情况下,每产生一个区块大约需要7.6秒,而CloudPoS共识机制则需要更长的25.2秒,所以经本方法改进的共识机制的共识效率更高;如图6所示,经本方法改进的共识机制的共识效率随节点数量的增多下降不明显,对比随节点数量增加共识效率下降明显的CloudPoS共识机制来说,经本方法改进的共识机制对大规模节点的支持能力更强;如图7所示,经本方法改进的共识机制模拟实验程序在运行时所消耗的内存要小于CloudPoS共识机制的模拟程序,这说明CloudPoS共识机制模拟实验程序在运行中,驻留在内存中的节点间传递的区块信息及其它消息量相比于本方法改进的共识共识机制更多。由此可以得出在节点数量固定在1000的情况下,经本方法改进的共识机制对网络资源的消耗仅为CloudPoS共识机制对网络资源的消耗三分之一左右;综上所述,经本方法改进的共识机制在共识效率、对大规模节点的支持能力和对网络资源的消耗等方面均优于CloudPoS共识机制,是面向云计算的数据溯源模型BlockCloud的更优选择。
本发明将云计算资源量化为DPoS共识机制中的权益,根据权益的大小为每个节点开启一个类似于Raft共识中的有偏计时器,分散了投票的结果;结合了“一人一票”的投票方法,在提高节点选举效率的同时保证了优质云资源拥有者的当选概率;通过在共识过程中引入反馈机制,使得在共识过程中发现超过50%节点不认可的区块,立即重新开始节点选举流程,保证了区块产生的正确性。与现有的技术相比,经过本方法改进的云端数据溯源区块链共识机制在共识过程中对资源的消耗更少,在大规模节点的情况下,共识速度更快,共识速度不易受节点数量影响,可以更好的服务于面向云计算的数据溯源模型BlockCloud。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于DPoS的云端数据溯源区块链共识机制改进方法,其特征在于,包括以下步骤:
步骤1:区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少从大到小将节点排序;
步骤2:区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,Ni>;其中,HASH(PreBlockHead)为前一个区块头部的哈希值;Round为当前选举的轮次信息;
步骤3:收到信息的节点Ni从当前的区块链中获取前一个区块的区块头部,提取其中的Round信息后,将其加1,并计算前一个区块头部的哈希值HASH(PreBlockHead);
步骤4:若节点Ni计算得出的HASH(PreBlockHead)与Round信息和收到的信息完全一致,则节点Ni计算HASH(HASH(PreBlockHead),Round,Ni)的值,并广播消息<HASH(HASH(PreBlockHead),Round,Ni),Ni>;否则节点Ni会忽略掉此条信息;
步骤5:区块链系统将节点Ni划分到共识节点集合NC中,以(int)(Random()*l+i)作为该节点在本轮投票中的编号;
步骤6:若区块链系统收到l条<HASH(HASH(PreBlockHead),Round,Ni),Ni>的验证消息,则区块链系统将共识节点集合NC进行广播;
若区块链系统收到的验证消息不足l条,则区块链系统按照缺少的数量,依照排名顺延发送消息<HASH(PreBlockHead),Round,Ni>,返回步骤3;
步骤7:区块链系统将云端虚拟节点集合N中未进入共识节点集合NC中的节点划分为交易节点集合NT
步骤8:区块链系统将向云服务提供商CSP确认共识节点集合NC中每个节点
Figure FDA0003688966120000011
所代表的用户为维护区块链贡献的资源量,锁定用户资源;计算共识节点集合NC中的每个节点偏向成为见证者的概率{P1(Round),P2(Round),P3(Round),...,Pl(Round)};为共识节点集合NC中的每个节点开启TIMER;
步骤9:当共识节点集合NC中的节点
Figure FDA0003688966120000012
的TIMER到期后,区块链系统将向交易节点集合NT中的节点发送消息<(int)(Random()*l+i),Round>;
步骤10:交易节点集合NT中的节点
Figure FDA0003688966120000021
收到<(int)(Random()*l+i),Round>消息后,若确认Round信息无误且自身仍没有投过票,则将私钥
Figure FDA0003688966120000022
Figure FDA0003688966120000023
作为签名函数<Message>PrK=Sign(Message,PrK)的输入,计算得到
Figure FDA0003688966120000024
后,广播消息
Figure FDA0003688966120000025
步骤11:区块链系统收到从交易节点集合NT中的节点
Figure FDA0003688966120000026
广播的
Figure FDA0003688966120000027
消息后,将
Figure FDA0003688966120000028
的公钥
Figure FDA0003688966120000029
与信息
Figure FDA00036889661200000210
作为解签名函数Message=Unsign(<Message>PrK,PuK)的输入,得到原始信息
Figure FDA00036889661200000211
步骤12:区块链系统对已收到的相同的随机数(int)(Random()*l+i)进行统计,得出共识节点集合NC中每个节点
Figure FDA00036889661200000212
获得的总票数;
步骤13:区块链系统根据共识节点集合NC中每个节点
Figure FDA00036889661200000213
获得的总票数进行排名,选出得票数量排名最高的前m个节点,构建见证者节点集合NW;共识节点集合NC中其余节点组成参与者节点集合NP
步骤14:区块链系统将见证者节点集合NW进行乱序处理后与参与者节点集合NP一并广播至区块链网络中,各节点更新自身的身份,并保存节点集信息;
步骤15:见证者节点集合NW中的节点
Figure FDA00036889661200000214
生成一个区块
Figure FDA00036889661200000215
区块中包含了上一个区块的哈希值HASH(PreBlock)、状态标签INITIAL、节点选举轮次Round、当前的见证者节点集合NW、生产区块的见证者节点序号,区块的时间戳TimeStamp、近期的交易TX和由交易信息生成的Merkle树的树根MerkleRoot;
步骤16:区块链系统根据见证者节点集合NW中的排序,确认下一个生产区块的见证者节点是否能够继续参与共识过程,如果确认失败将触发节点的重新选举,而确认成功的见证者节点集合NW负责将自己生产的区块广播至区块链网络中;
步骤17:交易节点集合NT中的节点
Figure FDA0003688966120000031
转发收到的
Figure FDA0003688966120000032
参与者节点集合中的节点
Figure FDA0003688966120000033
提取
Figure FDA0003688966120000034
中的交易信息TX,根据自己手中与TX对应的交易信息生成Merkle树,然后与收到的区块中的所有信息进行比较;
若节点
Figure FDA0003688966120000035
中的信息与收到的区块中的所有信息完全一致,则节点
Figure FDA0003688966120000036
将自己的私钥
Figure FDA0003688966120000037
与收到的区块
Figure FDA0003688966120000038
作为签名函数的输入,签名后广播此消息;否则,节点
Figure FDA0003688966120000039
将根据收到区块所提供的信息生成一个自己认为正确的区块
Figure FDA00036889661200000310
Figure FDA00036889661200000311
与自己的私钥
Figure FDA00036889661200000312
作为签名函数的输入,签名后广播此消息;
步骤18:见证者节点集合NW中的节点
Figure FDA00036889661200000313
根据接收到的来自节点
Figure FDA00036889661200000314
的消息,通过解签名函数对内容进行解签名,得到区块
Figure FDA00036889661200000315
Figure FDA00036889661200000316
步骤19:节点
Figure FDA00036889661200000317
统计接收到的区块
Figure FDA00036889661200000318
的数量
Figure FDA00036889661200000319
和接收到的区块
Figure FDA00036889661200000320
的数量
Figure FDA00036889661200000321
Figure FDA00036889661200000322
则将区块
Figure FDA00036889661200000323
的状态判定为CORRECT,见证者节点
Figure FDA00036889661200000324
广播BlockCORRECT;否则,见证者节点
Figure FDA00036889661200000325
广播BlockERROR
步骤20:所有参与整体共识过程的云端虚拟节点集合N中的节点Ni会将收到的BlockCORRECT区块添加至自身的区块链中,将收到的BlockERROR区块丢弃;区块链系统在检测到BlockERROR区块后将停止本轮的区块共识流程,开始下一轮的共识节点的选举流程。
2.根据权利要求1所述的一种基于DPoS的云端数据溯源区块链共识机制改进方法,其特征在于:步骤8中计算共识节点集合NC中的每个节点偏向成为见证者的概率的方法具体为:一名用户拥有的总资源为
Figure FDA00036889661200000326
Figure FDA00036889661200000327
代表CPU的总核心数,
Figure FDA00036889661200000328
是以KB为单位的内存大小,
Figure FDA00036889661200000329
是以Kbps为单位的网络带宽;根据用户已使用的资源量为其保留一定的资源大小
Figure FDA00036889661200000330
用户成为见证者的偏向概率Pi的计算方法为:
Figure FDA00036889661200000331
其中,|ai|表示节点拥有的权益量的值,具体计算方法为:
Figure FDA0003688966120000041
Figure FDA0003688966120000042
Figure FDA0003688966120000043
Figure FDA0003688966120000044
其中,
Figure FDA0003688966120000045
代表贪婪因子对应的CPU分量,
Figure FDA0003688966120000046
代表贪婪因子对应的内存分量,
Figure FDA0003688966120000047
代表贪婪因子所对应的网络带宽分量。
3.根据权利要求1或2所述的一种基于DPoS的云端数据溯源区块链共识机制改进方法,其特征在于:步骤8中为共识节点集合NC中的每个节点开启TIMER具体为:TIMER使用等待时间TIMEWAIT作为上限进行计时,TIMEWAIT的计算公式为:
TIMEWAIT=MAXTO*Pi
其中,MAXTO为150ms至300ms间的随机数;当共识节点集合NC中的节点
Figure FDA0003688966120000048
向交易节点集合NT中的节点
Figure FDA0003688966120000049
发起投票申请前,共识节点集合NC中每个节点将先开启各自的TIMER,在等待各自的TIMEWAIT长度的时间后方可发起投票申请。
CN202010438374.7A 2020-05-22 2020-05-22 基于DPoS的云端数据溯源区块链共识机制改进方法 Active CN111683121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010438374.7A CN111683121B (zh) 2020-05-22 2020-05-22 基于DPoS的云端数据溯源区块链共识机制改进方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010438374.7A CN111683121B (zh) 2020-05-22 2020-05-22 基于DPoS的云端数据溯源区块链共识机制改进方法

Publications (2)

Publication Number Publication Date
CN111683121A CN111683121A (zh) 2020-09-18
CN111683121B true CN111683121B (zh) 2022-12-13

Family

ID=72434319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010438374.7A Active CN111683121B (zh) 2020-05-22 2020-05-22 基于DPoS的云端数据溯源区块链共识机制改进方法

Country Status (1)

Country Link
CN (1) CN111683121B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115766017A (zh) * 2022-09-27 2023-03-07 国网天津市电力公司 一种基于权益证明的电力区块链云端部署方法及装置
CN116074310B (zh) * 2022-10-10 2024-04-26 重庆邮电大学 基于环签名的改进的委托权益证明的区块链共识方法
CN117195298B (zh) * 2023-09-18 2024-05-17 淮阴工学院 一种基于区块链混合共识的冷链产品溯源方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107395403A (zh) * 2017-07-07 2017-11-24 北京区块链云科技有限公司 一种适用于大规模电子商务的基于信用的区块链共识方法
CN109639837A (zh) * 2019-01-31 2019-04-16 东南大学 基于信任机制的区块链DPoS共识方法
CN110233737A (zh) * 2019-06-28 2019-09-13 北京艾摩瑞策科技有限公司 基于DPoS的共识方法、装置、计算机设备及存储介质
CN110298757A (zh) * 2019-07-05 2019-10-01 北京艾摩瑞策科技有限公司 涉及DPoS的共识方法及其装置
CN110351067A (zh) * 2019-06-12 2019-10-18 南京理工大学 针对主从多链的区块链共识机制
WO2020001108A1 (zh) * 2018-06-29 2020-01-02 阿里巴巴集团控股有限公司 基于区块链的数据处理方法和装置
CN110930158A (zh) * 2019-11-19 2020-03-27 南京邮电大学 一种基于奖惩机制的区块链DPoS共识方法
CN111062811A (zh) * 2019-12-02 2020-04-24 远光软件股份有限公司 一种区块链共识方法、系统、存储介质
CN111106942A (zh) * 2019-12-13 2020-05-05 南京邮电大学 一种基于ap-pbft算法的区块链信用机制
CN111131209A (zh) * 2019-12-16 2020-05-08 国网重庆市电力公司客户服务中心 一种改进的高效共识方法、系统、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6976620B2 (ja) * 2018-03-06 2021-12-08 アメリコープ インベストメンツ エルエルシー ブロックチェーンに記録された制限された情報のカスタマイズされたビュー

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107395403A (zh) * 2017-07-07 2017-11-24 北京区块链云科技有限公司 一种适用于大规模电子商务的基于信用的区块链共识方法
WO2020001108A1 (zh) * 2018-06-29 2020-01-02 阿里巴巴集团控股有限公司 基于区块链的数据处理方法和装置
CN109639837A (zh) * 2019-01-31 2019-04-16 东南大学 基于信任机制的区块链DPoS共识方法
CN110351067A (zh) * 2019-06-12 2019-10-18 南京理工大学 针对主从多链的区块链共识机制
CN110233737A (zh) * 2019-06-28 2019-09-13 北京艾摩瑞策科技有限公司 基于DPoS的共识方法、装置、计算机设备及存储介质
CN110298757A (zh) * 2019-07-05 2019-10-01 北京艾摩瑞策科技有限公司 涉及DPoS的共识方法及其装置
CN110930158A (zh) * 2019-11-19 2020-03-27 南京邮电大学 一种基于奖惩机制的区块链DPoS共识方法
CN111062811A (zh) * 2019-12-02 2020-04-24 远光软件股份有限公司 一种区块链共识方法、系统、存储介质
CN111106942A (zh) * 2019-12-13 2020-05-05 南京邮电大学 一种基于ap-pbft算法的区块链信用机制
CN111131209A (zh) * 2019-12-16 2020-05-08 国网重庆市电力公司客户服务中心 一种改进的高效共识方法、系统、计算机设备及存储介质

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
A New Election Algorithm for DPos Consensus Mechanism in Blockchain;Yinghui Luo,Yiqun Chen;《2018 7th International Conference on Digital Home》;20181231;全文 *
Location-Aware Influence Blocking Maximiztion in Social Networks;WENLONG ZHU,WU YANG,SHICHANG XUAN;《IEEE Access》;20181015;全文 *
一种基于权益代表的可扩展共识协议;李忠诚等;《应用科学学报》;20200130(第01期);全文 *
区块链中的智能合约;马春光等;《信息网络安全》;20181110;全文 *
区块链共识机制综述;杨宇光等;《信息安全研究》;20180405(第04期);全文 *
基于"奖励制度"的DPoS共识机制改进;陈梦蓉等;《计算机科学》;20200215(第02期);全文 *

Also Published As

Publication number Publication date
CN111683121A (zh) 2020-09-18

Similar Documents

Publication Publication Date Title
CN111683121B (zh) 基于DPoS的云端数据溯源区块链共识机制改进方法
Yu et al. Repucoin: Your reputation is your power
CN109819022A (zh) 一种基于信用评价的区块链共识方法
CN111131209B (zh) 一种改进的高效共识方法、系统、计算机设备及存储介质
CN109964242A (zh) 一种基于信任关系的区块链共识方法
CN111082943B (zh) 一种高效的区块链共识方法
CN112907252B (zh) 一种基于多人链下通道的区块链交易方法及系统
CN112104482B (zh) 一种基于并行投票的共识方法
CN113570357B (zh) 一种动态分层的高效pbft算法
CN108712468B (zh) 一种区块链收益分配方法和分配系统
CN110928951A (zh) 一种基于区块链的数据共享及仲裁方法
CN111935207A (zh) 基于改进型c4.5算法区块链系统共识方法
CN112118138B (zh) 区块链共识机制实现系统和方法
US20230017790A1 (en) Graphic-blockchain-orientated hybrid consensus implementation apparatus and implementation method thereof
CN116094721A (zh) 一种基于聚类的可扩展的分片共识算法
CN111131298A (zh) 一种基于信用去中心化的poc高效共识机制及实现方法
CN114615281B (zh) 基于小规模委员会的区块链出块方法及PoS协议确认方法
Micali et al. Optimal and player-replaceable consensus with an honest majority
CN115664706A (zh) 基于双链结构的非许可区块链节点检测和激励方法及系统
CN112907246B (zh) 基于BFT协议和PoW机制的区块链共识协议实现方法和系统
Mazurok et al. Empowering Fault-Tolerant Consensus Algorithm by Economic Leverages.
Noreen et al. Advanced DAG-Based Ranking (ADR) Protocol for Blockchain Scalability.
CN113435949B (zh) 基于智能合约的去中心化联邦机器学习方法、系统及存储介质
CN112866399B (zh) 一种改进的pbft共识方法、装置、智能终端及存储介质
CN116074310B (zh) 基于环签名的改进的委托权益证明的区块链共识方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant