CN111506580B - 一种基于中心化块链式账本的交易存储方法 - Google Patents
一种基于中心化块链式账本的交易存储方法 Download PDFInfo
- Publication number
- CN111506580B CN111506580B CN202010544984.5A CN202010544984A CN111506580B CN 111506580 B CN111506580 B CN 111506580B CN 202010544984 A CN202010544984 A CN 202010544984A CN 111506580 B CN111506580 B CN 111506580B
- Authority
- CN
- China
- Prior art keywords
- service
- transaction
- state tree
- data block
- business
- 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/23—Updating
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
-
- 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
- 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
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/12—Hotels or restaurants
Abstract
公开了一种基于中心化块链式账本的交易存储方法。为中心化块链式账本配置关联的状态树,状态树用于针对每个业务关键词,动态记录中心化块链式账本中存储的该业务关键词对应的业务交易的数量。由于状态树是在每次向账本中写入数据块时进行更新的,而数据块成块就意味着数据块中的交易必然会存入账本,因此,相当于每个数据块都对应有一个状态树,表明该数据块成块时的世界状态(即各业务关键词对应的被账本存储的业务交易的数量)。
Description
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于中心化块链式账本的交易存储方法。
背景技术
中心化块链式账本,区别于去中心化的块链式账本(如区块链网络中各节点分布式维护的区块链),是指中心化的数据库服务端维护的本地数据库。有时,也将中心化块链式账本称为Ledger Data Base(Ledger DB)。
中心化块链式账本是在区块链存储方案的基础上进行改进得到的新型存储方案,其能够克服了区块链存储存在的吞吐量低、响应时间长等问题。中心化块链式账本的服务对象通常是企业级用户,用户一般在数据库服务端注册账户,并通过账户将自身业务产生的业务数据封装成业务交易,将业务交易提交给数据库服务端,数据库服务端受理业务交易后,会基于一定的成块条件,将若干业务交易打包成数据块写入中心化块链式账本进行存储。
中心化块链式账本中,类似于传统的区块链,数据块间按照成块时间先后顺序依次链接,每个数据块中携带有本数据块中各业务交易构成的梅克尔-帕特里夏树(Merkle-Patricia Tree,MPT)的根哈希值,此外,后一个数据块的块头中携带有前一个数据块的块哈希(即对块头进行哈希计算得到的哈希值),如此确保中心化块链式账本中的业务交易无法被轻易篡改。
在实际应用中,用户在向数据库服务端提交业务交易时,可以在业务交易中携带至少一个业务关键词,如此,在中心化块链式账本中,包含有相同业务关键词的多个业务交易具有关联性,数据库服务端可以根据用户指定的某个业务关键词,从中心化块链式账本中读取出该业务关联词对应的每个业务交易提供给用户。然而,用户有时需要知道中心化块链式账本中某个业务关键词对应的业务交易的准确数量。
发明内容
本申请实施例是为了解决现有的基于中心化块链式账本的交易存储方式下某个业务关键词对应的业务交易的数量可信度不高的问题。
为解决上述技术问题,本申请实施例是这样实现的:
根据本说明书实施例的第1方面,提供一种基于中心化块链式账本的交易存储方法,应用于数据库服务端,所述数据库服务端维护有中心化块链式账本;
所述数据库服务端还维护有状态树;针对所述状态树中每个叶子节点,该叶子对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key;
所述方法包括:
当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块;
根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块;
将所述数据块写入中心化块链式账本。
根据本说明书实施例的第2方面,提供一种基于中心化块链式账本的交易存储装置,应用于数据库服务端,所述数据库服务端维护有中心化块链式账本;
所述数据库服务端还维护有状态树;针对所述状态树中每个叶子节点,该叶子对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key;
所述装置包括:
数据块打包模块,当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块;
状态树更新模块,根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块;
数据块写入模块,将所述数据块写入中心化块链式账本。
通过本说明书实施例中所提供的方案,为中心化块链式账本配置关联的状态树,状态树用于针对每个业务关键词,动态记录中心化块链式账本中存储的该业务关键词对应的业务交易的数量。由于状态树是在每次向账本中写入数据块时进行更新的,而数据块成块就意味着数据块中的交易必然会存入账本,因此,相当于每个数据块都对应有一个状态树,表明该数据块成块时的世界状态(即各业务关键词对应的被账本存储的业务交易的数量)。而又由于每个数据块中携带有对应的状态树的根哈希,因此,可以确保对应的状态树不可篡改,从状态树中读取的某个业务关键词对应的已存储业务交易的数量是可信的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书提供的一种基于中心化块链式账本的数据存储系统示意图;
图2是本说明书实施例提供的一种基于中心化块链式账本的交易存储方法的流程示意图;
图3是本说明书实施例提供的一种基于中心化块链式账本的交易完整性验证方法的流程示意图;
图4是本说明书实施例提供的一种基于中心化块链式账本的交易存储装置的结构示意图;
图5是本说明书实施例提供的一种交易完整性验证装置的结构示意图;
图6是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
图1是本说明书提供的一种基于中心化块链式账本的数据存储系统示意图。如图1所示,数据存储系统包括中心化的数据库服务端与多个客户端。其中,数据库服务端负责维护中心化块链式账本,每个客户端对应于一个企业级用户(机构),每个企业级用户自身又进一步对接一个或多个个人用户。
例如,外卖平台与电商平台分别作为用户在数据库服务端上进行注册,获得用户账户,并且,分别在自己的设备上安装数据库服务端提供的客户端,在客户端中登录用户账户,从而具有与数据库服务端进行数据交互的能力。
而外卖平台与电商品台又分别对接各自的大量个人用户。某个个人用户使用自己的手机上安装的外卖客户端购买一份外卖食品后,外卖平台的设备会生成一外卖订单记录(即外卖平台基于业务产生的业务数据),外卖平台会通过自己在数据库服务端注册的用户账户将订单记录封装成交易(类似于区块链,本文所述的交易是适用于中心化块链式账本存储的专用数据结构),将交易提交给数据库服务端,以便数据库服务端将交易封装进数据库写入中心化块链式账本进行存储。类似地,电商平台也会将基于电商业务产生的每个电商订单封装成交易提交给数据库服务端。
为了描述的方便,后文所述的用户是指数据库服务端所服务的企业级用户,后文所述的用户账户,是指企业级用户在数据库服务端注册的账户。
此外,对中心化块链式账本中存储的业务交易所携带的业务关键词进行说明。业务关键词,是指用户在需要对基于自身业务所产生业务数据进行存储时,为业务数据分配的业务关键词。例如,用户可以是电商平台,用户产生的业务数据可以是商品订单,对于不同商品种类的商品订单,可以有不同的业务关键词。例如,数码商品订单对应的业务关键词可以是数码,食品订单对应的业务关键词可以有两个,分别是食品与消耗品。
数据库服务端将用户提交的封装有业务数据与业务关键词的业务交易存入中心化块链式账本中。
由于数据库服务端需要将一批批交易打包成数据块写入账本,并且,数据服务端通常会受理多个用户提交的交易,并且,即便的同一个用户,其通常也会连续提交不同业务关键词的业务交易,因此,账本中存储的各业务交易实际上并没有被很好的组织起来方便查阅。而利用业务关键词,数据库服务端后续能够以某个业务关键词为线索(clue),将该业务关键词对应的全部业务交易从账本中筛选出来。
在现有的基于中心化块链式账本的存储模式下,用户如果需要知道账本中某个业务关键词对应的业务交易的数量是多少,就只能请求数据库服务端进行统计,而数据库服务端可以由于各种原因(如系统故障)向用户返回不真实的统计结果,而用户却没有途径可以校验统计结果是否真实。
为此,在本说明书提供的一个或多个实施例中,在账本模式下引入状态树机制,将每个业务关键词(key)与相应的业务交易数量(value)组成的key-value作为状态树中的一个叶子节点。数据库服务端每次向账本中写入数据块时,需要根据这个数据块中每个业务交易的业务关键词,更新状态树,并且将更新后的状态树根哈希写入该数据块,之后才能将该数据块写入账本。如此,相当于将每个业务关键词对应的已存入账本的业务交易数量动态更新并且锚定到账本上。用户可以通过账本来校验数据块服务端返回的统计结果(某个业务关键词对应的已存储业务交易数量)是否真实。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图2是本说明书实施例提供的一种基于中心化块链式账本的交易存储方法的流程示意图,包括如下步骤:
S200:当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块。
图2所示方法流程的执行主体是中心化的数据库服务端。
在本说明书实施例中,数据库服务端维护有中心化块链式账本。数据库服务端还维护有状态树;针对所述状态树中每个叶子节点,该叶子对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key。
此处对状态树进行介绍。状态树实际上属于一种MPT,状态树原本是区块链领域的概念,在以太坊协议中,将用户账户视为key,将账户的状态(如以太币余额)视为value,将每个用户对应的key-value作为状态树的一个叶子节点。在以太坊协议中,状态树用于实现对全部用户的账户状态进行动态更新,每一次共识完成得到区块时,就更新一次状态树,并且将更新后的状态树的根哈希写入区块。如此,区块写入区块链中之后,就实现了对用户的账户状态变化过程的锚定。
而在本说明书中实施例中,可以将数据库服务端所服务的所有用户定义的全量业务关键词视为一个个key,将每个业务关键词对应的已存入账本的业务交易的数量视为value,以这样的key-value作为状态树的叶子节点。
在本说明书实施例中,预设成块条件可以根据实际需要指定。例如,数据库服务端可以每经过一定时长时,将已受理的一定数量的业务交易打包成待写入账本的数据块。又如,数据库服务端可以每当监测到已受理的业务交易的总容量大于某个阈值时,将已受理的多个业务交易打包成待写入账本的数据块。
需要说明的是,数据库服务端已受理的交易,是指用户账户已经构建并提交给数据库服务端,而数据库服务端还未打包成数据块的交易。还需要说明的是,中心化块链式账本中存储的交易,通常主要是业务交易,此外,还可以由其他类型的交易,如用户账户也可以向数据库服务端发送一些请求性交易或指令性交易,这些交易也会被写入账本。一般而言,只有业务交易才会包含业务关键词。
S202:根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块。
在本说明书实施例中,数据库服务端在将打包成的数据块写入账本之前,需要执行步骤S202。需要说明的是,当前数据块中的每个交易不一定都是业务交易。
数据库服务端需要将当前数据块中每个业务交易涉及的业务关键词都确定出来,然后针对确定出的每个业务关键词,统计当前数据块中携带该业务关键词的业务交易的数量,并根据统计结果来更新状态树,然后还要将更新后的状态树的根哈希写入当前数据块。
具体而言,若所述数据块中的M个业务交易包含有同一个非首次出现的业务关键词,则在所述状态树中定位该业务关键词对应的叶子节点,并将定位到的叶子节点对应的value增加M。其中M为大于0的自然数。
若所述数据块中的N个业务交易包含有同一个首次出现的业务关键词,则在所述状态树中增加对应于该业务关键词的叶子节点;增加的叶子节点对应的key为该业务关键词,对应的value为N。其中,N为大于0的自然数。
S204:将所述数据块写入中心化块链式账本。
可以理解,对于中心化块链式账本中的每个数据块而言,其都有对应的一个版本的状态树。中心化块链式账本中最后一个数据块(当前最新数据块)对应的状态树,就是最新版本的状态树。最新版本之前的版本,就是历史版本。
在本说明书实施例中,数据库服务端可以将历史版本的状态树删除,也可以将历史版本的状态树保留,存入历史状态数据库中。
通过本说明书实施例中所提供的方案,为中心化块链式账本配置关联的状态树,状态树用于针对每个业务关键词,动态记录中心化块链式账本中存储的该业务关键词对应的业务交易的数量。由于状态树是在每次向账本中写入数据块时进行更新的,而数据块成块就意味着数据块中的交易必然会存入账本,因此,相当于每个数据块都对应有一个状态树,表明该数据块成块时的世界状态(即各业务关键词对应的被账本存储的业务交易的数量)。而又由于每个数据块中携带有对应的状态树的根哈希,因此,可以确保对应的状态树不可篡改,从状态树中读取的某个业务关键词对应的已存储业务交易的数量是可信的。
图3是本说明书实施例提供的一种基于中心化块链式账本的交易完整性验证方法的流程示意图,包括:
S300:获取用户账户发送的完整性验证请求。
图3所示方法的执行主体是数据库服务端。
本文中所述的完整性验证,是指针对某个业务关键词,由数据库服务端验证用户已提交的该业务关键词对应的全部业务交易是否都存储于账本中。
一般而言,所述完整性验证请求包含所述用户账户指定的业务关键词。
S302:执行交易统计操作。
具体而言,步骤S302是指数据库服务端从中心化块链式账本中统计包含所述业务关键词的业务交易的第一数量。
S304:基于维护的状态树,确定以所述业务关键词为key的叶子节点对应的value,作为第二数量。
步骤S304中的所述的状态树,是指中心化块链式账本中最后一个数据块(最新数据块)对应的状态树,其是最新版本的全局状态树。
S306:判断所述第一数量与所述第二数量是否一致,若判断结果为是,则向所述用户账户返回验证成功结果。
如果第一数量与第二数量相等,则说明通过完整性验证。
此外,由于完整性验证不通过可能是数据库服务端的系统偶然故障导致,因此,如果第一数量与第二数量不相等,则可以重新执行交易统计操作,通过再次执行,可能会避免偶然的系统故障。
另外,也可以在判断结果为否的情况下(或者连续两次判断结果为否的情况下),向所述用户账户返回验证失败结果。
图4是本说明书实施例提供的一种基于中心化块链式账本的交易存储装置的结构示意图,应用于数据库服务端,所述数据库服务端维护有中心化块链式账本。
所述数据库服务端还维护有状态树;针对所述状态树中每个叶子节点,该叶子对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key。
图4所示的装置包括:
数据块打包模块401,当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块;
状态树更新模块402,根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块;
数据块写入模块403,将所述数据块写入中心化块链式账本。
所述状态树更新模块402,若所述数据块中的M个业务交易包含有同一个非首次出现的业务关键词,则在所述状态树中定位该业务关键词对应的叶子节点,并将定位到的叶子节点对应的value增加M。
所述状态树更新模块402,若所述数据块中的N个业务交易包含有同一个首次出现的业务关键词,则在所述状态树中增加对应于该业务关键词的叶子节点;增加的叶子节点对应的key为该业务关键词,对应的value为N。
所述状态树更新模块402,将更新前的所述状态树移入历史状态数据库。
图5是本说明书实施例提供的一种交易完整性验证装置的结构示意图,应用于数据库服务端,所述装置包括:
获取模块501,获取用户账户发送的完整性验证请求;所述完整性验证请求包含所述用户账户指定的业务关键词;
执行模块502,执行交易统计操作,以便从中心化块链式账本中统计包含所述业务关键词的业务交易的第一数量;
确定模块503,基于维护的状态树,确定以所述业务关键词为key的叶子节点对应的value,作为第二数量;
判断处理模块504,判断所述第一数量与所述第二数量是否一致,若判断结果为是,则向所述用户账户返回验证成功结果。
所述判断处理模块504,若判断结果为否,则重新执行交易统计操作。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图2或3所示方法。
图6示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图2或图3所示方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (8)
1.一种基于交易存储方法的交易完整性验证方法,应用于数据库服务端,所述数据库服务端维护中心化块链式账本;
所述数据库服务端还维护状态树;针对所述状态树中每个叶子节点,该叶子节点对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key;
所述交易存储方法包括:
当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块;根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块;将所述数据块写入中心化块链式账本;
所述交易完整性验证方法包括:
获取用户账户发送的完整性验证请求;所述完整性验证请求包含所述用户账户指定的业务关键词;
执行交易统计操作,以便从中心化块链式账本中统计包含所述业务关键词的业务交易的第一数量;
基于维护的状态树,确定以所述业务关键词为key的叶子节点对应的value,作为第二数量;
判断所述第一数量与所述第二数量是否一致,若判断结果为是,则向所述用户账户返回验证成功结果。
2.如权利要求1所述的交易完整性验证方法,根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,具体包括:
若所述数据块中的M个业务交易包含有同一个非首次出现的业务关键词,则在所述状态树中定位该业务关键词对应的叶子节点,并将定位到的叶子节点对应的value增加M。
3.如权利要求1所述的交易完整性验证方法,根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,具体包括:
若所述数据块中的N个业务交易包含有同一个首次出现的业务关键词,则在所述状态树中增加对应于该业务关键词的叶子节点;增加的叶子节点对应的key为该业务关键词,对应的value为N。
4.如权利要求1所述的交易完整性验证方法,所述交易存储方法还包括:
将更新前的所述状态树移入历史状态数据库。
5.如权利要求1所述的交易完整性验证方法,所述交易完整性验证方法还包括:
若判断结果为否,则重新执行交易统计操作。
6.一种基于交易存储方法的交易完整性验证装置,应用于数据库服务端,所述数据库服务端维护中心化块链式账本;
所述数据库服务端还维护状态树;针对所述状态树中每个叶子节点,该叶子节点对应的键key为一个业务关键词,该叶子节点对应的值value为中心化块链式账本中存储的包含该业务关键词的业务交易的数量;不同叶子节点对应于不同的key;
所述交易存储方法包括:
当确定满足预设成块条件时,将已受理的多个业务交易打包成待写入账本的数据块;根据所述数据块中每个业务交易包含的业务关键词,更新所述状态树,并将更新后的所述状态树的根哈希写入所述数据块;将所述数据块写入中心化块链式账本;
所述装置包括:
获取模块,获取用户账户发送的完整性验证请求;所述完整性验证请求包含所述用户账户指定的业务关键词;
执行模块,执行交易统计操作,以便从中心化块链式账本中统计包含所述业务关键词的业务交易的第一数量;
确定模块,基于维护的状态树,确定以所述业务关键词为key的叶子节点对应的value,作为第二数量;
判断处理模块,判断所述第一数量与所述第二数量是否一致,若判断结果为是,则向所述用户账户返回验证成功结果。
7.如权利要求6所述的装置,所述判断处理模块,若判断结果为否,则重新执行交易统计操作。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010544984.5A CN111506580B (zh) | 2020-06-15 | 2020-06-15 | 一种基于中心化块链式账本的交易存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010544984.5A CN111506580B (zh) | 2020-06-15 | 2020-06-15 | 一种基于中心化块链式账本的交易存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506580A CN111506580A (zh) | 2020-08-07 |
CN111506580B true CN111506580B (zh) | 2020-12-22 |
Family
ID=71875334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010544984.5A Active CN111506580B (zh) | 2020-06-15 | 2020-06-15 | 一种基于中心化块链式账本的交易存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506580B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632055A (zh) * | 2021-01-12 | 2021-04-09 | 支付宝(杭州)信息技术有限公司 | 一种基于可信账本数据库的业务记录删除方法 |
CN112364383B (zh) * | 2021-01-12 | 2021-04-27 | 支付宝(杭州)信息技术有限公司 | 一种业务记录真实性验证方法 |
CN112364010B (zh) * | 2021-01-12 | 2021-04-23 | 支付宝(杭州)信息技术有限公司 | 一种重要业务记录的存在性验证方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110060064A (zh) * | 2019-04-26 | 2019-07-26 | 深圳市网心科技有限公司 | 一种交易信息验证方法及相关装置 |
CN110334153A (zh) * | 2019-06-28 | 2019-10-15 | 阿里巴巴集团控股有限公司 | 块链式账本中的授权方法、系统、装置及设备 |
CN110750533A (zh) * | 2019-09-25 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 一种基于多条业务属性的数据存储方法、装置及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597825B (zh) * | 2019-09-24 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置及节点设备 |
-
2020
- 2020-06-15 CN CN202010544984.5A patent/CN111506580B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110060064A (zh) * | 2019-04-26 | 2019-07-26 | 深圳市网心科技有限公司 | 一种交易信息验证方法及相关装置 |
CN110334153A (zh) * | 2019-06-28 | 2019-10-15 | 阿里巴巴集团控股有限公司 | 块链式账本中的授权方法、系统、装置及设备 |
CN110750533A (zh) * | 2019-09-25 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 一种基于多条业务属性的数据存储方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111506580A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108876380B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN109242453B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
US20210160053A1 (en) | Merkle tree construction methods and apparatuses and simplified payment verification methods and apparatuses | |
CN109377216B (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
TWI743458B (zh) | 一種並行化執行區塊鏈交易的方法、裝置及系統 | |
CN111506580B (zh) | 一种基于中心化块链式账本的交易存储方法 | |
US20200201560A1 (en) | Data storage method, apparatus, and device for multi-layer blockchain-type ledger | |
CN111459948B (zh) | 一种基于中心化块链式账本的交易完整性验证方法 | |
CN110032598B (zh) | 字段更新方法及装置、电子设备 | |
US20210184837A1 (en) | Methods and apparatuses for reading blockchain data | |
US11294875B2 (en) | Data storage on tree nodes | |
CN109359118B (zh) | 一种数据写入方法及装置 | |
US20210158340A1 (en) | Methods and apparatuses for concealing transaction written to blockchain | |
US11275814B2 (en) | Recording ledger data on a blockchain | |
CN108599973B (zh) | 一种日志关联方法、装置及设备 | |
CN110020846B (zh) | 一种转账业务处理方法及系统 | |
CN111046052B (zh) | 一种数据库中的操作记录存储方法、装置及设备 | |
CN111444216A (zh) | 一种基于中心化块链式账本的数据块删除方法 | |
CN111464319B (zh) | 一种基于中心化块链式账本的交易存储、签名校验方法 | |
CN110019538B (zh) | 一种数据表切换方法及装置 | |
CN112364382B (zh) | 基于可信账本数据库的业务记录的可信时间域确定方法 | |
CN109656805B (zh) | 用于业务分析的代码链路的生成方法、装置及业务服务器 | |
CN114116676A (zh) | 数据迁移方法、装置、电子设备及计算机可读存储介质 | |
CN112364010B (zh) | 一种重要业务记录的存在性验证方法及装置 | |
CN111444198B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40034910 Country of ref document: HK |