CN108804112B - 一种区块链落账处理方法及系统 - Google Patents
一种区块链落账处理方法及系统 Download PDFInfo
- Publication number
- CN108804112B CN108804112B CN201810493487.XA CN201810493487A CN108804112B CN 108804112 B CN108804112 B CN 108804112B CN 201810493487 A CN201810493487 A CN 201810493487A CN 108804112 B CN108804112 B CN 108804112B
- Authority
- CN
- China
- Prior art keywords
- transaction
- priority
- execution
- executor
- low
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Abstract
本申请公开了一种区块链落账处理方法,包括,部署步骤:在数据业务器上存储数据库,数据库包含数据对象,数据对象采用键‑值方式存储;提取步骤:从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级;预执行步骤:将事务分配给不同的执行器预执行,执行器从数据业务器获取所需要的数据对象预执行,反馈给调度器;提交步骤:调度器根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器,数据业务器将按提交顺序将事务预执行的结果提交,将缓存中的预执行结果写入数据库。本申请适应多样的区块链应用,并且设立了并行的落账处理方式,极大的加快了区块链逻辑节点的落账速度。本申请还公开了一种区块链落账处理系统。
Description
技术领域
本申请涉及区块链(Blockchain技术领域,特别是涉及一种区块链落账处理方法及系统。
背景技术
随着区块链网络技术的发展,区块链网络的应用已经不再限于虚拟货币的交易,而扩展到数字资产、供应链溯源、法律公证、UTXO(unspent transaction output,未花费的交易输出)、身份证明等多种领域,传统的关系型数据库越来越不适用于新的应用,其严格的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)适用于对结果要求严格但处理对象简单的场景,如货币的转账。但不擅长大量数据的写入处理;为有数据更新的表做索引或表结构变更;字段不固定时的应用;对简单查询需要快速返回结果的处理。尤其像图片、文物信息、社交、搜索等复杂对象的存储。而非关系型数据库(NoSQL)的出现是为了弥补传统数据库因为事务等机制带来的对海量数据、高并发请求的处理的性能上的欠缺。
区块链完成交易打包,即完成共识出块后,产生了新的区块。随后需要将区块中的事务预执行得到预执行结果,以完成事务并更新数据库,即落账。为了保证交易中资产落账一致,区块中的事务要按照排序依次预执行,即同账户相关的交易需要保证顺序性。但传统的顺序预执行,很多无关交易需要等待,导致时间和机器性能的浪费。
发明内容
本申请所要解决的技术问题是传统的关系型数据库不适应区块链网络多样的应用,且共识后落账较慢。
为解决上述技术问题,本申请提供了一种区块链落账处理方法,包括如下步骤:
部署步骤:在数据业务器上存储数据库,所述数据库包含数据对象,所述数据对象采用键-值(Key-Value)方式存储;
提取步骤:从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,排序在前的事务的优先级大于排序在后的事务的优先级;
预执行步骤:用调度器将事务分配给不同的执行器预执行,所述执行器从数据业务器获取所需要的数据对象,对所述事务预执行,并将事务预执行情况反馈给所述调度器,所述预执行为根据事务所需要操作的数据对象访问数据业务器,并将所述数据业务器上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象;
提交步骤:所述调度器根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器,所述数据业务器将按提交顺序将事务预执行的结果提交,将缓存中的预执行结果写入数据库。
本发明通过重新设计区块链采用的数据库,将传统的关系数据库改成键-值(Key-Value),适应多样的区块链应用,并且设立了并行的落账处理方式,极大的加快了区块链逻辑节点的落账速度。
优选的,设立日志系统,所述日志系统记录所述预执行步骤和所述提交步骤中的事务,所述执行器在对所述数据业务器操作时,都先将事务写入到日志系统再对数据对象操作,当出现操作失败,根据日志回滚,所述回滚为被操作的数据对象恢复到操作之前的状态。其有益效果在于:在不完全可靠的环境中,出现不能预执行或优先级不够的失败,能从日志记录逆向操作,以恢复原状态,避免数据的脏读,不一致等。
优选的,所述执行器预执行事务,根据键从数据业务器上操作所述数据对象,所述数据业务器将每一个键的对应的事务按优先级从高到低形成队列,在事务的预执行结果写入数据库后,删除对应的事务。其有益效果在于:让访问同一键值的事务依次预执行,避免数据不一致。
优选的,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
执行器在预执行低优先级事务的过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。其有益效果在于:不同执行器的事务产生冲突时,优先级低的后预执行,若已经预执行则回滚,保证数据的一致。
优选的,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
执行器在预执行低优先级事务的过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。其有益效果在于:不同执行器的事务产生冲突时,优先级低的后预执行,若已经预执行则回滚,保证数据的一致。
优选的,所述执行器为计算机、处理器、处理器内核、进程或线程。其有益效果在于:适用于不同的并行处理方式。
优选的,所述键-值中,所述键由唯一识别码技术得到,所述执行器对所述数据业务器的操作包括获取、新增、更新和删除。其有益效果在于:涵盖数据库的所有操作类型。
优选的,所述执行器对所述数据对象加的锁为乐观锁、悲观锁、MVCC锁、排它锁、共享所、意向排它锁、意向共享锁或共享意向排它锁。其有益效果在于:确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
优选的,所述低优先级事务的执行器杀死低优先级事务后,记录被杀的事务,形成被杀名单,发送给调度器,高优先级的执行器预执行高优先级事务完毕后,反馈给所述调度器,所述调度器等待比被杀名单中事务优先级高的事务预执行完毕后,通知执行器预执行所述被杀名单中的事务。其有益效果在于:设计简单,不用执行器(worker)之间通信。
优选的,所述数据库的数据库管理系统采用levelDB、rocksDB、Memcached、Redis、Accumulo、hbase、Cassandra、scylladb、redis+twemproxy、codis、pika、ssdbTiDB、ForestDB或InnoDB。
优选的,构建和事务类型相对应的执行器,所述调度器基于事务类型进行分类,将不同的事务分配给对应的执行器。其有益效果在于:分类处理,加快并行速度。
优选的,所述日志系统包括临时部分和永久部分,分别存储在不同的介质,所述临时部分的存储介质比所述永久部分的存储介质读写速度高,所述临时部分存储正在预执行事务和正在预执行事务的清单,事务预执行完毕后,将临时部分的事务写入到永久部分。其有益效果在于:采用检查点机制,加快从日志系统的恢复速度。
优选的,所述部署步骤在创世区块生成前或更改区块链网络数据库时进行,区块链网络进行共识,每进行一轮共识生成新的区块,进行所述提取步骤、所述预执行步骤和所述提交步骤以更新数据库,所述区块链网络基于更新后的数据库进行下一轮共识。其有益效果在于配合区块链网络完成记账和落账。
本发明还提供了一种区块链落账处理系统,其特征是,包括调度器、执行器、数据业务器、日志系统、缓存、存储介质;
所述调度器从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,接收所述执行器对预执行结果的反馈,规划事务的提交顺序并通知数据业务器;
所述执行器从数据业务器获取所需要的数据对象,先将事务写入所述日志系统,再对所述事务预执行,将预执行结果保存在缓存中,并将事务预执行情况反馈给所述调度器,当出现操作失败,根据日志回滚;
所述数据业务器存储数据库,将每一个键的对应的事务按优先级从高到低形成队列,接收调度器的提交顺序,将缓存中的事务的预执行结果写入数据库,删除对应的事务;
所述缓存用来临时存储事务预执行的结果;
所述存储介质用来存储日志系统。
优选的,所述调度器包括分发单元、冲突解决单元、提交单元;
所述分发单元将每个事务按照在区块中的排序分配优先级,分配给不同的执行器预执行;
所述执行器在预执行高优先级事务在过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果;
所述提交单元根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器;所述执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知所述冲突解决单元,所述冲突解决单元杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程。
本发明通过重新设计区块链采用的数据库,将传统的关系数据库改成键-值(Key-Value),适应多样的区块链应用,并且设立了并行的落账处理方式,极大的加快了区块链逻辑节点的落账速度。
优选的,所述执行器包括预执行单元、冲突解决单元;
所述预执行单元根据事务所需要操作的数据对象访问数据业务器,并将所述数据业务器上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象;
所述冲突解决单元发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,在所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果后,通知预执行单元预执行自身的事务。
优选的,所述数据业务器包含数据库单元、队列单元、写入单元;
所述数据库单元存储数据库;
所述队列单元将每一个键的对应的事务按优先级从高到低形成队列;
所述写入单元接收调度器的提交顺序,将缓存中的事务的预执行结果写入数据库,删除对应的事务。
优选的,所述日志系统包括临时部分和永久部分;
所述临时部分的存储介质比所述永久部分的存储介质读写速度高;
所述临时部分存储正在预执行事务和正在预执行事务的清单;
所述永久部分接收临时部分的事务预执行完毕后的写入。
附图说明
图1是本申请的区块链落账处理方法的流程图。
图2是本申请的区块链落账处理系统的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请适用的区块链网络中,在区块链网络中,通常一个节点是一台电脑、一个服务器或者一台移动设备,但有时,用户根据需求,可能用多台计算机形成集群来模拟成一台电脑作为节点,或者用虚拟化技术,在一个物理计算机上,虚拟出多个虚拟机作为多个节点,在外界看来,这些集群和虚拟机和普通的计算机往往一样并无根本区别,通常外界不关心他们内部的结构实现方式,在外界表现为一个节点的统称为一个逻辑节点,即一个逻辑节点可能是一台计算机,一个虚拟机、或者由数台计算机组成的一个集群,每个逻辑节点在外界看来,都是一个节点。区块链的功能节点,如共识节点,记账节点,搭建在这个逻辑节点上。
每进行一轮共识,所有共识节点对新生成的区块中的事务、交易进行落账,落账的单位是一个逻辑节点。
键值(Key-Value)存储数据库,这是一种非关系型数据库(NoSQL)模型,其数据按照键值对的形式进行组织、索引和存储。KV存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。在键值(Key-Value)存储数据库,键(Key)为索引或按照关系型数据库的逻辑叫做主键,值(Value)存储着实际的数据信息,键(Key)和值(Value)存在着对应关系,键值(Key-Value)存储数据库通过键(Key)来查询值(Value),通常,键值(Key-Value)存储数据库不支持其他方式来查询。
通常键值(Key-Value))存储数据库系统包括键值(Key-Value)数据库管理软件,如rocksdb,levedb;调度器(scheduler);执行器(worker);数据业务器(data service);日志系统等。
在本发明的区块链并发处理方法中,一个逻辑节点中,通常包含一个调度器,多个执行器,一个或多个数据业务器。
请参阅图1,这是本申请提供的区块链落账处理方法的流程图,包括如下步骤:
部署步骤S1:在数据业务器上存储数据库,所述数据库包含数据对象,所述数据对象采用键-值方式存储;
提取步骤S2:从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,排序在前的事务的优先级大于排序在后的事务的优先级;
预执行步骤S3:用调度器将事务分配给不同的执行器预执行,所述执行器从数据业务器获取所需要的数据对象,对所述事务预执行,并将事务预执行情况反馈给所述调度器,所述预执行为根据事务所需要操作的数据对象访问数据业务器,并将所述数据业务器上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象;
提交步骤S4:所述调度器根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器,所述数据业务器将按提交顺序将事务预执行的结果提交,将缓存中的预执行结果写入数据库。
优选的,设立日志系统,所述日志系统记录所述预执行步骤和所述提交步骤中的事务,所述执行器在对所述数据业务器操作时,都先将事务写入到日志系统再对数据对象操作,当出现操作失败,根据日志回滚,所述回滚为被操作的数据对象恢复到操作之前的状态。
优选的,所述执行器预执行事务,根据键从数据业务器203上操作所述数据对象,所述数据业务器将每一个键的对应的事务按优先级从高到低形成队列,在事务的预执行结果写入数据库后,删除对应的事务。
优选的,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
所述执行器在预执行高优先级事务在过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
执行器在预执行低优先级事务在过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。
优选的,所述计算步骤中,其特征是,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
执行器在预执行高优先级事务在过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
优选的,所述低优先级事务的执行器杀死低优先级事务后,记录被杀的事务,形成被杀名单,发送给调度器,高优先级的执行器预执行高优先级事务完毕后,反馈给所述调度器,所述调度器等待比被杀名单中事务优先级高的事务预执行完毕后,通知执行器预执行所述被杀名单中的事务。
执行器在预执行低优先级事务在过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。
图2为本申请的区块链落账处理系统的框图。参照图2,在一个具体实施例中,新产生的区块包含300个事务,一个调度器将300个事务按照顺序编号,编号也即优先级,事务1具有第一优先级,分配给3个执行器,事务1至事务100分配给执行器2021,事务101至事务200分配给执行器2022,事务201至事务300分配给执行器2023。
在另一个具体实施例中,调度器先分配少量事务,哪个执行器先预执行完毕再分配新事务,参照图2,新产生的区块包含300个事务,一个调度器将300个事务按照顺序编号,编号也即优先级,事务1具有第一优先级,分配给3个执行器,事务1分配给执行器2021,事务2分配给执行器2022,事务3分配给执行器2023,执行器2022最先预执行完事务2,调度器将事务4分配给执行器2022,以此类推。
优选的,所述执行器为计算机、处理器、处理器内核、进程或线程。
在一些具体实施例中,用一台计算机作为逻辑节点,计算机用多个进程或线程作为执行器并行计算,即将事务分配给多个进程或线程。
在一些具体实施例中,用一个服务器作为逻辑节点,服务器包含多个处理器,用多个处理器作为执行器并行计算,即将事务分配给多个处理器。
在一些具体实施例中,用多个计算机组成的集群来作为逻辑节点,集群用多台计算机作为执行器,即将事务分配给多个计算机。
优选的,所述键-值中,所述键由唯一识别码技术得到,所述执行器对所述数据业务器的操作包括获取、新增、更新和删除。所述唯一识别码技术为能得到的键各个唯一不冲突的算法。
在一些实施例中,所述唯一识别码技术采用通用唯一识别码(UniversallyUnique Identifier)技术,优选的,为全局唯一标识符GUID(Globals UniqueIdentifiers)。
在一些实施例中,所述唯一识别码技术为:所述键由所述值经过SHA1、SHA224、SHA256、SHA384、SHA512、MD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、HmacMD5、PBKDF2等哈希算法计算得出,若发生哈希碰撞,后产生的键在结果上加一,键只在值产生时创建,值修改不改变键。
在一些实施例中,区块链应用于案件法律状态追踪,数据对象为案件的法律状态,在利用所述键-值存储方式中,值存储着所述数据对象的取值范围较小,因为法律状态的种类有限,不容易产生哈希碰撞,采取计算量较低的SHA1。
在另一些实施例中,区块链应用于交易平台,数据对象为账户、金额、货品,在利用所述键-值存储方式中,值存储着所述数据对象的取值范围较大,因为商品种类,账户金额千差万别,容易产生哈希碰撞,采用碰撞率较低的SHA224。
优选的,所述执行器对所述数据对象加的锁为乐观锁、悲观锁、多版本并发控制(MVCC)锁、排它锁、共享锁、意向排它锁、意向共享锁或共享意向排它锁。
在一些实施例中,区块链网络中的事务为转账、买卖等交易,对一致性的要求较高,采用排他锁,即事务对数据对象加锁后,其他事务不能对加锁的数据对象读写。
在一些实施例中,区块链的事务为溯源,对一致性的要求相对低一些,采用共享锁,一个事务加锁后,其他事务不能对数据对象进行写操作,但可以进行读操作。
优选的,所述数据库的数据库管理系统采用levelDB、rocksDB、Memcached、Redis、Accumulo、hbase、Cassandra、scylladb、redis+twemproxy、codis、pika、ssdbTiDB、ForestDB或InnoDB。
优选的,构建和事务类型相对应的执行器,所述调度器基于事务类型进行分类,将不同的事务分配给对应的执行器。
在一些实施例中,根据智能合约,将事务分为普通事务和UTXO事务,将普通事务分配给普通执行器,将UTXO事务分配给UTXO执行器。
在一些实施例中,根据智能合约,将事务分为交易、溯源、公证,分别分配给交易执行器、溯源执行器和公证执行器。
优选的,所述日志系统包括临时部分和永久部分,分别存储在不同的介质,所述临时部分的存储介质比所述永久部分的存储介质读写速度高,所述临时部分存储正在预执行事务和正在预执行事务的清单,事务预执行完毕后,将临时部分的事务写入到永久部分。
数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能,通常数据库都是保证在提交(commit)完成之前要先保证日志都被写入到日志文件中,而脏数据块则保存在数据缓存(buffer cache)中再不定期的分批写入到数据文件中。也就是说日志写入和提交操作是同步的,而数据写入和提交操作是不同步的。这样就存在一个问题,当一个数据库崩溃的时候并不能保证缓存里面的脏数据全部写入到数据文件中,这样在实例启动的时候就要使用日志文件进行恢复操作,将数据库恢复到崩溃之前的状态,保证数据的一致性。检查点是这个过程中的重要机制,通过它来确定,恢复时哪些重做日志应该被扫描并应用于恢复。
在一个具体实施例中,临时部分存储在内存或磁盘缓存,永久部分存储在硬盘。
优选的,所述部署步骤在创世区块生成前或更改区块链网络数据库时进行,区块链网络进行共识,每进行一轮共识生成新的区块,进行所述提取步骤、所述预执行步骤和所述提交步骤以更新数据库,所述区块链网络基于更新后的数据库进行下一轮共识。
在一个具体实施例中,请参考图2,区块链平台应用于交易,采用ont作为货币单位。新生成区块高度为i-1的区块,区块中依次包含三个事务,调度器将三个事务提取,分配不同的编号优先级,事务1为A向B转账500ont,事务2为A向C转账700ont,事务3为D向E转账600ont,调度器201分别将事务1、事务2、事务3分别分配给执行器2021、执行器2022、执行器2023。执行器2022根据事务2获取数据业务器上的数据对象,对A和C加锁,获得A有1000ont,C有100ont,预执行事务得到预执行结果A有300ont,C有800ont,将结果保存到缓存中;执行器2021在预执行事务1时发现数据对象A被加锁,判断事务1的优先级高于事务2的优先级,向事务2的执行器2022发出通知,执行器2022收到通知后杀死事务2并根据日志系统204回滚,恢复A有1000ont,C有100ont,并删除对应缓存中预执行结果,执行器2021从数据业务器上获取数据对象,并对A和B加锁,获得A有1000ont,B有400ont,执行器2021预执行事务1得到预执行结果A有500ont,B有900ont,将结果保存在缓存中,释放锁;执行器2022在等待后重新预执行事务2,对A和C加锁,获取A有500ont,C有100ont,A的账户不足转账金额,事务预执行失败,不对A和C做更改,释放锁并通知调度器201,执行器2023预执行事务3从数据业务器203上,对D和E加锁,获取D有600ont,E有0ont,得到预执行结果D有0ont,E有600ont保存到缓存205中,通知调度器201,调度器201收到三个执行器的反馈结果,规划事务按照优先级提交,数据业务器203将缓存205中的结果写入数据对象,得到A有500ont,B有900ont,C有100ont,D有0ont,E有600ont。共识网络等待逻辑节点预执行完毕后,进行下一轮共识,得到高度为i的区块,高度为i的区块包含一个事务11,为A向D转账100ont,调取器将事务11分配给执行器2021,执行器2021对数据业务器上203的A和D加锁,获取A有500ont,D有0ont,预执行事务11得到预执行结果A有400ont,D有100ont,保存在缓存205中,释放锁,并通知调度器201,调度器201通知提交,数据业务器203将缓存205中的结果写入数据对象,得到A有400ont,B有900ont,C有100ont,D有100ont,E有600ont。
本发明还提供了一种区块链落账处理系统,参照图2,包括调度器201、执行器202、数据业务器203、日志系统204、缓存205和存储介质206。
所述调度器201从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,接收所述执行器对预执行结果的反馈,规划事务的提交顺序并通知所述数据业务器203;
所述执行器202从所述数据业务器203获取所需要的数据对象,先将事务写入所述日志系统204,再对所述事务预执行,将预执行结果保存在所述缓存205中,并将事务预执行情况反馈给所述调度器201,当出现操作失败,根据日志回滚;
所述数据业务器203存储数据库,将每一个键的对应的事务按优先级从高到低形成队列,接收所述调度器201的提交顺序,将所述缓存205中的事务的预执行结果写入数据库,删除已经写入数据库的事务;
所述缓存205用来临时存储事务预执行的结果;
所述存储介质206用来存储日志系统。
具体的一个实施例中,所述调度器201包括分发单元、冲突解决单元和提交单元,所述执行器202包括预执行单元。
所述分发单元将每个事务按照在区块中的排序分配优先级,分配给所述执行器202预执行;具体的一个实施例中,所述执行器202包括执行器2021、执行器2022和执行器2023,所述分发单元将每个事务按照在区块中的排序分配优先级,按照所述优先级分配给所述执行器2021、所述执行器2022和所述执行器2023。
所述执行器202在预执行高优先级事务在过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果;
所述提交单元根据所述执行器202的反馈情况,规划事务的提交顺序并通知所述数据业务器203;所述执行器202在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知所述冲突解决单元,所述冲突解决单元杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程。
具体的另一个实施例中,所述调度器201包括分发单元和提交单元,所述执行器202包括预执行单元和冲突解决单元。
所述预执行单元根据事务所需要操作的数据对象访问所述数据业务器203,并将所述数据业务器203上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象;
所述冲突解决单元发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,在所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果后,通知预执行单元预执行自身的事务。
优选的,所述数据业务器203包含数据库单元、队列单元和写入单元;
所述数据库单元存储数据库;
所述队列单元将每一个键的对应的事务按优先级从高到低形成队列;
所述写入单元接收所述调度器201的提交顺序,将缓存中的事务的预执行结果写入数据库,删除对应的事务。
优选的,所述日志系统包括临时部分和永久部分;
所述临时部分的存储介质比所述永久部分的存储介质读写速度高;
所述临时部分存储正在预执行事务和正在预执行事务的清单;
所述永久部分接收临时部分的事务预执行完毕后的写入。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种区块链落账处理方法,其特征是,包括如下步骤:
部署步骤:在数据业务器上存储有数据库,所述数据库包含数据对象,所述数据对象采用键-值方式存储;
提取步骤:从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,排序在前的事务的优先级大于排序在后的事务的优先级;
预执行步骤:用调度器将事务分配给不同的执行器预执行,所述执行器从数据业务器获取所需要的数据对象,对所述事务预执行,并将事务预执行情况反馈给所述调度器,所述预执行为根据事务所需要操作的数据对象访问数据业务器,并将所述数据业务器上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象,其中,所述执行器预执行事务,根据键从数据业务器上操作所述数据对象,所述数据业务器将每一个键的对应的事务按优先级从高到低形成队列,在事务的预执行结果写入数据库后,删除对应的事务;
提交步骤:所述调度器根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器,所述数据业务器将按提交顺序将事务预执行的结果提交,将缓存中的预执行结果写入数据库。
2.根据权利要求1所述的区块链落账处理方法,其特征是,设立日志系统,所述日志系统记录所述预执行步骤和所述提交步骤中的事务,所述执行器在对所述数据业务器操作时,都先将事务写入到日志系统再对数据对象操作,当出现操作失败,根据日志回滚,所述回滚为被操作的数据对象恢复到操作之前的状态。
3.根据权利要求2所述的区块链落账处理方法,其特征是,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
执行器在预执行低优先级事务的过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。
4.根据权利要求2所述的区块链落账处理方法,其特征是,在所述预执行步骤和所述提交步骤中间,还包括冲突解决步骤:
执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程;
执行器在预执行低优先级事务的过程中,发现所需要操作的数据对象已经被高优先级事务加锁或操作,等待优先级高的事务预执行完毕再预执行。
5.根据权利要求1所述的区块链落账处理方法,其特征是,所述执行器为计算机、处理器、处理器内核、进程或线程。
6.根据权利要求1所述的区块链落账处理方法,其特征是,所述键-值中,所述键由唯一识别码技术得到,所述执行器对所述数据业务器的操作包括获取、新增、更新和删除。
7.根据权利要求1所述的区块链落账处理方法,其特征是,所述执行器对所述数据对象加的锁为乐观锁、悲观锁、MVCC锁、排它锁、共享锁、意向排它锁、意向共享锁或共享意向排它锁。
8.根据权利要求3所述的区块链落账处理方法,其特征是,所述低优先级事务的执行器杀死低优先级事务后,记录被杀的事务,形成被杀名单,发送给调度器,高优先级的执行器预执行高优先级事务完毕后,反馈给所述调度器,所述调度器等待比被杀名单中事务优先级高的事务预执行完毕后,通知执行器预执行所述被杀名单中的事务。
9.根据权利要求1所述的区块链落账处理方法,其特征是,所述数据库的数据库管理系统采用levelDB、rocksDB、Memcached、Redis、Accumulo、hbase、Cassandra、scylladb、redis+twemproxy、codis、pika、ssdbTiDB、ForestDB或InnoDB。
10.根据权利要求1所述的区块链落账处理方法,其特征是,构建和事务类型相对应的执行器,所述调度器基于事务类型进行分类,将不同的事务分配给对应的执行器。
11.根据权利要求2所述的区块链落账处理方法,其特征是,所述日志系统包括临时部分和永久部分,分别存储在不同的介质,所述临时部分的存储介质比所述永久部分的存储介质读写速度高,所述临时部分存储正在预执行事务和正在预执行事务的清单,事务预执行完毕后,将临时部分的事务写入到永久部分。
12.根据权利要求1-11任意一项所述的区块链落账处理方法,其特征是,所述部署步骤在创世区块生成前或更改区块链网络数据库时进行,区块链网络进行共识,每进行一轮共识生成新的区块,进行所述提取步骤、所述预执行步骤和所述提交步骤以更新数据库,所述区块链网络基于更新后的数据库进行下一轮共识。
13.一种区块链落账处理系统,其特征是,包括调度器、执行器、数据业务器、日志系统、缓存、存储介质;
所述调度器从最新生成区块中提取出所有事务,将每个事务按照在区块中的排序分配优先级,接收所述执行器对预执行结果的反馈,规划事务的提交顺序并通知数据业务器;
所述执行器从数据业务器获取所需要的数据对象,先将事务写入所述日志系统,再对所述事务预执行,将预执行结果保存在缓存中,并将事务预执行情况反馈给所述调度器,当出现操作失败,根据日志回滚;
所述数据业务器存储有数据库,所述数据库包含数据对象,所述数据对象采用键-值方式存储,将每一个键的对应的事务按优先级从高到低形成队列,接收调度器的提交顺序,将缓存中的事务的预执行结果写入数据库,删除对应的事务;
所述缓存用来临时存储事务预执行的结果;
所述存储介质用来存储日志系统。
14.根据权利要求13所述的区块链落账处理系统,其特征是,所述调度器包括分发单元、冲突解决单元、提交单元,
所述分发单元将每个事务按照在区块中的排序分配优先级,分配给不同的执行器预执行;
所述执行器在预执行高优先级事务在过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知调度器,所述调度器杀死低优先级事务并回滚其预执行的过程和结果;
所述提交单元根据执行器的反馈情况,规划事务的提交顺序并通知数据业务器;
所述执行器在预执行高优先级事务的过程中,发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知所述冲突解决单元,所述冲突解决单元杀死低优先级事务并回滚其预执行的过程和结果,高优先级事务的执行器进行自身的预执行过程。
15.根据权利要求13所述的区块链落账处理系统,其特征是,所述执行器包括预执行单元、冲突解决单元;
所述预执行单元根据事务所需要操作的数据对象访问数据业务器,并将所述数据业务器上的所需要操作的数据对象加锁,预执行事务,当预执行成功,将预执行结果临保存在缓存中,当预执行失败,不更改数据对象;
所述冲突解决单元发现所需要操作的数据对象已经被低优先级事务加锁或操作,通知低优先级事务的执行器,在所述低优先级事务的执行器杀死低优先级事务并回滚其预执行的过程和结果后,通知预执行单元预执行自身的事务。
16.根据权利要求13所述的区块链落账处理系统,其特征是,所述数据业务器包含数据库单元、队列单元、写入单元;
所述数据库单元存储有数据库;
所述队列单元将每一个键的对应的事务按优先级从高到低形成队列;
所述写入单元接收调度器的提交顺序,将缓存中的事务的预执行结果写入数据库,删除对应的事务。
17.根据权利要求13所述的区块链落账处理系统,其特征是,所述日志系统包括临时部分和永久部分;
所述临时部分的存储介质比所述永久部分的存储介质读写速度高;
所述临时部分存储正在预执行事务和正在预执行事务的清单;
所述永久部分接收临时部分的事务预执行完毕后的写入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810493487.XA CN108804112B (zh) | 2018-05-22 | 2018-05-22 | 一种区块链落账处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810493487.XA CN108804112B (zh) | 2018-05-22 | 2018-05-22 | 一种区块链落账处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804112A CN108804112A (zh) | 2018-11-13 |
CN108804112B true CN108804112B (zh) | 2022-02-11 |
Family
ID=64092787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810493487.XA Active CN108804112B (zh) | 2018-05-22 | 2018-05-22 | 一种区块链落账处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804112B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230052935A1 (en) * | 2020-12-28 | 2023-02-16 | Tencent Technology (Shenzhen) Company Limited | Asynchronous accounting method and apparatus for blockchain, medium and electronic device |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110352445B (zh) * | 2018-11-27 | 2023-08-22 | 创新先进技术有限公司 | 使用智能合约执行多方交易 |
CA3121919C (en) * | 2018-12-04 | 2023-01-24 | Zeu Technologies, Inc. | System and method for augmenting database applications with blockchain technology |
CN109710387B (zh) * | 2018-12-06 | 2020-12-15 | 成都佰纳瑞信息技术有限公司 | 一种用于区块链事务优先级排序的策略引擎及其使用方法 |
CN109684337B (zh) * | 2018-12-29 | 2021-05-04 | 杭州趣链科技有限公司 | 一种基于多级缓存的区块链状态数据存储和读取方法 |
CN110321219A (zh) * | 2019-05-06 | 2019-10-11 | 百度在线网络技术(北京)有限公司 | 一种事务请求的并行执行方法、装置、设备和介质 |
CN110231979A (zh) * | 2019-05-07 | 2019-09-13 | 深圳壹账通智能科技有限公司 | 基于区块链的事务处理方法、装置、设备及存储介质 |
CN110379005B (zh) * | 2019-07-22 | 2021-09-24 | 泰瑞数创科技(北京)有限公司 | 一种基于虚拟资源管理的三维重建方法 |
CN110473100B (zh) * | 2019-08-15 | 2023-07-11 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易处理方法及装置 |
CN110689344B (zh) * | 2019-08-30 | 2021-04-09 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN113139873A (zh) * | 2019-08-30 | 2021-07-20 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN111026770B (zh) * | 2019-10-29 | 2023-08-04 | 京东科技信息技术有限公司 | 区块链节点的账本处理方法、装置、服务器及存储介质 |
CN111274318B (zh) * | 2020-01-16 | 2023-04-25 | 杭州趣链科技有限公司 | 一种区块链状态数据的存储、回滚方法、设备和存储介质 |
CN111312352B (zh) | 2020-02-19 | 2023-07-21 | 百度在线网络技术(北京)有限公司 | 一种基于区块链的数据处理方法、装置、设备和介质 |
CN111475262B (zh) * | 2020-04-02 | 2024-02-06 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CN111383031B (zh) * | 2020-05-29 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的智能合约执行方法、系统和电子设备 |
CN111984422B (zh) * | 2020-09-03 | 2023-04-28 | 深圳壹账通智能科技有限公司 | 基于区块链的数据处理方法、装置及存储介质 |
CN112748994B (zh) * | 2020-12-31 | 2023-11-28 | 上海简苏网络科技有限公司 | 一种区块链交易并行处理方法及系统 |
CN112883107B (zh) * | 2020-12-31 | 2022-05-17 | 杭州趣链科技有限公司 | 区块链中交易异步执行方法、系统及相关设备 |
CN113205417B (zh) * | 2021-04-27 | 2022-10-25 | 华东师范大学 | 一种面向联盟链的交易并行处理方法及系统 |
CN114328591A (zh) * | 2021-12-31 | 2022-04-12 | 杭州趣链科技有限公司 | 事务执行方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391649A (zh) * | 2015-10-16 | 2016-03-09 | 浪潮(北京)电子信息产业有限公司 | 一种队列调度方法及装置 |
CN105700937A (zh) * | 2016-01-04 | 2016-06-22 | 北京百度网讯科技有限公司 | 多线程任务处理方法和装置 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN106991164A (zh) * | 2017-03-31 | 2017-07-28 | 北京京东金融科技控股有限公司 | 基于区块链的用于金融数据处理的方法、装置及电子设备 |
WO2017204943A1 (en) * | 2016-05-24 | 2017-11-30 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using audit guarantees |
-
2018
- 2018-05-22 CN CN201810493487.XA patent/CN108804112B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391649A (zh) * | 2015-10-16 | 2016-03-09 | 浪潮(北京)电子信息产业有限公司 | 一种队列调度方法及装置 |
CN105700937A (zh) * | 2016-01-04 | 2016-06-22 | 北京百度网讯科技有限公司 | 多线程任务处理方法和装置 |
WO2017204943A1 (en) * | 2016-05-24 | 2017-11-30 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using audit guarantees |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN106991164A (zh) * | 2017-03-31 | 2017-07-28 | 北京京东金融科技控股有限公司 | 基于区块链的用于金融数据处理的方法、装置及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230052935A1 (en) * | 2020-12-28 | 2023-02-16 | Tencent Technology (Shenzhen) Company Limited | Asynchronous accounting method and apparatus for blockchain, medium and electronic device |
Also Published As
Publication number | Publication date |
---|---|
CN108804112A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804112B (zh) | 一种区块链落账处理方法及系统 | |
US10990576B2 (en) | Providing snapshots of journal tables | |
US11243920B2 (en) | Distributed database system, transaction processing method, lock server and storage medium | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN103116596B (zh) | 在分布式数据库中执行快照隔离的系统和方法 | |
JP4586019B2 (ja) | 非故障ノードによる並列な回復 | |
Loesing et al. | On the design and scalability of distributed shared-data databases | |
Balegas et al. | Extending eventually consistent cloud databases for enforcing numeric invariants | |
Lindström et al. | IBM solidDB: In-Memory Database Optimized for Extreme Speed and Availability. | |
CN102906743A (zh) | 混合oltp和olap高性能数据库系统 | |
Graham | Issues in real-time data management | |
US20160283331A1 (en) | Pooling work across multiple transactions for reducing contention in operational analytics systems | |
US11048669B2 (en) | Replicated state management using journal-based registers | |
Moniz et al. | Blotter: Low latency transactions for geo-replicated storage | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
Padhye et al. | Scalable transaction management with snapshot isolation on cloud data management systems | |
Fan et al. | 2PC*: a distributed transaction concurrency control protocol of multi-microservice based on cloud computing platform | |
US20220043796A1 (en) | Distributed pessimistic lock based on hbase storage and the implementation method thereof | |
EP1196849B1 (en) | System and method for synchronizing copies of data in a computer system | |
CN113886403A (zh) | 一种针对高竞争电商业务的数据管理系统及事务处理方法 | |
Rothsberg | Evaluation of using NoSQL databases in an event sourcing system | |
WO2022242401A1 (zh) | 一种数据库系统的事务处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
Qin | Replication and Workload Management for In-Memory OLTP Databases |
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 |