1.一种基于pow和pos改进的区块链共识机制,其特征在于,所述方法包括:
(1)优化pow:
a)降低哈希计算的难度,减少寻找随机数所花费的算力:将初始难度设为1,对应难度值为6,即找到的随机数nonce拼接前一个区块的hash值再进行哈希计算得到的hash值的前6位为0,这样矿工节点只需花几十秒就能找到nonce;
b)将出块速度保持在1分钟左右,以获得更快的交易确认:设置一个竞争等待时间wtime为10秒,第一个找到nonce的节点立即向全网广播,此时触发wtime,此后10秒内找到的节点都有机会获得记账权,10秒之后还没有找到的节点则失去获得本次记账权的机会,停止计算;找到nonce所花费的时间记为ftime,作为确定打包记账权的一个因素;
c)将难度调整机制改为每创建720个区块调整一次,即每12小时左右调整一次难度,难度计算公式改为:
newdiff=olddidd*(43200/totaltime)
newdiff为新区块的难度,olddiff为前一个区块的难度,totaltime为创建过去720个区块所花费的总时长,单位为秒,由于出块速度在1分钟左右,所以43200/totaltime趋近于1,newdiff和olddiff近似相等,如果算力增加,totaltime就会小于43200秒,43200/totaltime大于1,newdiff将大于olddiff,难度增加;反之,算力减小,难度减小,以此来动态调整计算难度;
(2)优化pos:
针对pos可能会出现的节点权益无限增大的问题,powas设置一个有效持币时间valuetime,并设置最大值,币龄的计算公式为:
coinage=coin*valuetime
若持币时间超过有效持币时间最大值,则valuetime停止增长,由公式可以看出超出的时长不会纳入币龄的计算,以此来限制币龄的无限增长,防止权益无限增大;
(3)引入信用值:为每个节点赋予一个信用值cpoint,作为记账权的一个参考因素,根据节点的行为增加和扣除信用值,用信用值奖励来调动矿工节点的挖矿积极性,信用值扣除来减少节点作恶的几率;
(4)确定记账权:记账权竞争流程为:
a)各矿工节点根据当前的难度值进行哈希计算寻找随机数nonce,使得该nonce拼接上前一个区块的hash值再进行哈希计算后得到的hash值的前n位为0,n等于难度值;
b)当某矿工找到nonce后,立即向全网广播,此时触发竞争等待时间wtime,为10秒,其他节点收到广播后,还有10秒的计算时间,如果10秒内找到了nonce,也立即向全网广播,10秒后仍然没有找到nonce的节点失去本轮记账机会;
c)找到nonce的节点根据ftime、coinage和cpoint这三个值计算出所有找到nonce的节点的pstake值;
d)若发现自己的pstake最大,则将所有的pstake信息以及自己打包好的区块广播至全网,宣布自己获得打包权,其他节点收到信息后进行验证,若验证通过,将收到信息中的区块作为区块链最后一个区块进行下一轮的挖矿计算;
e)若发现自己的pstake不是最大的,则竞争失败,等待获得打包权节点的广播信息;
f)没有找到nonce的节点停止计算,收到获得记账权的节点的广播信息后,再进行下一轮的计算。
2.根据权利要求1所述的基于pow和pos改进的区块链共识机制,其特征在于,信用值采用1000分制,最高为1000,每个节点的初始信用值为400,成功记账后会获得1信用值奖励,节点如果发生恶意行为,比如恶意分叉,将扣除20信用值;若信用值较低,则对节点竞争记账权进行限制,具体规则如下:
a)信用值低于400时,限制120轮,即2小时左右无法参与记账权竞争;
b)信用值低于300时,限制720轮,即12小时左右无法参与记账权竞争;
c)信用值低于200时,限制4320轮,即72小时左右无法参与记账权竞争;
d)信用值低于100时,剔除该节点,取消其矿工资格。