节点版本控制制造技术

技术编号:38659248 阅读:15 留言:0更新日期:2023-09-02 22:43
一种执行区块链事务的计算机实现的方法,其中第一区块链事务包括第一输出,其中所述第一输出包括第一锁定脚本,所述第一锁定脚本包含版本操作码,其中第二事务包括引用所述第一事务的所述第一输出的第一输入、并且其包括第一解锁脚本,并且其中所述方法由区块链节点执行并且包括:与所述第一解锁脚本一起执行所述第一锁定脚本,其中所述的执行包括,在执行所述版本操作码时,获取所述区块链节点的节点协议版本号,以及输出所述节点协议版本号,其中所述节点协议版本号与所述区块链节点被配置为执行的特定功能相关联。为执行的特定功能相关联。为执行的特定功能相关联。

【技术实现步骤摘要】
【国外来华专利技术】节点版本控制


[0001]本公开涉及一种执行区块链事务的方法。

技术介绍

[0002]区块链是指一种分布式数据结构,其中在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作量证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。
[0003]区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字通证);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
[0004]区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作量证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作量证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
[0005]成功解决工作量证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即通证数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
[0006]在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素
可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字通证或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二目标事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
[0007]在此类模型中,当第二目标事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
[0008]另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。
[0009]区块链协议可以使用脚本语言进行事务处理。脚本本质上是元素列表,这些元素可以是数据或指令。这些指令在文献中称为脚本字、操作码、命令或函数。操作码(操作代码的简称)对脚本中的数据执行预定义操作。

技术实现思路

[0010]区块链被设计成允许在其基础设施上构建各种应用程序。一些区块链节点不仅为系统提供安全性,还提供附加功能和实用程序,例如执行智能合约的能力。然而,并非所有节点都提供这些附加功能,或者不同的节点可以支持不同类型或级别的此类功能。节点需要能够更好地促进区块链网络中可能存在非同构节点功能。
[0011]根据本文公开的一个方面,提供了一种执行区块链事务的计算机实现的方法,其中第一区块链事务包括第一输出,其中所述第一输出包括第一锁定脚本,所述第一锁定脚本包含版本操作码,其中第二事务包括引用所述第一事务的所述第一输出的第一输入、并且其包括第一解锁脚本,并且其中所述方法由区块链节点执行并且包括:与所述第一解锁脚本一起执行所述第一锁定脚本,其中所述的执行包括:在执行所述版本操作码时,获取所述区块链节点的节点协议版本号,以及输出所述节点协议版本号,其中所述节点协议版本号与所述区块链节点被配置为执行的特定功能相关联。
[0012]根据本文公开的另一方面,提供了一种生成区块链事务的计算机实现的方法,其中所述方法由生成实体执行并且包括:生成第一区块链事务,所述第一区块链事务包括第一输出,其中所述第一输出包括第一锁定脚本,所述第一锁定脚本包含版本操作码,所述版本操作码被配置为:当由执行实体执行时,使所述执行实体获取区块链节点的节点协议版本号,并输出所述节点协议版本号,并且其中所述节点协议版本号与所述区块链节点被配置为执行的特定功能相关联。
[0013]响应于执行(即,调用)版本操作码,区块链节点获取并输出协议版本号。协议版本号与区块链节点被配置为执行的特定协议相关联。换句话说,区块链节点被配置为实现作为协议一部分的功能。例如,协议可以是智能合约协议、通证协议或用于核实事务的特定协议。
[0014]又如,区块链节点可以被配置为执行非区块链特定代码(例如,Python或Java)并返回(即,输出)该代码的执行结果。代码的执行可以依赖于第一事务的输入中包含的数据。
[0015]事务的核实可能至少间接依赖于协议版本号,根据区块链节点强制执行的区块链协议,事务必须始终有效。节点版本控制(node versioning)(即,输出节点协议版本号)的引入,通过使节点能够根据自己的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种执行区块链事务的计算机实现的方法,其中第一区块链事务包括第一输出,其中所述第一输出包括第一锁定脚本,所述第一锁定脚本包含版本操作码,其中第二事务包括引用所述第一事务的所述第一输出的第一输入、并且其包括第一解锁脚本,并且其中所述方法由区块链节点执行并且包括:与所述第一解锁脚本一起执行所述第一锁定脚本,其中所述的执行包括:在执行所述版本操作码时,获取所述区块链节点的节点协议版本号,以及输出所述节点协议版本号,其中所述节点协议版本号与所述区块链节点被配置为执行的特定功能相关联。2.根据权利要求1所述的方法,所述方法包括:基于所述的与所述第一解锁脚本一起执行所述第一锁定脚本来核实所述第二事务。3.根据前述任一项权利要求所述的方法,其中所述的输出所述节点协议版本号包括:输出所述节点协议版本号的固定长度表示。4.根据前述任一项权利要求所述的方法,其中所述第一锁定脚本是采用基于堆栈的脚本语言编写的,并且其中所述的输出所述节点协议版本号包括:将所述节点协议版本号输出到堆栈。5.根据前述任一项权利要求所述的方法,其中所述第一锁定脚本或所述第一解锁脚本包括目标节点协议版本号,并且其中所述的执行所述版本操作码包括:确定所输出的节点协议版本号是否与所述目标节点协议版本号匹配。6.根据权利要求5所述的方法,其中所述的执行所述版本操作码包括:如果所输出的节点协议版本号与所述目标节点协议版本号匹配,则执行所述锁定脚本的预定部分;以及如果所输出的节点协议版本号与所述目标节点协议版本号不匹配,则不执行所述锁定脚本的所述预定部分。7.根据权利要求6所述的方法,其中所述第一锁定脚本包括代码分隔符操作码,所述代码分隔符操作码用于将所述脚本预定部分与脚本第二部分分隔开,使得所述第一解锁脚本中包含的签名仅对所述脚本第二部分进行签名、而不对所述脚本预定部分进行签名。8.根据权利要求6或7所述的方法,所述方法包括:输出和/或存储所述的执行所述锁定脚本的预定部分的结果。9.根据权利要求6至8中任一项所述的方法,其中所述脚本预定部分包括采用除原生区块链语言之外的语言编写的部分代码,并且其中所述区块链节点被配置为执行采用该语言编写的代码。10.根据权利要求9所述的方法,其中所述部分代码是采用除所述原生区块链语言之外的区块链语言编写的。11.根据权利要求8或其任何从属权利要求所述的方法,其中所述的输出所述结果包括:将所述结果传输给第一用户。12.根据权利要求11所述的方法,其中所述第一事务和/或所述第二事务由所述第一用户生成。13.根据权利要求8或其任何从属权利要求所述的方法,其中所述的输出所述结果包括:将所述结果存储在区块链事务中,并将所述区块链事务提供给区块链网络的一个或多个节点。
14.根据权利要求12和13所述的方法,其中所述第二事务是从所述第一用户接收的,并且其中所述方法包括:更新所述第二事务以包括所述结果。15.根据前述任一项权利要求所述的方法,所述方法包括:生成第三区块链事务,其中所述第三事务包括包含锁定脚本的输出,并且其中所述锁定脚本包括所述版本操作码;以及将所述第三区块链事务提供给所述区块链网络的一个或多个节点。16.根据权利要求15所述的方法,其中所述锁定脚本包括相应目标版本号和部分代码,其中所述版本操作码被配置:为当与后续事务的输入一起执行时,确定在所述版本操作码的执行期间输出的节点协议版本号是...

【专利技术属性】
技术研发人员:克洛伊
申请(专利权)人:区块链许可股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1