CN110851448B - 一种基于区块链智能合约的本地数据存储优化方法 - Google Patents
一种基于区块链智能合约的本地数据存储优化方法 Download PDFInfo
- Publication number
- CN110851448B CN110851448B CN201911087252.1A CN201911087252A CN110851448B CN 110851448 B CN110851448 B CN 110851448B CN 201911087252 A CN201911087252 A CN 201911087252A CN 110851448 B CN110851448 B CN 110851448B
- Authority
- CN
- China
- Prior art keywords
- node
- block
- block chain
- information
- mobile terminal
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链智能合约的本地数据存储优化方法,所述方法包括步骤1:设置区块链网络中的固定节点,存储所有的区块数据;步骤2:每个移动端节点只保存与自己相关的区块具体信息,在保存区块信息时,通过区块链平台提供的接口获取区块的相关账户信息,加入区块链时为其分配一个节点地址,若其自身节点的地址与区块数据中的账户信息中的地址不匹配,则跳过;若匹配,则获取并保存具体的区块信息;步骤3:将区块信息作为输入计算出区块的hash值,并组装成默克尔树数据结构。大大减小了移动端用户节点对于保存区块链信息的压力,同时少部分节点的账本丢失也不会导致区块链的崩溃,很好的解决了现有技术存在的问题。
Description
技术领域
本发明涉及区块链领域,具体的说,是一种基于区块链智能合约的本地数据存储优化方法。
背景技术
近几年来,区块链智能合约技术不断发展,也催生了许多基于区块链智能合约技术的APP应用。但现有的区块链APP,由于区块链中各个节点需要互相平等可信的原因,要将整个区块链账本存储在每个节点中,该账本数据就是区块的原始数据组,包括时间戳、随机数、上个区块的hash以及具体的交易数据,没有任何对数据进行处理(压缩、简化)的操作;然而目前大多数手机的存储量都只有几十GB,在2017年的比特币账本容量就达到了数十GB的大小,这是移动端用户很难承受的存储量;主要原因在于大部分区块链APP对存储数据没有进行任何处理并且所有节点保存一致的数据,随着时间的累积不断产生新的区块,在本地的存储量将会无限制增长,显然用户的存储量不可能达到无限大;因此,需要一种技术来解决区块链APP在移动端存储量不足的缺陷。
发明内容
本发明的目的在于提供一种基于区块链智能合约的本地数据存储优化方法,用于解决现有技术中区块链APP对存储数据没有进行任何处理并且所有节点保存一致的数据,随着时间的累积不断产生新的区块,在本地的存储量将会无限制增长的问题。
本发明通过下述技术方案解决上述问题:
一种基于区块链智能合约的本地数据存储优化方法,所述方法包括如下步骤:
步骤1:设置区块链网络中的固定节点,存储所有的区块数据;
步骤2:每个移动端节点只保存与自己相关的区块具体信息,在保存区块信息时,通过区块链平台提供的接口获取区块的相关账户信息,加入区块链时为其分配一个节点地址,若其自身节点的地址与区块数据中的账户信息中的地址不匹配,则跳过;若匹配,则获取并保存具体的区块信息;
步骤3:将区块信息作为输入计算出区块的hash值,并组装成默克尔树数据结构。
优选地,所述默克尔树数据结构由一组叶节点、一组中间节点和一个根节点构成;叶节点存储包含区块头和区块体的具体区块信息,中间结点存储区块头的hash值,根节点保存整个区块链信息的hash值。
优选地,所述区块头包含时间戳、随机数、上个区块的hash值以及存储了所有的区块交易的默克尔树的根hash值。
优选地,所述默克尔树数据结构的组装过程包括:
步骤3.1:遍历找到第一个孩子节点为空的节点,将之设置为指向新加节点的指针;若未找到第一个孩子节点为空的节点,则根据预设深度值先生成补充中间的节点;
步骤3.2:再次遍历,然后添加节点,完成添加后,从下往上的依次计算每个节点子节点存储数据相加的hash值,并将hash值存储在该节点内,直到计算出根节点的hash值为止。
优选地,所述步骤3.2采用SHA-256hash算法计算每个节点子节点存储数据相加的hash值。
优选地,所述步骤3.1生成补充中间的节点时从根节点向下添加新的分支节点,当深度=预设深度值-2时停止。
本发明与现有技术相比,具有以下优点及有益效果:
本发明的方法大大减小了移动端用户节点对于保存区块链信息的压力,同时少部分节点的账本丢失也不会导致区块链的崩溃,很好的解决了区块链APP对存储数据没有进行任何处理并且所有节点保存一致的数据,随着时间的累积不断产生新的区块,在本地的存储量将会无限制增长的问题。
附图说明
图1为本发明基于区块链智能合约的本地数据存储优化方法的数据流程示意图。
图2为本发明基于区块链智能合约的本地数据存储优化方法使用的数据结构示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1和2所示,一种基于区块链智能合约的本地数据存储优化方法,首先本方法需要创建默克尔树的数据结构以及一个保存固定节点地址的数组;默克尔树与一般的二叉树没有较大区别,主要由字符型的存储数据、指向左、右孩子节点的指针组成,不一样的地方主要在在于默克尔树需要固定一个深度depth,一般深度是100-200左右,详细结构如下:struct treenode{string data;struct treenode*lchild,*rchild;int depth};保存固定节点地址数组则是在开发时由开发者进行添加,该地址是固定节点在区块链中的32位节点地址,具体申明如下:const fixAddress[]={…}。
由于区块链的特性,用户在加入区块链时会向所有节点发出广播;固定节点接收到广播后,首先根据eth.getBlock方法获取区块的具体信息BlockInfo,然后判断当前节点的地址是否在固定节点地址的数组中,即判断当前节点是否为固定节点;如果是固定节点,则计算BlockInfo的hash值,并创建两个默克尔树节点,一个保存BlockInfo的SHA-256hash值,一个保存BlockInfo,都存储在treenode结构中的data里;其中hash节点的左孩子,即lchild指针,指向保存BlockInfo的节点。而确定hash节点的父节点则需要遍历默克尔树,采用深度遍历方法找到第一个孩子指针为空并且depth等于预设深度-1的节点,将这个指针设置为指向hash节点的指针;如果遍历没有找到这样的的节点,则根据之前设置的深度先生成补充中间的节点,添加中间节点直到depth=预设深度-2,然后执行之前的遍历、添加节点操作即可。添加完节点之后,如图2所示,使用SHA-256hash算法从下往上的一步一步计算每个节点子节点存储数据相加的hash值,并将hash值存储在该节点内,直到计算出根节点的hash值为止。
移动端节点接收到广播后,则首先根据eth.getAccount方法获取区块的账户信息,首先判断自己的账户信息是否与之匹配,即32位节点地址是否一致;如果匹配或者勾选了保存其他数据的协议,则保存该区块的具体信息,具体方法和固定节点的一样(此时的移动端节点就相当于一个固定节点了);如果不匹配并且拒绝保存其他数据,除了只生成一个data等于区块hash的节点之外,其他操作也与固定节点的一致。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (4)
1.一种基于区块链智能合约的本地数据存储优化方法,其特征在于,所述方法包括如下步骤:
步骤1:设置区块链网络中的固定节点,存储所有的区块数据;
步骤2:每个移动端节点只保存与自己相关的区块具体信息,在保存区块信息时,通过区块链平台提供的接口获取区块的相关账户信息,加入区块链时为其分配一个节点地址,若其自身节点的地址与区块数据中的账户信息中的地址不匹配,则跳过;若匹配,则获取并保存具体的区块信息;
步骤3:将区块信息作为输入计算出区块的hash值,并组装成默克尔树数据结构;所述默克尔树数据结构由一组叶节点、一组中间节点和一个根节点构成;叶节点存储包含区块头和区块体的具体区块信息,中间结点存储区块头的hash值,根节点保存整个区块链信息的hash值;所述区块头包含时间戳、随机数、上个区块的hash值以及存储了所有的区块交易的默克尔树的根hash值。
2.根据权利要求1所述的基于区块链智能合约的本地数据存储优化方法,其特征在于,所述默克尔树数据结构的组装过程包括:
步骤3.1:遍历找到第一个孩子节点为空的节点,将之设置为指向新加节点的指针;若未找到第一个孩子节点为空的节点,则根据预设深度值先生成补充中间的节点;
步骤3.2:再次遍历,然后添加节点,完成添加后,从下往上的依次计算每个节点子节点存储数据相加的hash值,并将hash值存储在该节点内,直到计算出根节点的hash值为止。
3.根据权利要求2所述的基于区块链智能合约的本地数据存储优化方法,其特征在于,所述步骤3.2采用SHA-256hash算法计算每个节点子节点存储数据相加的hash值。
4.根据权利要求2所述的基于区块链智能合约的本地数据存储优化方法,其特征在于,所述步骤3.1生成补充中间的节点时从根节点向下添加新的分支节点,当深度=预设深度值-2时停止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911087252.1A CN110851448B (zh) | 2019-11-08 | 2019-11-08 | 一种基于区块链智能合约的本地数据存储优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911087252.1A CN110851448B (zh) | 2019-11-08 | 2019-11-08 | 一种基于区块链智能合约的本地数据存储优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851448A CN110851448A (zh) | 2020-02-28 |
CN110851448B true CN110851448B (zh) | 2022-05-03 |
Family
ID=69599844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911087252.1A Active CN110851448B (zh) | 2019-11-08 | 2019-11-08 | 一种基于区块链智能合约的本地数据存储优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851448B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112750514A (zh) * | 2021-01-30 | 2021-05-04 | 云知声智能科技股份有限公司 | 一种基于区块链技术的病历管理方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107800795A (zh) * | 2017-10-30 | 2018-03-13 | 中国联合网络通信集团有限公司 | 区块信息的处理方法及装置 |
CN107809484A (zh) * | 2017-10-30 | 2018-03-16 | 中国联合网络通信集团有限公司 | 区块链交易信息处理方法及区块链节点 |
CN108711052A (zh) * | 2018-05-18 | 2018-10-26 | 电子科技大学 | 一种基于区块链的信息验证系统 |
CN108876361A (zh) * | 2017-05-12 | 2018-11-23 | 李平 | 区块链系统、区块生成方法及计算机可读存储介质 |
CN108924252A (zh) * | 2018-07-31 | 2018-11-30 | 泰链(厦门)科技有限公司 | 区块链系统中减轻节点存储负荷的方法、介质及区块链系统 |
CN108990002A (zh) * | 2018-06-27 | 2018-12-11 | 柳州市蓝海数链科技有限公司 | 一种区块链数据处理方法、装置、终端及存储介质 |
CN109213730A (zh) * | 2018-09-14 | 2019-01-15 | 莆田市烛火信息技术有限公司 | 一种关联区块链主链的文件存储服务地址变更方法及系统 |
CN109684287A (zh) * | 2018-12-29 | 2019-04-26 | 厦门链平方科技有限公司 | 基于区块链的网关信息共享查询方法及系统 |
CN109711192A (zh) * | 2018-12-24 | 2019-05-03 | 众安信息技术服务有限公司 | 区块链系统构建方法、节点间交易方法及系统 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10121019B2 (en) * | 2015-06-02 | 2018-11-06 | ALTR Solutions, Inc. | Storing differentials of files in a distributed blockchain |
US10749668B2 (en) * | 2017-05-03 | 2020-08-18 | International Business Machines Corporation | Reduction in storage usage in blockchain |
CN109840769B (zh) * | 2019-01-21 | 2022-01-25 | 中国联合网络通信集团有限公司 | 基于区块链的存证方法及装置、系统与存储介质 |
CN110163607A (zh) * | 2019-05-10 | 2019-08-23 | 南京邮电大学 | 基于区块链智能合约的高校学生数字个人征信方法 |
CN110300173A (zh) * | 2019-06-28 | 2019-10-01 | 杭州复杂美科技有限公司 | 去中心化数据存储方法、验证方法、设备和存储介质 |
-
2019
- 2019-11-08 CN CN201911087252.1A patent/CN110851448B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876361A (zh) * | 2017-05-12 | 2018-11-23 | 李平 | 区块链系统、区块生成方法及计算机可读存储介质 |
CN107800795A (zh) * | 2017-10-30 | 2018-03-13 | 中国联合网络通信集团有限公司 | 区块信息的处理方法及装置 |
CN107809484A (zh) * | 2017-10-30 | 2018-03-16 | 中国联合网络通信集团有限公司 | 区块链交易信息处理方法及区块链节点 |
CN108711052A (zh) * | 2018-05-18 | 2018-10-26 | 电子科技大学 | 一种基于区块链的信息验证系统 |
CN108990002A (zh) * | 2018-06-27 | 2018-12-11 | 柳州市蓝海数链科技有限公司 | 一种区块链数据处理方法、装置、终端及存储介质 |
CN108924252A (zh) * | 2018-07-31 | 2018-11-30 | 泰链(厦门)科技有限公司 | 区块链系统中减轻节点存储负荷的方法、介质及区块链系统 |
CN109213730A (zh) * | 2018-09-14 | 2019-01-15 | 莆田市烛火信息技术有限公司 | 一种关联区块链主链的文件存储服务地址变更方法及系统 |
CN109711192A (zh) * | 2018-12-24 | 2019-05-03 | 众安信息技术服务有限公司 | 区块链系统构建方法、节点间交易方法及系统 |
CN109684287A (zh) * | 2018-12-29 | 2019-04-26 | 厦门链平方科技有限公司 | 基于区块链的网关信息共享查询方法及系统 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
区块链关键技术中的安全性研究;朱岩等;《信息安全研究》;20161205(第12期);第40-47页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110851448A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846133B (zh) | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 | |
US20180239800A1 (en) | Data query method and apparatus | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
CN104462141B (zh) | 一种数据存储与查询的方法、系统及存储引擎装置 | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
KR20050065642A (ko) | 데이터 갱신 시스템, 데이터 갱신 시스템의 차분 데이터생성장치 및 프로그램, 및 갱신 후 파일 복원장치 및프로그램 | |
CN101030214A (zh) | 地图更新方法和地图更新终端 | |
CN101009516A (zh) | 一种进行数据同步的方法及系统 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN101286935A (zh) | 一种基于ip地址范围的路由查找方法 | |
CN104636349A (zh) | 一种索引数据压缩以及索引数据搜索的方法和设备 | |
CN110851448B (zh) | 一种基于区块链智能合约的本地数据存储优化方法 | |
CN114153848B (zh) | 区块链数据存储方法及装置、电子设备 | |
CN110825706B (zh) | 一种数据压缩的方法和相关设备 | |
JP5873925B2 (ja) | 圧縮一致列挙 | |
CN109408682A (zh) | 一种正则表达式匹配的方法、系统及设备 | |
CN111680489A (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN114676135A (zh) | 数据存储方法、可读介质和电子设备 | |
CN112988912A (zh) | 区块链数据存储方法及装置、电子设备 | |
CN113468080B (zh) | 一种全闪元数据的缓存方法、系统及相关装置 | |
CN112988909B (zh) | 区块链数据存储方法及装置、电子设备 | |
CN110266834B (zh) | 基于互联网协议地址的地区查找方法及装置 | |
CN111597139A (zh) | 一种gpu的通信方法、系统、设备以及介质 | |
CN112988911B (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 |