本发明涉及区块链技术领域,更具体的,涉及一种缓解pos机制下记账权中心化的共识机制实现方法。
背景技术:
目前,采用共识算法用来解决区块链网络中分布式账本节点上的账本数据的一致性和正确性。常用的工作量证明(proofofwork,pow)和权益证明(proofofstake,pos)机制虽然在一定程度上有效地解决记账行为的一致性共识问题,但现有的比特币pow机制纯粹依靠算力,随着人们将cpu挖矿逐渐升级到gpu、fpga,直至asic矿机挖矿,节点数和算力值也渐渐失配,某些具有巨大算力的矿池俨然成为另一个中心,并且pow机制造成了巨大的资源浪费。pos机制考虑到了pow的不足,依据权益结余来选择具有记账权的节点。权益证明要求用户证明对币的权益,即拥有一定数量的货币。点点币中,币龄被定义为币的数量与币拥有的天数的乘积,使得币龄能够反映交易时刻用户所拥有的货币的数量。
因此现有技术存在以下几点不足:
1.财富越多的节点越可能会拥有长久的优势,有可能支配记账权,导致中心化。
2.同时由于现有的技术不考虑币龄的大小,依然对不能提供可靠服务的节点进行计算,增加了计算的工作量。
技术实现要素:
本发明针对现在的区块链权益证明共识机制的缺陷,提供一种缓解pos机制下记账权中心化的共识机制实现方法;本发明通过引入计数器,并设计了目标函数,可缓解pos中依据权益结余选择的节点而导致单个或少数富有节点权力过大,支配记账权,产生中心化问题,达到在能提供可靠服务的节点间记账权均衡分布的效果。
为实现上述本发明目的,采用的技术方案如下:一种缓解pos机制下记账权中心化的共识机制实现方法,所述共识机制包括以下步骤:
s1:设置币龄阈值t的值,对pos和计数器进行初始化;
s2:当第i个节点ni产生交易时,向全网广播,每个节点对收到的交易信息打包,并纳入一个候选区块中;
s3:在币龄集合ca中,筛选出币龄大于阈值t的节点,节点数量为m,筛选出的节点集合为n={n1,n2,k,nm},对应的计数器值集合为c={c1,c2,k,cm};
s4:设计目标函数选出具有记账权的节点;
s5:具有记账权的节点将其对应的计数器值加1,并与步骤s2中产生的交易信息一同加入到新区块中;
s6:将新区块对全网广播,区块链网络中的其他节点对该新区块进行验证;
s7:如果该新区块通过验证,记录到区块链,一个流程结束或跳转到步骤s2继续执行;如果该新区块未通过验证,丢弃该区块,跳转到s2继续执行。
优选地,步骤s1,所述对计数器进行初始化,具体地,将所有节点对应的计数器值设置为0。
优选地,步骤s1,具体地,所述每个节点采用哈希函数对收到的交易信息进行打包。
优选地,所述步骤s3,需要计算币龄,具体地:
设币龄集合ca={ca1,ca2,l,cam},币的数量集合cn={cn1,cn2,l,cnm},币所拥有的天数集合cd={cd1,cd2,l,cdm},币龄为币的数量与币所拥有天数的乘积,第i个节点的币龄计算方法是cai=cni×cdi。
优选地,步骤s4,所述目标函数,具体如下:
s.t.cx∈n
x=1,2,l,m
式中:x*表示最终选择出的最优节点的编号,该节点即为具有记账权的节点,cx表示节点nx对应的计数器的值。
本发明的有益效果如下:
1.本发明剔除币龄小于阈值t,即不再考虑不能提供可靠服务的节点,一定程度上减少了计算的工作量,选择币龄大于阈值t的节点参与记账权的竞选。
2.本发明引入计数器功能,通过设计的目标函数,缓解了pos使用权益结余选择记账节点而导致的记账权中心化问题。
3.本发明在现有的pos基础上,增加用于记录每个节点记账次数的计数器,并将计数器的值保存在区块链上,以免被篡改,确保安全。
附图说明
图1是本实施例所述共识机制的步骤流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做详细描述。
实施例1
如图1所示,一种缓解pos机制下记账权中心化的共识机制实现方法,包括以下步骤:
step1、网络运行参数初始化
设置币龄阈值t的值,对pos和计数器初始化工作,将所有节点对应的计数器值都设置为0;
step2、产生交易,全网广播
当第i个节点ni产生交易时,节点ni将交易信息向全网广播,每个节点使用哈希函数对收到的交易信息打包,并纳入一个候选区块中;
step3、选出币龄大于阈值的节点
计算币龄,在币龄集合ca={ca1,ca2,l,cam}中,币的数量集合cn={cn1,cn2,l,cnm},币所拥有的天数集合cd={cd1,cd2,l,cdm},币龄为币的数量与币所拥有天数的乘积,第i个节点的币龄计算方法是cai=cni×cdi;筛选出币龄大于阈值t的节点,假设筛选出的节点数量为m,则筛选出的节点集合为n={n1,n2,k,nm},对应的计数器值集合为c={c1,c2,k,cm};
step4、通过设计目标函数选出具有记账权节点,所述目标函数具体如下:
s.t.cx∈n
x=1,2,l,m
式中,x*为最终选择出的最优节点的编号,该节点即为具有记账权的节点,cx为节点nx对应的计数器的值;
step5、具有记账权的节点将其对应的计数器值加1,并与step2中产生的交易信息一同加入到新区块中;
step6、将新区块对全网广播,区块链网络中的其他节点对该新区块进行验证;
step7、如果该新区块通过验证,记录到区块链,一个流程结束或跳转到step2继续执行下一个流程;如果该新区块未通过验证,丢弃该区块,跳转到step2继续执行下一个流程。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。