CN110799966A - 用于使用现有区块链节点来托管新区块链的方法和系统 - Google Patents
用于使用现有区块链节点来托管新区块链的方法和系统 Download PDFInfo
- Publication number
- CN110799966A CN110799966A CN201980002894.9A CN201980002894A CN110799966A CN 110799966 A CN110799966 A CN 110799966A CN 201980002894 A CN201980002894 A CN 201980002894A CN 110799966 A CN110799966 A CN 110799966A
- Authority
- CN
- China
- Prior art keywords
- blockchain
- new
- existing
- block
- node
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Abstract
用于生成新区块链的方法、系统和技术包括在现有区块链中,存储新区块链的创世区块;以及托管将新区块链的创世区块用作新区块链的第一区块的新区块链。存储可以在托管之前进行,例如在现有区块链生成新区块链的创世区块本身并随后导致新区块被托管的时候。替换地,托管可以在存储之前进行,例如在对于现有区块链来说是外来的节点生成新区块的创世区块并托管新区块链,随后新区块链的创世区块被引入现有区块链并存储在其中的时候。
Description
技术领域
本公开涉及用于使用现有区块链节点来托管新区块链的方法、系统和技术。
背景技术
区块链是分布在计算机节点上并且天生就抵抗损坏和篡改的数据库和/或应用执行引擎。虽然最初被用于比特币,但是总的说来区块链具有大大超出比特币和金融服务行业的应用。
发明内容
根据第一方面,提供了一种用于在组成现有区块链的一部分的节点上托管新区块链的方法,该方法包括:在现有区块链中,存储新区块链的创世区块;以及在组成现有区块链的一部分的节点上,托管将新区块链的创世区块用作新区块链的第一区块的新区块链。
新区块链的创世区块可以包括组成现有区块链的一部分的节点的节点标识符。
节点标识符可以包括组成现有区块链的一部分的节点的公钥。
在现有区块链中存储新区块链的创世区块可以包括基于现有区块链的创世区块来确定新区块链的创世区块。
现有区块链可以包括链接到现有区块链的创世区块的区块,确定新区块链的创世区块可以作为执行在现有区块链上存储或引用的计算机程序代码的结果来执行。
计算机程序代码,在执行时,可以在组成现有区块链的区块中最高的区块中存储或引用。
计算机程序代码,在执行时,可以在组成现有区块链的区块中最高的区块之下存储或引用。
生成新区块链的创世区块可以包括生成现有区块链上最高的区块的哈希以及将哈希用作种子来生成新区块链的创世区块。
生成新区块链的创世区块可以包括生成现有区块链上的创世区块的哈希以及将哈希用作种子来生成新区块链的创世区块。
生成新区块链的创世区块可以包括生成在现有区块链的创世区块之上并在现有区块链的最高的区块之下的任何一个区块的哈希,以及将哈希用作种子来生成新区块链的创世区块。
该方法还可以包括,在现有区块链处,接收来自第三区块链的链托管动作,并且现有区块链可以响应于动作来执行生成和托管。
该动作可以包括在第三区块链的至少一个区块上存储的所有应用数据的适当子集的一部分,其中接收包括:在现有区块链处从第三区块链接收:允许现有区块链验证第三区块链的至少一个区块的世系的世系验证数据;使用至少一个区块存储的所有应用数据的适当子集;以及允许现有区块链验证从第三区块链发送到现有区块链的所有应用数据的适当子集的有效性的有效性验证数据;使用世系验证数据来验证第三区块链的至少一个区块的世系;使用有效性验证数据来验证所有应用数据的适当子集的有效性;以及将新区块添加到现有区块链,其中新区块用于存储包括从第三区块链接收的世系验证数据、所有应用数据的适当子集以及有效性验证数据的应用数据。
存储新区块链的创世区块可以包括:在现有区块链处,接收将新区块添加到包括新区块链的创世区块的现有区块链的提案;以及在现有区块链已经针对添加新区块达成共识之后,将新区块添加到现有区块链。
新区块链的创世区块可以由不组成现有区块链的一部分的外来节点来生成。
新区块链的创世区块可以包括组成现有区块链的一部分的被邀请的节点的节点标识符,被邀请的节点可以提交提案来将新区块添加到现有区块链。
节点标识符可以包括被邀请的节点的公钥。
被邀请的节点可以在提交提案来将新区块添加到现有区块链之前验证新区块链的创世区块是可接受的格式的。
可接受的格式可以包括标识现有区块链的链标识符以及被允许联接新区块链的节点标识符的列表。
可接受的格式还可以包括链标识符的列表,链标识符的列表用于标识新区块链可以发送数据到哪些区块链并且新区块链可以从哪些区块链接收数据。
新区块链的创世区块可以由客户端设备生成。
客户端设备上的网络浏览器可以生成新区块链的创世区块。
被邀请的节点可以是组成托管新区块链的现有区块链的一部分的节点。
被邀请的节点可以不同于组成托管新区块链的现有区块链的一部分的节点。
该方法还可以包括从现有区块链向新区块链发送:允许新区块链验证现有区块链的至少一个区块的世系的世系验证数据;使用现有区块链的至少一个区块存储的所有应用数据的适当子集;以及允许新区块链验证从现有区块链发送到新区块链的所有应用数据的适当子集的有效性的有效性验证数据。
该方法还可以包括:在现有区块链处从新区块链接收:允许现有区块链验证新区块链的至少一个区块的世系的世系验证数据;使用新区块链的至少一个区块存储的所有应用数据的适当子集;以及允许现有区块链验证从新区块链发送到现有区块链的所有应用数据的适当子集的有效性的有效性验证数据;使用世系验证数据来验证新区块链的至少一个区块的世系;使用有效性验证数据来验证从新区块链接收的所有应用数据的适当子集的有效性;以及将新区块添加到现有区块链,其中新区块用于存储包括从新区块链接收的世系验证数据、所有应用数据的适当子集以及有效性验证数据的应用数据。
该方法还可以包括,在新区块已经被托管在现有区块链的节点上之后,停止在现有区块链的节点上托管新区块链,但仍然在不组成现有区块链的一部分的节点上托管新区块链。
根据另一方面,提供了一种用于托管新区块链的系统,该系统包括组成现有区块链的一部分的第一节点,该第一节点包括:用于与组成现有区块链的一部分的另一节点对接的网络接口硬件;其上已经存储了现有区块链的数据存储;通信地耦合到数据存储和网络接口硬件的处理器;以及通信地耦合到处理器且其上已经存储了计算机程序代码的存储器,该计算机程序代码可由处理器执行且在由处理器执行时致使处理器执行该方法的前述方面中的任一者或者它们的合适组合。
根据另一方面,提供了一种其上已经存储了计算机程序代码的非暂时性计算机可读介质,该计算机程序代码可由处理器执行且在由处理器执行时致使处理器执行该方法的前述方面中的任一者或者它们的合适组合。
本发明内容未必描述所有方面的整个范围。在阅读以下具体实施方式的描述后,其他方面、特征和优点对于本领域的普通技术人员将是显而易见的。
附图说明
在说明一个或多个示例实施方式的附图中:
图1描绘了根据一个示例实施方式的用于促进区块链之间的数据传输的系统。
图2描绘了组成图1的系统的一部分的软件栈。
图3描绘了用于图1的系统的物理网络拓扑。
图4描绘了示出了根据图1的系统,使用归约器来执行动作以影响系统状态以及针对区块链达成共识的的流程图。
图5A和5B描绘了示出了根据图1的系统,两个区块链如何执行读联接的UML序列图。
图6描绘了示出了根据图1的系统,两个区块链如何执行写联接的框图。
图7A至7C描绘了示出了根据图6的框图,两个区块链如何执行写联接的UML序列图。
图8A描绘了根据另一示例实施方式的用于促进区块链之间的数据传输的系统。
图8B描绘了根据图8B的系统的管理程序和在其上运行的各种区块链的框图。
图9描绘了根据一个附加示例实施方式的一种用于使用现有区块链节点来托管新区块链的方法。
图10A和10B描绘了根据附加实施方式的根据图9的方法来托管的新区块链。
具体实施方式
区块链的物理层包括其上共同存储分布式数据库的计算机节点。该数据库被存储为一般线性的“区块”的链,链中的每个随后的区块以加密安全的方式直接链接到链中紧接在前面的区块。添加到区块链的新区块被称为在区块链中比在它之前添加到区块链中的区块“更高”。区块链中的第一或最低区块被称为“创世区块”。因为区块链中的每个区块直接链接到其紧接在前面的区块,所以区块链中的任何区块都可以直接或间接地被追溯到创世区块。这是一种任何一个节点都能够检查区块链的有效性的方式。
区块链可以通过多种方式实现。在一个用于比特币的区块链的示例实现中,区块链的每个区块包括那个区块的大小,以字节为单位;区块报头;交易计数器,表示存储在那个区块中的不同比特币交易的数量;以及交易数据,其是存储的交易。在相同的示例实现中,每个区块的区块报头包括版本信息;前一个区块哈希,其是对紧接在那个区块前面的区块的哈希的引用;Merkle根,其是存储在那个区块中的交易的Merkle根的哈希;时间戳,其是创建区块的时间;难度目标,其是在区块创建期间执行工作量证明操作时必须满足的最小难度;以及由工作量证明产生的随机数(nounce)。
在传统的区块链实现中,组成区块链一部分的不同节点通过执行至少满足每个新区块报头中指定的难度目标的工作量证明操作来竞争生成新区块。一旦生成,新区块就通过使用前一个区块哈希(以确认那个新区块的世系)和Merkle根(以确认存储在那个新区块中的交易的有效性),被传播到区块链中的其他节点,并且其真实性被该其他节点独立地验证。一旦新区块已经被验证,它就被添加到区块链的顶部。典型地,区块链在任何给定时间都是具有由最高可能的累积工作量证明产生的区块的链。当节点关于哪个区块要被添加到区块链的顶部意见一致时,它们被称为已经达成“共识”。虽然区块链可能不时分叉,导致区块链的暂时竞争版本,但是每个区块都与其紧接在前面的区块加密链接的事实意味着远离区块链的顶部的区块实际上是不变的。
上述区块链的分布式和对等性质也与一些缺点相关联。例如,区块链的分布式性质的副作用是,组成区块链一部分的所有节点都可以访问存储在那个区块链上的所有数据,使得隐私保护变得困难。虽然区块链上的某些非报头数据可以被加密,但加密会带来技术开销,还会抑制可对数据做的事,例如将应用实现为智能合约。此外,当单个节点扩展并且同时是越来越多的区块链的节点时,那个节点所需的计算资源也线性地向上扩展,阻碍了该节点有效地成为大量区块链的成员的能力。
在此描述的实施方式在方法、系统和技术中描述以减轻至少一个前述问题。例如,在下面描述的至少一些实施方式中,数据可以通过在此称为“链联接”的过程在区块链之间安全地共享。使用联接,第一区块链可以与第二区块链安全地共享存储在第一区块链上的非报头数据的适当子集;这与被迫共享存储在第一区块链上的所有数据形成对比,这是组成第一区块链的所有节点之间所需要的。在此描述的至少一个实施方式中,当区块链用于实现比特币时,非报头数据代替存储在区块链上的交易数据。例如,在至少一些示例实施方式中,非报头数据包括由也作为被实现为智能合约并存储在区块链上的应用执行的动作,以及表示执行那个动作之后的结果应用状态的数据。在此描绘的实施方式中的每个动作包括JSON对象,尽管在不同的实施方式中,动作可以包括不同的数据结构。从第一区块链发送应用状态数据和由第一区块链执行导致应用状态的动作允许第二区块链独立地确定它从第一区块链接收的状态是否准确。
在至少一些示例实施方式中,区块链的非报头数据包括应用数据,该应用数据是与存储在区块链中的应用相关的数据,例如应用本身或应用状态数据。例如,在被配置为存储联系人列表的应用中,应用状态数据可以包括那些联系人的列表,应用状态数据的适当子集可以包括那个列表中的单个条目。在一些其他示例实施方式中,非报头数据可以与任何特定应用都无关,可以包括JSON对象或二进制文件。
此外,在下面描述的至少一些实施方式中,任何一个或多个节点在通过在一个或多个节点的每一个上运行的主机控制器来路由系统操作的同时,都可以使用管理程序来虚拟化(完全虚拟化或使用半虚拟化)一个或多个区块链。主机控制器本身可以是区块链(“主机区块链”)。主机控制器响应于来自在管理程序上运行的一个或多个区块链的请求来分配节点的至少一些硬件资源,主机控制器在该节点上运行;那些链中的每一个在此可互换地称为“客户区块链”。主机控制器基于例如资源可用性和任务优先级来执行资源分配。这允许不同的区块链有效地共享那个节点的硬件资源,从而便于扩展。此外,在包括主机区块链的实施方式中,客户区块链中的至少一个的计算机程序代码可以存储在主机区块链中。这允许主机区块链存储所有那些客户区块链的应用状态变化的列表,从而允许用户容易地将那些应用的状态改变为主机区块链中存储的任一先前状态。这对于调试和审计那个节点的活动中的至少一个可能特别有用。在包括主机区块链的实施方式中,客户区块链中的一个或多个可以存储在主机区块链中,而客户区块链中的不同的一个或多个可以存储在主机区块链之外;尽管如此所有客户区块链仍然都可以由主机区块链为它们分配资源,从而促进可扩展性。
现在参考图1,示出了根据一个示例实施方式的用于促进区块链之间的数据传输的系统100。系统100包括第一至第十二节点104a-1(概括来说,“节点104”),每个节点组成一个或多个区块链102a-g(概括来说,“区块链”或“链”102)的一部分。第一区块链102a包括第一至第四节点104a-d;第二区块链102b包括第五至第八节点104e-h;第三区块链包括第九至第十二节点104i-l。
如下文进一步详细讨论的,第一区块链102a“联接”到第四区块链102d(经由第二节点104b)和第五区块链102e(经由第三节点104c):这允许存储在第一区块链102a上的所有或一些数据被分别与第四和第五区块链102d、e安全共享。第二区块链102b类似地联接到第四区块链102e(经由第六节点104f)和第六区块链102f(经由第七节点104g),第三区块链102c类似地联接到第六区块链102f(经由第十节点104j)和第五区块链102e(经由第十一节点104k)。
同样如下面进一步详细讨论的,当第四区块链102d联接到第一和第二区块链102a、b时,第一和第二区块链102a、b可以经由第四区块链102d互相读写数据。类似地,第二和第三区块链102b、c可以经由第六区块链102f互相读写数据,第一和第三区块链102a、c可以经由第五区块链102e互相读写数据。因此,第四至第六区块链102d-f在此可互换地称为“传输区块链”,因为它们促进了第一至第三区块链102a-c之间的数据的选择性传输。
系统100中的第八区块链102g是“目录区块链”,其上存储了第一至第三区块链102a-c可自由访问的数据。
虽然在传统的比特币实现中,生成新区块包括应用工作量证明,但是在所描绘的实施方式中,在不应用工作量证明的情况下达成了共识。例如,在此所描绘的实施方式,共识是根据Ethan Buchman的论文,2016年6月,University of Guelph,https://atrium.lib.uoguelph.ca/xmlui/handle/10214/9769中描述的方法来确定的。在不同的实施方式(未示出)中,共识可以使用工作量证明、利益证明或不同的方法来确定。
第二节点104b的结构在图1中突出显示了。系统100中的其他节点104a、c-l共享类似的结构,尽管在不同的实施方式(未示出)中,任何一个或多个节点104可以在结构上彼此不同。
现在参考图3,示出了图1的系统100的物理网络拓扑。系统100包括第一至第三局域网(“LAN”)306a-c,每个局域网由各自的防火墙304a-c保护。局域网306a-c通过广域网(“WAN”)302,例如因特网通信地耦合在一起。第一至第三区块链102a-c分别位于第一至第三LAN 306a-c的本地;第四至第七区块链102d-g中的每一个通过防火墙304a-c中的至少两个以及WAN 302进行通信。
回到图1,第二节点104b包括控制节点104b的整体操作的处理器106。处理器106通信地耦合到若干子系统并控制它们。这些子系统包括用户输入设备108,用户输入设备108可以包括例如键盘、鼠标、触摸屏、语音控制中的任何一个或多个;随机存取存储器(“RAM”)110,其存储由处理器106在运行时执行的计算机程序代码;非易失性存储器112,其存储运行时由RAM 110执行的计算机程序代码,并且还存储第二节点104b是其一部分的区块链102a、d,如就图2进一步详细讨论的;显示控制器114,其通信地耦合到显示器116并控制它;以及促进与其他节点104a、c-l进行网络通信的网络控制器118。
现在参考图2,示出了组成图1的系统100的一部分的软件栈200。软件堆栈200可以表达为计算机程序代码并存储在非易失性存储器112中,处理器106可以在运行时根据需要将那计算机程序代码的一些或全部加载到RAM 110中。软件堆栈200是基于Node.js的,并相应地使用JavaScript202,特别是JavaScript Express 204、Redux 206和React 208库。JavaScript202用于实现区块链。JavaScript Express 204、Redux 206、React 208以及HTML和CSS 210被用作应用开发的框架。虽然在本示例实施方式中使用了JavaScript 202及其相关联的库204、206、208,但是在不同的示例实施方式(未示出)中,它们中的任何一个或多个可以不用于实现。例如,在某些不同的实施方式中,即使JavaScript Express 204、Redux 206和React208库都没有被使用,应用状态仍然可以使用可加密验证的JSON对象来跟踪。
应用作为智能合约在系统100中的任何一个区块链102上运行。图4描绘了示出了根据图1的系统100,使用归约器来由系统100执行动作以影响系统状态以及通过如上所述应用共识来针对区块链102中的任何一个达成共识的流程图400。在系统100中,Redux 206存储存储应用的状态树,因此类似于应用的RAM。在框402处在用户空间中创建动作,例如响应于经由用户输入设备108中的一个的用户输入,并且在框404处使用Redux 206dispatch()方法的异步变体将该动作分派到区块链结构(即,借助于区块链的对等性质,自动分派到组成区块链102的其他节点104)。该动作在框406处从用户空间转移到区块链结构,并且在框408处通过组成区块链102的节点104来传播。因此,区块链102的节点104中的每一个在框410处最终接收该动作的副本,并且节点104中的每一个在框414处通过用归约器来执行该动作,独立地评估那个动作对应用的当前状态的影响,该应用的当前状态是节点104中的每一个在框412处检索的。一旦节点104在框414处执行该动作,区块链102就在框416处就区块链102的后续状态达成共识。由那个共识产生的后续状态在框418处被节点104接受为正确的后续状态,并在框420处被发送到用户空间。
图8A描绘了用于促进区块链102之间的数据传输的系统100的另一示例实施方式。图8A的系统100包括第十三节点104m,其同时是六个区块链102h-m的成员:主机区块链102h和第八至第十二区块链102i-m。第八至第十二区块链102i-m还分别包括附加节点104n-r。区块链102h-m中的每一个半虚拟化在第十三节点104m上,尽管在不同的实施方式(未示出)中,区块链102h-m可以是完全虚拟化的,或者如下文进一步详细讨论的,既不是完全虚拟化的也不是半虚拟化的。图8B描绘了用于那半虚拟化的管理程序800,并示出了在管理程序800上运行的区块链102h-m。
在图8B中,第八、第十一和第十二区块链102i、l、m嵌套在主机区块链102h内,第九和第十区块链102j、k嵌套在第八区块链102i内(因此也嵌套在主机区块链102h内)。当父区块链102执行创建嵌套区块链102的应用时,并且当父区块链102相应地可以终止该嵌套区块链102时,一个区块链102“嵌套”在另一个区块链102(“父区块链102”)内。在所描绘的实施方式中,父区块链102和嵌套区块链102在其他方面是等效的。
管理程序800经由负责输入/输出操作的计算机硬件(“I/O硬件”)与物理世界804对接,例如向管理程序800提供用户输入的用户输入设备108,以及执行磁盘访问和网络通信功能的磁盘访问和网络接口硬件808。硬件808与各种第三方组件806(例如提供外部服务的服务器、应用编程接口和数据库)对接。
管理程序800以JavaScript 202实现,包括动作队列816、路由器818和区块链102h-m的各种操作环境。路由器818通信地串行耦合到第一至第六分派模块820a-f,第一至第六分派模块820a-f又分别通信地耦合到区块链102h-m。区块链102h-m每个分别包括应用的存储812a-f,每个存储812a-f有效地充当那个区块链102h-m上的应用的RAM。在至少一些示例实施方式中,存储在区块链上的应用不止包括智能合约。例如,应用可以包括智能合约,其表示返回值的函数;saga,其执行除返回值以外的操作,例如与硬件的交互;以及与智能合约和saga交互的动作。saga执行的动作,是使用区块链请求而其实际执行无需区块链达成共识,在此称为“副作用”。虽然该副作用或动作的实际执行不受共识的影响,但区块链做出的执行该副作用的决定受共识的影响,区块链做出的接受该副作用的结果的决定也受共识的影响。存储812a-f中的每个应用包括归约器,该归约器执行确定区块链状态的动作。另外,可以由归约器执行那动作产生的副作用,例如区块链102和硬件之间的交互,分别由存储812a-f的副作用管理器814a-f处理。
在一个示例实施方式中,可以使用图8B的管理程序800来实现图4的方法,如下所述。通过经由用户设备108中的一个提供输入来创建动作的用户在框402处生成动作,该动作被放置在动作队列816中。动作队列816还从副作用管理器814a-f接收动作。动作队列816最终将用户生成的动作分派到路由器818,路由器818将它路由到与那个动作相关的区块链102i-m;对于本示例来说,第八区块链102i是唯一受该动作影响的区块链102。路由器818将动作直接路由到第三分派模块820c。这对应于图4中的框406。一旦动作从硬件转换成动作,主机区块链102h就捕捉该动作;I/O硬件(用户输入设备108或硬件808)与主机区块链102h交互,因此甚至在动作被发送到动作队列816之前动作就被记录在主机区块链102h中。路由器818将动作队列816中的动作路由到适当的分派模块812a-f。路由器818以动作在动作队列816中放置的顺序将那些动作发送到链102i-m中的任何一个给定的链;然而,不同区块链102i-m的动作可以无序地被发送到那些区块链102i-m的分派模块812a-f。例如,如果动作队列816接收第八区块链102i的第一动作,然后第九区块链102j的第二动作,然后第八区块链102i的第三动作,路由器818可以在将第二动作发送到第九区块链102j之前,将第一和第三动作发送到第八区块链102i。然而,路由器可以不在第一动作之前将第三动作发送到第八区块链102i。
一旦动作到达第八区块链102i,第十三节点104m就将动作广播到组成那个区块链102i的一部分的任何其他节点104,如图8A所示那个区块链102i包括附加节点104n;这对应于图4中的框408和410。第十三节点104m经由主机区块链102h通信,主机区块链102h按照需要与磁盘访问和网络接口硬件808对接以与附加节点104n通信。附加节点104n最终在框414处在其归约器处接收并执行该动作。回到第十三节点104m,组成第二存储812b的一部分的归约器执行该动作,并且再次经由主机区块链102h将它确定的新状态共享给附加节点104n。第八区块链102i最终达到共识,这对应于图4的框416,涉及管理程序800在其上运行的节点104m的通信经由主机区块链102h再次发生。一旦达到共识,第八区块链102i就在框418处稳定在它的新状态,并且经由用户输入硬件108再次经由主机区块链102h将这新状态中继给用户,这对应于框420。
归约器执行动作时,可能需要硬件操作形式的副作用。管理程序800响应于来自主机区块链108h的指令执行任何硬件操作;因此,主机区块链108h知道并记录其区块中的所有硬件操作和相关动作。主机区块链108h还记录执行那个动作的结果,这是接收到动作的区块链102的新应用状态。每个区块链108在执行动作后还返回“成功”或“失败”指示符,该指示符指示动作是否被成功执行,主机区块链108h也记录该指示符。
在所描绘的示例实施方式中,主机区块链108h还监视和处理用于满足处理器时间和处理器强度阈值中的至少一个的计算操作(不使用I/O硬件但确实需要节点104m的处理器的操作)的资源分配。这允许主机区块链108h为计算特别密集的任务,例如某些加密任务,分配和存储处理器资源。
虽然在图8A和8B中,第十三节点104m被描述为经由磁盘访问和网络接口硬件808与附加节点104n-r通信,但是在不同的实施方式中(未示出),通信可以在托管在相同的节点104上,甚至运行在相同的管理程序800上的区块链102之间进行。在那些示例实施方式中,与需要通过硬件808进行通信的时候相比,区块链102之间的通信可以以更低的等待时间和更低的传输时间来进行。
区块链102h-m上的应用被配置成使得与区块链102i-m中的任何一个的所有硬件交互都经由主机区块链102h发生。例如,经由磁盘访问和网络接口硬件808发生的所有网络通信以及经由用户输入设备108发生的用户交互,由第八至第十二区块链102i-m经由主机区块链102h来执行。主机区块链108h相应地被配置成按照嵌套在其中的任何区块链108i-m的指示与所有硬件交互。主机区块链102h在其区块中记录所有硬件操作(请求和响应,以及经由硬件传送的用户输入)和在那些嵌套的区块链102i-m中的每一个上运行的应用的应用状态。在一些不同的实施方式中(未示出),主机区块链102h可以记录涉及I/O硬件的操作中的一些而不是所有。主机区块链102h还记录至少借助于通过路由器818路由那些动作(并且如果那些动作需要使用I/O硬件,则也借助于那个方式)而被路由到区块链102i-m的所有动作。这允许用户访问所有那些嵌套区块链102i-m的整个状态历史和硬件操作。因此,那个用户能够恢复到区块链102i-m中任何一个的先前应用状态,并调整动作队列816中的动作顺序,以模拟管理程序800和区块链102i-m在动作以不同于它们实际接收的原始顺序的顺序到达时会如何反应;在一个示例用例中,这是在应用出错时进行的。这允许系统100借助于允许模拟系统100可能经历的不同定时错误而被彻底测试。嵌套区块链102i-m中的每个的区块是包含在主机区块链102h的区块内的数据的子集。在调试或测试期间,用户可以从动作队列816中选择任何一个动作,来经由路由器818路由到区块链102i-m,而不管动作队列818接收动作的顺序如何。输入/输出操作是程序化和确定性的;因此,硬件以相同的方式响应动作,而不管它何时接收到那个动作,这有助于在调试或测试期间改变动作的顺序。
另一个节点可以连接到主机区块链108h,并且可以响应于来自那另一个节点的输入来进行应用到较早状态的恢复。例如,这其他节点可以是提供技术支持的第三供应者的节点。
虽然所描绘的示例实施方式将区块链102h-m示为半虚拟化在管理程序800上,但是在不同的实施方式中(未示出),既不需要使用完全虚拟化也不需要使用半虚拟化。在这些不同实施方式中的一些实施方式中,一些节点104使用管理程序800完全虚拟化或半虚拟化区块链102h-m,而其他节点没有。此外,在其中节点104中的至少一个使用管理程序800进行完全虚拟化或半虚拟化的那些不同实施方式中的一些中,区块链102h-m中的一些或全部可以被完全虚拟化或半虚拟化。例如,虽然图4的流程图400可以使用图8B的管理程序800来实现,但是在不同的实施方式中(未示出),虚拟化不需要用于其实现。
链联接
虽然区块链102中任何一个给定的区块链上的所有节点104都可以访问存储在区块链102上的所有数据,但是不同的区块链102默认情况下不在彼此之间共享数据。下面描述的链联接方法允许数据在不同的区块链102之间共享。
图5A和5B描绘了示出了根据图1的系统100,两个区块链102a、b如何执行读联接的UML序列图500。虽然图500中使用了第一和第二区块链102a、b,但是可以在任何两个区块链102之间执行读联接。例如,虽然第一和第二区块链102a、b不共享任何节点104,但是可以在共享节点104以及,在一些示例实施方式中,使用例如管理程序800在相同节点104中的至少一些上虚拟化(完全或半虚拟化)的区块链102之间执行读联接。
在图500中,第二区块链102b从第一区块链102a读取数据;对于图500来说,第二区块链102b相应地可互换地称为“消费者链102b”,第一区块链相应地可互换地称为“供应者链102a”。
在操作502处,供应者链102a更新其联接管理例程。用户通过经由组成供应者链102a的节点104a-d中的一个的用户输入设备108中的一个提供输入来开始这事。路由器818将用户输入作为动作(“@@CHAIN_SHARE_STATE”)分派给那个节点104上的供应者链102a,以由那链102a的归约器来执行。该动作的净荷是数字签名的,因此它是可加密验证的(也就是说,任何篡改都可以被检测到)。动作的净荷包括消费者链102b的链标识符(“<chainID>”)、标识要由消费者链102b读取的供应者链102a的状态数据的适当子集的路径(“statePath:‘/foo/’”)、以及标识这特定链联接的别名(“joinName:‘fooJoin’”)。在图500中,供应者链102a可用的状态信息使用目录树来表示。具有路径“/”的树的根代表供应者链102a可用的所有状态数据;子目录,例如“/foo/”,表示那状态数据的适当子集或“切片”。
链标识符是唯一的,是通过对值进行数字签名生成的,该值组成被修改为包含随机种子的供应者链102a的创世区块。随机种子确保唯一性。在读联接期间的任何时间,供应者链102a都可以使用链标识符来确认消费者链102b的身份,并且仅当确认那身份的尝试成功时,才向消费者链102b发送状态数据切片。
在操作504处,相同或不同的用户经由组成消费链102b的节点104e-h中的一个的用户输入设备108中的一个提供输入。路由器818将用户输入作为动作(“@@CHAIN_READ_STATE”)分派给那个节点104上的消费者链102b,以由那链102b的归约器来执行。动作的净荷是供应者链102a的加密安全链标识符(“<chainID>”)、标识状态数据要被存储在哪里的路径(“mount:‘/mnt/foo’”,由消费者链102b读取的状态数据是使用所安装的文件系统的模型来存储的)、标识这特定链联接的别名(“joinName:‘fooJoin’”)以及用于读联接的各种选项。示例选项包括数据年龄限制,该数据年龄限制要求正经由读联接传输的数据小于某个年龄,以可用于所有或一些操作;频率阈值,其定义多快读联接将重复以更新消费链102b上的状态数据;和最大大小限制,如果读联接传输的数据超过最大限制其设置标志。
一旦操作502和504已经执行,读联接就初始化。操作502和504可以同时执行,或者操作502、504中的一个可以在操作502、504中的另一个之前执行。
一旦读联接初始化,供应者链102a就进入包括操作506和508的循环,该循环对链102a上的每个区块执行。每次向供应者链102a添加新区块时,都会生成动作(“@@CHAIN_BLOCK_CREATED”)。新区块创建包括供应者链102a应用决定创建块,这触发副作用,该副作用在使用管理程序800时是由副作用管理器814处理的。该动作的净荷是那个新区块的区块高度(“currentBlockHeight:1234”)、那个新区块报头的哈希(“currentBlockHash:block1234Hash”)和标识那个区块创建的时间的时间戳(“currentBlockTime:12374433543”)。在一些示例实施方式中,时间戳被省略。在操作508处,供应者链102a向消费者链102b发送@@CHAIN_BLOCK_CREATED动作的形式的更新,通知消费者链102b新区块已经创建。更新包括那个新区块的高度和报头哈希。消费者链102b可以选择接受并接收由新创建的区块存储的状态数据切片的副本,或者跳过更新。
当消费者链102b选择从供应者链102a接收更新时,对每个更新执行操作510、512、514和516。在框510处,消费者链102b生成动作(“@@READ_JOIN_DIFF_REQ”),该动作具有净荷,该净荷包含由数据传输将在其处开始的供应者链102a的起始区块高度(“startBlockHeight:1200”),消费者链102b从操作504(上次设置它)中知道该起始区块高度并且消费者链102b将在如下所述的操作516处更新该起始区块高度;起始区块高度处的区块报头的哈希(图5B中未示出);以及该联接的别名(“joinNames:[fooJoin]”)。在操作512处,消费者链102b通过向供应者链102a发送@@READ_JOIN_DIF_REQ动作,向供应者链102a请求更新的状态数据切片。
响应于该请求,供应者链102a执行动作(“@@READ_JOIN_DIFF_RESP”)来生成对该请求的响应。响应于该动作,供应者链102a检索每个区块的报头(不管是否从那个区块发送状态数据切片,因为报头用于验证世系)(区块1200至1234)。每个报头包括链102a中紧接在前面的区块的报头的哈希(“previousBlockHash:‘block1199Hash’”);那个块整个应用状态的哈希,即使只传输那状态数据的切片(“payloadHash:‘payloadHash’”);第一区块链的节点的用来确定针对那个区块达到共识的足够数量的数字签名;以及指示链配置的方面是否已经改变的标志(即,当影响验证区块世系的能力的方面改变时),例如当加密方法(例如,哈希类型)已经改变时,当有权就共识投票的节点列表改变时,当使用的数字签名改变时,以及当报头格式改变时(“configChanged:false”)。该动作也会生成区块报头的哈希(“blockHash:‘block1200Hash”),该区块报头的哈希不组成报头本身的一部分。链102a还确定从起始区块高度(1200)到当前区块高度(1234)的状态数据上的差异(“stateDiff:{//Provider creates diff from 1200to 1234}”),从而避免向消费者链102b发送不必要的数据。供应者链102a还确定Merkle证明(“merkleProof”),该Merkle证明包括一个或多个哈希值,该一个或多个哈希值被选择来允许消费者链102b确定Merkle路径,该Merkle路径是从被发送到第二区块链的应用数据的哈希到Merkle根的,在本示例中,该Merkle证明在payloadHash字段中。在操作514处,供应者链102a向消费者链102b发送响应于@@READ_JOIN_DIFF_RESP动作而生成的数据。
在本示例实施方式中,该应用数据的哈希是Merkle根,包括用于制作区块的所有动作以及由应用按顺序执行所有那些动作产生的最后状态。在不同的示例实施方式中,该区块可以存储由执行每个动作产生的每个状态,或者那些状态的子集。对于每个正被传输的区块,那个区块的哈希和紧接在那个区块下面的区块的报头的哈希、那个区块的应用数据的哈希和数字签名的哈希共同表示世系验证数据的一个示例,消费者链102b可以使用该世系验证数据来验证回到链的创世区块的那个区块的世系。
在本示例实施方式中,merkleProof字段是有效性验证数据的一个示例,该有效性验证数据允许消费者链102b验证它从供应者链102a接收的应用数据的有效性。虽然在本示例中使用了Merkle树,但Merkle树只是加密证明的一种示例形式。还有其他可能的方法。该证明机制允许单个根哈希,以及在某些结构中使用的一系列其他哈希,从而允许通过将一段数据关联回根哈希来验证该数据,而不泄露任何不打算共享的其他数据。例如,可以使用的其他数据结构包括Patricia树、Radix树和分块连接。
消费者链102b随后在操作516处验证它接收的数据的真实性。更具体地,它使用世系验证数据来验证所传输的区块的世系,使用有效性验证数据来验证它接收的状态数据的适当子集的有效性,并且将新区块添加到消费者链102b。更具体地,消费者链102b验证供应者链102a的数字签名;使用哈希的报头信息验证每个所传输的区块的世系;使用数据的Merkle树检查所传输的状态数据的有效性;验证使用的共识方法的类型,该类型可以使用如上所述的configChange字段进行更改;通过检查投票赞成共识的节点的签名,验证足够数量的节点104已经就该区块的共识做出了贡献;以及根据链102a使用的加密方法验证该区块的加密有效性。
然后消费者链102b更新其存储状态信息的安装目录(/mnt/foo),该状态信息本身组成用新区块的非报头数据向它自己添加那个新区块的消费者链102b,那个新区块的非报头数据包括从供应者链102a接收的数据(即世系验证数据、状态数据的适当子集和有效性验证数据)。
总之,读联接允许消费者链102b的用户读取存储在供应者链102a上的状态数据切片,就好像那数据被本地安装在消费者链102b上一样。
现在参考图6,描绘了示出了根据图1的系统100,两个区块链如何执行写联接的框图600。与图5A和5B一样,尽管在图6的示例中使用了第一和第二区块链102a、b,但是可以在任何两个区块链102之间执行写联接,而不管它们是否具有重叠的节点104,也不管是否有任何节点是使用管理程序800的虚拟化链。在图6中,第一区块链102a将数据写入第二区块链102b;第一区块链102a相应地可互换地称为“发送者链”102a,第二区块链102b相应地可互换地称为“接收者链”102b。
发送者链102a包括分派模块802a,分派模块802a将动作分派给归约器602a。如下面就图7A至7C进一步详细讨论的,归约器602a将某些动作的执行委托给联接管理器604b,联接管理器604b控制哪些动作在未决动作队列606a中排队以传输到接收者链102b。动作经由读联接被发送到接收者链102b。发送者链102a还包括,经由读联接,读取接收者链102b已经完成的动作的列表的动作状态队列608a。
接收者链102b类似地包括经由读联接从发送者链102a的未决动作队列606a接收动作的未决动作队列606b。接收的动作被发送到联接管理器604b,联接管理器604b将它们转发到分派模块820b并更新动作状态队列608b以指示动作是未决的。分派模块820b将那些动作转发给归约器602b,归约器602b执行它们,从而改变接收者链102b的状态数据并执行写操作。联接管理器604b还在归约器602b执行动作之后,更新动作状态队列608b以指示动作已经完成。动作状态队列608b中的状态经由读联接被发送到发送者链102a的动作状态队列。因此,图6的写联接是使用两个读联接来实现的。
图7A至7C描绘了示出了根据图6的框图600系统,两个区块链102a、b如何执行写联接的UML序列图700。图中的对象是发送者和接收者链102a、b、发送者链102b的联接管理器604a和接收者链102b的联接管理器604b。虽然联接管理器604a、b被示为不同于链102a、b的对象,但是这样做仅仅是为了方便,并且管理器604a、b组成由链102a、b执行的应用逻辑的一部分。
在操作702处,接收者链102b的联接管理器604b执行具有净荷的动作(“@@CHAIN_AUTHORIZE_ACTIONS”),该净荷包括标识发送者链102a的加密安全链标识符(“<senderChainID>”),并枚举了允许发送者链102a让接收者链102b执行的动作(“permittedActions:[‘CREATE_FOO’;‘CREATE_BAR’]”)。加密安全的链标识符以类似于图5A的链标识符的方式生成。此后,接收者链102b的未决动作队列606b能够从发送者链102a的未决动作队列606a读取动作,并且发送者链102a的动作状态队列608a能够从接收者链102b的动作状态队列608b读取动作的状态。在队列606a、b和608a、b能够通信之后,写联接建立。在所描述的实施方式中,发送者链102a默认被授权执行从接收者链102b接收的某些动作,因此授权没有在图7A至7C中明确示出。
对于发送者链102a希望发送给接收者链102的每个动作,发送者链102a执行操作704和706。对于每个动作,发送者链102a创建允许的枚举类型中的一个的动作(“type:‘CREATE_FOO’”)。归约器602a创建的动作可以与分派给它的动作相同或不相同。然后,归约器602a在操作704处将动作委托给联接管理器604a,随后联接管理器604a在操作706处生成那个动作的标识符并将它放置在未决动作队列606a中。该动作在操作708处,经由读联接,从发送者链102a的未决动作队列606a传输到接收者链102b的未决动作队列606b。
为了有效利用伴随每个读联接的开销,例如密码检查和共识所需的开销,多个动作可以在发送者链102a的未决动作队列606a中排队并经由单个读联接来传输。
对于接收者链102b接收的每个动作,它执行操作710、711、712、714和716。接收者链102b的联接管理器604b在操作710处从未决动作队列606b中移除未决动作,在操作711处将该动作分派给归约器602b,并更新动作状态队列608b以指示该动作正在进行中。归约器602b执行该动作,在操作714处通知联接管理器604b,并且联接管理器604b在操作716处更新动作状态队列608b以指示该动作完成。
在操作717处,发送者链102a的动作状态队列608a经由读联接被更新以与接收者链102b的动作状态队列608b一致。
对于每个更新的动作状态,发送者链102a执行操作718、720和722。在操作718处,联接管理器604a将动作状态队列608a中的动作状态与该动作的先前状态进行比较。在操作720处它更新最初将该动作分派给归约器602a的分派,向用户返回在该动作完成后要返回的任何信息(例如,给用户的指示动作已经完成的通知)。然后,联接管理器604a在操作722处从未决动作队列606a中移除完成的动作。
在操作724处,链102a、b的未决动作队列606a、b使用读联接来同步,随后接收者链102b的联接管理器604b从未决动作队列606b中移除该动作。在该动作被移除之后,动作状态队列608a、b在操作728处使用读联接来同步。
发送者链102a经由读联接从接收者链102b接收动作,该读联接是该动作在接收者链102b处是未决的(操作717)以及该动作已经由接收者链102b执行了(操作728)。对于每个读联接,发送者链102a还接收类似于上面就图5A和5B所述的世系验证数据和有效性验证数据。
图7A至7C的图500、700描绘了动作在链102之间传输。尽管在那些图中没有明确示出,但是每个动作是在第一链102已经达到共识的区块中发送的,所以接收该动作的第二链102可以验证该动作实际上来自第一链并且没有被篡改。
新链创建
在创建新区块链的时候,可能所希望的是快速地将那个区块链托管在若干节点上。这可能是有益的,例如,因为最初托管新区块链的节点(“初始节点”)可能寿命短,在这样的情况下多个节点托管新区块链有助于即使初始节点死亡也能确保该链继续存在。附加地或替换地,可能所希望的是将区块链托管在不同的节点上以准许该区块链访问那些不同节点上可用的多种资源。例如,初始节点可能具有不足以执行该区块链希望足够快速地执行的动作的计算资源。通过添加到托管该区块链的许多节点,该区块链可以访问在那些节点上可用的资源,这可以增强区块链性能。
因此,在此描述的至少一些实施方式中,该新区块链被生成且它的创世区块(“新区块链创世区块”)被存储在新区块链被托管之前就存在的区块链(“现有区块链”)上。通过在现有区块链上存储新区块链创世区块,该现有区块链的所有节点(“现有区块链节点”)都自动地可以访问该新区块链创世区块。这允许现有区块链节点托管新区块链,从而促进了新区块链的主机节点的迅速扩展。
在某些示例实施方式中,现有区块链本身通过达成共识来生成新区块链创世区块并将它存储在它的区块中的一个中。在某些其他示例实施方式中,新区块链创世区块是通过不组成现有区块链的一部分的初始节点(“外来节点”)在该现有区块链的外面生成的。新区块链创世区块包括外来节点的节点标识符,例如该外来节点的公钥(该外来节点可以数字地签名的)或令牌。然后现有节点中的一个可以借助于已经存储在现有区块链中的新区块链创世区块自动地联接新区块链。一旦接收那个邀请,现有节点就将新区块链创世区块介绍给现有区块链,该现有区块链可以通过共识来选择存储新区块链创世区块。因此,不论新区块链创世区块是否由现有区块链生成,它都可以变为该现有区块链的一部分并变为可被所有的该现有区块链节点访问。然后这些现有区块链节点可以接受托管新区块链的邀请,从而潜在地增大了如果发生节点故障新区块链继续存在的可能性并且准许新区块链访问附加的资源(例如,一个或多个硬件、软件以及网络资源)。
现在参考图9、10A以及10B,描述了根据附加示例实施方式的用于使用至少一个现有区块链节点来托管新区块链102o的方法900(图9)以及新区块链102o本身(图10A和10B)的实施方式。在图10A中,新区块链创世区块1004q由现有区块链102n生成,随后在新区块链102o被托管之前被存储在现有区块链102n上。如在此所使用的,“托管”区块链指的是节点在已经被给予区块链的创世区块之后操作那个区块链。在图10B中,新区块链创世区块1004q由不组成现有区块链节点中的一个的外来节点(未示出)生成,随后新区块链102o,在新区块链创世区块1004q被存储在现有区块链102n之前被托管,新区块链102o可以仅包括新区块链创世区块1004q。现有区块链102n的任何一个或多个节点可以托管新区块链102o。
首先参考其中现有区块链102n生成新区块链创世区块1004q的示例实施方式以及图10A,现有区块链102n,因为是在新区块链102o已经被托管之后,包括多个区块1004a-p。区块1004a-p包括现有区块链102n的创世区块1004a(“现有区块创世区块”)。紧接在新区块链102o由现有区块链节点中的至少一个托管之前,区块1004b-p中的每个都高于创世区块1004a,图10中最右边的区块1004p是现有区块链102n的最高的区块。新区块链102o包括新区块链创世区块1004q和更高的区块,仅示出了该更高的区块中的单个更高区块1004r。
图10A也描述了新区块链102o,新区块链102o是根据图9的方法900来托管的。在至少一些示例实施方式中,为了由处理器106执行,方法900被表达为计算机程序代码并被存储在非暂时性计算机可读介质上,例如非易失性存储器112。更特别地,在至少一些示例实施方式中计算机程序代码可以在现有区块链102n上存储或引用,如下面进一步讨论的,对执行动作的现有区块链102n的引用由处理器106执行那计算机程序代码的至少一部分来产生。在代码实际组成区块链的一部分的时候该区块链被称为“存储”该代码,在区块链存储对于存储在该区块链之外的代码的引用的时候该区块链被称为“引用”该代码。在其中区块链仅引用代码的至少一些示例实施方式中,该代码仍然可以存储在组成该区块链而不是组成该区块链的一部分的节点上。在至少一些示例实施方式,对于代码的引用是加密安全的引用。
在框902处,方法900开始并前进到框904。在框904处,新区块链创世区块1004q被存储在现有区块链102n中。如上所述,在这个所述示例实施方式中这是通过让现有区块链102n创建新区块链创世区块1004q本身来进行的。
在其中现有区块链102n确定新区块链创世区块1004q本身的至少一些示例实施方式中,现有区块链102n是通过将唯一数据片,例如唯一字符串,用作种子来生成新区块链创世区块1004q来这样做的。以这样的方式使用唯一字符串增大了新区块链创世区块1004q将是唯一的可能性。唯一字符串可以来自现有区块链102n的外部;例如,它可以从网络服务经由副作用被提出到现有区块链102n。替换地,新区块链创世区块1004q可以是基于现有区块链创世区块1004a的;如下面进一步讨论的,对于新区块链创世区块1004q的引用是“基于”现有区块链创世区块1004a的意味着新区块链创世区块1004q可以是直接或间接地基于现有区块链创世区块1004a的。
当新区块链创世区块1004q被创建的时候,现有区块链102n的最高的区块是区块1004o。致使现有区块链102n创建区块1004p并随后创建新区块链创世区块1004q的计算机程序代码在它的最高的区块1004o中被存储或引用,现有区块链102n通过执行包含地包括对从创世区块1004a到最高的区块1004o的区块1004a-o中的任何一个进行哈希的方法来确定新区块链创世区块1004q。在至少一些示例实施方式中,被哈希的区块是最高的区块1004o,最高的区块1004o是存储或引用被执行以在区块链102n中创建下一个区块,区块1004p,的代码的区块。这哈希的结果被用作种子来生成新区块链创世区块1004q以有助于确保新区块链创世区块1004q是唯一的。在至少一些示例实施方式中,该哈希也存储在新区块链创世区块1004q中。
借助于确定基于现有区块链102n区块1004a-n中的一个的新区块链创世区块1004q,以及区块1004b-o中的任何一个都可以被追溯至创世区块1004a的事实,新区块链创世区块1004q是直接或间接地基于现有区块链创世区块1004a的。如果现有区块链创世区块1004a的哈希被用在生成新区块链创世区块1004q的过程中,新区块链创世区块1004q就是直接地基于现有区块链创世区块1004a的,而,如果在现有区块链创世区块1004a之上直到且包含最高的区块1004o的区块中的一个的哈希被用在生成新区块链创世区块1004q的过程中,新区块链创世区块1004q就是间接地基于现有区块链创世区块1004a的。
一旦现有区块链102n在框904处已经确定新区块链创世区块1004q,现有区块链102n就通过共识存储新区块链创世区块1004q。在图10A中,新区块链创世区块1004q被存储在现有区块链102n的区块1004p中,区块1004p是由执行在区块1004o中存储或引用的计算机程序代码产生的区块。在至少一些不同示例实施方式(未示出)中,新区块链创世区块1004q可以存储在高于区块1004p的现有区块链102n上的区块,也就是,在存储或引用被执行来生成新区块链创世区块1004q的计算机程序代码的区块之上的一个或多个区块中。
一旦新区块链创世区块1004q变为存储在现有区块链102n中,方法900就前进到框904并且现有区块链102n将新区块链创世区块1004q用作新区块链102o的第一区块来导致新区块链102o被托管。在图10A中,在新区块链创世区块1004q组成新区块链102o的一部分的时候,这被描述为从现有区块链102n的现在最高的区块1004p到新区块链创世区块1004q的箭头。新区块链102o可以被托管在现有区块链节点中的任何一个或多个上。
图10A也示出了区块1004p在时间t1被添加到现有区块链102n,以及此后新区块链102o在时间t2被托管。在时间t2,组成新区块链102o的节点包括现有区块链节点中的至少一个。在时间t2之后,新区块,例如图10A中标记为1004r的区块,随后可以被添加到它,新区块链102o可以选择停止被托管在现有区块链节点中的任何一个或多个上。一旦新区块链102o被托管,方法900就前进到图的框904并终止。组成新区块链102o的节点中的每一个具有它的节点标识符,例如公钥或令牌,该标识符在其创建时被存储在新区块链创世区块1004q中。
如上所述,在某些其他实施方式中,例如图10B中所描绘的,所希望的是引入对于现有区块链102n来说是外来的(也就是,不是现有区块链节点中的一个的)节点的节点标识符;为了图10B的目的,节点的公钥被用作节点标识符,尽管在不同的示例实施方式中可以使用不同类型的标识符,例如令牌。在此某些示例实施例中,新区块链创世区块1004q可以由那个外来节点生成并且包括那个外来节点的公钥,该公钥可以被数字地签名。再次应用方法900,方法900再次在框902处开始。在框904处将新区块链创世区块1004q存储在现有区块链102n中之前,方法900首先在外来节点处在现有区块链102n的外部生成新区块链创世区块1004q。与图10A的实施方式中一样,外来节点可以将唯一字符串用作种子来生成唯一创世区块。
在生成新区块链创世区块1004q之后,外来节点托管把新区块链创世区块1004q作为其唯一的区块的新区块链102o;这在图10B中被表示为在时间t0的新区块链创世区块1004q。新区块链创世区块1004q是以被认可的格式生成的,该格式对于现有区块链102n来说是已知的。例如,新区块链创世区块1004q可以包括配置文件,该配置文件包括标识现有区块链102n的链标识符;被外来节点信任且被允许联接新区块链102o的公钥的列表;以及标识新区块链102o可以使用链联接向哪些其他区块链发送数据并从其接收数据的链标识符的列表。在至少一些不同示例实施方式中,配置文件可以在格式上不同。在至少所述示例实施方式中,经由旁信道,系统100中的节点104中的至少一些的公钥以及系统100中的所有区块链102的链标识符是对于所有节点104来说是已知的,因而它们中的任何一个都可以被结合到新区块链创世区块1004q中。
外来节点邀请现有区块链节点中的一个来联接新区块链102o(“被邀请的节点”);该被邀请的节点的公钥组成新区块链创世区块1004q的一部分。被邀请的节点确定它当前是否正托管现有区块链102n。倘若是,被邀请的节点从新区块链102o接收新区块链创世区块1004q并确认它是否是被认可的格式的,该被认可的格式已经被标识为可被现有区块链102n接受的。如果它是被认可的格式的,被邀请的节点(该被邀请的节点也是现有区块链102n的成员)向现有区块链102n提出新区块链创世区块1004q通过共识被存储在现有区块链102n中;这可以例如通过被邀请的节点在现有区块链102n的动作池中放置动作来进行。这在图10B中被表示为在区块1004o处在被提出的时间t1时的新区块链创世区块1004q,在共识之后被形成为区块1004p的新区块的一部分。如果存储新区块链创世区块1004q的共识达成,新区块链创世区块1004q就被存储在现有区块链102n的区块中的一个中,这在图10B中被描绘为在时间t2时的在新形成的区块1004p中的新区块链创世区块1004q。这样,如图9中在框904处所示新区块链创世区块1004q被存储在现有区块链102n中并且是以类似于如上针对图10A所述的方式。在新区块链创世区块1004q被存储在现有区块链中之后,它是可由所有现有区块链节点访问的。然后那些节点中的任何一个或多个可以自动地选择托管新区块链102o,这发生在框906处。然后方法900在框908处终止。一旦方法900终止,新区块链102o就正常操作并通过添加区块1004r以及随后的区块来在高度上增长,如图中通过在时间t3时在现有区块链102n的外部的新区块链创世区块1004q所示出的。
在至少一些示例实施方式中,在新区块链创世区块1004q被存储在现有区块链102n中之后,外来节点联接现有区块链102n并变为现有区块链节点中的一个。然而,在其他实施方式中,外来节点不联接现有区块链102n而是通过具有现有和新区块链102n、o链联接与现有区块链共享数据。
在至少一些示例实施方式中,系统100可以包括用来托管现有区块链102n的一个或多个服务器。用户可以使用客户端设备来访问一个或多个服务器,在该客户端设备上运行诸如网络浏览器的合适的软件。用户可能希望安全地发送数据到系统100。为此,用户可以使用如上就图10B所述的实施方式。也就是说,用户可以使用她的客户端设备来生成新区块链创世区块1004q;例如,用户的网络浏览器可以生成创世区块1004q并托管将该客户端设备用作初始节点的新区块链102o。从一个或多个服务器的角度来看,客户端设备具有未知的可靠性并且快速将数据从新区块链102o传输到服务器可能是有益的。因此客户端设备邀请服务器上的现有区块链节点中的一个来联接新区块链102o;被邀请的节点向现有区块链102n提出新区块链创世区块1004q应当被存储在现有区块链102n中;如果现有区块链102n达成存储新区块链创世区块1004q的共识,新区块链创世区块1004q就这样被存储在被添加到现有区块链102n的新区块中;以及然后如上所述现有区块链节点中的至少一些能够联接新区块链102o。新区块链102o因此变为将相对可靠的服务器用作新节点来存储的,同时也可以访问那些服务器的资源。
如上就图4所述,确定新区块链创世区块1004q和托管新区块链102o中的一个或两个可以作为接收来自第三区块链(未在图10中示出)的动作的结果而发生。例如,现有区块链102n可以充当图5A中的消费者链102b,第三区块链可以充当图5A中的供应者链102a,以及读联接可以包括从第三区块链发送链托管动作到现有区块链102n,该链托管动作在由现有区块链102n执行的时候导致现有区块链102n执行图9的方法900。相似地,现有区块链102n可以使用链联接来控制新区块链102o,现有和新区块链102n、o可以使用链联接,安全地与彼此交换包括动作的数据。
以上已经参考方法、装置、系统和计算机程序产品的流程、序列和框图描述了实施方式。在这点上,所描绘的流程、序列和框图说明了各种实施方式的实现的架构、功能和操作。例如,流程和框图的每个框以及序列图中的操作可以表示代码的模块、段或部分,其包括用于实现指定动作的一个或多个可执行指令。在一些替代实施方式中,在那个框或操作中提到的动作可以以与那些图中提到的顺序不同的顺序发生。例如,在一些实施方式中,连续示出的两个框或操作可以基本上同时执行,或者这些框或操作有时可以以相反的顺序执行,这取决于所涉及的功能。前面已经提到了一些前述具体的示例,但是那些提到的示例不一定是仅有的示例。流程图和框图的每个框以及序列图的操作,以及这些框和操作的组合,可以由执行指定功能或行为的基于专用硬件的系统,或者专用硬件和计算机指令的组合来实现。
在此使用的术语仅仅是为了描述特定的实施方式,而不是旨在限制。因此,如在此所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文清楚地另有指示。还要理解的是,当在本说明书中使用时,术语“包括(comprises)”和“包括(comprising)”指定一个或多个所述特征、整数、步骤、操作、元件和组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和组的存在或添加。诸如“顶部”、“底部”、“向上”、“向下”、“垂直”和“横向”之类的方向性术语在以下描述中仅用于提供相对参考的目的,并不旨在对任何物品在使用期间如何定位、如何安装在组合中或如何相对于环境提出任何限制。此外,除非另有说明,否则本说明书中使用的术语“耦合”及其变形如“耦合(coupled)”、“耦合(couples)”和“耦合(coupling)”旨在包括间接和直接连接。例如,如果第一设备耦合到第二设备,则该耦合可以是通过直接连接或者通过经由其他设备和连接的间接连接的。类似地,如果第一设备通信地耦合到第二设备,则通信可以是通过直接连接或者通过经由其他设备和连接的间接连接的。
可以预期的是,本说明书中讨论的任何方面或实施方式的任何部分都可以实现或与本说明书中讨论的任何其他方面或实施方式的任何部分结合。
在解释权利要求时,要理解的是,至少在权利要求中肯定地陈述了计算机设备的存在或使用的情况下使用那个计算机设备,例如处理器,来实现在此描述的实施方式是必要的。还要理解的是,实现区块链固有地需要计算机设备,例如用于创建和认证新区块的处理器、用于存储区块链的存储器以及用于允许节点之间的通信的网络接口,这是达成共识所必需的。
一个或多个示例实施方式已经通过只是说明的方式描述了。本说明书是出于说明和描述的目的而提出的,而不是旨在是无遗漏的或受限于所公开的形式。对于本领域技术人员来说显而易见的是,许多变化和修改可以在不脱离权利要求书的范围的情况下做出。
Claims (28)
1.一种用于在组成现有区块链的一部分的节点上托管新区块链的方法,所述方法包括:
(a)在所述现有区块链中,存储所述新区块链的创世区块;和
(b)在组成所述现有区块链的一部分的所述节点上,托管将所述新区块链的所述创世区块用作所述新区块链的第一区块的所述新区块链。
2.根据权利要求1所述的方法,其中所述新区块链的所述创世区块包括组成所述现有区块链的一部分的所述节点的节点标识符。
3.根据权利要求2所述的方法,其中所述节点标识符包括组成所述现有区块链的一部分的所述节点的公钥。
4.根据权利要求1至3中任一项所述的方法,其中在所述现有区块链中存储所述新区块链的所述创世区块包括基于所述现有区块链的创世区块来确定所述新区块链的所述创世区块。
5.根据权利要求4所述的方法,其中所述现有区块链包括链接到所述现有区块链的所述创世区块的区块,并且其中作为执行在所述现有区块链上存储或引用的计算机程序代码的结果,执行确定所述新区块链的所述创世区块。
6.根据权利要求5所述的方法,其中所述计算机程序代码,在执行时,在组成所述现有区块链的所述区块中最高的区块中被存储或引用。
7.根据权利要求5所述的方法,其中所述计算机程序代码,在执行时,在组成所述现有区块链的所述区块中最高的区块之下被存储或引用。
8.根据权利要求5至7中任一项所述的方法,其中生成所述新区块链的所述创世区块包括生成所述现有区块链上最高的区块的哈希以及将所述哈希用作种子来生成所述新区块链的所述创世区块。
9.根据权利要求5至7中任一项所述的方法,其中生成所述新区块链的所述创世区块包括生成所述现有区块链上的创世区块的哈希以及将所述哈希用作种子来生成所述新区块链的所述创世区块。
10.根据权利要求5至7中任一项所述的方法,其中生成所述新区块链的所述创世区块包括生成在所述现有区块链的所述创世区块之上并在所述现有区块链的最高的区块之下的任何一个区块的哈希,以及将所述哈希用作种子来生成所述新区块链的所述创世区块。
11.根据权利要求5至10中任一项所述的方法,还包括,在所述现有区块链处,接收来自第三区块链的链托管动作,其中所述现有区块链响应于所述动作来执行所述生成和所述托管。
12.根据权利要求11所述的方法,其中所述动作包括在所述第三区块链的至少一个区块上存储的所有应用数据的适当子集的一部分,其中所述接收包括:
(a)在所述现有区块链处从所述第三区块链接收:
(i)允许所述现有区块链验证所述第三区块链的所述至少一个区块的世系的世系验证数据;
(ii)使用所述至少一个区块存储的所有应用数据的所述适当子集;和
(iii)允许所述现有区块链验证从所述第三区块链发送到所述现有区块链的所有应用数据的所述适当子集的有效性的有效性验证数据;
(b)使用所述世系验证数据来验证所述第三区块链的所述至少一个区块的世系;
(c)使用所述有效性验证数据来验证所有应用数据的所述适当子集的有效性;和
(d)将新区块添加到所述现有区块链,其中所述新区块用于存储包括从所述第三区块链接收的所述世系验证数据、所有应用数据的所述适当子集以及所述有效性验证数据的应用数据。
13.根据权利要求1所述的方法,其中存储所述新区块链的所述创世区块包括:
(a)在所述现有区块链处,接收将新区块添加到包括所述新区块链的所述创世区块的所述现有区块链的提案;和
(b)在所述现有区块链已经针对添加所述新区块达成共识之后,将所述新区块添加到所述现有区块链。
14.根据权利要求13所述的方法,其中所述新区块链的所述创世区块由不组成所述现有区块链的一部分的外来节点来生成。
15.根据权利要求13或14所述的方法,其中所述新区块链的所述创世区块包括组成所述现有区块链的一部分的被邀请的节点的节点标识符,并且其中所述被邀请的节点提交所述提案来将所述新区块添加到所述现有区块链。
16.根据权利要求15所述的方法,其中所述节点标识符包括所述被邀请的节点的公钥。
17.根据权利要求15或16所述的方法,其中所述被邀请的节点在提交所述提案来将所述新区块添加到所述现有区块链之前验证所述新区块链的所述创世区块是可接受的格式的。
18.根据权利要求17所述的方法,其中所述可接受的格式包括标识所述现有区块链的链标识符以及被允许联接所述新区块链的节点标识符的列表。
19.根据权利要求18所述的方法,其中所述可接受的格式还包括链标识符的列表,所述链标识符的列表用于标识所述新区块链可以发送数据到哪些区块链并且所述新区块链可以从哪些区块链接收数据。
20.根据权利要求13至19中任一项所述的方法,其中所述新区块链的所述创世区块由客户端设备生成。
21.根据权利要求20所述的方法,其中所述客户端设备上的网络浏览器生成所述新区块链的所述创世区块。
22.根据权利要求13至21中任一项所述的方法,其中所述被邀请的节点是组成托管所述新区块链的所述现有区块链的一部分的所述节点。
23.根据权利要求13至21中任一项所述的方法,其中所述被邀请的节点不同于组成托管所述新区块链的所述现有区块链的一部分的所述节点。
24.根据权利要求1至23中任一项所述的方法,还包括从所述现有区块链向所述新区块链发送:
(a)允许所述新区块链验证所述现有区块链的至少一个区块的世系的世系验证数据;
(b)使用所述现有区块链的所述至少一个区块存储的所有应用数据的适当子集;和
(c)允许所述新区块链验证从所述现有区块链发送到所述新区块链的所有应用数据的所述适当子集的有效性的有效性验证数据。
25.根据权利要求1至23中任一项所述的方法,还包括:
(a)在所述现有区块链处从所述新区块链接收:
(i)允许所述现有区块链验证所述新区块链的至少一个区块的世系的世系验证数据;
(ii)使用所述新区块链的所述至少一个区块存储的所有应用数据的适当子集;和
(iii)允许所述现有区块链验证从所述新区块链发送到所述现有区块链的所有应用数据的所述适当子集的有效性的有效性验证数据;
(b)使用所述世系验证数据来验证所述新区块链的所述至少一个区块的世系;
(c)使用所述有效性验证数据来验证从所述新区块链接收的所有应用数据的所述适当子集的有效性;和
(d)将新区块添加到所述现有区块链,其中所述新区块用于存储包括从所述新区块链接收的所述世系验证数据、所有应用数据的所述适当子集以及所述有效性验证数据的应用数据。
26.根据权利要求1至25中任一项所述的方法,还包括,在所述新区块已经被托管在所述现有区块链的所述节点上之后,停止在所述现有区块链的所述节点上托管所述新区块链,但仍然在不组成所述现有区块链的一部分的节点上托管所述新区块链。
27.一种用于托管新区块链的系统,所述系统包括组成现有区块链的一部分的第一节点,所述第一节点包括:
(a)用于与组成所述现有区块链的一部分的另一节点对接的网络接口硬件;
(b)其上已经存储了所述现有区块链的数据存储;
(c)通信地耦合到所述数据存储和网络接口硬件的处理器;和
(d)通信地耦合到所述处理器且其上已经存储了计算机程序代码的存储器,所述计算机程序代码能够由所述处理器执行且在由所述处理器执行时致使所述处理器执行根据权利要求1至26中任一项所述的方法。
28.一种其上已经存储了计算机程序代码的非暂时性计算机可读介质,所述计算机程序代码能够由处理器执行且在由所述处理器执行时致使所述处理器执行根据权利要求1至26中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862661052P | 2018-04-22 | 2018-04-22 | |
US62/661,052 | 2018-04-22 | ||
PCT/CA2019/050452 WO2019204905A1 (en) | 2018-04-22 | 2019-04-12 | Method and system for hosting a new blockchain using an existing blockchain node |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110799966A true CN110799966A (zh) | 2020-02-14 |
Family
ID=68293439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980002894.9A Withdrawn CN110799966A (zh) | 2018-04-22 | 2019-04-12 | 用于使用现有区块链节点来托管新区块链的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10693654B2 (zh) |
CN (1) | CN110799966A (zh) |
WO (1) | WO2019204905A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538780A (zh) * | 2020-04-01 | 2020-08-14 | 深圳创客区块链技术有限公司 | 区块链单链转换为主次双链的方法、装置及存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556874B2 (en) * | 2018-06-11 | 2023-01-17 | International Business Machines Corporation | Block creation based on transaction cost and size |
US10949548B2 (en) | 2018-10-18 | 2021-03-16 | Verizon Patent And Licensing Inc. | Systems and methods for providing multi-node resiliency for blockchain peers |
US11775962B2 (en) * | 2019-04-11 | 2023-10-03 | Mastercard International Incorporated | Method and system for improved blockchain performance through aggregation |
SG11202001989WA (en) | 2019-07-11 | 2020-04-29 | Alibaba Group Holding Ltd | Shared blockchain data storage |
SG11202002017YA (en) | 2019-07-11 | 2020-04-29 | Alibaba Group Holding Ltd | Shared blockchain data storage |
WO2019179538A2 (en) * | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
US20220329436A1 (en) * | 2021-04-13 | 2022-10-13 | International Business Machines Corporation | Token-based identity validation via blockchain |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106452785A (zh) * | 2016-09-29 | 2017-02-22 | 财付通支付科技有限公司 | 区块链网络、分支节点及区块链网络应用方法 |
US20170116693A1 (en) * | 2015-10-27 | 2017-04-27 | Verimatrix, Inc. | Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger |
WO2017082238A1 (ja) * | 2015-11-09 | 2017-05-18 | 日本電信電話株式会社 | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム |
CN106886560A (zh) * | 2016-12-29 | 2017-06-23 | 北京瑞卓喜投科技发展有限公司 | 树形区块链的生成方法及系统 |
CN106897351A (zh) * | 2016-12-29 | 2017-06-27 | 北京瑞卓喜投科技发展有限公司 | 有向无环图型区块链的生成方法及系统 |
WO2017109140A1 (en) * | 2015-12-22 | 2017-06-29 | Bigchaindb Gmbh | Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction |
CN106909605A (zh) * | 2016-12-29 | 2017-06-30 | 北京瑞卓喜投科技发展有限公司 | 沿横向拓展的区块链的生成方法及系统 |
CN107066495A (zh) * | 2016-12-29 | 2017-08-18 | 北京瑞卓喜投科技发展有限公司 | 沿纵向拓展的区块链的生成方法及系统 |
CN107231239A (zh) * | 2017-06-27 | 2017-10-03 | 中国联合网络通信集团有限公司 | 创世区块防伪方法及装置 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN107577427A (zh) * | 2017-08-31 | 2018-01-12 | 上海保险交易所股份有限公司 | 用于区块链系统的数据迁移方法、设备和存储介质 |
CN107612973A (zh) * | 2017-08-18 | 2018-01-19 | 暨南大学 | 用于智能移动端的区块链结构、生成方法及交易验证方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160342977A1 (en) * | 2015-05-20 | 2016-11-24 | Vennd.io Pty Ltd | Device, method and system for virtual asset transactions |
US10805393B2 (en) * | 2015-12-02 | 2020-10-13 | Olea Networks, Inc. | System and method for data management structure using auditable delta records in a distributed environment |
US9985964B2 (en) * | 2016-03-28 | 2018-05-29 | Black Gold Coin, Inc. | Systems and methods for providing block chain-based multifactor personal identity verification |
US11165862B2 (en) * | 2017-10-24 | 2021-11-02 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
US20190180276A1 (en) * | 2017-12-07 | 2019-06-13 | Bank Of America Corporation | Automated Event Processing Computing Platform for Handling and Enriching Blockchain Data |
US20190238316A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment |
-
2019
- 2019-04-12 WO PCT/CA2019/050452 patent/WO2019204905A1/en active Application Filing
- 2019-04-12 CN CN201980002894.9A patent/CN110799966A/zh not_active Withdrawn
- 2019-09-12 US US16/568,948 patent/US10693654B2/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170116693A1 (en) * | 2015-10-27 | 2017-04-27 | Verimatrix, Inc. | Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger |
WO2017082238A1 (ja) * | 2015-11-09 | 2017-05-18 | 日本電信電話株式会社 | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム |
WO2017109140A1 (en) * | 2015-12-22 | 2017-06-29 | Bigchaindb Gmbh | Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction |
CN106452785A (zh) * | 2016-09-29 | 2017-02-22 | 财付通支付科技有限公司 | 区块链网络、分支节点及区块链网络应用方法 |
CN106886560A (zh) * | 2016-12-29 | 2017-06-23 | 北京瑞卓喜投科技发展有限公司 | 树形区块链的生成方法及系统 |
CN106897351A (zh) * | 2016-12-29 | 2017-06-27 | 北京瑞卓喜投科技发展有限公司 | 有向无环图型区块链的生成方法及系统 |
CN106909605A (zh) * | 2016-12-29 | 2017-06-30 | 北京瑞卓喜投科技发展有限公司 | 沿横向拓展的区块链的生成方法及系统 |
CN107066495A (zh) * | 2016-12-29 | 2017-08-18 | 北京瑞卓喜投科技发展有限公司 | 沿纵向拓展的区块链的生成方法及系统 |
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN107231239A (zh) * | 2017-06-27 | 2017-10-03 | 中国联合网络通信集团有限公司 | 创世区块防伪方法及装置 |
CN107612973A (zh) * | 2017-08-18 | 2018-01-19 | 暨南大学 | 用于智能移动端的区块链结构、生成方法及交易验证方法 |
CN107577427A (zh) * | 2017-08-31 | 2018-01-12 | 上海保险交易所股份有限公司 | 用于区块链系统的数据迁移方法、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
于博;: "区块链技术创造共享经济模式新变革" * |
李淼;: "区块链模式下金融业创新与监管研究" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538780A (zh) * | 2020-04-01 | 2020-08-14 | 深圳创客区块链技术有限公司 | 区块链单链转换为主次双链的方法、装置及存储介质 |
CN111538780B (zh) * | 2020-04-01 | 2023-01-13 | 深圳创客区块链技术有限公司 | 区块链单链转换为主次双链的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10693654B2 (en) | 2020-06-23 |
US20200007317A1 (en) | 2020-01-02 |
WO2019204905A1 (en) | 2019-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10764034B2 (en) | Method and system for facilitating data transfer between blockchains | |
US10693654B2 (en) | Method and system for hosting a new blockchain using an existing blockchain node | |
US11281457B2 (en) | Deployment of infrastructure in pipelines | |
US11921703B2 (en) | Dag based methods and systems of transaction processing in a distributed ledger | |
EP3652886B1 (en) | Blockchain | |
US10528551B2 (en) | System and method for providing a representational state transfer proxy service for a blockchain cloud service | |
US10740139B2 (en) | Method and system for performing hyperconvergence using blockchains | |
CN110753916A (zh) | 用于虚拟化区块链的方法和系统 | |
US10404474B1 (en) | Systems and methods for container orchestration security | |
US20110126197A1 (en) | System and method for controlling cloud and virtualized data centers in an intelligent workload management system | |
CN111294379B (zh) | 区块链网络服务平台及其权限托管方法、存储介质 | |
US20240054125A1 (en) | Systems and methods of transaction identification generation for transaction-based environment | |
JP2024505692A (ja) | ブロックチェーンネットワークに基づくデータ処理方法、装置及びコンピュータ機器 | |
US11057209B2 (en) | Methods and systems that efficiently and securely store data | |
EP3317875A1 (en) | Virtual machine integrity | |
Nogueira et al. | CloudBFT: elastic byzantine fault tolerance | |
CN110730959A (zh) | 用于执行由区块链请求的动作的方法和系统 | |
US10892887B2 (en) | Method and system for storing a binary large object | |
KR102309503B1 (ko) | 블록체인을 이용한 트랜잭션 방법, 노드 장치 및 컴퓨터 판독 가능한 기록 매체 | |
CN112181599A (zh) | 模型训练方法、装置及存储介质 | |
Ahmed | A performance study of Hyperledger Fabric in a Smart Home and IoT Environment | |
Jana et al. | {EVE}: Verifying Correct Execution of {Cloud-Hosted} Web Applications | |
Reyes‐Anastacio et al. | Kulla‐RIV: A composing model with integrity verification for efficient and reliable data processing services | |
Lembke | Practical Cloud Computing Infrastructure | |
Nogueira | CloudBFT: Elastic Byzantine Fault-Tolerant Web Server |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200214 |
|
WW01 | Invention patent application withdrawn after publication |