UTXO模型区块链的区块预测式验证方法、系统和存储介质技术方案

技术编号:38637514 阅读:29 留言:0更新日期:2023-08-31 18:32
本发明专利技术涉及区块链验证技术领域,尤其是一种UTXO模型区块链的区块预测式验证方法、系统和存储介质。所述区块验证方法,首先在当前区块验证通过后至接收到下一个新区块之前,根据当前的未确认交易预测下一个区块打包的交易,生成预测交易集;将预测交易集中的交易所引用的UTXO构建成UXTO子集存储到缓存中;在区块生成节点产生新区块后,获取新区块包含的交易中属于预测交易集的交易作为已知交易,获取新区块包含的交易中不属于预测交易集的交易作为未知交易;针对已知交易,结合UTXO子集进行验证。本发明专利技术提高了区块验证效率和速度,减少了区块链分叉的可能性,从而更好地保证了区块链系统的共识安全,并延长了外部存储盘的使用寿命。命。命。

【技术实现步骤摘要】
UTXO模型区块链的区块预测式验证方法、系统和存储介质


[0001]本专利技术涉及区块链验证
,尤其是一种UTXO模型区块链的区块预测式验证方法、系统和存储介质。

技术介绍

[0002]区块链技术自诞生以来受到了广泛的关注和研究。现有的区块链主要基于两种模型,即账户模型和未花费交易输出(UnspentTransactionOutput,UTXO)模型。使用UTXO模型的好处包括并行处理、高隐私性等。
[0003]在基于UTXO模型的区块链,用户可以在个人电脑、树莓派电脑等资源受限的设备中以剪枝模式运行全节点,即剪枝节点。剪枝节点是一个轻量级全节点,只存储完整的UTXO集和最近的至少288个区块以应对可能的区块链分叉,从而将存储区块链所需的磁盘大小从至少407GB减少到至少550MB。轻量级全节点可以独立地验证从区块链网络其他节点处收到的新交易和新区块,从而能够以较低的存储需求为用户提供最强的安全性和隐私性。
[0004]然而,不断增大的UTXO集,会降低轻量级全节点的区块验证速度。
[0005]对于轻量级全节点来说,将整个UTXO集全部存放在内存中是不可行的。现有的解决方案是将UTXO集的绝大部分存放于硬盘中,而在内存中维护一个大小可配置的UTXO缓存。在进行区块验证时,轻量级全节点首先在UTXO缓存中对交易输入所引用的UTXO进行查询,如果没有查到则会在磁盘的UTXO集中进行查询,之后将磁盘中查询到的交易输入引用的UTXO写入缓存。交易验证通过后,轻量级全节点将交易输出产生的UTXO写入缓存,并将交易输入引用的UTXO从缓存中删除。但是,现有的方案中UTXO的缓存调度策略十分简单:不断向UTXO缓存中写入数据,直到UTXO缓存已满时才将缓存中的所有数据写回磁盘并清空缓存。这种简单的缓存调度策略,以及轻量级全节点能够分配的较小的UTXO缓存,使得轻量级全节点需要频繁地清空UTXO缓存,从而导致在区块验证时UTXO缓存命中率过低,需要进行大量的磁盘访问,进而降低了区块验证速度。低效的区块验证速度,可能会损害区块链的共识安全。轻量级全节点,只有在通过区块验证后,才会将区块广播给周围的邻居。长时间的区块验证,意味着长时间的区块传播延时,进而更有可能导致区块链分叉,从而危害区块链的共识安全。

技术实现思路

[0006]为了克服上述现有技术中轻量级全节点的区块验证速度慢,耗时长的缺陷,本专利技术提出了一种UTXO模型区块链的区块预测式验证方法,可实现区块快速验证。
[0007]本专利技术提出的一种UTXO模型区块链的区块预测式验证方法,包括以下步骤:
[0008]S1、在当前区块验证通过后至接收到下一个新区块之前,根据当前的未确认交易预测下一个区块打包的交易,生成预测交易集;将预测交易集中的交易所引用的UTXO构建成UXTO子集存储到缓存中,令缓存中不属于UXTO子集的UTXO的缓存空间记作UTXO缓存,当UTXO缓存填满,则全节点将UTXO缓存中的数据写入外部存储盘并清空UTXO缓存;
[0009]S2、在区块生成节点产生新区块后,获取新区块包含的交易中属于预测交易集的交易作为已知交易,获取新区块包含的交易中不属于预测交易集的交易作为未知交易;
[0010]S3、针对已知交易,结合UTXO子集进行验证;针对未知交易,访问UTXO缓存以及外部存储盘的UTXO进行验证。
[0011]优选的,S3中,针对未知交易,首先判断未知交易引用的UTXO是否存在于UTXO缓存,是则结合UTXO缓存中对应的UTXO对该未知交易进行验证;否则访问存储有所有UTXO的外部存储盘对该未知交易进行验证。
[0012]优选的,步骤S1具体包括以下分步骤:
[0013]SA11、同步区块链的区块和未确认交易,全节点生成交易池存储所有未确认交易,交易池中的交易按照交易的费率降序排序;
[0014]SA12、全节点将交易池中费率最高的前n个交易作为预测交易写入预测交易集,并将预测交易引用的UTXO写入UTXO子集;n为设定值;
[0015]SA13、当区块链上产生新的未确认交易,简称新交易,全节点将新交易根据交易费率插入交易池,判断新交易在交易池中的排序是否小于或者等于n;否,则循环本步骤;是,则执行步骤SA14;
[0016]SA14、判断预测交易集是否填满;是,则将新交易写入预测交易集,并将预测交易集中交易费率最低的交易移出,然后根据更新后的预测交易集更新UTXO子集,使得UTXO子集包括且仅包括预测交易集中的所有预测交易引用的UTXO;否,则将新交易写入预测交易集,然后根据更新后的预测交易集更新UTXO子集,使得UTXO子集包括且仅包括预测交易集中的所有预测交易引用的UTXO。
[0017]优选的,步骤S1具体包括以下分步骤:
[0018]SB11、同步区块链的区块和未确认交易,全节点生成交易池存储所有未确认交易,交易池中的交易按照交易所在交易链的费率降序排序;交易链的费率为交易链上所有交易的费率的均值;
[0019]SB12、获取交易池中的第k个交易;k初始值为1;
[0020]SB13、判断第k个交易是否存在于预测交易集中;是,则令k更新为k+1,然后返回步骤SB12;否,则执行步骤SB14;
[0021]SB14、获取存在于第k个交易所在交易链上且未被存储到交易池中的交易作为第k个交易的补充交易,将第k个交易及其补充交易均写入预测交易集,然后判断预测交易集中包含的交易的数量是否达到设定值n;否,则令k更新为k+1,然后返回步骤SB12;是,则完成预测交易集,并将预测交易引用的UTXO写入UTXO子集;
[0022]SB15、当区块链上产生新的未确认交易,简称新交易,全节点将新交易根据交易链费率插入交易池;
[0023]SB16、令新交易在交易池中的顺序为n0,判断交易池中前n0

1个交易对应的交易链上的交易的总数量是否大于或者等于n;是,则返回步骤SB15;否,则执行步骤SB17;
[0024]SB17、预测交易集中包含的交易的数量是否达到设定值n;否,则将新交易及其补充交易加入预测交易集;是,则根据所在交易链的费率由低到高的顺序逐一删除预测交易集中的交易链,直至预测交易集中剩余交易链的交易总数小于n,然后将新交易及其补充交易加入预测交易集;
[0025]SB18、根据更新后的预测交易集更新UTXO子集,使得UTXO子集包括且仅包括预测交易集中的所有预测交易引用的UTXO。
[0026]优选的,S1中根据设置的分类器模型对交易池中的交易进行分类,以构建预测交易集;分类器模型的输入为交易池的交易,分类器的输出为交易池中交易的分类结果,所述分类结果包括两类,第一类为预测被下一个区块打包的交易,第二类为预测不被下一个区块打包的交易;
[0027]S1具体包括以下分步骤:
[0028]SC11、同步区块链的区块和未确认交易,全节点生成交易池存储所有未确认交易,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种UTXO模型区块链的区块预测式验证方法,其特征在于,包括以下步骤:S1、在当前区块验证通过后至接收到下一个新区块之前,根据当前的未确认交易预测下一个区块打包的交易,生成预测交易集;将预测交易集中的交易所引用的UTXO构建成UXTO子集存储到缓存中,令缓存中不属于UXTO子集的UTXO的缓存空间记作UTXO缓存,当UTXO缓存填满,则全节点将UTXO缓存中的数据写入外部存储盘并清空UTXO缓存;S2、在区块生成节点产生新区块后,获取新区块包含的交易中属于预测交易集的交易作为已知交易,获取新区块包含的交易中不属于预测交易集的交易作为未知交易;S3、针对已知交易,结合UTXO子集进行验证;针对未知交易,访问UTXO缓存以及外部存储盘的UTXO进行验证。2.如权利要求1所述的UTXO模型区块链的区块预测式验证方法,其特征在于,S3中,针对未知交易,首先判断未知交易引用的UTXO是否存在于UTXO缓存,是则结合UTXO缓存中对应的UTXO对该未知交易进行验证;否则访问存储有所有UTXO的外部存储盘对该未知交易进行验证。3.如权利要求1所述的UTXO模型区块链的区块预测式验证方法,其特征在于,步骤S1具体包括以下分步骤:SA11、同步区块链的区块和未确认交易,全节点生成交易池存储所有未确认交易,交易池中的交易按照交易的费率降序排序;SA12、全节点将交易池中费率最高的前n个交易作为预测交易写入预测交易集,并将预测交易引用的UTXO写入UTXO子集;n为设定值;SA13、当区块链上产生新的未确认交易,简称新交易,全节点将新交易根据交易费率插入交易池,判断新交易在交易池中的排序是否小于或者等于n;否,则循环本步骤;是,则执行步骤SA14;SA14、判断预测交易集是否填满;是,则将新交易写入预测交易集,并将预测交易集中交易费率最低的交易移出,然后根据更新后的预测交易集更新UTXO子集,使得UTXO子集包括且仅包括预测交易集中的所有预测交易引用的UTXO;否,则将新交易写入预测交易集,然后根据更新后的预测交易集更新UTXO子集,使得UTXO子集包括且仅包括预测交易集中的所有预测交易引用的UTXO。4.如权利要求1所述的UTXO模型区块链的区块预测式验证方法,其特征在于,步骤S1具体包括以下分步骤:SB11、同步区块链的区块和未确认交易,全节点生成交易池存储所有未确认交易,交易池中的交易按照交易所在交易链的费率降序排序;交易链的费率为交易链上所有交易的费率的均值;SB12、获取交易池中的第k个交易;k初始值为1;SB13、判断第k个交易是否存在于预测交易集中;是,则令k更新为k+1,然后返回步骤SB12;否,则执行步骤SB14;SB14、获取存在于第k个交易所在交易链上且未被存储到交易池中的交易作为第k个交易的补充交易,将第k个交易及其补充交易均写入预测交易集,然后判断预测交易集中包含的交易的数量是否达到设定值n;否,则令k更新为k+1,然后返回步骤SB12;是,则完成预测交易集,并将预测交易引用的UTXO写入UTXO子集;
SB15、当区块链上产生新的未确认交易,简称新交易,全节点将新交易根据交易链费率插入交易池;SB16、令新交易在交易池中的顺序为n0,判断交易池中前n0

1个交易对应的交易链上的交易的总数量是否大于或者等于n;是,则返回步骤SB15;否,...

【专利技术属性】
技术研发人员:魏凌波李海星邓宏平黄旭东牛玉坤廖勇张冬
申请(专利权)人:数据空间研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1