本发明属于计算机技术领域,尤其是基于区块链的数据处理方法、系统、装置及介质。
背景技术:
区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链还可以进行数据加密传输、节点识别和安全访问,是一种先进的分布式基础架构。
在现有技术中,基于区块链有两类资产;其一是原生资产,原生资产是植入核心协议的,如比特币,一致性算法利用这些资产来测度交易的有效性,并通过原生资产交易费和挖矿奖励来回报投票。其二是位于核心协议之上的叠加协议的非原生“叠加资产”。不过,上述的两类资产都存在着一定的缺陷:
1、叠加资产双重消费,传统的区块链一致性模型不考虑叠加资产,在核心协议层面,无法阻止叠加资产的双重消费。
2、原生资产与网络参与的冲突,传统的区块链投票节点需要通过原生资产获得支付,这样,新的网络参与者在进行交易前,必须先获得原生资产,通常是经由兑换方式。但对于原生资产无法适用于许多兑换方式的较新区块链而言,获得原生资产是极为困难的。比较新参与者可以用标准货币如美元及使用标准支付方式如信用卡来支付进行交易,传统网络服务对入门者是更高的门槛。
技术实现要素:
有鉴于此,为至少部分解决上述技术问题之一,本发明实施例目的在于提供一种能够克服资产叠加双重消费,并对网络参与地冲突的基于区块链的数据处理方法,同时本发明还提供能够对应实现该方法的系统、装置以及计算机可读存储介质。
第一方面,本发明实施例提供了基于区块链的数据处理方法,其包括以下步骤:
获取交易数据,将所述交易数据存储至数据库;
将所述数据库中的交易数据分配至签约节点,生成有序列表,所述有序列表为所述交易数据的有序排列;
根据所述有序列表生成子区块,将所述区块加入至区块链;所述子区块的父区块是根据所述签约节点对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块。
在本发明的一些实施例中,所述根据所述签约节点对所述区块链中的区块进行投票这一步骤,其包括:
在所述签约节点的投票结果中,支持票数大于反对票数,确定所述区块为有效区块;
在所述签约节点的投票结果中,支持票数小于反对票数,确定所述区块为无效区块;
在所述签约节点的投票结果中,支持票数等于反对票数,或总票数小于预设票数,将所述节点设为未确定区块。
在本发明的一些实施例中,所述数据处理方法还包括:
所述签约节点的在线数量小于预设在线数量,所述区块停留在未确定状态,作为未确定区块。
在本发明的一些实施例中,当所述子区块的父区块为未确定区块;对所述子区块中的交易数据进行二次校验,确定所述子区块中的交易数据与所述未确定区块中的交易数据不同,确定所述子区块为有效区块。
在本发明的一些实施例中,所述数据处理方法还包括:
根据所述子区块生成签名包,将所述签名包广播至所述签约节点;
确定子区块哈希值与所述签约节点缓存所述签名包的区块哈希值相同,所述签约节点生成支持票;
确定子区块哈希值与所述签约节点缓存所述签名包的区块哈希值不同,所述签约节点生成反对票。
在本发明的一些实施例中,所述交易数据包括以下二者至少之一:创造交易和转让交易。
在本发明的一些实施例中,所述有序排列是根据所述交易数据的产生时间所确定。
第二方面,本发明的技术方案还提供基于区块链的数据处理系统,包括:
数据库,用于获取并存储交易数据,并将所述交易数据分配至签约节点;
签约节点,用于生成有序列表,所述有序列表为所述交易数据的有序排列;以及对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块;
区块链,用于根据所述有序列表生成子区块;所述子区块的父区块是根据所述签约节点对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块。
第三方面,本发明的技术方案还提供基于区块链的数据处理装置,其包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当至少一个程序被至少一个处理器执行,使得至少一个处理器实现第一方面中的基于区块链的数据处理方法。
第四方面,本发明的技术方案还提供了一种存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如第一方面中的方法。
本发明的优点和有益效果将在下面的描述中部分给出,其他部分可以通过本发明的具体实施方式了解得到:
本发明所提供的基于区块链的数据处理方法,通过两个分布式数据库,即待办列表以及区块链,由待办列表将交易数据分配至签约节点,由节点将交易数据形成区块加入至区块链,同时签约节点可以投票决定该区块是有效的还是无效的;方法避免节点之间以通过数据库内置通信外的任何私下通信,极大地避免了复杂性,降低了安全风险。方法中的交易数据都保留在待办列表或在区块体中保留有痕迹,可用于测量交易的有效性,克服了资产叠加双重消费的问题。通过节点投票的方式决定用户如何为交易进行支付,对网络参与的冲突更低。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于区块链的数据处理系统中数据库和区块链的结构示意图;
图2为本发明基于区块链的数据处理方法的步骤流程图;
图3为本发明基于区块链的数据处理方法实施例中区块链的结构示意图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
本申请的技术方案的思路是将区块链的特征与数据库进行结合;例如,去中心化的分散控制;数据防篡改的不变性;在网络上无需依靠中央单位,创造和转让资产的能力。
分散控制是经由类似dns的有投票权的节点联盟来完成的。其他节点可连接以读取和提出处理事务;这使其成为一个超级对等网络。投票在前述数据库内置一致性的层中进行,子集群执行多数同意规则。为加快速度,每个区块在节点有效前写出,并对其投票,链化实际上发生于投票期间。每一区块拥有一个相当于其交易、时间戳、投票单和其产生节点公钥的散列的id标识,具有加密签名和票单。一个区块并不包括其最初被写出时之前区块的散列(即id)。而选票一直依附于该区块,每一选票带有前一区块的特征,相当于也带有之前区块的散列(即id)。不变性或防篡改是通过几个机制来完成的:碎片复制、不允许的更新或删除的恢复、常规的数据库备份,以及所有交易、区块、选票的加密签名。任何有资产发布权限的实体可以发布资产;资产只有在满足其密码条件的情况下才能被新持有者收购,电脑黑客或受感染的系统管理员也无法任意修改数据,不存在单点故障的风险。
在第一方面,如图1所示,首先提出基于区块链的数据处理系统,其主要包括:
数据库,相当于交易处理组或待办列表,用于获取并存储交易数据,并将交易数据分配至签约节点;签约节点,用于生成有序列表,有序列表为交易数据的有序排列;以及对区块链中的区块进行投票,根据投票结果确定的有效区块或未确定区块;区块链,用于根据有序排列生成子区块;子区块的父区块是根据签约节点对区块链中的区块进行投票,根据投票结果确定的有效区块或未确定区块。
具体地,系统向用户提供其api,如同是一个单一的区块链数据库。在后台,实际有两个分布式数据库(交易处理组或待办列表)和区块链,由数据库一致性算法(bca)连接。bca在每一签约节点运行。非签约用户可根据其获得的读取、发布资产、转让资产及其他更多权限,连接到数据库。分布式数据库的数据库及区块链均为现成的大数据数据库。实施例系统不干预每个数据库的内部运作;利用数据库除版本控制之类的特征和战斗测试代码之类的优点外的可伸缩性。每个数据库运行其本身内部的一致性算法,以保持驱动中的连贯。
第二方面,如图2所示,本发明的技术方案提出了基于实施例系统的数据处理方法,其包括步骤s01-s03:
s01、获取交易数据,将交易数据存储至数据库。
具体地,由系统中的数据库对获取的待处理的交易数据进行管理,其中交易数据为无序的一系列交易。当交易输入时,由接收节点进行验证,若接收节点该交易是有效的,则存储在数据库中,其中接收节点可以是数据库也可选用分布式网络中的其他节点。
过程中,验证交易是否有效,是通过哈希算法加密验证判断传进来的交易是否具备足够的信息。例如,节点a收到来自节点b的通知,节点b声称自己已经从账户中向节点a汇款了一定的金额区块链节点a进行交易验证的过程可包括:1)节点a从创世区块开始查看全部的区块链公共账本,查找账本中保存的节点b的历史交易信息,包括节点b的汇款账户、历史收款人的地址、签名以及汇款金额等信息,查看节点b的账户,判断该账户是否有足够的金额进行汇款,若余额不足,则说明该交易验证失败;2)节点a查看区块链公共账本,判断该笔金额是否存在双重支付,若存在,则说明该交易验证失败;3)节点a判断节点b是否是所提供账户的拥有者,若不是,则说明该交易验证失败。
s02、将数据库中的交易数据分配至签约节点,生成有序列表。
其中,有序列表为交易数据的有序排列。由接收节点将该交易随机分配给签约节点中的一个;接收节点即为运行数据库一致性算法的分布式节点。系统中存在若干个签约节点,sk={tk1、tk2…}是分配给节点k的一系列交易。签约节点将无序的数据组sk中的交易排列成有序列表。
更为具体地,数据库一致性算法(bca)是一种状态机,依靠每个签约节点运行。实施例中,其核心代码如下:
其中,在开始每个签约节点的主循环之前,数据库s和区块链c必须预先创立并初始化。初始化步骤之一是给区块链c写进创世区块。defmainloop()表示在签约节点运行的主循环。
s03、根据有序排列生成子区块,将区块加入至区块链。globals,c强调对所有节点来说,有通向数据库s和c的相同接口。通过从交易待办组(数据库)s向区块链c移动数据,偶尔也向其他方向移动数据进行运作。whiletrue是主循环的开始。接受输进数据库s的交易,并将其分配到所有节点。从数据库s将无序的交易移动到区块链c,成为有序、分块的数据。然后签约节点对未确定区块投票。
其中,子区块的父区块是根据签约节点对区块链中的区块进行投票,根据投票结果确定的有效区块或未确定区块。具体地,根据签约节点创造一个区块,并将该区块输入至区块链。签约节点通过投票决定一个区块是有效的还是无效的。也就是说,已经添加到区块链中的区块,是完成了投票的区块,已经确定了该区块为有效区块、无效区块或者是未确定区块,其中有效区块和未确定区块均可作为子区块的父区块。为作决定,签约节点核实区块中每项交易的有效性,如果发现一项无效交易,那么,签约节点投票表决该区块无效。如果签约节点未发现无效交易,则表决该区块有效。每一区块最初都是未确定的,因为没有来自签约节点的表决结果。一旦有了多数支持票(有效)或多数反对票(无效),则该区块便分别从未确定转为确定有效或确定无效,对该区块的投票停止。区块链中的区块均具有id标识、时间戳、实际交易及投票信息。
不难理解,在实施例中,根据签约节点对区块链中的区块进行投票这一步骤,其包括:在签约节点的投票结果中,支持票数大于反对票数,确定区块为有效区块;在签约节点的投票结果中,支持票数小于反对票数,确定区块为无效区块;在签约节点的投票结果中,支持票数等于反对票数,或总票数小于预设票数,将节点设为未确定区块。
在本实施例中,区块链中的未确定区块同样可以作为子区块的父区块。数据库内置一致性算法决定了区块的次序,实施例系统中,将区块生成和投票进行分离,由未确定区块派生子区块并无风险,每个节点都在同一区块链工作,通过数据库(开放的广播信道)交流,因而,任何节点都可以尝试加进区块,而只有一个区块将成为该未确定区块的子区块,其余的则按内置一致性算法依序排列。
进一步地,针对恶意节点的拜占庭攻击,系统在恶意行为在节点对区块投票时可以检测到,因为其与多数票不同。实施例还提供其他可以阻止恶意行为的方法,包括:由联盟模型决定的手动惩罚,或者需要付一笔安全押金或保证金,一旦遇到恶意行为便自动扣押。
在一些可行的实施例中,数据处理方法还包括:签约节点的在线数量小于预设在线数量,区块停留在未确定状态,作为未确定区块。
具体地,如果出现许多脱线节点,那么,区块将停留在未确定状态,依赖于未确定区块中交易的交易也将停留在待办列表中。待足够节点重新在线投票并决定该区块。因为所有一致性算法都需要最低比例的节点在线工作。还有一个可选的实施方法是限制区块在被标注确定有效前停留于未确定状态的时间量,这样它的所有交易都可返回待办列表,以待重新处理。
在实施例中,当子区块的父区块为未确定区块时,对子区块中的交易数据进行二次校验,确定子区块中的交易数据与未确定区块中的交易数据不同,确定子区块为有效区块。
具体地,当存在未确定的父区块时,系统需要防止发生双重消费:任何加进新区块的交易,必须不依赖于未确定区块中的交易。例如,新交易的输入不能是未确定区块的输入。实施例中可以通过两种方式来实现:当紧跟未确定区块产生新区块时,不允许出现双重消费交易,或者在投票时,任何包含这样交易的区块将被判定无效;反之则为有效区块。
在一些可行的实施例中,实施例所提供的数据处理方法还包括步骤s031-s032:
s031、根据子区块生成签名包,将签名包广播至签约节点。
s032、确定子区块哈希值与签约节点缓存签名包的区块哈希值相同,签约节点生成支持票;反之,则签约节点生成反对票。
具体地,在实施例中,当签约节点接收到待验证的子区块后,判断待验的子区块的哈希与pre-prepare阶段缓存的签名包执行后的区块哈希是否相同,其中,在pre-prepare阶段,各签约节点收到待检验区块后,产生签名包,并且广播给所有其他签约节点。判断结果若不相同,则是认定非法的区块请求,节点投反对票;若判断结果相同,则认为待验证的子区块的哈希合法,,签约节点投票决定这个区块是有效的。
在一些可行的实施例中,交易数据包括以下二者至少之一:创造交易和转让交易。
具体地,交易是区块链数据库储存的基础的记录。交易有两种:创造交易和转让交易。创造交易起始于数据库中资产的记录,包括对该资产的一些描述、其最初持有人的名单,以及任何人希望转让它必须满足的条件。转让交易将资产的所有权转让给新的持有者,并配置新的消费条件。
在实施例中,交易采用json(js对象标记)文件来表述,包括:
id:序列化交易主体内一切东西的散列。对fulfillments中的每项履行,其值都设为无效。id也是数据库主关键字。
version:交易模型的版本数,以便软件可以支持不同的交易模型。
fulfillments:履行列表,每项履行都包含一个指向未消费资产的指针,以及满足该未消费资产设定的消费条件的加密履行。履行是证实该资产所有权的签名。
conditions:条件列表,每项条件都处于加密状态,需要被满足。若转让交易满足该条件,则所有权才能转让给新持有者。
operation:字符串表示的操作状况(创造或是转让)。它决定交易如何生效。
timestamp:用utc(世界统一时间)表示的交易产生时间,由用户提供。
hash:序列化有效负载的散列。
payload:可以是任何json文件。在转让交易场合,也可以是空白。
进一步地,区块同样采用json文件表述,其包括了:
id:序列化区块的散列。也是数据库的主关键字,是确保所有区块独一无二的原因。
timestamp:区块产生时的时间戳。它由产生区块的节点提供。
transactions:区块中包含的交易列表。
node_pubkey:产生区块的节点的公钥。
voters:联盟节点的公钥列表。由于联盟的大小可能会随着时间的推移发生变化,voters告知区块产生时联盟中存在多少节点,能够核实区块接收到的正确的投票数。
signature:由产生区块的节点给出的区块签名,为产生该签名,节点序列化区块内容,用私鈅签署通过。
votes:最初是空白列表,新投票发生时,来自各节点的票数累加上去。
在一些可行的实施例中,签约节点中的有序排列是根据交易数据是根据交易数据的产生时间所确定的。
具体地,系统必须保证同一用户以特定顺序传送的交易以该顺序处理,至少偏向该顺序。当一名用户传送两笔交易至同一节点,接收节点在把交易写进待办列表前可能改变其顺序。但错误的顺序可以被更新日志保存,以使得其他节点会看到同样错误的顺序。在将交易写进区块并保存至区块链的过程中,可以根据签约节点对交易所携带的时间戳达成共识,根据该共识生成交易的有序排列。
如图3所示,针对本申请方法的实施例进行更为完整地说明:
图3是区块链c的示例,区块b1是交易值为零的起始区块。区块是经由底层数据库确定的指令写进区块链c的。这意味着,一个签约节点将一个区块输写进c时,它不能同时提供投票,因为投票包括对前一区块的参照,而前一区块此时尚未知晓。只有输写完成之后,区块指令才变得明晰。节点对区块投票是在指令变得明晰之后。当区块产生时,它是未确定的。一旦区块有了多数正票或多数负票,它便从未确定分别转为确定有效或确定无效。
与典型的区块链不同,数据库区块模型并没有对前一区块的参照。取而代之的是,它有一个投票列表,每张投票包含有对前一区块的参照,即前一区块是投票节点基于其更改源的视点考虑的。
所有投票将参照同样的前一区块。不过,也有可能不同的投票者会声称前一区块是不同区块。举例说,这种情况在节点发生故障时可能出现:当节点恢复后,没有可靠的方法去复原其故障时错过的新区块的指令。而在本实施例中,如果节点发生故障,它将不会累积一长列新区块列表,以备恢复后参与投票。那是因为区块产生时,预期投票者(签约节点)的列表也随之设定。如果区块产生时节点处于故障状态,则该节点不会被放入预期投票者的列表中。
区块b2接收到5张可能选票中的3张。所有3张选票都是正票,由于多数节点投票裁决该区块有效,故b2被认定确定有效。
区块b3接收到所有的5张选票,先是一张正票,然后是负票,接着是正票,然后又是两张负票。由于多数节点投票裁决该区块无效,故b3被认定确定无效。这一区块可以保留在区块链中,因为全部选票显示其无效。当未来有效的交易发生时,它将被忽略不计。由于该区块原地保留,可以快速将区块链推进到子区块。
区块b4是未确定的,因为它还未有来自节点的多数有效票或多数无效票。对b4的投票将继续。尽管b4未确定,它仍有子区块b5。因为数据库内置一致性算法决定了区块的次序,从逻辑上说,系统已将写区块和投票进行分离。有未确定的区块派生子区块并无风险,原因在于,每一节点都在同一区块链工作,通过数据库(开放的广播信道)交流。因而,任何节点都可以尝试加进区块,而只有一个区块成为b4的子区块,其余的则按内置一致性算法依序排列。
第三方面,本发明实施例还提供基于区块链的数据处理装置,其包括至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个程序被至少一个处理器执行,使得至少一个处理器实现如第以方面中的基于区块链的数据处理方法。
本发明实施例还提供了一种存储介质,其中存储有程序,程序被处理器执行如第一方面中的方法。
从上述具体的实施过程,可以总结出,本发明所提供的技术方案相较于现有技术存在以下优点或优势:
1.本申请所提供的数据处理方法、系统以及装置等,均具有区块链的特征:分散控制、写下的数据防篡改的不变性;以及在网络上无需依靠中央单位,创造和转让资产的能力。
2.本申请所提供的数据处理方法中交易数据都保留在待办列表或区块体中保留有痕迹,可用于测量交易的有效性,克服了资产叠加双重消费的问题。通过节点投票的方式决定用户如何为交易进行支付,对网络参与的冲突更低。
3.本申请采用链化区块而非链化区块,可以节省大量的计算资源和时间成本。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
其中,功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
1.基于区块链的数据处理方法,其特征在于,包括以下步骤:
获取交易数据,将所述交易数据存储至数据库;
将所述数据库中的交易数据分配至签约节点,生成有序列表,所述有序列表为所述交易数据的有序排列;
根据所述有序列表生成子区块,将所述区块加入至区块链;所述子区块的父区块是根据所述签约节点对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块。
2.根据权利要求1所述的基于区块链的数据处理方法,其特征在于,所述根据所述签约节点对所述区块链中的区块进行投票这一步骤,其包括:
在所述签约节点的投票结果中,支持票数大于反对票数,确定所述区块为有效区块;
在所述签约节点的投票结果中,支持票数小于反对票数,确定所述区块为无效区块;
在所述签约节点的投票结果中,支持票数等于反对票数,或总票数小于预设票数,将所述节点设为未确定区块。
3.根据权利要求1所述的基于区块链的数据处理方法,其特征在于,所述数据处理方法还包括:
所述签约节点的在线数量小于预设在线数量,所述区块停留在未确定状态,作为未确定区块。
4.根据权利要求1-3任一项所述的基于区块链的数据处理方法,其特征在于,当所述子区块的父区块为未确定区块;
对所述子区块中的交易数据进行二次校验,确定所述子区块中的交易数据与所述未确定区块中的交易数据不同,确定所述子区块为有效区块。
5.根据权利要求2所述的基于区块链的数据处理方法,其特征在于,所述数据处理方法还包括:
根据所述子区块生成签名包,将所述签名包广播至所述签约节点;
确定所述子区块哈希值与所述签约节点缓存所述签名包的区块哈希值相同,所述签约节点生成支持票;
确定子区块哈希值与所述签约节点缓存所述签名包的区块哈希值不同,所述签约节点生成反对票。
6.根据权利要求1所述的基于区块链的数据处理方法,其特征在于,所述交易数据包括以下二者至少之一:创造交易和转让交易。
7.根据权利要求1所述的基于区块链的数据处理方法,其特征在于,所述有序排列是根据所述交易数据的产生时间所确定。
8.基于区块链的数据处理系统,其特征在于,包括:
数据库,用于获取并存储交易数据,并将所述交易数据分配至签约节点;
签约节点,用于生成有序列表,所述有序列表为所述交易数据的有序排列;以及对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块;
区块链,用于根据所述有序列表生成子区块;所述子区块的父区块是根据所述签约节点对所述区块链中的区块进行投票,根据所述投票结果确定的有效区块或未确定区块。
9.基于区块链的数据处理装置,其特征在于,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-7任一项所述的基于区块链的数据处理方法。
10.一种存储介质,其中存储有处理器可执行的程序,其特征在于:所述处理器可执行的程序在由处理器执行时用于实现如权利要求1-7中任一项所述的基于区块链的数据处理方法。
技术总结