CN115860742A - 区块链中轻节点的数据同步方法、节点、存储介质及设备 - Google Patents
区块链中轻节点的数据同步方法、节点、存储介质及设备 Download PDFInfo
- Publication number
- CN115860742A CN115860742A CN202310167843.XA CN202310167843A CN115860742A CN 115860742 A CN115860742 A CN 115860742A CN 202310167843 A CN202310167843 A CN 202310167843A CN 115860742 A CN115860742 A CN 115860742A
- Authority
- CN
- China
- Prior art keywords
- mmr
- block
- root
- transaction
- head
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种区块链中轻节点的数据同步方法、节点、存储介质及设备,属于区块链技术领域。方法包括:当块高为n‑1的轻节点同步第n个区块的数据时,向全节点获取第n个区块的区块信息和MMR头,MMR头包括当前区块的交易根和前一区块的MMR根,交易根是根据所有交易哈希计算得到的,MMR根是根据默克尔山脉算法对MMR证明进行计算得到的;获取本地存储的第n‑1个区块的MMR根;根据第n‑1个区块的MMR根、第n个区块的区块信息和MMR根进行验证;当验证通过时,将第n个区块的MMR头和MMR证明同步至本地。本申请能减轻轻节点的存储压力,还能保证同步过程中的安全性。
Description
技术领域
本申请实施例涉及区块链技术领域,特别涉及一种区块链中轻节点的数据同步方法、节点、存储介质及设备。
背景技术
区块链数据为链式账本数据,链上账户的状态是由账本数据(交易数据)执行后的结果所产生,从而导致了链上数据包括区块数据(区块信息和交易信息)以及状态数据(交易执行后的结果),而且随着时间的积累,账本数据会不断的膨胀。同时,由于区块链的状态是由从创世块开始的每个块中的每笔交易执行累加的结果,因此,需要基于完整的账本数据来验证最新的状态,这就要求很多运行中的全节点需要存储全量的账本数据,这对于仅需做查询操作的轻节点来说,存储压力较大。
发明内容
本申请实施例提供了一种区块链中轻节点的数据同步方法、节点、存储介质及设备,用于解决区块链的状态不断膨胀,导致轻节点的存储压力不断增加的问题。所述技术方案如下:
一方面,提供了一种区块链中轻节点的数据同步方法,所述方法包括:
当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取所述第n个区块的区块信息和默克尔山脉MMR头,所述MMR头包括当前区块的交易根和前一区块的MMR根,所述交易根是根据当前区块内所有交易哈希计算得到的,所述MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,所述MMR证明包括对所有区块的MMR头进行二叉树排列后,位于所述二叉树中预定位置处的MMR头的哈希,n≥1;
获取本地存储的第n-1个区块的MMR根;
根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证;
当验证通过时,将所述第n个区块的MMR头和MMR证明同步至本地。
在一种可能的实现方式中,所述根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证,包括:
从所述第n个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述第n个区块的MMR头中的交易根是否一致;
验证所述第n个区块的MMR头中的MMR根与本地存储的所述第n-1个区块的MMR根是否一致。
在一种可能的实现方式中,所述方法还包括:
当所述轻节点的块高与需要同步的区块的块高m不连续时,向区块链中的全节点获取第m个区块的区块信息、MMR头和MMR证明,m≥1;
根据所述第m个区块的区块信息、MMR头和MMR证明进行验证;
当验证通过时,将所述第m个区块的MMR头和MMR证明同步至本地。
在一种可能的实现方式中,所述根据所述第m个区块的区块信息、MMR头和MMR证明进行验证,包括:
从所述第m个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述第m个区块的MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述第m个区块的MMR头中的MMR根是否一致。
在一种可能的实现方式中,所述方法还包括:
接收携带有对象标识的查询请求,所述对象标识是交易标识或区块标识;
根据所述对象标识向区块链中的全节点查询对象信息;
对所述对象信息进行验证;
在验证通过后,将所述对象信息同步至本地。
在一种可能的实现方式中,当所述对象标识是交易标识时,所述对象信息包括交易信息、交易树的默克尔证明、所述交易所属区块的MMR头和MMR证明,则所述对所述对象信息进行验证,包括:
验证所述对象信息中的MMR头与本地存储的MMR头是否一致;
根据所述交易信息计算交易哈希,验证计算得到的交易哈希与根据所述默克尔证明得到的交易哈希是否一致;
根据所述默克尔证明获取所述交易所属区块的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述MMR头中的MMR根是否一致。
在一种可能的实现方式中,当所述对象标识是区块标识时,所述对象信息包括区块信息、MMR头和MMR证明,则所述对所述对象信息进行验证,包括:
验证所述对象信息中的MMR头与本地存储的MMR头是否一致;
根据所述区块信息计算区块哈希,验证计算得到的区块哈希与所述MMR头中的区块哈希是否一致;
获取所述区块信息中的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述MMR头中的MMR根是否一致。
一方面,提供了一种区块链中的轻节点,所述轻节点包括:
获取模块,用于当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取所述第n个区块的区块信息和默克尔山脉MMR头,所述MMR头包括当前区块的交易根和前一区块的MMR根,所述交易根是根据当前区块内所有交易哈希计算得到的,所述MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,所述MMR证明包括对所有区块的MMR头进行二叉树排列后,位于所述二叉树中预定位置处的MMR头的哈希,n≥1;
所述获取模块,还用于获取本地存储的第n-1个区块的MMR根;
验证模块,用于根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证;
同步模块,用于当验证通过时,将所述第n个区块的MMR头和MMR证明同步至本地。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的区块链中轻节点的数据同步方法。
一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的区块链中轻节点的数据同步方法。
本申请实施例提供的技术方案的有益效果至少包括:
轻节点只需要同步一个区块的MMR头和MMR证明,相比于需要存储全量的区块头来说,可以减轻轻节点的存储压力。并且,轻节点可以对区块信息和MMR头进行校验,并不会牺牲轻节点同步过程中的安全性。
轻节点可以从最新区块开始同步,相比于需要从头开始同步所有区块的区块头来说,可以减轻轻节点的存储压力。
轻节点可以针对交易和区块进行存在性证明,可以保证通过轻节点查询到的交易信息和区块信息是真实可靠的。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的链式的数据结构的示意图;
图2是本申请一个实施例提供的轻节点的数据同步方法的方法流程图;
图3是本申请一个实施例提供的设备的轻节点与可信节点的连接示意图;
图4是本申请一个实施例提供的设备的轻节点与共识节点和只读节点的连接示意图;
图5是本申请一个实施例提供的区块链中轻节点的数据同步方法的方法流程图;
图6是本申请一个实施例提供的存在性证明方法的方法流程图;
图7是本申请一个实施例提供的区块链中的轻节点的结构框图;
图8是本申请一个实施例提供的区块链中的轻节点的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本实施例中,针对区块链中的所有区块生成链式的数据结构,其中,每个区块对应于数据结构中的一个MMR(Merkle Mountain Ranges,默克尔山脉)头mmr_header。请参考图1,MMR头mmr_header包括区块哈希block_hash、交易根transacton_root、状态根state_root和前一个区块的MMR根pre_mmr_root。下面分别对这四种数据的计算过程进行解释。
(1)区块哈希block_hash
区块哈希block_hash是采用哈希算法对区块信息进行计算得到的。即,block_hash=HASH(block_bytes),其中,block_bytes表示区块信息,HASH()表示哈希算法。
(2)交易根transacton_root
交易根transacton_root是根据当前区块内所有交易哈希计算得到的。换句话说,交易根是当前区块内所有交易哈希的默克尔树根。即,transacton_root=MERKLE_TREE(tx_hash1, tx_hash2,.....),其中,tx_hash表示交易哈希。
(3)状态根state_root
状态根state_root是将区块链上的所有交易按照区块顺序以及区块中的排序进行顺序,并顺序执行后得到键-值对(key-value),将所有键-值对按照Merkle PatriciaTries算法求出的根结果。即,state_root=MERKLE_PATRICIA_TRIES(kv1, kv2, kv3,...),其中,kv表示键-值对。
(4)MMR根mmr_root
MMR根mmr_root是根据MMR算法对区块的MMR证明mmr_proof进行计算得到的,MMR证明mmr_proof包括对所有区块的MMR头mmr_header进行二叉树排列后,位于二叉树中预定位置处的MMR头mmr_header的哈希。即,mmr_root=MMR(mmr_header_hash1, mmr_header_hash2,...),其中,mmr_header_hash表示MMR头哈希。
请参考图2,下面对轻节点的数据同步方法进行说明。
步骤201,当轻节点的块高与需要同步的区块的块高m不连续时,向区块链中的全节点获取第m个区块的区块信息、MMR头和MMR证明。
其中,m≥1。
当轻节点上线后第一次进行数据同步时,会导致轻节点的块高与需要同步的区块的块高不连续。这里所说的上线可以是第一次上线,也可以是离线之后的再次上线。
在轻节点301上线后,可以连接可信节点302,以获取当前最新块高的共识地址和节点列表,如图3所示。其中,轻节点301是指存储敏感型节点,可信节点302是包含全量的区块信息和至少最新的状态数据的全节点,该全节点既包括共识节点也包括非共识节点。
请参考图4,在获取到当前最新块高的共识地址和节点列表后,轻节点401可以从其他节点同步数据。具体的,轻节点401尝试对节点列表上的全节点建立连接,轻节点401既可以连接共识节点402,也可以连接只读节点403,共识节点402或只读节点403都可以响应轻节点401的同步请求,并向轻节点401反馈第m个区块的区块信息block、MMR头mmr_header和MMR证明mmr_proof。
需要说明的是,根据拜占庭容错(Byzantine Fault Tolerance,BFT)共识的特性,外加共识信息签名信息会记录在区块中,可以确保轻节点所收到区块中有满足拜占庭容错共识要求地址签名,以及签名数量满足2f+1的情况。
步骤202,根据第m个区块的区块信息、MMR头和MMR证明进行验证。
本实施例中,轻节点需要进行两次验证。
(1)第一次验证是:轻节点从第m个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与第m个区块的MMR头中的交易根是否一致。即,mmr_root==MMR_PROOF_VERIFY(mmr_proof)。若计算得到的交易根与第m个区块的MMR头中的交易根一致,则认为第一次验证通过;若计算得到的交易根与第m个区块的MMR头中的交易根不一致,则认为第一次验证未通过。
(2)第二次验证是:轻节点根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与第m个区块的MMR头中的MMR根是否一致。即,transaction_root==MERKLE_TREE(tx_hash1, tx_hash2,.....)。若计算得到的MMR根与第m个区块的MMR头中的MMR根一致,则认为第二次验证通过;若计算得到的MMR根与第m个区块的MMR头中的MMR根不一致,则认为第二次验证未通过。
只有两次验证都通过,轻节点才会认为验证通过,执行步骤203;否则,轻节点会认为验证不通过,需要重新进行数据同步。
步骤203,当验证通过时,将第m个区块的MMR头和MMR证明同步至本地。
轻节点存储第m个区块的MMR头mmr_header以及MMR证明mmr_proof,然后,轻节点可以在第m个区块的基础上继续进行后续区块的数据同步,在这个过程中,区块信息及交易信息都不会被存储在轻节点中。
在拜占庭容错算法中,如果由于共识节点的变更而导致上述共识检查在某一块高无法通过时,轻节点需要向上述全节点重新同步该块高下最新的共识节点列表信息,以保证共识检查是正确的。
需要说明的是,本实施例中所说的数据同步是指同步一个区块的MMR头mmr_header以及MMR证明mmr_proof,并不是指同步区块的区块头,下文不再赘述。
请参考图5,其示出了本申请一个实施例提供的区块链中轻节点的数据同步方法的方法流程图,可以应用于包括图1所示的节点同步***中。该区块链中轻节点的数据同步方法,可以包括:
步骤501,当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取第n个区块的区块信息和MMR头。
其中,MMR头包括当前区块的交易根和前一区块的MMR根,交易根是根据当前区块内所有交易哈希计算得到的,MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,MMR证明包括对所有区块的MMR头进行二叉树排列后,位于二叉树中预定位置处的MMR头的哈希,n≥1。
当块高为n-1的轻节点需要同步第n个区块的数据时,说明轻节点中已经同步有第n-1个区块的数据,再此基础上同步第n个区块的数据。
具体的,轻节点向全节点发送同步请求,全节点向轻节点反馈第n个区块的区块信息block和MMR头mmr_header。
需要说明的是,根据拜占庭容错(BFT)共识的特性,外加共识信息签名信息会记录在区块中,可以确保轻节点所收到区块中有满足拜占庭容错共识要求地址签名,以及签名数量满足2f+1的情况。
步骤502,获取本地存储的第n-1个区块的MMR根。
轻节点从本地存储的第n-1个区块的MMR头中读取MMR根。
步骤503,根据第n-1个区块的MMR根、第n个区块的区块信息和MMR根进行验证。
本实施例中,轻节点需要进行两次验证。
(1)第一次验证是:轻节点从第n个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与第n个区块的MMR头中的交易根是否一致。即,transaction_root==MERKLE_TREE(tx_hash1, tx_hash2,.....)。若计算得到的交易根与第n个区块的MMR头中的交易根一致,则认为第一次验证通过;若计算得到的交易根与第n个区块的MMR头中的交易根不一致,则认为第一次验证未通过。
(2)第二次验证是:轻节点验证第n个区块的MMR头中的MMR根与本地存储的第n-1个区块的MMR根是否一致。即,current_mmr_header.pre_mmr_root==light_node_mmr_root,也就是说轻节点中第n-1个区块的MMR根mmr_root和第n个区块的MMR头mmr_header内的MMR头pre_mmr_root是否一致。若计算得到的MMR根与第n-1个区块的MMR头中的MMR根一致,则认为第二次验证通过;若计算得到的MMR根与第n-1个区块的MMR头中的MMR根不一致,则认为第二次验证未通过。
只有两次验证都通过,轻节点才会认为验证通过,执行步骤504;否则,轻节点会认为验证不通过,需要重新进行数据同步。
步骤504,当验证通过时,将第n个区块的MMR头和MMR证明同步至本地。
轻节点存储第n个区块的MMR头mmr_header以及MMR证明mmr_proof,然后,轻节点可以在第n个区块的基础上继续进行后续区块的数据同步,在这个过程中,区块信息及交易信息都不会被存储在轻节点中。
在拜占庭容错算法中,如果由于共识节点的变更而导致上述共识检查在某一块高无法通过时,轻节点需要向上述全节点重新同步该块高下最新的共识节点列表信息,以保证共识检查是正确的。
综上所述,本申请实施例提供的区块链中轻节点的数据同步方法,轻节点只需要同步一个区块的MMR头和MMR证明,相比于需要存储全量的区块头来说,可以减轻轻节点的存储压力。并且,轻节点可以对区块信息和MMR头进行校验,并不会牺牲轻节点同步过程中的安全性。
轻节点可以从最新区块开始同步,相比于需要从头开始同步所有区块的区块头来说,可以减轻轻节点的存储压力。
请参考图6,本实施例提供了一种存在性证明方法,存在性证明后同步的区块或交易被认定为热数据永久存储在轻节点中,供之后的查询使用。
步骤601,接收携带有对象标识的查询请求,该对象标识是交易标识或区块标识。
当需要查询交易时,查询请求中携带的对象标识为交易标识;当需要查询区块时,查询请求中携带的对象标识为区块标识。
步骤602,根据对象标识向区块链中的全节点查询对象信息。
当对象标识是交易标识时,对象信息包括交易信息、交易树的默克尔证明、交易所属区块的MMR头和MMR证明;当对象标识是区块标识时,对象信息包括区块信息、MMR头和MMR证明。
步骤603,对对象信息进行验证。
当对象信息包括交易信息、交易树的默克尔证明、交易所属区块的MMR头和MMR证明时,对对象信息进行验证可以包括四次验证:
(1)验证对象信息中的MMR头与本地存储的MMR头是否一致。即,mmr_header==轻节点已存储的mrr_header。若对象信息中的MMR头与本地存储的MMR头一致,则认为第一次验证通过;若对象信息中的MMR头与本地存储的MMR头不一致,则认为第一次验证未通过。
(2)根据交易信息计算交易哈希,验证计算得到的交易哈希与根据默克尔证明得到的交易哈希是否一致。即,HASH(交易信息)==transaction_hash。若计算得到的交易哈希与根据默克尔证明得到的交易哈希一致,则认为第二次验证通过;若计算得到的交易哈希与根据默克尔证明得到的交易哈希不一致,则认为第二次验证未通过。
(3)根据默克尔证明获取交易所属区块的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与MMR头中的交易根是否一致。即,MERKLE_TREE (区块内所有交易信息)==transaction_root。若计算得到的交易根与MMR头中的交易根一致,则认为第三次验证通过;若计算得到的交易根与MMR头中的交易根不一致,则认为第三次验证未通过。
(4)根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与MMR头中的MMR根是否一致。即,mmr_root==MMR_PROOF_VERIFY(mmr_proof)。若计算得到的MMR根与MMR头中的MMR根一致,则认为第四次验证通过;若计算得到的MMR根与MMR头中的MMR根不一致,则认为第四次验证未通过。
只有四次验证都通过,轻节点才会认为验证通过,执行步骤604;否则,轻节点会认为验证不通过,需要重新进行交易存在性证明。
当对象信息包括区块信息、MMR头和MMR证明时,对对象信息进行验证可以包括四次验证:
(1)验证对象信息中的MMR头与本地存储的MMR头是否一致。即,mmr_header==轻节点已存储的mrr_header。若对象信息中的MMR头与本地存储的MMR头一致,则认为第一次验证通过;若对象信息中的MMR头与本地存储的MMR头不一致,则认为第一次验证未通过。
(2)根据区块信息计算区块哈希,验证计算得到的区块哈希与MMR头中的区块哈希是否一致。即,HASH(区块信息)==mmr_header.block_hash。若计算得到的区块哈希与MMR头中的区块哈希一致,则认为第二次验证通过;若计算得到的区块哈希与MMR头中的区块哈希不一致,则认为第二次验证未通过。
(3)获取区块信息中的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与MMR头中的交易根是否一致。即,MERKLE_TREE (区块内的所有交易)==mmr_header.transaction_root。若计算得到的交易根与MMR头中的交易根一致,则认为第三次验证通过;若计算得到的交易根与MMR头中的交易根不一致,则认为第三次验证未通过。
(4)根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与MMR头中的MMR根是否一致。即,mmr_root==MMR_PROOF_VERIFY(mmr_proof)。若计算得到的MMR根与MMR头中的MMR根一致,则认为第四次验证通过;若计算得到的MMR根与MMR头中的MMR根不一致,则认为第四次验证未通过。
只有四次验证都通过,轻节点才会认为验证通过,执行步骤604;否则,轻节点会认为验证不通过,需要重新进行区块存在性证明。
步骤604,在验证通过后,将对象信息同步至本地。
在交易存在性验证通过后,轻节点可将交易信息存入数据库。或者,在区块存在性验证通过后,轻节点可将区块信息存入数据库。
本实施例中,轻节点可以针对交易和区块进行存在性证明,可以保证通过轻节点查询到的交易信息和区块信息是真实可靠的。
请参考图7,其示出了本申请一个实施例提供的区块链中的轻节点的结构框图,该轻节点可以包括:
获取模块710,用于当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取第n个区块的区块信息和MMR头,MMR头包括当前区块的交易根和前一区块的MMR根,交易根是根据当前区块内所有交易哈希计算得到的,MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,MMR证明包括对所有区块的MMR头进行二叉树排列后,位于二叉树中预定位置处的MMR头的哈希,n≥1;
获取模块710,还用于获取本地存储的第n-1个区块的MMR根;
验证模块720,用于根据第n-1个区块的MMR根、第n个区块的区块信息和MMR根进行验证;
同步模块730,用于当验证通过时,将第n个区块的MMR头和MMR证明同步至本地。
在一个可选的实施例中,验证模块720,还用于:
从第n个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与第n个区块的MMR头中的交易根是否一致;
验证第n个区块的MMR头中的MMR根与本地存储的第n-1个区块的MMR根是否一致。
在一个可选的实施例中,获取模块710,还用于当轻节点的块高与需要同步的区块的块高m不连续时,向区块链中的全节点获取第m个区块的区块信息、MMR头和MMR证明,m≥1;
验证模块720,还用于根据第m个区块的区块信息、MMR头和MMR证明进行验证;
同步模块730,还用于当验证通过时,将第m个区块的MMR头和MMR证明同步至本地。
在一个可选的实施例中,验证模块720,还用于:
从第m个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与第m个区块的MMR头中的交易根是否一致;
根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与第m个区块的MMR头中的MMR根是否一致。
请参考图8,在一个可选的实施例中,该装置还包括:
接收模块740,用于接收携带有对象标识的查询请求,对象标识是交易标识或区块标识;
查询模块750,用于根据对象标识向区块链中的全节点查询对象信息;
验证模块720,还用于对对象信息进行验证;
同步模块730,还用于在验证通过后,将对象信息同步至本地。
在一个可选的实施例中,当对象标识是交易标识时,对象信息包括交易信息、交易树的默克尔证明、交易所属区块的MMR头和MMR证明,则验证模块720,还用于:
验证对象信息中的MMR头与本地存储的MMR头是否一致;
根据交易信息计算交易哈希,验证计算得到的交易哈希与根据默克尔证明得到的交易哈希是否一致;
根据默克尔证明获取交易所属区块的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与MMR头中的交易根是否一致;
根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与MMR头中的MMR根是否一致。
在一个可选的实施例中,当对象标识是区块标识时,对象信息包括区块信息、MMR头和MMR证明,则验证模块720,还用于:
验证对象信息中的MMR头与本地存储的MMR头是否一致;
根据区块信息计算区块哈希,验证计算得到的区块哈希与MMR头中的区块哈希是否一致;
获取区块信息中的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与MMR头中的交易根是否一致;
根据MMR算法对MMR证明进行计算,验证计算得到的MMR根与MMR头中的MMR根是否一致。
综上所述,本申请实施例提供的区块链中的轻节点,轻节点只需要同步一个区块的MMR头和MMR证明,相比于需要存储全量的区块头来说,可以减轻轻节点的存储压力。并且,轻节点可以对区块信息和MMR头进行校验,并不会牺牲轻节点同步过程中的安全性。
轻节点可以从最新区块开始同步,相比于需要从头开始同步所有区块的区块头来说,可以减轻轻节点的存储压力。
轻节点可以针对交易和区块进行存在性证明,可以保证通过轻节点查询到的交易信息和区块信息是真实可靠的。
本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的区块链中轻节点的数据同步方法。
本申请一个实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的区块链中轻节点的数据同步方法。
需要说明的是:上述实施例提供的区块链中的轻节点在进行区块链中轻节点的数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将区块链中的轻节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的区块链中的轻节点与区块链中轻节点的数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (10)
1.一种区块链中轻节点的数据同步方法,其特征在于,所述方法包括:
当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取所述第n个区块的区块信息和默克尔山脉MMR头,所述MMR头包括当前区块的交易根和前一区块的MMR根,所述交易根是根据当前区块内所有交易哈希计算得到的,所述MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,所述MMR证明包括对所有区块的MMR头进行二叉树排列后,位于所述二叉树中预定位置处的MMR头的哈希,n≥1;
获取本地存储的第n-1个区块的MMR根;
根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证;
当验证通过时,将所述第n个区块的MMR头和MMR证明同步至本地。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证,包括:
从所述第n个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述第n个区块的MMR头中的交易根是否一致;
验证所述第n个区块的MMR头中的MMR根与本地存储的所述第n-1个区块的MMR根是否一致。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述轻节点的块高与需要同步的区块的块高m不连续时,向区块链中的全节点获取第m个区块的区块信息、MMR头和MMR证明,m≥1;
根据所述第m个区块的区块信息、MMR头和MMR证明进行验证;
当验证通过时,将所述第m个区块的MMR头和MMR证明同步至本地。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第m个区块的区块信息、MMR头和MMR证明进行验证,包括:
从所述第m个区块的区块信息中获取所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述第m个区块的MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述第m个区块的MMR头中的MMR根是否一致。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
接收携带有对象标识的查询请求,所述对象标识是交易标识或区块标识;
根据所述对象标识向区块链中的全节点查询对象信息;
对所述对象信息进行验证;
在验证通过后,将所述对象信息同步至本地。
6.根据权利要求5所述的方法,其特征在于,当所述对象标识是交易标识时,所述对象信息包括交易信息、交易树的默克尔证明、所述交易所属区块的MMR头和MMR证明,则所述对所述对象信息进行验证,包括:
验证所述对象信息中的MMR头与本地存储的MMR头是否一致;
根据所述交易信息计算交易哈希,验证计算得到的交易哈希与根据所述默克尔证明得到的交易哈希是否一致;
根据所述默克尔证明获取所述交易所属区块的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述MMR头中的MMR根是否一致。
7.根据权利要求5所述的方法,其特征在于,当所述对象标识是区块标识时,所述对象信息包括区块信息、MMR头和MMR证明,则所述对所述对象信息进行验证,包括:
验证所述对象信息中的MMR头与本地存储的MMR头是否一致;
根据所述区块信息计算区块哈希,验证计算得到的区块哈希与所述MMR头中的区块哈希是否一致;
获取所述区块信息中的所有交易哈希,根据所有交易哈希计算交易根,验证计算得到的交易根与所述MMR头中的交易根是否一致;
根据MMR算法对所述MMR证明进行计算,验证计算得到的MMR根与所述MMR头中的MMR根是否一致。
8.一种区块链中的轻节点,其特征在于,所述轻节点包括:
获取模块,用于当块高为n-1的轻节点需要同步第n个区块的数据时,向区块链中的全节点获取所述第n个区块的区块信息和默克尔山脉MMR头,所述MMR头包括当前区块的交易根和前一区块的MMR根,所述交易根是根据当前区块内所有交易哈希计算得到的,所述MMR根是根据MMR算法对当前区块的MMR证明进行计算得到的,所述MMR证明包括对所有区块的MMR头进行二叉树排列后,位于所述二叉树中预定位置处的MMR头的哈希,n≥1;
所述获取模块,还用于获取本地存储的第n-1个区块的MMR根;
验证模块,用于根据所述第n-1个区块的MMR根、所述第n个区块的区块信息和MMR根进行验证;
同步模块,用于当验证通过时,将所述第n个区块的MMR头和MMR证明同步至本地。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一所述的区块链中轻节点的数据同步方法。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至7任一所述的区块链中轻节点的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310167843.XA CN115860742B (zh) | 2023-02-27 | 2023-02-27 | 区块链中轻节点的数据同步方法、节点、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310167843.XA CN115860742B (zh) | 2023-02-27 | 2023-02-27 | 区块链中轻节点的数据同步方法、节点、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115860742A true CN115860742A (zh) | 2023-03-28 |
CN115860742B CN115860742B (zh) | 2023-06-27 |
Family
ID=85659056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310167843.XA Active CN115860742B (zh) | 2023-02-27 | 2023-02-27 | 区块链中轻节点的数据同步方法、节点、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115860742B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681900A (zh) * | 2018-07-18 | 2018-10-19 | 众安信息技术服务有限公司 | 轻节点验证交易的方法 |
CN111680049A (zh) * | 2020-05-15 | 2020-09-18 | 杭州趣链科技有限公司 | 一种基于区块链的物联网数据的处理方法及其处理装置 |
CN112287033A (zh) * | 2020-12-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112287034A (zh) * | 2020-12-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112887365A (zh) * | 2021-01-08 | 2021-06-01 | 浙江泰科数联信息技术有限公司 | 基于mmr算法区块链的超轻量级节点验证方法及装置 |
CN114416883A (zh) * | 2022-01-27 | 2022-04-29 | 成都质数斯达克科技有限公司 | 区块链轻节点数据同步方法、装置、设备及可读存储介质 |
US20220368538A1 (en) * | 2021-04-27 | 2022-11-17 | ToposWare Japan Inc. | Zero-knowledge proof based cross-chain interoperability |
-
2023
- 2023-02-27 CN CN202310167843.XA patent/CN115860742B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681900A (zh) * | 2018-07-18 | 2018-10-19 | 众安信息技术服务有限公司 | 轻节点验证交易的方法 |
CN111680049A (zh) * | 2020-05-15 | 2020-09-18 | 杭州趣链科技有限公司 | 一种基于区块链的物联网数据的处理方法及其处理装置 |
CN112287033A (zh) * | 2020-12-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112287034A (zh) * | 2020-12-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112883117A (zh) * | 2020-12-24 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112887365A (zh) * | 2021-01-08 | 2021-06-01 | 浙江泰科数联信息技术有限公司 | 基于mmr算法区块链的超轻量级节点验证方法及装置 |
US20220368538A1 (en) * | 2021-04-27 | 2022-11-17 | ToposWare Japan Inc. | Zero-knowledge proof based cross-chain interoperability |
CN114416883A (zh) * | 2022-01-27 | 2022-04-29 | 成都质数斯达克科技有限公司 | 区块链轻节点数据同步方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115860742B (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313654B (zh) | 使用布隆过滤器对被许可的区块链进行去同步恢复的方法和*** | |
CN108805570B (zh) | 数据处理方法、装置及存储介质 | |
CN109313752B (zh) | 使用审计保证形成用于被许可的区块链的高效共识机制的方法和*** | |
CN110535969B (zh) | 基于区块链网络的数据存储方法、装置、存储介质和设备 | |
CN110875893B (zh) | 共识验证方法、校验节点及区块链*** | |
RU2449358C1 (ru) | Распределенная файловая система и способ управления согласованностью блоков данных в такой системе | |
CN110399424B (zh) | 区块生成方法、装置、区块链节点及存储介质 | |
CN107679863B (zh) | 一种区块链***及快速验证区块的方法 | |
CN109981565B (zh) | 基于Meta-BFT共识机制的区块链平台及实现方法 | |
WO2020199713A1 (zh) | 数据验证方法、***、装置及设备 | |
CN111694502B (zh) | 区块链数据存储方法、装置、设备及存储介质 | |
CN113127562A (zh) | 一种低冗余区块链数据存储和检索方法及*** | |
CN115225639B (zh) | 共识可信集群的变更方法、装置、计算机设备及介质 | |
CN112035144A (zh) | 区块链***的升级方法、装置、计算机设备及存储介质 | |
CN113138880B (zh) | 区块链***灰度发布方法、装置、设备及存储介质 | |
CN112732803B (zh) | 一种共识区块链交易查询验证方法及*** | |
CN115860742A (zh) | 区块链中轻节点的数据同步方法、节点、存储介质及设备 | |
CN111061813B (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN111414417B (zh) | 一种基于区块链的视频版权管理方法 | |
CN112182009A (zh) | 区块链的数据更新方法及装置、可读存储介质 | |
CN116866363A (zh) | 分布式文件同步方法、装置、设备及存储介质 | |
CN114785812B (zh) | 一种基于零知识证明的区块链区块同步方法及装置 | |
CN113630445B (zh) | 一种基于区块链网络的数据存储方法及装置 | |
CN114661231A (zh) | 电网监控主站***参数变更记录的存储同步方法及装置 | |
CN113779146A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |