CN111047439A - 一种基于区块链的交易处理方法 - Google Patents

一种基于区块链的交易处理方法 Download PDF

Info

Publication number
CN111047439A
CN111047439A CN201811399091.5A CN201811399091A CN111047439A CN 111047439 A CN111047439 A CN 111047439A CN 201811399091 A CN201811399091 A CN 201811399091A CN 111047439 A CN111047439 A CN 111047439A
Authority
CN
China
Prior art keywords
transaction
consensus
node
group
nodes
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.)
Pending
Application number
CN201811399091.5A
Other languages
English (en)
Inventor
林祥兴
艾本仁
姜长龙
杜聚龙
鲍海兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baustem Information Technology Co ltd
Original Assignee
Beijing Baustem Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baustem Information Technology Co ltd filed Critical Beijing Baustem Information Technology Co ltd
Publication of CN111047439A publication Critical patent/CN111047439A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification

Abstract

本发明涉及一种基于区块链的交易处理方法,包括:将用户账号的账号空间分成多个子空间;将交易按照支付方的账号分配到对应的子空间内,得到多个交易组;从区块链选取节点并分成多个一次共识群组和一个二次共识群组;获取对应的交易组,并对获取的交易组内交易的合法性进行验证,达成第一次共识;对各个第一节点身份的合法性进行验证;当身份的合法性验证通过时,获取验证通过的交易的哈希值,并根据哈希值验证对应交易的完整性;根据身份合法性和交易的完整性的验证结果,达成第二次共识。本发明通过大幅度减少每个节点验证交易所需的运算量,也就是大幅度降低根据World State对每个交易请求进行验证所需的时间,从而降低区块产生时间。

Description

一种基于区块链的交易处理方法
技术领域
本发明涉及区块链领域,具体涉及一种基于区块链的交易处理方法。
背景技术
目前在区块链技术领域,区块链的TPS(Transaction Per Second,每秒处理的消息数)低下是区块链应用落地的最大的技术瓶颈之一,影响了区块链的推广应用。
发明内容
针对上述技术问题,本发明提供一种基于区块链的交易处理方法。
本发明解决上述技术问题的技术方案如下:一种基于区块链的交易处理方法,包括:
将用户账号的账号空间分成多个子空间,所述多个子空间之间的交集为空,所述多个子空间之和的余集为空;
将本轮共识中的交易按照支付方的账号分配到对应的子空间内,得到多个交易组;
从区块链选取节点并分成多个一次共识群组和一个二次共识群组,其中,所述交易组与一次共识群组一一对应;
所述一次共识群组中的第一节点获取对应的交易组,并对获取的所述交易组内交易的合法性进行验证,并根据验证结果达成第一次共识,形成与交易组一一对应的子区块;
所述二次共识群组中的第二节点对各个所述第一节点身份的合法性进行验证;
当所述第一节点身份的合法性验证通过时,所述第二节点获取所述第一节点验证通过的交易的哈希值,并根据所述哈希值验证对应交易的完整性;
根据第一节点身份合法性和交易的完整性的验证结果,达成第二次共识,生成主区块。
本发明的有益效果是:在各分组内先进行交易验证的第一次共识,然后在一个独立的分组中汇总、再进行二次共识,形成区块。通过大幅度减少每个节点验证交易所需的运算量,也就是大幅度降低根据World State对每个交易请求进行验证所需的时间,从而降低区块产生时间。
附图说明
图1为本发明实施例提供的子区块主要数据结构示意图;
图2为本发明实施例提供的主区块主要数据结构示意图;
图3为本发明实施例提供的主区块和子区块在区块链中的结构示意图;
图4为本发明实施例提供一种基于区块链的交易处理方法的原理示意图;
图5为本发明实施例提供的以二叉树表示的交易索引表的原理示意图;
图6为本发明实施例提供的记账方法与支链的记账方法的原理示意图;
图7为本发明实施例提供的支链混合记账方法的原理示意图;
图8为本发明实施例提供的复合支链记账方法的原理示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明实施例提供的一种基于区块链的交易处理方法,包括:
S1、将用户账号的账号空间分成多个子空间,所述多个子空间之间的交集为空,所述多个子空间之和的余集为空;
具体的,将交易请求集合分解成N个没有交集的子集合可以通过分布计算减少产生瓶颈的可能性,从而改善TPS。但是,常用的稀疏矩阵对角化分解方法不适合去中心的算力结构,每个节点都不得不自己进行正交化分解。在交易量很大的情况下,对节点的算力要求很多,并不符合降低TPS的目标。
本发明是按照约定的规则对所有交易的集合进行单方向的正交分解。分解规则为:将账号空间分成N个子空间,子空间之间的交集都为空,子空间之和的余集也为空。
S2、将本轮共识中的交易按照支付方的账号分配到对应的子空间内,得到多个交易组;
具体的,将交易按照支付方的账号分配到其账号所属的唯一一个子空间内,每个子空间内的交易集合就是正交的一个交易子集。下面的公式是一轮共识中所有交易的一般性示例,u是user,a是交易额,式中有7个受付用户(ur),6个支付用户(up)。
Figure BDA0001875908930000031
采用本发明的办法可以将交易的确认分解成三个解耦合的确认子任务,交给3个节点组分别通过共识确认:
Figure BDA0001875908930000032
Figure BDA0001875908930000033
Figure BDA0001875908930000041
交易产生的账户的增量汇总为:
Figure BDA0001875908930000042
因为每个支付者账号都唯一的出现在一个共识节点组中,避免了sub chain存在的双花风险。确认后交易矩阵以分块的形式分别保存为子区块,汇总可以在第二次共识过程中完成。
S3、从区块链选取节点并分成多个一次共识群组和一个二次共识群组,其中,所述交易组与一次共识群组一一对应;
具体的,各个节点划分一次共识群组和二次共识群组的方式有多种方式可选择,可不作具体限制。
S4、所述一次共识群组中的第一节点获取对应的交易组,并对获取的所述交易组内交易的合法性进行验证,并根据验证结果达成第一次共识,形成与交易组一一对应的子区块;
具体的,交易的合法性验证具有多种方式,不属于本发明的范围,在此不再详细叙述。
S5、所述二次共识群组中的第二节点对各个所述第一节点身份的合法性进行验证;
具体的,第二次共识是对一次共识参与者身份的合法性和交易的完整性进行校验,其中,身份合法性说的是参与者必须是诚实节点,验证身份合法性常用数字证书等方法,不是本专利的发明范围。在一次共识已对子区块合法性进行校验并达成共识后,二次共识要校验各一次共识群组的参与者,即一次共识群组中的节点,从而达成二次共识。
S6、当所述第一节点身份的合法性验证通过时,所述第二节点获取所述第一节点验证通过的交易的哈希值,并根据所述哈希值验证对应交易的完整性;
S7、根据第一节点身份合法性和交易的完整性的验证结果,达成第二次共识,生成主区块。
两次共识的具体过程介绍如下:
本发明将交易申请分割成多个交易组,再将参与共识的节点分成多个一次共识群组和一个二次共识群组,各个分组的节点按照预设算法设定为leader或verifier,为方便描述,下文将两次共识过程中的Leader分别记为主Leader(二次共识)和分组Leader(一次共识)。使交易组与一次共识群组以任何方式实现一一对应。每个一次共识群组内先进行对应交易组的交易验证,形成第一次共识;在二次共识群组中的参与节点对汇总第一次共识的内容再次达成第二次共识后记录上链。
两次共识均可采用现有的共识算法实现,如拜占庭将军算法、PoW等等,二次共识可以采用与一次共识相同的方法,也可以不一样。共识采用什么方法不限制本发明的应用,也不是本发明的内容。二次共识群组将所有分组共识的交易记录合并,由二次共识群组中的主leader生成主区块,主区块中包含了所有子区块中的交易的Hash(可以是分组区块merkle根的Hash值),用于寻址子区块,并且校验完整性。
子区块和主区块的实现示例如下:
子区块包含有本块内的所有交易信息和合法数量校验者(就是一次共识节点)的签名信息。子区块主要数据结构示意如图1所示,其中有子区块头(subb_header)和子区块体(subb_body)组成:
子区块头:
HighNum:子区块所处的区块高度,此信息便于快速抽取交易信息,用于非全节点类型的快速交易确认;
SubNum:子区块的序号,所有子区块按顺序排序;
Pre_Block_ref:前一区块主区块的哈希值;
Tx_Trie_root:交易记录组成的梅克尔树的树根哈希;
SignTrie_root:合法数量校验者签名组成的梅克尔树的树根哈希;
子区块体:
Tx_list:有序的交易详细信息组成的梅克尔树;
Sign_List:排序的验证节点的签名信息组成的梅克尔树。
主区块主要数据结构示意如图2所示。有主区块头(Mainb_header)和主区块体(Mainb_body)组成:
主区块头
HighNum:子区块所处的区块高度,此信息便于快速抽取交易信息,用于非全节点类型的快速交易确认;
SubNum:当是主区块结构时,此序号取0。也可以理解为主区块是特殊的子区块,序号为0;
Pre_Block_ref:前一区块主区块的哈希值;
Store_ref:指向区块文件的前一个区块的存储地址和他的文件哈希值;
SubSignTrie_root:由各个子区块的SignTrie_root组成的梅克尔树的root的哈希;
Seed:随机选择算法的种子值,用于随机选择共识节点。
主区块体:
SignTrie_root_list:各个子区块的SignTrie_root组成的梅克尔树详细信息;
Sign:对本块信息的签名信息;
Ts_index:交易索引表。
各个主区块和子区块在区块链中的结构如图3所示。
本发明实施例提供的一种基于区块链的交易处理方法,在各分组内先进行交易验证的第一次共识,然后在一个独立的分组中汇总、再进行二次共识,形成区块。通过大幅度减少每个节点验证交易所需的运算量,也就是大幅度降低根据World State对每个交易请求进行验证所需的时间,从而降低区块产生时间。
可选地,在该实施例中,设所述账号空间分为2n份,所述将用户账号的账号空间分成多个子空间,具体包括:将前n位相同的用户账号分到同一个子空间,则最大交易分组数为2n
具体的,将账号的空间分成2^n等份,每个账号分组的编号为账号的前n位。每轮共识中的交易申请按照支付方的用户账号所属的账号空间分成2^n个组,这些组就是上文说的交易组,每轮共识开始将参与共识的节点随机分成同样多的一次共识群组,每个一次共识群组处理一组交易申请,如图4所示。
每个账号分组在每轮共识时都可能对应到一个交易组,但是有可能交易组为空,也对应到一个一次共识群组,一次共识群组的参与节点是随机的。
可选地,在该实施例中,设上一轮共识的最大交易分组数为2n,则本轮共识的最大交易分组数N的确定方法如下:
如果上一轮共识的交易数量在第一门限和第二门限之间,则N=2n,如果交易数量超过第一门限,则本轮共识的最大交易分组数为2n+1,如果交易数量小于第二门限,则本轮共识的最大交易分组数为2n-1,其中,所述第一门限大于第二门限。
具体的,当经过上一轮共识后,前一个区块生成时,根据该区块中包含的交易数量计算下一次共识的账号分组数量。具体的,如果交易数量超过一个门限t,则n=n+1(分组数目x2)。例如,如果门限设为最大交易数的1/3和4/5,当一个分组的交易数超过4/5门限,分组数x2(或者n=n+1);当交易数小于1/3,分组数除以2(或者n=n-1)。
可选地,在该实施例中,步骤S2具体包括:
S2.1、将编号的前n位相同的第一节点划分到一个一次共识群组中;
S2.2、从区块链中随机选择第二节点,组成一个二次共识群组。
具体的,一次共识群组的分组方法如下:
1)每一个参与者根据节点ID(可由身份密钥派生)决定参加哪个交易组的共识过程。例如,节点ID的算法可以为按照抽签算法得到的凭证,如:H(SIGi(r,Qr-1)),其中,Qr-1表示上一个区块所描述的种子;r表示当前区块高度;SIGi表示用自己私钥签名;H表示Hash运算。
将节点ID的前n位作为一次共识群组编号,并与账号分组编号一一对应。另外,ID算法示例中包含了随机数,可以使每个节点在每轮共识中参加共识的ID不同,从而无法预知所对应的账号分组,能提高抗攻击的能力。需要说明的是这些方法是只是举例,不代表对节点分组方法的限定。
2)考虑到本地通信的速度可能会更高效,也可以考虑网络部署的因素。例如:用户地址或用户账号的前n位设定为区域码,并将该区域码作为节点所在一次共识群组的编号,每个用户在开户时可以选择节点所在区域,通过某种机制可以激励用户选择自己最活跃的交易区域(例如,本区内交易免费,跨区域交易付费等),使多数数据流量产生在附近的区域,由于本地通信的速度可能会更高效,可以加快速度。
二次共识群组是从全部共识参与者(节点)选取的满足特定条件的节点组成的,二次共识节点群的选择算法需要保证随机性,防止被攻击。比如,可以使用一种随机抽签方法从全部区块链节点中随机产生。
可选地,在该实施例中,所述一次共识群组对应的交易组内交易的支付方账号的前n位与一次共识群组的编号相同,其中,所述一次共识群组的编号是所述一次共识群组中节点编号的前n位。
具体的,每个参与一次共识的节点只收集支付方账号的前n位与自己所在的一次共识群组的编号相同的支付申请(不收集、验证受付申请)。由于交易分组是按照支付方账号分组,所有不会有一个支付账号在两个交易分组中出现,避免了双花风险;这个规则有一个限制条件:本轮收款只能在共识后,至少在下一轮才能用于支付。
可选地,在该实施例中,该方法还包括:当前n位与第一用户账号不同的第二用户账号在所有与所述第一用户账号发生交易的用户账号中的占比超过预设比例时,将所述第一用户账号的前n位改为所述第二用户账号的前n位。
具体的,当节点分组采用在一些情况下,一个节点可以选择通过更改用户账号更改用户账号所在账号分组,此时,节点需要重新初始化,即,重新同步新的分组的WorldState的子集数据,这通常会花费比较长的时间,甚至要支付费用。一种可能的情况是,当网络发现该节点的交易对象大概率在另一个分组时,比如一种常见的做法是统计节点的交易对象可以是节点软件的功能,只需要统计节点账号的交易情况即可,如果当前用户账号统计的结果是绝大多数在另一分组或者说对应的区域是在另一区域,则可认为是需要改变分组的,此时节点会提醒用户改变分组,举例来说,当节点的用户地址的前N位可以设定为区域码,当节点发现该地址的对应交易方地址绝大多数是在另一个账号分组或者说对应的区域在另一个区域,则节点会提醒用户改变账号分组,或者说修改用户地址的前n位,使得自己同绝大多数的交易方的用户地址前n位一致,从而激励用户选择自己最活跃的交易区域,使多数数据流量产生在附近的区域,由于本地通信的速度可能会更高效,可以加快速度。
可选地,在该实施例中,根据一次共识群组中节点身份合法性和交易的完整性的验证结果,达成第二次共识,生成主区块,具体包括:
当一次共识群组中节点身份的合法性被二次共识群组中占比超过第三门限的节点验证通过、并且交易的完整性验证通过时,生成主区块,达成第二次共识。
具体的,当占比超过第三门限,例如2/3以上的二次共识群组中的节点确认一次共识群组参与者合法性,在二次共识节点群中对各一次共识群组的参与者及其提交的子区块的合法性就达成二次共识。
可选地,在该实施例中,当存在两个以上对包含相同交易组中的交易达成第一次共识的一次共识群组时,所述第二节点对达成共识的节点占比最高的一次共识群组中的第一节点身份的合法性进行验证,并选择为最终的子区块。
具体的,在某些情况下,例如一次共识中出现了分叉的情况,则二次共识群组可能会收到多个相同交易组的子区块,二次共识群组中的节点会选用一次共识参与者身份合法性概率最高者进行验证;此处选用一次共识参与者身份合法性概率最高者是为了最大化的选用最多的诚实节点的共识子区块,当一次共识中达成共识的节点占节点总数比例最高的则参与者身份合法性概率最高。
可选地,在该实施例中,在二次共识群组中的节点对一次共识群组中的节点身份的合法性进行验证之前,还包括:
判断所述第一节点的数量是否小于第四门限;
若否则执行所述第二节点对所述第一节点身份的合法性进行验证的步骤。
具体的,当某个交易组对应的子区块的一次共识参与者总数小于第四门限时,二次共识群组中的节点会丢掉这个交易组的子区块,即不对其进行验证;此时由于参与者总数小于门限,二次共识不承认一次共识群组达成的共识结果。
可选地,在该实施例中,该方法还包括:生成交易索引表,所述交易索引表包含受付方的地址和与所述受付方发生交易的所有支付方的地址。
具体的,二次共识群组中的主leader生成的主区块中还包含了一个交易索引表。交易索引表可以是一个二叉树(例如可以用merkle tree实现)索引,交易索引表形成以用户账号为索引的所有交易参与者和交易细节在各个分组中的位置指针(位置都用支付方地址表示);通过支付方用户的地址列表和受付方用户地址就可以从对应的分组区块(可能多个)中找到交易数据,如图5所示(图中用户地址在这里是指受付方的地址)。
交易的原始纪录都在一次共识的子区块中,二次共识产生的索引是对用户交易的快速检索工具,可以在本发明的区块结构中快速找到一个用户的所有交易纪录。这样的安排能够让节点便于优先同步当前轮用到的账户状态,减少共识所用时间,也就是当前轮所在的一次共识群组中对应的账号组中的全部账号状态。
账户状态更新机制如下:
与传统区块链一样的是,账户状态由各个节点根据区块链上的交易明细纪录自治更新和维护。在本发明的数据结构中,一个受付方相关的交易记录可能会在多个子区块中的支付方的记录中出现,所以不能根据某个交易组中的交易结果独立地改变某个账户状态。每个节点在更新一个账户状态的时候,需要从主区块的交易索引表中找到该账户在所有子区块中产生的交易纪录,具体的方法是从交易索引表中获取到同该账户地址相同的用户地址下面的支付方地址列表,通过对应的支付方地址列表找到所有的有该账号交易的所有子区块,通过这些子区块的交易记录更新该账号的状态。
可选地,在该实施例中,当所述交易的支付方账号和受付方账号的前n位相同时,所述交易采用分片的方式进行记账。
具体的,因为交易活动的频度有很强的地域性,在现实社会中,交易记录都是分为区域内的交易和区域间的交易。采用区块链技术记账不会改变交易的地域属性,在物联网的情况下也是如此。但是,虚拟空间距离与现实空间距离并不总能对应,而划分服务区域通常只能基于现实空间的区域划分,跨链交易在物联网中预计会更加频繁。
如果跨链交易不是很频繁,分片支链技术(以以太坊分片技术为例,下文简称支链)已经很好的解决了效率问题。本发明能够在跨链交易也很频繁的情况下也提高记账效率,具体说明如下:
与支链技术最根本的不同是:N个支链的技术是N+1个账本,N个账本记录N个用户组的组内交易,一个账本记录所有用户的组间交易。而本发明的分组的技术是一个账本,N个正交分组的一次共识节点和一个二次共识节点分工来记。
容易混淆的是,本发明的分组方法也可以采用根据用户账号分组的办法,而且所有的组内交易也不会涉及到其他组的记账。区别在于,本发明分组只基于支付方,不管受付方,例如,A支付B,如果在同一个组,与支链效果类似。如果在不同的组里,支付方A所在组负责记账,但会记到B的账号下,即,每个分组帐上有本组支付方的全体受付方的入账记录。在更新账号余额时,B要遍历每个分组中自己相关的交易以得到新的余额。而支链则不同,B要查询跨链交易得到新的余额。总而言之,本发明没有跨链交易,因为只有一个链。
在有100个分组的情况下,节点更新一个账号的余额要遍历100个交易记录树,因为分组不会使某个账号的交易数量改变,每个节点的验证的账号数减少到1/100,对节点流量和算力的影响仍然是1/100。
对比支链,同样100个支链(分组)的情况下,如果都是组内交易,更新一个账号余额需要查询一遍交易记录树,但交易量不会减少,算力和带宽并不会有明显的节省。如果是跨链交易,还要进行一次跨链查询。
本发明解决的问题是交易处理的瓶颈问题。在支链技术里,跨链交易确认需要随时更新所有支链的余额。上例中,需要查询100个支链所有账号的交易记录。在极端的情况下,大多数交易都出现跨链时,所有交易都需要在主链上记录,更新账号余额,主链节点所需算力和带宽最多会达到100倍(假设在100个支链的情况下),成为链TPS的瓶颈。
本发明的一个好处是,对等节点,不会像支链技术那样有主链和支链节点之分,使得网络更加扁平化。
用户交易分两种情况,区域内交易和跨区域交易。本发明的正交分组提高区块链交易确认TPS的方法与支链方法不同,如图6所示
如果都是组内交易,分组和支链体现不出区别。当出现组间或链间交易时,两者是不同的。支链将链间交易交给主链处理,而分组只是记账分组,交易的验证仍然在组内完成。
当一个节点被选做主Leader时,如果需要对所有分组的交易进行验证,就需要一直维护全局的World State,也需要对全局交易及时更新,即,需要维护全网的WorldState,而且需要校验所有的交易,与不分组的情况相同。而且,由于每个节点都有可能被选为主Leader,所以对节点的算力要求也不会低于不分组的情况。总而言之,分组没有效果。
基于支链技术,本发明实施例还提供的一种支链混合记账,如图4所示。
当一个交易请求的受付方也是同一个分组内时,分组节点可以创建一个或在已有的分组成员范围内支链上记账。实际的使用场景是,一些用户只开通了本地服务的账号,可以分到支链上,节省系统成本(相应的费用也会节省)。当采用这种方式时,消息的传播只在分组或者说支链内部进行,不需要传播到整个网络,相同带宽情况下,数据的交换更高效,成本更低,当账号按照区域分组时,更进一步的减少跨区数据交换的成本(通常不在跨区域的网络通讯成本更高)
另一种稍微复杂的结构是用分组方法做复合支链,如图5所示。
每个节点可以有三种角色:1)主链分组的节点;2)支链分组的节点;3)二级支链的节点。使用场景可以是主链分组是国际交易用户,支链分组是国内交易用户;二级分组是本地交易用户。
任何一个用户都可以选择某种不同的交易种类。一个国际交易的确认需要通过主链分组节点、支链分组节点和二级支链节点共同确认。而国内用户需要支链节点和二级支链节点的确认。本地用户只需要在二级节点上确认就可以。
交易种类可以通过用户账号中规定服务种类来确定。例如一个256位的用户账号中的三位做服务种类,当开通一个服务时只要将对应的位设置为激活状态。
上述的分组方法只解决节点验证交易所需的运算量。既不会减少网络吞吐的需求,也不会减少更新账号状态的运算量。及时获取交易纪录以更新账户状态是一个节点能参与共识的前提,如果二次共识的结果,即主区块的传输速度跟不上要求,许多节点可能会因为没能同步而错过当前轮的共识竞争。为此,本发明进一步采用下面的数据交换优化方法进行优化:
可选地,在该实施例中,所述区块链中在线的节点数为参与所述第一次共识和第二次共识的节点总数的M倍,其中,M>>1。
具体的,例如,存在一个数M>>1,当在网的节点数是共识所需节点数的M倍时,在保证共识节点的随机性的同时,有足够多的节点参与共识的概率足够接近1
对于某一轮没有机会参与共识的节点,可以借机同步区块链信息,为参加下一轮共识做准备,当M>>1时,这些节点有很大概率在下一次获得参与共识的机会之前完成账户状态的更新;
可选地,在该实施例中,所述第一节点在优先获取对应的交易组之后,再获取其他交易组中的交易。
具体的,在确定每个节点所在的一次共识群组后,可以采用优先获取相关信息的策略,例如,有128个分组(n=7)的情况下,一个节点可以优先下载与本组账户状态有关的数据(即支付方账号的前n位与节点所在一次共识群组的编号相同的支付请求,例如:ID的前n位或后n位),因为对应的账号分组中全部账号相关数据,不到总数据量的1/100,使得该节点可以很快加入共识竞争。同时可以在后台慢慢下载其他分组的数据;上文举例的节点ID算法中,ID在每轮共识开始前才能确定,一个简单的优化例子可以是让节点的分组信息在多轮共识前确定(例如6轮前),使一个节点有更多的时间同步账号信息,降低对网络的性能和节点计算能力的要求。
为了能够支持分组,随着交易容量的增加,也会增加节点数量,在节点数量很多的情况,传输性能有可能成为瓶颈。因为及时获得一次共识的结果是及时完成二次共识的基础,传输的延时会导致二次共识的延时,进而降低TPS。而且,如果在二次共识丢掉某个分组,会使下一轮共识中这个分组数据过载(也就是说丢掉某个交易分组,在下一轮中还要包括这些交易数据,所以下一轮该分组的交易数量增加,可能会导致需要进一步拆分分组)。为此:
本发明在二次共识达成之前,可以不在网络内扩散一次共识的结果,只限在一次和二次共识全部参与者之间传输,并不会形成传输瓶颈。举例而言,在M=100的情况下(在网的节点数是共识所需节点数的M倍,此时共识所需的传输数据量只有1/100),传输数据量可以忽略。
区块的传播与传统区块链相同,二次共识组的主节点是完整主区块的源头,通过它向全网络传播。分组校验的方法能减少节点验证交易的时间,但会增加网络传输的数据量。结合上述数据交换的优化方法能有效增加TPS。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (13)

1.一种基于区块链的交易处理方法,其特征在于,包括:
将用户账号的账号空间分成多个子空间,所述多个子空间之间的交集为空,所述多个子空间之和的余集为空;
将本轮共识中的交易按照支付方的账号分配到对应的子空间内,得到多个交易组;
从区块链选取节点并分成多个一次共识群组和一个二次共识群组,其中,所述交易组与一次共识群组一一对应;
所述一次共识群组中的第一节点获取对应的交易组,并对获取的所述交易组内交易的合法性进行验证,并根据验证结果达成第一次共识,形成与交易组一一对应的子区块;
所述二次共识群组中的第二节点对各个所述第一节点身份的合法性进行验证;
当所述第一节点身份的合法性验证通过时,所述第二节点获取所述第一节点验证通过的交易的哈希值,并根据所述哈希值验证对应交易的完整性;
根据第一节点身份合法性和交易的完整性的验证结果,达成第二次共识,生成主区块。
2.根据权利要求1所述的方法,其特征在于,设所述账号空间分为2n份,所述将用户账号的账号空间分成多个子空间,具体包括:将前n位相同的用户账号分到同一个子空间,则最大交易分组数为2n
3.根据权利要求2所述的方法,其特征在于,设上一轮共识的最大交易分组数为2n,则本轮共识的最大交易分组数N的确定方法如下:
如果上一轮共识的交易数量在第一门限和第二门限之间,则N=2n,如果交易数量超过第一门限,则本轮共识的最大交易分组数为2n+1,如果交易数量小于第二门限,则本轮共识的最大交易分组数为2n-1,其中,所述第一门限大于第二门限。
4.根据权利要求2所述的方法,其特征在于,从区块链选取节点并分成多个一次共识群组和一个二次共识群组,具体包括:
将编号的前n位相同的第一节点划分到一个一次共识群组中;
从区块链中随机选择第二节点,组成一个二次共识群组。
5.根据权利要求4所述的方法,其特征在于,所述第一节点的编号的前n位是按照预设的抽签算法生成的凭证的前n位,或者是所述第一节点所在区域的区域码。
6.根据权利要求4所述的方法,其特征在于,所述一次共识群组对应的交易组内交易的支付方账号的前n位与所述一次共识群组的编号相同,其中,所述一次共识群组的编号是所述第一节点的编号的前n位。
7.根据权利要求2所述的方法,其特征在于,还包括:当前n位与第一用户账号不同的第二用户账号在所有与所述第一用户账号发生交易的用户账号中的占比超过预设比例时,将所述第一用户账号的前n位改为所述第二用户账号的前n位。
8.根据权利要求1所述的方法,其特征在于,所述根据第一节点身份合法性和交易的完整性的验证结果,达成第二次共识,生成主区块,具体包括:
当所述第一节点身份的合法性被所述二次共识群组中占比超过第三门限的第二节点验证通过、并且交易的完整性验证通过时,达成第二次共识,生成主区块。
9.根据权利要求1所述的方法,其特征在于,当存在两个以上对包含相同交易组中的交易达成第一次共识的一次共识群组时,所述第二节点对达成共识的节点占比最高的一次共识群组中的第一节点身份的合法性进行验证,并选择为最终的子区块。
10.根据权利要求1所述的方法,其特征在于,还包括:生成交易索引表,所述交易索引表包含受付方的地址和与所述受付方发生交易的所有支付方的地址。
11.根据权利要求1所述的方法,其特征在于,在所述第二节点对所述第一节点身份的合法性进行验证之前,还包括:
判断所述第一节点的数量是否小于第四门限;
若否则执行所述第二节点对所述第一节点身份的合法性进行验证的步骤。
12.根据权利要求1所述的方法,其特征在于,当所述交易的支付方账号和受付方账号的前n位相同时,所述交易采用支链的方式进行记账。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述第一节点在优先获取对应的交易组之后,再获取其他交易组中的交易。
CN201811399091.5A 2018-10-12 2018-11-22 一种基于区块链的交易处理方法 Pending CN111047439A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2018111919643 2018-10-12
CN201811191964 2018-10-12

Publications (1)

Publication Number Publication Date
CN111047439A true CN111047439A (zh) 2020-04-21

Family

ID=70230510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811399091.5A Pending CN111047439A (zh) 2018-10-12 2018-11-22 一种基于区块链的交易处理方法

Country Status (1)

Country Link
CN (1) CN111047439A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111932239A (zh) * 2020-09-18 2020-11-13 腾讯科技(深圳)有限公司 业务处理方法、装置、节点设备及存储介质
CN112398949A (zh) * 2020-11-26 2021-02-23 卓尔智联(武汉)研究院有限公司 交易确认方法、系统、装置和计算机设备
CN112887437A (zh) * 2021-04-28 2021-06-01 支付宝(杭州)信息技术有限公司 区块链交易处理方法、区块链节点和区块链
CN113037863A (zh) * 2021-03-31 2021-06-25 杭州云象网络技术有限公司 一种区块链多方协同交叉共识验证方法及系统
CN113157451A (zh) * 2021-04-19 2021-07-23 支付宝(杭州)信息技术有限公司 在区块链系统中执行区块的方法及装置
CN114124961A (zh) * 2021-11-02 2022-03-01 杭州复杂美科技有限公司 区块确认方法、计算机设备和存储介质

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2814575A1 (fr) * 2000-09-22 2002-03-29 Laurent Francois Ernest Pele Procedes et systemes d'identification, de chiffrement et de paiement electronique notamment a l'aide de supports homologues detenant un secret partage s'identifiant mutuellement
CN105719185A (zh) * 2016-01-22 2016-06-29 杭州复杂美科技有限公司 区块链的数据对比及共识方法
CN106384236A (zh) * 2016-08-31 2017-02-08 江苏通付盾科技有限公司 基于区块链的ca认证管理方法、装置及系统
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法
CN107395403A (zh) * 2017-07-07 2017-11-24 北京区块链云科技有限公司 一种适用于大规模电子商务的基于信用的区块链共识方法
KR20180014534A (ko) * 2016-08-01 2018-02-09 서강대학교산학협력단 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
WO2018032371A1 (zh) * 2016-08-13 2018-02-22 深圳市樊溪电子有限公司 一种区块链功耗感知的PoW共识机制
CN107864198A (zh) * 2017-11-07 2018-03-30 济南浪潮高新科技投资发展有限公司 一种基于深度学习训练任务的区块链共识方法
KR101858653B1 (ko) * 2016-12-30 2018-06-28 주식회사 코인플러그 블록체인 데이터베이스 및 이와 연동하는 머클 트리 구조를 통해 모바일 아이디를 이용하여 사용자를 인증하는 방법, 단말 및 이를 이용한 서버
CN108241968A (zh) * 2017-03-26 2018-07-03 杭州复杂美科技有限公司 前置机参与区块链共识的方法
CN108389615A (zh) * 2018-02-08 2018-08-10 罗梅琴 一种基于区块链技术的孕婴追溯存证系统及方法
WO2018149385A1 (zh) * 2017-02-17 2018-08-23 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
CN108492183A (zh) * 2018-03-29 2018-09-04 深圳前海微众银行股份有限公司 区块链的账户交易方法、系统和计算机可读存储介质
CN108540536A (zh) * 2018-03-16 2018-09-14 深圳前海微众银行股份有限公司 基于区块链的网络海量业务处理方法、设备及存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2814575A1 (fr) * 2000-09-22 2002-03-29 Laurent Francois Ernest Pele Procedes et systemes d'identification, de chiffrement et de paiement electronique notamment a l'aide de supports homologues detenant un secret partage s'identifiant mutuellement
CN105719185A (zh) * 2016-01-22 2016-06-29 杭州复杂美科技有限公司 区块链的数据对比及共识方法
KR20180014534A (ko) * 2016-08-01 2018-02-09 서강대학교산학협력단 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
WO2018032371A1 (zh) * 2016-08-13 2018-02-22 深圳市樊溪电子有限公司 一种区块链功耗感知的PoW共识机制
CN106384236A (zh) * 2016-08-31 2017-02-08 江苏通付盾科技有限公司 基于区块链的ca认证管理方法、装置及系统
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法
KR101858653B1 (ko) * 2016-12-30 2018-06-28 주식회사 코인플러그 블록체인 데이터베이스 및 이와 연동하는 머클 트리 구조를 통해 모바일 아이디를 이용하여 사용자를 인증하는 방법, 단말 및 이를 이용한 서버
WO2018149385A1 (zh) * 2017-02-17 2018-08-23 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
CN108241968A (zh) * 2017-03-26 2018-07-03 杭州复杂美科技有限公司 前置机参与区块链共识的方法
CN107395403A (zh) * 2017-07-07 2017-11-24 北京区块链云科技有限公司 一种适用于大规模电子商务的基于信用的区块链共识方法
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
CN107864198A (zh) * 2017-11-07 2018-03-30 济南浪潮高新科技投资发展有限公司 一种基于深度学习训练任务的区块链共识方法
CN108389615A (zh) * 2018-02-08 2018-08-10 罗梅琴 一种基于区块链技术的孕婴追溯存证系统及方法
CN108540536A (zh) * 2018-03-16 2018-09-14 深圳前海微众银行股份有限公司 基于区块链的网络海量业务处理方法、设备及存储介质
CN108492183A (zh) * 2018-03-29 2018-09-04 深圳前海微众银行股份有限公司 区块链的账户交易方法、系统和计算机可读存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
余本国,等: "公平且稳定的最小值证明共识机制", 计算机工程与应用, vol. 15, no. 01, 31 December 2017 (2017-12-31), pages 15 - 20 *
周畅,等: "区块链在车载自组网中的应用研究及展望", 计算机科学, vol. 25, no. 02, pages 156 - 159 *
王亮,等: "基于区块链的地学大数据管理", 国防科技, vol. 01, no. 02, 20 April 2018 (2018-04-20), pages 1 - 6 *
王文庆: "区块链技术及在金融业的应用", 商场现代化, vol. 66, no. 08, pages 89 - 95 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111932239A (zh) * 2020-09-18 2020-11-13 腾讯科技(深圳)有限公司 业务处理方法、装置、节点设备及存储介质
CN112398949A (zh) * 2020-11-26 2021-02-23 卓尔智联(武汉)研究院有限公司 交易确认方法、系统、装置和计算机设备
CN113037863A (zh) * 2021-03-31 2021-06-25 杭州云象网络技术有限公司 一种区块链多方协同交叉共识验证方法及系统
CN113037863B (zh) * 2021-03-31 2022-07-12 杭州云象网络技术有限公司 一种区块链多方协同交叉共识验证方法及系统
CN113157451A (zh) * 2021-04-19 2021-07-23 支付宝(杭州)信息技术有限公司 在区块链系统中执行区块的方法及装置
CN113157451B (zh) * 2021-04-19 2023-12-05 支付宝(杭州)信息技术有限公司 在区块链系统中执行区块的方法及装置
CN112887437A (zh) * 2021-04-28 2021-06-01 支付宝(杭州)信息技术有限公司 区块链交易处理方法、区块链节点和区块链
CN114124961A (zh) * 2021-11-02 2022-03-01 杭州复杂美科技有限公司 区块确认方法、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN111047439A (zh) 一种基于区块链的交易处理方法
CN107807951B (zh) 一种区块链生成方法、数据验证方法、节点及系统
CN109471744B (zh) 基于区块链的主链加并行多子链系统架构
CN107657438B (zh) 一种区块链生成方法、数据验证方法、节点及系统
CN110738472B (zh) 区块链的存储方法和区块链的节点
CN109246211B (zh) 一种区块链中的资源上传和资源请求方法
CN110868434B (zh) 一种多层分片架构的区块链共识方法及系统
CN110945831B (zh) 抗Sybil攻击身份的生成
WO2016131473A1 (en) Method and system for verifying information of a data item in a plurality of different data items
CN111130790A (zh) 基于区块链节点网络的共识出块方法
CN113626875A (zh) 一种区块链分片赋能的知识图谱文件存储方法
CN111861459A (zh) 一种基于DPoS共识算法的Iota账本优化系统及方法
CN111260348B (zh) 一种车联网中基于智能合约的公平支付系统及其工作方法
CN114745140B (zh) 基于聚合加密的城市规划领域区块链共识验证方法及系统
US20220172180A1 (en) Method for Storing Transaction that Represents Asset Transfer to Distributed Network and Program for Same
CN109766724A (zh) 一种基于区块链的数据存证方法
CN110493323B (zh) 基于区块链的公平性文件分发方法、系统及存储介质
CN113407977B (zh) 基于聚合签名的跨链扩展方法及系统
CN108809929B (zh) 一种基于区块链技术的农村金融系统
CN114615642A (zh) 车车通信中车辆的身份认证方法、装置、车辆及存储介质
CN112995167A (zh) 基于Kafka机制的用电信息采集方法、区块链网络及用户端
CN110071966B (zh) 基于云平台的区块链组网及数据处理方法
CN111177262A (zh) 一种区块链共识方法、相关装置及系统
CN113079026B (zh) 一种区块链系统及区块链网络资源管理方法
CN109344623B (zh) 一种基于dag的去中心化方法及终端

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