CN110096550A - 一种基于区块链的存储结构的设计与实现方法 - Google Patents
一种基于区块链的存储结构的设计与实现方法 Download PDFInfo
- Publication number
- CN110096550A CN110096550A CN201910310676.3A CN201910310676A CN110096550A CN 110096550 A CN110096550 A CN 110096550A CN 201910310676 A CN201910310676 A CN 201910310676A CN 110096550 A CN110096550 A CN 110096550A
- Authority
- CN
- China
- Prior art keywords
- contract
- ballot
- storage
- state
- data set
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的存储结构的设计与实现方法,所述方法包括以下步骤:部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。本发明有效克服当前区块链系统存在交易打包速度慢、可扩展性差、网络处理能力严重不足等缺点。
Description
技术领域
本发明涉及区块链存储结构领域,尤其涉及一种基于区块链的存储结构的设计与实现方法。
背景技术
目前在相关技术中,区块链的存储模型主要分为两类:一种是比特币存储模型,UTXO(Unspent Transaction Output)[1]未消费的交易输出,是比特币现金系统的存储模型,也是比特币交易不可分割的基本单位,主要负责跟踪加密货币的数据库状态,并对其所有的历史记录进行存储。与传统的基于账户概念的数据库相比较,UTXO没有账户和余额的概念,只有每一笔写入区块链的事务操作。当用户使用比特币钱包时,看到的账户余额实质是根据交易地址进行实时计算得到的可用余额。
UTXO存储模型主要遵循三大原则:第一,所有的交易都开始于Coinbase,Coinbase是矿工通过挖矿获得的交易奖励;第二,除Coinbase交易外,所有的交易输入都必须来自于前面一个或者多个交易的UTXO输出。Input输入是指交易消耗UTXO,Output输出指由交易创建UTXO;第三,每一笔的交易支出总额等于交易收入总额。
比特币的交易过程一般分为两种,第一种是选择一个较大的个体进行找零;第二种是寻找若干个体进行组合支付,算出准确的找零方案。通过这样的交易过程,一定数量的数字货币可以在不同的所有者之间进行价值转移,并在交易的过程中消耗和创建UTXO。假设用户A有1比特币的UTXO,并打算给B转账0.5,为了加快交易的执行,A需要格外支付给矿工0.01的手续费。于是,会消耗1比特币的UTXO,分别给B用户0.5、给A用户找零0.49,给矿工手续费0.0。
UTXO模型在比特币系统的运行过程中有较好的表现。首先,结构简单,每一个UTXO都是不可再分的最小单元,不需要维护复杂的状态过程,适用于具有单一转账功能的比特币系统;其次,安全性高,每一个用户能够创建多个交易地址,每一个地址可以生成对应的私钥和公钥,通过公钥可以给对方进行转账,拥有私钥就具有该地址的管理权限;最后,支持并行交易,由于所有的UTXO都是无状态的,一个交易发送者可以发送任意多笔交易,而不需要考虑交易的顺序性。
另一类存储模型是以太坊存储模型。World State世界状态,是以太坊黄皮书中提到的一种状态概念。与比特币的UTXO抽象状态不同,以太坊是一个基于交易的状态机,起始于一个创世区块(Genesis)状态,然后随着交易的执行状态逐步改变一直到最终状态,这个最终状态是以太坊世界的权威“版本”[2]。以太坊的设计初衷是,为区块链提供一种图灵完备的内置语言,通过创建合约的方式来编码需求逻辑,实现一种状态可以自动转换的期望协议。
基于账户模型的以太坊数据存储,包括外部账户和合约账户两大部分,两者的区别主要在于,前者是用户创建的具有密钥对的账户地址,后者是用于执行合约代码的账户地址,包含了可执行的代码段,通过作为交易的接收方进行触发。以太坊的数据类型分为永久数据和暂存数据,通过挖矿确认的交易会永久的写入区块链,而对于账户余额这样的可变数据则通过LevelDB进行链下持久化存储。
在比特币区块结构的基础上,以太坊构建了默克尔帕特里夏树(Merkle PatriciaTrie,MPT)的结构[3],为区块头添加了全局状态树(State Trie)、交易树(TransactionTrie)、收据树(Receipt Trie)的根哈希字段。State Trie维护了整个系统的世界状态,根节点是基于密码学依赖于所有内部数据的安全标识,通过修改Root Hash,可以恢复到特定历史状态。Transaction Trie是本区块的所有交易组成的MPT树,Receipt Trie是每一个交易结果的收据散列值。通过区块头添加的这三个根值,保证了所有节点存储状态、交易以及交易结果的一致性。
World State存储模型的设计优势如下,首先,可以快速的访问到用户账户余额,而不需要回溯历史记录进行重新计算;然后,从存储空间的角度考虑,以太坊可以实现直接交易转账,通过修改状态进行定位跟踪,而不需要像比特币对每一笔交易进行拆分找零,生成一系列的交易记录。因此,链上存储部分UTXO占用较大的空间,而World State占用相对较小;最后,从可用性方面分析,UTXO不支持复杂的逻辑处理,World State支持图灵完备的编程语言,可以扩展更多的应用场景。World State在使用过程中也存在一定缺陷。从存储的角度考虑,以太坊是基于状态的,State Trie Root Hash存储在区块头部,但是整个状态树是通过Level DB进行持久化存储在链下,树的中间节点大大增加了存储所有数据所需的磁盘空间量,因此,会造成以太坊客户端数据剧增,给用户带来存储性能方面的压力。
发明内容
本发明提供了一种基于区块链的存储结构的设计与实现方法,本发明有效克服当前区块链系统存在交易打包速度慢、可扩展性差、网络处理能力严重不足等缺点,详见下文描述:
一种基于区块链的存储结构的设计与实现方法,所述方法包括以下步骤:
部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;
在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;
每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;
状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。
其中,所述存储状态基础结构的属性包括:资产链唯一标识和账户地址,
所述资产链唯一标识是指该账户当前所运行的资产链生产环境;
所述账户地址是用户自定义生成的具有公私和私钥的地址,或部署智能合约时生成的合约地址。
进一步地,所述数据提供者由资源路径、数据关键字、状态标志和层数组成;
所述资源路径是指从账户数据提供者开始到所在的数据提供者的连接通路;
所述数据关键字是对数据提供者进行唯一标识的字段;
所述状态标志多用于处理与账户状态或合约相关的操作;
所述层数用于标记当前数据提供者所在的层级位置。
本发明提供的技术方案的有益效果是:较以太坊系统而言,本发明的存储结构方面有较好的数据表现,存储体积较小,交易速度快、传输稳定,整体性能得到一定的提高。
附图说明
图1为一种基于区块链的存储结构的设计与实现方法的流程图;
图2为数据提供者的存储结构示意图;
图3为数据存储的内存空间占用情况的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。
实施例1
本发明实施例提供了一种基于区块链的存储结构的设计与实现方法,参见图1,该方法包括以下步骤:
101:部署智能合约;
102:创建账户数据提供者;
103:创建数据提供者;
104:创建子数据提供者;
105:合约状态存储。
在一个实施例中,步骤101部署了智能合约,具体步骤如下:
首先,编写投票合约代码,并将其编译生成dll文件;然后,调用RPC服务的方法加载合约信息;最后,调用合约部署方法部署到资产链,返回合约部署地址。
在一个实施例中,步骤102在步骤101的基础上创建数据提供者,具体步骤如下:
根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构。
在一个实施例中,步骤103创建数据提供者,具体步骤如下:
在投票合约的存储状态基础结构的基础上,可以为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构。
在一个实施例中,步骤104创建子数据提供者,具体步骤如下:
每一个参与投票的用户对应的数据提供者,可以根据投票行为产生对应的结构。
在一个实施例中,步骤105进行合约状态存储,具体步骤如下:
将上述不同行为下的投票数据进行分别存储。状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。为了压缩数据体积,所有数据都采用标准的protobuf格式进行二进制存储。
实施例2
下面结合具体的实例对实施例1中的方案进行进一步地介绍,详见下文描述:
201:区块链存储结构设计过程中,首先编写投票合约代码,并将其编译生成dll文件;
202:调用RPC服务的方法加载合约信息;
203:调用合约部署方法部署到资产链,返回合约部署地址;
204:创建账户数据提供者;
根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构,如图2所示。账户数据提供者是所有状态存储的基础结构,通过账户信息和资产链进行唯一标识。账户数据提供者为存储的开始位置,具有账户信息和资产链进行唯一标识;每一个账户数据提供者都可以生成一个具有空关键字的数据提供者;一个数据提供者可以通过调用GetDataProvider方法拥有一个或多个子数据提供者,即DataProvider[“A”,“B”,“C”];一个子数据提供者可以有一个或一组哈希计算数据,例如:关键字为B的子数据提供者有一组数据值,分别为Value1、Value2和Value3。以此类推,每一个账户数据提供者都可以组织自己的Data Provider结构,整个结构通过搜索关键路径的方式获得存储值。
该结构的属性主要包括两大部分:资产链唯一标识和账户地址。其中,资产链唯一标识是指该账户当前所运行的资产链生产环境,账户地址可以是用户自定义生成的具有公私和私钥的普通地址,也可以是部署智能合约时生成的合约地址。
205:创建数据提供者;
在投票合约的存储状态基础结构的基础上,可以为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者。数据提供者是指允许嵌套多个子数据提供者的一种存储结构。
数据提供者主要由四大部分组成,资源路径、数据关键字、状态标志和层数。其中,资源路径是指从账户数据提供者开始到所在的数据提供者的连接通路,数据关键字是对数据提供者进行唯一标识的字段,状态标志多用于处理与账户状态或合约相关的操作,层数用于标记当前数据提供者所在的层级位置。
206:创建子数据提供者;
其中,每一个参与投票的用户对应的数据提供者,可以根据投票行为产生对应的投票合约的存储状态子结构。
207:合约状态存储。
将上述不同行为下的投票数据进行分别存储。状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。为了压缩数据体积,所有数据都采用标准的protobuf格式进行二进制存储。
综上所述,本发明实施例主要从区块链的存储角度进行分析,针对当前区块链存储结构单一化、读写速度慢、可扩展性差等问题,提出了数据提供者的数据结构。通过设计支持集合、列表等多级数据提供者结构,为复杂应用场景提供更加简单的存储方式。根据结构的复杂特性,衍生出路径的计算方案,可以更加精准快速的定位到指定资源,一方面数据存储内容更加简单直观,另一方面数据读取速度更快。
实施例3
下面结合图3、以及具体的实验数据对实施例1和2中的方案进行可行性验证,详见下文描述:
选取以太坊和aelf作为对比实验,采用ubuntu 16.04系统运行环境,部署两个项目的私有测试链,并通过RPC服务发送指定数量的交易,实时监控系统的内存占用情况,分析不同测试链的交易执行情况、系统处理能力以及内存资源的占用率。
实验选取0到50000范围的交易数量,记录并验证实验数据,图3为数据存储的内存空间占用情况。
在图3中,横坐标表示每次发送的交易数量,纵坐标表示内存占用率。初始状态时,aelf同步生产环境数据占用3.52%,以太坊则需要32.12%。从面积图的走势可以看出,随着发送交易数量的增加,aelf系统和以太坊的内存占用率都呈现上升趋势。其中,aelf系统整体上升缓慢,数据维持在3%到15%之间;以太坊上升速度较快,当发送50000交易时,占用率超过了50%。可见,随着交易数量的增多,aelf数据存储的体积较小,且不会急剧膨胀上升;以太坊数据结构复杂,链下维护了庞大的MPT结构的状态树,数据会随着操作数的增多而增长。
因此,在丰富的应用场景下,aelf较以太坊系统而言,存储结构方面有较好的数据表现,存储体积较小,交易速度快、传输稳定,整体性能得到了一定的提高。
参考文献:
[1]Delgado-Segura S,Pérez-Sola C,Navarro-Arribas G,et al.Analysis ofthe Bitcoin UTXO set[C].Proceedings of the 5th Workshop on Bitcoin andBlockchain Research Research(in Assocation with Financial Crypto 18),LectureNotes in Computer Science.2018.
[2]Wood G.Ethereum:A secure decentralised generalised transactionledger[J].Ethereum project yellow paper,2014,151:1-32.
[3]Zhang H,Jin C,Cui H.A Method to Predict the Performance andStorage of Executing Contract for Ethereum Consortium-Blockchain[C].International Conference on Blockchain.Springer,Cham,2018:63-74.
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于区块链的存储结构的设计与实现方法,其特征在于,所述方法包括以下步骤:
部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;
在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;
每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;
状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。
2.根据权利要求1所述的一种基于区块链的存储结构的设计与实现方法,其特征在于,所述存储状态基础结构的属性包括:资产链唯一标识和账户地址,
所述资产链唯一标识是指该账户当前所运行的资产链生产环境;
所述账户地址是用户自定义生成的具有公私和私钥的地址,或部署智能合约时生成的合约地址。
3.根据权利要求1所述的一种基于区块链的存储结构的设计与实现方法,其特征在于,所述数据提供者由资源路径、数据关键字、状态标志和层数组成;
所述资源路径是指从账户数据提供者开始到所在的数据提供者的连接通路;
所述数据关键字是对数据提供者进行唯一标识的字段;
所述状态标志多用于处理与账户状态或合约相关的操作;
所述层数用于标记当前数据提供者所在的层级位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910310676.3A CN110096550B (zh) | 2019-04-17 | 2019-04-17 | 一种基于区块链的存储结构的设计与实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910310676.3A CN110096550B (zh) | 2019-04-17 | 2019-04-17 | 一种基于区块链的存储结构的设计与实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096550A true CN110096550A (zh) | 2019-08-06 |
CN110096550B CN110096550B (zh) | 2023-01-03 |
Family
ID=67445122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910310676.3A Active CN110096550B (zh) | 2019-04-17 | 2019-04-17 | 一种基于区块链的存储结构的设计与实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096550B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541764A (zh) * | 2020-12-17 | 2021-03-23 | 成都知道创宇信息技术有限公司 | 基于智能合约的资产管理方法、装置和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107146318A (zh) * | 2017-06-05 | 2017-09-08 | 上海交通大学 | 基于虚拟货币的投票系统 |
CN108846942A (zh) * | 2018-06-29 | 2018-11-20 | 青岛大学 | 基于以太坊区块链的电子投票方法和系统 |
-
2019
- 2019-04-17 CN CN201910310676.3A patent/CN110096550B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107146318A (zh) * | 2017-06-05 | 2017-09-08 | 上海交通大学 | 基于虚拟货币的投票系统 |
CN108846942A (zh) * | 2018-06-29 | 2018-11-20 | 青岛大学 | 基于以太坊区块链的电子投票方法和系统 |
Non-Patent Citations (2)
Title |
---|
WENBIN ZHANG: "A Privacy-Preserving Voting Protocol on Blockchain", 《2018 IEEE 11TH INTERNATIONAL CONFERENCE ON CLOUD COMPUTING》 * |
郄九玲,胡浩: "基于区块链的投票系统设计", 《通信技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541764A (zh) * | 2020-12-17 | 2021-03-23 | 成都知道创宇信息技术有限公司 | 基于智能合约的资产管理方法、装置和系统 |
CN112541764B (zh) * | 2020-12-17 | 2023-11-28 | 成都知道创宇信息技术有限公司 | 基于智能合约的资产管理方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110096550B (zh) | 2023-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210357390A1 (en) | Systems and methods for blockchain interlinking and relationships | |
CN108764984A (zh) | 一种基于大数据的电力用户画像构建方法及系统 | |
CN107924406A (zh) | 选择用于对实时数据流执行的查询 | |
US8108193B2 (en) | Collaboration framework for modeling | |
CN104679807A (zh) | 基于图的计算中的数据日志记录 | |
CN101799808A (zh) | 一种数据处理方法及其系统 | |
CN109471718A (zh) | 基于人脸识别的计算资源配置方法、装置、设备及介质 | |
Galanti et al. | Object-centric process predictive analytics | |
US20140229223A1 (en) | Integrated erp based planning | |
CN111639121A (zh) | 一种构建客户画像的大数据平台及构建方法 | |
CN109871393A (zh) | 一种基于标签体系的取数方法 | |
Chitti et al. | Data management: Relational vs blockchain databases | |
Jiang et al. | Evaluating blockchain technology and related policies in China and the USA | |
Si | Construction and application of enterprise internal audit data analysis model based on decision tree algorithm | |
CN110096550A (zh) | 一种基于区块链的存储结构的设计与实现方法 | |
CN116483822B (zh) | 业务数据预警方法、装置、计算机设备、存储介质 | |
US20140317156A1 (en) | Data management for data aggregation | |
CN111260452B (zh) | 一种税务大数据模型的构建方法及系统 | |
CN114490571A (zh) | 一种建模方法、服务器及存储介质 | |
Vierlboeck et al. | Requirement Engineering in the Age of System and Product Complexity–A Literature Review | |
CN112883091A (zh) | 因子数据获取方法、装置、计算机设备和存储介质 | |
CN111858598A (zh) | 一种海量数据综合管理系统与方法 | |
CN111723129A (zh) | 报表生成方法、报表生成装置和电子设备 | |
van Hee et al. | Designing case handling systems | |
CN112163049B (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 |