基于DAG的区块链的交易定序方法及设备技术

技术编号:20427149 阅读:30 留言:0更新日期:2019-02-23 09:11
本公开内容公开了基于DAG的区块链的交易定序方法及设备,其中,基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,该方法包括:根据定序块生成时间顺序对区块链中当前最新生成的定序块进行编号以形成定序块ID;将定序块ID作为交易高度保存在相应定序块的头部信息中;基于交易块的交易高度确定规则确定任一交易块的交易高度;根据执行顺序标准将与定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序;根据交易顺序依次执行交易顺序中存在的所有第一类交易块中的智能合约交易。本公开能够在基于DAG的区块链上实现有序地执行普通交易和智能合约交易。

【技术实现步骤摘要】
基于DAG的区块链的交易定序方法及设备
本公开内容属于区块链
,尤其涉及基于DAG的区块链的智能合约交易的定序方法、基于DAG的区块链的智能合约交易的定序执行方法、基于DAG的区块链的普通交易的执行方法、基于DAG的区块链的智能合约交易的定序设备、基于DAG的区块链的智能合约交易的定序执行设备以及基于DAG的区块链的普通交易的执行设备。
技术介绍
链状的分布式记账技术保证了交易的顺序和共识的达成,却制约了区块链性能,成为了可扩展性的最大的瓶颈。目前,以比特币、以太坊为代表的绝大多数的区块链都采用了区块+链式结构,其特点在于全网的交易都在一条单条环环相扣的链上被记录。即使每个节点收到的广播交易不完全一致,但链式区块链会通过工作量证明(PoW)、权益证明(PoS)等机制让某一个节点提出的区块得到全网的共识。这种线性增长的区块链结构保证了交易的有序性,也因此能够基于这种有效性开发诸如图灵完备虚拟机的上层应用。近年来,基于有向无环图(DirectedAcyclicGraph,简称DAG)的结构构建的分布式账本,通过对构建图的过程进行条件约束,实现隔离相关交易、并行无关交易的特性,有效地把分布式账本模型从之前的“算力越大,竞争越大”转变成“算力越大,效率越高”。基于DAG的区块链保留了全网参与区块链验证、构建的特性,交易即共识,解决了现有区块链生成慢、网络带宽要求高、交易确认速度慢等问题。
技术实现思路
在传统的DAG(DirectedAcyclicGraph,有向无环图)模型中,交易之间的异步发布和验证保证了整个系统的高吞吐量,但是同时也使得各交易之间的时间顺序不可靠且不可验证,这使得DAG结构上使用智能合约成为难点。由于交易确认的不确定性、节点同步的不确定性、网络延迟的不确定性等原因,交易的插入顺序不能保证。对于普通交易而言,顺序的前后对最终结果不会有影响,因为DAG能保证整个网络交易结果的最终一致。但是对于智能合约,顺序的混乱会导致节点间的时间状态无法达成共识。针对上述问题,本公开内容的第一方面提出了基于DAG的区块链的智能合约交易的定序方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:根据定序块生成时间顺序,对所述区块链中当前最新生成的定序块进行编号以形成定序块ID,并将所述定序块ID保存在所述定序块的头部信息中;将所述定序块ID作为交易高度保存在相应定序块的头部信息中;基于交易块的交易高度确定规则确定任一交易块的交易高度;根据执行顺序标准,将与所述定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序,并将所述交易顺序保存在所述定序块的头部信息中,其中,所述第一类交易块是包括智能合约交易的交易块;根据所述交易顺序,依次执行所述交易顺序中存在的所有所述第一类交易块中的智能合约交易;在执行完毕任一智能合约交易的情况下,在与所述智能合约交易相关的账户中更新账户余额、在存储所述智能合约的存储模块中保存与所述智能合约交易相关联的信息,并将执行结果保存在第一数据库中。根据本公开内容的第一方面,根据定序块生成时间顺序对所述区块链中当前最新生成的定序块进行编号以形成定序块ID进一步包括:当上一个定序块的定序块ID=n-1(其中,n=1,2…)时,使得最新生成的定序块的定序块ID等于n,并且定序块ID=n的定序块直接引用或间接引用定序块ID=n-1的定序块。根据本公开内容的第一方面,将所述定序块ID作为交易高度保存在相应定序块的头部信息中进一步包括:当定序块ID=n时,确定所述定序块的交易高度等于n;以及将所确定的交易高度保存在所述定序块的头部信息中。根据本公开内容的第一方面,基于交易块的交易高度确定规则确定任一交易块的交易高度进一步包括:在所述交易块被定序块ID=n的定序块直接引用或间接引用、同时所述交易块未被定序块ID=n-1的定序块直接引用或间接引用的情况下,确定所述交易块的交易高度等于n;将所确定的交易高度保存在所述交易块的头部信息中。根据本公开内容的第一方面,根据执行顺序标准将与所述定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序进一步包括:基于每一个交易块的头部信息中保存的交易高度和交易类型,确定与所述定序块具有相同交易高度的所有要执行的第一类交易块,其中,所述交易类型包括智能合约交易以及不具有智能合约的普通交易;按照执行不同智能合约交易的手续费的高低顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序;或者按照随机顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序;或者按照智能合约交易的价值高低顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序。针对上述问题,本公开内容的第二方面提出了一种基于DAG的区块链的智能合约交易的定序执行方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:接收一个或多个定序块;基于所接收到的所有定序块的头部信息中的定序块ID,确定第一定序块,其中,所述第一定序块是当前要最先执行的定序块;接收所述第一定序块直接引用和间接引用的所有交易块及所有定序块;根据所述第一定序块中的交易顺序,依次执行与所述第一定序块具有相同交易高度的所有第一类交易块中的智能合约交易,其中,所述第一类交易块是包括智能合约交易的交易块,所述交易顺序是根据执行顺序标准对要执行的第一类交易块的块哈希的排序;在执行完毕任一智能合约交易的情况下,在与所述智能合约交易相关的账户中更新账户余额、在存储所述智能合约的存储模块中保存与所述智能合约交易相关联的信息,并将执行结果保存在第二数据库中。根据本公开内容的第二方面,在接收到定序块之前,所述方法进一步包括:接收一个或多个交易块;将所接收到的交易块存入缓冲池。针对上述问题,本公开内容的第三方面提出了一种基于DAG的区块链的普通交易的执行方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:接收一个或多个定序块;基于所接收到的所有定序块的头部信息中的定序块ID,确定第一定序块,其中,所述第一定序块是当前要最先执行的定序块;接收所述第一定序块直接引用和间接引用的所有交易块及所有定序块;在所接收到的所有交易块中确定与所述定序块具有相同交易高度的第二类交易块,其中,所述第二类交易块是包括不具有智能合约的普通交易的交易块;对每一个第二类交易块中保存的源账户执行扣款交易;在所述扣款交易执行成功的情况下,对所述第二类交易块中保存的目的账户执行放款交易;在执行完毕任一普通交易的情况下,在与所述普通交易相关的账户中更新账户余额,并将执行结果保存在数据库中。根据本公开内容的第三方面,在接收到定序块之前,所述方法进一步包括:接收一个或多个交易块;确定所接收到的每一个交易块是否是第二类交易块;在确定所接收到的任一交易块是第二类交易块的情况下,对所述第二类交易块中保存的源账户执行扣款交易;在所述扣款交易执行成本文档来自技高网...

【技术保护点】
1.一种基于DAG的区块链的智能合约交易的定序方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:根据定序块生成时间顺序,对所述区块链中当前最新生成的定序块进行编号以形成定序块ID,并将所述定序块ID保存在所述定序块的头部信息中;将所述定序块ID作为交易高度保存在相应定序块的头部信息中;基于交易块的交易高度确定规则确定任一交易块的交易高度;根据执行顺序标准,将与所述定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序,并将所述交易顺序保存在所述定序块的头部信息中,其中,所述第一类交易块是包括智能合约交易的交易块;根据所述交易顺序,依次执行所述交易顺序中存在的所有所述第一类交易块中的智能合约交易;在执行完毕任一智能合约交易的情况下,在与所述智能合约交易相关的账户中更新账户余额、在存储所述智能合约的存储模块中保存与所述智能合约交易相关联的信息,并将执行结果保存在第一数据库中。

【技术特征摘要】
1.一种基于DAG的区块链的智能合约交易的定序方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:根据定序块生成时间顺序,对所述区块链中当前最新生成的定序块进行编号以形成定序块ID,并将所述定序块ID保存在所述定序块的头部信息中;将所述定序块ID作为交易高度保存在相应定序块的头部信息中;基于交易块的交易高度确定规则确定任一交易块的交易高度;根据执行顺序标准,将与所述定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序,并将所述交易顺序保存在所述定序块的头部信息中,其中,所述第一类交易块是包括智能合约交易的交易块;根据所述交易顺序,依次执行所述交易顺序中存在的所有所述第一类交易块中的智能合约交易;在执行完毕任一智能合约交易的情况下,在与所述智能合约交易相关的账户中更新账户余额、在存储所述智能合约的存储模块中保存与所述智能合约交易相关联的信息,并将执行结果保存在第一数据库中。2.根据权利要求1所述的定序方法,其中,根据定序块生成时间顺序对所述区块链中当前最新生成的定序块进行编号以形成定序块ID进一步包括:当上一个定序块的定序块ID=n-1(其中,n=1,2…)时,使得最新生成的定序块的定序块ID等于n,并且定序块ID=n的定序块直接引用或间接引用定序块ID=n-1的定序块。3.根据权利要求2所述的定序方法,其中,将所述定序块ID作为交易高度保存在相应定序块的头部信息中进一步包括:当定序块ID=n时,确定所述定序块的交易高度等于n;以及将所确定的交易高度保存在所述定序块的头部信息中。4.根据权利要求3所述的定序方法,其中,基于交易块的交易高度确定规则确定任一交易块的交易高度进一步包括:在所述交易块被定序块ID=n的定序块直接引用或间接引用、同时所述交易块未被定序块ID=n-1的定序块直接引用或间接引用的情况下,确定所述交易块的交易高度等于n;将所确定的交易高度保存在所述交易块的头部信息中。5.根据权利要求1所述的定序方法,其中,根据执行顺序标准将与所述定序块具有相同交易高度的多个第一类交易块进行排序以形成交易顺序进一步包括:基于每一个交易块的头部信息中保存的交易高度和交易类型,确定与所述定序块具有相同交易高度的所有要执行的第一类交易块,其中,所述交易类型包括智能合约交易以及不具有智能合约的普通交易;按照执行不同智能合约交易的手续费的高低顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序;或者按照随机顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序;或者按照智能合约交易的价值高低顺序对所有要执行的第一类交易块的块哈希进行排序,以形成所述交易顺序。6.一种基于DAG的区块链的智能合约交易的定序执行方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:接收一个或多个定序块;基于所接收到的所有定序块的头部信息中的定序块ID,确定第一定序块,其中,所述第一定序块是当前要最先执行的定序块;接收所述第一定序块直接引用和间接引用的所有交易块及所有定序块;根据所述第一定序块中的交易顺序,依次执行与所述第一定序块具有相同交易高度的所有第一类交易块中的智能合约交易,其中,所述第一类交易块是包括智能合约交易的交易块,所述交易顺序是根据执行顺序标准对要执行的第一类交易块的块哈希的排序;在执行完毕任一智能合约交易的情况下,在与所述智能合约交易相关的账户中更新账户余额、在存储所述智能合约的存储模块中保存与所述智能合约交易相关联的信息,并将执行结果保存在第二数据库中。7.根据权利要求6所述的定序执行方法,其中,在接收到定序块之前,所述方法进一步包括:接收一个或多个交易块;将所接收到的交易块存入缓冲池。8.一种基于DAG的区块链的普通交易的执行方法,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块进行确定化,所述方法包括:接收一个或多个定序块;基于所接收到的所有定序块的头部信息中的定序块ID,确定第一定序块,其中,所述第一定序块是当前要最先执行的定序块;接收所述第一定序块直接引用和间接引用的所有交易块及所有定序块;在所接收到的所有交易块中确定与所述定序块具有相同交易高度的第二类交易块,其中,所述第二类交易块是包括不具有智能合约的普通交易的交易块;对每一个第二类交易块中保存的源账户执行扣款交易;在所述扣款交易执行成功的情况下,对所述第二类交易块中保存的目的账户执行放款交易;在执行完毕任一普通交易的情况下,在与所述普通交易相关的账户中更新账户余额,并将执行结果保存在数据库中。9.根据权利要求8所述的执行方法,其中,在接收到定序块之前,所述方法进一步包括:接收一个或多个交易块;确定所接收到的每一个交易块是否是第二类交易块;在确定所接收到的任一交易块是第二类交易块的情况下,对所述第二类交易块中保存的源账户执行扣款交易;在所述扣款交易执行成功的情况下,对所述第二类交易块中保存的目的账户执行放款交易;在执行完毕所述普通交易的情况下,将执行结果保存到缓冲池中。10.根据权利要求8所述的执行方法,其中,所述方法进一步包括:在所述扣款交易执行失败的情况下,拒绝对所述第二类交易块中保存的目的账户执行放款交易,并且拒绝执行所述源账户作为交易发起方的所有交易。11.一种基于DAG的区块链的智能合约交易的定序设备,其中,所述基于DAG的区块链包括多个交易块以及一个或多个定序块,并且每一个定序块将其直接引用的交易块以及间接引用的一部分交易块...

【专利技术属性】
技术研发人员:干泽俊孙亮裴新陶星良
申请(专利权)人:众安信息技术服务有限公司
类型:发明
国别省市:广东,44

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

1