【技术实现步骤摘要】
一种区块链记账方法、装置、节点及存储介质
本专利技术涉及区块链
,具体而言,涉及一种区块链记账方法、装置、节点及存储介质。
技术介绍
当前业界以比特币为首的区块链公有链,普遍存在双重浪费的现象:第一重浪费是采用工作量证明(ProofofWork,简称PoW)算法,PoW算法中大量无意义的计算导致挖矿过程过于消耗电力资源,这一问题可以通过改进区块链的共识算法来解决;第二重浪费是稀缺的矿机资源只服务于单一的区块链系统,矿机的挖矿能力未能得到充分的利用。例如,在现有的比特币系统中,有百万台级别的矿机参与挖矿,每台矿机的价值可能高达数万人民币,然而受限于系统实现,目前仅能保障约每秒7笔的交易能力。对于如何改善第二重资源浪费,目前尚未有人提出有价值的解决方案。
技术实现思路
本申请实施例的目的在于提供一种区块链记账方法、装置、节点及存储介质,以改善上述技术问题。为实现上述目的,本申请提供如下技术方案:第一方面,本申请实施例提供一种区块链记账方法,应用于应用链矿工,所述方法包括:参与应用链待挖区 ...
【技术保护点】
1.一种区块链记账方法,其特征在于,应用于应用链矿工,所述方法包括:/n参与应用链待挖区块的提案组成员的推选;其中,若确定所述应用链矿工被推选为应用链待挖区块的提案组成员,则向基链矿工发送针对所述应用链待挖区块的挖矿请求,所述提案组为有权发送挖矿请求的应用链矿工的集合;/n同步基链区块信息,并将所述基链区块信息纳入本地的基链账本中,所述基链区块信息来源于基链矿工根据所述挖矿请求生成的确定所述应用链待挖区块的提案组领导人的基链区块,所述基链区块信息中包括指示所述提案组领导人的选举结果;其中,所述提案组领导人为具有所述应用链待挖区块的出块权的提案组成员;/n参与应用链待挖区块的 ...
【技术特征摘要】
1.一种区块链记账方法,其特征在于,应用于应用链矿工,所述方法包括:
参与应用链待挖区块的提案组成员的推选;其中,若确定所述应用链矿工被推选为应用链待挖区块的提案组成员,则向基链矿工发送针对所述应用链待挖区块的挖矿请求,所述提案组为有权发送挖矿请求的应用链矿工的集合;
同步基链区块信息,并将所述基链区块信息纳入本地的基链账本中,所述基链区块信息来源于基链矿工根据所述挖矿请求生成的确定所述应用链待挖区块的提案组领导人的基链区块,所述基链区块信息中包括指示所述提案组领导人的选举结果;其中,所述提案组领导人为具有所述应用链待挖区块的出块权的提案组成员;
参与应用链待挖区块的验证组成员的推选;其中,若确定所述应用链矿工被推选为所述应用链待挖区块的验证组成员,则对所述提案组领导人所出区块进行验证,并向其他应用链矿工广播检验报告,所述验证组为有权生成检验报告的应用链矿工的集合,所述提案组领导人所出区块包括所述提案组领导人打包的所述应用链待挖区块;
接收所述检验报告,若根据所述检验报告确定所述提案组领导人所出区块验证通过,则将该区块纳入应用链账本中。
2.根据权利要求1所述的区块链记账方法,其特征在于,所述确定所述应用链矿工被推选为应用链待挖区块的提案组成员,包括:
基于所述应用链矿工的私钥以及利用预设规则确定的第一选举字串调用可验证随机函数VRF算法中的证明函数,获得第一可证明字串;
基于所述第一可证明字串推导第一随机值,并根据所述第一随机值确定所述应用链矿工被推选为应用链待挖区块的提案组成员。
3.根据权利要求2所述的区块链记账方法,其特征在于,所述第一选举字串取确定所述提案组领导人的基链区块的前L区块的区块头中记录的哈希值或随机数,L为正整数。
4.根据权利要求2所述的区块链记账方法,其特征在于,所述根据所述第一随机值确定所述应用链矿工被推选为应用链待挖区块的提案组成员,包括:
根据所述第一随机值以及所述应用链矿工的提案组参选权重确定所述应用链矿工被推选为应用链待挖区块的提案组成员;其中,所述应用链矿工被选为所述提案组成员的概率与所述提案组参选权重的取值正相关。
5.根据权利要求4所述的区块链记账方法,其特征在于,所述根据所述第一随机值以及所述应用链矿工的提案组参选权重确定所述应用链矿工被推选为应用链待挖区块的提案组成员,包括:
利用如下公式计算第二随机值RandValue2:
RandValue2=((RandValue1%ExpectedRange1)+priority1)
其中,RandValue1为所述第一随机值,ExpectedRange1为预设的范围值,priority1为所述提案组参选权重,%表示取余数运算;
若满足如下条件,则确定所述应用链矿工被推选为应用链待挖区块的提案组成员:
RandValue2>(ExpectedRange1-(ExpectedRange1*1/M1))
其中,M1为预设过滤比例。
6.根据权利要求4所述的区块链记账方法,其特征在于,所述提案组参选权重取所述应用链矿工在预设历史时间段内当选为提案组领导人的次数。
7.根据权利要求6所述的区块链记账方法,其特征在于,所述应用链矿工在所述历史时间段内当选为提案组领导人的次数从基于所述基链区块信息构建的表格中查询获得。
8.根据权利要求6所述的区块链记账方法,其特征在于,若所述应用链矿工因在所述历史时间段内未当选过提案组领导人而使得所述提案组参选权重为0,则所述提案组参选权重取首次记账权重,所述首次记账权重为预设的非0值。
9.根据权利要求6所述的区块链记账方法,其特征在于,若所述应用链矿工在所述历史时间段内当选提案组领导人的次数使得所述提案组参选权重大于预设的提案组最大参选权重,则所述提案组参选权重取所述提案组最大参选权重。
10.根据权利要求2所述的区块链记账方法,其特征在于,所述挖矿请求中包括提案候选信息,所述提案候选信息包括:
应用链标识、并行链链号、应用链待挖区块的高度、确定提案组领导人的基链区块的高度、应用链矿工公钥以及第一可证明字串;
其中,所述应用链标识是指发送所述挖矿请求的所述提案组成员所在的应用链的标识,所述并行链链号是指构成所述应用链的并行链中所述提案组成员挖矿所在的并行链的编号,所述确定提案组领导人的基链区块的高度是指确定所述应用链待挖区块的提案组领导人的基链区块的高度,所述应用链矿工公钥是指所述提案组成员的公钥,所述第一可证明字串是指所述应用链矿工被推选为所述提案组成员时依赖的第一可证明字串。
11.根据权利要求1所述的区块链记账方法,其特征在于,在所述确定所述应用链矿工被推选为应用链待挖区块的提案组成员之后,所述方法还包括:
被推选为所述提案组成员的应用链矿工打包所述应用链待挖区块。
12.根据权利要求11所述的区块链记账方法,其特征在于,所述打包所述应用链待挖区块,包括:
打包所述应用链待挖区块,并在所述应用链待挖区块的首个交易中保存所述应用链矿工被推选为所述提案组成员的证据。
13.根据权利要求11所述的区块链记账方法,其特征在于,所述打包所述应用链待挖区块,包括:
判断确定所述提案组领导人的基链区块的高度与所述应用链待挖区块的高度之差是否大于预设的第一差值阈值;
若两个高度之差大于所述第一差值阈值,则连续打包所述应用链待挖区块以及预设个数的空块;其中,所述预设个数不小于1。
14.根据权利要求11所述的区块链记账方法,其特征在于,在所述打包所述应用链待挖区块之后,所述方法还包括:
将所述应用链待挖区块广播给周边局部范围内的其他应用链矿工。
15.根据权利要求14所述的区块链记账方法,其特征在于,所述将所述应用链待挖区块广播给周边局部范围内的其他应用链矿工,包括:
在用于广播所述应用链待挖区块的广播消息中指定转发次数,所述应用链待挖区块每经过一次转发,所述广播消息中的转发次数减去1,在所述转发次数减少至0时停止广播所述应用链待挖区块。
16.根据权利要求1所述的区块链记账方法,其特征在于,所述基链由至少一条并行链构成,所述向基链矿工发送针对所述应用链待挖区块的挖矿请求,包括:
向所述基链的至少一条并行链中的一条并行链上的基链矿工发送针对所述应用链待挖区块的挖矿请求。
17.根据权利要求16所述的区块链记账方法,其特征在于,所述向所述基链的至少一条并行链中的一条并行链上的基链矿工发送针对所述应用链待挖区块的挖矿请求,包括:
根据如下公式从所述基链的至少一条并行链中确定一条并行链,并向该并行链上的基链矿工发送针对所述应用链待挖区块的挖矿请求:
n=(ChainNoOffet+k)%N
其中,N为所述基链的并行链的总数,N为正整数,并且所述基链的N条并行链按照从0至N-1依次编号,ChainNoOffet为所述应用链预设的链号偏移,k为构成所述应用链的并行链中所述提案组成员挖矿所在的并行链链号,%表示取余数运算,n表示确定出的所述基链的并行链链号。
18.根据权利要求1所述的区块链记账方法,其特征在于,所述同步基链区块信息,包括:
从所述基链中设置的同步节点同步基链区块信息。
19.根据权利要求1所述的区块链记账方法,其特征在于,所述基链区块信息采用的形式包括以下之一:
确定所述提案组领导人的基链区块本身;
所述基链区块的区块头以及所述基链区块的区块体中的选举结果列表,所述选举结果列表中的每个表项对应一条应用链上的一个待挖区块的选举结果,包括所述应用链待挖区块的提案组领导人的选举结果;
所述基链区块的区块头以及所述基链区块的区块体中针对所述应用链的片断数据;其中,所述片断数据包括所述选举结果列表中针对所述应用链待挖区块的提案组领导人的选举结果,以及,所述选举结果与所述基链区块的区块头中基于所述选举结果列表计算出的merkle根之间的merkle路径。
20.根据权利要求1所述的区块链记账方法,其特征在于,推选所述应用链待挖区块的验证组成员分为至少一轮进行;
当所述应用链矿工同步到确定所述应用链待挖区块的提案组领导人的基链区块信息,就参与前P轮验证组成员的推选,之后所述应用链矿工每同步到一个基链区块信息,就参与新一轮验证组成员的推选,除非满足以下条件之一,不再参与新一轮验证组成员的推选:
所述应用链矿工在已参与的推选轮次中确定自身被推选为验证组成员;
所述应用链矿工根据当前已接收到的检验报告能够得出所述提案组领导人所出区块验证通过的结论;
所述应用链矿工已参与的推选轮次已经达到预设的最大轮次;
其中,1≤P≤MaxRounds,MaxRounds为所述最大轮次,若所述应用链矿工在已参与的推选轮次中确定自身被推选为验证组成员,则对所述提案组领导人所出区块进行验证,向其他应用链矿工广播检验报告。
21.根据权利要求1所述的区块链记账方法,其特征在于,所述确定所述应用链矿工被推选为所述应用链待挖区块的验证组成员,包括:
基于所述应用链矿工的私钥以及利用预设规则确定的第二选举字串调用VRF算法中的证明函数,获得第二可证明字串;
基于所述第二可证明字串推导第三随机值,并根据所述第三随机值以及所述应用链矿工的验证组参选权重确定所述应用链矿工被推选为所述应用链待挖区块的验证组成员;其中,所述应用链矿工被选为验证组成员的概率与所述验证组参选权重的取值正相关。
22.根据权利要求21所述的区块链记账方法,其特征在于,所述验证组参选权重根据所述应用链矿工当前持有数字货币的数量进行计算,若所述应用链矿工当前未持有数字货币,则所述验证组参选权重取0。
23.根据权利要求22所述的区块链记账方法,其特征在于,若所述应用链矿工当前持有的数字货币数量使得所述验证组参选权重大于预设的验证组最大参选权重,则所述验证组参选权重取所述验证组最大参选权重。
24.根据权利要求22所述的区块链记账方法,其特征在于,若所述应用链矿工当前持有数字货币的数量小于预设的最小持币量,则所述应用链矿工不参与验证组成员的推选。
25.根据权利要求21所述的区块链记账方法,其特征在于,推选所述应用链待挖区块的验证组成员分为至少一轮进行,所述第二选举字串根据以下信息计算:
所述提案组领导人的矿工标识、确定所述提案组领导人的基链区块的高度、所述应用链待挖区块的高度以及推选所述验证组成员的轮次编号。
26.根据权利要求1所述的区块链记账方法,其特征在于,所述提案组领导人在广播所出区块时,还附带广播所述提案组领导人发送的针对该区块的挖矿请求中的提案候选信息,被推选为所述应用链待挖区块的验证组成员的所述应用链矿工对所述提案组领导人所出区块进行验证,包括以下验证项目:
根据所述提案候选信息中的确定提案组领导人的基链区块的高度,确定所述提案组领导人被推选为提案组成员时依赖的第一选举字串,基于所述提案候选信息中的第一可证明字串、所述提案候选信息中的应用链矿工公钥以及所述第一选举字串调用VRF算法中的验证函数,验证所述提案候选信息中的第一可证明字串是否被伪造;
验证所述提案候选信息中的应用链矿工公钥对应的应用链矿工是否为所述提案组领导人所出区块的创建者;
根据所述提案候选信息中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人,验证查询出的所述提案组领导人与所述提案候选信息确定的所述提案组领导人是否一致;
验证所述提案组领导人所出区块中的所有交易是否正确;
若所有验证项目的验证结果均为“是”,则生成检验结论为验证通过的检验报告,否则生成检验结论为验证未通过的检验报告。
27.根据权利要求26所述的区块链记账方法,其特征在于,所述提案组领导人所出区块的区块头中保存有表征区块创建者身份的公钥信息,所述验证所述提案候选信息中的应用链矿工公钥对应的应用链矿工是否为所述提案组领导人所出区块的创建者,包括:
验证根据所述提案候选信息中的应用链矿工公钥获得的公钥信息与所述区块头中保存的公钥信息是否一致,若一致,则确认所述提案候选信息中的应用链矿工公钥对应的应用链矿工是所述提案组领导人所出区块的创建者,否则该应用链矿工四·不是所述提案组领导人所出区块的创建者。
28.根据权利要求26所述的区块链记账方法,其特征在于,所述提案组领导人在广播所出区块时,还附带广播所述提案组领导人利用自身的私钥对所出区块的签名,所述验证所述提案候选信息中的应用链矿工公钥对应的应用链矿工是否为所述提案组领导人所出区块的创建者,包括:
利用所述提案候选信息中的应用链矿工公钥验证广播消息中携带的对所述提案组领导人所出区块的签名是否正确,若正确,则确认所述提案候选信息中的应用链矿工公钥对应的应用链矿工是所述提案组领导人所出区块的创建者,否则该应用链矿工不是所述提案组领导人所出区块的创建者。
29.根据权利要求26所述的区块链记账方法,其特征在于,所述根据所述提案候选信息中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人,验证查询出的所述提案组领导人与所述提案候选信息确定的所述提案组领导人是否一致,包括:
根据所述提案候选信息中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人的公钥,验证查询出的所述提案组领导人的公钥与所述提案候选信息中的应用链矿工公钥是否一致,若一致,则确认查询出的所述提案组领导人与所述提案候选信息确定的所述提案组领导人一致,否则两个提案组领导人不一致;
或者,
根据所述提案候选信息中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人的矿工标识,基于所述提案候选信息中的应用链矿工公钥、所述提案候选信息中的应用链标识以及所述提案候选信息中的并行链链号,利用哈希算法计算所述提案组领导人的矿工标识,并验证查询出的所述提案组领导人的矿工标识与计算出的所述提案组领导人的矿工标识是否一致,若一致,则确认查询出的所述提案组领导人与所述提案候选信息确定的所述提案组领导人一致,否则两个提案组领导人不一致。
30.根据权利要求1所述的区块链记账方法,其特征在于,所述根据所述检验报告确定所述提案组领导人所出区块验证通过,包括:
若收到的检验报告中检验通过的报告份数不小于最小成功验证数,以及,检验不通过的报告份数不大于最大失败验证数,则确定所述提案组领导人所出区块验证通过;
其中,所述最小成功验证数以及所述最大失败验证数为预设值,或者,根据一预设时间段内被选为提案组领导人的应用链矿工的个数进行推算。
31.根据权利要求1所述的区块链记账方法,其特征在于,所述根据所述检验报告确定所述提案组领导人所出区块验证通过,包括:
确定收到的检验报告的在验证过程中所占的票数,每份检验报告所占的票数与生成该检验报告的验证组成员当前持有的数字货币的数量正相关;
若收到的检验报告中检验通过的报告所占的总票数不小于最小成功验证数,以及,检验不通过的报告所占的总票数不大于最大失败验证数,则确定所述提案组领导人所出区块验证通过。
32.根据权利要求31所述的区块链记账方法,其特征在于,所述确定收到的检验报告的在验证过程中所占的票数,包括:
根据如下公式确定收到的检验报告的在验证过程中所占的票数:
vote_num=1+stake/leverage
其中,vote_num为所述检验报告所占的票数,stake为生成所述检验报告的验证组成员当前持有的数字货币的数量,leverage为预设的票数调节比例。
33.根据权利要求30所述的区块链记账方法,其特征在于,所述方法还包括:
若收到的检验报告中检验通过的报告份数占所述最小成功验证数的比例不小于预设的已验证比例,则提前开始下一应用链待挖区块的提案组成员的推选。
34.根据权利要求1所述的区块链记账方法,其特征在于,所述检验报告包括以下信息:
提案组领导人的矿工标识、确定提案组领导人的基链区块的高度、应用链待挖区块的高度、推选验证组成员的轮次编号、生成检验报告的验证组成员的公钥、应用链矿工被推选为验证组成员时依赖的第二可证明字串、应用链待挖区块的哈希值、检验结论以及利用验证组成员的私钥对检验报告的签名。
35.根据权利要求34所述的区块链记账方法,其特征在于,在所述应用链矿工认可所述检验报告中的检验结论之前,所述方法还包括:
利用所述检验报告中的验证组成员的公钥确认报告中的签名正确;
根据所述检验报告中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人,确认查询出的所述提案组领导人与所述检验报告所确定的所述提案组领导人一致;
根据所述检验报告中的提案组领导人的矿工标识、确定提案组领导人的基链区块的高度、应用链待挖区块的高度以及推选验证组成员的轮次编号计算生成所述检验报告的应用链矿工被推选为所述验证组成员时依赖的第二选举字串,基于所述第二选举字串、所述检验报告中的生成检验报告的验证组成员的公钥以及所述检验报告中的第二可证明字串调用VRF算法中的验证函数,确认所述检验报告中的第二可证明字串未被伪造;
基于所述检验报告中的第二可证明字串推导第三随机值,并根据所述第三随机值确认生成所述检验报告的应用链矿工为所述验证组成员。
36.根据权利要求35所述的区块链记账方法,其特征在于,所述根据所述检验报告中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人,确认查询出的所述提案组领导人与所述检验报告确定的所述提案组领导人一致,包括:
根据所述检验报告中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人的公钥,基于查询出的所述提案组领导人的公钥、所述应用链矿工挖矿所在的应用链标识以及并行链链号,利用哈希算法计算所述提案组领导人的矿工标识,确认计算出的所述提案组领导人的矿工标识与所述检验报告中的提案组领导人的矿工标识一致;
或者,
根据所述检验报告中的确定提案组领导人的基链区块的高度从本地的基链账本中查询所述提案组领导人的矿工标识,确认查询出的所述提案组领导人的矿工标识与所述检验报告中的提案组领导人的矿工标识一致。
37.根据权利要求1所述的区块链记账方法,其特征在于,所述方法还包括:
若根据所述检验报告确定所述提案组领导人所出区块验证通过,则开始下一应用链待挖区块的提案组成员的推选;
若根据所述检验报告确定所述提案组领导人所出区块验证未通过,则弃用所述提案组领导人所出区块,若该区块之后还串接了其他区块则一同弃用,并重新开始所述应用链待挖区块的提案组成员的推选。
38.根据权利要求20所述的区块链记账方法,其特征在于,P>1,所述若根据所述检验报告确定所述提案组领导人所出区块验证通过,则将该区块纳入应用链账本中,包括:
若根据所述检验报告确定所述提案组领导人所出区...
【专利技术属性】
技术研发人员:程强,
申请(专利权)人:深圳市红砖坊技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。