一种区块链及其生成方法与设备与流程

文档序号:13804873阅读:748来源:国知局
一种区块链及其生成方法与设备与流程

本申请涉及信息技术领域,尤其涉及一种区块链及其生成的方法与设备。



背景技术:

区块链是由节点参与的p2p分布式数据库系统,它的特点是不可篡改已写入区块链的数据。基于比特币区块链的工作量证明(proof-of-work)机制,挖矿的节点始终都将最长的链视为正确链,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上,将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一条链,以防后者变成最长链。该僵局(tie)的打破,要等到下一个工作量证明被发现,而其中的一条链被证实为是较长的一条,那么在另一条分支链上工作的节点将转换阵营,开始在较长的链上工作。

侧链通常是指与区块链主链(如比特币区块链)连接的区块链,在主链发生上述长链取胜的机制时,与主链的较短的链连接的侧链上的数据也会发生回滚,因此侧链上收录的数据在主链上可被追溯或验证成为亟需解决的技术问题。



技术实现要素:

本发明提供了一种可连接侧链的区块链主链及其生成方法与设备,用以解决上述的侧链上收录的数据在主链上可被追溯或验证的技术问题。

本发明所提供的可连接多条侧链的区块链主链,其产生的当前区块包含区块头和区块体,所述区块体包含所述当前区块收录的内容数据,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而衍生出的全侧链根数据摘要。

更优的,与所述区块链主链连接的多个侧链的当前区块与所述区块链主链的当前区块同时产生。

更优的,所述区块链主链的当前区块的区块体还包含与所述区块链主链相连接的多个侧链的信息。

更优的,所述侧链的信息包含一侧链的身份标识数据和所述一侧链的当前区块所收录的内容数据的根数据摘要。

更优的,所述侧链的信息还包含所述一侧链的当前区块的前一区块的区块头数据摘要。

更优的,所述一侧链的身份标识数据是通过在所述区块链主链上发布注册内容而取得。

更优的,所述一侧链的身份标识数据为发布至所述区块链主链的去中心化域名或所述去中心化域名重定向指向的数据。

本发明还提供了一种生成可连接多条侧链的区块链主链的方法,其产生的区块链主链的当前区块包含区块头和区块体,所述区块体包含所述当前区块收录的内容数据,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而数据衍生出的全侧链根数据摘要。

本发明还提供了一种生成可连接多条侧链的区块链主链的设备,该设备包括区块体生成模块,所述区块体包含所述当前区块收录的内容数据;区块头生成模块,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而数据衍生出的全侧链根数据摘要。

本发明所提供的可连接多条侧链的区块链主链,其用于参与主链区块内容确认的数据内容——区块头上包含了侧链的全侧链数据摘要,这样与该主链的所有侧链相关的数据参与了主链的区块内容确认,不仅使得侧链上收录的内容数据可以在通常公信力较高的主链上获得存证和验证,而且在主链发生回滚操作时,与主链被回滚的区块连接的侧链区块也相应地完成回滚,以使侧链上被回滚的交易可以及时进入待定状态,等待被新的区块确认。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为比特币区块链的区块中所包含的内容的示意图;

图2为本发明所提供的一种可连接侧链的区块链主链实施例中的区块所包含的内容的示意图;

图3为本发明所提供的一种可连接侧链的区块链主链及其连接的侧链的时序图;

图4为本发明提供的一种生成可连接侧链的区块链主链的设备的结构示意图;

图5示出了梅克尔(mrekle)证明示意图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本发明一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

区块链本质上是一个对等网络(p2p)的分布式账本数据库。比特币的底层就采用了区块链的技术架构。比特币区块链是一种已有的、且被广泛公知的区块链,其区块链本身其实是一串链接的数据区块,其链接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值。每一个数据块中记录了一组采用哈希算法组成的树状交易状态信息(或数据记录),这样保证了每个区块内的交易数据不可篡改,区块链里链接的区块也不可篡改。图1示出了一种比特币区块链中包含的内容的示意图,每个区块均包含一个区块头(blockheader),区块头中可以包含如下信息:

version,版本号(图中未示出);

prevhash,即基于该区块链上前一区块的内容生成的哈希值;

timestamp,该区块产生的时间;

nonce,随机数,用于实现工作量证明的机制;

difficulty,目标难度,该区块工作量证明所需要符合的难度;

merkleroot,根哈希,该区块收录的内容数据对应的梅克尔树(merkletree)的根的哈希值。

此外,每个区块还包含区块体(blockbody),区块体中收录了该区块的内容数据,该内容数据部分中每个数据记录tx中可以用于存储交易数据,例如区块链对应的货币的交易信息等都可以记录在这些数据记录中。目前比特币区块链中可写入的数据容量非常有限,这极大限制了该区块链在存储存证数据方面的应用。这些数据记录通过merkletree的方式最终生成一个merkleroot,写入区块头,用于验证每个数据记录中内容的正确性。

基于工作量证明机制(pow)进行新区块生成的区块链,基本步骤如下:节点监听全网内容数据,通过基本合法性验证的内容数据将进行暂存;节点消耗自身算力尝试不同的随机数,对区块头的所有内容进行指定的哈希计算,并不断重复该过程直至找到合理的随机数;找到合理的随机数后,生成新区块信息,首先输入区块头信息,然后输入内容数据信息;接着对外广播新产生的区块,其他节点验证通过后,连接至区块链中,主链高度加一,然后所有节点切换至新区块后面继续进行工作量证明和区块生成。验证节点需要不断消耗算力工作,进行哈希计算,以找到期望的随机数。以上述比特币区块链为例,通过pow机制来维护区块链的整体运行及安全性。节点通过随机的散列运算,来争夺比特币区块链的记账权,防止欺诈交易,避免“双重支付”,这一过程需要消耗电力、算力来完成。因此,验证节点也被称为“矿工”,随机数计算查找过程称为“挖矿”。

当节点发现网络中有一条不基于它当前区块链的一条更长区块链时,它需要断开鲜有的区块并对区块链进行重组。大部分重组只是一个区块的重组,多发生在不同矿工几乎同时挖到合法的区块时,比如有a和b区块,有些网络节点先接收a,有些节点先接收b,其后的链条会发生分叉,假如有b区块的链条变得更长,有a区块的网络节点都会很快通过断开a、连接b来重组它的区块链,断开区块、重组区块链涉及交易记录(或数据记录)如utxo的更改,被断开的区块中交易(或数据记录)会回退到交易内存池(mempool),这个时候“回滚”记录就可以用来回滚断开区块中的交易(或数据记录)。

“侧链”概念出现之初是指与主链连接、并可完成虚拟资产在主链和侧链上互相转移的区块链,本发明中的侧链是广义的概念,泛指由于各种需求而跟主链连接的区块链。为了在主链发生回滚操作时,与主链被回滚的区块连接的侧链区块也相应地完成回滚,从而让侧链上被回滚的交易可以及时进入侧链的交易内容池,等待被新的区块确认,如图2所示,本发明提供了一种可连接多条侧链的区块链主链,其产生的当前区块包含区块头和区块体,所述区块体包含所述当前区块收录的内容数据,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而衍生出的全侧链根数据摘要。

在目前常用的区块链中,如比特币、以太坊等,区块头的内容通常用于本区块内容的验证,亦即区块头中至少应包含可验证本区块的区块体所收录的内容数据的数据,如图1所示的比特币区块内的“根哈希”(merkleroot),以太坊区块链中的txroot等根哈希值,均采用merkletree的算法,使得当前区块内的每一笔交易(的哈希值)均可通过简化支付验证得到验证。目前已知的多种区块链中,其均采用merkletree来进行数据完整性验证,特别是在分布式环境下,merkle树会大大减少数据的传输量及计算的复杂度。以图5为例,若c、d、e、f存储了一组数据块的哈希值,节点a的值通过节点c、d上的值计算得到,节点b的值通过节点e、f上的值计算得到,根哈希通过节点a、b计算得到。利用一个节点出发到达merkletree的根所经过的路径上存储的哈希值,可以构造一个merkle证明,验证范围可以是单个哈希值这样的少量数据,也可以是验证可能扩至无限规模的大量数据。某个内容数据的merkle证明,或者称为该个内容数据生成merkle根过程中的merklebranch数据,即可用来验证该内容数据在所有内容数据中的存在。

作为主链区块链,主链区块中应收录主链区块链的各节点发布至数据内存池中的内容数据,该内容数据包含所有需发布至区块链的交易或其他内容信息。在本发明中将区块头中包含的可验证当前区块收录的内容数据的数据称为“根数据摘要”,上述“数据摘要”是指使用不同的哈希算法或其他数学算法将原文衍生变换成而成的数据,上述“根数据摘要”即指根据某种规则将当前区块收录的所有内容数据通过生成“数据摘要”的方式生成可验证的最终值,上述“某种规则”包括merkletree或单向哈希链方式在内的任何数据衍生方式,在本发明中不作限定。在图2所示的区块链主链中,所述“根数据摘要”为该区块链主链的区块体内的所有内容数据tx以merkletree的规则生成的根哈希值mr。

为了在主链回滚时,与主链中被回滚的区块连接的侧链的区块也相应完成回滚,本发明所提供的区块链主链的区块头还包含从多条侧链的当前区块的根数据摘要而衍生出的全侧链根数据摘要。所述全侧链根数据摘要可以是与该主链的当前区块相连的所有侧链的当前区块的区块头内的根数据摘要根据某种规则(如merkletree或单向哈希链的方式)生成的最终值;对于不包含区块头或根数据摘要的侧链,也可以是与该主链的当前区块相连的所有侧链的当前区块内的可验证其收录的所有内容数据的数值根据某种规则(如merkletree或单向哈希链的方式)生成的最终值。因此,该全侧链根数据摘要可以配合验证侧链上的任何内容数据,在主链回滚时,该全侧链根数据摘要也会发生回滚,侧链上生成该全侧链根数据摘要的所有内容数据均会倒入数据内存池完成回滚。

需要说明的是,本发明并不对任何的数据衍生生成根数据摘要的方式作出限定,包括merkletree或单向哈希链方式在内的任何数据衍生方式以生成映射值的方式均在本发明的根数据摘要生成或衍生的范畴内。

图2示出了侧链1,2…n内与主链的当前区块相连接的侧链区块b1,b2…bn均包含区块头、区块体的结构,且其区块体内包含根哈希值mr1,mr2,……mrn,上述根哈希值mr1,mr2,……mrn均是按照merkeltree的规则从相应的每一侧链区块收录的内容数据对应的哈希值逐步生成的,即mr1为侧链1的当前区块所收录的所有内容数据根据merkeltree规则生成的根哈希值,mr2为侧链2的当前区块所收录的所有内容数据根据merkeltree规则生成的根哈希值,依次类推。全侧链根哈希值cmr则是按照merkeltree的规则从根哈希值mr1,mr2,……mrn生成的,并被记录在主链的区块头中,与主链区块头中的prevhash、timestamp、根哈希值merkleroot、随机数nonce等一起,进行pow计算,参与主链的工作量证明及主链的内容验证。通过上述的数学衍生算法,将每个侧链的当前区块内的每一笔内容数据均和全侧链根哈希值cmr联系起来,使得全侧链根哈希值cmr可用来验证上述每一笔内容数据在所有内容数据中的存在。如果该主链的当前区块b发生回滚,则与其通讯连接的每条侧链上的内容数据均可相应的发生回滚。如图1中的比特币区块链的结构所示,区块头的内容通常用于产生新区块的工作量证明验证及相应新区块内收录的内容数据的验证(如merkel证明方式),因此为使全侧链根哈希值cmr能够验证各侧链的当前区块所收录的所有内容数据,应将该全侧链根哈希值cmr记入主链的区块头中并参与主链的工作量证明验证。

在本实施例中,侧链中的区块与主链中的区块同时产生,这样的机制可保证侧链中所有的数据均在全侧链根哈希值cmr的验证下完成收录或回滚。当然通过相应的共识机制的设置,侧链中的区块与主链中的区块也可以不完全同时产生,即侧链产生新区块的频率大于主链或小于主链,在这种情况下,主链的区块头内收录的全侧链根哈希值cmr应为当前时刻下所有侧链的最新区块的根数据摘要(如根哈希值mr1,mr2,……mrn)所衍生而成的,在主链的某区块发生回滚时,与该区块相连接的侧链也发生相应的回滚。图3示意了与主链相连的两侧链的区块时序图,侧链1中新区块的产生频率大于主链,侧链2中新区块的产生频率小于主链。值得注意的是,若主链上区块3发生回滚,与该区块3连接的侧链区块15及22应发生相应的回滚,且侧链1中与上一区块相连的区块13之后产生的区块14也应发生相应的回滚。

图2所示的实施例中,全侧链根数据摘要cmr是由各个侧链的根哈希值mr1、mr2…mrn数据衍生生成的,本领域的技术人员熟知,这并非是生成全侧链根数据摘要的唯一方式,任何由与侧链所收录的内容数据相关的数据摘要以任何方式衍生生成全侧链根数据摘要的方式,(如利用侧链的区块头哈希值来生成全侧链根数据摘要)且无论各个侧链是否选用同一中数据来衍生生成全侧链根数据摘要,都在本发明所保护的范围内。

更优地,为了在主链上构建更加清晰的侧链区块的链接关系,主链区块体内除了收录各侧链的当前区块的根数据摘要(如根哈希值mr1,mr2,……mrn),还可以收录上述各侧链的当前区块的上一区块的区块头数据摘要(图2中未示出),以在主链上建立起清晰的侧链区块连接关系,并在发生区块回滚时准确的找出被回滚的侧链区块的上一区块。

图2所示的主链的区块体中收录了与主链的当前区块相连接的各个侧链的相关信息,如侧链的根数据摘要(如根哈希值mr1,mr2,…mrn),除此之外,该侧链的相关信息还可以包括标识各个侧链的身份标识数据,如图2中所示的no.1,no.2,…no.n,该身份标识数据最好为在主链中可唯一标识侧链身份的数据,并被记录在相应的侧链上,以区分标识这些侧链。关于上述侧链身份标识的获取方法,可为通过在所述区块链主链上发布注册内容而取得。类似于在区块链上采用固定的格式发布交易,区块链主链设计者可以在区块链上构建注册侧链身份标识所用的格式内容,由主链的节点用户进行填写、电子签名并提交至区块链系统,从生成到在网络中传播,再到通过工作量证明、整个网络节点验证,最终记录到区块链主链。区块链主链可以通过构建可信公钥列表来授权具有可信公钥身份的用户方可进行上述侧链身份标识注册操作,上述可信公钥列表的构建可有多种实现方式,如在区块链主链底层设计中加入可信公钥白名单,在用户填写注册信息并电子签名后,判断验签该电子签名所用的公钥是否列于上述可信白名单中;还可以在区块链主链中加入授权公钥(如ca认证机构的公钥、或区块链主链运营方的公钥),用该授权公钥签名认证具有侧链身份注册资格的公钥或公钥证书。

关于上述注册侧链身份标识所用的格式内容,具体可以采用如在区块链中注册去中心化域名的形式,用该去中心化域名或该去中心化域名所指向的数据标识相应侧链的身份。该去中心化域名寻址的生成方式为用户首先在区块链主链上申请域名,例如发布一个区块链域名注册信息,按协议格式注册域名,在区块链内,去中心化域名通常是具有唯一性的,例如注册一个域名为shcy.bit,在该域名信息经过从生成到在网络中传播,再到通过工作量证明、整个网络节点验证,最终记录到区块链主链从而被收录后,该用户可接着向区块链主链发布该域名重定向,即发布该域名关联指向的其他信息,如侧链身份标识信息a。后续,用户通过该域名shcy.bit最终指向侧链身份标识信息a而从中获取侧链身份标识信息a。由于去中心化域名具有唯一性,因而在区块链主链中使用该去中心化域名或该去中心化域名重定向所指向的数据信息均可唯一性的标识侧链的身份。

基于同一发明构思,本发明还提供了一种生成可连接多条侧链的区块链主链的方法,其产生的区块链主链的当前区块包含区块头和区块体,所述区块体包含所述当前区块收录的内容数据,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而数据衍生出的全侧链根数据摘要。

图2示出了侧链1,2…n内与主链的当前区块相连接的侧链区块b1,b2…bn均包含区块头、区块体的结构,且其区块体内包含根哈希值mr1,mr2,……mrn,上述根哈希值mr1,mr2,……mrn均是按照merkeltree的规则从相应的每一侧链区块收录的内容数据对应的哈希值逐步生成的,即mr1为侧链1的当前区块所收录的所有内容数据根据merkeltree规则生成的根哈希值,mr2为侧链2的当前区块所收录的所有内容数据根据merkeltree规则生成的根哈希值,依次类推。全侧链根哈希值cmr则是按照merkeltree的规则从根哈希值mr1,mr2,……mrn生成的,并被记录在主链的区块头中,与主链区块头中的prevhash、timestamp、根哈希值merkleroot、随机数nonce等一起,进行pow计算,参与主链的工作量证明及主链的内容验证。通过上述的数学衍生算法,将每个侧链的当前区块内的每一笔内容数据均和全侧链根哈希值cmr联系起来,使得全侧链根哈希值cmr可用来验证上述每一笔内容数据在所有内容数据中的存在。如果该主链的当前区块b发生回滚,则与其通讯连接的每条侧链上的内容数据均可相应的发生回滚。如图1中的比特币区块链的结构所示,区块头的内容通常用于产生新区块的工作量证明验证及相应新区块内收录的内容数据的验证(如merkel证明方式),因此为使全侧链根哈希值cmr能够验证各侧链的当前区块所收录的所有内容数据,应将该全侧链根哈希值cmr记入主链的区块头中并参与主链的工作量证明验证。

在本实施例中,侧链中的区块与主链中的区块同时产生,这样的机制可保证侧链中所有的数据均在全侧链根哈希值cmr的验证下完成收录或回滚。当然通过相应的共识机制的设置,侧链中的区块与主链中的区块也可以不完全同时产生,即侧链产生新区块的频率大于主链或小于主链,在这种情况下,主链的区块头内收录的全侧链根哈希值cmr应为当前时刻下所有侧链的最新区块的根数据摘要(如根哈希值mr1,mr2,……mrn)所衍生而成的,在主链的某区块发生回滚时,与该区块相连接的侧链也发生相应的回滚。图3示意了与主链相连的两侧链的区块时序图,侧链1中新区块的产生频率大于主链,侧链2中新区块的产生频率小于主链。值得注意的是,若主链上区块3发生回滚,与该区块3连接的侧链区块15及22应发生相应的回滚,且侧链1中与上一区块相连的区块13之后产生的区块14也应发生相应的回滚。

图2所示的实施例中,全侧链根数据摘要cmr是由各个侧链的根哈希值mr1、mr2…mrn数据衍生生成的,本领域的技术人员熟知,这并非是生成全侧链根数据摘要的唯一方式,任何由与侧链所收录的内容数据相关的数据摘要以任何方式衍生生成全侧链根数据摘要的方式,(如利用侧链的区块头哈希值来生成全侧链根数据摘要)且无论各个侧链是否选用同一中数据来衍生生成全侧链根数据摘要,都在本发明所保护的范围内。

基于同一发明构思,本发明还提供了一种生成可连接多条侧链的区块链主链的设备,该设备对应的方法是前述实施例中生成区块链主链的方法,该设备包括区块体生成模块,所述区块体包含所述当前区块收录的内容数据;区块头生成模块,所述区块头包含所述内容数据的根数据摘要,所述区块头还包含从所述多条侧链的当前区块的根数据摘要而数据衍生出的全侧链根数据摘要。该设备对应的方法是前述实施例中生成区块链的方法,并且其解决问题的原理与该方法相似,此处不再重复说明。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个如图4所示的设备,该设备包括用于存储计算机程序指令的存储器810和用于执行程序指令的处理器820,其中,当该计算机程序指令被该处理器执行时,触发该设备执行基于前述多个实施例中的方法和/或技术方案。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1