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

计算机实现的方法和系统

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


计算机实现的方法和系统

技术领域

本公开大体涉及用于为一个或多个客户端实现与分布式账本(即,区块链)相关联的一个或多个服务的平台的方法和系统。特别地,本公开涉及但不限于为一个或多个客户提供对与区块链相关联的多个功能和应用的访问,例如,实现数字或通证化资产的转移。

背景技术

在本文档中,我们使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本(ledger)。这些包括基于共识的区块链和交易链技术、许可的和未被许可的账本、共享账本、公共和私有区块链及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本公开不限于与比特币区块链一起使用,并且与任何类型的数字资产或数字资产的表示相关联的替代区块链实现和协议落入本公开的范围内。术语“客户端”、“实体”、“节点”、“用户”、“发送方”、“接收方”、“付款方”、“收款方”在本文中可以指计算资源或基于处理器的资源。在本文中使用术语“比特币”来包括源自或基于比特币协议的任何版本或变型。术语“数字资产”可以指任何可转移资产,例如,加密货币、表示至少一部分财产的通证、智能合约、许可证(即,软件许可证)或媒体内容的DRM合约等。应当理解,本文档通篇使用术语“数字资产”来表示可能与价值相关联的商品,其可以在从一个实体到另一个实体的交易中被转移或作为支付而提供。

区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一种数据结构,该数据结构对区块链系统中参与方之间的数字资产的控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起来创建所有交易的永久、不可更改的记录,这些交易自其开始就已经被写入区块链中。交易包含嵌入到其输入和输出中的称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。

为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每个交易有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定脚本和解锁脚本来对未花费的交易(UTXO)执行该验证工作。如果锁定脚本和解锁脚本的执行被评估为真(TRUE),则该交易有效,并且该交易然后被写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易–如果交易经过验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块中;以及iii)该交易被挖掘,即被添加到过去交易的公共账本中。

可以理解,矿工所做的工作的性质将取决于用于维护区块链的共识机制的类型。虽然工作量证明(PoW)与原始比特币协议相关联,但可以理解可以使用其他共识机制,例如,权益证明(PoS)、委托权益证明(DPoS)、容量证明(PoC)、经过时间证明(PoET)、权威证明(PoA)等。不同的共识机制在节点之间如何分配挖矿方面有所不同,其中成功挖掘出区块的几率取决于例如矿工的哈希算力(PoW)、矿工持有的加密货币量(PoS)、抵押在委托矿工上的加密货币量(DPoS)、矿工存储加密难题的预定解的能力(PoC)、随机分配给矿工的等待时间(PoET)等。通常,向矿工提供挖掘区块的激励或奖励。例如,比特币区块链用新发行的加密货币(比特币)和与区块中的交易相关联的费用(交易费用)奖励矿工。对于比特币区块链,发行的加密货币量随着时间而减少,激励最终仅由交易费用组成。因此,可以理解,交易费用的处理是用于将数据提交给公共区块链(例如,比特币区块链)的底层机制的一部分。

如前所述,给定区块中的每个交易对区块链系统中参与方之间数字资产的控制权转移进行编码。数字资产不一定需要对应于加密货币。例如,数字资产可能属于文档、图像、物理对象等的数字表示。向矿工支付加密货币和/或交易费用可能仅作为通过执行必要的工作来维持区块链的有效性的激励。可能的是与区块链相关联的加密货币充当矿工的安全措施,而区块链本身是主要与除去加密货币以外的数字资产相关的交易的账本。在某些情况下,可能的是参与方之间的加密货币转移由不同于和/或独立于使用区块链来维护交易的账本的实体的实体进行处理。

一旦作为UTXO存储在区块链中,用户就可以将关联的资源的控制权转移到与另一交易中的输入关联的另一个地址。该转移通常是但不是必须使用数字钱包完成。该数字钱包可以是设备、物理介质、程序、诸如台式机、笔记本电脑或移动终端等计算设备上的应用程序(app)、或与网络上的域(例如,互联网)关联的远程托管服务。数字钱包存储公钥和私钥,并且可以用于跟踪与用户关联的资源、通证和资产等的所有权;接收或花费数字资产;转移可能与数字资产(例如,加密货币、许可证、财产或其他类型的资源)相关的通证。

尽管区块链技术因使用加密货币实现方式而广为人知,但数字企业方正在探索使用比特币所基于的加密安全系统和可以存储在区块链上的数据这两者以实现新系统。如果区块链可以用于不限于加密货币领域的自动化任务和过程,则将是非常有利的。此类解决方案将能够利用区块链的益处(例如,永久的且防篡改的事件记录、分布式处理等),同时在其应用中更加通用。

一个当前研究的领域是使用区块链来实现“智能合约”。这些“智能合约”是被设计为自动化机器可读合约或协议的条款的执行的计算机程序。与用自然语言编写的传统合约不同,智能合约是机器可执行程序,其包括可以处理输入以产生结果、然后可以使得根据这些结果执行动作的规则。

具体来说,一个研究领域是资产转移以及可以如何将其记录在区块链上以确保转移受益于区块链的不变性。此外,除了以日志记录(log)这种转移以确保在底层区块链基础设施的支持下安全地记录和以日志记录转移的手段之外,还特别感兴趣的是为资产转移提供有效且安全的协议。

发明内容

整个本说明书中,词语“包括(comprise)”或诸如“包括(includes)”、“包括(comprises)”或“包括(comprising)”等变型将被理解为暗示包括所述元素、整数、步骤,或元素、整数或步骤的组,但不排除任何其他元素、整数、步骤,或元素、整数或步骤的组。

本公开涉及可以使得能够记录支付事件的方法和系统,该支付事件例如可以是换取商品的货币支付。

在一些实施例中,提供了一种记录至少涉及第一用户和第二用户的资产转移事件的计算机实现的方法。资产可以理解为是使用区块链通证的物理资产的表示。资产可以是使用区块链通证表示的贵金属。资产可以是通证化资产。通证化资产可以是一定量的货币。资产可以是产品或服务。资产转移事件可以是对产品、项目或服务的货币支付。实施例可以使货币支付能够被记录。货币支付可以以任何货币或任何类型的货币进行,并且可以用于商品或服务,或者可以换取不同的货币或不同类型的货币。实施例可以由计算资源来实现。计算资源可以是实硬件或软件实现的。计算资源可以包括多个处理资源,该多个处理资源可以分布在本地或广泛的地理区域上。该方法可以包括:接收指令数据,该指令数据与请求的资产转移事件相关,该指令数据包括与资产转移的发送方相关的第一组元数据和与资产转移的至少一个接收方相关的第二组元数据。元数据可以标识例如支付的货币、账户、指定接收转移或进行转移的个人、支付的条款和条件以及批准付款的数字签名的公钥或证据中的至少一个。发送方和接收方可以各自与关联于资产登记处的账户相关联。资产的发送方可以与第一事件流相关联,资产的接收方可以与第二事件流相关联。

资产登记处是个人或组织拥有的资产的登记方。资产的示例包括由相应的个人或组织所拥有或控制的任何资源。资产的示例包括现金或任何其他有货币价值的东西。资产登记处的示例可以是将现金存款登记到账户的银行,例如,该账户可以用于以特定货币为交易提供资金。另一个示例可以是黄金账户,该黄金账户是个人拥有的黄金存款的登记处。资产登记处与资产发行方相关联,该资产发行方与资产登记处管理的账户相关联。示例发行方可以是皇家造币厂。

实施例可以提供一种方法,该方法还可以包括初始化对应于发送方的第一事件流和对应于至少一个接收方的第二事件流。可替代地或附加地,实施例可以包括访问对应于相应的发送方和接收方的第一事件流或第二事件流。事件流可以使用任何合适的硬件或数据结构来实现。实施例提供的方法还可以包括比较第一组元数据和第二组元数据以根据转移协议确定是否可以进行从发送方到至少一个接收方的转移的步骤。基于根据支付协议的相应的元数据组之间的比较,实施例提供的方法可以包括确定相应的元数据组之间的一项或多项对应关系。转移协议可以限定至少一个标准,需要满足该至少一个标准以使资产转移事件能够发生。该至少一个标准可以要求发送方和接收方与关联于同一资产登记处的账户相关联。例如,该至少一个标准可以要求账户在同一银行。该至少一个标准可以要求账户与相同类型的资产相关联。例如,这种标准可以要求两个账户均是针对英镑(GBP)的。

事件流可以包括区块链支持的仅附加日志,其中记录在区块链交易中的数据被添加到以时间排序的日志。也就是说,事件流可以按时间顺序(即,数据出现在区块链上的时间)以日志记录记录在区块链上的数据。这意味着区块链上的区块内交易的顺序一般会通过事件流上日志记录的对应事件的对应索引来反映。然而,这并不需要是这种情况。两个同时的事件意味着事件的顺序不会反映在区块内交易的顺序中。可能的是事件流上具有索引(比如N+1)的事件可以被记录在区块B中,而具有索引N的事件(即,在另一个事件之前记录在事件流上的)可以被记录在区块B+1中。

可以使用任何合适的数据结构来实现事件流。事件流可以包括以序列存储的一系列条目,其中序列中的每个条目在序列中由单调递增的数字引用。也就是说,事件流中的第一条目是条目1,第二条目是条目2,依此类推。底层区块链的使用意味着可以保证事件流中的各个条目自它们被写入后没有被修改,没有条目被插入到先前连续的条目之间,没有条目被移除,并且没有条目被重新排序。未经授权的各方也不可能将事件附加到事件流。事件流可能是链外的,即不在区块链上。虽然恶意方可能将事件添加到事件流,但已经初始化事件流的用户将需要对要附加到事件流的每个事件进行签署,以便恶意方试图添加事件的实例将是可检测的。

基于确定的对应关系,对于发送方和至少一个接收方,可以标识出先前的区块链交易。实施例提供的方法还可以包括:为支付事件生成另外的区块链交易,对于发送方和至少一个接收方中的每一个,该另外的区块链交易包括花费与先前交易相关联的尘埃输出的尘埃输入和对应于尘埃输入的相应的未花费的交易输出(UTXO),以及与转移事件相关联的未花费的交易输出;以及将相应的第一事件流和第二事件流与支付事件同步。

以上方法使得能够记录资产转移事件,其可以依赖于区块链的不变性并且不需要涉及加密货币的支付。可以进行从与资产登记处相关联的一个账户到与资产登记处相关联的另一个账户的转移,然后针对记录与支付相关联的元数据的事件流对该转移进行安全验证。

尘埃输入一般对应于矿工当时愿意处理的最小量的加密货币。该值会随时间变化,因此应理解为不限于特定值。由于尘埃输入一般对应于矿工愿意处理的最小量的加密货币,因此尘埃输入实际上是不可分割的,因为矿工不愿意处理更小的值。这意味着实际上不可能对尘埃输入进行拆分,因此恶意的第三方攻击者更难使用尘埃输入来拆分链,因为矿工不会处理比尘埃输入还小的东西。换句话说,对应于尘埃输入的加密货币量会随时间变化,并且矿工在任何时候愿意处理的最小量可以用于支持尘埃输入并维护安全,因为由于无法拆分尘埃输入,所以仍然几乎无法拆分链。

在一些实施例中,可以提供一种将资产从与资产登记处相关联的第一账户转移到与资产登记处相关联的第二账户的计算机实现的方法。实施例提供的方法可以由与转移的发送方相关联的第一计算资源来实现。实施例提供的方法可以包括从被配置为实现第一方面的方法的第二计算资源接收对资产转移的请求。

实施例提供的方法还可以包括生成第一组元数据,该第一组元数据指示:

(i)至少与要用于转移的发送方账户相关联的资产登记处;

(ii)要从发送方账户中提取的资产价值;以及

(iii)要用于转移的资产的指示符;

实施例提供的方法还可以包括:将第一组元数据传输到第二计算资源以启动转移;从第二计算资源接收与请求的转移相关的指令数据;

使用加密签名对指令数据进行签署以生成签署后的指令数据;

将签署后的指令数据传输到第二计算资源。

为了启动转移,可以将第一组元数据发送到第二计算资源以请求第二计算资源的用户所需的指令数据。

以上方法使计算装置能够实现资产转移并受益于第一方面提供的方法的不变性、保密性和安全性。

在一些实施例中,可以提供一种验证根据第一方面记录的资产转移事件的计算机实现的方法,该方法由第一计算资源实现,该方法包括:

接收验证资产转移事件的请求,该请求包括与来自计算资源的资产转移事件相关联的标识符;

搜索与标识符相关联的事件流条目以提取与资产转移事件相关联的元数据;

将资产转移事件的确认传输到计算资源。

附图说明

现在将仅通过示例的方式并参考附图来描述本公开的各方面和实施例,其中:

图1a示出了根据实施例的系统;

图1b示出了被配置为实现比特币软件以便验证区块链交易的节点;

图1c示出了区块链网络;

图2示出了详细说明根据实施例的账户设置的流程图;

图3a和图3b示出了详细说明根据实施例的从发送方到接收方的支付的流程图;

图3c示出了根据实施例的会合(rendezvous)交易;

图3d示出了尘埃交易链与事件流之间的关系;

图3e示出了对应于交易各方的多个事件流;

图4a示出了详细说明根据实施例的从发送方到接收方的支付的流程图;

图4b示出了根据实施例的会合交易;

图4c示出了对应于交易各方的多个事件流;

图5a示出了详细说明根据实施例的从发送方到接收方的支付的流程图;

图5b示出了根据实施例的会合交易;

图5c示出了对应于交易各方的多个事件流;

图6a和图6b示出了详细说明根据实施例的从发送方到接收方的支付的流程图;

图7示出了根据实施例生成的会合区块链交易;以及

图8示出了根据实施例的交易各方的事件流。

具体实施方式

我们现在提供对本公开的各方面和实施例的详细讨论,以向读者提供对本公开的全面且完整的理解。

从第一方面来看,提供了一种记录至少涉及第一用户和第二用户的资产转移事件的计算机实现的方法。该方法可以使货币支付能够被记录。货币支付可以是以任何货币,并且可以用于商品或服务。该方法可以由计算资源来实现。计算资源可以是硬件或软件实现的。计算资源可以包括多个处理资源,该多个处理资源可以分布在本地或广泛的地理区域上。该方法可以包括:接收指令数据,该指令数据与请求的资产转移事件相关,该指令数据包括与支付的发送方相关的第一组元数据和与支付的至少一个接收方相关的第二组元数据。元数据可以标识支付的货币、与资产登记处相关联的账户、指定接收支付或进行支付的个人、支付的条款和条件以及批准支付的数字签名的公钥或证据中的至少一个。发送方和接收方中的每一个可以各自与关联于资产登记处的账户相关联;

资产的发送方可以与第一事件流相关联,资产的接收方可以与第二事件流相关联。与事件流的关联可能意味着用户持有使用户能够将数据附加到该事件流的加密密钥和/或可能意味着用户可以初始化和/或终止用户或用户操作的计算资源可以将数据附加到的事件流。事件流的初始化可以包括配置实现事件流所必需的计算资源。

该方法还可以包括初始化对应于发送方的第一事件流和对应于至少一个接收方的第二事件流。事件流可以使用任何合适的硬件或数据结构来实现。该方法还可以包括检索对应于发送方的第一事件流的细节和/或检索对应于至少一个接收方的第二事件流的细节。

该方法还可以包括:

比较第一组元数据和第二组元数据,以根据转移协议确定是否可以进行从发送方到至少一个接收方的转移。基于根据支付协议的相应的元数据组之间的比较,确定相应的元数据组之间的一项或多项对应关系,并且基于确定的对应关系,对于发送方和至少一个接收方,该方法还可以包括标识至少一个先前的区块链交易,其中,所述先前的区块链交易可以包括尘埃输出。可以为发送方和接收方标识出先前的区块链交易。还可以为资产登记处和与对应于发送方和接收方的账户相关联的资产的发行方标识出区块链交易。

该方法还可以包括:

为资产转移事件生成另外的区块链交易,对于发送方和至少一个接收方中的每一个,该另外的区块链交易包括花费与先前交易相关联的尘埃输出的尘埃输入和可以对应于尘埃输入的相应的未花费的交易输出(UTXO)(即,在交易中处于匹配的索引),以及与资产转移事件相关联的未花费的交易输出;以及将相应的第一事件流和第二事件流与资产转移事件同步。

有利地,根据第一方面的方法使得能够记录资产转移事件。记录被以日志记录在与区块链相关联的数据流中,因此资产转移事件的记录可以依赖于区块链的不变性,并且不需要涉及加密货币的支付。可以进行从一个账户到另一个账户的转移,然后针对记录与支付相关联的元数据的事件流对该转移进行安全验证。

可选地,基于根据转移协议的相应的元数据组之间的比较,该方法可以包括确定以下至少一项之间的对应关系;

i)相应的元数据组中标识出的资产身份;

ii)从对应于发送方的账户转出的资产价值和从对应于接收方的账户请求的资产价值;以及

iii)与发送方账户和接收方账户相关联的资产登记处的标识符。

资产登记处的示例可以是银行、黄金储存库或详细说明资产所有权的另一个登记处。确定资产身份之间的对应关系可以包括确定发送方和接收方使用的货币相同。确定被转移的资产价值之间的对应关系可以包括确定从接收方账户支付的货币量等于支付给发送方账户的货币量,或者反之亦然。确定资产登记处的标识符之间的对应关系可以包括确定发送方银行和接收方银行是相同的,或者贵金属铸币厂(例如,皇家造币厂处的黄金储存库)正被用作发送方和接收方两者的贵金属账户的登记处。

有利地,这使得仅在可以确定资产的身份、资产量和提供资产登记处的一方的标识中的至少一个之间的对应关系的情况下才记录资产的转移。这意味着该方法仅记录转移条款一致的转移。

可选地,另外的区块链交易可以是用于同步多个事件流的会合区块链交易,该交易包括至少一个数据载体,该至少一个数据载体包括与资产转移事件相关联的元数据。数据载体可以包括与资产转移事件相关联的元数据的哈希。

会合交易是一种区块链交易,其可以包括多个尘埃链输入/输出对和用OP_RETURN操作码标记的输出,以使输出无效并实现数据载体的添加。OP_RETURN操作码使得对应的赎回脚本的执行立即结束并使其无效,即无法赎回输出。这意味着无法花费输出,并且数据载体作为会合交易的一部分保留在区块链上。尘埃链输入/输出对在交易中可以具有相同的索引,并且可以分别进行输入资金和找零输出。数据载体可以是最终输出。形成会合交易的多个尘埃链输入可以来自不同的相应事件流。

有利地,这样做的效果是交易的多方可以通过资源集成到方法中,并且每一方都受益于区块链的不变性以在不损害安全性或保密性的情况下在各自的事件流上记录交易。通过使用元数据的哈希,可以在不将交易细节暴露给恶意行为方的情况下证明交易的元数据。鉴于两组不同的元数据不会生成相同的哈希,这意味着资产转移事件可以由希望表明生成元数据的哈希的数据存在于区块链上的一方进行验证。

可选地,使用会合交易将相应的第一事件流和第二事件流与资产转移事件同步包括将与资产转移事件相关联的元数据的表示附加到相应的第一事件流和第二事件流中的每一个。

有利地,这意味着元数据的表示可以用于验证支付已经发生。元数据的表示可以是元数据的哈希。使用元数据的哈希的效果意味着可以在不损害保密性的情况下记录转移。

可选地,至少一个数据载体被分配给另外的区块链交易的无效输出。也就是说,无效输出可以包括赎回脚本,该赎回脚本包括OP_RETURN操作码以确保输出永远不能被赎回但数据载体保留在交易中。有利地,这使得包含在数据载体中的数据能够存储在对应的交易中。

每个数据载体可以持有不同的数据摘要(dataDigest)。数据摘要是事件数据的哈希,因为它存储在链外和/或因为它存储在数据载体的有效载荷的事件数据表示中的交易上。

每个数据载体可以持有不同的流摘要(streamDigest)。流摘要是事件流先前状态的原像的哈希(也可以描述为事件流先前状态的流摘要,或流摘要参考)或第一交易的种子(如果交易是链中的第二交易,因为第一交易不包括流摘要)。原像哈希的流摘要。

可选地,流摘要也可以被加盐(salted)。可以为与事件流相关联的每个交易随机生成作为唯一值的盐(salt)。可选地,盐存储在链外。对数据加盐提供不揭露任何内容并防止暴力原像攻击(例如,脑钱包攻击)的优势。

所有各方的每个数据载体可以是相同的并且基于同一数据和基于同一支付指令数据集。数据载体可以根据载体附加到的特定数据流的流状态(streamState)保存一些不同的数据,流状态基于先前的流状态和/或索引(或序列号)和/或用于该数据载体的公证(notaisation)的单独的盐。

流状态可以被定义为指代对应事件流中所有数据的当前累积状态的参数。它可以表达为包含所有消息数据以及每个数据项在流中的位置的摘要。当流状态被记录在链上时,它可能伴有最新链接事件的原像,并且可选地,伴有数据项本身。

流状态可以在每个事件附加到流时被维护。摘要连同单独的事件数据可以根据settleStreamOnChain和settleDataOnChain的值安置(settle)在链上。

可选地,原像包括以下字段中的任何一个或多个:

·txid

·index:数据或事件的索引,

·whenRecorded:与交易和/或数据项的创建相关联的时间,

·dataDigest

·streamDigest

流摘要(streamDigest)是原像(preimage)的哈希。

可选地,计算资源根据转移协议确定不能进行转移;以及生成另外的元数据组以解决与转移协议的不一致。不一致可能是资产标识、资产登记处的标识或转移的量之间的不一致。这样做的效果是计算资源可以引入另外的元数据以促进转移,即使在资产的标识、资产登记处(例如,银行)或被转移资产的量中的至少一个之间存在不一致。

生成另外的元数据组可以包括生成另外的支付指令数据,该另外的支付指令数据包括来自和/或向资产登记处的资产转移(例如,支付)的细节和/或资产之间的转换和/或支付细节以解决被转移资产的价值的金额的不一致。生成另外的元数据组还可以包括检索对应于资产登记处或资产发行方的加密签名。

例如,生成另外的元数据组包括生成使能够进行第一货币与第二货币之间的转换的元数据。使能够进行第一货币与第二货币之间的转换的元数据可以包括详细说明向与第一货币的发行方相关联的资产登记处的第一货币的支付的数据和/或详细说明来自与第二货币的发行方相关联的资产登记处的第二货币的支付的数据。这将使多货币交易(即,跨境交易)能够根据该方面进行记录。

例如,其中生成另外的元数据组包括生成即使在存在资产的不同发行方的情况下也使实现资产转移的元数据。

可选地,方法还可以包括为资产登记处和/或资产的发行方标识先前的区块链交易。这些区块链交易包括尘埃输入,该尘埃输入花费与相应的先前交易相关联的尘埃输出。

方法还可以包括初始化与计算资源或任何资产登记处相关联的事件流;以及将资产转移事件与关联于计算资源的事件流同步。可选地,将资产转移事件与关联于计算资源的事件流同步可以包括将对应于资产转移事件的元数据的表示附加到与资产登记处或计算资源相关联的事件流。

有利地,这意味着资产登记处也可以使用事件流验证支付,即资产登记处的参与由区块链的不变性支持。也就是说,账户的提供方(例如,诸如银行等)可以验证已经进行了资产转移,因为他们也具有被附加的事件流来记录资产转移。附加地或可替代地,与计算资源相关联的事件流也可以被初始化以记录涉及计算资源的交易。

事件流的初始化可能意味着设置并配置实现特定事件流所需的计算资源和数据结构。

可选地,计算资源将加密签名应用于另外的元数据组。可以使用公钥基础设施(PKI)技术生成加密签名。可以从发送方或接收方操作的装置上的数据存储中检索加密签名。可选地,计算资源可以检索对应于发送方和接收方的加密签名并将相应的加密签名应用于元数据。例如,可以从与发送方和接收方相关联的计算装置中检索相应的加密签名。

这样做的有利效果在于计算资源可以将签名应用于另外的元数据组以使另外的元数据组能够以加密的方式被签署。

在第二方面,提供了一种将资产从第一用户转移到第二用户的计算机实现的方法。账户可以由资产登记处(例如,诸如银行等)提供。该方法可以由与所转移资产的发送方相关联的第一计算资源来实现。计算资源可以是硬件或软件实现的。计算资源可以包括多个处理资源,该多个处理资源可以分布在本地或广泛的地理区域上。该方法可以包括从被配置为实现第一方面的方法的第二计算资源接收对资产转移的请求。该方法可以包括生成第一组元数据,该第一组元数据指示:

(i)要用于转移的账户;

(ii)要从账户中提取的资产量;以及

(iii)要在转移中使用的资产的指示符;

该方法还可以包括将第一组元数据传输到第二计算资源以启动转移。该方法还可以包括从第二计算资源接收与请求的转移相关的指令数据。该方法还可以包括使用加密签名来签署指令数据以生成签署后的指令数据。该方法还可以包括将签署后的指令数据传输到第二计算资源。

根据第二方面的方法使计算装置能够使用户能够进行资产转移并受益于第一方面提供的方法的不变性、保密性和安全性。

根据第三方面的方法可以包括验证根据第一方面记录的资产转移事件的计算机实现的方法。该方法可以由可以是硬件或软件定义的第一计算资源来实现。该方法可以包括从计算资源接收验证资产转移事件的请求,该资产转移事件包括与资产转移事件相关联的标识符。该方法还可以包括搜索与该标识符相关联的事件流条目以提取与资产转移事件相关联的元数据。该方法还可以包括将资产转移事件的确认传输到计算资源。

根据第三方面的方法使得能够通过以下方式来验证资产转移事件的发生:提交用作搜索基础的与事件相关联的标识符,然后在找到与该标识符相关联的事件时验证发生。

现在参考附图通过说明的方式来描述具体实施例,在附图中相同的附图标记指代相同的特征。

系统概况

我们现在参考图1a描述系统100,该系统100使得系统100的第一用户与第二用户之间的资产转移能够被记录。

系统100包括第一计算装置102和第二计算装置104。第一计算装置102和第二计算装置104可以是任何计算资源。第一计算装置102和第二计算装置104中的每一个被配置为经由相应的第一应用编程接口和第二应用编程接口(API)108与支付处理资源106交互。

支付处理资源106被配置为初始化事件流和/或与事件流交互,事件流是至少关于使用事件流资源110的名为爱丽丝的第一用户(110a)、名为鲍勃的第二用户(110b)和支付处理资源(110c)中的每一个提供的。支付处理资源106对事件流的初始化和与事件流的交互将从2021年2月18日以恩晨控股有限公司(nChain Holdings Limited)的名义提交的第2102314.8号英国专利申请中理解。

支付处理资源106还被配置为与区块链112交互。区块链112可以包括根据比特币中本聪愿景(BSV)协议的至少一个公共工作量证明区块链,因为区块链112是由交易组成的区块的仅附加的账本(BSV1、BSV2、BSV3)。

区块链112包括由现在关于图1b所描述的软件配置的多个节点126。每个节点根据该软件被配置为区块链的一部分,如下面关于图1c所描述的。

图1b示出了在基于UTXO或输出的模型的示例中在网络132的每个区块链节点126上运行的节点软件450的示例。注意,另一实体可以运行节点软件450而不被归类为网络132上的节点126,即不执行节点126所需的动作。节点软件450可以包含但不限于协议引擎451、脚本引擎452、堆栈453、应用级决策引擎454和成组的一个或多个区块链相关功能模块455。每个节点126可以运行包含但不限于共识模块455C(例如,工作量证明)、传播模块455P和存储模块455S(例如,数据库)这所有三个的节点软件。协议引擎401通常被配置为识别交易152的不同字段并根据节点协议处理这些字段。当接收到具有指向另一个在先交易152i(Tx

因此,脚本引擎452具有Tx

通过一起运行脚本,脚本引擎452确定解锁脚本是否满足锁定脚本中限定的一个或多个标准—即,解锁脚本是否“解锁”了包括锁定脚本的输出?脚本引擎452将该确定的结果返回给协议引擎451。如果脚本引擎452确定解锁脚本确实满足对应的锁定脚本中指定的一个或多个标准,则它返回结果“真”。否则返回结果“假”。

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

还请注意,本文的术语“真”和“假”不一定限于返回以仅单个二进制数字(位)的形式表示的结果,尽管这肯定是一种可能的实现方式。更一般地,“真”可以指代指示成功或肯定结果的任何状态,“假”可以指代指示不成功或非肯定结果的任何状态。例如,在基于账户的模型中,“真”的结果可以通过签名的隐式的协议级验证和智能合约的附加肯定输出的组合来指示(如果两个单独的结果都为真,则整体结果被认为是表明真)。

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

例如,上面的一些实施例已经根据比特币网络106、比特币区块链150和比特币节点126进行了描述。然而,应当理解,比特币区块链是区块链150的一个特定示例,以上描述一般可以适用于任何区块链。也就是说,本发明绝不仅限于比特币区块链。更一般地,以上对比特币网络106、比特币区块链150和比特币节点126的任何引用可以分别用对于区块链网络106、区块链150和区块链节点126的引用来替换。区块链、区块链网络和/或区块链节点可以共享以上所描述的比特币区块链150、比特币网络106和比特币节点126的一些或所有描述的特性。

在本发明的优选实施例中,区块链网络132是比特币网络,并且比特币节点126至少执行所有描述的创建、发布、传播和存储区块链150的区块151的功能。不排除可能存在只执行一个或一些但不是所有这些功能的其他网络实体(或网络元素)。也就是说,网络实体可以在不创建和发布区块的情况下执行传播和/或存储区块的功能(回想一下,这些实体不被认为是优选的比特币网络132的节点)。

在本发明的非优选实施例中,区块链网络132可以不是比特币网络。在这些实施例中,不排除节点可以执行至少一个或一些但不是所有的创建、发布、传播和存储区块链150的区块151的功能。例如,在那些其他区块链网络上,“节点”可以用于指代被配置为创建和发布区块151但不存储和/或传播那些区块151到其他节点的网络实体。

甚至更一般地,以上对术语“比特币节点”126的任何引用都可以替换为术语“网络实体”或“网络元素”,其中,这种实体/元素被配置为执行一些或所有的创建、发布、传播和存储区块的任务(role)。这种网络实体/元素的功能可以以与以上参考区块链节点126所描述的相同的方式在硬件中实现。

甚至更一般地,以上对术语“比特币节点”126的任何引用都可以替换为术语“网络实体”或“网络元素”,其中,这种实体/元素被配置为执行一些或所有的创建、发布、传播和存储区块的任务。这种网络实体/元素的功能可以以与以上参考区块链节点126所描述的相同的方式在硬件中实现。

图1c示出了用于实现区块链150的示例系统100。系统100可以包括分组交换网络130,通常是诸如因特网等广域互联网络。分组交换网络130包括多个区块链节点126,这些区块链节点126可以被布置成在分组交换网络130内形成对等(P2P)网络132。虽然未示出,但是区块链节点126可以被布置为近完全图。因此,每个区块链节点126高度连接到其他区块链节点126。

每个区块链节点126包括对等方的计算机设备,其中不同的节点126属于不同的对等方。每个区块链节点126包括处理装置,该处理装置包括一个或多个处理器(例如,一个或多个中央处理单元(CPU)、加速器处理器、专用处理器和/或现场可编程门阵列(FPGA))和诸如专用集成电路(ASIC)等其他设备。每个节点还包括存储器,即,一个或多个非暂时性计算机可读介质形式的计算机可读存储。存储器可以包括采用一个或多个存储器介质的一个或多个存储器单元,例如,诸如硬盘等磁介质;诸如固态驱动器(SSD)、闪存或EEPROM等电子介质;和/或诸如光盘驱动器等光学介质。

区块链150包括数据的区块的链151,其中,在分布式网络或区块链网络130中的多个区块链节点126中的每一个处维护区块链150的相应副本。如上所述,维护区块链150的副本并不一定意味着完整存储区块链150。而是,可以为区块链150修剪数据,只要每个区块链节点150存储每个区块151的区块头(下面讨论)即可。链中的每个区块151包括一个或多个交易152,其中,交易在本上下文中下指代一种数据结构。数据结构的性质将取决于用作交易模型或方案的一部分的交易协议的类型。给定的区块链将始终使用一种特定的交易协议。在一种常见类型的交易协议中,每个交易152的数据结构包括至少一个输入和至少一个输出。每个输出指定表示作为财产的数字资产的数量的金额,其示例是输出被加密锁定到的用户103(需要该用户的签名或其他解以便解锁,从而被赎回或花费)。每个输入都指向回在先交易152的输出,从而链接交易。

每个区块151还包括区块指针155,该区块指针155指向回链中先前创建的区块151,以便限定区块151的次序。每个交易152(除了创币交易)包括指向回先前交易的指针以便限定交易序列的顺序(注意,允许交易152的序列分支)。区块151的链一直回到作为链中的第一区块的创世区块(Gb)153。链150中早期的一个或多个原始交易152指向创世区块153,而不是在先交易。

每个区块链节点126被配置为将交易152转发到其他区块链节点126,从而使交易152在整个网络132中传播。每个区块链节点126被配置为创建区块151并将同一区块链150的相应副本存储在其各自的存储器中。每个区块链节点126还维护等待合并到区块151中的交易152的有序集154。有序集154通常称为“内存池”。本文的该术语不旨在限于任何特定的区块链、协议或模型。它指的是如下交易的有序集:节点126已接受这些交易为有效,且对于这些交易,节点126有义务不接受试图花费同一输出的任何其他交易。

在给定的当前交易152j中,输入(或每个输入)包括引用交易序列中在先交易152i的输出的指针,指定该输出将在当前交易152j中被赎回或“花费”。一般而言,在先交易可以是有序集154或任何区块151中的任何交易。在当前交易152j被创建甚至发送到网络132的时间,在先交易152i不一定需要存在,尽管在先交易152i将需要存在并经过验证,以便使当前交易有效。因此,本文的“在先”指的是通过指针链接的逻辑序列中的前一个,不一定是时间序列中创建或发送的时间,因此并不一定排除交易152i、152j被不按顺序创建或发送(参见下面关于孤儿交易的讨论)。在先交易152i可以等同地称为在前交易或先行交易。

当前交易152j的输入还包括输入授权,例如在先交易152i的输出被锁定到的用户103a的签名。转而,当前交易152j的输出可以加密锁定到新用户或实体103b。因此,当前交易152j可以将在先交易152i的输入中限定的金额转移到当前交易152j的输出中所限定的新用户或实体103b。在某些情况下,交易152可能具有多个输出以在多个用户或实体(其中之一可以是原始用户或实体103a以便找零)之间划分输入的金额。在某些情况下,交易还可以具有多个输入,以将来自一个或多个在先交易的多个输出的金额收集在一起,并重新分配给当前交易的一个或多个输出。

根据诸如比特币等基于输出的交易协议,当诸如用户或机器等实体103希望制定新交易152j时,则该实体将新交易从其计算机终端发送给接收方。实体或接收方最终会将该交易发送到网络132的一个或多个区块链节点126(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。也不排除制定新交易152j的实体103可以将交易发送到一个或多个区块链节点126,并且在一些示例中,不发送到接收方。接收交易的区块链节点126根据应用于每个区块链节点126处的区块链节点协议检查交易是否有效。区块链节点协议通常要求区块链节点126检查新交易152j中的加密签名匹配预期的签名,这取决于交易152的有序序列中的先前交易152i。在这种基于输出的交易协议中,这可以包括检查包括在新交易152j的输入中的实体103的加密签名或其他授权匹配新交易分配的在先交易152i的输出中限定的条件,其中,该条件通常至少包括检查新交易152j的输入中的加密签名或其他授权解锁了新交易的输入链接到的先前交易152i的输出。该条件可以至少部分地由包括在在先交易152i的输出中的脚本来限定。可替代地,它可以简单地由区块链节点协议单独固定,或者它可能是由于这些的组合。无论哪种方式,如果新交易152j有效,则区块链节点126将其转发到区块链网络132中的一个或多个其他区块链节点126。这些其他区块链节点126根据相同的区块链节点协议应用相同的测试,因此将新交易152j转发到一个或多个另外的节点126,等等。以这种方式,新交易在整个区块链节点126的网络中传播。

在基于输出的模型中,给定输出(例如,UTXO)是否被分配的定义是它是否已根据区块链节点协议被另一个后续交易152j的输入有效赎回。交易有效的另一个条件是它试图分配或赎回的在先交易152i的输出尚未被另一交易分配/赎回。同样,如果无效,则交易152j将不会被传播(除非被标记为无效并被传播用于预警)或记录在区块链150中。这防止双花,通过双花,交易方试图分配同一交易的输出多于一次。另一方面,基于账户的模型通过维护账户余额来防止双花。因为再次存在限定的交易顺序,所以账户余额在任何时候都有单一的限定状态。

除了验证交易之外,区块链节点126还竞相第一个在通常称为挖掘的过程中创建交易的区块,这由“工作量证明”支持。在区块链节点126处,新交易被添加到尚未出现在区块链150上记录的区块151中的有效交易的有序集154。然后区块链节点竞相通过试图求解加密难题来组装来自交易的有序集154的交易152的新的有效区块151。通常,这包括搜索“随机数”值,使得当随机数与交易的有序集154的表示连接并被哈希时,则哈希的输出满足预定条件。例如,预定条件可以是哈希的输出具有一定的预定数量的前导零。请注意,这只是一种特定类型的工作量证明难题,并不排除其他类型。哈希函数的特性是它的输出相对于它的输入是不可预测的。因此,这种搜索只能通过蛮力执行,从而在试图求解难题的每个区块链节点126处消耗了大量的处理资源。

求解出难题的第一区块链节点126向网络132宣布这一点,提供解作为证据,然后网络中的其他区块链节点126可以轻松地检查该解(一旦给出哈希的解,就可以直接检查它使得哈希的输出满足条件)。第一区块链节点126将区块传播到接受该区块并因此执行协议规则的其他节点的阈值共识。然后,交易的有序集154被每个区块链节点126记录为区块链150中的新区块151。区块指针155也被分配给新区块151n,指向回链中先前创建的区块151n-1。创建工作量证明解所需的大量努力(例如,以哈希的形式)表明第一节点126遵循区块链协议的规则的意图。这种规则包括如果交易分配与先前通过验证的交易相同的输出,则不接受该交易有效,否则称为双花。一旦被创建,区块151就不能被修改,因为它在区块链网络132中的每个区块链节点126处被识别和维护。区块指针155也对区块151施加次序。由于交易152被记录在网络132中每个区块链节点126处的有序区块中,因此这提供了交易的不可变公共账本。

请注意,在任何给定时间不同区块链节点126竞相求解难题可以基于在任何给定时间尚未发布的交易的有序集154的不同快照来这样做,这取决于它们何时开始搜索解或交易被接收的顺序。谁首先求解出他们各自的难题,谁就限定了哪些交易152包括在下一个新区块151n中以及以何种顺序包括,并且未发布交易的当前集合154被更新。然后区块链节点126继续竞相从新限定的未发布交易的未完成有序集154中创建区块,等等。还存在用于解决可能出现的任何“分叉”的协议,分叉为两个区块链节点126彼此在非常短的时间内求解出其难题,使得区块链的冲突观点在节点126之间传播的情况。简而言之,分叉的哪个分支增长得最长就成为最终的区块链150。请注意,这不应影响网络的用户或代理,因为相同的交易将出现在两个分叉中。

根据比特币区块链(和大多数其他区块链),成功构建新区块的节点126被授予在一种新的特殊交易中分配接受的数字资产的量的能力,该新的特殊交易分配限定数量的数字资产(与将一定量的数字资产从一个代理或用户转移到另一个代理或用户的代理间或用户间交易相反)。这种特殊类型的交易通常称为“创币交易”,但也可称为“启动交易”。它通常形成新区块151n的第一交易。工作量证明表明构建新区块的节点遵循允许稍后赎回该特殊交易的协议规则的意图。区块链协议规则可能要求在赎回该特殊交易之前的成熟期,例如100个区块。通常,常规(非创世)交易152还将在其输出之一中指定额外的交易费用,以进一步奖励创建其中发布该交易的区块151n的区块链节点126。该费用通常称为“交易费用”,将在下文讨论。

由于交易验证和发布中涉及的资源,通常至少每个区块链节点126采用包括一个或多个物理服务器单元的服务器或者甚至整个数据中心的形式。然而,原则上任何给定的区块链节点126可以采用用户终端或联网在一起的用户终端组的形式。

每个区块链节点126的存储器存储软件,该软件被配置为在区块链节点126的处理装置上运行以便执行其各自的一个或多个任务并根据区块链节点协议处理交易152。将理解,本文归因于区块链节点126的任何动作可由在相应的计算机设备的处理装置上运行的软件执行。节点软件可以在应用层处的一个或多个应用、或诸如操作系统层或协议层等较低层、或这些的任意组合中实现。

也连接到网络130的是作为消费用户角色的多方103中的每一方的计算机设备。这些用户可以与区块链网络交互,但不参与验证、构建或传播交易和区块。这些用户或代理103中的一些可以充当交易中的发送方和接收方。其他用户可以与区块链150交互,而不是必须充当发送方或接收方。例如,一些方可以充当存储区块链150的副本的存储实体(例如,已经从区块链节点126获得区块链的副本)。

一些或所有方103可以连接为一个不同的网络(例如,覆盖在区块链网络132之上的网络)的一部分。区块链网络的用户(通常称为“客户端”)可以说是包括区块链网络的系统的一部分;然而,这些用户不是区块链节点126,因为他们不执行区块链节点所需的任务。而是,每一方103可以与区块链网络132交互,从而通过连接到区块链节点132(即,与区块链节点132通信)来利用区块链150。为了说明的目的,示出了两方103和他们各自的设备:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。第一计算装置102和第二计算装置104可以被配置为实现相应的计算机设备102a或102b的任何功能。应当理解,更多这样的各方103和它们各自的计算机设备可以存在并且参与系统100,但是为方便起见它们没有被示出。每一方103可以是个人或组织。纯粹作为说明,在本文中第一方103a被称为爱丽丝,第二方103b被称为鲍勃,但应当理解,这不是限制性的,本文中对爱丽丝或鲍勃的任何引用都可以分别替换为“第一方”和“第二方”。

每一方103的计算机设备包括相应的处理装置,该处理装置包括一个或多个处理器,例如,一个或多个CPU、GPU、其他加速器处理器、专用处理器和/或FPGA。每一方103的计算机设备还包括存储器,即,一个或多个非暂时性计算机可读介质形式的计算机可读存储。该存储器可以包括采用一个或多个存储器介质的一个或多个存储器单元,例如,诸如硬盘等磁介质;诸如SSD、闪存或EEPROM等电子介质;和/或诸如光盘驱动器等光学介质。每一方103的计算机设备上的存储器存储包括至少一个客户端应用105的相应实例的软件,该至少一个客户端应用105被布置为在处理装置上运行。应当理解,本文归因于给定方103的任何动作可以使用在相应的计算机设备的处理装置上运行的软件来执行。每一方的计算机设备103包括至少一个用户终端,例如,台式机或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。给定方103的计算机设备还可以包括一个或多个其他联网资源,例如经由用户终端访问的云计算资源。

客户端应用105最初可以在一个或多个合适的计算机可读存储介质上提供给任何给定方103的计算机设备,例如,从服务器下载,或在可移动存储装置(例如,可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、磁性软盘或磁带、诸如CD或DVD ROM等光盘、或可移动光驱动器等)上提供。客户端应用105分别对应于图1c中所示的装置102a和102b上的105a和105b。

客户端应用105至少包括“钱包”功能。这具有两个主要功能。其中之一是使相应方103能够创建、授权(例如,签署)交易152并将其发送到一个或多个比特币节点126,然后在整个区块链节点126的网络中传播,从而包括在区块链150中。另一个是将他或她目前拥有的数字资产的量报告回相应方。在基于输出的系统中,该第二功能包括整理分散在整个区块链150中属于所述方的各种交易152的输出中限定的量。

注意:虽然可以将各种客户端功能描述为集成到给定的客户端应用105中,但这不一定是限制性的,而是,本文描述的任何客户端功能都可以代替地在两个或更多个不同应用的套件中实现,例如,经由API接口,或者一个是另一个的插件。更一般地,客户端功能可以在应用层或诸如操作系统等较低层,或这些的任意组合处实现。以下将根据客户端应用105进行描述,但应理解这不是限制性的。

每个计算机设备上的客户端应用或软件105的实例可操作地耦接到网络132的至少一个区块链节点126。这使得客户端105的钱包功能能够将交易152发送到网络132。客户端105还能够联系区块链节点126,以便查询区块链150以获得相应方103为接收方的任何交易(或者实际上检查区块链150中其他方的交易,因为在实施例中区块链150是部分通过其公共可见性提供对交易的信任的公共设施)。每个计算机设备上的钱包功能被配置为根据交易协议制定并发送交易152。如上所述,每个区块链节点126运行软件,该软件被配置为根据区块链节点协议验证交易152并转发交易152以便将它们在整个区块链网络132中传播。交易协议和节点协议彼此对应,并且给定的交易协议伴有给定的节点协议,一起实现给定的交易模型。相同的交易协议用于区块链150中的所有交易152。相同的节点协议被网络132中的所有节点126使用。

当给定方103(比如爱丽丝)希望发送新交易152j以包括在区块链150中时,那么她根据相关的交易协议制定新交易(使用她的客户端应用105中的钱包功能)。然后,她将交易152从客户端应用105发送到她所连接到的一个或多个区块链节点126。例如,这可以是最好地连接到爱丽丝的计算机的区块链节点126。当任何给定的区块链节点126接收到新交易152j时,它根据区块链节点协议及其相应的角色来处理该新交易152j。这包括首先检查新接收到的交易152j是否满足“有效”的特定条件,稍后将更详细地讨论其示例。在某些交易协议中,验证的条件可以是可通过包括在交易152中的脚本在按交易的基础上配置的。可替代地,条件可以简单地是节点协议的内置特征,或者由脚本和节点协议的组合限定。

在新接收到的交易152j通过测试被视为有效的条件下(即,在新接收到的交易152j“通过验证”的条件下),接收交易152j的任何区块链节点126将把新通过验证的交易152添加到该区块链节点126处维护的交易的有序集154。此外,接收交易152j的任何区块链节点126将把通过验证的交易152向前传播到网络132中的一个或多个其他区块链节点126。由于每个区块链节点126应用相同的协议,则假设交易152j是有效的,这意味着它将很快在整个网络132中传播。

一旦获准进入在给定的区块链节点126处维护的交易的有序集154,该区块链节点126就将开始竞争求解包括新交易152的其相应的交易的有序集154的最新版本上的工作量证明难题(回想一下,其他区块链节点126可能正试图基于不同的交易的有序集154来求解难题,但无论谁先到达那里,谁就将限定包括在最新区块151中的交易的有序集。最终,区块链节点126将求解有序集154的包括爱丽丝的交易152j的部分的难题)。一旦为包括新交易152j的有序集154完成了工作量证明,它就不变地成为区块链150中区块151之一的一部分。每个交易152包括指向回较早交易的指针,因此交易的顺序也被不变地记录下来。

不同的区块链节点126可能首先接收给定交易的不同实例,因此在一个实例在新区块151中发布(此时所有区块链节点126都同意发布的实例是唯一有效的实例)之前,对于哪个实例“有效”具有冲突的观点。如果区块链节点126接受一个实例为有效,然后发现第二实例已记录在区块链150中,则该区块链节点126必须接受这一点并将丢弃(即,视为无效)它最初接受的实例(即,尚未在区块151中发布的实例)。

由某些区块链网络操作的另一替代类型的交易协议可以被称为“基于账户”的协议,作为基于账户的交易模型的一部分。在基于账户的情况下,每个交易不通过参考回过去交易的系列中的在先交易的UTXO来限定要转移的量,而是参考绝对账户余额。所有账户的当前状态由该网络的节点存储,与区块链分开并不断更新。在这种系统中,使用账户的运行交易记录(也称为“头寸”)对交易进行排序。该值由发送方签署作为其加密签名的一部分,并作为交易参考计算的一部分进行哈希。此外,可选的数据字段也可以签署交易。该数据字段可以指向回先前的交易,例如,如果先前的交易ID包括在该数据字段中。

记录在区块链112中的交易对价值的转移建模,该价值或者被花费,或者未被花费,并受到锁定脚本的保护。交易通过其输入花费价值,并经由其输出向前支付价值。交易的价值输入必须等于或超过先前交易输出的价值,其中任何多余的输入被收集为交易费用。在以下情况下交易无效:如果呈现给锁定脚本的解(即,解锁脚本)不正确;如果它输出的价值大于被取为输入的价值;如果它花费已经花费的输出,或者它试图花费根本不存在的价值。

锁定脚本和解锁脚本两者均以机器可读的脚本语言表示,允许多种脚本化花费条件,包括可以嵌入任意数据(以可证明不可花费的输出的形式)作为数据载体输出的脚本。

图1a中的支付处理资源106被配置为与区块链112交互。支付处理资源被配置为检索区块链交易并提供解锁脚本以花费来自区块链交易的先前未花费的输出(UTXO)。未花费的交易可以存储在分布式哈希表(DHT)中。支付处理资源106被配置为使用先前未花费的输出生成区块链交易并且提供它自己的资金作为这些交易的输入。支付处理资源106被配置为通过检查DHT或临时/辅助内存池存在输出,来检查交易正花费的输出不是已经被花费的输出,即,它们是未花费的输出并且不是双花。然后支付处理资源106还被配置为将区块链交易发送到区块链112并且在交易已被接收到时从区块链112接收通知。在接收到区块链112已经接收到交易的通知时,支付处理资源106被配置为生成交易的标识符。标识符可以是字母数字。支付处理资源106被配置为将可证明不可花费的输出添加到它生成的区块链交易,并使用可证明不可花费的输出来附加数据载体,该数据载体包括由支付处理资源106提供的数据哈希。

在支付处理资源106生成标识符时,支付处理资源106被配置为请求将数据记录在事件流中(如下面将进一步描述的)。

支付处理资源106被配置为存储与支付处理资源106的用户使用的账户相关的信息。支付处理资源106可以利用数据库管理系统(DBMS)140来创建、删除和管理与这些账户相关的信息。DBMS140可以相对于支付处理资源106位于本地或远程,并且支付处理资源106可以使用任何合适的电信介质访问DBMS140。

图1a中的支付处理资源106被配置为与密钥存储模块122和支付数据存储124交互。密钥存储模块122被配置为存储对应于使用支付处理资源106来使交易能够发生的各方账户的加密密钥。密钥存储模块122可以利用任何合适的存储,并将利用数据库管理系统(DBMS)来初始化、存储和检索数据,该数据来自在密钥存储模块122中存储加密密钥的各方的数据库内的记录。支付数据存储124被配置为存储与使用支付处理资源106实现的任何支付相关的数据。

第一计算装置102或第二计算装置126中任一个的用户可以利用支付处理资源106建立账户。现在参考图2描述这种账户的建立。

在步骤S200中,爱丽丝通过提供请求访问支付处理资源106的输入来启动设置过程。在步骤S202中,第一计算装置102访问API 108,并且向API 108提供认证数据以使得与支付处理资源106的交互能够发生。认证数据可以包括可以唯一地标识第一计算装置102的用户的任何数据。示例可以是密码、姓名和出生数据的组合、或可以唯一地标识用户的任何其他数据项。在认证数据得到批准后,在步骤S204中,支付处理资源106传输对在支付处理资源106上建立账户所需的信息的请求。

支付处理资源106建立账户所需的信息是充当管理账户的簿记机构的资产登记处(即,提供银行账户的银行,例如HSBC)的身份、标识用户的信息(例如,用户的加密公钥)、与发行方的条款和条件的签署后的版本相对应的数据、用户希望使用的货币的标识(例如,GBP(英镑))、发行方的加密公钥以及设置账户的最小值的最小余额值。每个资产登记处与对应资产的至少一个发行方相关联,该对应资产与资产登记处管理的所有账户相关联。例如,银行与英镑和欧元的发行方相关联。银行也可以与其他资产(例如,黄金和其他贵金属)的发行方相关联。黄金发行方的示例是英国的皇家造币厂。信息由支付处理资源106存储在DBMS140中的记录中。

然后爱丽丝提供所需的信息。在步骤S206中,该信息经由API 108被传输到支付处理资源106。在接收到详细信息时,支付处理资源106在步骤S208中在资产登记数据库中生成记录并且在步骤S210中用提供的详细信息填充该记录。

然后在步骤S212中,如果事件流110a尚未被初始化,支付处理资源106根据第2102314.8号英国专利申请初始化对应于爱丽丝的账户的事件流110a。可替代地或附加地,支付处理资源106可能已经为爱丽丝存储了事件流110a。

然后在步骤S214中,支付处理资源106向第一计算装置102传输确认消息以确认已经为爱丽丝建立了账户。鲍勃也将使用步骤S200到S214在支付处理资源106上建立账户(与诸如HSBC等银行相关联)。事件流110b也将对应于鲍勃的账户被初始化。

事件流是基于区块链的仅附加日志。支付处理资源106的用户(例如,爱丽丝或鲍勃)可以创建、附加和关闭对应于其账户的事件流。这些将在后面描述。

可替代地,爱丽丝或鲍勃可以提供他们已经使用的与资产登记处相关联的账户的详细信息,并避免步骤S200到S214,前提是他们已经提供了所有必要的信息。

准备支付数据以供备案

我们现在描述支付处理资源106启用资产转移的多个示例场景。这些示例旨在是说明性的而非限制性的,因为每个示例的特征可以与来自其他示例的特征组合。

我们现在参考图3a和图3b描述爱丽丝使用支付处理资源106向鲍勃发送5英镑的示例场景。在该示例中,被转移的资产是现金,资产登记处是银行。

在步骤S300中,爱丽丝联系鲍勃以通知鲍勃她希望为他即将到来的生日发送给他5英镑。在步骤S302中,鲍勃使用任何合适的媒介向爱丽丝发送消息以感谢她的慷慨。

然后爱丽丝使用第一计算装置102来向支付处理资源106指示她希望支付5英镑。第一计算装置102访问API 108以使用爱丽丝根据步骤S200至S214创建的账户发起支付过程。这是步骤S306。从装置102到API 108的调用指示爱丽丝希望支付给鲍勃的金额。来自装置102的调用还指示爱丽丝希望从中进行支付的账户、爱丽丝希望支付的货币以及她希望支付给谁(即,鲍勃)。爱丽丝希望向鲍勃支付的金额、鲍勃的标识、爱丽丝希望从中支付的账户的标识(即,GBP)形成支付元数据组,该支付元数据组在步骤S308中被传输到支付处理资源106。

然后,支付处理资源106在接收到来自爱丽丝的支付元数据后,基于爱丽丝已经在步骤S308中提供的元数据从鲍勃的账户中检索元数据。这是步骤S310。支付处理资源106从鲍勃的账户中检索与鲍勃的账户相关的货币,即,英镑(GBP)和银行。

然后在步骤S312中,支付处理资源106使用从爱丽丝接收到的支付元数据和从鲍勃的账户检索到的信息生成支付指令数据集。

在该示例中,鲍勃的银行账户的提供方是“hsbc.com”,货币被标识为英镑,支付价值(即,鲍勃收到的金额)为5英镑,账户的标识由给出;用户通过“kyc”值被标识为鲍勃,并且参与方(actor)被标识为支付的受益人,即,接收支付的个人。这形成了支付指令数据集的一部分。可选地,支付指令数据集还可以包括鲍勃使用签名已经签署的条款和条件的版本。

支付指令数据集的另一部分由爱丽丝的详细信息形成。也就是说,账户的提供方是“hsbc.com”,货币被标识为英镑,转移给鲍勃的付款价值为5英镑(即,从爱丽丝借记5英镑支付给鲍勃,因此在支付指令数据集中表示为-5),账户的标识通过给出,用户通过“kyc”值被标识为爱丽丝。支付指令数据集还可以包含爱丽丝签署的条款和条件,这些条款和条件可以包含在文档中,该文档可以从统一资源定位符(URL)提供的访问。支付指令数据集还将参与方标识为支付的发起方,即,进行支付的个人。

然后在步骤S314中,将消息传输到第一计算装置102,带有对于爱丽丝在支付指令数据集上签名的请求。然后在步骤S316中,爱丽丝提供她的加密签名以批准向鲍勃支付5英镑。然后支付处理模型132将爱丽丝的签名应用于支付指令数据集。也就是说,爱丽丝用她的加密签名对支付指令数据集进行签署。简而言之,爱丽丝的账户被借记,鲍勃的账户被存入。因此,需要爱丽丝的签名。仅当鲍勃提供了t&c链接(即,到鲍勃已经签署的条款和条件的文档的URL)和包含条款和条件的文档的哈希时,才会需要鲍勃的签名。这意味着,如果爱丽丝正从鲍勃那里购买东西以交换转移的资金,则可以证明鲍勃已提供条款和条件以换取付款。

在该示例中只需要一个签名,因为银行是相同的并且金额是平衡的(balanced)。如上所述,如果鲍勃提供了t&c链接,则可能需要两个签名。

然后在步骤S318中,支付处理资源306将支付协议标准应用于支付指令数据集。在步骤S320中,支付处理资源306访问支付协议模块120。

支付协议模块120首先检查支付指令数据集遵守零和规则,因为金额是一致的,即,从爱丽丝的账户中取出的金额等于支付给鲍勃的账户的金额。这是步骤S322。遵守零和规则,因为5英镑从爱丽丝的账户中取出,并且5英镑支付给鲍勃的账户,即金额相同,银行也相同。也就是说,因为-5英镑被添加到爱丽丝的账户,+5英镑被添加到鲍勃的账户,所以各自的金额总和为零。由于银行是相同的,因此满足该步骤并且数据集遵守零和规则。

然后支付协议模块120检查从爱丽丝转移到鲍勃的金额不会使爱丽丝的余额低于某个最小值。这是步骤S324。也就是说,爱丽丝是不是花费太多了?如果爱丽丝花费太多,即如果她的余额(减去5英镑)确实低于最小值,则支付协议模块120将向爱丽丝发出错误消息以让她知道她不能花她想花的钱,即她没有资金支付鲍勃5英镑。实际上,如果使用信贷工具,则最小值可能为负。支付协议模块120将返回到步骤S320,直到它被给予再次开始的指令为止,即,当爱丽丝已经将更多资金存入她的银行账户或者她的最低余额已经被改变时。

然后支付协议模块120通过检查与资产标识对应的数据中的字段来检查与支付相关的数据在交易双方之间是否一致。这是步骤S326。该示例中数据是一致的,因为满足零和规则,银行是相同的,即,“hsbc.com”,并且货币是相同的。

也就是说,银行和资产标识平衡。如将在下面的其他示例中看到的,当银行和资产标识不平衡时,需要生成另外的元数据以提供所需的平衡。

说明这一点的另一种方式可以利用模板(XXX_BBBB:AAAA)来表示银行和资产标识,其中,XXX是账户的操作方,BBBB是银行标识,AAAA是资产标识。我们可以使用该模板来说明5英镑是从Alice_HSBC:GBP支付到Bob_HSBC:GBP,其中,可以看出银行和资产标识是平衡的。

支付处理模块120移动到步骤S328,其中验证爱丽丝和鲍勃的加密签名。支付处理模块120通过生成每个签名的哈希并将该哈希与存储在步骤S200至S214中生成的记录中的哈希进行比较来验证爱丽丝和鲍勃的加密签名。这也确认了爱丽丝和鲍勃的身份。可替代地或附加地,基于加密私钥/公钥对的标准PKI技术也可以用于验证每个签名。这些技术也可以用于验证客户端的身份。

步骤S322、S324、S326和S328的满足意味着支付协议规定的标准已经满足,因此支付处理资源106允许根据支付指令数据集进行从爱丽丝向鲍勃支付5英镑。

然后在步骤S330中,支付处理资源106为爱丽丝和鲍勃中的每一个从区块链112检索区块链交易。这将参考图3c中的说明性示意图来描述。

爱丽丝的区块链交易402包括尘埃输出(Tx0,爱丽丝),鲍勃的区块链交易404包括尘埃输出(Tx0,鲍勃)

会合交易的生成

然后支付处理资源106生成新的会合区块链交易406,该新的会合区块链交易406包括用于爱丽丝和鲍勃中的每一个的尘埃输入,该尘埃输入花费来自在步骤S330中检索到的区块链交易的相应的尘埃输出。可以从对应于与爱丽丝和鲍勃相关联的事件流的尘埃链中检索尘埃输出。这也在图3c中示出。402与404到406之间的交易链可以被描述为尘埃交易链。尘埃输入/输出是一定金额的加密货币的输入/输出,其通过加密货币的字段表示为“尘埃”。对于本公开,区块链交易的背景下的“尘埃”被理解为数字资产或加密货币的可花费交易,其具有较小价值或极小价值(即,该价值可能远低于挖掘区块链中的输出的费用)的输出。

可替代地,支付处理资源106可以使用未形成预先存在的事件流的一部分的尘埃和分层确定性(HD)密钥链的组合来生成新的尘埃交易,如第2102217.3号英国专利申请中所描述的。换言之,生成使用尘埃作为输入并包括对应于爱丽丝和鲍勃中的每一个的输入的尘埃交易,其中,该尘埃先前未在事件流中使用过。拥有HD密钥链的一方可以使用其中一个子密钥和尘埃来生成新事件流中的第一交易。简而言之,新的事件流可以基于尘埃来启动,该尘埃可以从区块链112上的现有交易中检索并用作新事件流的开始的基础。也就是说,尘埃可以用于生成交易(以便开启新事件流),然后在用在启动另一个事件流中之前返回给平台。

现在参考图3d进一步阐明尘埃交易链与事件流之间的关系。

图3d涉及本公开的第一方面并且示出了有序的、仅附加数据的存储系统的基本数据结构和范例。这也可以描述为数据日志记录系统。图3d中所示的特定系统是用于以日志记录事件的事件流系统。举例来说,事件流始终用于说明目的,但是技术人员将理解,本文描述的所提出的系统和各方面一般可以与数据项一起使用,并且可以与有序的、仅附加数据项日志记录或存储系统一起使用。与图4和图6一致,数据项是指实际数据的哈希。使用哈希而不是数据本身有利地提供了数据的存在证明,而不需要将数据(对于交易来说可能很大,甚至太大)存储在交易上。这也保护了数据的私密性,因为即使在链上发布了哈希,也将无法从哈希中辨别出数据。这里描述的数据是支付处理资源106正在记录的与支付相关的支付指令数据。

仅附加日志中的每个事件502被映射到区块链交易504,并且使用“尘埃链”对区块链交易的序列进行排序和链接506。与每个事件相关联的数据作为每个交易的一部分存储在有效载荷(如下所述)中。数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中-这种交易的示例是如上所述的会合交易406。这是脚本操作码,其可以用于在区块链上写入任意数据,并且也可以用于将交易输出标记为无效。作为另一个示例,OP_RETURN是用于创建交易的不可花费的输出的脚本语言的操作码,其可以在交易内存储诸如元数据等数据,从而将元数据不可变地记录在区块链上。

尘埃链是加密货币输入和输出的不间断的链,在这里使用其来施加序列中每个区块链交易对其直接前身的花费依赖性。

在交易中使用尘埃输出是有利的,并且是对于有序的、仅附加数据的存储系统(例如,事件流)维护所有交易发生的不可变顺序记录的关键。这是因为,尽管通过将交易公布到区块链,所有区块链交易都将带有时间戳,并且一旦它们在区块链上被确认或添加到区块链,就保持特定顺序,但这并不能保证保留它们的次序。这是因为交易可能在不同的时间被挖掘到区块中和/或甚至在同一区块中交易也是按不同的顺序。使用由序列中下一个交易的第一输入花费的尘埃输出有利地确保按时间顺序跟踪交易的顺序,并且创建事件本身和事件的顺序排序二者的防篡改记录。这是因为一旦被挖掘到区块中,从序列中前一个交易到下一个交易的尘埃支付就确保了与比特币协议规则一致地,嵌入的数据载体元素(称为有效载荷,将在下面讨论)的序列无法被重新排序,并且不会发生插入或删除,插入或删除可能改变序列,而不会立即使事件流已被破坏变得明显。在一些实施例中,比特币协议固有的双花预防机制确保加密货币(例如,尘埃)在不同的交易输入与输出之间的移动保持按时间顺序。使尘埃交易成链利用了拓扑排序来提供区块间和区块内交易(并且因此关联的事件和数据)顺序的保留。因此,这提高了有序的、仅附加的数据项存储的完整性。

以此方式,区块链交易504形成交易的有向图。应该注意的是,图的方向可以被认为是单向的,从序列中的前一个交易指向下一个交易,如边506所指示的。虽然图3d中边506上的箭头指示交易指向下一个交易,但是比特币交易中的花费关系实际上是从一个交易到在先的交易。该图是通过交易之间的花费关系创建的。这些花费关系可以被视为一种引用类型。有关如何将事件附加到事件流的更多详细信息可以在第2102314.8号英国专利申请中找到,特别是但不限于,它参考了“Ordered,Append-only data Storage(有序的、仅附加数据存储)”、“Event Stream and the Chain of Dust(事件流和尘埃链)”以及“BackwardReferencing in the Chain of Dust(尘埃链中的反向引用)”。

诸如图3c中所示的交易406等会合区块链交易是用于同步多个事件流的区块链交易,每个事件流与上述给定的实体/用户相关联。这是通过花费作为对应输入的多个尘埃输出来实现的。在该示例中,这允许对应于爱丽丝、鲍勃和HSBC中的每一个的尘埃链(即,尘埃输入/输出对)经过单个交易。尘埃链输入/输出对必须在交易中具有对应的输入/输出索引。在这种情况下,正如将在下面读到的,使用尘埃链输入/输出对以使得支付能够记录在与交易相关联的所有事件流中。

爱丽丝的花费尘埃输出的尘埃输入表示为Tx1,爱丽丝,鲍勃的花费尘埃输出的尘埃输入表示为Tx1,鲍勃。在步骤S332中生成新的会合区块链交易406。

进入会合区块链交易406中的资金由支付处理资源106添加,并将被支付回支付处理资源106。如果会合区块链交易406被发送到区块链112进行验证,这可能在验证会合区块链交易406后减去任何矿工费用。

会合区块链交易406包括分别花费Tx1,爱丽丝和Tx1,鲍勃的另外的尘埃输出。由于是会合交易,分别对应于爱丽丝和鲍勃的输入/输出对的索引是相同的,因为,例如Tx1,爱丽丝的输入索引可以指定为数字1,并且对应的尘埃输出的输出索引被指定为输出索引号1。

支付处理资源106还以数据载体412a和412b的形式为爱丽丝和鲍勃中的每一个将可证明不可花费的输出添加到区块链交易406。

每个数据载体可以保存不同的数据摘要和/或不同的流摘要,其中,流摘要也可以被加盐。

保存在相应的数据载体内的数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中,这意味着数据有效载荷则可以作为不可花费的输出存储在区块链中。这意味着保存在数据载体内的数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中,这意味着数据有效载荷则可以作为不可花费的输出存储在区块链中。

数据载体412内的数据包括支付处理资源在步骤S300至S328中生成的支付指令数据集的哈希。这是在步骤S334中生成的。可证明不可花费的输出使会合交易406能够在交易中携带支付指令数据集的哈希,并使哈希能够存储在区块链上。这意味着支付指令数据集并且因此支付记录存储在区块链上。这意味着支付记录受益于区块链的不变性。

然后可以检查区块链交易406以查看对应于交易的用户是否正确并且对应于用户,即爱丽丝和鲍勃。这是步骤S336。

在步骤S338中,支付处理资源106向事件流资源110发出通知,确认区块链交易406可以用作将数据附加到事件流(即,关于爱丽丝和鲍勃的事件流)的基础。

事件流是区块链支持的仅附加日志。在该示例中,爱丽丝和鲍勃各自都有自己的事件流,但如果他们没有,则可以初始化事件流。也就是说,爱丽丝具有事件流(E-爱丽丝),鲍勃具有事件流(E-鲍勃)。事件流中的条目可以表示为ESn,其中,n可以是非零正整数或非负整数。

如图3d所示,事件流可以示出为一系列条目,其中,流中的任何条目可以通过单调递增的序列号来引用,即,第一条目可以称为ES1,第二条目可以称为作为ES2。

如果爱丽丝和鲍勃被授权访问或附加事件流,则支付处理资源106仅附加到相应的事件流。例如,可以通过将签名与支付处理资源106处存储的签名进行比较来检查授权。通过将支付数据附加到事件流,支付可以被记录并受益于被记录在与区块链112相关联的不可变日志上。简而言之,事件流用于跟踪来自与爱丽丝和鲍勃相关联的账户的交易顺序。也就是说,事件流中的条目是与区块链112相关联的不可变日志。如上所述,事件流确保:

·事件流中的各个条目自被写入以来未被修改;

·先前连续的条目之间没有插入条目;

·没有条目被删除;

·没有条目被重新排序;

·未经授权的各方不能将事件附加到流。

支付处理资源106使用会合交易406来通过以下方式将支付与事件流E-爱丽丝和E-鲍勃同步:将条目附加到事件流E-爱丽丝和E-鲍勃中的每一个,这些事件流包含区块链交易406中数据载体中包含的支付指令元数据的哈希。这是步骤S340。这在图3e中示意性地示出。

然后支付处理资源106为添加到每个事件流的条目生成标识符。这是步骤S342。标识符可以是字母数字或者可以是基于支付指令元数据的哈希生成的数字。例如,如果支付指令元数据的哈希通过SHA256密码生成,则可以通过将另外的SHA256密码应用于支付指令元数据的哈希来生成标识符。也就是说,标识符可以是支付指令元数据的哈希的哈希。

然后支付处理资源106将标识符与支付指令元数据的副本一起存储在支付数据存储124中。这使得能够根据请求验证爱丽丝与鲍勃之间的支付。

我们现在描述另外的示例场景,其中,爱丽丝再次向鲍勃支付总共5英镑,但鲍勃的账户由Revolut而不是HSBC提供。这将参考图4a和图4b来描述。该示例与参考图3a至3e所描述的示例直至步骤S326都相同。因此,为了简洁起见,我们将在参考步骤S326描述的阶段开始我们的描述。

换言之,对于步骤S326,需要银行中有余额以提供肯定的结果并使交易继续进行。也就是说,需要创建元数据,使银行和资产标识两者平衡。

也就是说,支付协议模块120通过检查对应于各方的数据中的字段来检查与支付相关的数据在交易双方之间是否一致(在步骤S326中)。发现账户的提供方是不同的,即爱丽丝的账户的提供方是“hsbc.com”,而鲍勃的账户的提供方是“Revolut”,尽管货币相同且金额互补,即,爱丽丝发生借记-5英镑,鲍勃发生存入5英镑。

说明这一点的另一种方式可以利用模板(XXX_BBBB:AAAA)来表示银行和资产标识,其中,XXX是账户的操作方,BBBB是银行标识,AAAA是资产标识。在这种情况下,将5英镑从Alice_HSBC:GBP转移到Bob_REVOLUT:GBP的尝试无法完成。

然后支付协议模块120停止根据支付协议标准检查支付指令数据集。然后支付处理资源106生成另外的元数据以添加到支付指令数据集。

为两家不同的银行生成另外的元数据

支付处理资源106访问密钥存储模块122,请求对应于“Revolut.com”和“HSBC”的加密密钥。这是步骤S400。

密钥存储模块122存储多个加密密钥。每个加密密钥存储在与银行(例如,“Revolut.com”或“HSBC”)相对应的记录中,并使支付处理资源106能够生成其自己的关于进入这些银行管理的账户的支付和来自这些银行管理的账户的支付的支付指令数据。当在具有不同银行的账户之间进行支付时这是特别有利的,因为这意味着支付可以由支付处理资源106安全地启动,即使各方为其账户选择的银行是不同的。

当密钥存储模块122被访问时,它接收标识对应于所请求密钥的银行的输入。密钥存储模块122返回对应于银行的密钥。在该示例中,返回对应于银行“Revolut.com”和“HSBC”的密钥。这是步骤S402。

然后支付处理资源106修改支付指令数据集以包括详细说明另外两笔支付的另外的元数据。元数据详细说明第一支付是从爱丽丝到HSBC的5英镑,并且由从密钥存储模块122中检索到的HSBC密钥签署,因为这是来自爱丽丝的HSBC账户的支付,但不是爱丽丝已经签署的支付(即,给鲍勃的支付)。元数据进一步详细说明第二支付是从HSBC到Revolut的(5英镑,即,HSBC账户借记5英镑)并且由从密钥存储模块122中检索到的Revolut.com密钥签署。然后元数据进一步详细说明进行从Revolut向鲍勃的Revolut账户的另外的支付(即,鲍勃的余额增加了5英镑,但Revolut然后必须从具有该5英镑的HSBC的账户中借记5英镑)。这是用鲍勃的密钥签署的。这意味着支付处理资源106解决了步骤S326中标识出的数据之间的不一致。这是步骤S404。也就是说,在确定存在不一致时,不一致由支付处理资源106解决以确保银行一致并且金额一致。

使用上述模板,对支付指令数据集的修改包括另外的元数据意味着从Alice_HSBC:GBP向HSBC_HSBC:GBP支付5英镑,然后从HSBC_HSBC:GBP向HSBC_REVOLUT:GBP支付5英镑,然后进行从HSBC_REVOLUT:GBP向Bob_REVOLUT:GBP的支付,这意味着银行标识和资产标识平衡,可以完成交易。

由于步骤S326最初返回否定结果,因为银行不一致,所以支付协议模块120需要重新开始根据支付协议来评估支付指令数据集。如参考步骤S322和S324所阐述的,支付指令数据集已经返回关于满足零和规则和爱丽丝的花费限制的肯定确定。由于支付指令数据集现在已被修改为包括由支付处理资源106引入的支付以解决银行之间缺乏一致性并确保资产标识和银行平衡,支付处理模块120移动到步骤S406,在该步骤S406中,验证爱丽丝和鲍勃的加密签名。

支付处理模块120通过生成每个签名的哈希并将该哈希与存储在步骤S200至S214中生成的记录中的哈希进行比较来验证爱丽丝和鲍勃的加密签名。这也确认了爱丽丝和鲍勃的身份。可替代地或附加地,基于加密私钥/公钥对的标准PKI技术也可以用于验证每个签名。这些技术也可以用于验证客户端的身份。支付处理模块120还使用类似技术验证两家银行(即,HSBC和Revolut)的签名。

在步骤S406完成时,支付处理资源106允许根据支付指令数据集进行从爱丽丝向鲍勃支付5英镑。也就是说,支付处理资源106通过应用另外的两笔支付来解决支付指令数据集缺乏一致性,以解决缺乏一致性并使支付指令数据集适合于使用支付指令数据集进行支付。

与两家银行的会合交易

然后在步骤S408中,支付处理资源106为爱丽丝和鲍勃中的每一个从区块链112检索区块链交易。这将参考图4b中的说明性示意图来描述。

爱丽丝的区块链交易602包括尘埃输出(Tx0,爱丽丝),鲍勃的区块链交易604包括尘埃输出(Tx0,鲍勃)。支付处理资源106还为支付中涉及的银行(即,HSBC和Revolut)检索区块链交易。检索到的HSBC的区块链交易608包括尘埃输出(Tx0,HSBC)。检索到的Revolut的区块链交易610包括尘埃输出(Tx0,Revolut)。

然后支付处理资源106生成新的会合区块链交易606,其包括爱丽丝和鲍勃中的每一个的尘埃输入,该尘埃输入花费来自在步骤S408中检索到的区块链交易的相应的尘埃输出。可以从与爱丽丝和鲍勃相关联的事件流相对应的尘埃链中检索尘埃输出。这也在图4b中示出。会合区块链交易606还包括分别从区块链交易408和410中检索到的HSBC和Revolut的尘埃输入。

可替代地并且与第一示例一样,支付处理资源106可以使用不形成预先存在的事件流和分层确定性(HD)密钥链的一部分的尘埃来生成新的尘埃交易。

尘埃交易链与事件流之间的关系已经参考图3d阐明。

会合区块链交易606是用于同步对应于爱丽丝、鲍勃、Revolut和HSBC中的每一个的多个事件流的区块链交易。

花费爱丽丝的尘埃输出的尘埃输入表示为(Tx1,爱丽丝),花费鲍勃的尘埃输出的尘埃输入表示为(Tx1,鲍勃)。在步骤S410中生成新的会合区块链交易606。新的会合交易还包括对应于HSBC的尘埃输入(相应地表示为(Tx1,HSBC))和对应于Revolut的尘埃输入(相应地表示为(Tx1,Revolut))。

进入会合区块链交易606中的资金由支付处理资源106添加,并将被支付回支付处理资源106。如果会合区块链交易606被发送到区块链112进行验证,这可能在验证会合区块链交易606后减去任何矿工费用。

会合区块链交易606包括分别花费Tx1,爱丽丝和Tx1,鲍勃的另外的尘埃输出。会合区块链交易606还包括与关于HSBC和Revolut.com的从区块链检索到的尘埃输入相对应的尘埃输出。

支付处理资源106还将可证明不可花费的输出添加到区块链交易606。这被用作数据载体612。每个数据载体可以是相同的并且基于相同的数据并且基于相同的支付指令数据集。数据载体可能基于载体正被附加到的特定数据流的流状态保存一些不同的数据,流状态基于先前的流状态和/或索引(或序列号)和/或用于该数据载体的公证的单独的盐。可替代地或附加地,可以添加另外的可证明不可花费的输出以对应于向区块链交易606提供输入的所有方,以为这些方中的每一个附加数据载体。也就是说,每个相应的数据载体可以包含与每个相应方相关的数据,因为每个相应的数据载体可以根据相应方而不同。例如,不同之处可能是关于爱丽丝的数据载体包含仅与爱丽丝相关的数据,即她的姓名和她的账户号,关于鲍勃的数据载体可能包含仅与鲍勃相关的数据,即他的姓名和他的账户号。

与第一示例一样,保存在数据载体内的数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中,这意味着数据有效载荷然后可以作为不可花费的输出存储在区块链中。

每个数据载体612内的数据包括由支付处理资源106生成的支付指令数据集的哈希。这是在步骤S412中生成的。可证明不可花费的输出使会合交易606能够在交易中携带支付指令数据集的哈希,并使该哈希能够存储在区块链上。这意味着支付指令数据集并且因此支付记录存储在区块链上。这意味着支付记录受益于区块链的不变性。

然后可以检查区块链交易606以查看对应于交易的用户以及HSBC和Revolut提供的账户是否正确并且对应于用户(即,爱丽丝和鲍勃)。这是步骤S412。

支付处理资源106向事件流资源110发出通知,确认区块链交易606(在步骤S416中)可以用作将数据附加到事件流(即,关于爱丽丝、鲍勃、Revolut和HSBC的事件流)的基础。

在该示例中,爱丽丝、鲍勃和HSBC各自具有自己的事件流,但如果他们没有,则可以初始化事件流。也就是说,爱丽丝具有事件流(E-爱丽丝),鲍勃具有事件流(E-鲍勃),并且HSBC具有事件流(E-HSBC),Revolut也有事件流(E-Revolut)。

支付处理资源106使用会合交易606来通过以下方式将支付与事件流E-爱丽丝、E-鲍勃、E-Revolut和E-HSBC同步:将条目附加到事件流E-爱丽丝、E-鲍勃、E-Revolut和E-HSBC中的每一个,这些事件流包含区块链交易606中数据载体中包含的支付指令元数据的哈希。这是步骤S418。这在图4c中示意性地示出。事件流E-爱丽丝、E-鲍勃、E-Revolut和E-HSBC可能具有不同的长度,并且支付指令数据的哈希可以添加在相应的事件流中的不同位置(也称为索引)处。这是因为每个事件流可能包含不同数量的事件。例如,像银行这样特别活跃的一方可能具有比个人长得多的事件流,并且支付指令数据可能以比针对个人高得多的索引添加到银行的事件流中。也可能是银行可以选择在附加到事件流的条目数超过预定量后初始化新的事件流。

与其他示例一样,每个数据载体可以保存不同的数据摘要和/或不同的流摘要。流摘要也可以被加盐。Revolut和HSBC可以选择使用与爱丽丝和鲍勃将使用的哈希方法不同的哈希方法来生成加盐的流摘要。

然后支付处理资源106为添加到每个事件流的条目生成标识符。这是步骤S420。标识符可以是字母数字或者可以是基于支付指令元数据的哈希生成的数字。例如,如果支付指令元数据的哈希通过SHA256密码生成,则可以通过将另外的SHA256密码应用于支付指令元数据的哈希来生成标识符。也就是说,标识符可以是支付指令元数据的哈希的哈希。

然后支付处理资源106将标识符与支付指令元数据的副本一起存储在支付数据存储124中。这使得能够根据请求验证爱丽丝与鲍勃之间的支付。

我们现在描述另外的示例场景,其中,爱丽丝再次向鲍勃支付总共5英镑,但鲍勃的账户虽然由HSBC管理,但却是欧元账户而不是英镑账户。

这将参考图5a和图5b来描述。该示例再次与参考图3a至3e所描述的示例直至步骤S326都相同。因此,为了简洁起见,我们将在参考步骤S326描述的阶段开始我们的描述。

也就是说,支付协议模块120通过检查对应于各方的数据中的字段来检查与支付相关的数据在交易双方之间是否一致(在步骤S326中)。发现爱丽丝和鲍勃的账户货币不同。换句话说,爱丽丝在HSBC具有英镑账户,而鲍勃在HSBC具有欧元账户,即同一家银行但不同货币,即不同的资产标识符。

然后,由于货币不同,支付协议模块120停止针对支付协议标准检查支付指令数据集。然后支付处理资源106生成另外的元数据以被添加到支付指令数据集。

在账户的货币不同的情况下生成另外的元数据

支付处理资源106访问密钥存储模块122,请求对应于HSBC拥有的英镑账户和HSBC拥有的欧元账户的加密密钥。这是步骤S500。

当密钥存储模块122被访问时,它接收标识对应于请求的密钥的银行和相应的资产标识符(即,GBP和EUR)的输入。密钥存储模块122返回对应于银行GBP和EUR账户的密钥。在该示例中,返回对应于HSBC管理的英镑账户和欧元账户的密钥。这是步骤S502。

也就是说,在这种情况下,资产没有相同的标识(因为,英镑和欧元不是同一货币),但爱丽丝和鲍勃确实具有同一家银行。这就是导致步骤S326在该示例中提供否定结果的原因。也就是说,资产标识和银行不完全一致,因为货币不同。

换言之,对于步骤S326,需要平衡货币以提供肯定结果,因为存在需要资产类型的平衡。

因此,支付处理模块120需要生成解决这种不一致的另外的元数据。已经获得对应于HSBC管理的英镑账户和欧元账户的密钥的支付处理模块120然后可以生成该元数据。

在步骤S504中,支付处理模块120生成对应于另外两笔支付的元数据。第一支付是从爱丽丝的英镑HSBC账户到HSBC英镑账户的5英镑(即,爱丽丝向HSBC支付回5英镑),然后第二支付是从HSBC欧元账户向鲍勃的欧元HSBC账户支付5.81欧元。

在步骤S506中,支付处理模块120通过生成每个签名的哈希并将该哈希与存储在步骤S200至S214中生成的记录中的哈希进行比较来验证爱丽丝和鲍勃的加密签名(如果需要的话)。这也确认了爱丽丝和鲍勃的身份。可替代地或附加地,基于加密私钥/公钥对的标准PKI技术也可以用于验证每个签名。这些技术也可以用于验证客户端的身份。

由于现在银行和资产标识是一致的,所以满足步骤S326的要求,并且可以满足支付协议标准。也就是说,创建了使银行和资产标识平衡的元数据。

说明这一点的另一种方式可以利用模板(XXX_BBBB:AAAA)来表示银行和资产标识,其中,XXX是账户的操作者,BBBB是银行标识,AAAA是资产标识。也就是说,在步骤S504中生成元数据之前,无法完成从Alice_HSBC:GBP向Bob_HSBC:EUR转移5英镑的尝试。然而,在步骤S504中创建了元数据意味着从Alice_HSBC:GBP向HSBC_HSBC:GBP支付5英镑,然后从HSBC_HSBC:EUR向Bob_HSBC:EUR支付5.81欧元(相当于5英镑兑换成欧元),意味着银行标识和资产标识平衡,这意味着交易可以完成。

在完成步骤S506时,支付处理资源106允许根据支付指令数据集从爱丽丝向鲍勃支付5英镑。也就是说,支付处理资源106通过应用两笔另外的支付来解决支付指令数据集缺乏一致性,以解决缺乏一致性,并使支付指令数据集适合于使用支付指令数据集进行支付

两种货币的会合交易

然后在步骤S508中,支付处理资源106为爱丽丝和鲍勃中的每一个从区块链112检索区块链交易。这将参考图5b中的说明性示意图来描述。

爱丽丝的区块链交易702包括尘埃输出(Tx0,爱丽丝),鲍勃的区块链交易704包括尘埃输出(Tx0,鲍勃)。可以从对应于与爱丽丝和鲍勃相关联的事件流的尘埃链中检索尘埃输出。支付处理资源106还检索支付中也涉及到的货币账户的区块链交易。检索到的HSBC英镑(即,HSBC_HSBC:GBP)账户的区块链交易708包括尘埃输出(Tx0,HSBC-GBP)。检索到的HSBC欧元(即,HSBC_HSBC:EUR)账户的区块链交易710包括尘埃输出(Tx0,HSBC-EUR)。如图5b所示,区块链交易702、704、708和710中的每一个还包括可证明不可花费的输出,其具有包括OP_RETURN命令的赎回脚本以确保该可证明不可花费的输出不能被花费,但与输出相关联的数据载体保留在区块链上。尘埃输出((Tx0,HSBC-GBP)和(Tx0,HSBC-EUR))可以从对应于与HSBC的欧元账户和英镑账户相关联的事件流的尘埃链中检索。

然后(在步骤S510中)支付处理资源106生成新的会合区块链交易706,该新的会合区块链交易706包括爱丽丝和鲍勃中的每一个的尘埃输入,该尘埃输入花费来自步骤S508中检索到的区块链交易的相应的尘埃输出。这也在图5b中示出。会合区块链交易706还包括分别从区块链交易708和710中检索到的HSBC-GBP和HSBC-EUR的尘埃输入。

尘埃交易链与事件流之间的关系已经参考图3d阐明。

会合区块链交易606是用于同步对应于爱丽丝、鲍勃、Revolut和HSBC中的每一个的多个事件流的区块链交易。

花费爱丽丝的尘埃输出的尘埃输入表示为(Tx1,爱丽丝),花费鲍勃的尘埃输出的尘埃输入表示为(Tx1,鲍勃)。新的会合交易还包括与HSBC的英镑账户和欧元账户相对应的尘埃输入,分别表示为(Tx1,HSBC-GBP)和(Tx1,HSBC-EUR)。

进入会合区块链交易706中的资金由支付处理资源106添加,并将被支付回支付处理资源106。如果会合区块链交易706被发送到区块链112进行验证,这可能在验证会合区块链交易706后减去任何矿工费用。

会合区块链交易706包括分别花费Tx1,爱丽丝和Tx1,鲍勃的另外的尘埃输出。会合区块链交易706还包括与关于HSBC-GBP和HSBC-EUR的从区块链检索到的尘埃输入相对应的尘埃输出。

支付处理资源106还为爱丽丝、鲍勃以及HSBC-GBP账户和HSBC-EUR账户中的每一个将可证明不可花费的输出添加到区块链交易706。这些用作数据载体712a、712b、712c和712d。

与第一示例一样,保存在数据载体内的数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中,这意味着数据有效载荷然后可以作为不可花费的输出存储在区块链中。

与第一示例和第二示例一样,支付处理资源106可以被配置为使用不形成预先存在的事件流和HD密钥链的一部分的尘埃来生成新的尘埃交易。来自预先存在的尘埃链和新的尘埃交易的尘埃输入的组合也可以用于生成区块链交易706。

数据载体712a、712b、712c和712d内的数据包括由支付处理资源106生成的支付指令数据集的哈希。数据载体可以是相同的,因为它们基于相同的支付指令数据集。可替代地或附加地,数据载体内的数据可以不同,因为每个涉及不同方。

也就是说,每个相应的数据载体可以包含与每个相应方相关的数据,因为每个相应的数据载体可以根据相应方而不同。例如,不同之处可能是关于爱丽丝的数据载体包含仅与爱丽丝相关的数据,即她的姓名和她的账户号,关于鲍勃的数据载体可能包含仅与鲍勃相关的数据,即他的姓名和他的账户号。

因此,数据载体将生成不同的哈希。这是在步骤S512中生成的。可证明不可花费的输出使会合交易706能够在交易中携带支付指令数据集的哈希,并使哈希能够存储在区块链上。这意味着支付指令数据集并且因此支付记录存储在区块链上。这意味着支付记录受益于区块链的不变性。

与前面的示例一样,每个数据载体可以保存不同的数据摘要和/或不同的流摘要。

然后可以检查区块链交易706以查看对应于交易的用户以及HSBC提供的账户(关于英镑和欧元)是否正确并且对应于用户(即,爱丽丝和鲍勃)。这是步骤S514。

支付处理资源106向事件流资源110发出通知,确认区块链交易606(在步骤S516中)可以用作将数据附加到事件流(即,关于爱丽丝、鲍勃、Revolut和HSBC的事件流)的基础。

在该示例中,爱丽丝、鲍勃和HSBC(关于英镑账户和欧元账户)各自都有自己的事件流,但如果他们没有,则可以初始化事件流。也就是说,爱丽丝具有事件流(E-爱丽丝),鲍勃具有事件流(E-鲍勃),并且HSBC具有两种货币的事件流,即,(E-HSBC-GBP)和(E-HSBC-EUR)。

支付处理资源106使用会合交易706来通过以下方式将支付与事件流E-爱丽丝、E-鲍勃、E-HSBC-GBP和E-HSBC-EUR同步:将条目附加到事件流E-爱丽丝、E-鲍勃、E-HSBC-GBP和E-HSBC-EUR中的每一个,这些事件流包含区块链交易706中数据载体中包含的支付指令元数据的哈希。这是步骤S518。也就是说,如果数据输出712a对应于爱丽丝,则数据输出712a将被哈希并添加到爱丽丝的事件流。这在图5c中示意性地示出。每个条目将包含流上包含的直到该条目为止的数据的哈希摘要。流的这种哈希摘要将与流上的条目一起存储。

然后支付处理资源106为添加到每个事件流的条目生成标识符。这是步骤S520。与其他示例一样,标识符可以是字母数字或者可以是基于支付指令元数据的哈希生成的数字。例如,如果支付指令元数据的哈希通过SHA256密码生成,则可以通过将另外的SHA256密码应用于支付指令元数据的哈希来生成标识符。也就是说,标识符可以是支付指令元数据的哈希的哈希。

然后支付处理资源106将标识符与支付指令元数据的副本一起存储在支付数据存储124中。这使得能够根据请求验证爱丽丝与鲍勃之间的支付。

我们现在参考图6a和图6b描述示例场景,其中,爱丽丝使用支付处理资源106向鲍勃发送支付。支付可以是关于一定量的黄金。一定量的黄金是资产的示例,其转移和支付是通过下述方法记录的。

在步骤S600中,爱丽丝联系鲍勃以告知鲍勃她希望以49.20英镑交换获得1g黄金。在步骤S602中,鲍勃将价格告知爱丽丝,即,49.20英镑。爱丽丝和鲍勃均向黄金发行方(例如,诸如英国皇家造币厂,其地址为Ynysmaerdy,Pontyclun CF72 8YT(royalmint.com))注册了账户。如下面将要描述的,这使爱丽丝和鲍勃能够以合法且可记录的方式买卖黄金。

然后,爱丽丝使用第一计算装置102来指示她与鲍勃达成一致,为1g黄金向支付处理资源106支付49.20英镑。第一计算装置102访问API 108以根据步骤S200至S214使用爱丽丝创建的账户启动支付过程。当第一计算装置访问API 108以启动支付过程时,第一计算装置102标识黄金。这使得支付处理资源106能够将转移标识为与黄金有关。可以使用字母数字标识符或通过数字代码或通过任何其他合适的标识符来标识黄金。这是步骤S606。从装置102到API 108的请求指示爱丽丝希望支付给鲍勃的金额。来自装置102的请求还指示爱丽丝希望从中进行支付的账户和爱丽丝希望支付的货币以及她希望支付给谁(即,鲍勃)。爱丽丝希望支付给鲍勃的金额、鲍勃的标识、爱丽丝希望从中进行支付的账户的标识以及爱丽丝希望支付的货币形成支付元数据组,该支付元数据组在步骤S608中传输到支付处理资源106。

也就是说,资产被标识为英镑,并且银行也被标识给支付处理资源106。

然后,支付处理资源106在从爱丽丝接收到支付元数据后,基于爱丽丝已经在步骤S608中提供的元数据从鲍勃的账户中检索元数据。这是步骤S610。支付处理资源106从鲍勃的账户中检索鲍勃的账户涉及的货币(即,英镑(GBP))和黄金账户的发行方(即,皇家造币厂)。

然后在步骤S612中,支付处理资源106使用从爱丽丝接收到的支付元数据和从鲍勃的账户检索到的信息生成支付指令数据集。

在该示例中,鲍勃的银行账户的提供方是“HSBC”(即,与爱丽丝相同),货币被标识为英镑,支付的价值(即,鲍勃接收到的金额)为49.20英镑,账户的标识通过提供;用户通过“kyc”值被标识为鲍勃,动作方被标识为付款的受益人(即,接收支付的个人)。这形成了支付指令数据集的另外的部分。可选地,支付指令数据集还可以包括鲍勃使用签名已经签署的条款和条件的版本。

支付指令数据集的另外的部分由黄金交易的详细信息形成。支付处理资源106请求访问鲍勃在其黄金账户的发行方(即,皇家造币厂)处的黄金账户。向支付处理资源106提供对鲍勃签名的请求以使能够授予访问权限。然后支付处理资源106可以从对应于鲍勃的用户配置文件中检索鲍勃的加密签名或者向鲍勃单独请求对应于其黄金账户的签名。该签名可以与其对于其“HSBC”账户的签名相同或不同。特别是对于大量黄金或与黄金相关的商业交易,可能需要鲍勃的签名,其中可能涉及条款和条件集,并且可能需要爱丽丝或鲍勃证实这些条款和条件。

支付指令数据集的另一部分由爱丽丝的详细信息形成。也就是说,爱丽丝账户的提供方是“hsbc.com”,货币被标识为英镑,转移给鲍勃的支付价值为49.20英镑(即,从爱丽丝借记49.20英镑以支付给鲍勃,因此在支付指令数据集中表示为-49.20),账户的标识由给出,用户通过“kyc”值被标识为爱丽丝,爱丽丝签署的条款和条件通过爱丽丝提供的URL处提供的签署后的文档和所述文档的哈希标识。动作方被标识为支付的发起方,即,进行支付的个人。

支付处理资源106还请求访问爱丽丝在发行方(即,皇家造币厂)处的黄金账户。向支付处理资源106提供对爱丽丝签名的请求以使能够授予访问权限。

然后在步骤S614中,将消息传输到第一计算装置102,请求爱丽丝在支付指令数据集上的签名。然后在步骤S516中,爱丽丝提供她的加密签名以批准向鲍勃支付49.20英镑。然后支付处理资源120将该签名应用于支付指令数据集。对应于爱丽丝的黄金账户的签名可能与关于爱丽丝在“hsbc.com”处的账户的签名不同。如果不同,则在步骤S616中,爱丽丝将提供两个签名。可替代地,支付处理资源106可能已经有权访问爱丽丝的黄金账户的签名。也就是说,如果爱丽丝信任支付处理资源106,那么从爱丽丝那里检索签名是可选的。

然后支付处理资源106生成另外的元数据,该另外的元数据对应于从鲍勃的黄金账户到爱丽丝的黄金账户的黄金转移。该元数据详细说明了从爱丽丝到鲍勃的支付以及从一个黄金账户到另一个黄金账户的转移。

然后在步骤S618中,支付处理资源106将支付协议标准应用于支付指令数据集。在步骤S620中,支付处理资源106访问支付协议模块120。

支付协议模块120首先检查支付指令数据集遵守零和规则,因为金额是一致的,即,从爱丽丝的账户取出的金额等于支付给鲍勃的账户的金额。这是步骤S522。遵守零和规则,因为49.20英镑从爱丽丝的账户中取出,并且49.20英镑支付给鲍勃的账户。例如,金额之间的不一致可能是由于不同的货币造成的。例如,金额之间的不一致可能是由于不同的货币造成的。也就是说,支付协议模块120确定资产标识和银行标识是一致的(这是因为,根据上面的模板,Alice_HSBC:GBP与Bob_HSBC:GBP平衡,并且Alice_MINT:GOLD与Bob_MINT:GOLD平衡)。

可替代地或附加地,如果鲍勃仅具有HSBC的英镑账户,而爱丽丝仅具有Revolut的欧元账户,即,不同的资产标识和不同的资产登记处,即(无法进行从Alice_REVOLUT:EUR向Bob_HSBC:GBP的支付)。然后支付协议模块120将生成对应于交易的经纪部分的另外的元数据。该元数据将对应于金融经纪人(此处列举为第一经纪人)在交易中将扮演的角色以解决货币和银行的不一致,类似于上面在货币和银行不同而导致资产标识和银行的不平衡的示例中所描述的。在该示例中,经纪人在HSBC有英镑账户,并且在Revolut有欧元账户。支付协议模块120将访问对应于这两个账户的加密签名。元数据将详细说明将约定数量的黄金从鲍勃的黄金账户转移到爱丽丝的黄金账户;从爱丽丝的欧元revolut账户(即,Alice_REVOLUT:EUR)向经纪人在Revolut的欧元账户(即,Broker_Revolut:EUR)支付欧元;以及从经纪人的英镑账户(即,Broker_Revolut:GBP)向鲍勃(Bob_HSBC:GBP)支付对应金额的英镑,以平衡银行标识和资产类型。该另外的元数据也将用与这些账户对应的加密签名进行签署。

可选地或附加地,如果第一经纪人仅在Revolut账户内(即,不在不同银行之间)提供欧元到英镑的兑换,则支付协议模块120将需要生成另外的元数据,该另外的元数据对应于除了第一经纪人还有第二经纪人所扮演的部分。该元数据将详细说明将约定数量的黄金从鲍勃的黄金账户(Bob_MINT:GOLD)转移到爱丽丝的黄金账户(Alice_MINT:GOLD);从爱丽丝的欧元账户(Alice_REVOLUT:GOLD)向第一经纪人持有的欧元账户(即,Revolut的欧元账户)进行支付;从第一经纪人的英镑账户(即,Revolut的英镑账户,其将被标识为Broker1_REVOLUT:GBP)向第二经纪人在HSBC的英镑账户进行支付;以及从第二经纪人的英镑账户向鲍勃在HSBC的英镑账户进行支付。也就是说,支付协议模块120可以用于建立元数据组以解决在步骤S522中检查出的支付指令元数据方面之间的不一致(或缺乏对应性)。

然后支付协议模块120检查从爱丽丝转移到鲍勃的金额不会使爱丽丝的余额低于某个最小值。这是步骤S624。也就是说,爱丽丝是否在她从鲍勃那里获得的黄金上花费了太多钱?如果爱丽丝花费过多,即,如果她的余额确实低于最小值,则支付协议模块120将向爱丽丝发出错误消息以让她知道她不能花她想花的钱。实际上,如果使用信贷工具,最小值可能为负。支付协议模块120将返回到步骤S520,直到它被给予重新开始的指令为止,即,当爱丽丝已经将更多资金存入她的账户或者她的最低余额已经被改变时。

然后支付协议模块120通过检查与发行方对应的数据中的字段来检查与支付相关的数据在交易的两方之间是否一致。这是步骤S526。数据在两方之间是一致的,因为提供账户的各方是相同的并且资产标识是相同的,或者支付协议模块120引入了另外的元数据解决了缺乏一致性,该另外的元数据对应于经纪人在解决资产转移中的不一致方面所扮演的角色,在资产转移中,资产标识符或资产登记处不一致。由于转移涉及黄金,因此正从鲍勃转移到爱丽丝的黄金量必须补足添加到爱丽丝账户的黄金量。

也就是说,对于要启动的转移,存在的要求是,对转移双方标识出的银行和资产标识符之间必须存在一致性。还存在的要求是,关于英镑和黄金两者都要满足零和规则。

支付处理模块120通过生成每个签名的哈希并将该哈希与存储在步骤S200至S214中生成的记录中的哈希进行比较来验证爱丽丝和鲍勃的加密签名。这是步骤S628。这也确认了爱丽丝和鲍勃的身份。可替代地或附加地,基于加密私钥/公钥对的标准PKI技术也可以用于验证每个签名。这些技术也可以用于验证客户端的身份。支付处理模块120还使用类似的技术验证爱丽丝和鲍勃的黄金账户的签名。支付处理模块120还对鲍勃的账户执行检查以确定所需量的黄金记录在鲍勃的名下,使得所需量的黄金可以从鲍勃转移到爱丽丝。如果还使用了经纪人,则还验证与经纪人账户对应的加密签名。

步骤S522、S524、S526和S528的满足意味着已满足支付协议规定的标准,因此支付处理资源106允许根据支付指令数据集从爱丽丝向鲍勃支付49.20英镑。黄金的转移则也可以由黄金账户的发行方记录。

然后在步骤S630中,支付处理资源106为爱丽丝和鲍勃中的每一个从区块链112检索区块链交易。爱丽丝的区块链交易802包括尘埃输出(Tx0,爱丽丝),鲍勃的区块链交易804包括尘埃输出(Tx0,鲍勃)。可以从对应于与爱丽丝和鲍勃相关联的事件流的尘埃链中检索尘埃输出。支付处理资源106还为支付中涉及到的两个黄金账户(即,皇家造币厂-爱丽丝和皇家造币厂-鲍勃)检索区块链交易。检索到的皇家造币厂-鲍勃的区块链交易808包括尘埃输出(Tx0,RYB),而检索到的皇家造币厂-爱丽丝的区块链交易810包括尘埃输出(Tx0,RYA)。如果还涉及经纪人,则还可以为每个经纪人从区块链112中检索区块链交易。尘埃输出((Tx0,RYB)和(Tx0,RYA))可以从与爱丽丝和鲍勃的黄金账户相关联的事件流对应的尘埃链中检索。

生成与附加的发行方的会合交易

然后支付处理资源106生成新的会合区块链交易806,该新的会合区块链交易806包括爱丽丝和鲍勃中的每一个的尘埃输入,该尘埃输入花费来自步骤S530中检索到的区块链交易的相应的尘埃输出。这在图7中示出。会合区块链交易806还包括花费从区块链交易808和810中检索到的对应输出的尘埃输入,即,用于爱丽丝和鲍勃的黄金账户。

每个检索到的区块链交易还可以包含与OP_RETURN脚本相关联的数据载体,即可证明不可花费的输出。

花费爱丽丝的尘埃输出的尘埃输入表示为Tx1,爱丽丝,花费鲍勃的尘埃输出的尘埃输入表示为Tx1,鲍勃。新的会合交易还包括对应于爱丽丝和鲍勃所持有的黄金账户的尘埃输入,分别表示为(Tx1,RYA)和(Tx1,RYB)。会合区块链交易806在步骤S632中生成。

进入会合区块链交易806中的资金由支付处理资源106添加,并将被支付回支付处理资源106。如果会合交易806被发送到区块链112进行验证,这可能在验证会合交易806后减去任何矿工费用。

会合区块链交易806包括分别花费Tx1,爱丽丝和Tx1,鲍勃的另外的尘埃输出。会合区块链交易806还包括对应于关于两个黄金账户从区块链中检索到的尘埃输入的尘埃输出。由于是会合交易,分别对应于爱丽丝、鲍勃和两个黄金账户的输入/输出对的索引是相同的,因为,例如Tx1,爱丽丝的输入索引可以指定为数字1,并且对应的尘埃输出的输出索引被指定为输出索引号1。

支付处理资源106还向关于爱丽丝、鲍勃和两个黄金账户的区块链交易806添加可证明不可花费的输出。这些分别表示为数据载体812a、812b、812c和812d。

还可以添加与交易中涉及到的经纪人相对应的可证明不可花费的输出。它们对应于经纪人的数据载体。

与其他示例一样,每个数据载体可以保存不同的数据摘要和/或流摘要。与其他示例一样,流摘要可以被加盐。

也可以使用先前未被用作事件流的基础的尘埃来生成区块链交易806。如第2102217.3号英国专利申请中所描述的,该“新尘埃”将与HD密钥链结合使用以与其他示例一样生成区块链交易806。

与其他示例一样,保存在相应的数据载体内的数据有效载荷(即,支付指令元数据的哈希)保存在交易的不可花费的OP_RETURN输出中,这意味着数据有效载荷则可以作为不可花费的输出存储在区块链中。与第一示例一样,将数据有效载荷(即,支付指令元数据的哈希)保存在数据载体内,这是保存在交易的不可花费的OP_RETURN输出中,意味着数据有效载荷则可以作为不可花费的输出存储在区块链中。

数据载体内的数据包括支付处理资源在步骤S600至S628中生成的支付指令数据集的哈希。数据载体内的数据可能相同,因为它基于相同的支付指令数据集。可替代地或附加地,每个数据载体的相应哈希可能不同,因为数据是不同的。例如,爱丽丝的数据与鲍勃的数据不同,因为它与爱丽丝的账户活动有关,而不是与鲍勃的账户活动有关。这是步骤S634。可证明不可花费的输出使会合交易806能够在交易中携带支付指令数据集的哈希,并使哈希能够存储在区块链上。这意味着支付指令数据集并且因此支付记录存储在区块链上。这意味着支付记录受益于区块链的不变性。在黄金转移的情况下,这意味着区块链可以用于支持从一个黄金账户到另一个黄金账户的交易记录。区块链和本文描述的系统提供的匿名性也意味着可以维护黄金转移的保密性。

然后可以检查区块链交易806以查看对应于交易的用户和对应于爱丽丝和鲍勃所拥有的账户的黄金账户是否正确。这是步骤S636。

在步骤S638中,支付处理资源106向事件流资源110发出通知,确认区块链交易806可以用作将数据附加到事件流(即,关于爱丽丝、鲍勃和两个黄金账户的事件流)的基础。

支付处理资源106使用会合交易806来通过以下方式将支付与事件流E-爱丽丝、E-鲍勃、E-RYA(即,爱丽丝的黄金账户)和E-RYB(即,鲍勃的黄金账户)同步:将条目附加到事件流E-爱丽丝、E-鲍勃、E-RYA(即,爱丽丝的黄金账户)和E-RYB(即,鲍勃的黄金账户)中的每一个,这些事件流包含区块链交易806中相应的数据载体中包含的支付指令元数据的哈希。也就是说,对应于数据输出812a的哈希可以添加到E-爱丽丝,对应于数据输出812b的哈希可以添加到E-鲍勃。这是步骤S640。这在图8中示意性示出。还可以将条目附加到与黄金转移中涉及的经纪人相对应的事件流。

然后支付处理资源106为添加到每个事件流的条目生成标识符。这是步骤S642。标识符可以是字母数字或者可以是基于支付指令元数据的哈希生成的数字。例如,如果支付指令元数据的哈希通过SHA256密码生成,则可以通过将另外的SHA256密码应用于支付指令元数据的哈希来生成标识符。也就是说,标识符可以是支付指令元数据的哈希的哈希。

然后支付处理资源106将标识符与支付指令元数据的副本一起存储在支付数据存储124中。

应当注意,上述各方面和实施例说明而不是限制本公开,并且本领域技术人员将能够设计许多替代实施例,而不脱离由所附权利要求限定的本公开的范围。在权利要求中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括(comprising、comprise)”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括(comprise)”是指“包括(include)或由……组成(consistof)”,“包括(comprising)”是指“包括(including)或由……组成(consistingof)”。元素的单数形式并不排除此类元素的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个部件的装置权利要求中,这些部件中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。

相关技术
  • 数据处理系统、计算机实现方法及非暂态计算机可读介质
  • 车载健康平台的系统、计算机实现方法及非暂态计算机可读介质
  • 计算机实现的方法和执行计算机实现的方法的系统
  • 用于为患者扫描的解剖结构数据提供标准化位置的计算机实现的方法、用于对患者扫描的解剖结构数据执行标准化测量的计算机实现的方法、数据处理系统和计算机可读介质
技术分类

06120116511345