The invention provides a state tree data storage method, a synchronization method, a device and a storage medium, which include: caching and updating the state tree data in memory in real time; storing the state tree data of the first block height in memory to the local database in a number of predetermined first block heights, and updating the index and block heights of the latest state tree data in the local database. By storing the state tree data in the memory, and when reaching certain set block heights, the state tree data of each specific block height is stored in the local database, and it is unnecessary to search the state tree data from the state tree database, greatly improving the synchronization speed, and avoiding excessive IO resources consumption in the search process.
【技术实现步骤摘要】
一种状态树数据存储方法、同步方法及设备和存储介质
本申请涉及信息存储
,具体涉及区块链的一种状态树数据存储方法、同步方法及设备和存储介质。
技术介绍
当前区块链系统中,通常会利用默克尔树,默克尔平衡二叉树等对区块链的状态树数据(如账户余额等)进行存储,而在区块同步时,通常是由请求节点将对端节点的各区块中的交易执行后生成状态数据,这种方案同步数据比较缓慢。《CN109542979》、《CN108243253》以及以太坊快速同步可以实现从某一高度获取状态树数据,虽然对同步速度有了一定的改善,但是这些会给被请求节点带来较大的压力,如从对端节点获取默克尔树节点的时候,也会从数据库中查找,需要消耗较多的IO资源,而且也不能快速的查找某一区块高度的状态树数据。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种高效、快速的一种状态树数据存储方法、同步方法及设备和存储介质。第一方面,本专利技术提供一种状态树数据存储方法,包括:在内存中缓存并实时更新状态树数据;在若干预指定的第一区块高度将内存中的第一区块高度的状态树数据存储到本地数据库,并更新本地数据库中最新状态树数据的索引和区块高度;其中,索引和区块高度用于查找当前节点的本地数据库中的区块高度的状态树数据,以供第二节点获取当前节点的本地数据库中的最新状态树数据,并在若干区块链节点中选取目标节点以进行状态树数据的同步。进一步,选取目标节点后还包括:判断目标节点的同步高度的第一状态哈希与区块链上同步高度的区块的第二状态哈希是否一致以确定目标节点是否为可信任节点。进一步,第一同步高度不大于当前高度和回滚高度的差值。 ...
【技术保护点】
1.一种状态树数据存储方法,其特征在于,包括:在内存中缓存并实时更新状态树数据;在若干预指定的第一区块高度将内存中的所述第一区块高度的状态树数据存储到本地数据库,并更新所述本地数据库中最新状态树数据的索引和区块高度;其中,所述索引和所述区块高度用于查找当前节点的本地数据库中的所述区块高度的状态树数据,以供第二节点获取当前节点的本地数据库中的最新状态树数据,并在若干区块链节点中选取目标节点以进行状态树数据的同步。
【技术特征摘要】
1.一种状态树数据存储方法,其特征在于,包括:在内存中缓存并实时更新状态树数据;在若干预指定的第一区块高度将内存中的所述第一区块高度的状态树数据存储到本地数据库,并更新所述本地数据库中最新状态树数据的索引和区块高度;其中,所述索引和所述区块高度用于查找当前节点的本地数据库中的所述区块高度的状态树数据,以供第二节点获取当前节点的本地数据库中的最新状态树数据,并在若干区块链节点中选取目标节点以进行状态树数据的同步。2.根据权利要求1所述的方法,其特征在于,所述选取目标节点后还包括:判断所述目标节点的同步高度的第一状态哈希与区块链上所述同步高度的区块的第二状态哈希是否一致以确定所述目标节点是否为可信任节点。3.根据权利要求2所述的方法,其特征在于,所述第一同步高度不大于当前高度和回滚高度的差值。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:判断当前节点的本地数据库中的最高区块高度的上一个区块高度的区块状态树数据是否正在被其他区块链节点同步:否,则删除一个区块高度的区块状态树数据。5.根据权利要求1-4任一项所述的方法,其特征在于,所述在内存中缓存并实时更新状态树数据包括:将执行第一区块所需存储的各节点分别存入相应的第一区块高度的第一缓存队列、所需删除的各节点分别存入所述第一区块高度的第二缓存队列;从当前内存所缓存的状态树数据中删除所述第二缓存队列的各节点;在当前内存所缓存的状态树数据中增加所述第一缓存队列的各节点。6.一种状态树数据同步方法,所同步的状态树数据由被请求节点根据权利要求1-4所述的存储方法存储,所述方法适用于请求节点,其特征在于,所述方法包括:向若干节点分别发送同步请求信息以分别获取各所述被请求节点在本地数据库中存储的最高区块高度;根据各最高区块高度生成各第一同...
【专利技术属性】
技术研发人员:柳宇航,王志文,吴思进,
申请(专利权)人:杭州复杂美科技有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。