CN117546167A - 多级区块链 - Google Patents
多级区块链 Download PDFInfo
- Publication number
- CN117546167A CN117546167A CN202280044479.1A CN202280044479A CN117546167A CN 117546167 A CN117546167 A CN 117546167A CN 202280044479 A CN202280044479 A CN 202280044479A CN 117546167 A CN117546167 A CN 117546167A
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- blockchain
- chain
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 112
- 239000013598 vector Substances 0.000 claims abstract description 20
- 238000013515 script Methods 0.000 claims description 165
- 230000006870 function Effects 0.000 claims description 31
- 238000012795 verification Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 21
- 239000000969 carrier Substances 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 claims description 19
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 15
- 230000009471 action Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 239000000446 fuel Substances 0.000 description 5
- 230000001902 propagating effect Effects 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000005065 mining Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 239000000428 dust Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005242 forging Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000005018 casein Substances 0.000 description 1
- BECPQYXYKAMYBN-UHFFFAOYSA-N casein, tech. Chemical compound NCCCCC(C(O)=O)N=C(O)C(CC(O)=O)N=C(O)C(CCC(O)=N)N=C(O)C(CC(C)C)N=C(O)C(CCC(O)=O)N=C(O)C(CC(O)=O)N=C(O)C(CCC(O)=O)N=C(O)C(C(C)O)N=C(O)C(CCC(O)=N)N=C(O)C(CCC(O)=N)N=C(O)C(CCC(O)=N)N=C(O)C(CCC(O)=O)N=C(O)C(CCC(O)=O)N=C(O)C(COP(O)(O)=O)N=C(O)C(CCC(O)=N)N=C(O)C(N)CC1=CC=CC=C1 BECPQYXYKAMYBN-UHFFFAOYSA-N 0.000 description 1
- 235000021240 caseins Nutrition 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
-
- 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/3247—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 involving digital signatures
- H04L9/3255—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 involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机实现的方法,用于使用多级ML数据链协议在核心区块链上嵌入数据链,包括:获取一个或多个ML事务,其中每个ML事务包括一个或多个载体对,每个载体对包括输入和输出,其中每个输出包括与所述数据链相关联的数据,并且其中每个输入包括对所述载体对签署的签名;生成所述ML数据链的第一ML区块,其中所述第一ML区块是核心区块链事务并且a)包括所获取的一个或多个ML事务的所述相应载体对,其中对于每个载体对,所述相应输入的相应位置索引对应于所述相应输出的相应位置索引,以及b)第一链输出,其中所述第一链输出用于由后续ML区块的相应链输入花费。
Description
技术领域
本公开涉及一种使用多级数据链协议在区块链上嵌入数据的方法。
背景技术
区块链是指一种分布式数据结构,其中在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。
区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字通证);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
成功解决工作证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即通证数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字通证或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二(目标)事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二(目标)事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
发明内容
本文认识到,利用基于UTXO的事务模型的区块链可以用作二级数据链(secondarydata chain)的载体。在一些示例中,所述二级数据链可以是二级区块链(即,除了充当所述载体的区块链之外的区块链)。如果现有二级区块链或其网络变得不可行(例如,由于缺乏哈希算力),这可能是有利的。例如,可以通过将所述二级区块链嵌入可行的核心区块链内,来保留所述二级网络的用户持有的数字通货的单位。另一种情况可能是私有区块链的所有者需要数据完整性证明。这可以通过将私有数据以其原始形式或作为加密承诺嵌入公共核心区块链中作为数据的不可变记录来实现。在其他示例中,所述二级数据链可以是非区块链相关的,并且通常可以是任何数据结构,其中所述数据被布置为链,例如仅追加日志。此类数据结构的示例包括通信链(例如,电子邮件或文本消息链)、移动有序游戏(例如,国际象棋)等。通过使用所述核心区块链作为所述二级数据链的载体,所述二级链继承所述核心区块链的优点,包括数据的不可变性、可追踪性、透明性和安全性等。
根据本文公开的一个方面,提供了一种计算机实现的方法,用于利用多级ML数据链协议在核心区块链上嵌入数据链,其中所述方法由ML区块生成器执行并且包括:获取一个或多个ML事务,其中每个ML事务包括一个或多个相应载体对,每个载体对包括相应输入和相应输出,其中每个相应输出包括与所述数据链相关联的相应数据,并且其中每个相应输入包括对所述相应载体对进行签署的相应签名;生成所述ML数据链的第一ML区块,其中所述第一ML区块是核心区块链事务并且包括:a)所获取的一个或多个ML事务的所述相应载体对,其中对于每个载体对,所述相应输入的相应位置索引对应于所述相应输出的相应位置索引,以及b)第一链输出,其中所述第一链输出用于由后续ML区块的相应链输入来花费;以及,使所述第一ML区块记录在所述核心区块链上。
术语“多级”(multi-level,ML)协议指代将二级数据链作为底层核心区块链(即,第一级区块链)之上(即,使用所述底层核心区块链)的更高级数据链嵌入的协议。所述数据链可以被解释为第二级区块链,因为所述数据链包括采用所述第一级区块链的核心事务形式的数据块data block(即,所述ML区块)。应当注意的是,即使在所述二级数据链本身不是区块链(例如,通信链)的示例中,仍然使用称为ML区块的区块将所述二级数据构造(即,嵌入)在所述核心区块链上。根据所述ML协议,ML区块是核心区块链事务。ML区块是基于一个或多个ML事务来构建的。ML事务包括一个或多个载体对。载体对是输入-输出对,其中所述输出包括所述二级链的嵌入数据,所述嵌入数据可以采用加密形式,也可以不采用加密形式,例如使用哈希函数进行哈希处理。每个载体对使用相应签名进行签名。也就是说,单个签名对单个载体对进行签名。这使得载体对能够被放置到ML区块中,而不会使所述签名无效。ML区块还包括链输入和链输出,所述链输入和所述链输出用于将ML区块链接在一起,这类似于所述核心区块链的区块头如何用于将核心区块链接在一起。应当注意的是,ML事务可以由载体对组成,在这种情况下,所述ML事务可以形成所述ML区块的一部分。在其他示例中,所述ML事务可以包括不需要包括在所述ML区块中的其他数据,其中可以提取所述载体对并将其放置到所述ML区块中。
简而言之,核心区块链事务链充当所述ML数据链(或ML区块链)的区块链。每个ML区块包括一个或多个载体对,其中每个载体对包括所述二级数据链(例如,二级区块链)的嵌入数据。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3A示出了客户端应用程序的示意性框图;
图3B示出了可由图3A的客户端应用程序表示的示例性用户界面的示意性模型;
图4示出了用于处理事务的一些节点软件的示意性框图;
图5示意性地示出了用于实现多级区块链协议的示例性系统;
图6是示例性核心区块链事务的示意图;
图7示意性地示出了由S|ACP签名进行签名的事务信息如何用于授权特定输入的花费;
图8示意性地示出了a)基于UTXO的事务、b)事务输入以及c)事务输出的示例性序列化格式;
图9示意性地示出了示例性核心区块链区块的结构以及与区块链中先前区块的关系;
图10示意性地示出了包含S|ACP签名的输入-输出载体对的ML事务的示例,其中所嵌入的Tx数据被包括在OP_RETURN代码之后;
图11示意性地示出了其中区块信息嵌入在OP_RETURN输出中的ML区块的示例;
图12是示出ML协议中的一组示例性步骤的序列图;
图13是二级区块链事务的示例;
图14是嵌入二级区块链事务的ML事务的示例;
图15是二级区块链的Coinbase事务的示例;
图16是候选ML区块的示例;
图17示出了ML区块的元素到它们在核心区块链上的等效元素的映射;
图18是链接ML区块的UTXO链的示意图;
图19示意性地示出了示例性区块池协议。
具体实施方式
1.示例性系统概述
图1示出了一种用于实现区块链150的示例性系统100。系统100可以包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个区块链节点104,该多个区块链节点可以被设置成在分组交换网络101内形成对等(P2P)网络106。虽然未示出,但是区块链节点104可以被设置为近完全图。因此,每个区块链节点104高度连接到其它区块链节点104。
每个区块链节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个区块链节点104包括处理装置,该处理装置包括一个或多个处理器,例如一个或多个中央处理单元(CPU)、加速器处理器、专用处理器和/或现场可编程门阵列(FPGA),以及其它设备,例如专用集成电路(ASIC)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。
区块链150包括数据的区块151的链,其中在分布式或区块链网络106中的多个区块链节点104中的每个节点处维护区块链150的相应副本。如上所述,维护区块链150的副本不一定意味着完全存储区块链150。相反,只要每个区块链节点150存储每个区块151的区块头(下面讨论),区块链150就可以进行数据修剪。区块链中的每个区块151均包括一个或多个事务152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链全程使用一个特定的事务协议。在一种常见的事务协议中,每个事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定将数字资产的数量表示为财产的数额,其一个示例是输出被密码锁定到的用户103(需要该用户的签名或其它解进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。每个事务152(除coinbase事务之外)包括指向先前事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或多个原始事务152指向创始区块153,而非先前事务。
每个区块链节点104被配置为将事务152转发到其它区块链节点104,从而使得事务152在整个网络106中传播。每个区块链节点104被配置为创建区块151,并将相同区块链150的相应副本存储在其相应的存储器中。每个区块链节点104还维护等待并入到区块151中的事务152的有序集(或“池”)154。有序池154通常称为“内存池”。在本文中,该术语并不意在限制于任何特定的区块链、协议或模型。该术语是指节点104已接受为有效的有序事务集,并且对于该有序事务集,强制节点104不接受试图花费相同输出的任何其它事务。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,先前事务可以是有序集154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括输入授权,例如先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户或实体103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户或实体103b。在某些情况下,事务152可具有多个输出,以在多个用户或实体间分割输入数额(其中一个可以是原始用户或实体103a,以便进行变更)。在某些情况下,事务还可以具有多个输入,将一个或多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或多个输出。
根据基于输出的事务协议,例如比特币,当诸如个体用户或组织这类的一方103希望颁布新的事务152j时(由该方采用的自动程序或人为地),该颁布方将该新事务从其计算机终端102发送到接收者。颁布方或接收者将最终向网络106的一个或多个区块链节点104(现在通常是服务器或数据中心,但原则上也可以是其它用户终端)发送该事务。另外还不排除颁布新事务152j的一方103可以将事务直接发送到一个或多个区块链节点104,并且在一些示例中,可以不将事务发送到接收者。接收事务的区块链节点104根据在每个区块链节点104处应用的区块链节点协议来检查事务是否有效。区块链节点协议通常要求区块链节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的先前事务152i。在这种基于输出的事务协议中,这可以包括检查新事务152j的输入中包括的一方103的密码签名或其它授权是否与新事务分配的先前事务152i的输出中定义的条件匹配,其中该条件通常包括至少检查新事务152j的输入中的密码签名或其它授权是否解锁新事务的输入所链接到的先前事务152i的输出。条件可以至少部分地由包括在先前事务152i的输出中的脚本来定义。或者,这可仅由区块链节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,区块链节点104会将其转发到区块链网络106中的一个或多个其它区块链节点104。这些其它区块链节点104根据相同的区块链节点协议应用相同的测试,并因此将新事务152j转发到一个或多个其它节点104等等。通过这种方式,新事务在区块链节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否分配(例如,花费)的定义是,根据区块链节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图赎回的先前事务152i的输出尚未被另一个事务赎回。同样,如果无效,则事务152j将不会在区块链150中传播(除非被标记为无效并且被传播用于提醒)或记录。这可防止重复花费,即事务处理者对同一个事务的输出分配超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的事务顺序,账户余额在任何时候均具有单一定义的状态。
除了核实事务有效之外,区块链节点104还争相成为在通常称为挖矿的过程中创建事务区块的第一个节点,而该过程由“工作证明”支持。在区块链节点104处,新事务被添加到尚未出现在记录在区块链150上的区块151中的有效事务的有序池154。然后,区块链节点争相通过尝试解决加密难题以组装有序事务集154中事务152的新有效事务区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与未决事务有序池154的表示并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。注意,这仅仅是一种特定类型的工作证明难题,并且不排除其它类型。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个区块链节点104处消耗大量的处理资源。
解决难题的第一区块链节点104在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其它区块链节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。第一区块链节点104将一个区块传播到接受该区块的其它节点达成阈值共识,从而执行协议规则。然后,有序事务集154被每个区块链节点104记录为区块链150中的新区块151。区块指针155还分配给指向该区块链中先前创建的区块151n-1的新区块151n。创建工作证明解所需的大量工作(例如采用哈希的形式)发出信号通知第一节点104的意图以遵循区块链协议。这些规则包括如果它分配与先前核实有效的事务相同的输出,则不接受事务为有效,否则称之为重复花费。一旦创建,区块151就不能修改,因为它在区块链网络106中的每个区块链节点104处进行标识和维护。区块指针155还向区块151施加顺序。由于事务152记录在网络106中每个区块链节点104处的有序区块中,因此提供了事务的不可改变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同区块链节点104可以基于在任何给定时间尚未发布的事务的池154的不同快照来这样做,具体取决于它们何时开始搜索解或接收事务的顺序。解决相应难题的人员首先定义新区块151n中包括的事务152及其顺序,并且更新当前的未发布事务池154。然后,区块链节点104继续争相从新定义的未发布事务有序池154中创建区块,等等。此外,还存在解决可能出现的任何“分叉”的协议,其中两个区块链节点104彼此在很短的时间内解决难题,从而在节点104之间传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。应当注意的是,这不会影响网络的用户或代理,因为同一事务将出现在两个分叉中。
根据比特币区块链(和大多数其它区块链),成功构造新区块104的节点被授予在分配附加限定数量数字资产的新特殊类型事务中新分配附加的、接受的数额的数字资产的能力(与代理间或用户间事务相反,该事务将一定数量的数字资产从一个代理或用户转移到另一个代理或用户)。这种特殊类型的事务通常称为“coinbase事务”,但是也可以称为“启动事务”或“产生事务”。它通常形成新区块151n的第一事务。工作证明发出信号通知构造新区块的节点的意图以遵循协议规则,从而允许稍后赎回该特定事务。在可以赎回该特殊事务之前,区块链协议规则可能需要成熟期,例如100个区块。通常,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中发布该事务的区块151n的区块链节点104。该费用通常称为“事务费用”,并在下文中讨论。
由于事务核实和发布中涉及的资源,通常至少每个区块链节点104采用包括一个或多个物理服务器单元的服务器的形式,或者甚至整个数据中心。但是,原则上来说,任何给定区块链节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个区块链节点104的存储器均存储被配置为在区块链节点104的处理装置上运行的软件,以根据区块链节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于区块链节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。节点软件可以在应用层或诸如操作系统层或协议层的较低层或这些层任意组合的一个或多个应用中实现。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。这些用户可以与区块链网络106交互,但不参与核实事务或构造区块。其中一些用户或代理103可以充当事务中的发送者和接收者。其它用户可以与区块链150交互,而不必充当发送者或接收者。例如,一些当事方可以充当存储区块链150的副本(例如,已经从区块链节点104获得区块链的副本)的存储实体。
各方103中的一些或所有当事方可以作为不同网络的一部分连接,例如覆盖在区块链网络106之上的网络。区块链网络的用户(经常称为“客户端”)可以被称为是包含区块链网络106的系统的一部分;然而,这些用户不是区块链节点104,因为它们不执行区块链节点所需的角色。相反,每一方103可以与区块链网络106交互,从而通过连接到区块链节点106(即,与区块链节点106通信)来利用区块链150。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统100,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应方103能够创建、授权(例如签名)事务152并将其发送到一个或多个比特币节点104,然后在区块链节点104的网络中传播,从而包括在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
注意:虽然各种客户端功能可以描述为集成到给定客户端应用程序105中,但这不一定是限制性的,相反,在本文中所描述的任何客户端功能可以在由两个或更多个不同应用程序组成的套件中实现,例如经由API进行接口连接或一个应用程序作为另一个应用程序的插件。更通俗地说,客户端功能可以在应用层或诸如操作系统的较低层或这些层的任意组合实现。下面将根据客户端应用程序105进行描述,但应当理解的是,这不是限制性的。
每个计算机设备102上的客户端应用程序或软件105的实例可操作地耦合到网络106的区块链节点104中的至少一个。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联络区块链节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其它方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。如上所述,每个区块链节点104运行软件,该软件被配置为根据区块链节点协议核实事务152并转发事务152以便在区块链网络106中传播。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。相同的事务协议用于区块链150中的所有事务152。网络106中的所有节点104使用相同的节点协议。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送到她所连接的一个或多个区块链节点104。例如,这可能是与爱丽丝的计算机102最佳连接的区块链节点104。当任何给定区块链节点104接收新事务152j时,其将根据区块链节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性测试(即:“有效”的条件下),接收事务152j的任何区块链节点104将向在区块链节点104处维护的有序事务集154中添加新的核实有效事务152。进一步地,接收事务152j的任何区块链节点104随后将核实有效事务152传播至网络106中的一个或多个其它区块链节点104。由于每个区块链节点104应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个网络106中传播。
一旦进入在给定区块链节点104处维护的未决事务有序池154,该区块链节点104将开始争相解决其各自的包含新事务152的池154的最新版本上的工作证明难题(请记住,其它区块链节点104可以尝试基于不同的事务池154来解决难题。但是,首先解决难题的人将定义包括在最新区块151中的事务集合。最终,区块链节点104将解决有序池154的一部分的难题,该有序集154包括爱丽丝的事务152j)。一旦包括新事务152j的池154完成工作证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每个事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
不同的区块链节点104可以首先接收给定事务的不同实例,并且因此在一个实例被发布到新区块151中之前具有关于哪个实例“有效”的冲突视图,此时所有区块链节点104同意所发布的实例是唯一的有效实例。如果区块链节点104将一个实例接受为有效实例,然后发现第二实例已记录在区块链150中,则区块链节点104必须接受这一点,并将丢弃(即,视为无效)其最初接受的实例(即,在区块151中尚未公布的实例)。
作为基于账户的事务模型的一部分,由一些区块链网络操作的另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由网络的节点单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含先前事务的ID,该数据字段可指向先前事务。
2.基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。应当注意的是,虽然参考比特币描述了示例性基于UTXO的协议,但是它同样可以在其它示例区块链网络上实现。
在基于UTXO的模型中,每个事务(“Tx”)152包括数据结构,其包括一个或多个输入202和一个或多个输出203。每个输出203可包括未花费事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO包括指定数字资产数额的值。这表示分布式分类账上的一组通证。UTXO还可包含其来源事务的事务ID以及其它信息。事务数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至节点104的原始事务152的标头201中。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的后续事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150的区块151中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在有序集154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络106;或者,如果节点协议允许缓冲“孤立”事务,Tx0甚至可以在Tx1之后发送。本文事务序列上下文中使用的“先前”和“后续”一词是指由事务中指定的事务指针定义的序列中的事务顺序(哪个事务指向哪个其他事务等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定区块链节点104的顺序。然而,指向先前事务(先行事务或“父事务”)的后续事务(后代事务或“子事务”)不会有效除非父事务有效。在父事务之前到达区块链节点104的子事务被视为孤立事务。根据节点协议和/或节点行为,其可被丢弃或缓冲一段时间,以等待父事务。
先前事务Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续事务的输入202中的解锁脚本必须满足的条件,以使后续事务有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的事务的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续事务的输入中的解锁脚本包括先前事务被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写),其可由区块链网络所使用。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。
因此在示出的示例中,Tx0的输出203中的UTXO0包括锁定脚本[Checksig PA],该锁定脚本需要爱丽丝的签名Sig PA,以赎回UTXO0(严格来说,是为了使试图赎回UTXO0的后续事务有效)。[Checksig PA]包含爱丽丝的公私密钥对中的公钥PA的表示(即哈希)。Tx1的输入202包括指向Tx1的指针(例如,通过其事务ID(TxID0),其在实施例中是整个事务Tx0的哈希值)。Tx1的输入202包括在Tx0中标识UTXO0的索引,以在Tx0的任何其他可能输出中对其进行标识。Tx1的输入202进一步包括解锁脚本<Sig PA>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
当新事务Tx1到达区块链节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由锁定脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的解锁脚本是否包含爱丽丝签名预期部分的数据时的签名。也需要包括预期的部分数据本身(“消息”),以便执行此认证。在实施例中,签名的数据包括整个Tx1(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行验证的细节。基本上而言,如果爱丽丝已使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息,诸如节点104等其它实体可验证消息必须已经由爱丽丝签名。签署通常包括对消息进行哈希,签署哈希值和将此标记到消息作为签名,从而使公钥的任何持有者能够验证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或事务部分等的任何引用可以意味着对该数据片段或事务部分的哈希值进行签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行验证),则区块链节点104认为Tx1有效。这意味着区块链节点104会将Tx1添加到待定事务有序池154。区块链节点104还会将事务Tx1转发到网络106中的一个或多个其它区块链节点104,以便其会在整个网络106中传播。一旦Tx1有效并包括在区块链150中,这会将UTXO0从Tx0定义为已花费。应当注意的是,Tx1仅在花费未花费事务输出203时才有效。如果其试图花费另一事务152已经花费的输出,则即使满足所有其它条件,Tx1也将无效。因此,区块链节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(即,其是否已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定区块链节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务不会传播或包括在区块151中。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在后续事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零,或者支付给另一方。
在实践中,爱丽丝通常还需要包括用于比特币节点104的费用,该比特币节点104在区块151中成功包含爱丽丝的事务104。如果爱丽丝未包括此类费用,则Tx0可能会被区块链节点104拒绝,并且因此尽管在技术上有效,但可能不会传播并且包括在区块链150中(如果区块链节点104不希望接受事务152,节点协议不强迫区块链节点104接受)。在一些协议中,事务费用不需要其自身的单独输出203(即不需要单独的UTXO)。相反,输入202指向的总数额与给定事务152的输出203指定的总数额之间的任何差额都将自动提供给发布事务的区块链节点104。例如,假设指向UTXO0的指针是Tx1的唯一输入,并且Tx1仅具有一个输出UTXO1。如果在UTXO0中指定的数字资产数额大于在UTXO1中指定的数额,则可以由赢得工作证明竞赛以创建包含UTXO1的区块的节点104分配该差值。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定事务费用。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其它随后事务中尚未花费的各种UTXO值整理在一起。为实现这一点,其可以查询存储在任何一个比特币节点104处的区块链150的副本。
应当注意的是,脚本代码通常用示意图表示(即使用非精确语言)。例如,可以使用操作码(opcode)来表示特定功能。“OP_...”是指脚本语言的特定操作码。举例来说,OP_RETURN是脚本语言操作码,当在锁定脚本的开始处在操作码前加上OP_FALSE时,操作码创建事务的不可花费输出,该输出可以在事务内存储数据,从而将数据不可改变地记录在区块链150中。例如,数据可包括需存储在区块链中的文件。
通常,事务的输入包含对应于公钥PA的数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及部分或全部事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志通常是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其通常包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其通常提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行验证。更通俗地说,脚本语言可用于定义任何一个或多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
3.侧信道
如图1所示,爱丽丝和鲍勃的计算机设备102a、120b中的每个计算机设备上的客户端应用程序都可以包括附加通信功能。此附加功能可使爱丽丝103a建立与鲍勃103b的单独侧信道107(在任何一方或第三方的鼓动下)。侧信道107使得能够脱离区块链网络交换数据。此类通信有时称为“链下”通信。例如,这可用于在爱丽丝与鲍勃之间交换事务152,而不将该事务(尚未)注册到区块链网络106上或将其发布到链150上,直到其中一方选择将其广播到网络106上。以这种方式共享事务有时称为共享“事务模板”。事务模板可能缺少形成完整事务所需的一个或多个输入和/或输出。替代地或附加地,侧信道107可用于交换任何其它事务相关数据,例如密钥、议付数额或条款、数据内容等。
通过与区块链网络106相同的分组交换网络101可建立侧信道107。替代地或附加地,侧信道301可以经由诸如移动蜂窝网络的不同网络或者诸如无线局域网络的局域网建立,甚至经由爱丽丝和鲍勃的设备102a、102b之间的直接有线或无线链路建立。通常,在本文中任何地方所指的侧信道107可以包括经由一项或多项联网技术或通信介质的任何一条或多条链路,这些链路用于“链下”交换数据,即脱离区块链网络106交换数据。在使用多条链路的情况下,链下链路束或集合整体上可以称为侧信道107。因此,应当注意的是,如果说爱丽丝和鲍勃通过侧信道107交换某些信息或数据等,则这不一定意味着所有这些数据都必须通过完全相同的链路或甚至相同类型的网络发送。
4.客户端软件
图3A示出了用于实现本公开方案的实施例的客户端应用程序105的示例性实施方式。客户端应用程序105包括事务引擎401和用户界面(UI)层402。根据上文讨论的方案以及稍后将进一步详细讨论的内容,事务引擎401被配置为实现客户端105的基础事务相关功能,诸如制定事务152,通过侧信道301接收和/或发送事务和/或其他数据,和/或发送事务至一个或更多个节点104以通过区块链网络106传播。根据本文公开的实施例,每个客户端105的事务引擎401包括功能403...
该UI层402被配置为通过相应用户的计算机设备102的用户输入/输出(I/O)方式呈现用户界面,包括通过设备102的用户输出方式向相应用户103输出信息,和通过设备102的用户输入方式接收来自相应用户103的输入。例如,用户输出方式可包括提供视觉输出的一个或显示多个屏(触摸或非触摸屏)、提供音频输出的一个或更多个扬声器、和/或提供触觉输出的一个或更多个触觉输出设备等。用户输入方式可包括例如一个或更多个触摸屏的输入阵列(可与用于输出方式的那个/那些相同或不同);一个或更多个基于光标的设备,诸如鼠标、轨迹板或轨迹球;一个或更多个麦克风和语音或声音识别算法,用于接收语音或声音输入;一个或更多个基于手势的输入设备,用于接收手动或身体手势形式的输入;或者一个或更多个机械按钮、开关或控制杆等。
注:虽然本文中的各种功能可以被描述为集成到同一客户端应用程序105中,但这并不一定构成限制,相反,它们可以在两个或更多个不同应用程序组成的一套程序中实现,例如一个应用程序作为另一个应用程序的插件或经由API(应用程序编程接口)进行接口。比如,事务引擎401的功能可以在单独的应用程序中实现,而不是在UI层402中实现,或者诸如事务引擎401的给定模块的功能可以在多个应用程序之间分割。同时,也不排除部分或全部描述的功能可以在比如操作系统层实现。在本文任何位置引用单个或给定应用程序105或诸如此类的情况下,应当理解的是这只是作为示例,并且更通俗地说,所描述的功能可以在任何形式的软件中实现。
图3B给出了用户界面(UI)500的示例的模型,该UI可由客户端应用程序105a的UI层402在爱丽丝的设备102a上呈现。应当理解的是,类似的UI可以由客户端105b在鲍勃的设备102b或任何其他方的设备上呈现。
通过图示的方式,图3B从爱丽丝的角度示出了UI 500。该UI 500可包括一个或更多个UI元素501、502、503,该一个或更多个UI元素通过用户输出方式呈现为不同的UI元素。
例如,UI元素可包括一个或更多个用户可选择的元素501,这些元素可以是屏幕上的不同按钮、菜单中的不同选项或者诸如此类。用户输入方式被设置成使用户103(在这种情况下为爱丽丝103a)能够选择或以其它方式操作其中一个选项,诸如通过点击或触摸屏幕上的UI元素,或者说出所需选项的名称(注:本文使用的“手动”一词仅用于与自动进行对比,而不一定限于用手执行操作)。这些选项使得用户(爱丽丝)能够...
替代地或附加地,UI元素可包括一个或更多个数据输入字段502。用户能够通过其进行...这些数据输入字段通过用户输出方式呈现,例如屏幕上,并且数据可通过用户输入方式输入到字段中,例如键盘或触摸屏。或者,数据可以例如基于语音识别口头地接收。
替代地或附加地,UI元素可包括向用户输出信息的一个或更多个信息元素503。例如,这/这些可以在屏幕上呈现或可听见。
应当理解的是,呈现各种UI元素、选择选项和输入数据的特定方式并不重要。这些UI元素的功能稍后将进行更详细地讨论。还应当理解的是,图3中示出的UI 500只是一个图示模型,在实践中,它可包括一个或更多个进一步的UI元素,为了简洁起见,未对其进行说明。
5.节点软件
图4示出了在基于UTXO或基于输出的模型的示例中,在网络106的每个区块链节点104上运行的节点软件450的示例。应当注意的是,另一实体可以运行节点软件450,而不被分类为网络106上的节点104,即,不执行节点104所需的动作。节点软件450可以包含但不限于协议引擎451、脚本引擎452、堆栈453、应用级决策引擎454以及一个或多个区块链相关功能模块455的集合。每个节点104可以运行节点软件,该节点软件包含但不限于以下所有三个:共识模块455C(例如,工作证明)、传播模块455P和存储模块455S(例如,数据库)。协议引擎401通常被配置为识别事务152的不同字段,并根据节点协议处理此类字段。当接收到具有指向另一先前事务152i(Txm-1)的输出(例如,UTXO)的输入的事务152j(Txj)时,协议引擎451标识Txj中的解锁脚本并将其传递给脚本引擎452。协议引擎451还基于Txj的输入中的指针来标识和检索Txi。Txi可以在区块链150上发布,在这种情况下,协议引擎可以从存储在节点104处的区块链150的区块151的副本中检索Txi。或者,Txi还可以在区块链150上发布。在这种情况下,协议引擎451可以从节点104维护的未发布有序事务集154中检索Txi。无论采用哪种方式,脚本引擎451都会标识Txi的引用输出中的锁定脚本,并将其传递给脚本引擎452。
因此,脚本引擎452具有Txi的锁定脚本和来自Txj的相应输入的解锁脚本。例如,在图2中示出了事务标记的Tx0和Tx1,但是同样的事务也可以应用于任何事务对。如前所述,脚本引擎452一起运行两个脚本,这将包括根据所使用的基于堆栈的脚本语言(例如脚本)将数据放置到堆栈453上和从堆栈453检索数据。
通过同时运行脚本,脚本引擎452确定解锁脚本是否满足锁定脚本中定义的一个或多个标准,即解锁脚本是否对包括锁定脚本的输出进行解锁?脚本引擎452将该确定的结果返回给协议引擎451。如果脚本引擎452确定解锁脚本确实满足在相应的锁定脚本中指定的一个或多个标准,则返回结果“TRUE”。否则,返回结果“FALSE”。
在基于输出的模型中,来自脚本引擎452的结果“TRUE”是事务有效性的条件之一。通常,还必须满足由协议引擎451评估的一个或多个进一步协议级条件;例如,Txj的输入中所指定的数字资产的总数额不超过其输出中指向的总数额,并且Txi的指向输出尚未被另一有效事务花费。协议引擎451评估来自脚本引擎452的结果以及一个或多个协议级条件,并且只有当它们都为TRUE时,协议引擎才核实事务Txj有效。协议引擎451将事务是否有效的指示输出到应用级决策引擎454。只有在Txj确实有效的条件下,决策引擎454才可以选择同时控制共识模块455C和传播模块455P,以执行其就Txj.的相应区块链相关功能。这包括共识模块455C,向节点的相应有序事务集154添加Txj,用于并入区块151中;以及传播模块455P,将Txj转发到网络106中的另一个区块链节点104。可选地,在实施例中,应用级决策引擎454可以在触发这些函数中的一个或两个函数之前应用一个或多个附加条件。例如,决策引擎可以只选择在事务有效且预留足够事务费用的条件下发布事务。
此外,还应当注意的是,在本文中,术语“TRUE”和“FALSE”不一定限于返回仅以单个二进制数(位)形式表示的结果,尽管这确实是一种可能的实现方式。更通俗地说,“TRUE”可以指指示成功或肯定结果的任何状态,而“FALSE”可以指指示不成功或不肯定结果的任何状态。例如,在基于账户的模型中,可以对签名的隐式协议级核实和智能合约的附加肯定输出的组合来指示结果为“TRUE”(如果两个单独的结果均为TRUE,则认为总体结果为TRUE)。
6.核心区块链示例
本节描述了根据本发明的各实施例可以用作二级数据链的载体的核心(即,第一层)区块链的示例。应当注意的是,这些示例仅用于说明目的。
6.1核心事务
事务(transaction)是包括输入和输出的消息,这些输入和输出通常用于将对各种数量的数字资产的所有权或控制权从一组地址转移到另一组地址。图6示出了将各种数量的数字资产从由公钥PK0、PK1、PK2控制的三个输入分配给由公钥PK3、PK4、PK5、PK6控制的四个输出的事务。
示例性字段对应于以下信息:
●版本:一个4字节整数,对其值没有函数或限制。
●输入:一个事务输入数组,每个事务输入由以下子字段组成:
○输出点:一种标识正被花费的UTXO的结构,包括:
■TxID:正被花费的UTXO的32字节事务标识符TxID。
■索引:正被花费的UTXO的4字节输出索引n。
○解锁脚本:在与输入的锁定脚本组合时核实要花费的硬币的脚本。
○nSeq:一个4字节整数,默认值为0xFFFFFFFF。小于该默认值(最大值)的值指示该事务可能不是最终事务,并且可以被花费相同输入并且具有更高序列号的事务取代。当所有序列号已经设置为最大值时,或者当达到锁定时间时,该事务被视为最终事务。
●输出:一个事务输出数组,每个事务输出由以下子字段组成:
○值:一个8字节整数,指示输出的值(以聪为单位)。
○锁定脚本:锁定脚本,包含花费硬币必须满足的条件
●锁定时间:一个4字节整数,默认值为0。大于0的值强制执行延迟,指示事务可以包括在区块中的最早时间,按区块高度(对于小于500,000,000的值)或通过其他方式按UNIX时间。
6.2签名
在创建签名时,ECDSA算法需要私钥和消息。该消息是基于事务的一些详细信息形成的。验证签名可以:
●授权花费该签名应用的UTXO输入;以及
●对签名消息中的事务详细信息进行认证。
每个签名包含sighash标志,该标志指示哪些输入和输出进行了签名。SINGLE|ANYONE CAN PAY(S|ACP)标志变体保护签名核实花费的输入和位于对应索引位置的输出。图7(以灰色)突出显示了在为索引2处的输入中的解锁脚本创建S|ACP签名的情况下将保护的信息。对于其他输入或输出中的信息,使用S|ACP进行签名的输入-输出对没有施加任何限制,因此多个S|ACP签名对可以一起组合成单个事务中,而不会使任何签名无效。然而,如果对具有其值大于签名输出的输入,则该信息可能被恶意拦截器(在用户与网络之间运行)复制到竞争事务中,在该竞争事务中,多余的未分配值被重新路由到该拦截器的地址。因此,此类事务通常被直接路由到网络中的可信节点。
6.3数据输出
在核心区块链事务内,一个或多个输出可以包含一个或多个操作码,该一个或多个操作码使数据有效载荷能够包括在输出中。例如,OP_RETURN代码后面可能会跟一些数据(以字符串的形式)。操作码放置在解锁脚本的末尾,这允许事务充当数据载体,而不会中断签名核实过程。当在区块链上发布数据事务时,存在嵌入输出中的数据的不可变记录。OP_RETURN代码前面可以是OP_FALSE(0),这使得输出创建的UTXO不可花费(即,不需要由UTXO集中的完整节点存储),或者在不包含OP_FALSE的情况下用于创建可花费的UTXO。替代的操作码可以用于将数据包含在输出中,例如OP_PUSH和OP_DROP。
6.4版本号
事务版本号是一个包含数字的4字节字段。目前,尚未使用nVersion字段。因此,事务版本号可用于标识较大区块链内的事务的子集。4字节的字段大小提供232个可能的值。这可提供用于为不同用例分配事务版本的广泛范围。在当前共识规则下,非标准事务版本不会使事务无效,因此默认情况下,节点对所有事务的响应是相同的,而不考虑它们的版本。
6.5序列化格式
可以使用图8所示的序列化格式将事务表示为单个数据字符串。(a)示出了整个事务,而(b)和(c)示出了txin和txout字段的扩展格式(分别为每个输入和输出创建一个)。txin和txout序列化按照它们的索引位置的顺序进行级联,并被放置在(a)中的完整事务序列化内。这给出了可变长度的字符串,其中包含有关单个事务的所有信息。
6.6核心区块
区块是一种数据结构,该数据结构包含一组事务和一些附加字段,该附加字段涉及如何将区块追加到最长链(即,具有最大工作证明的链)。图9示出了区块结构的一个示例。示例性区块的字段如下:
●区块头:一种结构,提供有关区块的挖掘方式、时间及其内容的信息。这包括以下六个子字段:
○版本:一个4字节整数,指示用于区块核实的一组协议规则。
○先前区块头的哈希:先前区块头的32字节SHA-256双重哈希。
○默克尔根:从事务的默克尔树导出的32字节SHA-256双重哈希。
○时间戳:一个4字节整数,对区块生成器生成区块头的Unix时间进行编码。
○难度目标:一个4字节整数,对要挖掘的区块所需的目标难度进行编码。
○随机数:一个4字节整数,被选择用于实现所需难度的区块头哈希。
●事务:一种结构,详细描述区块内的事务。该结构包括:
○事务计数:一个表示可变长度的整数,指示区块中包含的事务的数量。
○事务列表:一种结构,包含区块中包括的事务的完整列表的事务数据。该列表中的第一事务始终是Coinbase事务(参见下文)。
6.7Coinbase事务
通常,区块中的第一事务不同于一般事务的结构,因为区块生成器使用该第一事务来领取挖掘激励。这也称为“生成”事务,因为每个区块生成新数量的数字资产。该新数量称为“区块奖励”并且包含在事务输出中。Coinbase事务数据结构与标准形式的区别仅在于包括输入的字段。Coinbase事务仅允许包含单个输入,如下定义:
●输出点:在这种情况下,没有花费UTXO。因此,子字段为:
○TxID:空字段,指示缺少先前输出点。
○索引:值0,指示缺少先前输出点。
●解锁脚本:没有要“解锁”的UTXO。该脚本现在由两个元素构成:
○高度:包含该事务的区块的4字节区块高度。
○Coinbase脚本:任意数据,最多96字节。
●nSeq:一个4字节整数,默认值为0xFFFFFFFF。
7.多级区块链
图5示出了用于实现多级(ML)区块链协议的示例性系统500。系统500包括一个或多个实体,该一个或多个实体被配置为向ML区块生成器501提交ML事务。例如,系统500可以包括一个或多个用户,例如爱丽丝103a、鲍勃103b和查理103c,每个用户被配置为生成ML事务。应当理解的是,系统500可以包括任何数量的用户。此外,应当注意的是,被配置为提交ML事务的实体不必是用户(在操作设备的人员的意义上)。也就是说,此类实体中的一个或多个实体可以是机器、智能合约等。ML区块生成器501被配置为接收和/或生成ML事务,生成ML区块(即,核心区块链事务),并将ML区块提交给核心区块链网络106。ML区块生成器501可以是核心区块链网络106的区块链节点104。也就是说,ML区块生成器可以被配置为生成ML区块和核心区块链区块151两者。在其他示例中,ML区块生成器可以是简单支付验证(SPV)客户端应用程序(即,被配置为实现SPV方法的客户端应用程序)。技术人员将熟悉SPV方法。也不排除ML区块生成器可以是用户,例如爱丽丝103a。也就是说,用户103可以生成ML事务和ML区块。系统500可以包括多个ML区块生成器501。
ML区块链协议用于使用核心区块链的事务来构造(或嵌入)与诸如二级区块链等数据链(“二级数据链”)相关联的数据。与二级数据链相关联的数据(例如,二级区块链事务)嵌入输入-输出对(称为载体对)的输出中。该载体对使用签名(例如,ECDSA签名)进行签名。该数据可以进行加密。ML区块生成器501被配置为获取ML事务,每个ML事务包括一个或多个载体对。ML区块生成器501可以生成一个或多个ML事务。也就是说,ML区块生成器501可以获取(例如,接收或生成)要嵌入到载体对中的数据。优选地,该数据通过安全通信信道进行传输。附加地或替代地,ML区块生成器501可以接收一个或多个ML事务,每个ML事务包括一个或多个载体对。ML事务可以通过核心区块链网络进行传输。例如,ML区块生成器501可以从一个或多个用户103接收ML事务。
ML区块生成器501被配置为基于所获取的(例如,所接收的)ML事务来生成ML区块。也就是说,ML区块生成器501被配置为使用来自一个或多个ML事务的一个或多个载体对来构建ML区块(核心区块链事务)。每个载体对的输入和输出分别在ML区块的输入列表和输出列表中占据相同的位置。可以基于获取载体对(或对应的ML事务)的顺序将载体对定位在ML区块中。在其他示例中,可以任意分配ML区块中的载体对的位置。ML区块包括用于链接ML区块的链输出。该链输出可以是逻辑上首先出现在ML区块中的输出,尽管这不是必需的。ML区块还包括链输入,该链输入引用并解锁ML区块链中的先前ML区块的链输出。同样,该链输出可以是逻辑上首先出现在ML区块中的输入。
ML区块生成器501被配置为使ML区块被记录在核心区块链上作为核心区块链事务。根据ML区块生成器501的能力,这可能涉及将ML区块包括在核心区块链的核心区块中。附加地或替代地,ML区块生成器501可以将ML区块提交给核心区块链网络106的一个或多个节点。
在一些示例中,ML区块生成器501可以维护(即,在存储器中存储)已经接收和/或生成的ML事务(或从ML事务中提取的载体对)的池(即,列表)。ML区块生成器501可以通过从该池中获取载体对来构建ML区块。例如,ML区块生成器501可以选择在ML区块中包括特定数量或少于特定数量的载体对。在这种情况下,ML区块生成器501可以将一些载体对放置在第一ML区块中,将该第一ML区块提交给核心网络106,然后将一些载体对放置在第二ML区块中,依此类推。换言之,ML区块生成器501使用该池作为载体对的源来构建ML区块。
现在回到对载体对进行签名的签名,在一些示例中,该签名可以与签名标志(有时称为“sighash标志”)相关联,该签名标志指示该签名仅对该载体对进行签名。这对于核实该签名很有用,因为这使核实者知道该签名进行签名的消息。该签名标志将取决于核心区块链协议。例如,一个示例性核心区块链协议可以为此目的使用签名标志“SINGLE|ANYONECANPAY”。
作为可选特征,每个ML事务可以是包括一个或多个载体对的无效核心区块链事务。也就是说,一个或多个载体对可以作为无效核心区块链事务提交给ML区块生成器501。这可防止载体对意外地包括在ML区块之外的核心区块链中。一种用于核实事务无效的技术是不包括任何事务费用。另一种技术是在生成该事务之后修改载体对的一部分,使得签名无效,并且因此使得事务无效。在接收到无效事务时,ML区块生成器501可以重新修改载体对中的数据,使得签名有效。为了做到这一点,ML区块生成器501必须知道载体对的哪一部分已经修改以及如何修改。这可以作为ML协议的一部分达成一致。
在一些示例中,每个ML区块可以包括区块头。该区块头可以放置在ML区块的链输出中。该区块头可以包括与ML区块相关的一个或多个值。这些值中的一个值可以是基于ML区块中的载体对生成的默克尔根。该默克尔根可以整体基于载体对(即,对应默克尔树的每个叶哈希是相应载体对的哈希)来生成,也可以仅基于载体对的数据输出(即,对应默克尔树的每个叶哈希是相应载体对的相应数据输出的哈希)来生成。这意味着该默克尔树仅与二级数据链相关。可以包括在区块头中的其他值是以下各项中的任何一项或多项:ML区块被创建或提交给核心网络106的时间戳、先前ML区块(即,当前ML区块的链输入引用的ML区块)的区块头的哈希、难度目标和随机数(下面讨论)、ML区块中的载体对的数量等。
如上所述,ML区块经由链输入和链输出链接在一起。也就是说,第n个ML区块的链输入花费第n-1个区块的链输出,而第n+1个区块的链输入花费第n个区块的链输出。在一些示例中,每个链输出可以包括谜题,并且每个链输入可以包括求解正被花费的链输出的谜题的解。该谜题可以是工作证明(proof-of-work,PoW)哈希谜题。也就是说,给定链输出的锁定脚本可以被配置为强制执行PoW哈希谜题。这类似于一些核心区块链需要如何求解PoW谜题才能追加新的核心区块。给定ML区块的PoW哈希谜题是该ML区块的区块头的函数和目标难度。技术人员将熟悉PoW哈希谜题的概念和目标难度本身。每个ML区块的目标难度可能是相同的,也可能发生变化,以便更容易或更难求解哈希谜题,这反过来会影响新的ML区块可能被添加到ML链的速率。更具体地,给定ML区块的PoW哈希谜题是该ML区块的区块头哈希(即,区块头的哈希)的函数。PoW哈希谜题被配置为将下一ML区块的区块头哈希作为来自下一ML区块的链输入的输入,将当前ML区块的区块头哈希与下一ML区块的区块头哈希组合(例如,级联),并确定该组合的哈希是否满足难度目标。根据具体的PoW哈希谜题,这可以包括确定该组合的哈希是否小于(或小于或等于)难度目标,难度目标本身是一个数字。PoW哈希谜题被配置为使得锁定脚本仅在满足难度目标时才会解锁。下面第8节进一步描述了被配置为实现PoW哈希谜题的示例性锁定脚本。
在这些示例中,当构建新的ML区块时,ML区块生成器501必须找到区块头哈希(“解”),在由先前ML区块的PoW谜题处理时,该区块头哈希满足当前ML区块的难度目标,该当前ML区块由先前ML区块的锁定脚本设置并放置在先前ML区块的锁定脚本中。为了找到此类解,ML区块生成器501可以修改区块头的一部分,使得当组合区块头哈希并对其进行哈希处理时满足难度目标。所修改的区块头的一部分可以是随机数值。例如,ML区块生成器可以遍历随机数值序列,直至找到导致PoW哈希谜题的解的随机数值。
作为上述PoW哈希谜题的替代方案,每个ML区块可以在其链输出中包括PoW R-Puzzle(R谜题)。R-Puzzle用于证明知道临时密钥k,该临时密钥用于导出ECDSA签名的r值:
r=[R]x,其中R=k·Gmod n=(x,y)
临时密钥独立于公钥-私钥对,但是临时密钥是ECDSA签名中的关键安全参数。它们被设计为一次性使用,以防止私钥泄露。R-Puzzle的主要特征是:
1.它们允许用户在解决知识证明时使用任何公钥-私钥对;
2.通常使用额外的签名来防止拦截该证明的任何人伪造签名;以及
3.它们在脚本中提供P2PKH或哈希谜题的替代方案。
PoW R-Puzzle不仅需要花费者求解R-Puzzle,而且还需要进行处理以找到导致哈希值低于特定难度目标D的值(例如,随机数nonce)。遵循上文针对PoW哈希谜题描述的用于链接连续UTXO的相同逻辑,PoW R-Puzzle便于检查脚本中的以下方程式:
H(H(rh||BlockHeaderh)||H(rh-1||BlockHeaderh-1))<D
为了便于计算,基于ECDSA签名的r值创建谜题,但是也可以涵盖基于R的谜题。ML区块的链输出可以包括如下锁定脚本:
OP_DUP OP_3 OP_SPLIT OP_NIP OP_1 OP_SPLIT OP_SWAP OP_SPLIT OP_DROPOP_2 OP_ROLL OP_CAT OP_SHA256<H(rh||BlockHeaderh)>OP_CAT OP_SHA256<D>OP_LESSTHANOP_VERIFY
OP_OVER OP_CHECKSIGVERIFY OP_CHECKSIG
下一ML区块(在高度h+1处)的链输入包括如下解锁脚本:
签名sigr使用所需的r值。P是ML区块生成器的公钥。额外的签名sig′基于不同的r值,并且出于如上所述的安全原因而添加:防止恶意节点在实际上不知道签名sig=(r,s)中的r值的情况下伪造签名来解锁R-Puzzle。在一些示例中,不需要该附加签名。
锁定脚本中的第一行提取r。第二行构造了PoW方程式的左侧。第三行检查PoW方程式右侧的条件是否成立。第四行对解锁脚本中的两个签名执行签名验证检查。
应当理解的是,上述锁定脚本仅是可以如何实现PoW R-Puzzle的一个示例。更一般地,PoW R-Puzzle包括第一哈希值和难度目标。第一哈希值是与r值级联的当前ML区块的区块头的哈希。PoW R-Puzzle被配置为将下一ML区块的区块头和签名作为来自下一ML区块的链输入的输入。PoW R-Puzzle被配置为从签名中提取r值,将所提取的r值与下一ML区块的区块头组合(例如,级联),并通过对所组合的r值和区块头进行哈希处理来生成第二哈希值。PoW R-Puzzle还被配置为检查第一哈希值和第二哈希值的组合(例如,级联)的哈希是否满足难度目标。
可以使用用于链接ML区块的替代方法。例如,ML区块的给定链输出可以例如使用支付到公钥哈希(P2PKH)锁定脚本来锁定到与特定ML区块生成器相关联的公钥。该公钥可以对应于阈值私钥,这需要多个ML区块生成器501作出贡献,以便将新的ML区块追加到链。或者,ML区块的给定链输出可以包括多重签名锁定脚本,该多重签名锁定脚本锁定到一组公钥中的一个或多个公钥。
每个链输出可以实现相同的锁定机制,即特定类型的锁定机制,该特定类型的锁定机制仅在特定数据方面有所不同,而不是在锁定脚本的格式或函数方面有所不同。例如,每个链输出可以包括锁定脚本,该锁定脚本被配置为实现相同的共识机制,例如PoW谜题。每个PoW谜题都是唯一的,因为至少一些数据(例如,先前区块头的哈希和当前区块头)是给定ML区块特有的,但是锁定脚本的格式(例如,操作码)是相同的。作为另一示例,在P2PKH锁定脚本的情况下,格式是相同的,但是每个锁定脚本中包括的公钥哈希将是不同的。
实际上,ML区块生成器很可能是核心网络的节点。然而,在至少一些实施例中,ML区块生成器可以是SPV客户端或用户。与区块链节点相比,SPV客户端和用户可能具有较小能力,例如,不能向核心网络提交核心区块,或者根据核心链协议来核实核心事务(ML区块),因为他们需要访问其UTXO集。因此,在这些实施例中,SPV客户端将需要一种定期检查核心区块链的UTXO集的方法,以便核实核心事务。为此,SPV客户端可以具有与节点的通信信道。在一些示例中,SPV客户端不必核实事务,因为事务将由核心节点核实并且在核实无效的情况下被拒绝。
如果ML区块生成器是用户(例如,爱丽丝),则她将不需要访问UTXO集,而是需要一种方式来标识与二级数据链(例如,特定应用程序)相关的UTXO链(即,ML数据链)的尖端。这可以通过查询UTXO集或与该链或核心节点的任何其他授权用户通信来执行。
优选地,ML区块生成器可以能够标识UTXO链尖端,即最新的有效ML区块。如果它被锁定到单个P2PKH,这很容易,因为用户知道没有其他人可以授权UTXO链中的核心事务。对于节点来说,这也很简单,因为节点拥有区块链历史记录的完整副本(包括内存池和UTXO集)。然而,对于执行PoW的SPV客户端,或者在较大组内的一方或子组可以授权核心事务的情况下,SPV客户端可能需要知道UTXO链尖端和任何缺失的先前ML区块,例如,如果客户端已经离线并且没有接收到那些ML区块。SPV客户端可以向节点请求最新的一个或多个ML区块。
7.示例性多级区块链协议
现在将描述用于实现所述实施例的示例性协议。应当理解的是,以下特征中的一些特征是可选的。
7.1多级事务
多级事务(MLT)是核心事务,其中嵌入了二级链上的一个或多个事务的数据。它们旨在通过核心网络基础设施将二级链事务数据从用户传输到多级(ML)节点。因此,不需要为ML协议建立新的网络或经过认证的信道。MLT具有三项主要要求:
1.以核心网络接受的格式承载二级链事务数据;
2.被视为“非最终”事务,以阻止标准节点直接在核心区块中发布MLT;以及
3.可以与其他MLT组合构建“最终”核心事务。
7.2嵌入二级链事务
为了向二级网络广播事务,用户首先创建二级链事务并对其进行签名。然后,在将该事务数据嵌入MLT之前对其进行序列化处理。所嵌入的事务的结构和用于序列化的协议将根据二级区块链的协议而不同。例如,基于UTXO的二级区块链可以遵循上文第6.5节中描述的序列化格式。
7.3MLT结构
通过核心网络基础设施承载数据的第一MLT要求通过遵循标准核心区块链事务格式来满足。MLT包含一个(或多个)载体对—匹配索引位置的输入和输出,其中输出的锁定脚本中包含OP_RETURN。OP_RETURN包含来自单个嵌入式事务的序列化数据。载体对被设计为使得核心链上的输入和输出独立于输出中嵌入的二级数据。任何核心链UTXO可以用作载体对的输入,并且输出稍后可以在任何后续核心链事务中花费。
图10示出了包含单个载体对的MLT。MLT的nSequence和锁定时间值被设置为其默认值。其他字段具有以下属性:
版本 非标准值。充当ML协议的标志。
输入 输出点-可以指定属于核心链上的用户的任何有效UTXO。
解锁脚本-包含用户的公钥及其签名,该签名具有SINGLE|ANYONECANPAY(S|ACP)标志。
输出:值-等于输入的值。
锁定脚本-将UTXO分配给属于用户的新核心链公钥。包含OP_RETURN,后跟所嵌入的事务数据。
这里假设在二级链上创建事务的所有用户也控制核心链上的UTXO,并且因此可以创建他们自己的载体对。下面将探讨替代场景。
7.4版本号
MLT使用非标准事务版本号作为ML协议的标志。基于核心区块链网络的共识规则,非标准版本号不会使事务无效,而是向由与版本号相关联的协议确定的事务提供附加功能。为给定版本号更新其策略文档的节点指示它们解释该添加的功能。标准节点像处理标准比特币事务一样处理MLT,而ML节点根据ML协议制定的规则来处理标记有正确版本号的事务。版本标志还提供了一种直接查询核心区块链以获取嵌入数据的方法。
7.5事务费用
MLT被视为非最终事务的第二MLT要求可以通过省略处理事务以供在链上发布所需的事务费用来满足。取消事务费用可能足以确保MLT不会由标准节点发布。在一些场景中,可能需要一种替代机制,以防止个别MLT被发布到核心链;这将在下面进行探讨。应当注意的是,使用不收取事务费用的载体对意味着用户不会损失任何价值(因为输出UTXO等于输入值),即使MLT被无意地发布到核心区块链上。在这种情况下,可以发行新的MLT来承载相同的嵌入数据,而不需要额外的成本。
7.6签名
MLT中的每个载体对在被发送到ML节点之前由用户签名。该签名授权在核心区块链上花费输入UTXO,同时锁定输出的详细信息,即MLT的值、输出地址和所嵌入的事务数据。
涉及能够将MLT组合成最终比特币事务(以表示二级数据块)的第三MLT要求通过使用S|ACP对所有组成载体对进行签名来满足。该sighash标志允许从MLT提取或复制载体对并组合成更大的事务,而不会使用户提供的任何签名无效。
7.7多级区块
多级区块(MLB)是核心区块链上的单个事务,其中嵌入了整个二级链区块。ML节点从不同的用户接收MLT,并将它们的组成载体对组合成候选MLB。最终MLB还包含由ML节点生成和嵌入的二级区块元数据,并且必须满足二级区块链的共识机制。
7.8多级节点
ML节点可以是在核心网络中运行的节点的子集。ML节点可以更新它们的策略,以将它们自己标识为ML协议的一部分,并充当核心网络中的“专用”节点。这允许二级网络中的对等方识别并建立彼此之间的直接连接,并且允许用户识别他们可以向其广播他们的MLT的节点。
核心网络中的所有节点执行关键功能,例如维护核心区块链、内存池和UTXO集合的副本,并且与对等方竞争在核心区块链之上生成新的区块。ML节点在履行其作为核心区块链节点的职责的同时,执行与二级区块链相关的一组附加角色。这些职责如下:
1.维护以下数据集:
●二级区块链数据库;
●来自MLT的载体对的内存池;以及
●二级链的事务相关数据。
2.收集用户向二级网络广播的MLT,并根据核心和二级区块链协议来检查它们的有效性。
3.将有效的MLT转发到它们在二级网络中的对等方。
4.通过以下方式生成候选MLB:
●在接收到有效载体对时并入这些有效载体对;以及
●基于嵌入在候选MLB中的二级链事务的列表来创建和更新默克尔树和其他元信息。
5.与其他ML节点竞争和/或协作,以满足二级区块链的共识机制。
ML事务的内存池不必与ML节点为核心区块链持有的内存池不同。事务版本号允许ML节点识别在核实其内存池中的事务时遵循的协议,而无需创建两个单独的数据库。
7.9多级验证
MLT可以根据核心和二级区块链协议制定的规则进行验证;该过程称为多级验证(MLV)。这些检查彼此独立,并且可以并行执行。该验证过程的一个方面由核心区块链协议的规则(即,比特币的核实规则)来管理。通过检查以下各项来验证MLT内的每个载体对:
●在输出点中引用核心网络的UTXO集合中的有效UTXO;
●已经在输入中应用有效的解锁脚本来解锁所引用的UTXO;以及
●输入的值至少等于输出的值。
验证的另一个方面是检查每个嵌入式事务的载体对内的序列化数据的有效性。这些检查取决于二级链的规则。只有根据二级和核心区块链规则有效的MLT才会包括在MLB中。
7.10MLB结构
MLB由一系列输入-输出对构成,如图11所示。每对承载关于OP_RETURN中嵌入的二级链区块的单独的信息单元。ML节点为索引0(以淡阴影显示)和索引1创建载体对,这些索引将包含二级链区块元数据,并且在相关的情况下,将包含用于分配二级链区块奖励的嵌入式事务。索引2向前(以深阴影显示)包含从用户发送的MLT复制的载体对。
索引0处的输入和输出承载二级链的区块头数据。用作输入的UTXO具有尘埃值,并且输出将相同的值重新分配给新的UTXO。通过以这种方式链接索引0中的UTXO,将来自二级链的区块头存储在核心链上的单个UTXO的事务历史记录内。应当注意的是,区块头UTXO必须可由任何ML节点花费。在这里,这是使用区块头UTXO的锁定脚本中的谜题来实现的,而不是将输出锁定到特定公钥。该谜题被设置为使得该解要求ML节点已经满足二级链的共识机制。
索引1处的输入和输出用于三个目的:
●提供满足核心链要求所需的事务费用;
●分配二级链上的任何区块奖励;以及
●使用sighash ALL进行签名以确保MLB的完整性。
输入是由ML节点控制的核心UTXO,该节点持有足以按核心链规定的费率支付事务费用的值。在该模型中,ML节点花费少量费用来涵盖核心链上的费用。对于通过区块奖励和/或事务费用来激励ML节点的二级区块链协议,核心链事务费用应被从二级链区块分配给ML节点的总奖励抵消(并超过)。由于ML协议可以在其区块链数据的存储和不可变性等方面提供好处,因此其他二级区块链协议可能愿意收取少量费用。
索引1的输出将输入中剩余的更改分配给属于ML节点的地址(PK1)。对于其中在区块发布时有分配给ML节点的奖励(例如,比特币中的Coinbase事务)的二级区块链,奖励事务的序列化数据也嵌入在索引1输出的OP_RETURN中。
所提供的用于核实输入的签名使用sighash ALL,使得签名消息包括所有输入和所有输出的详细信息,即MLB中的载体对。这确保一旦MLB由ML节点签名,就不能更改MLB事务和候选二级区块的详细信息,而不会使索引1处的签名无效。
索引2向前包含用户在MLT中广播的载体对。由于用户使用S|ACP标志对他们的载体对进行签名,因此ML节点可以将载体对直接从MLT复制到候选MLB事务中。如果每个载体对的详细信息(输入、输出、OP_RETURN数据和签名)和签名消息中包含的其他事务信息(版本号、锁定时间)保持不变,则任何载体对在任何核心区块链事务中保持有效。因此,载体对在所有候选MLB中同时有效。这反映了从存储在每个节点的本地内存池中的相似事务集构建核心区块链区块的传统方式。
7.11共识机制
在许多区块链系统中,区块生成器竞争以赢得候选区块。竞争的结果根据区块链的共识机制来确定。共识机制的示例包括:
●工作证明(PoW),其中赢得区块的概率与区块生成器提交的计算资源成比例。
●权益证明,这是基于区块生成器当前所持股份或在网络中的资历的加权决策过程。
●权威证明,其中一组区块生成器经过认证并且可信。
●节点之间的投票。
二级区块链可以遵循与核心区块链相同或不同的共识机制。ML节点独立做出努力,以满足核心和二级区块链的共识机制。
7.12在脚本中强制执行共识机制
一些共识机制可以用比特币的原生脚本语言表示为加密条件。例如,在比特币区块链中使用的PoW系统要求区块生成器求解哈希谜题:它们必须找到候选区块,其中区块头的哈希低于某个值(难度目标D)。这种类型的哈希谜题可以在脚本中表示如下:
<BlockHeaderh>OP_SHA256<D>OP_LESSTHAN
可以使用类似的脚本在连续MLB的索引0处链接UTXO(参见图11)。对于每个MLB,输入0引用先前MLB的输出点0。该先前输出点具有锁定脚本,该锁定脚本包含基于先前二级链区块头的哈希谜题。为了核实该UTXO的花费,ML节点必须提供一个值,该值基于当前二级链区块头并且满足先前MLB的哈希谜题。
每个候选MLBh(在高度h处创建)的索引0中的以下条件确保UTXO链的有效性:
1.输出点引用在先前MLBMLBh-1的索引0处生成的UTXO。
2.将解锁脚本设置为当前二级链区块头的哈希:
<HG(BlockHeaderh)>
3.输出设置新的锁定脚本:
<H(BlockHeaderh)>OP_CAT OP_SHA256<D>OP_LESSTHAN
其中D是二级链的当前难度目标。
在这些条件下,当核实MLBh的索引0时,将解锁脚本与MLBh-1的索引0的锁定脚本级联,从而得出:
<H(BlockHraderh)><H(BlockHraderh-1)>OP_CAT OP_SHA256<D>OP_LESSTHAN
如果满足以下条件,则该组合脚本将被评估为True:
H(H(BlockHeaderh)||H(BlockHeaderh-1))<D
第8节给出了哈希谜题实现方式的示例。
例如,在用于比特币的PoW系统中,只有当前区块头明确地包括在有效性条件中。然而,与先前区块的关系是隐式地强制执行的,因为每个区块头包含先前区块头的哈希。在ML协议中,在相邻区块之间建立链的哈希谜题也用作UTXO的锁定脚本。需要设置唯一值作为每个锁定脚本谜题的一部分,否则已知具有低于难度目标的哈希的任何值都可以用于花费UTXO。所有先前区块头(其中使用相同的或更难的难度目标)将具有该属性,并且恶意行为者可以使用其中任何一个来花费UTXO,从而断开UTXO链。为了解决该漏洞,ML协议在每个锁定脚本中显式地包括最新二级链区块头的值。该值不可预测,并确保只能通过应用哈希算力来求解。
难度目标是根据二级区块链规则设置的,并且可以根据投入二级区块生成的组合哈希算力而变化。应当注意的是,对于PoW计算的每次迭代,上述脚本内谜题需要进行两次哈希运算:必须对当前(二级链)区块头进行哈希处理;将当前区块头与固定值H(BlockHeaderh-1)级联;以及第二次对当前区块头进行哈希处理。第一哈希并不是严格必要的,但是会减少解锁脚本的大小,并因此减少MLB事务费用。如果使用该额外哈希运算,还可以调整二级链难度目标进行补偿。
7.13核实候选MLB
除了特定于二级链共识的要求之外,候选MLB还必须满足ML协议中的其他有效性条件:
●基于MLV规则,索引2+中的所有载体对是有效的;
●根据二级链协议正确地格式化区块头和Coinbase事务;以及
●MLB基于核心网络的规则来提供足够的事务费用。
MLB的核实由二级网络中的对等节点执行,并且应当在MLB被提供给标准比特币节点之前执行。这是因为一旦在核心链上发布了MLB,将会不可撤销地花费载体对中的UTXO。为了确保候选MLB在核实之前不会发布在核心链上,ML节点最初可能会保留索引1的签名。这使得事务对于标准核心节点无效,但是在ML协议下,缺失的签名发信号通知ML节点MLB需要验证。在MLB获得对等方批准之后,添加签名。当对等方接收到候选MLB时,它们会运行核实检查。如果MLB有效,它们会:
●向二级网络中的所有对等方通知候选MLB是有效的;
●通过删除其载体对包括在MLB中的任何MLT来更新其内存池;以及
●在有效MLB的之上开始构建新的候选MLB。应当注意的是,保留索引1的签名不会延迟ML节点在获准的MLB之上建立新的候选二级链区块,因为当前二级链区块已经最终确定并且索引0输出已经设置。
7.14在核心链上发布MLB
候选MLB由获胜ML节点通过添加最终签名并广播到核心网络来最终确定。MLB将被所有节点视为常规事务,并被包括在核心链的候选区块中。
由于二级网络和核心网络的区块生成时间可变,因此在ML节点达成共识与在核心链中发布获胜MLB之间可能存在较短延迟。因此,在二级链上生成的区块与在核心链上发布的区块之间可能不一定存在1:1的映射。这可能没有问题,因为每个MLB包含嵌入式事务的不同区块,并且每个MLB的核心链事务ID是唯一的。因此,如果在核心链上的同一区块内发布两个或更多个MLB,则每个二级链区块在核心链上具有自己的唯一标识符(区块,TxID)。
在类似时间生成两个MLB的情况下,传统区块链可能会遇到临时链分裂,并且需要适应重组。在ML协议中,可以依靠核心网络来解决任何冲突:如果二级链中给定高度的两个版本的MLB被发送到核心网络,则只会发布一个版本。这是因为两个MLB包含相同的UTXO(来自父MLT中的载体对),因此标准核心节点在其候选区块中将仅包括一个MLB。无论哪个MLB包括在核心区块链上的获胜区块中,都是二级链上的事实上的赢家。
7.15纠错:重新发行二级链事务
无效MLB可能会被错误地发送到核心区块链,或者MLT在已经包括在MLB中之前自行发布在核心链上。在这些情况下,用作载体对的输入的UTXO不再有效,因为它们已经在核心网络上花费,但是它们承载的嵌入式事务尚未包括在有效MLB中,并且因此不是二级区块链的一部分。为了纠正此类错误,ML节点可以通过创建和签署替换载体对(使用它们控制的UTXO)并从过早花费的MLT中的原始数据输出复制嵌入式事务信息,来“重新发行”嵌入式事务。由于所有载体对的输入和输出的值都是匹配的,因此ML节点不会投入比标准MLB更多的硬币。尽管在这种场景中用户不再将他们自己的签名应用于其载体事务的UTXO输入,但是由于在嵌入式事务中应用了一个或多个签名,因此二级链事务数据仍然受到保护,不会被修改。
7.16示例性流程
图12示出了ML协议中的步骤的序列图,这些步骤对应于下面的11个步骤;步骤1至步骤8在二级网络内执行(即,由ML节点执行),而步骤9至步骤11在核心网络中执行(即,由ML和标准核心节点两者执行)。
1.用户构建一个或多个载体对,每个载体对包含嵌入式事务。
2.用户向ML节点广播包含载体对的MLT。
3.ML节点将传入的MLT转发到它们在二级网络中的对等方。
4.ML节点执行MLV过程,以核实每个载体对及其嵌入式事务。
i.如果MLV过程失败,则丢弃载体对。
5.ML节点构建候选MLB。
6.将候选MLB广播到二级网络中的对等方。
7.二级网络中的对等方以接收顺序来验证候选MLB。
i.如果验证失败,则ML节点继续构建它们的候选MLB(步骤5)。
ii.如果候选MLB有效,则ML节点通知所有对等方,更新其内存池,并在获准的MLB之上构建新的候选MLB。
8.获胜ML节点通过提供索引1的签名来最终确定候选MLB,并将MLB广播到核心网络。
9.核心网络中的节点根据核心共识规则来构建候选区块(其包含作为常规事务的MLB)。
10.获胜候选区块(核心链)被广播到核心网络中的对等方。
11.包含MLB载体事务的获胜区块由核心网络中的对等方验证;嵌入式二级链区块发布在核心链上。
一旦发布在核心链上,MLB就会提供二级区块链数据的公共不可变记录。从二级链嵌入的每个区块在核心链上具有唯一的标识符;包含所嵌入区块的MLB的区块高度和TxID。同样,每个嵌入式事务也可以通过区块高度、TxID和索引值在核心链上唯一标识。每个嵌入式事务的数据包含在专用OP_RETURN中,这一事实应当允许高效地查询二级链事务数据。
虽然二级区块链遵循自己的协议,但是ML协议为二级链提供了一个机会,使其能够从核心区块链的一些特征中受益。此类特征的一些示例包括:
●矿工ID-比特币SV网络的本地矿工ID可以允许二级链的用户识别负责发布特定MLB的ML节点。ML节点可以在MLB中包括它们的矿工ID作为二级链区块头的一部分。对于遵循比特币协议的二级链,该信息可以包括在嵌入式Coinbase事务的Coinbase脚本中。
●区块上限-一些区块链可能对每个区块的大小有限制。因此,ML节点可以选择具有较高事务费率的事务,以最大化其区块奖励。对于基于比特币SV协议的核心区块链,对区块大小没有限制。二级区块链共识规则的仲裁器可以利用核心区块链的特性,并且针对较大区块大小更新他们的共识。
●私有区块链-在封闭网络内运行的私有区块链的安全性可以通过在核心公共分类账上发布事务或区块的承诺、创建私有数据的公共不可变记录(例如,用于审计目的)来加强。可以对嵌入数据进行编码或哈希处理,以便保持隐私。
7.17多级协议变体
7.17.1用户将二级链事务直接发送到ML节点
在一些情况下,二级网络中的用户可能不控制核心链上的任何UTXO,或者可能不希望在其二级链事务之上生成第二(核心)事务并对其进行签名。为了适应这种情况,ML节点可以代表用户提供生成载体对并对其进行签名的服务。在这种情况下,用户经由单独的消息传递信道将其二级链事务直接发送到ML节点。事务数据已经由用户根据二级链协议进行签名,因此无法修改。
ML节点将二级链事务嵌入MLT(使用它们控制的UTXO生成载体对),并使用S|ACP标志对载体对进行签名。与原始协议中一样,授权载体对的签名独立于嵌入式事务内的签名,并且在这里由不同方提供。ML节点将所签名的MLT转发到它们在二级网络中的对等方,以确保嵌入式事务将被包括在所有候选MLB中。
虽然该系统为不控制核心网络上的UTXO的用户提供服务,但是用户不能通过载体对向ML节点广播二级链事务数据(即,不能再搭载现有核心网络基础设施)。相反,它们必须经由单独的通信信道或网络与ML节点直接通信。这可能需要在用户与ML节点之间进行额外的认证阶段,并且用户必须信任ML节点以将其二级链事务传输到二级网络的其余部分(通过MLT)。
7.17.2减小嵌入数据的大小
在基础ML协议中,数据以其原始序列化形式嵌入。这意味着MLB可能包含大量数据,从而在核心网络上产生大量事务费用,并给核心网络内的数据存储带来沉重负担。一种替代方案是在将二级链事务数据嵌入载体对之前对其进行哈希处理,使得仅在核心链上记录二级链的指纹。
应当注意的是,如果仅嵌入二级链数据的哈希,则用户还可以将每个载体对中经过哈希处理的事务的原像提交给ML节点,使得他们可以验证嵌入式事务。虽然哈希处理方法减轻了核心链上的存储负担,但是由于无法再直接从核心链数据库读取二级链数据,因此在便于检索数据方面存在权衡。相反,ML节点负责存储和维护完整二级区块链数据库。为了证明二级区块链的完整性,必须组合ML节点存储的完整数据与核心区块链上存在的承诺。
由于这些示例中的原始数据存储在单独的二级区块链数据库中,因此对于每个嵌入式事务,可能不必在核心链上具有唯一承诺。例如,可以组合表示整个二级链区块的默克尔根与默克尔证明,以便为每个事务提供完整性证明。维护完整二级区块链数据库的节点将能够提供所需的默克尔证明,并且这可以针对嵌入核心链的默克尔根进行验证。
在这些情况下,ML节点可以在单个OP_RETURN中嵌入完整二级链区块。应当注意的是,在这种设计下,载体对不再是最终MLB的组成部分。载体对仍然可以由用户生成,以通过核心网络基础设施将他们的二级链事务传输到ML节点。然而,可以使用替代网络或消息传递系统(例如,在私有网络内)来将二级链事务数据发送到ML节点。
如果二级区块链在嵌入核心链之前就已存在,则该协议变体可能是有益的。在传输到ML协议时,ML节点可能希望在核心链上的事务中包括历史分类账的承诺。出于验证目的,这将提供二级区块链中先前事务的不可变记录。来自二级区块链数据库的所有历史事务(或减小大小的承诺)可以嵌入核心区块链上单个事务中的一个空数据输出(OP_FALSEOP_RETURN)。
7.17.3阈值共识机制
作为上述哈希谜题共识机制的替代方案,由索引0处的MLB的输入和输出构成的UTXO链可以改为锁定到私钥,该私钥是阈值方案的一部分,并且充当ML节点的各方持有该私钥的份额。为了核实UTXO(以及MLB),持有密钥份额的阈值数量的节点必须同意MLB是有效的。假设提交候选MLB以供对等方批准的ML节点提供了其签名份额,则2-of-n阈值方案将需要二级网络中一个授权对等方的批准才能使该区块有效。具有较高阈值的方案将需要多个对等方的批准才能核实MLB。
实现该变体的一个障碍是,可能很难预测在任何给定时间处于活动状态的一组ML节点。阈值方案通常依赖于拥有持有密钥份额的一组固定的各方,从而可以随时获得阈值数量以产生有效签名。然而,最近的研究表明,在不改变底层私钥的情况下,在阈值签名方案中更新份额并添加或移除股东是可行的。因此,可以设计一种阈值方案,该阈值方案可通过定期更新份额来灵活地适应多组处于活动状态的ML节点中的某些变化。
7.17.4向核心网络延迟广播MLB
一旦在核心区块链上发布了MLB,将会不可撤销地花费该MLB包含的所有载体对的UTXO。因此,重要的是在核实MLB之前不要将其发送到核心网络。原始ML协议要求二级网络中的至少一个对等方在将候选MLB发送到核心网络之前证明该候选MLB是有效的。
一种替代性错误预防技术是延迟向核心网络发送MLB,直至二级网络已经在顶部建立阈值数量的二级链区块。在二级区块链具有与核心网络不同的区块生成时间的情况下,例如较短的区块生成周期,其中预期在每个核心区块中发布多个二级链区块,该变体可能被证明特别有用。
在将经核实的MLB广播到核心网络之前,二级网络中的节点可以将它们存储在存储器中一段时间。这些MLB将形成区块池(blockpool),该区块池类似于尚未在标准区块链中发布的事务的内存池。每个ML节点将在本地维护它们自己的区块池,并且包括由其他ML节点生成的MLB(一经核实)。
7.17.5区块池协议
考虑二级链中高度h处的区块。一旦ML节点核实高度h+c处的区块,则高度h处的区块被视为具有c个确认。在阈值为c时,二级网络向核心网络广播高度h处的已确认MLB,并将其从区块池中删除。链中的后续区块(即,h+1…h+r for r<c)保留在区块池中,直至它们接收到必要的c个确认。
假设区块池一开始是空的。下面的协议描述了当从对等方接收MLB时的MLB核实和区块池过程。符号ZYX表示MLB,其中Z建立在MLBY之上,而后者又建立在X之上,依此类推。该示例旨在涵盖所有可能的场景(例如,二级区块链中的多区块分裂),但是应当理解的是,发生这种情况的可能性极低。
图19示出了在不同阶段特定ML节点P的区块池的内容。
1.P接收MLBA。如果根据二级区块链规则有效:
○P将A放置在其区块池中;
○更新其内存池以删除A中包含的载体对;以及
○致力于在A之上建立新的候选MLB。
2.P接收高度与A相同的MLBB。
○P存储B(在这种情况下,在B上建立链的速度快于在A上建立链),但是
○不会核实B,直至它成为最长有效链的一部分。
3.P完成区块CA并将其发送到对等方。
○P将CA放置在其区块池中;
○更新其内存池;以及
○致力于在CA之上建立新的MLB。
4.P接收区块EDB。
○P请求DB,因为后者目前尚不清楚。
○P验证B、DB和EDB。如果全部有效:
■P将B、DB和EDB放置在区块池中;
■更新其内存池;以及
■致力于在EDB之上建立新的MLB。
……
N.P接收具有相对高度c的区块N…A。如果有效:
○P向核心网络广播A;
○将高度与A(即,B)相同的所有竞争区块以及所有相关联的子区块(DB和EDB)从其区块池中删除;
○更新其内存池;以及
○致力于在N之上建立新的MLB。
7.17.6确保MLT不会过早发布到核心链
原始ML协议依赖于以下事实,即目前对于要包括在核心区块链中的事务,核心网络中的节点具有最低事务费率。通过将所有MLT中的费用设置为零,可以消除标准核心节点在其区块中包括MLT的任何经济激励。然而,如果标准核心节点更改其策略以在其区块中包括零费用事务,则可以在将MLT广播到网络之前采取额外的措施来有意地使MLT无效。
例如,可以包括标志作为OP_RETURN数据的第一字节,在签名生成之前将该标志设置为1,并且在签名应用之后将该标志编辑为0。这会主动使签名无效,使得标准核心节点认为MLT无效。然而,基于ML协议和版本号,ML节点将知道在执行签名核实之前,必须将OP_RETURN的第一字节返回到1。有意违反MLT的有效性(以及随后的校正)的任何等效过程都将具有与该示例相同的目的。
7.17.7网络结构:核心网络上的SPV客户端
在基础协议中,假设ML节点是在核心网络中运行的节点的子集。ML节点改变其策略,使得它们根据核心网络中常规(非版本化)事务的一组不同规则来处理具有ML协议版本标志的事务。这些节点并行地充当二级网络和核心网络的区块生成器。
一种替代方案是ML节点是核心网络中的SPV客户端,使得它们是专用于二级网络中的完整节点(充当区块生成器)。该变体的一个障碍是,需要ML节点来执行MLV过程,在该过程中,这些节点必须验证用作载体对中输入的UTXO是否存在于核心区块链的当前UTXO集合内。由于在核心网络拒绝MLB的情况下,ML节点为生成有效区块而花费的资源将被浪费,因此该验证步骤至关重要,使得候选MLB中不会包括无效UTXO。如果ML节点只是核心链上的SPV客户端,则它们不具有执行这些UTXO集合检查所需的完整核心区块链数据库。一种解决方案是ML节点采用提供UTXO承诺的服务,即可以提供核心链的UTXO集合的经过验证的最新副本。
7.17.8在核心区块链上嵌入通用数据
ML协议示出了一种在核心链内嵌入二级区块链并经由核心区块链上的UTXO链来链接承载二级链区块的事务的系统。然而,嵌入数据实际上可以采用任何格式。在这里,考虑数据嵌入到公共区块链上的事务链内的其他用例。应当注意的是,该系统提供两个级别的粒度:UTXO链内的事务和每个事务内的载体对(具有OP_RETURN数据)。
由于比特币SV区块链上的区块大小不受限制,因此可以这种方式存储的数据量几乎没有限制。同样,由于OP_RETURN代码可以保存可以序列化为字符串的任何数据,因此对可以存储的数据类型几乎没有限制。为了保护隐私,或者为了要嵌入以代替原始数据的加密承诺(例如,数据的哈希),可以对数据进行加密,使得可以使用核心区块链来提供数据不可变性的证明。
有两种方法可以从核心链数据库中识别一组嵌入数据:事务版本或特定UTXO链。外部或覆盖系统可以使用任何一个标识符来隔离特定事务,并从核心区块链访问嵌入数据。事务版本非常灵活,并且可能适合区块链内数据载体事务的一般分类。然而,由于其他方可以自由地将相同的版本号分配给他们自己的事务,因此事务版本号不能充当安全的唯一标识符。另一方面,基于每个UTXO锁定脚本中的花费条件,UTXO链对哪些方有权向特定链添加数据提供更精确的控制。
7.17.9基于事务版本号整合第2层应用程序数据
随着区块链的扩展,节点很可能会转向维护区块链数据库的缩减版本。例如,通过清除包含大量数据有效载荷的事务,并且仅保留与这些事务相关联的区块头数据。在这些情况下,定期在链上存储数据的区块链应用程序可能会与特定节点或服务器合作,以确保在网络内维护其事务数据的完整副本。在这些情况下,关于事务是区块链的一部分的证明需要原始事务数据和默克尔证明;这些可以对照区块的默克尔根进行检查,该默克尔根由所有节点存储。
可以基于事务版本来标记与特定应用程序相关的事务。虽然这可以轻松识别相关事务,但是这些事务可能会在更广泛的区块链中进行分片处理。由于必须为每个事务存储默克尔证明,因此(经由社交网络站点、游戏服务器或通证系统)生成大量微事务的应用程序可能会导致对数据和默克尔证明两者的大量存储需求。为了解决这个问题,应用程序可以使用MLB协议的版本来将多个用户事务整理成单个“区块”事务,使得可以存储单个默克尔证明来表示大量微事务。
在该系统中,用户将(使用S|ACP)对载体对进行签名,并且OP_RETURN将包含与应用程序相关的数据,而不是二级链事务。与载体对输入和输出具有相同值的ML协议不同,这里可以调整载体对值,使得输出低于输入,以允许应用提供商在用户生成区块时向用户收取服务费用。应当注意的是,由于这依赖于用户对未分配某些值的载体对进行签名,因此需要提供从用户到服务提供商的直接通信信道,这样拦截器就不会收取费用。在无法建立安全信道的情况下,应用提供商可以选择接受零费用载体对,并且基于大型合并事务区块提供的好处来自行为区块提供资金。无论费用是由用户支付还是由服务提供商支付,与单独广播每个微事务相比,将微事务合并到区块中也可以节省少量事务费用。
7.17.10UTXO链实施:锁定脚本
创建UTXO链允许相对于由版本号标记的事务提高对一组嵌入式数据事务的控制权和安全性。UTXO链由在生成链中的每个UTXO时定义的锁定脚本来保护,并且这些脚本可以用于控制拥有授权权限的各方向集合中添加新的数据事务。例如:
●P2PKH:链中的每个新的UTXO锁定到特定公钥,使得只有具有相关联的私钥的人才能创建下一链接事务。
●多重签名:具有1/n要求的多重签名花费条件允许与公钥列表对应的n个私钥中的任何一个私钥创建有效签名。这意味着可以建立一组获准方,其中任何一方可以向UTXO链中添加新的链接事务。
●阈值签名:链中的所有UTXO可以锁定到与阈值方案相关联的公钥,其中要求组内设定数量的各方同意签名,以便生成新的链接事务。
●哈希谜题:哈希谜题需要输入,在进行哈希处理后,该输入低于某个目标。这可以暴力方式解决,但是需要投入大量哈希算力才能解决,从而实现生成新的链接事务的PoW要求。
●哈希/HMAC原像:应用不可逆加密函数(例如,哈希或HMAC)并要求解为精确值的花费条件。与上面描述的哈希谜题不同,这不能暴力实施,因此只有已经知道相关联的原像的一方才能花费UTXO。每次生成新的UTXO时必须创建新的对(由原像和输出值组成),并与授权追加到链的所有各方共享原像。或者,可以预先生成一系列原像和相关联的输出,并将其分发给所有授权方。该解在功能上类似于多重签名条件,由于不需要在每个锁定脚本中包括所有有效公钥的列表,因此一组授权方中的任何一方都可以添加到UTXO链中,并且可以提供较低的事务费用。
7.17.11有序数据
UTXO链的另一个方面是,该链为存储在链内后续事务中的数据提供固定排序。这是核心区块链模型的基础,其中每个区块建立在先前区块之上,但是该特征适用于许多其他数据集,例如金融账户、文档或代码的迭代、电子邮件或消息链、回合制游戏中的动作等。
在主要ML协议中,利用区块头之间的哈希链对二级链内的一组区块进行排序,但是二级链区块内的事务不必按照设定顺序排序。每个S|ACP签名载体对在MLB事务内的所有索引位置同样有效。然而,如果需要,可以在载体对层面以及在事务之间强制执行排序。这样做的一种方式是在嵌入第二索引位置的数据的开始处包括嵌入第一索引位置的数据的哈希(或者,替代地,签名的哈希或整个载体对),依此类推。这证明在对当前索引位置进行签名时,先前索引位置中的数据是已知的。使用该方法,可以生成多级有序数据集并将其存储在核心区块链上。
例如,在回合制游戏中,玩家A首先移动。他们将动作的详细信息放置在载体对的OP_RETURN中,并使用S|ACP进行签名。该载体对被发送到可信游戏服务器(该服务器充当区块生成器的角色)。该服务器计算第一动作载体对的哈希并将其发送给玩家B。玩家B生成载体对,该载体对包括玩家A的动作的哈希以及该玩家自己在OP_RETURN中的动作的详细信息;该载体对被签名并发送到游戏服务器。一旦游戏结束,按照顺序包含所有游戏动作的“区块”就会被发布到区块链上,以向双方玩家提供不可变证明,证明玩家动作按照正确的顺序发生。
7.17.12使UTXO链贬值
ML协议中描述的UTXO链被设计为无限期地延续,并且因此在链中生成每个新的UTXO时保持相同的值。一种替代方案是具有贬值功能的UTXO链,从而允许限制或控制系统/服务。例如,该限制可能基于以下条件:
●固定时间段;
●包含嵌入数据的一定数量的事务;或者
●嵌入核心链的一定数量的数据。
考虑以下情况,即服务提供商允许用户将包含嵌入数据的事务发送到区块链,其中服务器维护完整的事务数据。当用户注册服务时,服务提供商在链中增发第一UTXO,该UTXO应具有分配给用户的公钥的设置值(例如,1000聪)。该UTXO可被视为通证,但是由于它的主要功能是链接一系列链接事务,将其称为UTXO或UTXO链。每当用户希望上传数据时,他们都会创建一个载体对,该载体对花费当前的UTXO并生成新的UTXO,该新的UTXO具有减少的值(下面将描述几个选项)作为输出。该载体对在UTXO链中创建新的链路,由用户签名(类似于基础协议中的MLT)并被发送到服务提供商。
服务提供商检查是否已将正确的减值应用于用户的UTXO,并提供第二输入以涵盖核心网络事务费用(就像基础协议中的ML节点对MLB所做的那样)。服务提供商可以将来自多个用户的数据载体对组合成单个事务;由于每个用户具有他们自己的独立UTXO和索引,因此维护每个用户的个人UTXO链。
7.17.13事务数量
为了基于所进行的数据存储事务的数量使UTXO贬值,每当在链中创建新的UTXO时,该值应为小于先前值的固定数量。例如,如果链中每个UTXO的值比前身少100聪,则可以从初始增发的1000聪进行10个事务。该系统特别适合可能不会定期进行上传的情况,例如维护文档或编码库的当前版本和历史记录。
7.17.14固定时间段
可以使用类似的过程来允许UTXO链在设定时间段内贬值。每当用户希望上传数据时,他们会创建载体对并对其进行签名,并将输出UTXO的值减少一定数量,该数量与自增发以来已经过去的时间成比例(例如,10聪/天)。服务器验证是否已经使用适当的值。或者,每个用户的UTXO可以使用多重签名或哈希原像花费要求来生成,使得用户或服务提供商可以更新链。使用该设置,服务提供商会定期自动生成事务(可能为空),每次都会减少输出UTXO中的值。该系统适用于定期进行的自动备份,例如每日电子邮件或公司财务记录的备份。
7.17.15固定数量的数据
第三种选择是基于上传数据的大小减小链接UTXO中的值。用户形成载体对并根据嵌入数据的大小减小输出的值(相对于输入值)。在将事务发送到核心链之前,服务提供商基于嵌入数据的大小和服务费率来检查减值是否合适。事务费用可以由链UTXO或服务提供商支付,具体取决于服务条款。该系统适用于数据上传可能不频繁并且大小较大或者大小显著改变的情况,例如用户备份他们的照片和视频。
在上述所有情况下,通过创建事务直接向UTXO链充值,其中链中的当前UTXO用作输入,并且附加输入提供额外的资金,该额外的资金将在事务的输出中分配给链中的新UTXO。该充值事务可以由用户生成,该用户将包括足以涵盖链UTXO的值增加和向服务提供商的适当付款的输入。或者,用户可以在链下向服务提供商付款,并且服务提供商可以生成事务以增加链UTXO的值。
这些系统可以由服务提供商实施,以允许用户为其服务预付款,并在必要时进行充值。服务提供商的动作可以自动完成,使得用户能够通过将他们的载体对发送到服务提供商来发起数据上传。在一些情况下,用户还可能希望自动生成载体对,使得它们被设置为在满足某些条件时自动发生(例如,每天或在已经生成设定数量的新数据之后)。
这些系统模拟以太坊区块链上的燃料(gas)概念,其中智能合约被设置为执行一组指令或代码。向智能合约提供一定数量的燃料,脚本的每次迭代(或脚本内的每次操作)会消耗一定比例的燃料,迫使脚本在燃料用完之后停止执行。本文描述的系统可以用于运行智能合约作为嵌入数据,其中比特币充当核心链。运行该脚本的覆盖系统可以记录UTXO链中新事务中的每次迭代,其中输出UTXO的值随着每次迭代而贬值。如果需要,例如,如果需要表示和保留中间状态值,则可以在每个事务内以单独的载体对来表示代码的子段。该系统还与汇总兼容,其中,一系列计算在“链下”运行,并且只有最终结果以及结果有效的加密证明才会记录在链上。每当生成汇总时,结果和证明可以嵌入UTXO链内的事务,并且输出的值根据链下计算的燃料消耗率而减少。
8.示例性用例
下面提供了一种示例性实现方式,其中相同的区块链规则同时适用于二级链和核心链。这允许复制某些特征,即:
●事务模型—这会导致基于UTXO的事务对于二级事务和核心事务具有相同的序列化格式和MLV过程。
●区块模型—区块结构、构建和核实对于二级区块和核心区块基本相似,尽管二级区块的数据嵌入在MLB载体事务内。
●共识算法—当相同的共识规则适用时,节点将已经设置系统来执行生成有效比特币区块所需的PoW计算。
考虑以下参与者:
●二级区块链的用户—爱丽丝(PKA、PK′A、PK2、PK′2)
●在二级区块链上接受比特币的商家—迈克(PKM)
●充当ML节点的参与节点—鲍勃(PKB、PK1、PK′1)
假设所使用的ML协议规则为:
●所使用的特定版本号VersionMLB=0x0000002A
●所有MLT设置为无延迟锁定时间LocktimeMLB=0x00000000
●所有MLT使用最终序列号nMLB=0xFFFFFFFF
●二级链的PoW类似于核心链的PoW,并且内置在区块头UTXO的锁定脚本中。ML节点必须通过找到随机数和(嵌入式)区块头EBHh来求解第3.2.4节中描述的哈希谜题,使得:
H(H(EBHh)||H(EBHh-1))<EDT
其中,EDT是要嵌入的区块的难度目标。根据ML节点应用于生成MLB的组合哈希算力来改变该目标,以确保二级链的平均区块生成时间保持恒定。
现在,将逐步介绍ML协议中的步骤,从而参考上述参与者提供示例。为了区分二级链和核心链上的事务,事务附图将具有用于二级链事务的绿色单元格和用于核心链事务的蓝色单元格。二级链上的公钥具有字母标识符(例如,PKA),而核心链上的公钥具有数字标识符(例如,PK0)。
(1)爱丽丝根据二级区块链的规则来创建比特币事务。
(a)爱丽丝生成二级链事务TxIDembedded,就像她会生成常规比特币事务一样。图13示出了爱丽丝的事务,简单的P2PKH将比特币的某个值x0发送到迈克的地址PKM,并将剩余值分配给更改地址PK′A。使用爱丽丝的公钥PKA来授权第二链事务,并使用sighash ALL对其进行签名。
(a)爱丽丝根据图8所示的格式来序列化TxIDembedded中的输入和输出。然后,她级联所得序列化,并将它们放置在图8所示的完整事务序列化中。所得格式是可变长度的字符串,其中包含有关TxIDembedded的所有信息。
(2)爱丽丝根据ML协议的规则来创建并广播MLT。
(a)爱丽丝创建图14所示的MLT。载体对使用核心链上爱丽丝控制的任何UTXO作为输入,并在输出中为她的地址PK′2分配相同的值。输出锁定脚本包含TxIDembedded的序列化形式。载体对使用具有sighash S|ACP的爱丽丝公钥PK2进行签名。
(3)鲍勃接收爱丽丝的MLT,并将其转发给二级网络中的对等方。
(4)鲍勃根据核心区块链和二级区块链的规则来验证爱丽丝的MLT和嵌入式事务。
(a)对于等效的二级和核心区块链协议,MLV过程的两个阶段是相同的。因此,对MLT和嵌入式事务独立地执行以下检查:
●每个输入引用对应UTXO集合中的有效UTXO。
●输入中的值足以涵盖输出加上任何事务费用;用户必须包括嵌入式事务的事务费用,而载体对不需要事务费用。
●所有输入使用有效签名进行签名;根据比特币区块链的规则,多方可以协作生成单个事务。所有载体对必须使用S|ACP sighash标志进行签名。
(5)鲍勃开始构建包含爱丽丝的载体对的候选MLB。
(a)鲍勃将从爱丽丝和二级网络中的其他用户提交的载体对从索引2向前包括在候选MLB中。他根据每个传入的二级链事务来创建并定期更新二级链的默克尔树。
(b)鲍勃构建二级链Coinbase事务的方式与构建常规Coinbase事务的方式相同;图15示出了一个示例。空输入具有设置值,以指示不存在对应于该输入的UTXO,从而得出具有TxID=[]和index=0的输出点。输出中的解锁脚本包含两个值:二级链内当前区块的区块高度和可能包括可选数据字符串的“Coinbase脚本”字段。鲍勃在输出中为自己分配了二级链区块奖励和事务费用。
(b)鲍勃对二级链Coinbase事务进行序列化处理,并将其嵌入MLB的索引1的OP_RETURN中(相应地更新嵌入式区块头中的默克尔树)。
(c)鲍勃在执行PoW时(以及在接收到新的二级链事务并将其嵌入MLB时)以与常规比特币区块头相同的方式创建和更新二级链区块头数据。
(d)一旦鲍勃求解了PoW算法,他就会在索引0中创建区块头UTXO链链接:
●输出点:
●解锁脚本:hash(EBHh)
●输出值:尘埃
●锁定脚本:<hash(EBHh)>OP_CAT OP_SHA256<EDT>OP_LESSTHAN
●OP_RETURN数据:EBHh
(e)鲍勃在索引1中添加他控制的UTXO,以涵盖核心网络中MLB载体事务的事务费用。他将输出设置为他的更改地址PK′1,并将经过序列化处理的二级链Coinbase事务数据嵌入OP_RETURN。鲍勃在该阶段不会提供索引1的签名,因为MLB仍然必须进行验证。图16示出了鲍勃的候选MLB。
(6)鲍勃向二级网络中的对等方广播他的候选MLB。
(7)鲍勃的对等方验证他的候选MLB。
(a)对等方向鲍勃发送有效性确认。
(b)二级网络中的所有节点将鲍勃的区块添加到二级区块链数据库。
(8)鲍勃将他的签名Sig1ALL添加到索引1中,以便最终确定他的MLB并将其广播到核心网络。
(9)核心网络中的节点根据核心共识规则来构建候选区块。
(a)将鲍勃的MLB添加到内存池,并将其包括在核心网络的候选区块中。
(10)获胜候选区块被广播到核心网络中的对等方。
(11)包含MLB的获胜区块由核心网络中的对等方验证。
(a)鲍勃的MLB被发布在核心链上。图18示出了连接MLB载体事务的UTXO链,图17示出了二级链区块数据与核心链上的MLB中显示的数据之间的映射。
9.结论
一旦给出本文的公开内容,所公开技术的其它变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
例如,上面的一些实施例已经根据比特币网络106、比特币区块链150和比特币节点104进行了描述。然而,应当理解的是,比特币区块链是区块链150的一个特定示例,并且上述描述通常可以应用于任何区块链。也就是说,本发明决不限于比特币区块链。更一般地,以上对比特币网络106、比特币区块链150和比特币节点104的任何引用可以分别参考区块链网络106、区块链150和区块链节点104来替换。区块链、区块链网络和/或区块链节点可以共享如上所述的比特币区块链150、比特币网络106和比特币节点104的部分或全部所述特性。
在本发明的优选实施例中,区块链网络106是比特币网络,并且比特币节点104至少执行对区块链150的区块151进行创建、发布、传播和存储中的所有所述功能。不排除可能存在仅执行这些功能中的一个或部分功能但不是全部功能的其它网络实体(或网络元件)。也就是说,网络实体可以执行传播和/或存储区块的功能,而不创建和发布区块(请记住,这些实体不被认为是优选的比特币网络106的节点)。
在本发明的其他实施例中,区块链网络106可以不是比特币网络。在这些实施例中,不排除节点可以执行对区块链150的区块151进行创建、发布、传播和存储中的至少一个或部分功能但不是所有功能。例如,在这些其它区块链网络上,“节点”可用于指被配置为创建和发布区块151但不存储和/或传播这些区块151到其它节点的网络实体。
甚至更通俗地说,上面对术语“比特币节点”104的任何引用可以用术语“网络实体”或“网络元件”代替,其中这样的实体/元件被配置为执行对区块进行创建、发布、传播和存储中的一些或全部角色。这种网络实体/元件的功能可以在硬件中实现,方法与上面参照区块链节点104所述的方式相同。
应当理解的是,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任何一个或多个语句提供一种方法、装置或程序。
语句1.一种计算机实现的方法,用于使用多级ML数据链协议在核心区块链上嵌入数据链,其中所述方法由ML区块生成器执行并且包括:
获取一个或多个ML事务,其中每个ML事务包括一个或多个相应载体对,每个载体对包括相应输入和相应输出,其中每个相应输出包括与所述数据链相关联的相应数据,并且其中每个相应输入包括对所述相应载体对进行签名的相应签名;
生成所述ML数据链的第一ML区块,其中所述第一ML区块是核心区块链事务并且包括:a)所获取的一个或多个ML事务的所述相应载体对,其中对于每个载体对,所述相应输入的相应位置索引对应于所述相应输出的相应位置索引,以及b)第一链输出,其中所述第一链输出用于由后续ML区块的相应链输入来花费;以及,
使所述第一ML区块记录在所述核心区块链上。
语句2.根据语句1所述的方法,其中所述核心区块链包括一个或多个先前ML区块,每个先前ML区块是相应核心区块链事务并且包括:a)一个或多个载体对,b)相应链输出,以及c)相应链输入,其中每个相应链输入花费先前ML区块的相应链输出,以使得所述一个或多个先前ML区块形成ML区块链,并且其中所述第一ML区块包括:c)第一链输入,所述第一链输入花费先前ML区块的相应链输出。
语句3.根据语句1或2所述的方法,其中所述的使所述第一ML区块记录在所述核心区块链上包括:将所述第一ML区块提交给核心区块链网络。
语句4.根据前述任一项语句所述的方法,其中所述的使所述第一ML区块记录在所述核心区块链上包括:向所述核心区块链网络提交第一核心区块,其中所述第一核心区块包括所述第一ML区块。
语句5.根据前述任一项语句所述的方法,其中所述的获取所述一个或多个ML事务包括:接收所述一个或多个ML事务中的至少一个ML事务。
语句6.根据前述任一项语句所述的方法,其中所述的获取所述一个或多个ML事务包括:生成所述一个或多个ML事务中的至少一个ML事务。
语句7.根据语句6所述的方法,所述方法包括:
接收待被包括在载体对中的数据;以及,
通过将所述接收的数据包括在所述至少一个ML事务的载体对中来生成所述一个或多个ML事务中的至少一个ML事务。
语句8.根据语句5或其任何从属语句所述的方法,所述方法包括:
维护所述接收的ML事务的相应载体对的内存池;以及,
基于存储在所述内存池中的所述相应载体对中的一个或多个相应载体对来生成所述第一ML区块。
语句9.根据前述任一项语句所述的方法,所述方法包括:将所获取的ML事务中的一个或多个ML事务发送到一个或多个ML区块生成器。
语句10.根据前述任一项语句所述的方法,其中所述第一ML区块包括多个载体对。
语句11.根据前述任一项语句所述的方法,其中对所述相应数据进行加密。
语句12.根据语句11所述的方法,其中使用哈希函数对所述相应数据进行加密。
语句13.根据前述任一项语句所述的方法,其中对于每个载体对,所述相应签名仅对所述载体对的所述输入和所述输出进行签名。
语句14.根据语句13所述的方法,其中对于每个载体对,所述相应签名与签名标志相关联,所述签名标志指示所述相应签名仅对所述载体对的所述输入和所述输出进行签名。
语句15.根据前述任一项语句所述的方法,其中根据所述核心区块链协议,每个ML事务是无效事务。
语句16.根据前述任一项语句所述的方法,其中所述数据链是二级区块链,并且其中所述相应数据包括二级区块链的区块链事务。
语句17.根据语句16所述的方法,其中所述第一ML区块的所述载体对中的一个载体对的所述相应数据包括所述二级区块链的部分或全部。
语句18.根据语句1至15中任一项所述的方法,其中所述相应数据包括应用程序特定(application-specific)数据。
例如,与特定通信或消息传递应用程序相关的数据,例如电子邮件应用程序或社交媒体应用程序。
语句19.根据前述任一项语句所述的方法,其中每个相应ML区块的所述相应链输出包括相应区块头,并且其中所述相应区块头包括默克尔树的默克尔根,其中所述默克尔树的相应叶基于所述相应ML区块的所述相应载体对的所述相应数据。
语句20.根据语句19所述的方法,其中所述相应区块头包括时间戳,所述时间戳指示所述相应ML区块的创建和/或提交到所述核心区块链网络的时间。
语句21.根据语句19或20所述的方法,其中所述第一链输出包括锁定脚本,所述锁定脚本被配置为实现工作证明PoW谜题,其中所述PoW谜题包括第一区块头哈希和难度目标,其中所述第一区块头哈希是所述第一ML区块的所述相应区块头的哈希,并且其中所述锁定脚本被配置为要求后续ML区块的相应链输入包括相应区块头哈希,当所述相应区块头哈希与所述第一ML区块的所述第一区块头哈希组合时,所述组合的哈希满足所述难度目标。
语句22.根据从属于语句2的语句21所述的方法,其中所述第一ML区块的所述第一链输入包括所述第一ML区块的所述第一区块头,并且其中所述第一ML区块的所述第一区块头满足所述难度目标,所述难度目标由所述先前ML区块的所述相应链输出的锁定脚本实现的PoW谜题设置。
语句23.根据语句19或20所述的方法,其中所述第一链输出包括锁定脚本,所述锁定脚本被配置为实现PoW R谜题(r-puzzle),其中所述PoW R谜题包括第一哈希值和难度目标,其中所述第一哈希值是与第一r值组合的所述第一区块头的哈希,其中所述r值是数字签名的分量,并且其中所述锁定脚本被配置为使得出于解锁目的要求后续ML区块的相应链输入包括:i)所述后续ML区块的相应区块头,以及ii)使用所述第一r值的签名,并且其中所述第一锁定脚本被配置为:从所述签名中提取所述第一值;生成第二哈希值作为与所提取的r值组合的所述相应区块头的所述哈希;以及验证所述第一哈希值和所述第二哈希值的组合的哈希满足所述目标难度。
语句24.根据从属于语句2的语句23所述的方法,其中所述第一ML区块的所述第一链输入包括:i)所述第一ML区块的所述第一区块头,以及ii)第一签名,所述第一签名使用r值,所述r值由所述先前ML区块的所述相应链输出设置,并且其中所述第一ML区块的所述第一区块头满足所述难度目标,所述难度目标由所述先前ML区块的所述相应链输出的锁定脚本实现的PoW R谜题设置。
语句25.根据语句1至20中任一项所述的方法,其中所述第一链输出包括以下各项中的一项:
-锁定到与ML区块生成器相关联的公钥的锁定脚本;
-锁定到一组公钥中的一个或多个公钥的多重签名锁定脚本,每个公钥与相应ML区块生成器相关联;
-锁定到与阈值私钥对应的公钥的锁定脚本,其中所述阈值私钥被分割为多个私钥份额,并且每个私钥份额与相应ML区块生成器相关联;
-被配置为实现哈希谜题的锁定脚本,其中所述哈希谜题的原像被提供给一个或多个ML区块生成器;
-被配置为实现R谜题的锁定脚本,以使得所述锁定脚本能够由知道特定r值的任何区块生成器来解锁。
语句26.根据前述任一项语句所述的方法,其中所述ML区块生成器是所述核心区块链的区块链节点。
语句27.根据语句1至3、或语句5至25中任一项所述的方法,其中所述ML区块生成器不是所述核心区块链的区块链节点。
语句28.根据语句27所述的方法,其中所述ML区块生成器是简单支付验证客户端。
语句29根据前述任一项语句所述的方法,其中每个ML区块的所述相应链输出包括相应锁定脚本,所述相应锁定脚本被配置为实现用于解锁所述相应锁定脚本的相同类型的共识机制。
也就是说,每个链输出的所述共识机制在功能上是等效的,例如,每个链输出包括被配置为实现PoW谜题的锁定脚本。每个链输出将包括特定于该链输出的数据,例如特定难度目标、公钥、先前区块头哈希等。
语句30.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及,
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据前述任一项语句所述的方法。
语句31.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据语句1至29中任一项所述的方法。
Claims (31)
1.一种计算机实现的方法,用于使用多级ML数据链协议在核心区块链上嵌入数据链,其中所述方法由ML区块生成器执行并且包括:
获取一个或多个ML事务,其中每个ML事务包括一个或多个相应载体对,每个载体对包括相应输入和相应输出,其中每个相应输出包括与所述数据链相关联的相应数据,并且其中每个相应输入包括对所述相应载体对签署的相应签名;
生成所述ML数据链的第一ML区块,其中所述第一ML区块是核心区块链事务并且包括:a)所获取的一个或多个ML事务的所述相应载体对,其中对于每个载体对,所述相应输入的相应位置索引对应于所述相应输出的相应位置索引,以及b)第一链输出,其中所述第一链输出用于由后续ML区块的相应链输入花费;以及
使所述第一ML区块记录在所述核心区块链上。
2.根据权利要求1所述的方法,其中所述核心区块链包括一个或多个先前ML区块,每个先前ML区块是相应核心区块链事务并且包括:a)一个或多个载体对,b)相应链输出,以及c)相应链输入,其中每个相应链输入花费先前ML区块的相应链输出,以使得所述一个或多个先前ML区块形成ML区块链,并且其中所述第一ML区块包括:c)第一链输入,所述第一链输入花费先前ML区块的相应链输出。
3.根据权利要求1或2所述的方法,其中所述的使所述第一ML区块记录在所述核心区块链上包括:将所述第一ML区块提交给核心区块链网络。
4.根据前述任一项权利要求所述的方法,其中所述的使所述第一ML区块记录在所述核心区块链上包括:向所述核心区块链网络提交第一核心区块,其中所述第一核心区块包括所述第一ML区块。
5.根据前述任一项权利要求所述的方法,其中所述的获取所述一个或多个ML事务包括:接收所述一个或多个ML事务中的至少一个ML事务。
6.根据前述任一项权利要求所述的方法,其中所述的获取所述一个或多个ML事务包括:生成所述一个或多个ML事务中的至少一个ML事务。
7.根据权利要求6所述的方法,所述方法包括:
接收待被包括在载体对中的数据;以及
通过将所述接收的数据包括在所述至少一个ML事务的载体对中来生成所述一个或多个ML事务中的至少一个ML事务。
8.根据权利要求5或其任何从属权利要求所述的方法,所述方法包括:
维护所述接收的ML事务的相应载体对的内存池;以及
基于存储在所述内存池中的所述相应载体对中的一个或多个相应载体对来生成所述第一ML区块。
9.根据前述任一项权利要求所述的方法,所述方法包括:将所获取的ML事务中的一个或多个ML事务发送到一个或多个ML区块生成器。
10.根据前述任一项权利要求所述的方法,其中所述第一ML区块包括多个载体对。
11.根据前述任一项权利要求所述的方法,其中所述相应数据是被加密的。
12.根据权利要求11所述的方法,其中所述相应数据是使用哈希函数来加密的。
13.根据前述任一项权利要求所述的方法,其中对于每个载体对,所述相应签名仅对所述载体对的所述输入和所述输出进行签名。
14.根据权利要求13所述的方法,其中对于每个载体对,所述相应签名与签名标志相关联,所述签名标志指示所述相应签名仅对所述载体对的所述输入和所述输出进行签名。
15.根据前述任一项权利要求所述的方法,其中根据所述核心区块链协议,每个ML事务是无效事务。
16.根据前述任一项权利要求所述的方法,其中所述数据链是二级区块链,并且其中所述相应数据包括二级区块链的区块链事务。
17.根据权利要求16所述的方法,其中所述第一ML区块的所述载体对中的一个载体对的所述相应数据包括所述二级区块链的部分或全部。
18.根据权利要求1至15中任一项所述的方法,其中所述相应数据包括应用程序特定数据。
19.根据前述任一项权利要求所述的方法,其中每个相应ML区块的所述相应链输出包括相应区块头,并且其中所述相应区块头包括默克尔树的默克尔根,其中所述默克尔树的相应叶基于所述相应ML区块的所述相应载体对的所述相应数据。
20.根据权利要求19所述的方法,其中所述相应区块头包括时间戳,所述时间戳指示所述相应ML区块的创建和/或提交到所述核心区块链网络的时间。
21.根据权利要求19或20所述的方法,其中所述第一链输出包括锁定脚本,所述锁定脚本被配置为实现工作证明PoW谜题,其中所述PoW谜题包括第一区块头哈希和难度目标,其中所述第一区块头哈希是所述第一ML区块的所述相应区块头的哈希,并且其中所述锁定脚本被配置为要求后续ML区块的相应链输入包括相应区块头哈希,当所述相应区块头哈希与所述第一ML区块的所述第一区块头哈希组合时,所述组合的哈希满足所述难度目标。
22.根据从属于权利要求2的权利要求21所述的方法,其中所述第一ML区块的所述第一链输入包括所述第一ML区块的所述第一区块头,并且其中所述第一ML区块的所述第一区块头满足所述难度目标,所述难度目标由所述先前ML区块的所述相应链输出的锁定脚本实现的PoW谜题设置。
23.根据权利要求19或20所述的方法,其中所述第一链输出包括锁定脚本,所述锁定脚本被配置为实现PoW R谜题,其中所述PoW R谜题包括第一哈希值和难度目标,其中所述第一哈希值是与第一r值组合的所述第一区块头的哈希,其中所述r值是数字签名的分量,并且其中所述锁定脚本被配置为使得出于解锁目的要求后续ML区块的相应链输入包括:i)所述后续ML区块的相应区块头,以及ii)使用所述第一r值的签名,并且其中所述第一锁定脚本被配置为:从所述签名中提取所述第一值;生成第二哈希值作为与所提取的r值组合的所述相应区块头的所述哈希;以及验证所述第一哈希值和所述第二哈希值的组合的哈希满足所述目标难度。
24.根据从属于权利要求2的权利要求23所述的方法,其中所述第一ML区块的所述第一链输入包括:i)所述第一ML区块的所述第一区块头,以及ii)第一签名,所述第一签名使用r值,所述r值由所述先前ML区块的所述相应链输出设置,并且其中所述第一ML区块的所述第一区块头满足所述难度目标,所述难度目标由所述先前ML区块的所述相应链输出的锁定脚本实现的PoW R谜题设置。
25.根据权利要求1至20中任一项所述的方法,其中所述第一链输出包括以下各项中的一项:
-锁定到与ML区块生成器相关联的公钥的锁定脚本;
-锁定到一组公钥中的一个或多个公钥的多重签名锁定脚本,每个公钥与相应ML区块生成器相关联;
-锁定到与阈值私钥对应的公钥的锁定脚本,其中所述阈值私钥被分割为多个私钥份额,并且每个私钥份额与相应ML区块生成器相关联;
-被配置为实现哈希谜题的锁定脚本,其中所述哈希谜题的原像被提供给一个或多个ML区块生成器;
-被配置为实现R谜题的锁定脚本,以使得所述锁定脚本能够由知道特定r值的任何区块生成器来解锁。
26.根据前述任一项权利要求所述的方法,其中所述ML区块生成器是所述核心区块链的区块链节点。
27.根据权利要求1至3、或权利要求5至25中任一项所述的方法,其中所述ML区块生成器不是所述核心区块链的区块链节点。
28.根据权利要求27所述的方法,其中所述ML区块生成器是简单支付验证客户端。
29.根据前述任一项权利要求所述的方法,其中每个ML区块的所述相应链输出包括相应锁定脚本,所述相应锁定脚本被配置为实现用于解锁所述相应锁定脚本的相同类型的共识机制。
30.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据前述任一项权利要求所述的方法。
31.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据权利要求1至29中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2109191.3A GB2608179A (en) | 2021-06-25 | 2021-06-25 | Multi-level blockchain |
GB2109191.3 | 2021-06-25 | ||
PCT/EP2022/064160 WO2022268429A1 (en) | 2021-06-25 | 2022-05-25 | Multi-level blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117546167A true CN117546167A (zh) | 2024-02-09 |
Family
ID=77179548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280044479.1A Pending CN117546167A (zh) | 2021-06-25 | 2022-05-25 | 多级区块链 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20240291678A1 (zh) |
EP (1) | EP4359985A1 (zh) |
JP (1) | JP2024525196A (zh) |
KR (1) | KR20240024113A (zh) |
CN (1) | CN117546167A (zh) |
GB (1) | GB2608179A (zh) |
WO (1) | WO2022268429A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11902426B2 (en) * | 2021-06-26 | 2024-02-13 | Ceremorphic, Inc. | Efficient storage of blockchain in embedded device |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020051540A1 (en) * | 2018-09-06 | 2020-03-12 | Clause, Inc. | System and method for a hybrid contract execution environment |
US11875400B2 (en) * | 2019-01-31 | 2024-01-16 | Salesforce, Inc. | Systems, methods, and apparatuses for dynamically assigning nodes to a group within blockchains based on transaction type and node intelligence using distributed ledger technology (DLT) |
GB201907347D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | In-script functions within a blockchain transaction |
-
2021
- 2021-06-25 GB GB2109191.3A patent/GB2608179A/en active Pending
-
2022
- 2022-05-25 KR KR1020237044874A patent/KR20240024113A/ko unknown
- 2022-05-25 CN CN202280044479.1A patent/CN117546167A/zh active Pending
- 2022-05-25 WO PCT/EP2022/064160 patent/WO2022268429A1/en active Application Filing
- 2022-05-25 JP JP2023578810A patent/JP2024525196A/ja active Pending
- 2022-05-25 US US18/573,650 patent/US20240291678A1/en active Pending
- 2022-05-25 EP EP22733301.0A patent/EP4359985A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4359985A1 (en) | 2024-05-01 |
KR20240024113A (ko) | 2024-02-23 |
JP2024525196A (ja) | 2024-07-10 |
US20240291678A1 (en) | 2024-08-29 |
GB202109191D0 (en) | 2021-08-11 |
WO2022268429A1 (en) | 2022-12-29 |
GB2608179A (en) | 2022-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116210016A (zh) | 共生通证系统 | |
CN117044161A (zh) | 阻止敏感数据 | |
CN116508291A (zh) | 默克尔证明实体 | |
CN116547945A (zh) | 默克尔证明实体 | |
CN116157796A (zh) | 警报账户 | |
CN117480758A (zh) | 用于验证区块链上的通证的计算机实现的方法和系统 | |
CN117546167A (zh) | 多级区块链 | |
CN114531941A (zh) | 多标准区块链协议 | |
CN117751550A (zh) | 分层共识 | |
CN118805360A (zh) | 区块链事务 | |
CN117652124A (zh) | 区块链区块和存在证明 | |
CN116671064A (zh) | 多重签名事务 | |
CN117280653A (zh) | 多方区块链地址方案 | |
CN118044151A (zh) | 传播锁定脚本 | |
CN116671061A (zh) | 节点版本控制 | |
CN117730512A (zh) | 对区块链事务强制执行条件 | |
CN117693923A (zh) | 对区块链事务强制执行条件 | |
CN118476186A (zh) | 基于签名的原子交换 | |
CN117693926A (zh) | 区块链区块和存在证明 | |
CN117678193A (zh) | 区块链区块和存在证明 | |
CN117280349A (zh) | 多方区块链地址方案 | |
CN117337436A (zh) | 多方区块链地址方案 | |
CN116636180A (zh) | 事务签名标志 | |
CN118525484A (zh) | 区块链区块和存在证明 | |
GB2628367A (en) | Determining a system state using a blockchain |
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 |