【技术实现步骤摘要】
一种默克尔状态树同步方法、设备及存储介质
本专利技术涉及区块链等
,尤其涉及一种默克尔状态树同步方法、设备及存储介质。
技术介绍
当前区块链系统中,通常会利用默克尔树(MerkleTree)、默克尔平衡二叉树(MAVL)、MerklePatriciaTries(MPT)树等对区块链的状态数据(如账户余额等)进行存储,利用这些数据结构,可以对区块链账户进行有效管理,保证整个区块链账户的全局一致性,现有的同步方案,主要是通过对端节点,获取区块数据,然后通过对交易进行回放,来进行区块链节点同步。现有的同步方案,主要是通过从对端节点获取交易数据,然后对交易数据进行回放,进行区块链数据的同步,在该种方案下,同步数据比较缓慢。有些改进的方案如中国专利技术专利申请,公布号CN109542979A及公布号为CN108243253A、以及以太坊快速同步通过从某一个高度,获取区块链的状态的方案,这些方案都对同步速度有较大改善,但是这些会给对端节点造成较大压力,如从对端节点获取Merkle树节点时候,也会直接在数据库中查找,需要消耗 ...
【技术保护点】
1.一种默克尔状态树同步方法,其特征在于,包括:将指定区块链网络中指定区块高度的默克尔状态树划分成一个以上的分支子树,并为所述一个以上的分支子树编号形成分支子树前缀列表;/n获取所述指定区块链网络中的区块链节点列表,将分支子树前缀列表的每项分别作为一个下载请求按顺序发送给区块链节点;接收到所有的下载结果后,拼凑成完整的默克尔状态树。/n
【技术特征摘要】
1.一种默克尔状态树同步方法,其特征在于,包括:将指定区块链网络中指定区块高度的默克尔状态树划分成一个以上的分支子树,并为所述一个以上的分支子树编号形成分支子树前缀列表;
获取所述指定区块链网络中的区块链节点列表,将分支子树前缀列表的每项分别作为一个下载请求按顺序发送给区块链节点;接收到所有的下载结果后,拼凑成完整的默克尔状态树。
2.根据权利要求1所述的方法,其特征在于,所述将指定区块链网络中指定区块高度的默克尔状态树划分成一个以上的分支子树,并为所述一个以上的分支子树编号形成分支子树前缀列表,进一步为:
获取指定区块链网络中指定区块高度的默克尔状态树的高度H;
根据区块链节点一次可下载的数据量大小E,预期的叶子节点大小F计算区块链节点一次可下载的默克尔状态树叶子节点数Size:Size=INT(E/F);计算分支子树的高度H1:
H1=log(Size);
计算为分支子树编号所需的二进制位数N:N=H-H1;
从左到右为默克尔状态树中包含Size个叶子节点的分支子树编号,对应的十进制数字分别为:0、1、2、、、、、、、2N-1、2N-1;
将除了分支子树之外的其余默克尔状态树节点作为一个优先下载请求,每个分支子树分别作为一个下载请求,放入分支子树前缀列表。
3.根据权利要求1所述的方法,其特征在于,所述下载请求包括分支子树编号和分支子树高度H1。
4.根据权利要求1所述的方法,其特征在于,包括:
当区块链节点数小于下载请求数时,按照除了分支子树之外的其余默克尔状态树节点作为一个下载请求优先发送到区块链节点,其余下载请求按照顺序向每个区块链节点遍历发送下载请求。
5.根据权利要求1所述的方法,其特征在于,包括:
当下载超时,则重新向其他可以...
【专利技术属性】
技术研发人员:林敬,王志文,曹兢,李斌,吴思进,
申请(专利权)人:杭州复杂美科技有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。