掌桥专利:专业的专利平台
掌桥专利
首页

多方区块链地址方案

文献发布时间:2024-04-18 19:58:53


多方区块链地址方案

技术领域

本公开涉及一种生成可由多方中的一方解锁的区块链事务的输出的方法,以及一种生成用于解锁此类输出的区块链事务的方法。

背景技术

区块链是指一种分布式数据结构,其中在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。

区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字通证);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。

区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。

成功解决工作证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即通证数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。

在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字通证或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二目标事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。

在此类模型中,当第二目标事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。

另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。

发明内容

花费UTXO通常依赖于加密方法,所述加密方法允许各方证明具备必要信息的知识,通常称为知识证明。例如,UTXO可能被哈希谜题锁定,所述哈希谜题要求花费事务的输入包含数据,在进行哈希处理时,所述数据导致形成所述哈希谜题的一部分的特定哈希。此外,存在允许使用多个知识证明中的一个知识证明以便花费UTXO的方案。国际专利申请WO2021014233和WO2020240295中描述了此类方案的示例。有关更多详细信息,请参阅下面的第8节。然而,这两种方案都存在缺点。WO2021014233和WO2020240295中提出的方案分别要求在所述花费事务的解锁脚本中提供默克尔证明和附加签名。在计算要求(例如,当处理所述事务和/或核实所述事务有效时)和存储要求方面,检查默克尔证明和签名是昂贵的。

因此,希望提供一种改进的方案,所述方案允许多方中的一方花费UTXO,其不会遇到与现有方案相同的计算和存储问题。

根据本文公开的一个方面,提供了一种生成区块链事务的计算机实现的方法,所述事务用于将一定数量的数字资产从第一方转移到多个第二方中的一个第二方,其中每个第二方与相应公钥相关联,并且其中所述方法由协调方执行并且包括:生成第一区块链事务,其中所述第一区块链事务包括第一锁定脚本,所述第一锁定脚本包括第一共享哈希值,所述第一共享哈希值是通过对第二共享哈希值应用第一哈希函数来生成的,其中所述第二共享哈希值是通过对所述相应公钥的组合应用第二哈希函数来生成的,并且其中所述第一锁定脚本被配置为在与第二区块链事务的第一解锁脚本一起执行时:a)要求所述第一解锁脚本包括目标公钥、目标签名和中间哈希值,所述中间哈希值是基于所述相应公钥中除一个相应公钥之外的所有相应公钥来生成的,以及b)i)对所述目标公钥应用所述第二哈希函数以生成目标哈希值,ii)组合所述目标哈希值和所述中间哈希值以生成目标第二共享哈希值,iii)对所述目标第二共享哈希值应用所述第一哈希函数以生成目标第一共享哈希值、并验证所述目标第一共享哈希值与所述第一共享哈希值匹配,和iv)验证所述目标签名是所述目标公钥的有效签名;以及,将所述第一区块链事务提供给以下各项中的至少一项:区块链网络的一个或多个节点,所述第一方,所述多个第二方中的一个或多个第二方,一个或多个第三方。

根据本文公开的一个方面,提供了一种生成区块链事务的计算机实现的方法,所述事务用于解锁一定数量的数字资产,所述一定数量的数字资产锁定到多个第二方中的一个第二方,其中每个第二方与相应公钥相关联,每个相应公钥与相应索引相关联,其中第一区块链事务包括第一锁定脚本,所述第一锁定脚本包括第一共享哈希值,所述第一共享哈希值是通过对第二共享哈希值应用第一哈希函数来生成的,其中所述第二共享哈希值是通过对所述相应公钥的组合应用第二哈希函数来生成的,其中所述相应公钥基于所关联的相应索引按一定顺序组合;并且其中所述第一锁定脚本被配置为在与第二区块链事务的第一解锁脚本一起执行时:a)要求所述第一解锁脚本包括目标公钥、目标签名和中间哈希值,所述中间哈希值是基于所述相应公钥中除一个相应公钥之外的所有相应公钥来生成的,以及b)i)对所述目标公钥应用所述第二哈希函数以生成目标哈希值,ii)组合所述目标哈希值和所述中间哈希值以生成目标第二共享哈希值,iii)对所述目标第二共享哈希值应用所述第一哈希函数以生成目标第一共享哈希值,并验证所述目标第一共享哈希值与所述第一共享哈希值匹配,和iv)验证所述目标签名是所述目标公钥的有效签名;并且其中所述方法由所述多个第二方中的目标第二方执行并且包括:

生成所述第二区块链事务,其中所述第二区块链事务包括输入,所述输入引用所述第一区块链事务的所述第一锁定脚本和所述第一解锁脚本,所述第一解锁脚本包括与所述目标第二方相关联的所述相应公钥、基于所述多个第二方的所述相应公钥中的每个相应公钥(除所述目标第二方的所述相应公钥之外)而生成的中间哈希值、以及与所述目标第二方相关联的所述相应公钥的有效签名;以及,将所述第二区块链事务提供给以下各项中的至少一项:区块链网络的一个或多个节点,所述第一方,所述多个第二方中的一个或多个第二方,一个或多个第三方。

每个第二方(例如,用户)与公钥相关联,这意味着给定方可以访问与其公钥对应的所述私钥。因此,每一方可以生成签名,所述签名可以链接到所述一方的公钥,即使用所述公钥进行验证。每一方还与相应索引相关联。这相当于每个公钥与所述相应索引相关联。为了被解锁,所述第一锁定脚本要求第二方在花费事务(所述第二事务)的解锁脚本中提供他们的公钥、和能够使用所述公钥验证的有效签名。还必须提供中间哈希值(如下所述)。这些项不必按该顺序放置在所述解锁脚本中。

所述第一锁定脚本包括第一共享哈希值。所述第一共享哈希值是通过对所述第二方的公钥的组合的哈希应用第一哈希函数来生成的,其中所述公钥的组合使用第二哈希函数进行哈希处理。也就是说,通过对所述公钥的组合进行哈希处理来生成第二哈希值,然后通过对所述第二哈希值进行哈希处理来生成所述第一哈希值。所述第一哈希函数和所述第二哈希函数可以是相同的哈希函数,也可以是不同的哈希函数。应当注意的是,术语“共享哈希值”仅仅是所述哈希值的便利标签,并且从每个第二方接收或访问所述共享哈希值的意义上,所述哈希值不一定是共享哈希值。所述公钥可以使用线性函数(例如,加法)来组合。

在执行时,所述第一锁定脚本被配置为利用所述第二哈希函数对所述目标公钥进行哈希处理以生成目标哈希值。所述第一锁定脚本还被配置为组合所述目标哈希值和所述中间哈希值以生成目标第二共享哈希值。所述第一锁定脚本被配置为然后利用所述第一哈希函数对所述目标第二共享哈希值进行哈希处理以生成目标第一共享哈希值,并验证所述目标第一哈希值与所述第一锁定脚本中包括的所述第一共享哈希值相同。此外,所述第一锁定脚本验证所述第二方在所述解锁脚本中提供的所述签名是所述提供的公钥的有效签名。应当注意的是,这些步骤中的至少一些步骤的顺序可以更改。

所述第二方在所述解锁脚本中提供的所述中间哈希值必须基于所述第二方中除提供所述中间哈希值的所述第二方之外的每个第二方的公钥。换句话说,如果存在五个第二方,则所述中间哈希值基于四个公钥,其他第二方中的每个第二方一个。这样,当所述中间哈希值和所述目标第二共享哈希值进行哈希处理时,所得到的目标第一共享哈希值应等于所述第一共享哈希值。

本发明的实施例使得协调者能够生成多方地址,其中所述地址是“多方的”,这意味着所述地址可以由参与方群组中的任何一方解锁。例如,所述多方地址可以充当家庭、公司或组织等的成员之间的共享银行账户。以家庭为例,支付可以发送到所述多方地址(即,银行账户),并且所述家庭的任何成员(即,账户持有人)可以花费这些资金。

与WO2021014233和WO2020240295中描述的多方方案不同,所述第一锁定脚本不需要执行计算成本高昂的默克尔证明,也不需要额外的签名检查。

附图说明

为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:

图1是一种用于实现区块链的系统的示意性框图;

图2示意性地示出了可记录在区块链中的事务的一些示例;

图3A示出了客户端应用程序的示意性框图;

图3B示出了可由图3A的客户端应用程序表示的示例性用户界面的示意性模型;

图4示出了用于处理事务的一些节点软件的示意性框图;

图5示意性地示出了用于将事务输出锁定到多方地址的示例性系统;

图6示意性地示出了中间哈希值和用于生成第一哈希值的第二共享哈希值的生成。

具体实施方式

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标记为“Tx

当爱丽丝创建其新事务Tx

先前事务Tx

锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写),其可由区块链网络所使用。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。

因此在示出的示例中,Tx

当新事务Tx

||[Checksig PA]

其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由锁定脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥P

本领域技术人员将熟悉通过公私密码进行验证的细节。基本上而言,如果爱丽丝已使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息,诸如节点104等其它实体可验证消息必须已经由爱丽丝签名。签署通常包括对消息进行哈希,签署哈希值和将此标记到消息作为签名,从而使公钥的任何持有者能够验证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或事务部分等的任何引用可以意味着对该数据片段或事务部分的哈希值进行签名。

如果Tx

如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务不会传播或包括在区块151中。

请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在后续事务的多个输出之间分割。例如,Tx

在实践中,爱丽丝通常还需要包括用于比特币节点104的费用,该比特币节点104在区块151中成功包含爱丽丝的事务104。如果爱丽丝未包括此类费用,则Tx

爱丽丝和鲍勃的数字资产由区块链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传播。

该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(Tx

因此,脚本引擎452具有Tx

通过同时运行脚本,脚本引擎452确定解锁脚本是否满足锁定脚本中定义的一个或多个标准,即解锁脚本是否对包括锁定脚本的输出进行解锁?脚本引擎452将该确定的结果返回给协议引擎451。如果脚本引擎452确定解锁脚本确实满足在相应的锁定脚本中指定的一个或多个标准,则返回结果“TRUE”。否则,返回结果“FALSE”。

在基于输出的模型中,来自脚本引擎452的结果“TRUE”是事务有效性的条件之一。通常,还必须满足由协议引擎451评估的一个或多个进一步协议级条件;例如,Tx

此外,还应当注意的是,在本文中,术语“TRUE”和“FALSE”不一定限于返回仅以单个二进制数(位)形式表示的结果,尽管这确实是一种可能的实现方式。更通俗地说,“TRUE”可以指指示成功或肯定结果的任何状态,而“FALSE”可以指指示不成功或不肯定结果的任何状态。例如,在基于账户的模型中,可以对签名的隐式协议级核实和智能合约的附加肯定输出的组合来指示结果为“TRUE”(如果两个单独的结果均为TRUE,则认为总体结果为TRUE)。

6.加密概念

6.1哈希函数

哈希函数H将任意大小的数据映射到固定长度的输出。哈希函数的示例是模函数,例如

H

其中p、q是大素数,并且

加密哈希函数(例如,SHA-256和RIPEMD-160)需要满足附加属性:

·原像抗性;

·第二原像抗性;以及

·碰撞抗性。

6.2椭圆曲线

可以在所述实施例中使用的椭圆曲线的示例是曲线secp256k1,其被定义为素数域

y

其中p=2

6.3椭圆曲线数字签名算法

假设已经生成了与公钥P=aG对应的私钥a∈{1,2,...,p-1}。ECDSA签名算法如下:

1.随机选择整数k∈{1,2,...,n-1}表示临时密钥。

2.计算kG=(x,y)。

3.计算r=x mod n。如果r=0,则转到步骤1。

4.在素数域

5.计算消息msg,e=SHA-256(SHA-256(msg))的哈希摘要。

6.计算s=k

7.输出签名(r,s)。

与公钥P对应的签名(r,s)将由Sig

1.计算消息哈希摘要e=SHA-256(SHA-256(msg))。

2.在素数域

3.计算j

4.计算点加法Q=j

5.如果

应当注意的是,这里的消息哈希摘要e是根据比特币规范计算的。

7.脚本

脚本(大写S)是在一些区块链协议中使用的脚本语言的示例。虽然本发明的实施例不限于任何一种特定脚本语言,但是这里使用脚本作为说明性示例。支付到公钥哈希(P2PKH)脚本的示例性解锁脚本为:

OP_DUP OP_HASH160OP_EQUALVERIFY OP_CHECKSIG

其中H是与操作码OP_HASH160对应的加密哈希函数。

8.现有多方输出方案

8.1R-Puzzle

WO2020240295中引入了R-Puzzle支付方案。给定签名的形式为(r′,s′),它允许任何公钥解锁事务,只要使用对应私钥创建的签名包含给定的r′。

解锁脚本:

解锁脚本:

OP_DUP OP_3 OP_SPLIT OP_NIP OP_1 OP_SPLIT OP_SWAP OP_SPLIT OP_DROPOP_HASH160OP_EQUALVERIFY OP_OVER OP_CHECKSIGVERIFY OP_CHECKSIG

其中签名的形式为Sig

上述脚本的存储在复杂性方面可以忽略不计,阶数为O(1),也就是说,它不与具备r′的知识的各方的数量成比例。然而,尽管在理论上核实解锁脚本有效的计算时间具有阶数O(1),但是在实践中,检查两个签名的计算成本高昂。这是因为,核实器(例如,区块链节点)必须处理事务两次才能核实这两个签名有效。具体地,事务必须进行哈希处理两次,每次签名检查一次,这需要成本高昂的过程,例如哈希和椭圆曲线算术,其中哈希成本高昂,尤其是对于大型事务。

8.2默克尔化智能合约

WO2021014233引入了默克尔化智能合约的概念,由此多方可以花费事务,该事务包含使用他们的公钥形成的默克尔树的默克尔根。此类事务可以与解锁脚本一起花费,该解锁脚本包含花费方的签名、公钥和默克尔证明。对于m方,由于默克尔证明,核实解锁脚本有效所需的计算时间具有阶数O(log

9.多方地址

本发明的实施例提供了一种新颖的寻址方案,该寻址方案使得多个参与方的组群中的一方能够花费UTXO。图5示出了用于实现此类实施例的示例性系统500。系统500包括第一方501和多个第二方502。图5中仅示出了三个第二方,但系统500通常可以包括任意数量的第二方502。系统500还包括协调方503。协调方503可以是该第二组参与方502中的一个,即协调方503可以是第二方502。在其他示例中,协调方503不是第二方502中的一个第二方。在一些示例中,协调方503可以与第一方501相同。

第一方501、第二方502和协调方503中的每一个操作相应计算设备,例如计算设备102。例如,第一方501和第二方502中的每个第二方可以被配置为执行上述由爱丽丝103a和/或鲍勃103b(或者更确切地说,由他们的相应计算设备102a、102b)执行的一些或全部动作。

第一方501与第一公钥相关联。第二方502中的每个第二方与相应第二公钥相关联。与公钥相关联意味着该方可以访问(例如,存储在存储器中)对应私钥。第二方502中的每个第二方可以与相应索引相关联。例如,第二方中的第一个第二方502a可以与索引1相关联,第二方中的第二个第二方502b可以与索引2相关联,等等。应当注意的是,索引不需要是连续的。例如,可以存在具有相应索引4、9和2的三个第二方。类似地,索引不需要是整数。例如,索引可以是字母。不过,一个要求在于,每个第二方502与唯一索引相关联,其中该索引对于该组第二方502是唯一的。应当注意的是,与索引相关联的第二方502等同于与该索引相关联的第二方502的相应公钥。

协调方(或“协调者”)503被配置为生成第一区块链事务。第一区块链事务包括一个或多个输出。该输出中的第一输出(不一定是逻辑上出现在事务的输出列表中的第一输出)锁定一定数量的数字资产。第一输出包括第一锁定脚本。第一锁定脚本包括第一哈希值,该第一哈希值在本文中称为“第一共享哈希值”。第一共享哈希值是通过对第二哈希值进行哈希处理来生成的。第二共享哈希值是通过对第二方的公钥的组合进行哈希处理来生成的。第二共享哈希值不需要包括在第一锁定脚本中,尽管不排除这种情况。第一共享哈希值是通过对第二共享哈希值应用第一哈希函数来生成的。可以使用任何合适的哈希函数,例如SHA-256。

第二哈希值是公钥的线性组合的哈希。例如,可以对公钥求和,然后对其进行哈希处理。第二哈希函数可以是线性和/或模哈希函数,例如上文第6.1节中描述的哈希函数:H

第一锁定脚本被配置为当与花费事务(例如,第二事务)的解锁脚本一起执行时,要求解锁脚本至少包括中间哈希值、公钥和签名。第二事务的解锁脚本中包括的中间哈希值、公钥和签名将分别称为目标中间哈希值、目标公钥和目标签名。当执行第一锁定脚本时,它将对目标公钥应用第二哈希函数(脚本内)以生成目标哈希值。目标哈希值是利用第二哈希函数(即,用于(链下)生成第二共享哈希值的相同第二哈希函数)生成的公钥哈希。第一锁定脚本还被配置为组合目标哈希值(公钥哈希)和中间哈希值以生成目标第二共享哈希值。然后,第一锁定脚本被配置为对目标第二共享哈希值应用第一哈希函数(脚本内)以生成目标第一共享哈希值。第一哈希函数与用于(链下)生成第一锁定脚本中包括的第一共享哈希值的哈希函数相同。第一锁定脚本还被配置为在执行时验证目标第一共享哈希值与第一共享哈希值匹配(即,与第一共享哈希值相同)。在这个意义上,第一锁定脚本确保目标中间哈希值和目标公钥产生(作为脚本执行的一部分)预期哈希值,即预先计算的哈希值。如果目标第一共享哈希值与预期第一共享哈希值不匹配,则第一锁定脚本的执行将失败。

第一锁定脚本还被配置为在执行时使用目标公钥来核实目标签名有效。换句话说,第一锁定脚本被配置为验证目标签名是目标公钥的有效签名。可以在所生成的第二共享哈希值与预期第二共享哈希值的比较之前或之后执行目标签名的验证。

在生成第一区块链事务之后,协调者503可以将其发送到区块链网络106,假设满足有效事务的任何其他要求。附加地或替代地,协调者503可以将第一事务发送给第一方501。例如,第一方501可以在第一事务的输入中包括签名,从而为事务提供资金。然后,第一方可以将第一事务提交到区块链网络106。作为另一附加或替代选项,协调者503可以将第一事务发送给第二方502中的一个或多个第二方。然后,第二方中的一个第二方可以将第一事务提交到区块链网络106。此外,不排除协调者503可以将第一事务发送给除第一方501和第二方502之外的一个或多个第三方,即用户、实体等。

为了生成第一锁定脚本,尤其是第一共享哈希值,协调者503需要访问以下各项中的至少一项:每个第二方502的相应公钥或第二共享哈希值。如果第一共享值和第二共享哈希值中的至少一个可用,则协调者503不一定需要公钥,因为只有第一共享哈希值需要出现在第一锁定脚本中。如果协调者可以访问公钥,则协调者503可以组合它们并对组合进行哈希处理以生成第二共享哈希值,然后对第二共享哈希值进行哈希处理以生成第一共享哈希值。如果协调者503仅具有第二共享哈希值,则协调者503可以对第二共享哈希值进行哈希处理以生成第一共享哈希值。

例如,公钥可以从网页或其他此类资源公开访问。在一些示例中,一个或多个第二方502可以将其相应公钥发送给协调者503。此外,不排除第二方502可以将一些或全部所需公钥发送给协调者503。

协调者503可以例如从第二方502中的一个或多个第二方接收第一共享哈希值和/或第二共享哈希值,而不是获取(例如,接收)公钥。例如,第二方502中的一个第二方可以获取其他第二方502的公钥,并生成要发送给协调者503的第一共享哈希值和/或第二共享哈希值。

在一些示例中,每个第二方502可以基于组中的其他第二方502的公钥来生成相应中间哈希值。也就是说,每个第二方502可以获取其他第二方502的公钥,组合公钥,然后使用第二哈希函数对组合进行哈希处理。附加地或替代地,协调者503可以生成相应中间哈希值中的一个或多个中间哈希值,并将中间哈希值发送给相应第二方502。例如,协调者503可以将第一中间哈希值发送给第二方中的第一个第二方502a,其中第一中间哈希值基于第二方502中的每个第二方的公钥(除第二方中的第一个第二方502a的公钥之外)。协调者502可以对第二方中的第二个第二方502b执行相同的操作,等等。

在一些示例中,第一哈希函数可以是任意加密哈希函数。

在一些示例中,对目标公钥应用以生成目标哈希值的第二哈希函数可以是线性哈希函数,例如在预备知识部分定义的线性哈希函数:

H

第一锁定脚本可以包括哈希函数(HF)脚本[H

OP_MULOP_ADD

OP_MODOP_MOD,

其中a是第一参数,b是第二参数,a是第三参数,q是第四参数。技术人员将熟悉操作码。

第一参数a可以是任意非零数,并且可以随机选择。第二参数b可以是任意数,并且可以随机选择。第三参数p可以是素数,并且可以与特定椭圆曲线相关联。例如,p可以是定义一些区块链使用的Secp256k1椭圆曲线的素数,即p=2

可以使用替代的哈希函数,例如H

一旦第一事务已经提交到区块链网络106,例如由协调者503提交,则第二事务可以由第二方502中的一个第二方生成,该第二事务具有解锁脚本,该解锁脚本解锁由第一锁定脚本锁定的第一事务的输出。第二方502在第二事务的解锁脚本中包括他们的相应中间哈希值、他们的公钥以及使用与该公钥对应的私钥生成的签名。第二事务随后提交到区块链网络106。附加地或替代地,第二事务可以提供给第一方501、第二方502中的一个或多个第二方和/或第三方。

下面提供了根据所描述的实施例的可由一方或多方解锁的锁定脚本的示例性实现方式。

在该方案中,通过哈希函数H

假设各方希望支付到采用以下形式的共享哈希值:

其中H

事实上,A=H

计算可以在比特币脚本中执行,如下所示。解锁脚本通过以下公式给出:

其中H

OP_OVER[H

其中[H

此外,应当注意的是,这仅仅是用于实现所描述的实施例的锁定脚本的示例。通常,锁定脚本可以采用被配置为按所述方式工作的任何形式。

可信协调者503生成待要用于创建A的值a、b和q,并使用以下协议来构建A:

1.拥有公钥P

2.协调者计算A=H

3.对于每个i=1,...,m,协调者将H

4.协调者可以将事务模板发送给支付方,该事务模板中包含上面给出的锁定脚本。

该方案只需要O(1)计算时间。存储锁定脚本和解锁脚本所需的空间复杂性为O(min{log

该方案可以防止任何外部恶意攻击者访问解锁脚本。这是因为共享哈希值A是通过加密哈希H

10.结论

一旦给出本文的公开内容,所公开技术的其它变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。

例如,上面的一些实施例已经根据比特币网络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.一种生成区块链事务的计算机实现的方法,所述事务用于将一定数量的数字资产从第一方转移到多个第二方中的一个第二方,其中每个第二方与相应公钥相关联,并且其中所述方法由协调方执行并且包括:

生成第一区块链事务,其中所述第一区块链事务包括第一锁定脚本,所述第一锁定脚本包括第一共享哈希值,所述第一共享哈希值是通过对第二共享哈希值应用第一哈希函数来生成的,其中所述第二共享哈希值是通过对所述相应公钥的组合应用第二哈希函数来生成的;并且其中所述第一锁定脚本被配置为在与第二区块链事务的第一解锁脚本一起执行时:a)要求所述第一解锁脚本包括目标公钥、目标签名和中间哈希值,所述中间哈希值是基于所述相应公钥中除一个相应公钥之外的所有相应公钥来生成的,以及b)i)对所述目标公钥应用所述第二哈希函数以生成目标哈希值,ii)组合所述目标哈希值和所述中间哈希值以生成目标第二共享哈希值,iii)对所述目标第二共享哈希值应用所述第一哈希函数以生成目标第一共享哈希值、并验证所述目标第一共享哈希值与所述第一共享哈希值匹配,和iv)验证所述目标签名是所述目标公钥的有效签名;以及,

将所述第一区块链事务提供给以下各项中的至少一项:区块链网络的一个或多个节点,所述第一方,所述多个第二方中的一个或多个第二方,一个或多个第三方。

语句2.根据语句1所述的方法,所述方法包括:生成所述第一共享哈希值。

语句3.根据语句2所述的方法,所述方法包括:

获取所述相应公钥;以及,

生成所述第二共享哈希值。

语句4.根据语句3所述的方法,其中所述的获取所述相应公钥包括:从所述多个第二方中的一个或多个第二方接收所述相应公钥的一个或多个公钥。

语句5.根据语句4所述的方法,其中所述一个或多个相应公钥中的每个相应公钥接收自与所述公钥相关联的所述第二方。

语句6.根据前述任一项语句所述的方法,所述方法包括:从所述多个第二方中的一个或多个第二方获取所述第二共享哈希值。

语句7.根据前述任一项语句所述的方法,所述方法包括:从所述多个第二方中的一个或多个第二方获取所述第一共享哈希值。

语句8.根据前述任一项语句所述的方法,所述方法包括:

为所述多个第二方中的每个第二方生成相应中间哈希值,其中相应第二方的所述相应中间哈希值基于所述多个第二方中除所述相应第二方之外的每个第二方的所述相应公钥;以及,

将所述相应中间哈希值提供给所述相应第二方。

语句9.根据前述任一项语句所述的方法,其中所述协调方是所述多个第二方中的一个第二方。

语句10.根据语句1至8中任一项所述的方法,其中所述协调方是所述第一方。

语句11.根据前述任一项语句所述的方法,其中所述第一锁定脚本包括HF脚本,所述HF脚本被配置为通过至少执行以下步骤来对所述目标公钥应用所述第二哈希函数以生成所述目标哈希值:

基于将所述目标公钥与第一参数相乘来生成第一中间结果;

基于将第二参数与所述第一中间结果相加来生成第二中间结果;

基于所述第二中间结果对第三参数的取模运算来生成第三中间结果;以及,

基于所述第三中间结果对第四参数的取模运算来生成所述目标哈希值。

语句12.根据语句1至10中任一项所述的方法,其中所述第一锁定脚本包括HF脚本,所述HF脚本被配置为通过至少执行以下步骤来对所述目标公钥应用所述第二哈希函数以生成所述目标哈希值:

基于将所述目标公钥与第一参数相乘来生成第一中间结果;

基于将第二参数与所述第一中间结果相加来生成第二中间结果;以及,

基于所述第二中间结果对所述第四参数的取模运算来生成所述目标哈希值。

语句13.根据语句1至10中任一项所述的方法,其中所述第一锁定脚本包括HF脚本,所述HF脚本被配置为通过至少执行以下步骤来对所述目标公钥应用所述第二哈希函数以生成所述目标哈希值:

基于所述目标公钥对所述第四参数的取模运算来生成所述目标哈希值。

语句14.根据语句11至13中任一项所述的方法,其中所述第一参数是任意非零数,所述第二参数是任意数,所述第三参数是正数,所述第四参数是2^L,其中选择L来定义所述哈希结果的长度。

语句15.根据语句14所述的方法,其中p是定义secp256k1椭圆曲线的素数,和/或其中L是以下各项中的一项:32、64、128、160、256或512。

语句16.根据前述任一项语句所述的方法,其中所述第一哈希函数和所述第二哈希函数是相同的哈希函数。

语句17.根据语句1至15中任一项所述的方法,其中所述第一哈希函数和所述第二哈希函数是不同的哈希函数。

语句18.根据语句17所述的方法,其中所述第一哈希函数是SHA256。

语句19.一种生成区块链事务的计算机实现的方法,所述事务用于解锁一定数量的数字资产,所述一定数量的数字资产锁定到多个第二方中的一个第二方,其中每个第二方与相应公钥相关联,每个相应公钥与相应索引相关联,其中第一区块链事务包括第一锁定脚本,所述第一锁定脚本包括第一共享哈希值,所述第一共享哈希值是通过对第二共享哈希值应用第一哈希函数来生成的,其中所述第二共享哈希值是通过对所述相应公钥的组合应用第二哈希函数来生成的,其中所述相应公钥基于所关联的相应索引按顺序组合;并且其中所述第一锁定脚本被配置为在与第二区块链事务的第一解锁脚本一起执行时:a)要求所述第一解锁脚本包括目标公钥、目标签名和中间哈希值,所述中间哈希值是基于所述相应公钥中除一个相应公钥之外的所有相应公钥来生成的,以及b)i)对所述目标公钥应用所述第二哈希函数以生成目标哈希值,ii)组合所述目标哈希值和所述中间哈希值以生成目标第二共享哈希值,iii)对所述目标第二共享哈希值应用所述第一哈希函数以生成目标第一共享哈希值,并验证所述目标第一共享哈希值与所述第一共享哈希值匹配,和iv)验证所述目标签名是所述目标公钥的有效签名;并且其中所述方法由所述多个第二方中的目标第二方执行并且包括:

生成所述第二区块链事务,其中所述第二区块链事务包括输入,所述输入引用所述第一区块链事务的所述第一锁定脚本和所述第一解锁脚本,所述第一解锁脚本包括与所述目标第二方相关联的所述相应公钥、基于除所述目标第二方之外的所述多个第二方的所述相应公钥中的每个相应公钥而生成的中间哈希值、以及与所述目标第二方相关联的所述相应公钥的有效签名;以及,

将所述第二区块链事务提供给以下各项中的至少一项:区块链网络的一个或多个节点,所述第一方,所述多个第二方中的一个或多个第二方,一个或多个第三方。

语句20.根据语句19所述的方法,所述方法包括:将所述目标公钥发送给协调方,以生成所述第一区块链事务。

语句21.根据语句19或20所述的方法,所述方法包括:

获取所述多个第二方中的每个第二方的所述相应公钥;以及,

基于所述多个第二方中除所述目标第二方之外的每个第二方的全部所述相应公钥来生成所述中间哈希值。

语句22.一种计算机设备,所述计算机设备包括:

存储器,所述存储器包括一个或多个存储器单元;以及,

处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据前述任一项语句所述的方法。

语句23.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据语句1至21中任一项所述的方法。

根据本文公开的另一方面,可以提供一种方法,所述方法包括所述协调方和所述第二方的所述动作。

根据本文公开的另一方面,可以提供一种系统,所述系统包括所述协调方和所述第二方的所述计算机设备。

相关技术
  • 一种关联区块链主链的文件存储服务地址变更方法及系统
  • 一种基于区块链的多方数据聚合查询方案
  • 用于参考从多方块图片的段得到的比特流地址相关信息来确定多方块图片的方块的比特流起始地址的方法和装置
技术分类

06120116514047