当前位置: 首页 > 专利查询>天津大学专利>正文

一种基于区块链的存储结构的设计与实现方法技术

技术编号:21799068 阅读:44 留言:0更新日期:2019-08-07 10:29
本发明专利技术公开了一种基于区块链的存储结构的设计与实现方法,所述方法包括以下步骤:部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。本发明专利技术有效克服当前区块链系统存在交易打包速度慢、可扩展性差、网络处理能力严重不足等缺点。

Design and Implementation of a Storage Architecture Based on Block Chain

【技术实现步骤摘要】
一种基于区块链的存储结构的设计与实现方法
本专利技术涉及区块链存储结构领域,尤其涉及一种基于区块链的存储结构的设计与实现方法。
技术介绍
目前在相关技术中,区块链的存储模型主要分为两类:一种是比特币存储模型,UTXO(UnspentTransactionOutput)[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都是无状态的,一个交易发送者可以发送任意多笔交易,而不需要考虑交易的顺序性。另一类存储模型是以太坊存储模型。WorldState世界状态,是以太坊黄皮书中提到的一种状态概念。与比特币的UTXO抽象状态不同,以太坊是一个基于交易的状态机,起始于一个创世区块(Genesis)状态,然后随着交易的执行状态逐步改变一直到最终状态,这个最终状态是以太坊世界的权威“版本”[2]。以太坊的设计初衷是,为区块链提供一种图灵完备的内置语言,通过创建合约的方式来编码需求逻辑,实现一种状态可以自动转换的期望协议。基于账户模型的以太坊数据存储,包括外部账户和合约账户两大部分,两者的区别主要在于,前者是用户创建的具有密钥对的账户地址,后者是用于执行合约代码的账户地址,包含了可执行的代码段,通过作为交易的接收方进行触发。以太坊的数据类型分为永久数据和暂存数据,通过挖矿确认的交易会永久的写入区块链,而对于账户余额这样的可变数据则通过LevelDB进行链下持久化存储。在比特币区块结构的基础上,以太坊构建了默克尔帕特里夏树(MerklePatriciaTrie,MPT)的结构[3],为区块头添加了全局状态树(StateTrie)、交易树(TransactionTrie)、收据树(ReceiptTrie)的根哈希字段。StateTrie维护了整个系统的世界状态,根节点是基于密码学依赖于所有内部数据的安全标识,通过修改RootHash,可以恢复到特定历史状态。TransactionTrie是本区块的所有交易组成的MPT树,ReceiptTrie是每一个交易结果的收据散列值。通过区块头添加的这三个根值,保证了所有节点存储状态、交易以及交易结果的一致性。WorldState存储模型的设计优势如下,首先,可以快速的访问到用户账户余额,而不需要回溯历史记录进行重新计算;然后,从存储空间的角度考虑,以太坊可以实现直接交易转账,通过修改状态进行定位跟踪,而不需要像比特币对每一笔交易进行拆分找零,生成一系列的交易记录。因此,链上存储部分UTXO占用较大的空间,而WorldState占用相对较小;最后,从可用性方面分析,UTXO不支持复杂的逻辑处理,WorldState支持图灵完备的编程语言,可以扩展更多的应用场景。WorldState在使用过程中也存在一定缺陷。从存储的角度考虑,以太坊是基于状态的,StateTrieRootHash存储在区块头部,但是整个状态树是通过LevelDB进行持久化存储在链下,树的中间节点大大增加了存储所有数据所需的磁盘空间量,因此,会造成以太坊客户端数据剧增,给用户带来存储性能方面的压力。
技术实现思路
本专利技术提供了一种基于区块链的存储结构的设计与实现方法,本专利技术有效克服当前区块链系统存在交易打包速度慢、可扩展性差、网络处理能力严重不足等缺点,详见下文描述:一种基于区块链的存储结构的设计与实现方法,所述方法包括以下步骤:部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。其中,所述存储状态基础结构的属性包括:资产链唯一标识和账户地址,所述资产链唯一标识是指该账户当前所运行的资产链生产环境;所述账户地址是用户自定义生成的具有公私和私钥的地址,或部署智能合约时生成的合约地址。进一步地,所述数据提供者由资源路径、数据关键字、状态标志和层数组成;所述资源路径是指从账户数据提供者开始到所在的数据提供者的连接通路;所述数据关键字是对数据提供者进行唯一标识的字段;所述状态标志多用于处理与账户状态或合约相关的操作;所述层数用于标记当前数据提供者所在的层级位置。本专利技术提供的技术方案的有益效果是:较以太坊系统而言,本专利技术的存储结构方面有较好的数据表现,存储体积较小,交易速度快、传输稳定,整体性能得到一定的提高。附图说明图1为一种基于区块链的存储结构的设计与实现方法的流程图;图2为数据提供者的存储结构示意图;图3为数据存储的内存空间占用情况的示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面对本专利技术实施方式作进一步地详细描述。实施例1本专利技术实施例提供了一种基于区块链的存储结构的设计与实现方法,参见图1,该方法包括以下步骤:101:部署智能合约;102:创建账户数据提供者;103:创建数据提供者;104:创建子数据提供者;105:合约状态存储。在一个实施例中,步骤101部署了智能合约,具体步骤如下:首先,编写投票合约代码,并将其编译生成dll文件;然后,调用RPC服务的方法加载合约信息;最后,调用合约部署方法部署到资产链,返回合约部署地址。在一个实施例中,步骤102在步骤101的基础上创建数据提供者,具体步骤如下:根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构。在一个实施例中,步骤103创建数据提供者,具体步骤如下:在投票合约的存储状态基础结构本文档来自技高网
...

【技术保护点】
1.一种基于区块链的存储结构的设计与实现方法,其特征在于,所述方法包括以下步骤:部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。

【技术特征摘要】
1.一种基于区块链的存储结构的设计与实现方法,其特征在于,所述方法包括以下步骤:部署智能合约;根据资产链和合约部署地址信息,创建投票合约的存储状态基础结构;在投票合约的存储状态基础结构的基础上,为该合约状态创建a,b,c,…,n个参与投票的用户对应的数据提供者结构;每一个参与投票的用户对应的数据提供者,根据投票行为产生对应的结构;状态存储采用关键字和数值对应的格式,投票关键字通过路径搜索唯一确定,投票值为当前状态数值。2.根据权利要求1所述的一种基于区块链的存储结构的设计与实现方法,其特征在于,所述存储状态基础结构的...

【专利技术属性】
技术研发人员:于健王儒徐天一赵满坤刘志强李雪威王建荣马舒婕
申请(专利权)人:天津大学
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1