CN114328518A - 基于utxo模型的低存储消耗的方法和系统 - Google Patents
基于utxo模型的低存储消耗的方法和系统 Download PDFInfo
- Publication number
- CN114328518A CN114328518A CN202111591194.3A CN202111591194A CN114328518A CN 114328518 A CN114328518 A CN 114328518A CN 202111591194 A CN202111591194 A CN 202111591194A CN 114328518 A CN114328518 A CN 114328518A
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- node
- block chain
- extra
- 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.)
- Pending
Links
Images
Abstract
本发明提供了一种基于UTXO模型的低存储消耗的方法和系统,包括:在区块链运行前选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的共识字段;在区块链运行后,在节点新加入或重新加入区块链网络时,根据节点类型进行历史数据同步;由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络;在出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点;根据实际需要设置修剪周期,将相应的数据从历史数据中将其删除。本发明有效减少区块链历史数据占用的存储空间,降低节点的运行成本。
Description
技术领域
本发明涉及区块链技术领域,具体地,涉及一种基于UTXO模型的低存储消耗的方法和系统。
背景技术
区块链本质上是一种以去中心化或多中心化为特征的分布式账本,形式上体现为时间排序的区块序列,通过在下一个区块中存储上一个区块的哈希值,使得区块之间串联成链。每个区块包含若干个被称为交易的记录,交易记录着账本的实际内容即账本的条目。借助密码学哈希函数的性质使区块串联成链的同时也使历史数据具备不可篡改的属性,即要修改一个位置靠前的区块的数据,将要求修改其后所有的区块,这种操作的代价是极大或操作是困难的。所有参与区块链运行的用户即节点通过连接形成点对点的区块链网络,节点之间通过区块链的通信协议同步数据,并借助共识机制对新同步的数据以区块为单位达成共识。以太坊引入图灵完备语言和虚拟机,将智能合约以可编程的形式嵌入区块链系统中,并借助智能合约将实际应用场景迁移至区块链。目前认为区块链划可分为六层结构即数据层、网络层、共识层、激励层、合约层、应用层。
不同于现实世界中银行使用的账户模型,以比特币为代表的区块链应用在数据层上是基于UTXO(Unspent Transaction Output,未被消费的输出)模型的,每个UTXO通过所在交易的哈希和在交易中的位置即“索引”来作为唯一标识,在交易中以UTXO作为基本单位消费或产生即UTXO不可分割。区块链所表示的分布式账本记录着UTXO的流动情况,为了解决初始UTXO的问题,在区块中用一个特殊的交易创建初始的UTXO,一般作为区块中第一个交易,被称之为coinbase交易。进一步地,区块链的当前状态可以用当前链上所有UTXO的集合来表示。
交易的上链过程就代表UTXO集合的变更过程,而交易的有效性取决于伴随交易出现的证明和区块链的当前状态。每个运行区块链的节点一般通过下载区块链运行的历史数据,并按照共识协议的规则处理历史数据获取区块链的当前状态,而历史数据的存储和下载对运行区块链的节点提出资源的要求。
专利文献CN101853067B(申请号:CN201010121198.0)公开了一种减少装置功率消耗的方法及具有嵌入式存储器模块的装置,其中上述方法用于包含嵌入式存储器模块的装置,上述方法包含:划分嵌入式存储器模块为多个存储器区块;根据第一既定规则划分软件模块的指令组与数据组为多个区段,其中第一既定规则根据操作需求决定;以及载入区段进存储器区块;其中存储器区块根据条件分别开启或关闭。
目前大部分区块链方案中,历史数据所需要的存储空间和新节点入网所需同步时间都会随着区块链运行时间的延长而增加,这对运行区块链的节点的要求会逐渐提高,甚至影响到用户参与区块链网络的动机,而这将影响区块链网络的健康状况。虽然使用简单支付认证技术可以降低参与区块链的资源要求,但这种技术将显著依赖于区块链中的全节点,这不可避免地偏离了区块链的去中心化特性。更重要地是,随着人类活动与网络越发紧密,人们对隐私的态度逐渐发生变化,提出了对隐私保护的渴望和需求,而基于UTXO模型的比特币在隐私策略上止步于隔离比特币的地址和持有者的真实身份。为了获得更强的隐私属性,门罗币(Monero)、ZCash分别引入环保密交易(Ring Confidential Transaction)和零知识证明(Zero Knowledge Proof)以实现不可追踪、金额隐藏等隐私保护功能,而引入新的功能会不可避免的会带来开销。一方面,随着量子计算技术的迅速发展,量子计算技术对公钥密码方案的威胁变得越来越严重,区块链方案也将被迫转向后量子密码方案,这对于区块链的存储空间消耗将变成数倍的加剧,因为目前在用的后量子密码方案所需的存储空间都比较大,如后量子签名方案生成的签名大小是公钥签名方案的数倍。另一方面,区块链历史数据的主要作用是记录UTXO的流动情况,但随着隐私保护功能的引入,UTXO的流动情况会变得模糊,可能不再是确定的形式,甚至连每个UTXO代表的实际含义如币值等信息都被隐藏起来,这使得历史数据的功能性被削弱。
密码学哈希函数的定义是f:{0,1}*→{0,1}l,将任意长度的二进制串映射为较短的固定长度的二进制串的函数,并具备抗碰撞性。抗碰撞性可以理解为,难以找到两个不同的输入串,使得它们的输出串相同。
Merkle树是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,除了叶节点以外的节点则以其子节点标签的哈希作为标签。图1给出了一个二叉Merkle树示例。Hash 0-0和Hash 0-1分别是数据块L1和L2的哈希值。Hash 0是将Hash 0-0和Hash 0-1拼接后所获取的哈希值。
前缀树是一种有序树,用于保存关联数组,其中的键值通常是字符串,一个节点的所有子孙都有相同的前缀,根节点对应字符串,从根节点到叶子节点的路径上所有节点的值组成的字符串作为键值。压缩前缀树是一种更节省空间的前缀树,树中作为唯一子节点的每个节点都要与其父节点合并。
图2a是一棵包含11个长度为4的字符串集合即{“AACD”,”ABBA”,”ABCD”,”ACDA”,”BADC”,”BCAD”,”BDDD”,”CBAB”,”CBBA”,”DAAB”,”DABA”}的前缀树,图2b是相应字符串集合的压缩前缀树表示。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于UTXO模型的低存储消耗的方法和系统。
根据本发明提供的基于UTXO模型的低存储消耗的方法,包括:
全局初始化步骤:在区块链运行前选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的共识字段;
同步历史数据步骤:在区块链运行后,在节点新加入或重新加入区块链网络时,根据节点类型进行历史数据同步;
生成与同步交易步骤:由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络,在每个节点接收到交易后均按照预设规则验证交易的有效性;
生成与同步区块步骤:在出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点,在每个节点接受到区块后均按照区块验证规则验证区块的有效性;
修剪历史数据步骤:根据实际需要设置修剪周期,对于普通节点或出块节点,每次获得一个新区块并在区块的合法性验证通过后,根据安全参数k和历史数据计算得到可删除的区块的extras部分,将相应的数据从历史数据中将其删除。
优选的,所述全局初始化步骤包括:
在共识机制的基础上设置交易规则,包括区块第一交易coinbase的填充规则、交易验证规则,以及设置区块验证规则,同时设置与共识机制相关的安全参数k,该参数与选择可删除的历史数据相关,确定规则后按照规则生成创世区块。
优选的,所述同步历史数据步骤包括:
对于全量节点,在同步历史数据时,与全量节点连接,确定最新区块链状态后,同步从创世区块到区块链最新区块的全部区块数据,每个区块都包含区块头、区块体、附件extras部分,其中每个区块的区块体中的交易均为修剪后的交易,被修剪的extra部分存储在相应区块的extras部分,根据实际需要还原相应的交易;
对于出块节点或普通节点,在同步历史数据时,与非轻量节点连接,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,在确认所有区块头均符合规则后,同步最新区块状态的所有未消费的交易输出的集合,同时检查是否与最新区块头中的区块链状态摘要值匹配,若匹配检查通过,则同步每个未消费的交易输出验证时所需的数据;
对于轻量节点,在同步历史数据时,与任意节点相连,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,并确认所有区块头是否均符合规则,确认通过后,按需向非轻量节点请求数据。
优选的,所述生成与同步区块步骤包括:
出块节点生成新区块时,生成一个coinbase交易,其每个输入字段及对应的extra字段按照预设规则填充,每个输出字段按照出块节点的需要,按照预设规则填入输出部分和extra部分,并选择若干个验证通过的不在链上的交易,然后按照交易顺序更新区块链状态,并将每个修剪后的交易按照交易处理顺序依次存储区块体中,每个交易的extra部分按照交易处理顺序依次存入区块的extras部分;
所有选中的交易处理完毕后,按照区块链状态摘要值的计算方式计算得到区块链状态摘要,并填入区块头中的区块链状态摘要字段,随后按照共识机制的要求填入共识相关字段并生成新区块,而所有修剪后的交易按照交易顺序存储区块体中。
优选的,基于密码学哈希函数对交易结构和区块结构进行修改,按照压缩前缀树方式保证所有节点得到一致的摘要值,在压缩前缀树中的节点中引入一个标签字段,并将其插入和删除功能约定如下:
插入:输入为长度固定的字符串,输出为插入是否成功,按照压缩前缀树的插入方式将输入插入压缩树后,输入表示为从根节点到叶节点的一条路径,更新叶节点标签为输入字符串的哈希,路径上其他节点的标签更新为子节点标签拼接后的哈希;
删除:输入为长度固定的字符串,输出为删除是否成功,按照压缩前缀树的删除方式将输出从压缩前缀树中删除时,同时更新路径上所有节点的标签为其子节点标签拼接后的哈希;
所述交易结构包括:输入部分、输出部分和extra部分;
输入部分,包含多个输入字段,每个输入字段用一个哈希值表示,为链上交易的输出;
输出部分,包含多个输出字段,每个输出字段用一个哈希值表示,对应着必要数据的哈希值,必要数据可按需根据应用和共识机制进一步定义;
extra部分,包含多个extra字段,数量对应输入字段和输出字段的数量和,对应输入字段的extra字段存储消费有效性证明,对应输出字段的extra字段存储输出的必要数据,若有超出预设范围的交易,则自定义规则进行填充;
所述区块结构包括:区块头、区块体和extras部分;
区块头中包含以下字段:
当前区块链状态的摘要stateRoot,区块链状态是指当前链上所有交易的未消费输出的集合,区块链状态随着新区块的提出而发生更新,采用压缩前缀树的插入操作将集合中所有哈希值插入后得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;对于新加入区块链网络的节点,从其他节点获得当前区块链状态,并按照相应的计算方式计算得到并验证摘要值的正确性;
区块中交易集合的摘要txsRoot,采用Merkle树结构计算得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;
历史区块的摘要prevBlock,通过该字段与前一个区块链接,使得区块之间串联成链;
共识相关的字段Consensus,实例化时选取共识机制,并根据共识机制设置本字段;
时间相关的字段TimeStamp,记录区块出现的时间;
区块体中包含一个coinbase交易和若干个修剪后的交易;
extras部分,按交易次序存放交易的extra字段。
根据本发明提供的基于UTXO模型的低存储消耗的系统,包括:
全局初始化模块:在区块链运行前选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的共识字段;
同步历史数据模块:在区块链运行后,在节点新加入或重新加入区块链网络时,根据节点类型进行历史数据同步;
生成与同步交易模块:由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络,在每个节点接收到交易后均按照预设规则验证交易的有效性;
生成与同步区块模块:在出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点,在每个节点接受到区块后均按照区块验证规则验证区块的有效性;
修剪历史数据模块:根据实际需要设置修剪周期,对于普通节点或出块节点,每次获得一个新区块并在区块的合法性验证通过后,根据安全参数k和历史数据计算得到可删除的区块的extras部分,将相应的数据从历史数据中将其删除。
优选的,所述全局初始化模块包括:
在共识机制的基础上设置交易规则,包括区块第一交易coinbase的填充规则、交易验证规则,以及设置区块验证规则,同时设置与共识机制相关的安全参数k,该参数与选择可删除的历史数据相关,确定规则后按照规则生成创世区块。
优选的,所述同步历史数据模块包括:
对于全量节点,在同步历史数据时,与全量节点连接,确定最新区块链状态后,同步从创世区块到区块链最新区块的全部区块数据,每个区块都包含区块头、区块体、附件extras部分,其中每个区块的区块体中的交易均为修剪后的交易,被修剪的extra部分存储在相应区块的extras部分,根据实际需要还原相应的交易;
对于出块节点或普通节点,在同步历史数据时,与非轻量节点连接,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,在确认所有区块头均符合规则后,同步最新区块状态的所有未消费的交易输出的集合,同时检查是否与最新区块头中的区块链状态摘要值匹配,若匹配检查通过,则同步每个未消费的交易输出验证时所需的数据;
对于轻量节点,在同步历史数据时,与任意节点相连,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,并确认所有区块头是否均符合规则,确认通过后,按需向非轻量节点请求数据。
优选的,所述生成与同步区块模块包括:
出块节点生成新区块时,生成一个coinbase交易,其每个输入字段及对应的extra字段按照预设规则填充,每个输出字段按照出块节点的需要,按照预设规则填入输出部分和extra部分,并选择若干个验证通过的不在链上的交易,然后按照交易顺序更新区块链状态,并将每个修剪后的交易按照交易处理顺序依次存储区块体中,每个交易的extra部分按照交易处理顺序依次存入区块的extras部分;
所有选中的交易处理完毕后,按照区块链状态摘要值的计算方式计算得到区块链状态摘要,并填入区块头中的区块链状态摘要字段,随后按照共识机制的要求填入共识相关字段并生成新区块,而所有修剪后的交易按照交易顺序存储区块体中。
优选的,基于密码学哈希函数对交易结构和区块结构进行修改,按照压缩前缀树方式保证所有节点得到一致的摘要值,在压缩前缀树中的节点中引入一个标签字段,并将其插入和删除功能约定如下:
插入:输入为长度固定的字符串,输出为插入是否成功,按照压缩前缀树的插入方式将输入插入压缩树后,输入表示为从根节点到叶节点的一条路径,更新叶节点标签为输入字符串的哈希,路径上其他节点的标签更新为子节点标签拼接后的哈希;
删除:输入为长度固定的字符串,输出为删除是否成功,按照压缩前缀树的删除方式将输出从压缩前缀树中删除时,同时更新路径上所有节点的标签为其子节点标签拼接后的哈希;
所述交易结构包括:输入部分、输出部分和extra部分;
输入部分,包含多个输入字段,每个输入字段用一个哈希值表示,为链上交易的输出;
输出部分,包含多个输出字段,每个输出字段用一个哈希值表示,对应着必要数据的哈希值,必要数据可按需根据应用和共识机制进一步定义;
extra部分,包含多个extra字段,数量对应输入字段和输出字段的数量和,对应输入字段的extra字段存储消费有效性证明,对应输出字段的extra字段存储输出的必要数据,若有超出预设范围的交易,则自定义规则进行填充;
所述区块结构包括:区块头、区块体和extras部分;
区块头中包含以下字段:
当前区块链状态的摘要stateRoot,区块链状态是指当前链上所有交易的未消费输出的集合,区块链状态随着新区块的提出而发生更新,采用压缩前缀树的插入操作将集合中所有哈希值插入后得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;对于新加入区块链网络的节点,从其他节点获得当前区块链状态,并按照相应的计算方式计算得到并验证摘要值的正确性;
区块中交易集合的摘要txsRoot,采用Merkle树结构计算得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;
历史区块的摘要prevBlock,通过该字段与前一个区块链接,使得区块之间串联成链;
共识相关的字段Consensus,实例化时选取共识机制,并根据共识机制设置本字段;
时间相关的字段TimeStamp,记录区块出现的时间;
区块体中包含一个coinbase交易和若干个修剪后的交易;
extras部分,按交易次序存放交易的extra字段。
与现有技术相比,本发明具有如下的有益效果:
本发明提出一种新型的交易结构和区块结构以构造低存储空间消耗的区块链方案,相比于现有的区块链方案,有效减少区块链历史数据占用的存储空间,降低节点的运行成本,同时也有效减少新节点入网消耗的时间,并且支持隐私保护等额外功能的扩展,而不会增加区块链历史数据占用的空间。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为Merkle树示例图;
图2a为前缀树示例图,图2b为压缩前缀树示例图;
图3a为区块链交易结构图,图3b为区块链区块结构图;
图4为工作量证明下的区块头结构图;
图5为创世区块图;
图6为区块高度115的区块图;
图7为据区块链状态计算摘要过程图,图7a为初始状态,图7b为插入abc,图7c为插入acb,图7d为插入aaa,图7e为插入acc,图7f为插入bca;
图8为区块链状态计算摘要过程图,图8a为插入bcb,图8b为插入cba;
图9为生成交易txa图;
图10为区块高度116的区块图;
图11为更新并计算区块链状态摘要的过程图,图11a为插入cac,图11b为删除abc;
图12为更新并计算区块链状态摘要的过程图,图12a为插入cca,图12b为插入baa;
图13为本发明方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
本发明提出了一种基于UTXO模型的低存储消耗的区块链方案,包括:
基于密码学哈希函数对交易结构和区块结构进行修改,交易的输出不再由一个地址和一个币值等信息来表示,而是由必要数据的哈希来表示,同时,交易的输入不再通过指向一个交易的哈希和索引间接地指向之前的某个交易的输出,而是直接使用相应的交易输出(即哈希值)作为输入,对于证明交易有效性的数据,会在合适的时机从区块链历史数据中删除,以此减小历史数据占据的存储空间。在区块结构的区块头中引入当前区块链状态的摘要字段,该字段随着区块链状态的更新而更新。其中区块链状态是指当前链上所有交易的未消费输出(即UTXO)的集合,新加入网络的节点可以通过对所有区块头的验证和同步当前区块链状态的方式来实现快速入网。对于区块链状态摘要的计算方式,要求每个节点根据区块链状态可计算得到一致的摘要值。可按照压缩前缀树方式可以保证所有节点得到一致的摘要值,需要在压缩前缀树中的节点中引入一个标签字段,并将其插入和删除功能约定如下:
1.插入:输入为长度固定的字符串,输出为插入是否成功,按照压缩前缀树的插入方式将输入插入压缩树后,输入可表示为从根节点到叶节点的一条路径,更新叶节点标签为输入字符串的哈希,路径上其他节点的标签更新为子节点标签拼接后的哈希。
2.删除:输入为长度固定的字符串,输出为删除是否成功,按照压缩前缀树的删除方式将输出从压缩前缀树中删除时,同时更新路径上所有节点的标签为其子节点标签拼接后的哈希。
数据结构:方案中使用的交易结构分为三个部分,如图3a所示。
输入部分,可包含多个输入字段,每个输入字段用一个哈希值表示,等于链上某个交易的输出。
输出部分,可包含多个输出字段,每个输出字段用一个哈希值表示,对应着必要数据的哈希值,必要数据可按需根据应用和共识机制进一步定义。
extra部分,包含多个extra字段,数量对应输入字段和输出字段的数量和,对应输入字段的extra字段存储消费有效性证明,对应输出字段的extra字段存储输出的必要数据,存在有一种被称之为coinbase交易的特殊交易,其输入部分的每个输入字段和相应的extra字段不具备上述定义中的功能,可按照可自定义的规则进行填充。为便于描述,下文中称没有extra部分的交易为修剪后的交易。
方案中使用的区块结构分为三个部分,如图3b所示:
区块头中至少应包含以下字段:
当前区块链状态的摘要stateRoot,区块链状态是指当前链上所有交易的未消费输出的集合,区块链状态会随着新区块的提出而发生更新。区块链状态摘要值的计算方式可进一步定义,但计算方式必须保证使每个节点根据给定的区块链状态可计算得到一致的结果。可采用前述压缩前缀树的插入操作将集合中所有哈希值插入后得到的根节点的标签作为摘要值,此方式可确保所有节点可以计算得到一致的摘要值。对于新加入区块链网络的节点,从其他节点获得当前区块链状态,并按照相应的计算方式可计算得到并验证摘要值的正确性。
区块中交易集合的摘要txsRoot,计算交易集合的摘要值的方式可进一步定义,但计算方式必须保证每个节点根据给定的交易集合计算得到一致的结果。可采用Merkle树结构计算得到的根节点的标签作为摘要值,此方式可确保所有节点可以计算得到一致的摘要值。
历史区块的摘要prevBlock,通过该字段与前一个区块链接,可使得区块之间串联成链。
共识相关的字段Consensus,实例化本方案时,需要选取共识机制,并根据共识机制设置本字段。
时间相关的字段TimeStamp,记录区块出现的时间。
区块体中包含一个coinbase交易和若干个修剪后的交易,具体结构参考上一段。
extras部分,按交易次序存放交易的extra字段。
存在一个被称之为创世区块的特殊区块,该区块的PrevBlock字段按照可自定义的规则进行填充,在创世区块中仅包含一个coinbase交易。
节点分类:参与区块链的节点可以分为以下角色:全量节点、出块节点、普通节点、轻量节点,其功能分别如下:
全量节点:记录区块链自创世区块的所有数据,包括所有区块的extras字段,一般可由可信方(联盟链环境下)或社区(公链环境下)运行,可作为出块节点,同时也需与其他节点同步数据。
出块节点:记录并维护区块链的当前状态,可删除历史数据中部分区块的extras字段,负责新块的产出,区块的验证以及同步数据。
普通节点:记录并维护区块链的当前状态,负责区块验证和同步数据,但不承担出块的功能,大部分节点属于此类。
轻量节点:仅保留区块链少量历史数据,在需要时向其他非轻量节点查询数据,其使用方式同比特币中的轻节点。
运行机制:按照区块链的运行流程分为四个部分:全局初始化、同步历史数据、生成与同步交易、生成与同步区块、修剪历史数据。
全局初始化:在区块链开始运行前,需选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的Consensus字段。在共识机制的基础上设置交易规则如coinbase交易的填充规则、交易验证规则等,以及设置区块验证规则等,同时设置与共识机制相关的安全参数k,该参数与选择可删除的历史数据相关,并且可按需增设其他的规则如必要数据的格式规则等。确定规则后按照规则生成创世区块。
同步历史数据:区块链运行一段时间后,对于不同类型的节点,新加入或重新加入区块链网络时需要同步的历史数据不完全一样。现假定节点仅拥有创世区块即一个新节点加入网络时:
对于全量节点来说,在同步历史数据时,需要与全量节点连接,确定最新区块链状态后,同步从创世区块到区块链最新区块的全部区块数据,每个区块都必须需要包含区块头、区块体、extras部分。其中每个区块的区块体中的交易均为修剪后的交易,被修剪的extra部分存储在相应区块的extras部分,可根据实际需要还原相应的交易。
对于出块节点或普通节点来说,在同步历史数据时,需与非轻量节点连接,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,在确认所有区块头均符合规则后,同步最新区块状态的所有未消费的交易输出(即UTXO)的集合,同时检查是否与最新区块头中的区块链状态摘要值匹配,若匹配检查通过,则同步每个未消费的交易输出验证时所需的必要数据。
对于轻量节点来说,在同步历史数据时,可与任意节点相连,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,并确认所有区块头是否均符合规则,确认通过后,可以按需向非轻量节点请求数据。
生成与同步交易:由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络,网络中节点接收的交易应是一个完整的交易,即包含输入、输出、extra三个部分,每个节点接收到交易后均按照规则验证交易的有效性。用户生成交易时,在交易输入部分中填入若干个链上未消费的交易输出,在交易输出部分填入若干个包含着某种要求的必要数据的哈希,同时在每个输入字段对应的extra字段提供相应的消费有效性证明,并在每个输出字段对应的extra字段中填入相应输出字段对应的包含某种要求的必要数据。
生成与同步区块:出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点,网络中节点接收到的区块应是一个完整的区块,即包含区块头、区块体和extras部分,每个节点接受到区块后均可按照区块验证规则验证区块的有效性。出块节点生成新区块时,生成一个coinbase交易,其每个输入字段及对应的extra字段按照规则填充,每个输出字段则按照出块节点的需要,按照规则填入输出部分和extra部分;并选择若干个验证通过的不在链上的交易,然后按照一定的交易顺序,更新区块链状态,并将每个修剪后的交易按照交易处理顺序依次存储区块体中,每个交易的extra部分按照交易处理顺序依次存入区块的extras部分。所有选中的交易处理完毕后,按照区块链状态摘要值的计算方式计算得到区块链状态摘要,并填入区块头中的区块链状态摘要字段,随后按照共识机制的要求填入共识相关字段并生成新区块,而所有修剪后的交易按照交易顺序存储区块体中。
修剪历史数据:修剪周期默认设置为1个区块,可以根据实际需要修剪周期。对于普通节点或出块节点,每次获得一个新区块并在区块的合法性验证通过后,根据安全参数k和历史数据计算得到可删除的区块的extras部分,将相应的数据从历史数据中将其删除,减小历史数据的存储空间消耗。
实施例2:
实施例2为实施例1的优选例。
在描述实例前,先对下文中将使用的签名方案做简要介绍,签名方案应包括密钥生成算法KeyGen()→(pk,sk)、签名算法Sign(sk,m)→σ、验证算法V erify(pk,σ)→0/1,并具备不可伪造性。其中密钥生成算法用于生成公私钥对(pk,sk),pk表示一个公钥,sk表示一个私钥,签名算法使用一个私钥sk和一个消息m作为输入,输出为一个签名σ,验证算法使用一个公钥pk和一个σ,如果签名σ对应的公钥是pk,则输出为1表示验证通过,否则输出为0,表示验证不通过;不可伪造性可以理解为没有公钥pk对应私钥sk,无法生成可以通过验证的签名σ。下文中使用σpk表示对应公钥pk的一个签名。
为了描述方便,使用符号H(·)表示密码学哈希函数,并假定其输出串长度为3,输出字符集为{‘a’,‘b’,‘c’},Difficult(·)表示难度转换函数,Header(·)表示区块链在某一个高度上的区块头,下面通过以工作量证明(Proof of Work,PoW)作为区块链的共识机制,工作量证明是指用户需要进行一些耗时适当的复杂运算,并且答案能被其他用户快速验算,以此耗用的时间、设备与能源作为担保成本,以确保服务与资源是被真正的需求所使用。在实例中我们将使用密码学哈希函数H来作为复杂运算,即找到某一个值m使得H(m)小于某一个特定值。
如图13,本发明的基于UTXO模型的低存储消耗的方法包括如下步骤:
全局初始化:
区块中交易的摘要的计算方式采用Merkle树结构的方式计算,得到树的根节点的标签作为摘要值,区块链状态的摘要的计算方式采用前述压缩前缀树的方式计算,得到树的根节点的标签作为摘要值。
基于工作量证明,将区块头的Consensus字段设置为难度Bits和随机值Nonce。由于工作量证明只能确保最终共识,将安全参数设置为k=6,表示距离最新区块大于6个区块的extras部分可以从历史记录中删除。接下来,约定以下规则:
交易的每个输出字段对应的必要数据为一个公钥的哈希和一个币值以及一个随机数,输出字段为必要数据的哈希值。
coinbase交易中输入为全零串,对应的extra字段使用“0”填充,只能有一个输出字段,其中对应的币值固定为100。其他交易的每个输入字段必须等于区块链中的某个未被消费的交易输出,其对应的extra字段中需要提供其对应公钥和相应的签名。
交易验证时,coinbase交易的输入必须符合上面的规则,其他交易的输入要确保对应的extra字段所提供的公钥的哈希值与必要数据中的公钥哈希值匹配,同时签名可以验证通过;交易的每个输出字段对应的必要数据的哈希值必须与所提供的输出字段匹配,同时输出的币值和不能超过输入的币值和。
创世区块的PrevBlock字段填充为全零串。
区块难度固定为B1,要求每个区块的区块头的哈希值满足H(Header(·))≤Difficult(B1)。
区块验证时,要保证区块头的哈希值小于区块头的难度Bits的要求,同时确认区块中所有交易上链后的区块链状态的摘要值与区块头中提供的区块链状态摘要字段stateRoot匹配,并且区块中所有交易的摘要值与区块头中提供的值匹配。
历史数据的修剪周期设置为1个区块,即节点每次收到一个新区块后,删除历史数据中一个区块的extras部分。
综上所述,实例方案中的交易结构和区块头结构分别如图3a和图4所示。创世区块初始化为如图5所示,并且满足H(Header(0))≤Difficult(B1)。
同步历史数据:
假定当前最新区块链上有115个区块,最新的区块如图6所示,并且表示最新区块链状态的集合为{“abc”,“acb”,“aaa”,“acc”,“bca”,“bcb”,“cba”,“caa”},新节点A加入区块链网络后,向其他节点请求得到从创世区块到最新区块的区块头,首先检查区块头是否合法,如果检验通过则请求区块链最新状态,并根据区块链最新状态计算区块链状态摘要,并与Header(115)中的stateRoot字段相比是否匹配,计算过程如图7a~图7f和图8a、图8b所示。匹配通过后请求区块链状态中每个未消费的交易输出对应的必要数据,并检查与相应的未消费的交易输出是否匹配,如果均匹配,则将本地区块链设置为此区块链状态。
生成与同步交易:
假定其中“abc”表示未消费的交易输出对应的必要数据为{H(pkA),100,r1},其中pkA是节点A使用KeyGen()生成的公钥,其对应的私钥为skA。
现节点A按照交易规则生成如图9所示的交易txa,其中σpka是节点A使用私钥skA和修剪后的交易作为消息m通过Sign(skA,m)生成的一个签名,r2,r3是两个随机数。节点A将该交易广播到区块链网络中,其余节点通过检查pkA的哈希值是否是H(pkA),并验证V erify(pkA,m)是否输出1,同时验证交易的其他规则来验证交易的有效性,如果交易无效则丢弃不再继续广播。
生成与同步区块:
假定此时区块链中仅存在txa这一个有效交易。出块节点B在收集全网交易的同时,选择其中若干个交易打包成块,此时节点B选择交易txa,并生成coinbase交易tx1,根据这两个交易按照Merkle树的计算方式计算出相应摘要值mH,并根据两个交易对区块在高度为115时的区块链状态的更新:插入“cac”、删除“abc”、插入“cca”、插入“baa”,计算区块链状态摘要sH,压缩前缀树的变化过程如图11a、图11b和图12a、图12b所示。然后通过调整区块头中的Nonce字段使得H(Header(116))≤Difficult(B1),一段时间后,节点B得到如图10所示的区块,并将该区块广播给区块链网络中其他节点。
非轻量节点在收到如图10所示的区块后,计算H(Header(116))≤Difficult(B1)是否成立即是否满足工作量证明的要求,并检查coinbase交易tx1是否符合规则,然后检查交易txa的输入字段即“abc”是否在高度为115时的区块链状态中,检查交易txa的消费有效性即公钥pkA和相应的签名σpkA是否匹配,检查输入币值和是否小于输出币值和。交易有效性检查通过后,基于高度为115时的区块链状态表示的压缩前缀树,依次插入“cac”、删除“abc”、插入“cca”、插入“baa”,得到区块高度为116的区块链状态的摘要,并与Header(116)中sH值比较判定是否相等。如果所有检查均通过,则节点接受该区块并将更新本地区块链。
修剪历史数据:根据修剪周期为1个区块,如图10所示的区块验证通过,普通结点或出块节点更新本地状态,随后根据参数k计算出可删除高度为116-k-1=116-6-1=109的区块的extras部分,从而降低历史数据占用的存储空间。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于UTXO模型的低存储消耗的方法,其特征在于,包括:
全局初始化步骤:在区块链运行前选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的共识字段;
同步历史数据步骤:在区块链运行后,在节点新加入或重新加入区块链网络时,根据节点类型进行历史数据同步;
生成与同步交易步骤:由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络,在每个节点接收到交易后均按照预设规则验证交易的有效性;
生成与同步区块步骤:在出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点,在每个节点接受到区块后均按照区块验证规则验证区块的有效性;
修剪历史数据步骤:根据实际需要设置修剪周期,对于普通节点或出块节点,每次获得一个新区块并在区块的合法性验证通过后,根据安全参数k和历史数据计算得到可删除的区块的extras部分,将相应的数据从历史数据中将其删除。
2.根据权利要求1所述的基于UTXO模型的低存储消耗的方法,其特征在于,所述全局初始化步骤包括:
在共识机制的基础上设置交易规则,包括区块第一交易coinbase的填充规则、交易验证规则,以及设置区块验证规则,同时设置与共识机制相关的安全参数k,该参数与选择可删除的历史数据相关,确定规则后按照规则生成创世区块。
3.根据权利要求1所述的基于UTXO模型的低存储消耗的方法,其特征在于,所述同步历史数据步骤包括:
对于全量节点,在同步历史数据时,与全量节点连接,确定最新区块链状态后,同步从创世区块到区块链最新区块的全部区块数据,每个区块都包含区块头、区块体、附件extras部分,其中每个区块的区块体中的交易均为修剪后的交易,被修剪的extra部分存储在相应区块的extras部分,根据实际需要还原相应的交易;
对于出块节点或普通节点,在同步历史数据时,与非轻量节点连接,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,在确认所有区块头均符合规则后,同步最新区块状态的所有未消费的交易输出的集合,同时检查是否与最新区块头中的区块链状态摘要值匹配,若匹配检查通过,则同步每个未消费的交易输出验证时所需的数据;
对于轻量节点,在同步历史数据时,与任意节点相连,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,并确认所有区块头是否均符合规则,确认通过后,按需向非轻量节点请求数据。
4.根据权利要求1所述的基于UTXO模型的低存储消耗的方法,其特征在于,所述生成与同步区块步骤包括:
出块节点生成新区块时,生成一个coinbase交易,其每个输入字段及对应的extra字段按照预设规则填充,每个输出字段按照出块节点的需要,按照预设规则填入输出部分和extra部分,并选择若干个验证通过的不在链上的交易,然后按照交易顺序更新区块链状态,并将每个修剪后的交易按照交易处理顺序依次存储区块体中,每个交易的extra部分按照交易处理顺序依次存入区块的extras部分;
所有选中的交易处理完毕后,按照区块链状态摘要值的计算方式计算得到区块链状态摘要,并填入区块头中的区块链状态摘要字段,随后按照共识机制的要求填入共识相关字段并生成新区块,而所有修剪后的交易按照交易顺序存储区块体中。
5.根据权利要求1所述的基于UTXO模型的低存储消耗的方法,其特征在于,基于密码学哈希函数对交易结构和区块结构进行修改,按照压缩前缀树方式保证所有节点得到一致的摘要值,在压缩前缀树中的节点中引入一个标签字段,并将其插入和删除功能约定如下:
插入:输入为长度固定的字符串,输出为插入是否成功,按照压缩前缀树的插入方式将输入插入压缩树后,输入表示为从根节点到叶节点的一条路径,更新叶节点标签为输入字符串的哈希,路径上其他节点的标签更新为子节点标签拼接后的哈希;
删除:输入为长度固定的字符串,输出为删除是否成功,按照压缩前缀树的删除方式将输出从压缩前缀树中删除时,同时更新路径上所有节点的标签为其子节点标签拼接后的哈希;
所述交易结构包括:输入部分、输出部分和extra部分;
输入部分,包含多个输入字段,每个输入字段用一个哈希值表示,为链上交易的输出;
输出部分,包含多个输出字段,每个输出字段用一个哈希值表示,对应着必要数据的哈希值,必要数据可按需根据应用和共识机制进一步定义;
extra部分,包含多个extra字段,数量对应输入字段和输出字段的数量和,对应输入字段的extra字段存储消费有效性证明,对应输出字段的extra字段存储输出的必要数据,若有超出预设范围的交易,则自定义规则进行填充;
所述区块结构包括:区块头、区块体和extras部分;
区块头中包含以下字段:
当前区块链状态的摘要stateRoot,区块链状态是指当前链上所有交易的未消费输出的集合,区块链状态随着新区块的提出而发生更新,采用压缩前缀树的插入操作将集合中所有哈希值插入后得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;对于新加入区块链网络的节点,从其他节点获得当前区块链状态,并按照相应的计算方式计算得到并验证摘要值的正确性;
区块中交易集合的摘要txsRoot,采用Merkle树结构计算得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;
历史区块的摘要prevBlock,通过该字段与前一个区块链接,使得区块之间串联成链;
共识相关的字段Consensus,实例化时选取共识机制,并根据共识机制设置本字段;
时间相关的字段TimeStamp,记录区块出现的时间;
区块体中包含一个coinbase交易和若干个修剪后的交易;
extras部分,按交易次序存放交易的extra字段。
6.一种基于UTXO模型的低存储消耗的系统,其特征在于,包括:
全局初始化模块:在区块链运行前选取共识机制、交易摘要的计算方式、区块链状态摘要的计算方式,并根据共识机制设置区块头的共识字段;
同步历史数据模块:在区块链运行后,在节点新加入或重新加入区块链网络时,根据节点类型进行历史数据同步;
生成与同步交易模块:由拥有未消费的交易输出的用户生成交易,将交易同步到区块链网络,在每个节点接收到交易后均按照预设规则验证交易的有效性;
生成与同步区块模块:在出块节点选择若干个不在链上的交易,按照共识规则生成区块,并将新生成的区块同步给网络中所有节点,在每个节点接受到区块后均按照区块验证规则验证区块的有效性;
修剪历史数据模块:根据实际需要设置修剪周期,对于普通节点或出块节点,每次获得一个新区块并在区块的合法性验证通过后,根据安全参数k和历史数据计算得到可删除的区块的extras部分,将相应的数据从历史数据中将其删除。
7.根据权利要求6所述的基于UTXO模型的低存储消耗的系统,其特征在于,所述全局初始化模块包括:
在共识机制的基础上设置交易规则,包括区块第一交易coinbase的填充规则、交易验证规则,以及设置区块验证规则,同时设置与共识机制相关的安全参数k,该参数与选择可删除的历史数据相关,确定规则后按照规则生成创世区块。
8.根据权利要求6所述的基于UTXO模型的低存储消耗的系统,其特征在于,所述同步历史数据模块包括:
对于全量节点,在同步历史数据时,与全量节点连接,确定最新区块链状态后,同步从创世区块到区块链最新区块的全部区块数据,每个区块都包含区块头、区块体、附件extras部分,其中每个区块的区块体中的交易均为修剪后的交易,被修剪的extra部分存储在相应区块的extras部分,根据实际需要还原相应的交易;
对于出块节点或普通节点,在同步历史数据时,与非轻量节点连接,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,在确认所有区块头均符合规则后,同步最新区块状态的所有未消费的交易输出的集合,同时检查是否与最新区块头中的区块链状态摘要值匹配,若匹配检查通过,则同步每个未消费的交易输出验证时所需的数据;
对于轻量节点,在同步历史数据时,与任意节点相连,确定区块链最新状态后,同步从创世区块到区块链最新状态的全部区块的区块头,并确认所有区块头是否均符合规则,确认通过后,按需向非轻量节点请求数据。
9.根据权利要求6所述的基于UTXO模型的低存储消耗的系统,其特征在于,所述生成与同步区块模块包括:
出块节点生成新区块时,生成一个coinbase交易,其每个输入字段及对应的extra字段按照预设规则填充,每个输出字段按照出块节点的需要,按照预设规则填入输出部分和extra部分,并选择若干个验证通过的不在链上的交易,然后按照交易顺序更新区块链状态,并将每个修剪后的交易按照交易处理顺序依次存储区块体中,每个交易的extra部分按照交易处理顺序依次存入区块的extras部分;
所有选中的交易处理完毕后,按照区块链状态摘要值的计算方式计算得到区块链状态摘要,并填入区块头中的区块链状态摘要字段,随后按照共识机制的要求填入共识相关字段并生成新区块,而所有修剪后的交易按照交易顺序存储区块体中。
10.根据权利要求6所述的基于UTXO模型的低存储消耗的系统,其特征在于,基于密码学哈希函数对交易结构和区块结构进行修改,按照压缩前缀树方式保证所有节点得到一致的摘要值,在压缩前缀树中的节点中引入一个标签字段,并将其插入和删除功能约定如下:
插入:输入为长度固定的字符串,输出为插入是否成功,按照压缩前缀树的插入方式将输入插入压缩树后,输入表示为从根节点到叶节点的一条路径,更新叶节点标签为输入字符串的哈希,路径上其他节点的标签更新为子节点标签拼接后的哈希;
删除:输入为长度固定的字符串,输出为删除是否成功,按照压缩前缀树的删除方式将输出从压缩前缀树中删除时,同时更新路径上所有节点的标签为其子节点标签拼接后的哈希;
所述交易结构包括:输入部分、输出部分和extra部分;
输入部分,包含多个输入字段,每个输入字段用一个哈希值表示,为链上交易的输出;
输出部分,包含多个输出字段,每个输出字段用一个哈希值表示,对应着必要数据的哈希值,必要数据可按需根据应用和共识机制进一步定义;
extra部分,包含多个extra字段,数量对应输入字段和输出字段的数量和,对应输入字段的extra字段存储消费有效性证明,对应输出字段的extra字段存储输出的必要数据,若有超出预设范围的交易,则自定义规则进行填充;
所述区块结构包括:区块头、区块体和extras部分;
区块头中包含以下字段:
当前区块链状态的摘要stateRoot,区块链状态是指当前链上所有交易的未消费输出的集合,区块链状态随着新区块的提出而发生更新,采用压缩前缀树的插入操作将集合中所有哈希值插入后得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;对于新加入区块链网络的节点,从其他节点获得当前区块链状态,并按照相应的计算方式计算得到并验证摘要值的正确性;
区块中交易集合的摘要txsRoot,采用Merkle树结构计算得到的根节点的标签作为摘要值,确保所有节点计算得到一致的摘要值;
历史区块的摘要prevBlock,通过该字段与前一个区块链接,使得区块之间串联成链;
共识相关的字段Consensus,实例化时选取共识机制,并根据共识机制设置本字段;
时间相关的字段TimeStamp,记录区块出现的时间;
区块体中包含一个coinbase交易和若干个修剪后的交易;
extras部分,按交易次序存放交易的extra字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591194.3A CN114328518A (zh) | 2021-12-23 | 2021-12-23 | 基于utxo模型的低存储消耗的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591194.3A CN114328518A (zh) | 2021-12-23 | 2021-12-23 | 基于utxo模型的低存储消耗的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328518A true CN114328518A (zh) | 2022-04-12 |
Family
ID=81054887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111591194.3A Pending CN114328518A (zh) | 2021-12-23 | 2021-12-23 | 基于utxo模型的低存储消耗的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328518A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723564A (zh) * | 2022-06-01 | 2022-07-08 | 杭州天谷信息科技有限公司 | 一种区块链生成方法以及区块链结构 |
CN115510037A (zh) * | 2022-11-14 | 2022-12-23 | 杭州天谷信息科技有限公司 | 一种基于业务主题的区块链数据删除方法及系统 |
-
2021
- 2021-12-23 CN CN202111591194.3A patent/CN114328518A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723564A (zh) * | 2022-06-01 | 2022-07-08 | 杭州天谷信息科技有限公司 | 一种区块链生成方法以及区块链结构 |
CN114723564B (zh) * | 2022-06-01 | 2022-10-28 | 杭州天谷信息科技有限公司 | 一种区块链生成方法以及区块链结构 |
CN115510037A (zh) * | 2022-11-14 | 2022-12-23 | 杭州天谷信息科技有限公司 | 一种基于业务主题的区块链数据删除方法及系统 |
CN115510037B (zh) * | 2022-11-14 | 2023-03-28 | 杭州天谷信息科技有限公司 | 一种基于业务主题的区块链数据删除方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bünz et al. | Flyclient: Super-light clients for cryptocurrencies | |
EP3693886B1 (en) | Optimizations for verification of interactions system and method | |
JP6955026B2 (ja) | 並列処理ブロックチェーントランザクションのためのシステムおよび方法 | |
US11810018B2 (en) | Secure provision of undetermined data from an undetermined source into the locking script of a blockchain transaction | |
KR20210003234A (ko) | 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것 | |
CN110046894B (zh) | 一种基于纠删码的分组可重构区块链建立方法 | |
CN107276762B (zh) | 一种多协议区块链的工作方法及装置 | |
CN102938767B (zh) | 基于云数据外包系统的高效可验证的模糊关键词搜索方法 | |
CN106452785A (zh) | 区块链网络、分支节点及区块链网络应用方法 | |
US11468044B2 (en) | Optimizations for verification of interactions system and method using probability density functions | |
US20210073796A1 (en) | Method of selective authentication of a blockchain user with a smart contract | |
CN114328518A (zh) | 基于utxo模型的低存储消耗的方法和系统 | |
CN111209591B (zh) | 一种按时间排序的存储结构与快速查询的方法 | |
Ramezan et al. | Analysis of proof-of-work-based blockchains under an adaptive double-spend attack | |
Chen et al. | Reducing participation costs via incremental verification for ledger systems | |
CN110263584A (zh) | 一种基于区块链的数据完整性审计方法和系统 | |
Landerreche et al. | Non-interactive cryptographic timestamping based on verifiable delay functions | |
Saad et al. | Decentralized directed acyclic graph based dlt network | |
KR102349014B1 (ko) | 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템 | |
CN113810185B (zh) | 一种抗陷门泄露的链上数据修复系统及方法 | |
Fekkes et al. | Comparing Bitcoin and Ethereum | |
Junxiang et al. | Dynamic provable data possession with batch-update verifiability | |
Zhang et al. | Blockchain data provenance scheme based on grouping consensus and bm tree | |
CN111414421A (zh) | 一种分段式区块链存储方法和存储装置 | |
CN112671712A (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 |