用于在区块链上记录多个交易的方法和系统与流程

文档序号:16050741发布日期:2018-11-24 11:15阅读:688来源:国知局

本公开一般涉及记录在点到点分布式账本(区块链)上的交易,更具体地,用于执行两个用户之间的双向交易。

背景技术

在本文档中,我们使用术语“区块链”来包括所有形式的电子、基于计算机的、以及分布式账本。其包括基于共识的区块链和交易链技术、许可和未许可的账本,共享账本及其变化形式。尽管其他区块链实现方式已经被提出并开发,但是区块链技术最广为人知的应用是比特币账本。虽然出于方便和说明的目的本文可以引用比特币,但应注意的是,本发明不限于与比特币区块链一起使用,并且其他区块链实现方式和协议也落入本发明的范围内。

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

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

加密货币交易可能涉及到具有多个输入和多个输出的多方。这样的多方交易可能发生在多方已经同意达成单个交易的情况下(在区块链上记录具有多个输入和多个输出的单个交易的意义上)以改善隐私。例如,如果alice希望与bob交易,则alice可以寻求也可能希望执行交易并且想一起进行联合支付的其他方(例如carol)(例如“coinjoin”交易)。

合同义务可包括双向的考虑。例如,alice可能希望以金钱为交换从bob购买一个小部件。因此,履行合同包括在一个方向上(其包括从alice到bob的金钱的支付)的考虑。在相反方向上的另一考虑包括:bob将小部件从bob提供给alice。

可能会出现问题:仅一侧在一个方向履行其义务。例如,如果alice进行从alice向bob的金钱的支付,而bob携款潜逃而不提供小部件。

在整个说明书中,词语“包括”或其变化形式诸如“包含”或“含有”将理解为暗指包括所声明的要素,整体或步骤,或者包括要素组,整体组或步骤组,但不排除任何其他要素,整体或步骤或要素组,整体或组步骤组。

本说明书中已经包括的文件、动作、材料、装置、物品等的任何讨论不应视为承认任何或全部此事项因在本申请的每个权利要求的优先权日之前存在而构成现有技术基础的一部分或者是与本公开相关领域的公知常识。



技术实现要素:

提供所附权利要求中限定的发明。

本发明可以描述为区块链和/或计算机实现的方法以及相应系统和设备。其可以是在执行交易之前验证区块链交易(tx)授权的验证方法/系统。因此,附加地或替代地,本发明可以是一种安全方法/系统,被布置为确保仅执行授权的交易。附加地或替代地,本发明是一种控制方法/系统,被布置为确定何时可以在区块链上进行交易和/或何时应该禁止交易。交易(tx)的执行可以包括从一方或用户到另一方或用户的加密货币的金额的转移。

本发明可以提供一种验证和/或控制方法,被布置为在确定已经满足一个或多个条件时同时释放多于一个的区块链交易(tx)。“交易的释放”可以表示或包括:提交到区块链网络,使得可以执行交易输出的花费。条件可以从交易中的元数据受引用,或使用其受访问。已成功评估。同样可以对于对应方完成该操作,使得您创建两个交易:

该方法可以包括以下步骤:在成功评估一个或多个条件时,使用区块链交易(tx1)将加密货币的数额或部分从第一用户(方)a转移/花费到第二用户(方)b。这可以称为第一规则集。所述条件可以是可以被评估以产生布尔值或输出的规则。所述条件可以由第三方或用户c来评估。所述条件可以包括在可以转移加密货币数额之前已经从第二用户接收到请求的规则。

可以使用多重签名(多签名)交易类型来执行所述加密货币的转移。所述多重签名交易类型可以是例如比特币协议中的2中之2多重签名交易或功能等同物。交易输出可能需要a和c的签名以花费输出。规则可以是包含在tout交易中的元数据内的指针进行的引用。

该方法还可以包括步骤:在成功评估一个或多个条件时,使用区块链交易(tx2)将加密货币的数额或部分从第二用户(方)b转移/花费到第一用户(方)a。这可以称为第二规则集。所述条件可以是可以被评估以产生布尔值或输出的规则。所述条件可以包括在可以转移加密货币的数额之前已经从第一用户接收到请求的规则。

所述条件可以由第三方或用户c评估。可以使用多重签名(多签名)交易类型来执行加密货币的转移。所述多重签名交易类型可以是例如比特币协议中的2中之2多重签名交易或功能等同物。交易输出可能需要b和c的签名以花费输出。规则可以是包含在tout交易中的元数据内的指针进行的引用。

该方法可以包括以下步骤:

检查第一条件和第二条件(规则集)两者评估为true;

如果两者都评估为true,则将这两个交易均提交到区块链网络以执行加密货币的第一部分和第二部分的转移(花费)。

应当注意,挖掘过程可能导致一个交易发生在比另一交易更早的区块中。而且,应该注意,术语“用户”可以不一定表示人类用户。用户可以是使用或形成本发明一部分的计算机或自动化过程。用户可以是网络中的节点,或者可以与网络中的节点相关联。

附加地或替代地,本发明可以提供一种在点到点分布式账本(区块链)上记录多个用户之间多个交易的方法,所述多个交易包括从第一用户(a)到第二用户(b)的第一交易(tx)以及从第二用户(b)到第一用户(a)的第二交易(tx)。该方法可以包括:从与第一用户(a)相关联的第一节点接收第一请求,以将第一加密货币数额(b1)从第一用户(a)转移到与第一交易相关联的第二用户(b);从与第二用户(b)相关联的第二节点接收第二请求,以将第二加密货币数额(b2)从第二用户(b)转移到与第二交易相关联的第一用户(a),其中,第一交易以接收第二请求为条件,和/或第二交易以接收第一请求为条件;验证第一请求和第二请求,其中,验证第一请求和第二请求的步骤包括:确定满足接收第一请求和第二请求的条件步骤。基于验证第一请求和第二请求,该方法还包括:通过通信网络向点到点分布式账本发送第一数据输出(o1),其包括:第一加密货币数额(b1)对第二用户(b)的第一转移的第一指示;和第二加密货币数额(b2)对第一用户(a)的第二转移的第二指示。

第一交易和第二交易以接收转移与彼此相关联的加密货币的相应请求为条件。由于该方法包括:验证在发送转移以记录在点到点分布式账本上之前进行第一请求和第二请求二者,因此第一用户(a)和第二用户(b)可以具有更多置信度:另一用户将在第一交易和第二交易中履行其各自的义务。此外,可以由第一数据输出(o1)提供多个用户(a,b)之间的交易的相互依赖性的证据,第一数据输出(o1)包括并且代表这些相互依赖的交易。具体地,第一转移和第二转移的指示都处于同一加密货币交易记录的第一数据输出(o1)中,这样可以辅助证明第一交易和第二交易是链接的的且是相互依赖的。

在该方法中,第一请求可以包括第一交易以接收第二请求为条件的第一通知。在该方法中,第二请求可以包括第二交易以接收第一请求为条件的第二通知。

该方法还可以包括:接收第三通知,其中,第三通知指定第一交易以接收第二请求为条件并且第二交易以接收第一请求为条件。

在该方法中,验证第一请求和第二请求的步骤还可以包括:认证第一请求来自第一用户(a)以及第二请求来自第二用户(b)。

在该方法中,验证第一请求和第二请求的步骤还可以包括:确定用于从第一用户(a)转移第一加密货币数额(b1)的权限和用于从第二用户(b)转移第二加密货币数额(b2)的权限。

第一数据输出(o1)还可以包括与第一交易和第二交易之一或二者相关联的元数据(md)。与第一交易和第二交易之一或二者相关联的元数据(md)包括以下中的一个或多个的散列:与第一交易和/或第二交易相关的信息;指向与第一交易和/或第二交易相关的信息的指针;以及与第一用户(a)和/或第二用户(b)相关的一个或多个标识符。

第一加密货币数额(b1)可以与第一通证(t1)相关联,和/或第二加密货币数额(b2)可以与第二通证(t2)相关联。该方法还可以包括:确定第一赎回脚本(rs1)的第一散列(h1),其中,第一赎回脚本(rs1)基于:至少第一元数据(md1),其包括与第一通证(t1)相关联的信息;与第二用户(b)相关联的第二用户公钥(p1b),其中,第二用户公钥(p1b)与第二用户私钥(v1b)形成密码对;和与受信实体(te)相关联的受信实体公钥(p1t),其中,受信实体公钥(p1t)与受信实体私钥(v1t)形成密码对,其中,第一数据输出(o1)还包括第一散列(h1),其中,第一散列(h1)与第一加密货币数额(b1)相关联,以提供第一通证(t1)。

该方法还可以包括:确定第二赎回脚本(rs2)的第二散列(h2),其中,第二赎回脚本(rs2)基于:至少第二元数据(md2),其包括与第二通证(t2)相关联的信息;与第一用户(a)相关联的第一用户公钥(p1a),其中,第一用户公钥(p1a)与第一用户私钥(v1a)形成密码对;和与受信实体(te)相关联的受信实体公钥(p1t),其中,受信实体公钥(p1t)与受信实体私钥(v1t)形成密码对,其中,第一数据输出(o1)还包括:第二散列(h2),其中,第二散列(h2)与第二加密货币数额(b2)相关联,以提供第二通证(t2)。

根据前述权利要求中任一项所述的基于对点到点分布式账本的第一数据输出(o1)确认第一交易和/或第二交易的计算机实现的方法,该方法包括:收到确认第一交易和/或第二交易的请求;确定对应于与第一交易相关联的第一加密货币数额(b1)的第一转移和/或与第二交易相关联的第二加密货币数额(b2)的第二转移的第一数据输出(o1);通过通信网络从点到点分布式账本接收至少部分第一数据输出(o1);根据第一数据输出(o1)确定第一转移的第一指示和/或第二转移的第二指示;验证第一转移的第一指示和/或第二转移的第二指示与请求中的第一交易和/或第二交易相对应;并发送指示验证结果的输出。

该方法还可以包括:基于第一转移的第一指示和第二转移的第二指示,验证接收第一请求和第二请求的条件步骤都得以满足;并发送输出,其指示第一交易以接收第二请求为条件和/或第二交易以接收第一请求为条件并且条件步骤得以满足。

该方法还可以包括:确定与第一交易和/或第二交易相关联的元数据,其中,验证步骤还包括:验证元数据与第一交易和/或第二交易相对应。

该方法还可以包括:接收和确定以下中的一个或多个的验证散列:与第一交易和/或第二交易相关的信息;指向与第一交易和/或第二交易相关的信息的指针;以及与第一用户(a)和/或第二用户(b)相关的一个或多个标识符;对验证散列与元数据中的散列相对应进行验证。

一种计算机程序,包括机器可读指令,用于使处理设备实现上述任一种方法。

一种设备,包括用于执行上述任何一种方法的第一处理设备。

一种在点到点分布式账本上记录多个用户之间的多个交易的设备,所述多个交易包括从第一用户(a)到第二用户(b)的第一交易和从第二用户(b)到第一用户(a)的第二交易,其中,该设备包括:处理设备:用于:从与第一用户(a)相关联的第一节点接收第一请求,以将第一加密货币数额(b1)从第一用户(a)转移到与第一交易相关联的第二用户(b);从与第二用户(b)相关联的第二节点接收第二请求,以将第二加密货币数额(b2)从第二用户(b)转移到与第二交易相关联的第一用户(a),其中,第一交易以接收第二请求为条件,和/或第二交易以接收第一请求为条件;验证第一请求和第二请求,其中,所述验证第一请求和第二请求包括:处理设备确定接收到第一请求和第二请求二者,其中,基于验证第一请求和第二请求,处理设备选择性地通过通信网络向点到点分布式账本发送第一数据输出(o1),其包括:第一加密货币数额(b1)对第二用户(b)的第一转移的第一指示;和第二加密货币数额(b2)对第一用户(a)的第二转移的第二指示。

以上关于一个方面或实施例描述的任何特征可以同样适用于一个或多个其他方面或实施例。例如,关于一个方法描述的特征也可以适用于本发明的系统。

附图说明

将参考以下附图描述本公开的示例:

图1是用于在点到点分布式账本上记录多个用户之间的多个交易的示例系统示意图;

图2是示出从第一用户到第二用户的第一交易和从第二用户到第一用户的第二交易的示图。

图3是记录多个用户之间的多个交易的计算机实现的方法的流程图。

图4是确认第一交易和/或第二交易的计算机实现的方法的流程图;

图5是示出以下情况的示图:从第一用户到第二用户的第一交易,其中,第一交易包括第一通证,以及从第二用户到第一用户的第二交易,其中,第二交易包括加密货币的支付;和

图6示出处理设备的示意性示例。

具体实施方式

概观

本发明提供一种用于促进点到点分布式账本9(即区块链)上多个用户之间的多个交易的方法和系统。所述区块链可以是或可以不是比特币区块链。在一个实施例中,本发明被布置为这样的:(受信)第三方仅一旦一些条件已经被成功评估才被授权释放一个或多个相关联交易。所述条件可以从一个或多个交易本身中的元数据直接受引用。总之,本发明可包括以下步骤:

交易1(tx1)1:a向b支付,其中,一些条件由c评估(有效地是a加c的2中之2多重签名,带有指向元数据规则的指针)

交易2(tx2):b向a支付,其中,一些条件由c评估(有效地是b加c的2中之2多重签名,带有指向元数据规则的指针)

可以存在这样的假设:条件是对等方交易的存在,那么txn1中的规则绝不能独立于进行同一操作的txn2中的规则而评估为true。但是,一旦两个规则集都评估为true,则两个交易都可以同时释放用于花费(即使挖掘意味着一个交易可能发生在比另一交易更早的区块中)。

现将描述。图1示出系统1,其包括与第一节点15相关联的第一用户(a)5和与第二节点17相关联的第二用户(b)7。第一节点15和第二节点17通过通信网络8通信,其中,第三节点13与受信实体(te)3相关联。

与受信实体(te)3相关联的第三节点13通过通信网络8与点到点分布式账本9通信以记录交易。点到点分布式账本9可以与一个或多个处理设备19相关联,以接收和记录交易。点到点分布式账本的一个示例包括区块链,区块链是基于比特币协议的基于共识的交易账本。因此,与账本相关联的处理设备19可以是由“矿工”使用或与之相关联的处理设备。

参考图2,第一用户(a)5和第二用户(b)7可能希望参与双向交易。双向交易包括从第一用户(a)5到第二用户(b)7的第一交易22和从第二用户(b)7到第一用户(a)5的第二交易24。第一交易22和第二交易24可以包括加密货币、通证化的加密货币、法定货币、有形资产、无形资产,及其所有权的表示等的交易。为使第一交易22生效,第一加密货币数额(b1)从第一用户(a)5转移(32)到第二用户(b)7。类似地,为使第二交易24生效,第二加密货币数额(b2)从第二用户(b)7转移(34)到第一用户(a)5。第一加密货币数额和/或第二加密货币数额可以是交易本身的主体(例如,如果意图是将加密货币作为支付转移)。或者,第一加密货币数额和/或第二加密货币数额可以代表交易22、24(例如,作为法定货币、有形资产、无形资产、其拥有或所有权的表示等的通证)。

第一用户(a)5可能不信任第二用户(b)7会履行双向交易的第二用户(b)7侧的义务。类似地,第二用户(b)7可能不信任第一用户(a)5。因此,为了给予用户5、7更高的置信程度,受信实体(te)3参与,使得第一交易和第二交易以彼此为条件。参考图3,由受信实体(te)执行的方法100包括:验证(130)受信实体(te)3已经接收到以下二者:(i)将第一加密货币数额(b1)从第一用户(a)5转移到第二用户(b)7的第一请求110;及(ii)将第二加密货币数额(b2)从第二用户(b)7转移到第一用户(a)5的第二请求120。已经接收到第一请求和第二请求二者的肯定验证指示第一用户5和第二用户7二者的善意意图。因此,通过向点到点分布式账本9发送(140)第一数据输出(o1),与受信实体(te)3相关联的第三节点13可以然后继续记录第一加密货币数额(b1)和第二加密货币数额(b2)的转移,该点到点分布式账本9进而提供第一交易和第二交易的记录。

本文描述的该系统和方法的一个优点可以包括对于第一用户5和第二用户7的更大置信度,即另一方的义务更可能得以履行。另一优点是第一数据输出(o1)可以用作第一转移和第二转移相互依赖并且链接到双向交易的证据。具体地,第一转移和第二转移二者的指示都处于同一加密货币交易记录的第一数据输出(o1)中。

该系统1还可以允许基于记录在点到点分布式账本9上的记录来在稍后的时间点回顾和验证第一交易和第二交易已经发生。这可以包括验证:(与第一交易相关联的)第一加密货币数额(b1)的转移(32)链接于(与第二交易相关联的)第二加密货币数额(b2)的转移(34)而成为双向交易的一部分。如果存在争议,则这可能是有用的,因为该验证可以是双方的意图及其义务的执行情况的证据。例如,如果第二用户(b)7指控第一用户(a)没有为商品或服务付费,则第一用户(a)可以能够参考显示以该商品或服务为回报进行支付的点到点分布式账本上的双向交易的记录来验证进行了支付。在将在下面进一步详细描述的图4中的方法400中示出回顾和验证交易的示例。

双向交易示例的描述

同意双向交易

第一用户(a)5和第二用户(b)7签订协议,由此第一用户(a)同意向第二用户(b)7进行第一交易22,以第一用户(a)5从第二用户(b)7接收第二交易24为交换。该协议可以是谈判、若干轮出价以及第一用户5和第二用户7最终接受的结果。在一些示例中,协议可以是由于拍卖、商品和服务的销售等而达成的合同协议。应当理解,双向交易可以可适用于一系列不同的交易,包括(但不限于):不动产、有形资产、无形资产、货币、金融工具、合同、保险单、股票、退休金、雇员报酬等。

第一交易22与第一加密货币数额(b1)相关联。在一个示例中,第一用户的约定义务可以是将加密货币作为支付转移给第二用户(b)7,因此第一交易22仅转移第一加密货币数额(b1)以履行义务。在其他示例中,第一用户(a)5的约定义务本身可以是除加密货币之外的其他义务。例如,第一交易22可以包括:转移另一资产,例如一笔法定货币、股权、支付承诺以及如本文所述的其他有形、无形资产和权利。这些资产,由于它们不是加密货币,因此本身不能通过在点到点分布式账本上记录而被转移。然而,可以将加密货币数额通证化来表示这样的资产,并且这种“通证化的加密货币”的转移可以记录在点到点分布式账本上。因此,可以通过将相关第一加密货币数额(b1)从第一用户(a)5转移到第二用户(b)7来表示和记录第一交易22。类似地,可以通过将相关第二加密货币数额(b2)从第二用户(b)7转移到第一用户(a)5来表示和记录第二交易24。

选择受信实体

即使第一用户(a)5和第二用户(b)7同意继续各自第一交易22和第二交易24,在这些用户之间也可能存在不信任。例如,一个用户可能会担心另一用户可能不履行该另一用户的义务并携该用户的资产潜逃。因此,第一用户(a)5和第二用户(b)7都信任的受信实体(te)3参与,其中,受信实体将仅在还存在转移(34)第二加密货币数额(b2)的请求的条件下转移(32)第一加密货币数额(b1)。

受信实体(te)3可以是两个用户都信任的服务提供商。例如,受信实体可以是银行、另一金融机构、中央银行、铸币厂、公司等。在一个示例中,受信实体可以是管理第一用户(a)5和第二用户(b)7二者的电子钱包(“ewallet”)的银行。在其他示例中,第三方可以是提供委托付款(escrow)服务的实体。

重要的是,(例如,如果用户因受信实体所犯的错误导致的损失而受补偿,则)受信实体(te)3直接受两个用户信任,或者替代地,两个用户都绝对地信任受信实体(te)3。

发送将加密货币转移至受信实体的请求

一旦受信实体(te)3满意,第一用户(a)5就可以然后发送第一请求以将第一加密货币数额(b1)从第一用户(a)转移(32)到与第一交易22相关联的第二用户(b)7。在受信实体(te)3管理第一用户(a)5电子钱包的示例中,这可以包括关于受信实体(te)3使用第一用户的(a)5的私钥以代表他们转移(32)第一加密货币数额(b1)的授权。第一加密货币数额可以包括来自先前交易的第一用户的电子钱包中的加密货币数额的一部分。

第一请求210可以从与第一用户(a)5相关联的第一节点15发送到与受信实体(te)3相关联的第三节点。

在其他示例中,转移第一加密货币数额(b1)的第一请求210可以间接地发送到受信实体(te)3。例如,第一用户(a)5可以向管理第一用户的电子钱包的实体进行转移第一加密货币数额(b1)的请求。管理第一用户的钱包的实体可以进而向受信实体(te)3发送相应的请求以实现加密货币的有条件转移。

转移(32)第一加密货币数额(b1)的第一请求210可以在请求中包括显式第一通知:第一交易(包括第一转移32)应仅在转移(34)第二加密货币数额(b2)的相应第二请求存在的情况下继续进行。类似地,第二请求210可以包括第二通知:要求第二交易(包括第二转移34)仅在进行第一请求的情况下继续进行。

在替代示例中,第一请求210不包括显式条件,并且受信实体(te)3可以通过其他方式确定第一交易(包括第一转移32)应该以第二交易(包括第二转移34)为条件。例如,可以向受信实体发送第一转移(32)和第二转移(34)是以彼此为条件的单独的消息。例如,另一节点可以与促进第一用户(a)5和第二用户(b)7之间的协议的拍卖商相关联。然后,该另一节点可以在执行实际转移之前通过第三通知向受信实体(te)3告知第一交易和第二交易(包括第一用户(a)5和第二用户(b)7之间加密货币的转移)是以彼此为条件的。在一些示例中,这些条件可以存储在与第三节点13相关联的数据存储器11中并根据需要由第三节点13检索。

与第二用户(b)7相关联的第二节点17还发送(310)第二请求以将第二加密货币数额(b2)从第二用户(b)7转移(34)到第一用户(a)5,其中,所述转移(34)与第二交易24相关联。可以通过与上面针对第一请求所讨论的相同或相似的方式进行该第二请求。

执行记录多个交易的方法100

以下参考图2和图3描述受信实体(te)3执行记录多个交易的方法100。

所述方法100包括:接收(110)第一请求以转移(32)第一加密货币数额(b1);以及接收(120)如上所述步骤210和310中发送的第二请求以转移(34)第二加密货币数额(b2)。

所述方法100还包括:验证(130)第一请求和第二请求。验证步骤130包括:确定接收(110、120)第一请求和第二请求的条件步骤均得以满足。如上所述,所述条件可以包括于第一请求和第二请求中的一个或两个中,和/或通过其他方式(例如,从另一方或从数据存储器11接收条件)得以确定。

在另一示例中,验证第一请求和第二请求的步骤还包括:认证第一请求来自第一用户(a)5和/或第二请求来自第二用户(b)7。这可以包括:受信实体(te)3或认证代理认证请求是由第一用户5和第二用户7和/或它们各自相关联的第一节点15和第二节点17进行的。

在另一示例中,验证第一请求和第二请求的步骤还包括:确定用于从第一用户(a)5转移(32)第一加密货币数额(b1)的权限和用于从第二用户(b)7转移(34)第二数额转移34的权限。这在存在对资产的转移的约束的情况下可能是有用的。例如,可能存在用户5、7可能没有用于自由地转移资产的权限的情况。这可以包括针对资产的抵押。因此,在验证步骤130中,受信实体(te)可以确定加密货币的转移是否应该向前进行。在一个示例中,确定用于转移的权限可以包括:受信实体(te)向财产证券登记处发送查询,以确定是否存在对作为第一交易22和第二交易24的主体的转移或一个或多个资产的约束。

基于在步骤130第一请求和第二请求的验证,所述方法100可以继续记录第一加密货币数额量的转移(32)和第二加密货币数额量的转移(34)。可以通过通信网络8将第一数据输出(o1)发送(140)到点到点分布式账本9来实现该操作。第一数据输出(o1)包括:(i)第一加密货币数额(b1)对第二用户(b)7的第一转移32的第一指示;和(ii)第二加密货币数额(b2)对第一用户(a)5的第二转移34的第二指示。

点到点分布式账本9上的第一数据输出(o1)实现以下目的:

首先,该操作记录第一加密货币数额(b1)对第二用户(b)7的转移32。第一加密货币数额(b1)代表从第一用户(a)5到第二用户(b)7的相关第一交易22。该第一加密货币数额(b1)对第二用户(b)7的值可以包括:(i)第一加密货币数额(b1)的名义加密货币值;和/或(ii)其他相关值,例如第一加密货币数额(b1)所代表的“通证值”或“资产”。将来,第二用户(b)7可以花费第一加密货币数额(b1)用于未来的交易。

其次,该操作记录第二加密货币数额(b2)对第一用户(a)5的转移34。第一用户(a)可以采用与上述第二用户(b)7如何使用接收到的第一加密货币数额(b1)类似的方式对其进行使用。

第三,第一数据输出(o1)变为点到点分布式账本上的永久记录,其可以用于确认双向交易已经发生。此外,由于记录是永久性的,并且作为双向交易一部分的多个转移的指示处于同一第一数据输出(o1)中,因此这可以给予用户在双向交易方面的置信度。这将在下面进一步详细描述。

确认第一交易22和/或第二交易24的方法

现在将参考图4描述确认第一交易22和/或第二交易24的方法400。

在一些情况下,例如,在第一用户(a)5和第二用户(b)7之间的审计或争议期间,期望确认第一交易22和/或第二交易24的记录。这可以包括:第一用户(a)5、第二用户(b)7或另一方(例如审计员、法定代表人或仲裁员)发送(510)请求以确认第一交易22和/或第二交易24。应当理解,可以以各种方式构成请求510,包括但不限于对第一交易22和/或第二交易24的引用、加密货币的第一转移32和/或第二转移34,由第一用户5或第二用户7进行的交易等。应当理解,发送(510)请求还可以包括:发送用于确认第一交易22和第二交易24都是在相关联的双向交易中进行的请求。

所述方法400包括:受信实体(te)3或另一实体接收(410)用于确认第一交易22和/或第二交易24的请求。

此外,所述方法400包括:确定(420)第一数据输出(o1)对应于以下内容:(i)与第一交易22相关联的第一加密货币数额(b1)的第一转移32;和/或(ii)与第二交易24相关联的第二加密货币数额(b2)的第二转移34。在一个示例中,确定步骤420可以包括:从数据存储器11或其他节点接收记录,所述记录允许确定与第一转移32和/或第二转移34相关联的相应第一数据输出(o1)。例如,所述记录可以包括将第一数据输出映射到第一转移32和第二转移34、与第一用户(a)5相关联的转移、和/或与第二用户(b)7相关联的转移等的表。在其他示例中,这可以包括:基于来自点到点分布式账本的记录来确定已经涉及第一用户(a)5和/或第二用户(b)7用于识别第一数据输出(o1)的交易。

下一步骤包括:通过通信网络8从点到点分布式账本9接收(430)第一数据输出(o1)的至少一部分。在一些示例中,第一数据输出(o1)或其记录存储在数据存储器11中。然而,从点到点分布式账本9接收第一数据输出(o1)的至少一部分可以允许验证实际上记录第一数据输出(o1)。

下一步骤包括:根据第一数据输出(o1)确定(440)第一转移32的第一指示和/或第二转移34的第二指示。

所述方法400还包括:验证(450)第一转移32的第一指示和/或第二转移34的第二指示与收到的请求中的所查询的第一交易22和/或第二交易相对应。例如,这可以包括:在第一交易22的情况下将第一转移32的第一指示与加密货币的预期转移进行比较(和/或类似地,将第二转移34的第二指示与查询的第二交易24进行比较)。

所述方法400可以包括:发送(460)指示验证步骤450结果的输出。该输出可以由第一用户(a)5、第二用户(b)7)或其他实体、或已查询或要求确认第一交易22和/或第二交易24的节点接收(520)。

在一些示例中,所述方法400还包括:验证第一转移32和第二转移34的条件要求。因此,所述方法400还可以包括:基于第一转移32的第一指示和第二转移34的第二指示来验证接收第一请求110和第二请求120的条件步骤均得以满足。该验证步骤还可以包括:例如从数据存储器11查询第一转移32和第二转移34是以彼此为条件的记录。所述方法400还可以包括:发送指示第一交易22以接收(120)第二请求为条件和/或第二交易24以接收(110)第一请求为条件并且满足条件步骤的输出。

变化形式

数据输出中指示双向交易的元数据

在一些其他变化形式中,与第一交易22和/或第二交易24有关的信息可以包括于记录在点到点分布式账本9上的第一数据输出(o1)中。包括该信息对于验证第一交易22和第二交易24(以及相应的第一转移32和第二转移34)可以是有用的。

包括该信息的一种方法是:将其包括在第一数据输出(o1)的元数据中,该第一数据输出与第一交易22和第二交易24之一或二者相关联。该信息可以包括但不限于:与第一交易和/或第二交易相关的条款和条件;指向与第一交易和/或第二交易相关的信息的指针;以及与第一用户(a)5和/或第二用户(b)7相关的一个或多个标识符。

在一些情况下,该信息可以具有相当长的长度和/或包括机密信息。因此,在一些示例中,可以将信息或至少部分信息散列化,这可以是有利的,因为散列化的长度可以更短并且运作为隐藏信息。同时,散列化的信息被永久地记录在点到点分布式账本9上,从而该记录可以用于验证信息。例如,希望验证信息的实体可以将查询的信息散列化,然后将其与在点到点分布式账本9上记录的散列进行比较。

用于支付到脚本散列(p2sh)交易的赎回脚本中的元数据

在比特币协议的点到点方法中,元数据可以包括于输出脚本中。现在将参考支付到脚本交易来描述在第一数据输出中提供元数据的示例。在比特币协议的标准支付到脚本散列方法中,输出脚本或赎回脚本可以包括以下形式:

<numsigspubk1pubk2...pubk15numkeysop_checkmultisig>

其中numsigs是满足用于解锁交易的赎回脚本所需的有效签名的数目“m”;pubk1、pubk2...pubk15是对应于解锁交易的签名的公钥(上至15个公钥的最大值),numkeys是公钥的数目“n”。

为了赎回上述赎回脚本,至少需要与公钥对应的“m”数目的签名。在一些示例中,公钥的顺序很重要,并且用于签署的“n”中的“m”个签名必须按顺序完成。例如,考虑“m”为2且“n”为15的情况。如果有两个签名sig1(对应于pubk1)和sig15(对应于pubk15)可供使用,则赎回脚本必须由sig1首先签名,然后由sig15签名。

元数据可以在赎回脚本中嵌入到赎回脚本中对于公钥可用的15个位置中的一个或多个位置中。例如,赎回脚本可以采用以下形式:

<numsigsmetadata1metadata2...pubk1pubk2...numkeysop_checkmultisig>

其中,metadata1和metadata2均包括赎回脚本中替代公钥的元数据,而pubk1和pubk2是公钥。

通过插入与加密货币的转移相关联的元数据(例如与第一交易22和第二交易24相关联的信息),该信息的散列将作为永久性记录包括于点到点分布式账本9中。

因此,确认第一交易22和/或第二交易24的方法400还可以包括:确定将与第一交易和/或第二交易相对应的元数据。例如,这可以包括:从数据存储器11、第一节点15、第二节点17、第三节点13或与第一交易22和/或第二交易24相关的其他节点检索信息。该信息可以用于验证与第一交易22和/或第二交易24相关联的元数据,特别是可能已经记录在点到点分布式账本上的第一数据输出(o1)中的元数据。如果元数据在第一数据输出(o1)中被散列化,则验证可以包括:对上述信息进行散列化,以用于与散列化的元数据进行比较。

通证化(tokenised)的加密货币

第一交易22和/或第二交易24可以涉及转移并非是严格加密货币的(有形和无形)资产(例如第一加密货币数额和第二加密货币数额)的意图。相反,意图可以包括转移资产的意图。因此,可以使用“通证化的加密货币”来执行加密货币的第一转移32和/或第二转移34,从而存在代表此类资产和权利的“通证”的转移。其中,通证还可以代表对持有人赋予赎回法定货币、商品或服务、不动产权等的指定权利的可转让的合同。

在所述方法100中,第一加密货币数额(b1)可以与第一交易22的第一通证(t1)相关联,和/或第二加密货币数额(b2)可以与第二通证(t2)相关联。

现在将参考表1(其中,为简明起见,未示出矿工的费用)和图5描述记录在涉及通证的加密货币交易(id-600)上的双向交易的示例。这涉及第一交易22,所述第一交易包括与第一通证(t1)相关联的第一加密货币数额(b1)的转移。具体地,其中,第一用户(a)5具有第一通证(t1)并且意图将第一通证(t1)转移到第二用户(b)7。该双向交易的另一侧是第二用户(b)7,其将第二加密货币数额(b2)转移到第一用户(a)5。在该示例中,第二加密货币数额(b2)未被通证化,并且代表第二用户(b)7对第一通证(t1)的支付。

表1

输入

表1的第4至8行表示被通证化的第一加密货币数额(b1)的输入。第一加密货币数额(b1)是先前交易(id-110)的结果,该交易为了第一用户(a)5的利益而转移了第一通证(t1),因此先前交易输出脚本包括第一用户的公钥(p1a)。相应地,为了解锁此先前输出,必须使用第一用户的私钥(v1a)签署脚本。在此示例中,此赎回脚本包括multisig,其也要求受信实体(te)3使用受信实体私钥(v1t)签署,以防止疏忽的花费(尽管应理解,在某些其他变化形式中,这可以并非要求)。表1的第7行显示解锁脚本包括赎回脚本中的“tokenmetadata”。所述tokenmetadata包括信息,以使可以将该第一加密货币数额(b1)识别为第一通证(t1)。最后,表1的第8行指示该第一加密货币数额(b1)将是该双向交易(id-600)中的第一输出。

表1的第9至13行表示未通证化的第二加密货币数额(b2)的输入。该第二加密货币数额(b2)是先前交易(id-210)的结果,该交易为了第二用户(b)7的利益而转移了该加密货币,因此先前交易输出脚本包括第二用户的公钥(p1b))。相应地,为了解锁此先前输出,脚本需要使用第二用户的私钥(v1b)进行签署。最后,表1的第13行指示该第二加密货币数额将是该双向交易中的第二输出(id-600)。

输出

表1的第15至17行表示该双向交易(id-600)的第一输出,在这种情况下,它代表转移到第二用户(b)7的第一通证(t1)。第15行显示输出值,其为第一加密货币数额(b1)的数额。第17行显示输出脚本,其包括在支付到脚本散列(pay-to-script-hash)中使用的“赎回脚本散列”(“<redeem-script-hash>”)。

“<redeem-script-hash>”是赎回脚本的散列。在此示例中,这是下列形式的第一赎回脚本(rs1):

<2tokenmetadatap1bp1t3op_checkmultisig>

第一赎回脚本(rs1)包括“tokenmetadata”,其是multisig字段之一中的元数据,使得该第一加密货币数额(b1)可以继续被识别为第一通证(t1)。由于为了第二用户(b)7的利益已转移该第一通证(t1),因此第一加密货币数额(b1)被锁定,使得第一赎回脚本(rs1)包括第二用户公钥(p1b)并因此需要第二用户私钥(v1b)以用于解锁。在该示例中,赎回脚本还包括受信实体公钥(p1t),并因此需要受信实体私钥(v1t)以用于解锁。应当理解,一些其他变化形式可能不涉及在将来花费第一加密货币数额(b1)的受信实体(te)3,并且对于这种情况,可以不必将受信实体公钥(p1t))包括在第一赎回脚本(rs1)中。

然后,上述第一赎回脚本(rs1)被散列化,以确定被发送以记录在点到点分布式账本9上的第一散列(h1)。

在第一加密货币数额(b1)的未来交易中,例如,当第二用户(b)7希望转移或赎回第一通证(t1)时,用于解锁第一加密货币数额(b1)的脚本(例如,未来交易的输入scriptsig)可以是以下形式:

sig-v1bsig-v1t<2tokenmetadatap1bp1t3op_checkmultisig>

表2的第18至20行表示该双向交易(id-600)的第二输出,在这种情况下,其为转移到第一用户(a)的第二加密货币数额(b2)。该第二加密货币数额(b2)具有值“10,000”,如在第18行所指示。由于该第二加密货币数额(b2)未被通证化,因此第一用户(a)5应该随意花费它,因为它们认为合适。参考第20行,输出脚本指示第二加密货币数额(b2)被第一用户公钥(p1a)锁定,其可以根据需要由第一用户私钥(v1a)解锁。

然后,通过第一数据输出(o1),这些输出被记录在点到点分布式账本9上。具体地,第一数据输出(o1)的第一指示包括第一散列(h1)(其基于在表1的第17行的输出脚本的结果),所述第一散列(h1)与提供第一通证(t1)的第一加密货币数额(b1)相关联。第一输出(o1)还包括与第二加密货币数额(b2)相关联的第二指示(其中,第二指示基于在表1的第20行的输出脚本的结果)。

以上示例描述了被通证化的第一加密货币数额(b1)。应当理解,在一些示例中,第二加密货币数额(b2)也可以被通证化,因此上述方法也可以应用,使得第二加密货币数额(b2)可以提供第二通证(t2)。第二通证(t2)可以类似地受转移,而其结果(包括第二赎回脚本(rs2)的第二散列(h2))记录在点到点分布式账本9上。

尽管以上示例描述了两个用户(5,7)和两个相应的交易(22,24),但是应当理解,该方法的变化形式可以用附加用户和附加交易得以实现。例如,可以涉及附加第三用户,由此第三用户和第一用户(a)5同意在彼此之间具有第三交易和第四交易。例如,第一用户(a)5可以是零售商店,而第二用户和第三用户可以是顾客。

处理设备

如上所述,第一用户(a)5,第二用户(b)7和受信实体(te)3可以与相应的第一节点15,第二节点17和第三节点13相关联。第一节点15,第二节点17和第三节点13可以是电子设备,例如计算机、平板计算机、移动通信设备、计算机服务器、计算机终端等。该电子设备可以包括处理设备23、数据存储器11和用户接口。用户接口的示例包括键盘、鼠标、监示器、触摸屏显示器等。点到点分布式账本9还可以与多个处理设备19相关联。

图6示出处理设备19、23的示例。处理设备19、23包括经由总线1530彼此通信的处理器1510、存储器1520和接口设备1540。存储器1520存储用于实现上述方法100、400的指令和数据,而处理器1510执行来自存储器1520的指令(诸如计算机程序)以实现方法100、400。接口设备1540可以包括通信模块,其促进与通信网络8以及在一些示例中与用户接口和诸如数据存储器11的外围设备的通信。应当注意,尽管处理设备1510可以是独立的网络元件,但是处理设备1510也可以是另一网络元件的一部分。此外,由处理设备19、23执行的一些功能可以分布在多个网络元件之间。例如,受信实体(te)3可以与多个处理设备23相关联,以在与受信实体(te)3相关联的安全局域网中执行方法100、400。

本领域技术人员应该理解,在不脱离本公开广泛的一般范围情况下,可以对上述实施例进行多种变化和/或修改。因此,本发明的实施例在所有方面都被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1