CN109829076A - 一种生成区块链的方法及设备 - Google Patents
一种生成区块链的方法及设备 Download PDFInfo
- Publication number
- CN109829076A CN109829076A CN201710726249.4A CN201710726249A CN109829076A CN 109829076 A CN109829076 A CN 109829076A CN 201710726249 A CN201710726249 A CN 201710726249A CN 109829076 A CN109829076 A CN 109829076A
- Authority
- CN
- China
- Prior art keywords
- block
- data
- chain
- proof
- cryptographic hash
- 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.)
- Granted
Links
Abstract
本申请提供了一种生成区块链的方案,该方案可以获取矿池计算出的共享的工作量证明数据,并基于工作量证明数据创建一条或多条区块链上的最新区块,任一区块链上的最新区块的内容包括:符合最新区块的难度的工作量证明数据;最新区块收录的所有内容数据;所有内容数据或所有内容数据和附加数据生成的根哈希值;使得根哈希值可被矿池缓存区中的数据验证的可验数据,通过上述内容可以使得区块链上各个区块的内容可以追溯验证,且无法篡改,同时各条区块链能够共享矿池的算力,通过接入矿池可以获取大量可供区块链使用的工作量证明数据,保证维持多条区块链的算力需求,从而能够提供较大的存储空间,实现大量数据的存储。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种生成区块链的方法及设备。
背景技术
区块链是由节点参与的分布式数据库系统,它的特点是不可篡改已写入区块链的数据。它是比特币的一个重要概念,完整比特币区块链的副本,记录了其代币(token)的每一笔交易。通过这些信息,我们可以找到每一个地址,在历史上任何一点所拥有的价值。
基于比特币区块链的工作量证明(proof-of-work)机制,挖矿的节点始终都将最长的链视为正确链,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上,将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一条链,以防后者变成最长链。该僵局(tie)的打破,要等到下一个工作量证明被发现,而其中的一条链被证实为是较长的一条,那么在另一条分支链上工作的节点将转换阵营,开始在较长的链上工作。
由于比特币区块链的工作量证明机制会浪费大量的算力,并且每个区块的容量有限,区块生成的速度稳定,因此无法利用比特币区块链中存储大量数据。
申请内容
本申请的一个目的是提供一种生成区块链的方法及设备,用以通过共享已有矿池算力的方式,生成多条可以验证的区块链实现大量数据的存储。
为实现上述目的,本申请提供了一种共享工作量证明算力生成区块链的方法,该方法用于创建一条或多条区块链上的区块,该方法包括:
获取矿池计算出的共享的工作量证明数据,并基于所述工作量证明数据创建一条或多条区块链上的最新区块,其中,所述任一区块链上的最新区块的内容包括:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
进一步地,所述附加数据包括当前时间、所述最新区块的难度、本区块链上前一区块的衍生数据。
进一步地,所述可验数据包括:
所述最新区块的第一哈希值在生成第二哈希值时的证明信息,所述第一哈希值是所述最新区块的根哈希值或基于所述根哈希值衍生得到的哈希值;和
所述第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息,所述第二哈希值是由当前时刻所述共享工作量证明算力的多条区块链的最新区块的第一哈希值进行哈希衍生得到,并被发布至所述矿池缓存区。
进一步地,该方法还用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。
进一步地,所述母链为比特币区块链,工作量证明数据的数据结构为为比特币区块链的区块头数据结构,所述证明信息包括数据衍生过程中的merkle branch数据。
进一步地,进行哈希演算的方法包括Merkletree方法或单向哈希方法。
基于本申请的另一方面,还提供了一种共享工作量证明算力生成区块链的设备,该设备用于创建一条或多条区块链上的区块,其特征在于,该设备包括:
共享算力获取模块,用于获取矿池计算出的共享的工作量证明数据,
区块生成模块,用于基于所述工作量证明数据创建一条或多条区块链上的最新区块,其中,所述任一区块链上的最新区块的内容包括:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
进一步地,所述附加数据包括当前时间、所述最新区块的难度、本区块链上前一区块的衍生数据。
进一步地,所述可验数据包括:
所述最新区块的第一哈希值在生成第二哈希值时的证明信息,所述第一哈希值是所述最新区块的根哈希值或基于所述根哈希值衍生得到的哈希值;和
所述第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息,所述第二哈希值是由当前时刻所述共享工作量证明算力的多条区块链的最新区块的第一哈希值进行哈希衍生得到,并被发布至所述矿池缓存区。
进一步地,所述区块生成模块,还用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。
进一步地,所述母链为比特币区块链,工作量证明数据的数据结构为为比特币区块链的区块头数据结构,所述证明信息包括数据衍生过程中的merkle branch数据。
进一步地,进行哈希演算的设备包括Merkletree设备或单向哈希设备。
与现有技术相比,本申请提供的方案中,可以获取矿池计算出的共享的工作量证明数据,当工作量证明数据符合某条共生区块链上最新区块的难度时,可以基于所述工作量证明数据创建该条区块链上的最新区块,所述任一共生区块链上的最新区块的内容包括:符合所述最新区块的难度的工作量证明数据;所述最新区块收录的所有内容数据;所述所有内容数据或所有内容数据和附加数据生成的根哈希值;使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据,通过上述内容可以使得区块链上各个区块的内容可以追溯验证,且无法篡改,同时各条区块链能够共享矿池的算力,通过接入矿池可以获取大量可供区块链使用的工作量证明数据,保证维持多条区块链的算力需求,从而能够提供较大的存储空间,实现大量数据的存储。
提供上述共享的工作量证明算力的矿池通常选用已有的公信力较高的区块链(即母链)的矿池,且共生区块链的难度设定通常也低于比特币区块链的难度,这样借用已有的矿池生成共享算力的共生区块链,既节约了生成共生区块链挖矿所需耗费的资源,在比特币新区块生成时,共生区块链的新区块根哈希值又可被比特币的新区块收录的内容数据验证,从而增加共生区块链的内容数据的公信力。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为一种区块链中包含的内容的示意图;
图2为对图1进行简化后的示意图;
图3为本申请实施例中在多条共生区块链上生成最新区块的示意图;
图4为本申请实施例中母链和共生区块链产生区块的时序关系图;
图5为本申请实施例中由第一哈希值生成第二哈希值的一种方式的示意图;
图6为本申请实施例中由第一哈希值生成第二哈希值的另一种方式的示意图;
图7示出了基于所述工作量证明数据生成共生区块链上的最新区块时相关信息在产生、计算以及交互的关系示意图;
图8为本申请实施例提供的一种生成区块链的设备的结构示意图;
图9示出了梅克尔(Mrekle)证明示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
比特币区块链是一种已有的、且被广泛公知的区块链,图1示出了一种比特币区块链中包含的内容的示意图,每个区块均包含一个区块头(block header),区块头中可以包含如下信息:
version,版本号;
prev hash,即基于该区块链上前一区块的内容生成的哈希值;
timestamp,该区块产生的时间;
Nonce,随机数,用于实现工作量证明的机制;
difficulty,目标难度,该区块工作量证明所需要符合的难度;
Merkle Root,根哈希,该区块收录的内容数据对应的梅克尔树(Merkle Tree)的根的哈希值。
此外,每个区块还包含内容数据部分,该内容数据部分中每个数据块Tx中可以用于存储数据,例如区块链对应的货币的交易信息等都可以记录在这些数据块中。目前比特币区块链中可写入的数据容量非常有限,这极大限制了该区块链在存储存证数据方面的应用。这些数据块中通过Merkle Tree的方式最终生成一个Merkle Root,用于验证每个数据块中内容的正确性。对图1进行简化后,可以得到如图2所示的示意图,能够用于说明区块链的工作量证明机制。
基于工作量证明机制(PoW)进行新区块生成的区块链,基本步骤如下:节点监听全网数据记录,通过基本合法性验证的数据记录将进行暂存;节点消耗自身算力尝试不同的随机数,进行指定的哈希计算,并不断重复该过程直至找到合理的随机数;找到合理的随机数后,生成新区块信息,首先输入区块头信息,然后输入数据记录信息;接着对外广播新产生的区块,其他节点验证通过后,连接至区块链中,主链高度加一,然后所有节点切换至新区块后面继续进行工作量证明和区块生成。验证节点需要不断消耗算力工作,进行哈希计算,以找到期望的随机数。以上述比特币区块链为例,通过PoW机制来维护区块链的整体运行及安全性。节点通过随机的散列运算,来争夺比特币区块链的记账权,防止欺诈交易,避免“双重支付”,这一过程需要消耗电力、算力来完成。因此,验证节点也被称为“矿工”,随机数计算查找过程称为“挖矿”。
PoW机制存在两方面明显的缺陷:
(1)算力的消耗与浪费。在PoW机制中,尽管区块链节点是用来帮区块链进行分布式数据记录的,但是它们实际所做的大部分工作是寻找正确的随机数,而与数据记录无关,用来寻找随机数的能量和资源将永远地消失,这显而易见是一种浪费。
(2)算力集中化凸显。PoW机制自然地导致了算力集中问题,由于一个普通的个体或者几十、几百台规模的矿机目前都极难挖到区块了,因此大家必须联合起来“挖矿”,这就诞生了算力集中的地方——“矿池”。其中最著名的是比特币的Ghash矿池,它因为数次接近甚至达到了50%比特币的算力,从而引起了比特币社区的广泛担忧。
为增加可写入区块链的数据体量,避免资源的浪费和算力集中,本申请实施例提供了一种共享工作量证明算力生成区块链的方法,该方法用于创建一条或多条区块链上的区块,该方法在实施时,首先从共享的矿池中获取符合待生成的新区块难度的工作量证明数据,然后基于所述工作量证明数据创建一条或多条区块链上的最新区块,使得这些区块链上的区块是可以验证且无法被篡改的,由此,所述任一区块链上的最新区块包括以下内容:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
该一条或多条共享算力的区块链被称为共生区块链,共生区块链的最新区块收录的所有内容数据是指最新区块收录的内容数据,具体可包含交易数据或智能合约或触发智能合约的指令等数据,通常由获得新区块记账权的矿工进行收录。所述附加数据包括了当前时间、所述最新区块的难度或者本区块链上前一区块的衍生数据中的一种或者多种,实际场景中本区块链上前一区块的衍生数据可以是前一区块内容的哈希值prev hash,或者也可以是前一区块的内容通过其它数学方法计算得到的计算值。
在上述方案中,所述矿池可以专用于提供本方案所维持的一条或者多条区块链上创建区块所需要的算力,也可以是一个用于提供已有区块链算力的矿池,例如比特币区块链的矿池,该区块链即是为本方案的多条共享工作量证明算力的共生区块链提供工作量证明算力的母链。由此,本申请实施例提供的另一种共享工作量证明算力生成区块链的方法中,矿池计算出的共享的工作量证明数据在符合母链最新区块的难度时,还可以用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。在此种场景下,除母链之外的其它区块链可以定义为共生区块链。例如,母链可以采用比特币区块链,此时共生区块链的区块内的工作量证明数据的数据结构即为比特币区块链的区块头数据结构。
共生区块链的矿工与母链的矿工相互通讯,通过接入矿池,共生区块链的矿工能够从矿池中获取大量母链挖矿过程中产生的工作量证明数据,在所连接的矿池提供的工作量证明满足共生区块链的难度要求时,共生区块链上新的区块可以产生,该工作量证明数据被收录至新的区块,在本发明中,为了节约母链区块的容量占用,所述多条共生区块链的区块的所有内容数据并不直接发送至母链的矿池缓存区,而是根据特定的对应关系以数据缩小的形式发布至母链的数据缓存区,此时的对应关系及该缩小后的数据在母链数据缓存区中的被验证的可验数据应写入该共生区块链的新的区块,以使该新的区块内所收录的所有交易或其他内容数据不仅可以在自身的区块链内验证,并在母链区块的难度被满足时生成的新区块内得到验证。实际应用中,共生区块链可以提供较大的存储空间,在共生区块链中实现大量数据的存储。
母链的矿工在挖矿过程中会不断尝试随机数Nonce,并结合区块的其它内容(例如在比特币区块链中的区块头信息,包括prev hash、version number、timestamp、difficulty、即时数据的Merkle Root)进行hash计算,使得hash计算的结果符合母链目标难度的hash值。在该过程中,任一区块的区块头(block header)对应的信息可以认为可以衡量该矿机参与母链工作的证明,即工作量证明数据。当然,在本申请中利用比特币区块链的区块头仅仅是一种可以作为工作量证明数据的举例,实际场景中任意可以用来衡量该矿机参与母链工作的证明信息,均可以作为一种可行的工作量证明数据。
同时,用于生成共生区块链的工作量证明数据与母链的目标难度无关,仅需要符合共生区块链自身共识的难度即可,例如可以低于母链的目标难度,从而加快该共生区块链区块的平均产生速度,亦即,通过接入矿池,从矿池中获取符合共生区块链的目标难度的工作量证明数据,通常在母链产生一个新的区块之前,共生区块链可以产生多个区块。此外,多条共生区块链可以同时共享借助一个母链的算力,且每条共生区块链对应的目标难度均可以不同,一般情况下目标难度较低的共生区块链产生新区块的平均速度更快,且为了降低该多条共生区块链分别向母链提交各自的交易信息所对应的可验证数据所占据的母链区块的容量,可将该多条共生区块链新生成的区块内所有的交易信息先进行可验证的数据演算,并将最终的演算结果上传入母链的数据缓存区,以降低对母链容量的占用。
目前已知的多种区块链中,其均采用Merkle tree来进行数据完整性验证,特别是在分布式环境下,Merkle树会大大减少数据的传输量及计算的复杂度。以图9为例,若C、D、E、F存储了一组数据块的哈希值,节点A的值通过节点C、D上的值计算得到,节点B的值通过节点E、F上的值计算得到,根哈希通过节点A、B计算得到。利用一个节点出发到达Merkletree的根所经过的路径上存储的哈希值,可以构造一个Merkle证明,验证范围可以式单个哈希值这样的少量数据,也可以式验证可能扩至无限规模的大量数据。某个内容数据的merkle证明,或者称为该个内容数据生成Merkle根过程中的Merkle branch数据,即可用来验证该内容数据在所有内容数据中的存在。
需要说明的是,本发明并不对任何的数据衍生生成目标哈希的方式作出限定,包括Merkle tree或单向哈希链方式在内的任何数据衍生方式均在本发明的数据生成或衍生的范畴内。
在本申请的一种实施例中,所述可验数据包括:本区块链的第一哈希值在生成第二哈希值时的证明信息和第二哈希值被发布至所述共享算力的矿池缓存区、作为待收录的内容数据时可被所有待收录的内容数据验证的证明信息。
其中,所述第一哈希值是基于当前时刻本区块链的最新区块的根哈希值得到,记为mm hash。例如当前时刻本区块链的最新区块的根哈希值记为MR,在确定第一哈希值时可以直接使用该MR作为mm hash,也可以将MR进行哈希演算得到mm hash,或者还可以将本区块链上前一区块的衍生数据和MR结合后,共同进行哈希演算得到mm hash。
而所述第二哈希值是由当前时刻所有多条共生区块链的最新区块的第一哈希值进行哈希演算得到,记为mr。例如本方案通过共享算力的方式维持了6条区块链,6条区块链各自的最新区块对应第一哈希值分别为mm hash1~6,则通过该6个第一哈希值进行哈希演算可以得到第二哈希值mr。在实际场景中,本区块链的第一哈希值在生成第二哈希值的方法可以为Merkle tree哈希法,此时的任一第一哈希值生成第二哈希值的证明信息即为该第一哈希值在生成第二哈希值过程中的所有merkle branch(梅克尔树的分支信息),即基于多个区块链上最新区块的mm hash生成第二哈希值(梅克尔树根哈希值)时,本区块链的最新区块的mm hash的梅克尔树的分支信息。
该第二哈希值在计算得到后会被发布至共享的矿池缓存区。在假设存在母链的情况下,若最新得到的工作量证明数据符合母链上最新区块的难度,则母链的矿工也会基于该工作量证明数据创建母链的最新区块,此时第二哈希值mr在被发布至共享的矿池缓存区后,会作为待收录的内容数据写入到母链的最新区块中。
在实际场景中,第二哈希值被发布至所述共享的矿池缓存区,作为待收录的内容数据时可被所有待收录的内容数据验证的证明信息也可以是基于该时刻共享的矿池缓存区中所有内容数据衍生得到的merkle root过程中的merkle branch(梅克尔树的分支信息),即mr作为内容数据写入母链时的merkle branch。若不存在母链,或该时刻母链新区块的难度未被满足,共享算力的矿池也会将mr作为内容数据、在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息(即上述Merkle branch数据)使得使得所述根哈希值可被所述矿池缓存区中的数据验证。本申请实施例中,在基于所述工作量证明数据生成共生区块链上的区块时,可以基于多个工作量证明数据,生成多条区块链上的最新区块。例如,如图3所示,假设本申请实施例中维持2条区块链,该两条区块链分别从矿池中获取2个工作量证明数据,分别用于生成这两条共生区块链1~2的一个新区块(block1和block 2),只要保证2个工作量证明数据分别符合这2条共生区块链的目标难度即可。该多条共生区块链可以设置一个共同接口与矿池联系,以方便数据的统一传输和分配。
若所述矿池为母链的矿池,则前述两条区块链1、2可以记为共生区块链,以区分于母链。为了实现母链的算力共享,且为了使得共生区块链的区块内容在公信力较高的母链上得到验证,会将共生区块链上新产生区块的内容进行处理后,即将上述共生区块链的最新区块的根哈希进行数据演算后,写入到母链上待生成的最新区块的缓存区中,并将上述可验证的数据演算在母链中的验证过程所需的数据写入到该共生区块链产生的新区块内,使得共生区块链上新产生区块的内容与母链上待生成的最新区块存在一定的验证对应关系。在本申请的一种实施例中,共生区块链上一个新产生区块的内容,包括:
该共生区块链上前一区块的哈希(prev hash),例如图3中包含2条共生区块链,其中新产生的区块为block 1和block2,共生区块链1中的block1的prev hash,即为该共生区块链1中前一区块block 0的内容的hash值;
本区块中所有内容数据的根哈希值(Merkle Root),基于区块中收录的内容数据生成;
符合共生区块链的最新区块的目标难度的工作量证明数据,本申请中可以是母链的区块头结构数据;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。该可验数据可以具体包含本区块的第一哈希值在生成第二哈希值时的证明信息merklebranch,以及第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息即merkle branch。例如,第一哈希值可以基于共生区块链的当前区块的中所有内容数据或者所有内容数据和附加数据的根哈希生成,如对该根哈希进行哈希计算,也可即为该根哈希,申请实施例中第一哈希值可以记为mm hash。
为增加数据存储量,共生区块链的平均难度通常低于公信力较高的母链的平均难度,若在该时刻共享的矿池中的工作量证明使得母链新区块的难度被满足,本领域的技术人员熟知,难度较低的共生区块链的新区块的难度必被满足,则如图3所示,在该时刻母链与两条共生区块链均产生其最新区块,例如图3中与母链上生成的最新区块对应新产生的区块为block1和block2,两者的对应的第一哈希值为mm hash1和mm hash2,则可以基于mmhash1和mm hash2计算出第二哈希值,本申请实施例中记为mr。该第二哈希值会被发布至所述矿池缓存区,若存在母链,该第二哈希值会作为待收录的内容数据被写入母链中,并将此时该mr在母链最新区块内被验证的数据写入到block 1和block 2中,若母链中收录的所有内容数据采用Merkle tree的方式得到其根哈希值,则上述被验证的数据即为mr在生成母链所有内容数据的根哈希值过程中的merkle branch。此时即建立了母链和共生区块链之间的对应关系,使得共生区块链中的收录的数据不仅可以在自身的区块链中被验证,其在母链新的区块产生时刻产生的新的共生区块链的区块内的数据还可以基于此时母链新生成的区块得到验证。
在本申请的另一实施例中,也可以不生成第二哈希值,而是直接将共生区块链每个最新区块的第一哈希值作为写入母链缓存区的数据内容,并且将这些第一哈希值写入到母链上待生成的最新区块的数据块中时的证明信息作为作为与母链上待生成的最新区块对应的可验数据。但是,在此种方式中,由于向母链中写入数据内容的成本较高,将多个第一哈希值进行处理生成的第二哈希值再写入母链的情况下,写入母链的数据量明显小于直接写所有的第一哈希值,因此可以节约母链的空间,降低写入成本。
在实际场景中,根据产生第一哈希值、第二哈希值和共享算力的矿池中所有内容数据的根哈希值的方式不同,证明信息也可以是不同的内容,可以是梅克尔树的分支信息(Merkle Branch),也可以是其它信息。例如第二哈希值可以采用梅克尔树的方式生成,那么本区块的第一哈希值在生成第二哈希值时的证明信息即为第一哈希值对应的梅克尔树分支信息,如图5所示,mm hash1在生成mr时的证明信息为[mm hash2,hash34,hash5678]。此外,也可以采用单向哈希方法,即直接将多个第一哈希值叠加后直接进行一次哈希计算,得到第二哈希值,那么此时证明信息可以是除本区块之外其它所有区块的第一哈希值,如图6所示,hash1在生成mr时的证明信息为[mm hash2,mm hash3,mm hash4,mm hash5,mmhash6,mm hash7,mm hash8]。
图7示出了基于所述工作量证明数据生成共生区块链上的最新区块时相关信息在产生、计算以及交互的关系示意图,具体如下:
S1,矿池在挖矿(尝试计算满足母链的最新区块难度的工作量证明)时,会尝试随机数以生成不同的工作量证明数据。
S2,此时矿池计算出工作量证明数据只要满足某一共生区块链最新区块的目标难度,都可以用来产生共生区块链的最新区块。
S3,对于一条共生区块链,在获取到符合其目标难度的工作量证明数据时,可以基于本区块收录的所有内容数据或者所有内容数据和附加数据,确定本区块中数据块的根哈希值。
S4,至少基于本区块中数据块的根哈希生成所述第一哈希值mm hash,确定本区块的第一哈希值在生成第二哈希值时的证明信息。
S5,基于当前时刻所有共生区块链的最新区块的第一哈希值生成第二哈希值mr,向当前母链的矿池缓存区发布该第二哈希值。
S6,矿工在打包母链的矿池缓存区的所有内容数据以期计算出符合母链上的最新区块的难度时,将第二哈希值作为区块需要收录的的内容数据,由此可以确定第二哈希值在当前时刻母链的矿池缓存区中的所有内容数据生成其根哈希过程中的证明信息(例如mr在母链区块中生成根哈希的MB)。当矿池成功计算出母链上的最新区块并发布时,则完成了mr写入到母链区块中的工作,由此使得共生区块链中收录的所有内容数据与mm hash相关,而mm hash与mr相关,并且最终写入到母链的区块中,而mr在母链的最新区块中对应的证明信息存在于共生区块链中,由此基于共享母链的算力,保证共生区块链中的内容无法被篡改。
图4示出了母链和共生区块链产生区块的时序关系图,横轴表示时间,其中,共生区块链L1为生成最新区块的频率最高的共生区块链,该方案中会在时间节点t1、t2、t3时基于当前时刻下共生区块链L1、L2和L3中最新区块的mm hash生成mr,并将mr发布至矿池缓存区。
例如,在时间节点t1时,矿池中计算出的工作量证明数据符合所有区块链最新区块的难度,则母链以及三条共生链都会创建最新区块,即母链上的block100、L1的block1、L2的block4和L3的block6,此时,基于block1的mm hash1、block4的mm hash4和block6的mmhash 6,计算出mr146,提交至矿池缓存区,使得矿工可以将mr146作为内容数据写入到母链的最新区块block100中。而mr146在作为block100的内容数据时,其对应的可被验证的证明信息会保存在block1、block4和block6中,此外block1、block4和block6还分别保存了如下内容:mm hash1、mm hash4和mm hash6在生成mr146过程中的证明信息,参与母链工作量证明的工作量证明数据,各个最新区块需要写入的所有内容数据,各个最新区块中所有内容数据或所有内容数据和附加数据生成的根哈希值。
在时间节点t2时,矿池中计算出的工作量证明数据仅符合L1和L2的最新区块的难度,此时,共生区块链L1和L2会基于该工作量证明数据创建各自的最新区块,block2和block5。此时,基于block2的mm hash2、block 5的mm hash 5和block6的mm hash6,计算出mr256,提交至矿池缓存区,由于此时没有创建母链上的最新区块,mr256无法写入到母链中,但是仍然将mr256在母链的矿池数据缓存区中瞬时生成根哈希过程的证明信息写入block2和block5中。此外block2和block5还分别记录了mm hash2和mm hash5在生成mr256过程中的证明信息,参与母链工作量证明的工作量证明数据,各个最新区块需要写入的所有内容数据,各个最新区块中所有内容数据或所有内容数据和附加数据生成的根哈希值。
而在时间节点t3时,矿池中计算出的工作量证明数据符合母链、L1和L3的最新区块的难度,由此母链以及共生区块链L1、L3都会创建最新区块,即母链上的block200、L1的block3和L3的block7。此时,基于block3的mm hash3、block5的mm hash5和block7的mmhash7计算出,计算出mr357,提交至矿池缓存区。相应地,block3和block7中也会保存与前述情况中类似的信息。使得矿工可以将mr359作为内容数据写入到母链的最新区块block200中。而mr357在作为block200的内容数据时,其被此时block200的所有内容数据验证的证明信息会保存在block3和block7中,此外block3和block7还分别保存了如下内容:mm hash3和mm hash7在生成mr357过程中的证明信息,参与母链工作量证明的工作量证明数据,各个最新区块需要写入的所有内容数据,各个最新区块中所有内容数据或所有内容数据和附加数据生成的根哈希值。
基于同一发明构思,本申请实施例中还提供了生成区块链的设备,该设备对应的方法是前述实施例中生成区块链的方法,并且其解决问题的原理与该方法相似,此处不再重复说明。
本申请实施例提供了一种共享工作量证明算力生成区块链的设备,该设备用于创建一条或多条区块链上的区块,该设备包括共享算力获取模块和区块生成模块,其中,共享算力获取模块用于获取矿池计算出的共享的工作量证明数据,区块生成模块用于基于所述工作量证明数据创建一条或多条区块链上的最新区块,其中,所述任一区块链上的最新区块的内容包括:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
进一步地,所述附加数据包括当前时间、所述最新区块的难度、本区块链上前一区块的衍生数据。
进一步地,所述可验数据包括:
所述最新区块的第一哈希值在生成第二哈希值时的证明信息,所述第一哈希值是所述最新区块的根哈希值或基于所述根哈希值衍生得到的哈希值;和
所述第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息,所述第二哈希值是由当前时刻所述共享工作量证明算力的多条区块链的最新区块的第一哈希值进行哈希演算得到,并被发布至所述矿池缓存区。
进一步地,所述区块生成模块,还用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。
进一步地,所述母链为比特币区块链,工作量证明数据的数据结构为为比特币区块链的区块头数据结构,所述证明信息为merkle branch。
进一步地,进行哈希演算的设备包括Merkletree设备或单向哈希设备。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个如图8所示的设备,该设备包括用于存储计算机程序指令的存储器810和用于执行程序指令的处理器820,其中,当该计算机程序指令被该处理器执行时,触发该设备执行基于前述多个实施例中的方法和/或技术方案。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (12)
1.一种共享工作量证明算力生成区块链的方法,该方法用于创建一条或多条区块链上的区块,其特征在于,该方法包括:
获取共享的矿池计算出的工作量证明数据,并基于所述工作量证明数据创建一条或多条区块链上的最新区块,其中,所述任一区块链上的最新区块的内容包括:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
2.根据权利要求1所述的方法,其中,所述附加数据包括当前时间、所述最新区块的难度、本区块链上前一区块的衍生数据。
3.根据权利要求1所述的方法,其中,所述可验数据包括:
所述最新区块的第一哈希值在生成第二哈希值时的证明信息,所述第一哈希值是所述最新区块的根哈希值或基于所述根哈希值衍生得到的哈希值;和
所述第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息,所述第二哈希值是由当前时刻所述共享工作量证明算力的多条区块链的最新区块的第一哈希值进行哈希演算得到,并被发布至所述矿池缓存区。
4.根据权利要求1至3中任一项所述的方法,其中,该方法还用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。
5.根据权利要求4所述的方法,其中,所述母链为比特币区块链,工作量证明数据的数据结构为比特币区块链的区块头数据结构,所述可验数据包括所述共享比特币区块链算力而生成的区块链的最新区块的根哈希值可被当前时刻比特币矿池缓存区中的所有内容数据验证的merkle branch。
6.根据权利要求3所述的方法,其中,进行哈希演算的方法包括Merkletree方法或单向哈希方法。
7.一种共享工作量证明算力生成区块链的设备,该设备用于创建一条或多条区块链上的区块,其特征在于,该设备包括:
共享算力获取模块,用于获取矿池计算出的共享的工作量证明数据,
区块生成模块,用于基于所述工作量证明数据创建一条或多条区块链上的最新区块,其中,所述任一区块链上的最新区块的内容包括:
符合所述最新区块的难度的工作量证明数据;
所述最新区块收录的所有内容数据;
所述所有内容数据或所有内容数据和附加数据生成的根哈希值;
使得所述根哈希值可被所述矿池缓存区中的所有内容数据验证的可验数据。
8.根据权利要求7所述的设备,其中,所述附加数据包括当前时间、所述最新区块的难度、本区块链上前一区块的衍生数据。
9.根据权利要求7所述的设备,其中,所述可验数据包括:
所述最新区块的第一哈希值在生成第二哈希值时的证明信息,所述第一哈希值是所述最新区块的根哈希值或基于所述根哈希值衍生得到的哈希值;和
所述第二哈希值在当前时刻被所述矿池缓存区中的所有内容数据验证的证明信息,所述第二哈希值是由当前时刻所述共享工作量证明算力的多条区块链的最新区块的第一哈希值进行哈希演算得到,并被发布至所述矿池缓存区。
10.根据权利要求7至9中任一项所述的设备,其中,所述区块生成模块,还用于创建母链上的区块,所述母链为已有的区块链,所述矿池为计算所述母链的工作量证明数据的算力池。
11.根据权利要求10所述的设备,其中,所述母链为比特币区块链,工作量证明数据的数据结构包括比特币区块链的区块头数据结构,所述证明信息为merkle branch。
12.根据权利要求9所述的设备,其中,进行哈希演算的设备包括Merkletree设备或单向哈希设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710726249.4A CN109829076B (zh) | 2017-08-22 | 2017-08-22 | 一种生成区块链的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710726249.4A CN109829076B (zh) | 2017-08-22 | 2017-08-22 | 一种生成区块链的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109829076A true CN109829076A (zh) | 2019-05-31 |
CN109829076B CN109829076B (zh) | 2021-08-06 |
Family
ID=66858066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710726249.4A Active CN109829076B (zh) | 2017-08-22 | 2017-08-22 | 一种生成区块链的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109829076B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471770A (zh) * | 2019-08-15 | 2019-11-19 | 北京北科融智云计算科技有限公司 | 一种基于区块链分布式计算方法、系统、设备和存储介质 |
CN111199504A (zh) * | 2019-12-29 | 2020-05-26 | 杭州拓深科技有限公司 | 一种基于区块链的去中心化消防维保监管方法 |
TWI706346B (zh) * | 2019-10-31 | 2020-10-01 | 鴻海精密工業股份有限公司 | 限制礦機算力的方法、礦機、儲存介質 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245327A (zh) * | 2015-08-21 | 2016-01-13 | 北京比特大陆科技有限公司 | 比特币工作量证明哈希计算芯片优化的方法、装置和电路 |
WO2016046820A1 (en) * | 2014-09-23 | 2016-03-31 | Spondoolies Tech Ltd. | System and method for providing shared hash engines architecture for a bitcoin block chain |
CN105488675A (zh) * | 2015-11-25 | 2016-04-13 | 布比(北京)网络技术有限公司 | 一种区块链的分布式共享总账构建方法 |
CN105488722A (zh) * | 2015-11-30 | 2016-04-13 | 布比(北京)网络技术有限公司 | 基于衍生链的资产数据处理方法及装置 |
CN105824810A (zh) * | 2015-01-04 | 2016-08-03 | 中国移动通信集团河北有限公司 | 一种Hadoop集群系统及数据处理方法 |
CN106251144A (zh) * | 2015-06-05 | 2016-12-21 | 地气股份有限公司 | 电子货币管理方法及电子货币节点装置 |
US20160371393A1 (en) * | 2015-06-16 | 2016-12-22 | International Business Machines Corporation | Defining dynamic topic structures for topic oriented question answer systems |
CN106296191A (zh) * | 2016-08-13 | 2017-01-04 | 深圳市樊溪电子有限公司 | 一种区块链功耗感知的PoW共识机制 |
CN106506467A (zh) * | 2016-10-31 | 2017-03-15 | 国云科技股份有限公司 | 一种基于区块链的身份证明记录方法 |
-
2017
- 2017-08-22 CN CN201710726249.4A patent/CN109829076B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016046820A1 (en) * | 2014-09-23 | 2016-03-31 | Spondoolies Tech Ltd. | System and method for providing shared hash engines architecture for a bitcoin block chain |
CN105824810A (zh) * | 2015-01-04 | 2016-08-03 | 中国移动通信集团河北有限公司 | 一种Hadoop集群系统及数据处理方法 |
CN106251144A (zh) * | 2015-06-05 | 2016-12-21 | 地气股份有限公司 | 电子货币管理方法及电子货币节点装置 |
US20160371393A1 (en) * | 2015-06-16 | 2016-12-22 | International Business Machines Corporation | Defining dynamic topic structures for topic oriented question answer systems |
CN105245327A (zh) * | 2015-08-21 | 2016-01-13 | 北京比特大陆科技有限公司 | 比特币工作量证明哈希计算芯片优化的方法、装置和电路 |
CN105488675A (zh) * | 2015-11-25 | 2016-04-13 | 布比(北京)网络技术有限公司 | 一种区块链的分布式共享总账构建方法 |
CN105488722A (zh) * | 2015-11-30 | 2016-04-13 | 布比(北京)网络技术有限公司 | 基于衍生链的资产数据处理方法及装置 |
CN106296191A (zh) * | 2016-08-13 | 2017-01-04 | 深圳市樊溪电子有限公司 | 一种区块链功耗感知的PoW共识机制 |
CN106506467A (zh) * | 2016-10-31 | 2017-03-15 | 国云科技股份有限公司 | 一种基于区块链的身份证明记录方法 |
Non-Patent Citations (3)
Title |
---|
MINA: "挖矿及新区块的生成原理", 《HTTPS://WWW.CHAINNODE.COM/POST/38771》 * |
周邺飞: "区块链核心技术演进之路——共识机制演进(1)", 《计算机教育》 * |
朱岩: "区块链关键技术中的安全性研究", 《信息安全研究》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471770A (zh) * | 2019-08-15 | 2019-11-19 | 北京北科融智云计算科技有限公司 | 一种基于区块链分布式计算方法、系统、设备和存储介质 |
TWI706346B (zh) * | 2019-10-31 | 2020-10-01 | 鴻海精密工業股份有限公司 | 限制礦機算力的方法、礦機、儲存介質 |
CN111199504A (zh) * | 2019-12-29 | 2020-05-26 | 杭州拓深科技有限公司 | 一种基于区块链的去中心化消防维保监管方法 |
CN111199504B (zh) * | 2019-12-29 | 2023-09-26 | 杭州拓深科技有限公司 | 一种基于区块链的去中心化消防维保监管方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109829076B (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2744054C2 (ru) | Устройство и способ хранения данных, проверки данных и связывания данных | |
CN110868440B (zh) | 区块链公链 | |
EP3678346A1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN107729471A (zh) | 一种区块链及其生成方法与设备 | |
US10339014B2 (en) | Query optimized distributed ledger system | |
US11762839B2 (en) | Search method using data structure for supporting multiple search in blockchain-based IoT environment, and device according to method | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN109542979B (zh) | 一种区块链系统快速同步及简精数据存储的方式 | |
CN111737654B (zh) | 基于区块链的侵权检测方法及装置、电子设备 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN109829076A (zh) | 一种生成区块链的方法及设备 | |
WO2020220742A1 (zh) | 为区块链上的数据锚定时间的方法及装置、电子设备 | |
CN112966311A (zh) | 智能合约校验方法及装置和电子设备 | |
US20200175622A1 (en) | Processing ledger transactions in a blockchain | |
CN109242676B (zh) | 区块发布方法及装置、电子设备 | |
US20200193430A1 (en) | Determining generation time for blockchain data | |
CN110119947B (zh) | 共享工作量证明算力生成共生区块链的方法和设备 | |
CN111782551A (zh) | 针对区块链项目的测试方法、装置及计算机设备 | |
CN109327311A (zh) | 一种哈希时间戳创建方法、设备及可读存储介质 | |
CN114529415A (zh) | 基于区块链的交易验证方法及装置、电子设备 | |
US11250438B2 (en) | Blockchain-based reimbursement splitting | |
CN110046194A (zh) | 一种扩展节点关系图的方法、装置和电子设备 | |
CN109325011A (zh) | 基于区块链的数据存储、处理、分享方法及系统 | |
US20230297478A1 (en) | Full backup method and apparatus for distributed database system, and computer-readable storage medium | |
CN111680004B (zh) | 核对非结构化影像文件迁移准确性的方法和装置 |
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 |