CN111581214B - 适用于能源区块链的并行merkle树构建与验证方法 - Google Patents
适用于能源区块链的并行merkle树构建与验证方法 Download PDFInfo
- Publication number
- CN111581214B CN111581214B CN202010378444.4A CN202010378444A CN111581214B CN 111581214 B CN111581214 B CN 111581214B CN 202010378444 A CN202010378444 A CN 202010378444A CN 111581214 B CN111581214 B CN 111581214B
- Authority
- CN
- China
- Prior art keywords
- thread
- transaction
- hash
- sub
- merkle
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种适用于能源区块链的并行merkle树构建与验证方法,节点开启N个线程,并对每一个线程进行编号;主节点对交易进行验证,通过之后根据交易请求的hash对N取模,得到处理此请求的线程,将交易发送到线程中处理;线程接收到交易请求,异步对发送到本线程的交易构建merkle树,当记账周期到达时,各个线程向主线程汇报各自的merkle树根,主线程通过单线程构建merkle树将整个merkle树构建完成,将交易按照merkle树划分为N份,在每一份中保存merkle子树根位置;当从节点同步区块时,对merkle树进行验证。本发明能够更好的减少IO等待的时间,提高merkle树生成和验证效率。
Description
技术领域
本发明涉及能源区块链技术,具体涉及一种适用于能源区块链的并行merkle树构建与验证方法。
背景技术
能源行业的交易和传统交易相比,有着交易频率高,数据量大的特点,传统merkle树生成方法主节点需要在打包区块的时候进行单线程merkle树生成,从节点接收到区块之后,也需要通过merkle树单线程验证交易信息,验证通过之后再返回结果,两次单线程运算在交易很多的情况下对性能有较大的影响,在需要快速对交易进行打包的能源应用场景下,这种多次单线程运算极大的降低了区块打包和共识效率。
发明内容
本发明所要解决的技术问题是,针对分布式能源交易高频、数据量大的特点,提出一种能够并发进行merkle树生成和验证的方案。
本发明为解决上述技术问题所采用的技术方案是,一种适用于能源区块链的并行merkle树构建以及验证方法,包括以下步骤:
首先,主节点并发merkle树生成方法:
(1)通过配置读取到线程数N,N为2的k次幂,创建N个线程,并对每一个线程进行编号;
(2)主线程接收交易请求并验证,验证通过之后对交易进行hash运算,并将hash结果对N取模,得到处理该交易的子线程,将交易发送到该线程中,此时主线程返回客户端;
(3)子线程将交易插入到merkle树中,具体步骤如下:
(3-1)子线程将交易保存到与本线程关联的存储文件中;
(3-2)子线程判断最底一层是否为奇数,如果为奇数则将交易hash插入到最后一层中,并逐一更改最后一层最后节点的父节点hash直到hash root;
(3-2)如果为偶数,则将交易hash插入最后一层中,并逐一构建父节点,直到构建到hash root,并将hash root和新节点hash共同的父节点作为新的hash root;
(4)当一个记账周期到达时,主线程合并所有子线程的记账,具体步骤如下:
(4-1)主线程将所有子线程merkle根取出并放入到一个队列中;
(4-2)从队列中取出两个merkle节点,将其合并进行hash运算之后得到父节点的hash值,将父节点关联到两个子节点,并将父节点放入队列中;
(4-3)持续执行步骤4-2直到队列中只剩下一个merkle节点,将该merkle节点则为merkle树的根节点;
(4-5)从子线程0开始,依次从子线程中获取交易存储文件,归并到一个目录中并压缩;
(5)将步骤(4)合并的merkle树以及交易归档文件写入到区块中,并将merkle根和区块hash、上一区块hash、时间戳、子线程数N等信息记录到区块头中;将整个区块发送到所有节点进行记录。
进一步的,还包括从节点并发验证方法,具体包括以下步骤:
(1)从节点接收到主节点发送的区块之后,首先从区块头中获取merkle树根、子线程树N等;
(2)从区块体中获取整个交易merkle树,根据子线程数N创建子线程并编号,将merkle树log2N层的merkle树节点依次传入子线程中;
(3)子线程通过自己的线程编号依次从交易目录中获取编号为线程编号的交易文件;
(4)子线程并发的通过merkle树对所有交易进行验证;
(5)验证通过则认为区块未被篡改,可以记录到本地。
本发明提供的适用于能源区块链的并行merkle树构建与验证方法,能够更好的减少IO等待的时间,提高merkle树生成和验证效率。
附图说明
图1为本发明所述merkle树结构。
图2为本发明所述merkle树生成过程。
图3为本发明所述merkle树并发验证过程。
具体实施方式
下面结合附图和实施例,对本发明进行进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
本发明所涉及的merkle树结构如图1所示,具有以下特点:
1、为非完全二叉树,在第k层每一个子树均由一个线程进行维护,所有线程放入线程池中便于复用;
2、每一个子树下面的所有merkle树节点,保存在该线程管理的分段内存中;
3、每一个子树下面的所有涉及的交易保存于同一个文件中。
实施例1
本实施例假设子线程数为4,有26个交易分别编号为t1-t26,其中t1-t6 hash取模之后结果为0,t7-t14 hash取模之后结果为1,t15-t21 hash取模之后结果为2,t22-t26hash取模之后结果为3。一个典型的请求过程如图2所示:
(1)客户端向主节点发送交易,假设交易为t16,并签名;
(2)主节点通过主线程接收交易,接收之后对交易合法性进行验证,验证通过之后,对交易计算hash,得到h16,通过对h16取模,h16%4=2,计算得出需要子线程2处理该交易;
(3)主线程将交易以及hash中发送到线程2中,并返回客户端请求;
(4)子线程接收到交易请求之后,首先将交易放入本线程管理的交易文件中;
(5)子线程将交易hash插入到merkle树中,具体过程如下:
(5.1)目前线程之中在t16之前只有一个交易t15,hash root也是h15,获取hashroot;
(5.2)通过hash root发现整个子线程merkle树为满二叉树,因此直接将h16和h15合并并进行hash运算计算得出h34;
(5.3)将h34设置为子线程2的hash root;
(6)当记账周期到达时,进行合并merkle树操作,具体过程如下:
(6.1)主线程要求各个子线程汇报各自的hash root,线程0-3分别汇报其hashroot,49-h52,主线程接收到之后按照线程顺序将所有的子线程hash root放入队列中;
(6.2)主线程从队列中获取两个hash root,合并进行hash运算之后获取新的hashroot,比如第一次获取的为h49、h50,进行hash运算得到h53;
(6.3)重复(6.2)直到队列中只剩一个hash root。
(7)主线程进行合并交易文件操作,将所有的交易文件打包;
(8)对整个merkle树和文件进行hash运算,得到区块hash,将区块hash,上一区块hash,时间戳,子线程树等写入到区块头中;
(9)主节点广播区块,要求子节点记账。
实施例2
本实施例假设子线程数为4,有26个交易分别编号为t1-t26,其中t1-t6 hash取模之后结果为0,t7-t14 hash取模之后结果为1,t15-t21 hash取模之后结果为2,t22-t26hash取模之后结果为3。子节点接受到主节点发送的区块之后进行验证的过程如图3所示:
(1)从节点接受到主节点要求保存的区块之后,根据区块头的子线程数,创建新线程,本实施例中假设线程数为4,则创建4个线程,编号为0-3;
(2)主线程将merkle树中对应子树发送到子线程中,子线程0-3分别发送h49-h52;
(3)子线程根据merkle树和交易文件验证区块完整性,验证通过则认为该文件中所有交易未被篡改;
(4)子线程汇报验证结果给主线程,主线程在所有子线程都验证通过后认为所有交易验证通过,将交易记录到本地。
Claims (1)
1.适用于能源区块链的并行merkle树构建与验证方法,其特征在于,包括以下步骤:
(1)通过配置读取到线程数N,N为2的k次幂,创建N个线程,并对每一个线程进行编号;
(2)主线程接收交易请求并验证,验证通过之后对交易进行hash运算,并将hash结果对N取模,得到处理该交易的子线程,将交易发送到该线程中,此时主线程返回客户端;
(3)子线程将交易插入到merkle树中;
步骤(3)具体包括以下步骤:
(3-1)子线程将交易保存到与本线程关联的存储文件中;
(3-2)子线程判断最底一层是否为奇数,如果为奇数则将交易hash插入到最后一层中,并逐一更改最后一层最后节点的父节点hash直到hash root;
(3-2)如果为偶数,则将交易hash插入最后一层中,并逐一构建父节点,直到构建到hash root,并将hash root和新节点hash共同的父节点作为新的hash root;
(4)当一个记账周期到达时,主线程合并所有子线程的记账;
步骤(4)具体包括以下步骤:
(4-1)主线程将所有子线程merkle根取出并放入到一个队列中;
(4-2)从队列中取出两个merkle节点,将其合并进行hash运算之后得到父节点的hash值,将父节点关联到两个子节点,并将父节点放入队列中;
(4-3)持续执行步骤4-2直到队列中只剩下一个merkle节点,将该merkle节点则为merkle树的根节点;
(4-5)从子线程0开始,依次从子线程中获取交易存储文件,归并到一个目录中并压缩;
(5)将步骤(4)合并的merkle树以及交易归档文件写入到区块中,并将merkle根和区块hash、上一区块hash、时间戳、子线程数N信息记录到区块头中;将整个区块发送到所有节点进行记录;
还包括从节点并发验证,包括以下步骤:
(1)从节点接收到主节点发送的区块之后,首先从区块头中获取merkle树根、子线程树N;
(2)从区块体中获取整个交易merkle树,根据子线程数N创建子线程并编号,将merkle树log2N层的merkle树节点依次传入子线程中;
(3)子线程通过自己的线程编号依次从交易目录中获取编号为线程编号的交易文件;
(4)子线程并发的通过merkle树对所有交易进行验证;
(5)验证通过则认为区块未被篡改,记录到本地。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010378444.4A CN111581214B (zh) | 2020-05-07 | 2020-05-07 | 适用于能源区块链的并行merkle树构建与验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010378444.4A CN111581214B (zh) | 2020-05-07 | 2020-05-07 | 适用于能源区块链的并行merkle树构建与验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581214A CN111581214A (zh) | 2020-08-25 |
CN111581214B true CN111581214B (zh) | 2023-07-18 |
Family
ID=72113368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010378444.4A Active CN111581214B (zh) | 2020-05-07 | 2020-05-07 | 适用于能源区块链的并行merkle树构建与验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581214B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395300B (zh) * | 2021-01-20 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN112559637B (zh) * | 2021-02-19 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 基于分布式存储的数据处理方法、装置、设备以及介质 |
WO2023072965A1 (en) * | 2021-10-28 | 2023-05-04 | Nchain Licensing Ag | Methods and systems for distributed blockchain functionalities |
GB2612337A (en) * | 2021-10-28 | 2023-05-03 | Nchain Licensing Ag | Computer-implemented system and method |
GB2612340A (en) * | 2021-10-28 | 2023-05-03 | Nchain Licensing Ag | Sharded Merkle tree |
GB2612336A (en) * | 2021-10-28 | 2023-05-03 | Nchain Licensing Ag | Computer-implemented system and method |
GB2612339A (en) * | 2021-10-28 | 2023-05-03 | Nchain Licensing Ag | Computer-implemented system and method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107274159A (zh) * | 2017-06-09 | 2017-10-20 | 北京泛融科技有限公司 | 一种基于区块并发执行算法的记账系统及方法 |
CN110489420A (zh) * | 2019-08-14 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630609B (zh) * | 2016-02-24 | 2021-05-11 | 杭州复杂美科技有限公司 | 区块链的打包存储方法 |
US11177961B2 (en) * | 2017-12-07 | 2021-11-16 | Nec Corporation | Method and system for securely sharing validation information using blockchain technology |
US11018850B2 (en) * | 2017-12-26 | 2021-05-25 | Akamai Technologies, Inc. | Concurrent transaction processing in a high performance distributed system of record |
CN110688377B (zh) * | 2019-08-30 | 2020-07-17 | 阿里巴巴集团控股有限公司 | 一种更新状态默克树的方法及装置 |
CN110659905B (zh) * | 2019-09-20 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 交易验证方法、装置、终端设备以及存储介质 |
CN111047348A (zh) * | 2019-11-08 | 2020-04-21 | 北京比特时刻图像科技有限公司 | 一种新型区块链共识算法及基于该算法的区块链网络系统 |
AU2019321923B2 (en) * | 2019-11-27 | 2021-09-02 | Alipay (Hangzhou) Information Technology Co., Ltd. | Asynchronous processing of blockchain blocks |
CN111047306A (zh) * | 2019-12-17 | 2020-04-21 | 北京菲林方德科技有限公司 | 一种交易输入集合的并行交易处理方法及装置 |
-
2020
- 2020-05-07 CN CN202010378444.4A patent/CN111581214B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107274159A (zh) * | 2017-06-09 | 2017-10-20 | 北京泛融科技有限公司 | 一种基于区块并发执行算法的记账系统及方法 |
CN110489420A (zh) * | 2019-08-14 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
Research on Modify Protection of Metrology Electronic Certificate Based on Blockchain Technology;Yangpeng Zhu;2019 14th International Conference on Computer Science & Education (ICCSE);全文 * |
基于区块链和连续双向拍卖机制的微电网直接交易模式及策略;王健;中国电机工程学报;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111581214A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111581214B (zh) | 适用于能源区块链的并行merkle树构建与验证方法 | |
CN110602148B (zh) | 一种区块的状态树的生成和链上数据验证的方法及装置 | |
CN107943833A (zh) | 一种基于区块链的无中心分布式文件存储及检索方法 | |
US20220414090A1 (en) | Blockchain data index method, blockchain data storage method and device | |
CN105243067B (zh) | 一种实现实时增量同步数据的方法及装置 | |
CN109542979B (zh) | 一种区块链系统快速同步及简精数据存储的方式 | |
CN106126722B (zh) | 一种基于验证的前缀混合树及设计方法 | |
KR100678921B1 (ko) | 다중 서버 환경에 적합한 디바이스를 클라이언트로 하여동기화를 수행하는 방법 및 장치 | |
CN107145537B (zh) | 一种表格数据导入方法及系统 | |
US20170300875A1 (en) | Method and system for reducing power consumption in bitcoin mining via data input hopping | |
CN108984744B (zh) | 一种非主链区块自增长方法 | |
CN110096522B (zh) | 一种支持关系型检索的区块链数据处理方法、装置及设备 | |
CN103049709B (zh) | 基于生成元扩展彩虹表的密码恢复系统及其恢复方法 | |
CN111177277A (zh) | 数据存储方法、交易存储方法及装置 | |
CN102289469B (zh) | 一种支持通用数据库基于物理隔离设备同步数据的方法 | |
CN112383610B (zh) | 区块链状态数据的同步处理方法及系统 | |
CN105989048A (zh) | 一种数据记录处理方法、设备及系统 | |
CN112269791B (zh) | 一种区块链账本处理方法 | |
CN111640018A (zh) | 一种区块链交易存在性验证方法及装置 | |
CN103106200A (zh) | 非关系型数据库同步系统及双写同步方法 | |
WO2021196463A1 (zh) | 一种区块链数据的同步方法、装置及电子设备、存储介质 | |
CN112000649A (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
CN104778252A (zh) | 索引的存储方法和装置 | |
CN109165225A (zh) | 一种基于字节流格式的kudu数据导入系统及方法 | |
CN111522873B (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 |