CN109033422B - 一种生成区块链的方法、装置及区块链 - Google Patents
一种生成区块链的方法、装置及区块链 Download PDFInfo
- Publication number
- CN109033422B CN109033422B CN201810897990.1A CN201810897990A CN109033422B CN 109033422 B CN109033422 B CN 109033422B CN 201810897990 A CN201810897990 A CN 201810897990A CN 109033422 B CN109033422 B CN 109033422B
- Authority
- CN
- China
- Prior art keywords
- block
- chain
- combined
- sub
- parent
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种生成区块链的方法、装置及区块链,生成区块链的方法包括:接收来自父链的发起者发送的创建子链的交易请求;对交易请求进行验证,当验证通过时生成组合区块,组合区块作为子链的第一个区块;组合区块包括父链信息和子链信息,组合区块包括链地址和区块类型,链地址标识子链的地址,区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;对组合区块进行验证,当验证通过时将组合区块的数据更新到区块链中。该方法通过在父链上生成组合区块,组合区块衍生得到子链,从而实现区块链分片。另外,该方法还提高了区块链的整体性能以及解决了生产节点日益中心化的问题。
Description
技术领域
本发明涉及密码学技术领域,尤其涉及一种生成区块链的方法、装置及区块链。
背景技术
传统的区块链技术将已验证的交易打包为区块,并按照时间顺序将这些区块组织为链形结构形成区块链(区块集合称为账簿),用以保证交易内容可追溯且实体数据(包括账户数据、合约数据等)可还原。
此外,区块链以点对点方式进行组网,具有打包区块权力的节点(称为生产节点)地位平等、功能相同,生产节点之间通过共识算法来保持区块链的一致性。区块的链形结构和共识算法能够阻止少数生产节点的非法行为,保证伪造的交易内容不被承认且真实的交易内容不被篡改,使得区块链可以应用于多方参与的公共环境。
在公共环境中,需要同时运行大量的生产节点来保护区块链的信用基础,不但不需要权威机构的集中管理,还要尽可能防止少数组织或个人掌控全链的生产节点,用以规避可能的风险。这是去中心化原则,它贯穿于区块链的整个生命周期,一旦违背了这个原则,区块链的信用基础就会被动摇。
发明内容
为了解决现有技术中存在的以上技术问题,本发明提供一种生成区块链的方法、装置及区块链,能够消除传统区块链对区块的链形组织方式与分片技术在原理上的冲突,实现区块链分片,从而提高区块链的整体性能并解决生产节点日益中心化的问题。
为了实现上述目的,本发明提供的技术方案如下:
本发明提供一种生成区块链的方法,包括:
接收来自父链的发起者发送的创建子链的交易请求;
对所述交易请求进行验证,当验证通过时生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。
可选的,所述组合区块包括第一区块和第二区块;
所述第一区块用于表示父链信息,所述第二区块用于表示子链信息;
所述第一区块和第二区块均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块的区块头中的默克尔根与所述第二区块的区块头中的默克尔根相等;
所述第一区块的区块头中的前一区块的哈希值为位于所述父链链尾的区块的哈希值;
所述第二区块的链地址用于标识所述子链的地址;
所述第二区块的区块头中的区块高度为0且前一区块的哈希值为0。
可选的,所述组合区块包括一个区块头和一个区块体;
所述区块头包括默克尔根、前一区块的哈希值、所述链地址和区块类型;所述区块头中的区块高度大于0;
所述区块体包括子链区块头和子链区块体;所述子链区块头中的区块高度为0且前一区块的哈希值为0,所述子链区块体包括交易列表;
所述区块头中的默克尔根与所述子链区块头中的默克尔根相等;
所述区块头中的前一区块的哈希值为所述父链的链尾区块的哈希值。
可选的,所述组合区块包括第一区块和第二区块;
所述第一区块用于表示父链信息,所述第二区块用于表示子链信息;
所述第一区块和第二区块均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块的区块头中的默克尔根与所述第二区块的区块头中的默克尔根相等;
所述第一区块的区块头中的前一区块的哈希值为所述父链的链尾区块的哈希值;
所述第二区块的链地址标识所述子链的地址;
所述第二区块的区块头中的区块高度为0且前一区块的哈希值为0;
所述第一区块的区块体中包括用于唯一标识所述第二区块的引用。
可选的,每个所述子链的链地址具有唯一性,且均与父链的链地址不同。
可选的,在所述生成组合区块之前,还包括:
获得所述父链当前包括的子链的数目,当所述子链的数目小于预设阈值时,再生成所述组合区块。
可选的,所述对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中,具体包括:
位于所述父链的预设数目的生产节点共同对所述组合区块进行验证,当验证所述组合区块通过的生产节点占所述预设数目的生产节点的比例大于或等于预设比例时,则验证所述组合区块通过,将所述组合区块的数据更新到所有生产节点中。
可选的,所述的生成区块链的方法,还包括:
所述子链上的生产节点接收在所述组合区块之后建立子链上的普通区块的交易请求;根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块;
和/或,
所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
本发明还提供一种生成区块链的装置,包括:
第一接收单元,用于接收来自父链的发起者发送的创建子链的交易请求;
第一验证单元,用于对所述交易请求进行验证;
生成单元,用于生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
第二验证单元,用于对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。
可选的,所述生成区块链的装置,还包括:
获取单元,用于获得所述父链当前包括的子链的数目;
比较单元,用于比较所述子链的数目是否小于预设阈值。
可选的,所述生成区块链的装置,还包括:
第二接收单元,用于接收在所述组合区块之后建立子链上的普通区块的交易请求;
第一建立单元,用于根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块。
和/或,
第三接收单元,用于所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;
第二建立单元,用于根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
本发明还提供一种区块链,所述区块链包括根链和由上述一种生成区块链的方法生成的子链。
本发明提供一种计算机存储介质,其上存储有程序,其上存储有计算机程序,该程序被处理器执行时实现上述一种所述的生成区块链的方法。
与现有技术相比,本发明至少具有以下优点:
本申请实施例提供的生成区块链的方法,包括:接收来自父链的发起者发送的创建子链的交易请求;对所述交易请求进行验证,当验证通过时生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。该方法通过在父链上生成组合区块,组合区块衍生得到子链,从而构成树形结构的区块链,以便于实现区块链分片。由于该方法生成的区块链中不同链之间是对等关系,因而,该区块链符合去中心原则。由于该方法生成的区块链中每条链是并行的,因而,该区块链可以无限扩张,从而提高了区块链的整体性能。另外,当该方法生成的区块链包括的链越多,则平均每条链所需的算力和存储力就越少,从而使得性能普通的节点也可以充当生产节点,进而解决了生产节点日益中心化的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例一提供的生成区块链的方法的流程图;
图2为本申请实施例二提供的生成区块链的方法的流程图;
图3为本申请实施例二提供的区块链的结构示意图;
图4为本申请实施例二提供的第一种组合区块的结构示意图;
图5为本申请实施例二提供的第二种组合区块的结构示意图;
图6为本申请实施例二提供的第三种组合区块的结构示意图;
图7为本申请实施例二提供的普通区块的结构示意图;
图8为本申请实施例提供的生成区块链的装置的结构示意图。
具体实施方式
发明人在研究中发现目前区块链至少存在以下问题:区块链难以进行分片。
分片是将信息集合分散处理的一项技术,它通过增加节点的方式来扩展区块链的整体算力和存储力,在信息集合较为庞大的情况下尤其效果显著。然而传统区块链的账簿是链形结构,生产节点彼此对等,生成的区块内容还需要全网共同确认,这决定了每个生产节点都要各自维护一套完整的账簿,同时还要进行所有交易内容的验证,因此很难对传统区块链进行分片。
如果不对传统区块链进行分片,短时间内用户规模不大时,或许不是问题,但长期来看或者用户规模庞大时,将导致破坏性的后果。破坏性后果主要体现在以下两方面:
第一方面:传统区块链的整体性能愈发不能满足实际需要。不论是交易验证还是区块生产,都取决于生产节点的单点性能,增加节点只能增加安全冗余,并不能增加算力和存储力。这意味着传统区块链的性能提升极其有限,当用户规模越来越大,交易数量越来越多时,交易堵塞的情况便会越来越严重。
第二方面:传统区块链的生产节点日益中心化。随着时间的推移和用户的增长,账簿数据以及相关的状态数据将愈发膨胀,对生产节点的存储力和算力的要求也越来越高,在摩尔定律接近失效的情况下,有能力进行生产的节点将越来越少。这与去中心化原则背道而驰,相当于否定了传统区块链存在的理论依据。
有鉴于此,一些技术人员针对传统区块链进行了分片化的尝试,但普遍存在操作复杂、稳定度低、治标不治本等问题。究其根源,在保证去中心化原则的前提下,传统区块链对区块的链形组织方式与分片技术在原理上是相互冲突的。
为了解决上述问题,本申请实施例提供了一种生成区块链的方法,包括:接收来自父链的发起者发送的创建子链的交易请求;对所述交易请求进行验证,当验证通过时生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。
本申请实施例提供的生成区块链的方法通过在父链上生成组合区块,组合区块衍生得到子链,从而构成树形结构区块链,以便于实现区块链分片。由于该方法生成的区块链中不同链之间是对等关系,因而,该区块链符合去中心原则。由于该方法生成的区块链中每条链是并行的,使得该区块链可以无限扩张,从而提高了区块链的整体性能。另外,当该方法生成的区块链包括的链越多,则平均每条链所需的算力和存储力就越少,从而使得性能普通的节点也可以充当生产节点,进而解决了生产节点日益中心化的问题。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
参见图1,该图为本申请实施例一提供的生成区块链的方法的流程图。
本申请实施例提供的生成区块链方法包括:
S101:接收来自父链的发起者发送的创建子链的交易请求;
父链的发起者是指位于父链上的用户。其中,发起者可以发送多种交易请求,由于创建子链是一种特殊的交易,因而,发起者必须具备一定条件才可以创建子链。
创建子链的交易请求包括用户签名、交易的目标地址和操作码。其中,交易的目标地址可以为空,也可以具有特定格式;操作码异于其他交易请求的操作码。
父链是指可以衍生子链的链。
子链是指由已有的链衍生得到的新链。
父链和子链是对等的两条链,且父链和子链之间不存在从属关系。
需要说明的是,包括多条相连的链的树形结构区块链中的第一条链称为根链,且根链是由生产节点根据初始化参数自动创建的,而其他链则是根据相应的创建子链的交易请求进行创建的。
作为示例,当区块链只包括根链时,则S101可以具体为:当根链的发起者发送的创建子链的交易请求,则根链作为父链接收创建子链的交易请求。
作为示例,当区块链包括一条根链和一条由根链衍生的第一条子链时,则S101可以为:若根链的发起者发送创建子链的交易请求,则根链作为父链接收创建子链的交易请求;若根链衍生的第一条子链的发起者发送创建子链的交易请求,则根链衍生的第一条子链作为父链接收创建子链的交易请求。
S102:对所述交易请求进行验证,当验证通过时生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
对创建子链的交易请求的验证是由父链上的生产节点进行的,验证过程具体为:生产节点收到创建子链的交易请求后,需验证用户签名,判断该发起者是否达到创建子链的条件,如果验证通过,则继续执行后续动作;如果验证失败,则中断创建子链的过程并清除交易请求。
组合区块为父链与子链的连接点,因而,组合区块同时位于父链和子链两条链上,且父链和子链均承认该组合区块的合法性。除根链以外,任一条链的第一个区块是组合区块。
区块类型是用于标识区块的类别,在区块链中包括普通区块和组合区块,其中,组合区块的区块类型为组合区块类型,普通区块的区块类型为普通区块类型。当读取区块链中的任一区块时,能够根据该区块的区块类型判断该区块是组合区块还是普通区块,如果是组合区块,则可知该区块位于两条链上。
链地址是用于唯一标识区块所在的链,当读取区块链中的任一区块时,能够根据该区块的链地址确定该区块的位置。
作为示例,S102可以具体为:当接收到创建子链的交易请求时,首先,父链上的生产节点将验证发送交易请求的发起者是否达到创建子链的条件,如果该发起者达到创建子链的请求,则验证通过;然后,生产节点根据创建子链的请求生成组合区块,且组合区块同时位于父链和子链上。
S103:对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。
对组合区块进行验证是指验证父链是否承认组合区块的合法性。
将组合区块更新到区块链包括:将组合区块连接到父链的尾部;将组合区块的信息添加到父链的账簿中。
作为示例,S103可以具体为:当父链上的生产节点生成组合区块后,需要验证父链是否承认该组合区块的合法性,如果父链承认该组合区块的合法性,则将该组合区块连接到父链的尾部并将组合区块的信息添加到父链的账簿中。
基于以上实施例提供的生成区块链的方法,为了提高不同链之间互访的效率,本申请实施例提供了一种生成区块链的方法,下面结合附图进行详细说明。
实施例二:
参见图2,该图为本申请实施例二提供的生成区块链的方法的流程图。
本申请实施例提供的生成区块链的方法包括:
S201与S101内容相同,在此不再赘述。
S202:对所述交易请求进行验证,当验证通过时获得所述父链当前包括的子链的数目。
对交易请求进行验证与S102中的“对交易请求进行验证”的相关内容相同,在此不再赘述。
父链当前包括的子链的数目是指父链上已经创建完成的子链的数目。
S203:当所述子链的数目小于预设阈值时,再生成所述组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链。
预设阈值是指预先设定的父链上衍生子链的总数目,且用于判断父链上的子链是否达到预先设定的子链总数目。为了便于不同链之间的互访,可以根据实际需要预先设定预设阈值。
若父链当前包括的子链的数目小于预设阈值,则继续根据交易请求创建子链;若父链当前包括的子链数目大于等于预设阈值,则判定发送创建子链的交易请求无效,并向发起者发送该父链的子链数量已达上限的通知。
由于父链上子链的地址是连续的,而且是唯一的,因而可以利用父链上子链的地址获取父链当前包括的子链数目。
例如,当预设阈值为255时,则子链的地址编号可以为1至255。若当前父链上子链地址的最大值为200,可以判定出该父链还能新建55条链,则继续根据交易请求创建子链,以便于生成地址为201的子链;若当前父链上子链地址的最大值为255,可以判定出该父链的子链数目已达到预设阈值,则判定发送创建子链的交易请求无效,同时向发起者发送该父链的子链数量已达上限的通知。
组合区块与S102中“组合区块”的相关内容相同,在此不再赘述。
S204:位于所述父链的预设数目的生产节点共同对所述组合区块进行验证,当验证所述组合区块通过的生产节点占所述预设数目的生产节点的比例大于或等于预设比例时,则验证所述组合区块通过,将所述组合区块的数据更新到所有生产节点中。
预设数目可以是预先设定的数目。
预设比例是预先设定的比例。
对组合区块进行验证的具体过程可以为:首先,生成组合区块的生产节点将组合区块中包括的信息广播至父链上其他的生产节点;然后,父链上其他的生产节点将分别验证组合区块的合法性;最后,汇总父链上所有生产节点的验证结果,如果超过预设比例的生产节点均认为该组合区块是合法的,则验证通过。
将组合区块的数据更新至所有生产节点是指将组合区块中的数据记录到父链上的每个生产节点对应的账簿中。
作为示例,当预设数目为50,且预设比例为50%时,S103的具体过程是:首先,生成组合区块的生产节点将组合区块的数据信息广播至父链上其他49个生产节点;其次,50个生产节点分别验证组合区块的合法性;然后,汇总父链上50个生产节点的验证结果,得到40个生产节点认为组合区块是合法的,由于40个生产节点是父链所有生产节点的80%,因而验证通过;最后,50个生产节点均将组合区块的数据记录在其相应的账簿中。
本申请实施例提供的生成区块链的方法,在生成组合区块之前需要先判断该父链当前包括的子链的数目是否小于预设阈值,若是,则生成区块。该方法通过根据实际需求设定预设阈值,限制区块链的规模,从而提高了不同链之间互访的效率。而且,该方法通过父链上预设数目的生产节点共同验证组合区块的合法性,来保证账簿中数据的一致性和有效性,从而实现避免了由于部分节点失效或恶意欺诈的情况的发生。
需要说明的是,每个所述子链的链地址具有唯一性,且均与父链的链地址不同,因而,当读取区块链中的某一区块时,可以根据该区块的链地址确定该区块的位置。
为了保证链地址的唯一性和提高利用链地址查找及定位区块的效率,本申请实施例提供了一种链地址的编址方法:
首先,确定根链的链地址。由于根链是由生产节点根据初始化参数自动生成的,因而,为避免混淆,将根链的链地址编址为0;
其次,确定根链的子链的链地址。为了区分根链的不同子链,将根链的子链进行编址时,其地址编码从1开始;
然后,确定剩余的链的链地址。为了便于区块的快速定位和查找,剩余链的链地址的编址将以冒号作为连接层级的分隔符。
为了便于本领域人员对本申请实施例提供的链地址的编址方法的理解,下面提供了一种链地址的编址方法。
参见图3,该图为本申请实施例二提供的区块链的结构示意图。
图3的根链301包括两条子链:第一子链302和第二子链303,其中,根链301与第一子链302通过第一组合区块3a连接,根链301与第二子链303通过第二组合区块3b连接;第一子链302包括两条子链:第三子链304和第四子链305,其中,第一子链302与第三子链304通过第三组合区块3c连接,第一子链302与第四子链305通过第四组合区块3d连接;第四子链305包括第五子链306,且第四子链305与第五子链306通过第五组合区块3e连接。
根链301的链地址为0;第一子链302的链地址为1;第二子链303的链地址为2;第三子链304的链地址为1:1;第四子链305的链地址为1:2;第五子链306的链地址1:2:1。
需要说明的是,由于链地址利用层级进行编址的,因而每条链的地址不定长。利用层级编址可以标识父链和子链的连接关系,以便于追溯区块,但是,父链与子链是对等的,不存在归属关系。
本申请实施例提供的编址方法既保证了区块链中每条链的链地址唯一性,又提高了利用链地址查找及定位区块的效率。
由于组合区块有多种表现形式,为了提高区块链的可管理性并简化组合区块的结构,本申请实施例提供了以下三种组合区块,下面分别予以介绍。
第一种组合区块:
参见图4,该图为本申请实施例二提供的第一种组合区块的结构示意图。
组合区块包括第一区块401和第二区块402;
所述第一区块401用于表示父链信息,所述第二区块402用于表示子链信息;
所述第一区块401和第二区块402均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块401的区块头中的默克尔根与所述第二区块402的区块头中的默克尔根相等;
所述第一区块401的区块头中的前一区块的哈希值为位于所述父链链尾的区块的哈希值;
需要说明的是,第一区块401中的链地址可以记录父链的地址,也可以为空。
所述第二区块402的链地址用于标识所述子链的地址;
所述第二区块402的区块头中的区块高度为0且前一区块的哈希值为0。
第一种组合区块简化为两个并列的区块:第一区块401和第二区块402,其中第一区块401与父链连接,且第一区块401中的信息用于记录该组合区块在父链上的信息;第二区块402与子链连接,且第二区块402中的信息用于记录该组合区块在子链上的信息。
第二种组合区块:
参见图5,该图为本申请实施例二提供的第二种组合区块的结构示意图。
组合区块包括一个区块头501和一个区块体502;
所述区块头501包括默克尔根、前一区块的哈希值、所述链地址和区块类型;所述区块头501中的区块高度大于0;
所述区块体502包括子链区块头和子链区块体;所述子链区块头中的区块高度为0且前一区块的哈希值为0,所述子链区块体包括交易列表;
所述区块头501中的默克尔根与所述子链区块头中的默克尔根相等;
所述区块头501中的前一区块的哈希值为所述父链的链尾区块的哈希值。
第二种组合区块通过将子链区块嵌套与父链区块的区块体502中,实现简化组合区块。第二种组合区块既与父链连接,又与子链连接。
第三种组合区块:
参见图6,该图为本申请实施例二提供的第三种组合区块的结构示意图。
组合区块包括第一区块601和第二区块602;
所述第一区块601用于表示父链信息,所述第二区块602用于表示子链信息;
所述第一区块601和第二区块602均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块601的区块头中的默克尔根与所述第二区块602的区块头中的默克尔根相等;
所述第一区块601的区块头中的前一区块的哈希值为所述父链的链尾区块的哈希值;
所述第二区块602的链地址标识所述子链的地址;
所述第二区块602的区块头中的区块高度为0且前一区块的哈希值为0;
所述第一区块601的区块体中包括用于唯一标识所述第二区块602的引用。
第二区块602的引用是指可以唯一标识第二区块602的数字或字符串。
第三种组合区块通过利用第一区块601的区块体内的第二区块602的引用将第一区块601和第二区块602构成一个组合区块,从而实现了简化组合区块。其中,第一区块601与父链连接,且第一区块601中的信息用于记录该组合区块在父链上的信息;第二区块602与子链连接,且第二区块602中的信息用于记录该组合区块在子链上的信息。
本申请实施例提供的第一种组合区块、第二种组合区块和第三种组合区块,均提高了区块链的可管理性并简化了组合区块的结构。
为了进一步扩大区块链,在生成组合区块后,父链的生产节点可以根据生成普通区块的交易请求或生成组合区块的交易请求在该组合区块的后方连接新的普通区块或组合区块;同样,子链的生产节点也可以根据生成普通区块的交易请求或生成组合区块的交易请求在该组合区块的后方连接新的普通区块或组合区块。
为了便于本领域技术人员对本申请实施例提供的生成区块链的方法的理解,下面将以在组合区块后方连接普通区块为例进行说明。
本申请实施例提供的生成区块链的方法还包括:
所述子链上的生产节点接收在所述组合区块之后建立子链上的普通区块的交易请求;根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块;
和/或,
所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
普通区块的区块体包括交易列表。
参见图7,该图为本申请实施例二提供的普通区块的结构示意图。
图7的普通区块包括区块头701和区块体702。
普通区块的区块头701包括链地址、区块类型、前一区块的哈希、默克尔根和区块高度;普通区块的区块体702包括交易列表。
本申请实施例提供的生成区块链的方法在生成组合区块后,父链或子链均可以在该组合区块后方连接区块,从而,进一步扩大了区块链,并实现了区块链的分片。
基于上述提供的一种生成区块链的方法,本申请实施例还提供了一种生成区块链的装置,下面结合附图进行详细说明。
实施例三:
参见图8,该图为本申请实施例提供的生成区块链的装置的结构示意图。
本申请实施例提供的生成区块链的装置包括:
第一接收单元801,用于接收来自父链的发起者发送的创建子链的交易请求;
第一验证单元802,用于对所述交易请求进行验证;
生成单元803,用于生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
第二验证单元804,用于对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中。
可选的,所述生成区块链的装置,还包括:
获取单元,用于获得所述父链当前包括的子链的数目;
比较单元,用于比较所述子链的数目是否小于预设阈值。
可选的,所述第二验证单元804用于对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中,具体包括:
位于所述父链的预设数目的生产节点共同对所述组合区块进行验证,当验证所述组合区块通过的生产节点占所述预设数目的生产节点的比例大于或等于预设比例时,则验证所述组合区块通过,将所述组合区块的数据更新到所有生产节点中。
可选的,所述生成区块链的装置还包括:
第二接收单元,用于接收在所述组合区块之后建立子链上的普通区块的交易请求;
第一建立单元,用于根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块。
和/或,
第三接收单元,用于所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;
第二建立单元,用于根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
本申请实施例提供的生成区块链的装置通过在父链上生成组合区块,组合区块衍生得到子链,从而构成树形结构区块链,以便于实现区块链分片。由于该装置生成的区块链中不同链之间是对等关系,因而,该区块链符合去中心原则。由于该装置生成的区块链中每条链是并行的,因而,该区块链可以无限扩张,从而提高了区块链的整体性能。另外,当该装置生成的区块链包括的链越多,则平均每条链所需的算力和存储力就越少,从而使得性能普通的节点也可以充当生产节点,进而解决了生产节点日益中心化的问题。
所述生成区块链的装置还包括存储器,上述第一接收单元801、第一验证单元802、生成单元803和第二验证单元804等均作为程序单元存储在存储器中。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述任一种生成区块链的方法。
基于上述提供的一种生成区块链的方法及生成区块链的装置,本申请实施例还提供了一种区块链。
实施例四:
本申请实施例提供的区块链包括根链和由上述任一种生成区块链的方法生成的子链。
其中,根链由生产节点根据初始化参数自动生成。
区块链包括多个组合区块和多个普通区块,其中,组合区块是父链和子链的连接点。父链或子链均可以在组合区块后方连接普通区块或其他组合区块。
本申请实施例提供的区块链呈树状结构,其中,不同链之间通过组合区块连接。由于每条链都是独立运行的,均有相应的区块、账户、合约等实体,该实体与其它链的实体是对等的,因而,不同链之间是对等的,每条链与其它链的之间并不存在依赖关系或从属关系。为保证一致性,每条链内部的操作基本是串行的,但由于每条链都是对等链且互不干扰,因此每条链都是并行的。
本申请实施例提供的区块链通过在父链上生成组合区块,组合区块衍生得到子链,从而构成树形结构区块链,以便于实现区块链分片。由于该区块链中不同链之间是对等关系,因而,该区块链符合去中心原则。由于该区块链中每条链是并行的,因而,该区块链可以无限扩张,从而提高了区块链的整体性能。另外,当该区块链包括的链越多,则平均每条链所需的算力和存储力就越少,从而使得性能普通的节点也可以充当生产节点,进而解决了生产节点日益中心化的问题。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (12)
1.一种生成区块链的方法,其特征在于,包括:
接收来自父链的发起者发送的创建子链的交易请求;
验证所述交易请求是否达到创建子链的条件,当验证通过时生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
验证所述组合区块是否合法,当验证通过时将所述组合区块的数据更新到区块链中。
2.根据权利要求1所述的生成区块链的方法,其特征在于,所述组合区块包括第一区块和第二区块;
所述第一区块用于表示父链信息,所述第二区块用于表示子链信息;
所述第一区块和第二区块均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块的区块头中的默克尔根与所述第二区块的区块头中的默克尔根相等;
所述第一区块的区块头中的前一区块的哈希值为位于所述父链链尾的区块的哈希值;
所述第二区块的链地址用于标识所述子链的地址;
所述第二区块的区块头中的区块高度为0且前一区块的哈希值为0。
3.根据权利要求1所述的生成区块链的方法,其特征在于,所述组合区块包括一个区块头和一个区块体;
所述区块头包括默克尔根、前一区块的哈希值、所述链地址和区块类型;所述区块头中的区块高度大于0;
所述区块体包括子链区块头和子链区块体;所述子链区块头中的区块高度为0且前一区块的哈希值为0,所述子链区块体包括交易列表;
所述区块头中的默克尔根与所述子链区块头中的默克尔根相等;
所述区块头中的前一区块的哈希值为所述父链的链尾区块的哈希值。
4.根据权利要求1所述的生成区块链的方法,其特征在于,所述组合区块包括第一区块和第二区块;
所述第一区块用于表示父链信息,所述第二区块用于表示子链信息;
所述第一区块和第二区块均包括对应的区块头和区块体;
所述区块头包括链地址和区块类型;
所述第一区块的区块头中的默克尔根与所述第二区块的区块头中的默克尔根相等;
所述第一区块的区块头中的前一区块的哈希值为所述父链的链尾区块的哈希值;
所述第二区块的链地址标识所述子链的地址;
所述第二区块的区块头中的区块高度为0且前一区块的哈希值为0;
所述第一区块的区块体中包括用于唯一标识所述第二区块的引用。
5.根据权利要求1-4任一项所述的生成区块链的方法,其特征在于,每个所述子链的链地址具有唯一性,且均与父链的链地址不同。
6.根据权利要求1-4任一项所述的生成区块链的方法,其特征在于,在所述生成组合区块之前,还包括:
获得所述父链当前包括的子链的数目,当所述子链的数目小于预设阈值时,再生成所述组合区块。
7.根据权利要求1-4任一项所述的生成区块链的方法,其特征在于,所述对所述组合区块进行验证,当验证通过时将所述组合区块的数据更新到区块链中,具体包括:
位于所述父链的预设数目的生产节点共同对所述组合区块进行验证,当验证所述组合区块通过的生产节点占所述预设数目的生产节点的比例大于或等于预设比例时,则验证所述组合区块通过,将所述组合区块的数据更新到所有生产节点中。
8.根据权利要求1-4任一项所述的生成区块链的方法,其特征在于,还包括:
所述子链上的生产节点接收在所述组合区块之后建立子链上的普通区块的交易请求;根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块;
和/或,
所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
9.一种生成区块链的装置,其特征在于,包括:
第一接收单元,用于接收来自父链的发起者发送的创建子链的交易请求;
第一验证单元,用于验证所述交易请求是否达到创建子链的条件;
生成单元,用于生成组合区块,所述组合区块作为所述子链的第一个区块;所述组合区块包括父链信息和子链信息,所述组合区块包括链地址和区块类型,所述链地址标识所述子链的地址,所述区块类型标识为组合区块类型;一个组合区块对应一条子链;子链是由父链上的组合区块衍生的一条新链;
第二验证单元,用于验证所述组合区块是否合法,当验证通过时将所述组合区块的数据更新到区块链中。
10.根据权利要求9所述的生成区块链的装置,其特征在于,所述生成区块链的装置,还包括:
获取单元,用于获得所述父链当前包括的子链的数目;
比较单元,用于比较所述子链的数目是否小于预设阈值。
11.根据权利要求9或10所述的生成区块链的装置,其特征在于,所述生成区块链的装置,还包括:
第二接收单元,用于接收在所述组合区块之后建立子链上的普通区块的交易请求;
第一建立单元,用于根据所述建立子链上的普通区块的交易请求在所述组合区块之后建立子链的普通区块;
和/或,
第三接收单元,用于所述父链上的生产节点接收在所述组合区块之后建立父链上的普通区块的交易请求;
第二建立单元,用于根据所述建立父链上的普通区块的交易请求在所述组合区块之后建立父链的普通区块。
12.一种计算机存储介质,其上存储有程序,其上存储有计算机程序,该程序被处理器执行时实现所述权利要求1-8任一项所述的生成区块链的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810897990.1A CN109033422B (zh) | 2018-08-08 | 2018-08-08 | 一种生成区块链的方法、装置及区块链 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810897990.1A CN109033422B (zh) | 2018-08-08 | 2018-08-08 | 一种生成区块链的方法、装置及区块链 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033422A CN109033422A (zh) | 2018-12-18 |
CN109033422B true CN109033422B (zh) | 2020-05-22 |
Family
ID=64632240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810897990.1A Expired - Fee Related CN109033422B (zh) | 2018-08-08 | 2018-08-08 | 一种生成区块链的方法、装置及区块链 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033422B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111614708B (zh) * | 2019-02-26 | 2021-06-08 | 傲为信息技术(江苏)有限公司 | 一种基于区块链的交易*** |
WO2020220251A1 (zh) * | 2019-04-30 | 2020-11-05 | 厦门特华荣商贸有限公司 | 区块链***数据处理方法和区块的生成方法 |
CN110209737B (zh) * | 2019-05-22 | 2021-02-09 | 杭州复杂美科技有限公司 | 数据上报方法、平行链创建方法、设备和存储介质 |
CN110838924B (zh) * | 2019-11-19 | 2022-04-12 | 北京沃东天骏信息技术有限公司 | 区块传输方法及装置 |
CN110933173B (zh) * | 2019-12-03 | 2022-08-09 | 上海墨珩网络科技有限公司 | 一种基于区块链技术的组网方法和装置 |
CN110958324B (zh) * | 2019-12-12 | 2023-12-19 | 度小满科技(北京)有限公司 | 一种区块链网络的数据处理方法及装置 |
CN111222991A (zh) * | 2020-01-14 | 2020-06-02 | 上海旺链信息科技有限公司 | 一种区块链之间的跨链方法及*** |
CN113377862B (zh) * | 2020-03-10 | 2024-04-02 | 本无链科技(深圳)有限公司 | 一种用于区块链子链的研发***及方法 |
CN111488398A (zh) * | 2020-05-01 | 2020-08-04 | 北京俩撇科技有限公司 | 一种基于区块链的区块链创建方法及装置 |
CN111523896B (zh) * | 2020-05-06 | 2023-05-30 | 杭州复杂美科技有限公司 | 防攻击方法、设备和存储介质 |
CN111598569B (zh) * | 2020-05-21 | 2023-09-08 | 昆明大棒客科技有限公司 | 树状区块链扩展方法及装置 |
CN111597269A (zh) * | 2020-05-21 | 2020-08-28 | 昆明大棒客科技有限公司 | 一种基于区块链的合约实现方法、装置及设备 |
CN111970370B (zh) * | 2020-08-26 | 2021-06-22 | 电子科技大学 | 基于面向通信设备体系的多层区块链协议拓展***及方法 |
CN112163950A (zh) * | 2020-09-25 | 2021-01-01 | 湖南和信安华区块链科技有限公司 | 一种方便扩展、节点资源复用的区块链链网构建方法、***及终端设备 |
CN113067904B (zh) * | 2021-06-02 | 2021-09-14 | 支付宝(杭州)信息技术有限公司 | 组建区块链子网的方法和区块链*** |
CN113067894B (zh) * | 2021-06-02 | 2021-09-24 | 支付宝(杭州)信息技术有限公司 | 节点退出区块链子网的方法 |
CN113259455B (zh) * | 2021-06-02 | 2021-09-24 | 支付宝(杭州)信息技术有限公司 | 跨子网交互方法及装置 |
CN113067772B (zh) * | 2021-06-02 | 2021-07-30 | 支付宝(杭州)信息技术有限公司 | 区块链网络间的交易转发方法 |
CN113420086A (zh) * | 2021-06-21 | 2021-09-21 | 北京众享比特科技有限公司 | 用于区块链的方法和相关产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528775A (zh) * | 2016-10-28 | 2017-03-22 | 山东明和软件有限公司 | 支持逻辑多链的私有区块链运行支撑***及其工作方法 |
CN106815330A (zh) * | 2016-12-29 | 2017-06-09 | 北京瑞卓喜投科技发展有限公司 | 沿空间维度拓展的区块链的生成方法及*** |
CN106886560A (zh) * | 2016-12-29 | 2017-06-23 | 北京瑞卓喜投科技发展有限公司 | 树形区块链的生成方法及*** |
CN106909605A (zh) * | 2016-12-29 | 2017-06-30 | 北京瑞卓喜投科技发展有限公司 | 沿横向拓展的区块链的生成方法及*** |
CN107169125A (zh) * | 2017-05-31 | 2017-09-15 | 北京小米移动软件有限公司 | 多媒体资源的投放统计数据获取方法及装置 |
CN107729471A (zh) * | 2017-10-13 | 2018-02-23 | 上海策赢网络科技有限公司 | 一种区块链及其生成方法与设备 |
CN108200210A (zh) * | 2018-02-12 | 2018-06-22 | 众安信息技术服务有限公司 | 基于区块链的链管理的方法、装置及计算机可读介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10013573B2 (en) * | 2015-12-16 | 2018-07-03 | International Business Machines Corporation | Personal ledger blockchain |
-
2018
- 2018-08-08 CN CN201810897990.1A patent/CN109033422B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528775A (zh) * | 2016-10-28 | 2017-03-22 | 山东明和软件有限公司 | 支持逻辑多链的私有区块链运行支撑***及其工作方法 |
CN106815330A (zh) * | 2016-12-29 | 2017-06-09 | 北京瑞卓喜投科技发展有限公司 | 沿空间维度拓展的区块链的生成方法及*** |
CN106886560A (zh) * | 2016-12-29 | 2017-06-23 | 北京瑞卓喜投科技发展有限公司 | 树形区块链的生成方法及*** |
CN106909605A (zh) * | 2016-12-29 | 2017-06-30 | 北京瑞卓喜投科技发展有限公司 | 沿横向拓展的区块链的生成方法及*** |
CN107169125A (zh) * | 2017-05-31 | 2017-09-15 | 北京小米移动软件有限公司 | 多媒体资源的投放统计数据获取方法及装置 |
CN107729471A (zh) * | 2017-10-13 | 2018-02-23 | 上海策赢网络科技有限公司 | 一种区块链及其生成方法与设备 |
CN108200210A (zh) * | 2018-02-12 | 2018-06-22 | 众安信息技术服务有限公司 | 基于区块链的链管理的方法、装置及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
基于区块链技术的供应链金融与中小企业融资瓶颈研究;王文杰;《长春师范大学学报》;20180731;第37卷(第7期);58-62 * |
比特币交易网络的去匿名化技术研究;邢尧;《中国优秀硕士学位论文全文数据库 经济与管理科学辑》;20180415;J159-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN109033422A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109033422B (zh) | 一种生成区块链的方法、装置及区块链 | |
JP7208989B2 (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
JP7486630B2 (ja) | ブロック認識 | |
TWI836988B (zh) | 用於維持經劃分之區塊鏈網路中區塊鏈之區塊之電腦實施之方法、系統及電腦可讀儲存媒體 | |
CN110869967B (zh) | 用于并行处理区块链交易的***和方法 | |
US10157295B2 (en) | System and method for file authenticity certification using blockchain network | |
US10630463B2 (en) | Meta block chain | |
ES2837395T3 (es) | Método y dispositivo para escribir datos de servicio en un sistema de cadena de bloques | |
CN109472572B (zh) | 基于区块链主链加并行多子链的合约*** | |
CN115549923A (zh) | 通过防篡改数据提高验证速度的网络的方法和节点 | |
KR20210128456A (ko) | 블록체인 네트워크를 통한 이전을 구현하는 컴퓨터 구현 시스템 및 방법 | |
CN109493052B (zh) | 一种基于主链加并行多子链的跨链合约*** | |
US20210157790A1 (en) | Optimizations for verification of interactions system and method using probability density functions | |
CN109410043B (zh) | 一种基于分层树状结构的区块链信息高效存储方法及装置 | |
CN110264354A (zh) | 创建区块链账户及验证区块链交易的方法及装置 | |
CN115840787B (zh) | 基于区块链的供应链数据共享方法、装置、设备及介质 | |
CN113508570B (zh) | 在区块链中节点之间共享及验证区块及电子文档的方法 | |
CN112765137B (zh) | 基于区块分布式区块链的区块同步方法及电子设备 | |
CN113132459B (zh) | 分布式存储方法、***、存储介质、信息数据处理终端 | |
KR101829731B1 (ko) | 주주명부를 등록하고 주식 소유권 이전을 기록하는 방법 및 서버 | |
CN112948847B (zh) | 基于区块链的数据共享***及数据正确性验证方法 | |
CN112765681A (zh) | 区块分布式区块链的生成方法、存储介质及电子设备 | |
Guo | Application of blockchain based on deep learning algorithm in enterprise Internet of Things system | |
CN110933155B (zh) | 一种新型区块链网络 | |
EP4318266A1 (en) | New data content packet, system and method for secure updating in distributed ledger networks |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200522 Termination date: 20210808 |
|
CF01 | Termination of patent right due to non-payment of annual fee |