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

使用临时密钥对进行区块链资产的原子交换的方法和系统

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


使用临时密钥对进行区块链资产的原子交换的方法和系统

相关申请的交叉引用

本申请要求于2021年3月4日提交的编号为17/192,194的美国专利申请的权益,出于所有目的,其全部内容通过引用并入本文。

技术领域

本公开涉及使用临时密钥对(transient key pair)在多个区块链上进行资产的原子交换(atomic exchange),具体而言是使用密钥对和数字签名来启用两个区块链上的资产的原子交换,而无需基于区块链类型的修改或具体实施方式。

背景技术

区块链最初是作为一种用于使用密码货币进行支付交易的存储机制创建的。使用区块链提供了许多益处,诸如去中心化、分布式计算、关于交易的透明度,并且还为交易中涉及的个人或实体提供匿名性。区块链更受欢迎的方面之一是它是不可变的记录:作为链的一部分的每笔交易都存储在其中,并且由于计算要求和带宽限制而无法改变,特别是当链变得越来越长且区块链网络添加更多节点时。

随着区块链的普及,该技术已开始用于各种不同的应用和多种类型的数字货币和资产。新区块链的创建可以使用单个计算设备在极短的时间段内完成,这导致了数千个不同的区块链,它们具有自己的实施方式类型和相关联的数字货币。在一些情况下,一方或多方可能有兴趣使用散布在两个不同区块链上的数字货币或其它资产进行交易或其它交换,诸如执行从一种区块链货币到另一种区块链货币的货币交换。

但是,利用当前技术,无法跨两个区块链进行单笔交易。因此,为了进行这种交换,必须在每个区块链上进行交易,这要求双方都参与每个链上的交易。如果每一方都是区块链之一的发送者,那么他们必须将其货币或数字资产转移给另一方,而无法保证另一方将执行其自己的相应转移。为了减少欺诈的可能性,各方常常会使用托管(escrow)服务,其中每一方将其相应的数字货币或资产转移到托管服务,该托管服务将进一步将资产转移给适当的一方,或根据需要撤销初始交易。但是,这种解决方案要求附加的交易以及第三方的参与,这通常可能带来巨大的费用并且需要附加的时间和处理。

在一些情况下,一些区块链已经开始开发与其它区块链进行资产交换的协议和其它配置。但是,由于区块链的实施方式的差异、交易的格式化方式以及其它变化,此类协议和其它配置必须针对它们所应用的具体区块链进行专门设计和定制。因此,每个区块链必须向区块链网络中的每个节点提供附加的配置数据,以用于它们有资格进行资产交换的每个其它区块链。由于存在数千个区块链,并且必须为每个区块链专门设计配置,因此这是一项艰巨且几乎不可能完成的任务。

因此,需要一种与区块链的实施方式无关的解决方案,以使得能够跨任何两个区块链进行资产交换。

发明内容

本公开提供了对使用临时密钥对在多个区块链上进行资产的原子交换的系统和方法的描述。当双方同意进行资产的原子交换时,他们可以在每个区块链上为相应的交易生成交易值。这些交易与对应区块链网络的网络标识符组合,然后由双方之一(诸如发送者)对这这个数据集进行数字签名。然后用该方的私钥以及专门为互换生成的新密码密钥对的公钥对这个数字签名进行加密。加密的数字签名与互换公钥一起附加到数据并提供给另一方(诸如接收者)。然后,接收者对数据生成自己的数字签名并用他们自己的私钥和互换公钥对来加密该签名。然后将这个完成的包提交给两个区块链中的至少一个以添加到其中。然后,每一方可以查看带有签名的消息以确保双方都同意交易。可以执行交易,并且一旦完成,就使用新密码密钥对的私钥将确认消息发布到区块链,这可以使任何实体通过解密数字签名来执行同意的交易的验证,然后可以使用相应实体的公钥对其进行验证。结果是双方同意的可以在任何两个区块链上执行的资产的原子交换,无需对其进行任何修改,这也可以由任何第三方仅使用参与者提供的公钥进行审计。

一种使用临时密钥对在多个区块链上进行资产的原子交换的方法,包括:由第一计算设备生成提议消息,该提议消息至少包括第一交易值、与第一区块链对应的第一网络标识符、第二交易值、与第二区块链对应的第二网络标识符、以及互换密码密钥对的互换公钥;由第一计算设备生成用于提议消息的第一数字签名;由第一计算设备使用第一密码密钥对的第一私钥和互换公钥对第一数字签名进行加密;由第一计算设备将加密的第一数字签名附加到生成的提议消息;以及由第一计算设备将具有附加的加密的第一数字签名的所生成的提议消息传输到第二计算设备。

一种使用临时密钥对在多个区块链上进行资产的原子交换的系统,包括:第一计算设备、第二计算设备、第一区块链和第二区块链,其中第一计算设备生成提议消息,该提议消息至少包括第一交易值、与第一区块链对应的第一网络标识符、第二交易值、与第二区块链对应的第二网络标识符、以及互换密码密钥对的互换公钥;生成用于提议消息的第一数字签名;使用第一密码密钥对的第一私钥和互换公钥对第一数字签名进行加密;将加密的第一数字签名附加到生成的提议消息;以及将具有附加的加密的第一数字签名的所生成的提议消息传输到第二计算设备。

附图说明

当结合附图阅读时,从以下示例性实施例的详细描述中可以最好地理解本公开的范围。附图中包括以下各图:

图1是图示根据示例性实施例的用于多个区块链中的资产的原子交换的高级别系统体系架构的框图。

图2是图示根据示例性实施例的用于多个区块链中的数字资产的原子交换的图1的系统的计算设备的框图。

图3A-图3C是图示根据示例性实施例的用于在多个区块链上进行数字资产的原子交换的处理的流程图。

图4是图示根据示例性实施例的使用临时密钥对在多个区块链上进行资产的原子交换的示例性方法的流程图。

图5是图示根据示例性实施例的计算机系统体系架构的框图。

根据下文提供的具体实施方式,本公开的进一步应用领域将变得显而易见。应该理解的是,示例性实施例的详细描述仅用于说明的目的,因此并不一定旨在限制本公开的范围。

具体实施方式

专业术语

区块链-基于区块链货币的所有交易的公共分类账。一个或多个计算设备可以包括区块链网络,区块链网络可以被配置为处理和记录交易,作为区块链中的区块的一部分。一旦区块完成,该区块就被添加到区块链中,并由此更新交易记录。在许多情况下,区块链可以是按时间次序的交易的分类账,或者可以以适合区块链网络使用的任何其它次序呈现。在一些配置中,记录在区块链中的交易可以包括目的地地址和货币金额,使得区块链记录多少货币归因于具体地址。在一些情况下,交易是金融的而其它的不是金融的,或者可能包括附加的或不同的信息(诸如源地址、时间戳等等)。在一些实施例中,区块链还可以包括或者可替代地包括几乎任何类型的数据作为被放置在分布式数据库中或者需要被放置在分布式数据库中的交易的形式,该分布式数据库维持不断增长的数据记录列表防止甚至其运营商的篡改和修订,并且可以由区块链网络通过工作量证明和/或与此相关联的任何其它合适的核实技术进行确认和验证。在一些情况下,关于给定交易的数据还可以包括附加数据,这些附加数据不直接属于附加到交易数据的交易的一部分。在一些情况下,将这些数据包括在区块链中可以构成交易。在这种情况下,区块链可以不与具体的数字、虚拟、扁平或其它类型的货币直接相关联。

数字资产的原子交换的系统

图1图示了使用临时密钥对在多个区块链上进行数字资产的原子交换的系统100,这使得能够在不考虑区块链的格式化和实施方式的情况下交换资产。

在系统100中,发送者设备102和接收者设备104可能有兴趣进行在两个不同区块链上保存的数字资产的交换。如本文所讨论的,两个区块链可以是任何实施方式、格式等,其中,无论涉及的区块链的类型或实施方式如何,下面讨论的方法都可以适用,只要区块链存储数字资产即可,其中资产可以从一个所有者或控制实体转移到另一个所有者或控制实体。发送者设备102和接收者设备104可以是任何类型的计算设备,诸如下面在图2和图5中更详细讨论的,诸如蜂窝电话、智能电话、台式计算机、膝上型计算机、平板计算机、智能电视、笔记本计算机等。每个区块链可以由区块链网络(诸如第一区块链网络106和第二区块链网络110,如图1中所示)管理和维护。

每个区块链网络106和110可以分别由多个区块链节点108和112组成。每个区块链节点108和112可以是计算系统,诸如下面更详细地讨论的图5中所示,该计算系统被配置为执行与区块链的处理和管理相关的功能,包括区块链数据值的生成、提出的区块链交易的核实、数字签名的核实、新区块的生成、新区块的验证以及区块链的副本的维护。

区块链可以是至少由多个区块组成的分布式分类账。每个区块可以至少包括区块头和一个或多个数据值。每个区块头可以至少包括时间戳、区块引用值和数据引用值。时间戳可以是生成区块头的时间,并且可以使用任何合适的方法来表示(例如,UNIX时间戳、DateTime等)。区块引用值可以是引用区块链中较早区块(例如,基于时间戳)的值。在一些实施例中,区块头中的区块引用值可以是对相应区块之前的最近添加的区块的区块头的引用。在示例性实施例中,区块引用值可以是经由对最近添加的区块的区块头求散列而生成的散列值。类似地,数据引用值可以是对存储在包括区块头的区块中的一个或多个数据值的引用。在示例性实施例中,数据引用值可以是经由一个或多个数据值的散列生成的散列值。例如,区块引用值可以是使用一个或多个数据值生成的Merkle树的根。

每个区块头中使用区块引用值和数据引用值可能导致区块链不可变。对数据值的任何尝试的修改将要求为该区块生成新的数据引用值,从而这将要求新生成后续区块的区块引用值,进一步要求在每个后续区块中生成新的区块引用值。在生成新区块并将其添加到区块链之前,这必须在区块链网络中的每个单个区块链节点中执行和更新,以便使改变永久化。计算和通信限制可能使这种修改变得极其困难(如果不是不可能的话),从而使区块链变得不可变。

在一些实施例中,区块链可以被用于存储关于在两个不同区块链钱包之间进行的区块链交易的信息。区块链钱包可以包括密码密钥对的私钥,该私钥被用于生成用作付款人对区块链交易的授权的数字签名,其中数字签名可以由区块链网络使用密码密钥对的公钥来核实。在一些情况下,术语“区块链钱包”可以专门指私钥。在其它情况下,术语“区块链钱包”可以指存储私钥以供在区块链交易中使用的计算设备(例如,发送者设备102和接收者设备104)。例如,每个计算设备可以各自具有其自己的用于相应密码密钥对的私钥,并且每个计算设备可以是用于与和区块链网络相关联的区块链进行交易的区块链钱包。计算设备可以是适合存储和利用区块链钱包的任何类型的设备,诸如台式计算机、膝上型计算机、笔记本计算机、平板计算机、蜂窝电话、智能电话、智能手表、智能电视、可穿戴计算设备、可植入计算设备等。

如果适用的话,存储在区块链中的每个区块链数据值可以与区块链交易或其它数据存储对应。区块链交易可以至少包括:使用发送者的私钥生成的货币的发送者(例如,发送者设备102)的数字签名、使用接收方的公钥生成的货币的接收方(例如,接收者设备104)的区块链地址、以及转移的区块链货币金额或存储的其它数据。在一些区块链交易中,交易还可以包括发送者的当前存储区块链货币的一个或多个区块链地址(例如,数字签名证明他们可以访问此类货币),以及使用发送者的公钥为发送者要保留的任何改变生成的地址。已经发送可以在未来交易中使用的密码货币的地址被称为“输出”地址,因为每个地址之前都被用于捕获先前区块链交易的输出,也称为“未花费的交易”,因为有货币发送到先前交易中的地址,但该货币仍未花费。在一些情况下,区块链交易还可以包括发送者的公钥,供实体在验证交易时使用。对于区块链交易的传统处理,这种数据可以由发送者或接收者提供给区块链网络106中的区块链节点108或区块链网络110中的区块链节点112。节点可以使用发送者的钱包的密码密钥对中的公钥来核实数字签名,并且还核实发送者对资金的访问(例如,未花费的交易尚未被花费并被发送到与该发送者的钱包相关联的地址),这个过程称为交易的“确认”,然后将区块链交易包含在新区块中。在传统区块链实施方式中,新区块可以在被添加到区块链并且分别分发到区块链网络106中的所有区块链节点108或区块链网络110中的所有区块链节点112之前由区块链网络106或110中的其它节点验证。在区块链数据值可能与区块链交易无关,而是与其它类型数据的存储相关的情况下,区块链数据值可以仍然包括或以其它方式涉及数字签名的验证。

在系统100中,发送者设备102和接收者设备104(例如,或者控制或拥有其的实体)可能有兴趣交换存储在第一区块链网络106的第一区块链和第二区块链网络110的第二区块链上的资产。例如,发送者设备102可以在第一区块链上拥有一定金额的第一数字货币,他们有兴趣与接收者设备104在第二区块链上拥有的第二数字货币进行交换(例如,通过与其关联的区块链钱包)。在传统系统中,每个区块链网络106和110将必须配置它们相应的区块链以实现这种交换并确保资产在两个区块链上转移。

在系统100中,提议消息可以由双方(发送者设备102和接收者设备104)生成并签名,这用作对将在第一区块链和第二区块链两者上进行的如双方同意的交易的确认。提议消息可以由发送者设备102或接收者设备104生成,并且包括两个交易的交易值和网络标识符。交易值可以是将被传输到区块链节点108或112以完成用于在相应区块链上转移资产的交易的数据(例如,在一个区块链上从发送者设备102到接收者设备104以及在另一个区块链上从接收者设备104到发送者设备102)。网络标识符可以是与可以被用于识别区块链的相应区块链网络106或110相关联的唯一值。

提议消息还可以包括为原子交换而生成的密码密钥对(在本文中被称为“互换(swap)”密钥对)的公钥,其中公钥在本文中可以被称为“互换公钥”。互换密钥对可以由发送者设备102或接收者设备104生成,并且可以包括互换公钥和对应的互换私钥。在一些情况下,生成提议消息的设备可以生成互换密钥对。在其它情况下,其它设备可以生成互换密钥对并且可以将两个密钥都以电子方式传输到其它设备。

因而,提议消息可以包括互换公钥以及两个期望的区块链交易的交易值和网络标识符。生成提议消息的设备可以对提议消息进行数字签名。在一些实施例中,设备可以按预定次序使用交易值和网络标识符来生成Merkle树,并且可以对Merkle树的根进行数字签名。然后,设备可以使用互换公钥和他们自己的私钥的组合对数字签名进行加密,其中私钥例如用作他们的区块链钱包的密码密钥对的私钥,该区块链钱包可以是用于第一区块链和第二区块链两者的区块链钱包,或者是用于第一区块链或第二区块链中任一者的区块链钱包。在一些情况下,如果设备具有多于一个密码密钥对,那么可以根据一个或多个既定规则来预先确定所使用的私钥,诸如设备作为发送者的区块链交易的私钥。加密的数字签名可以被附加、头部追加或以其它方式添加到提议消息的预定位置。

然后,建议消息可以由生成设备传输到下一个设备,诸如从发送者设备102传输到接收者设备104。接收者设备104可以验证交易值和网络标识符以确保交易是正确的并且是一致同意的,以诸如确保正在转移的资产是适当的金额。如果接收者设备104(例如,或者发送者设备102,如果适用的话)对交易值和网络标识符感到满意,那么接收者设备104可以生成他们自己的用于提议消息的数字签名。可以使用与发送者设备102在为提议消息生成的第一数字签名中使用的相同的数据(例如,使用交易值和网络标识符生成的Merkle树的根)来生成数字签名。接收者设备104然后可以使用(例如,从接收到的提议消息中检索的)互换公钥和(例如,如上面所讨论的根据任何适用规则确定的)其自己的私钥来加密其数字签名。接收者设备104的加密的数字签名可以以预定方式添加到提议消息,诸如在发送者设备的加密的数字签名之后附加到提议消息的末尾。

具有两个加密的数字签名的提议消息然后可以分别被提交到第一区块链网络106中的区块链节点108和第二区块链网络110中的区块链节点112。区块链节点108和112中的每一个可以将提议消息包括在被生成并确认并添加到相应区块链的新区块中。在一些实施例中,可以为每个区块链生成单独的提议消息,其中另一个区块链的交易值可以由该交易值的散列替换。在此类情况下,为每个提议消息生成的数字签名可以由于相应提议消息中的交易值改变而不同。用散列值替换每个提议消息中的交易值之一可以导致提议消息的文件尺寸显著减小,这可以提高每个区块链的性能。

在提议消息已被添加到两个区块链之后,发送者设备102和接收者设备104中的每一个可以查看添加到每个区块链的提议消息,以诸如确保另一个实体同意这两个交易并且添加他们的数字签名。一旦提议消息已经被添加到区块链,原子交换就可以被确认,这将导致互换被执行并且资产的所有权按照指示转移。为了确认互换,设备之一(例如,发送者设备102或接收者设备104)可以生成互换确认消息。互换确认消息可以至少包括对提议消息的散列引用和互换密钥对的互换私钥。提案消息的散列引用可以是经由对添加到区块链的最终提议消息应用合适的散列算法而生成的提议消息的散列值。在每个区块链接收到不同提议消息的情况下,可以使用对适当提议消息的散列引用来为每个区块链生成单独的互换确认消息。

完成的互换确认消息然后可以被传输到适当的区块链网络106中的区块链节点108或区块链网络110中的区块链节点112,区块链节点108或112然后可以将互换确认消息包括在使用传统方法和系统生成和确认的新区块中。结果是,通过提议消息和互换确认消息,包括在提议消息中的交易值将被视为有效交易,从而数字资产将在两个区块链中进行交换。

随着互换确认消息中互换私钥的发布,任何感兴趣的实体或系统(诸如验证系统114)都可以能够验证互换。互换的验证可以包括验证包括在提议消息中的两个加密的数字签名。由于使用互换公钥和相应设备(例如,发送者设备102或接收者设备104,如果适用的话)的私钥对每个数字签名进行加密,因此可以使用互换私钥和相应设备的公钥来执行解密,密钥可以在区块链本身中获得或由设备提供。例如,验证系统114可以联系发送者设备102和接收者设备104以验证互换,其中发送者设备102和接收者设备104可以提供它们相应的公钥。验证系统114可以使用来自互换确认消息的互换私钥和来自每个设备的公钥来解密相应的数字签名,然后验证该数字签名。以这种方式,验证系统114可以验证互换以确保提议由所涉及的实体正确地签名(例如,因为用于解密签名的公钥来自在资产转移中使用的相同钱包)。如上面所讨论的使用密钥的加密和解密可以使用共享秘密来执行,诸如经由椭圆曲线Diffie-Hellman(ECDH)协议或其它椭圆曲线密码技术。例如,可以可替代地使用RSA密码系统,其中互换公钥用于加密并且互换私钥用于解密。

在一些实施例中,资产转移可以涉及多于两个实体和/或多于两个区块链。在此类情况下,提议消息可以包括用于附加资产转移的附加交易值和网络标识符,并且提议消息和互换确认消息可以根据需要被传输到用于任何附加区块链网络的任何附加区块链节点。本文讨论的方法和系统使得能够使用相同的方法进行资产的原子交换,而不管涉及的转移、实体或区块链的数量如何并且每个区块链的格式化和实施方式是不可知的。

因此,本文讨论的方法和系统提供了多个区块链中数字资产的原子交换的显著改进。因为本文讨论的方法对于区块链来说是不可知的,所以这些方法可以不加修改地应用于当前存在的涉及数字资产的成千上万的区块链中的任何一个,并且仍然适用于任何已开发的和当前尚不存在的新区块链。此外,本文讨论的方法适用于所涉及的任何数量的实体或资产转移,唯一的区别是确认消息的尺寸(例如,如上面所讨论的,对不适用于个体区块链的任何交易值使用散列值,可以以最小的文件尺寸增加来促进附加交易)。因而,本文讨论的方法和系统提供了对现有方法的显著改进,用于启用跨多个区块链的数字资产的原子交换。

计算设备

图2图示了计算设备200的实施例,诸如可以用作系统100中的发送者设备102或接收者设备104。对于相关领域的技术人员来说显而易见的是,图2中所示的计算设备200的实施例仅作为说明提供,并且可能并未穷举适于执行如本文讨论的功能的计算设备200的所有可能配置。例如,图5中示出并且下面更详细讨论的计算机系统500可以是计算设备200的合适配置。

计算设备200可以包括接收设备202。接收设备202可以被配置为经由一个或多个网络协议通过一个或多个网络接收数据。在一些情况下,接收设备202可以被配置为经由一种或多种通信方法(诸如射频、局域网、无线区域网、蜂窝通信网络、蓝牙、互联网等)从发送者设备102、接收者设备104、区块链节点108和112、验证系统114以及其它系统和实体接收数据。在一些实施例中,接收设备202可以由多个设备组成,诸如用于通过不同网络接收数据的不同接收设备,诸如用于通过局域网接收数据的第一接收设备和用于经由互联网接收数据的第二接收设备。接收设备202可以接收以电子方式传输的数据信号,其中数据可以被叠加或以其它方式编码在数据信号上,并且经由接收设备202对数据信号的接收来解码、解析、读取或以其它方式获得。在一些情况下,接收设备202可以包括解析模块,用于解析接收到的数据信号以获得叠加在其上的数据。例如,接收设备202可以包括解析器程序,该解析器程序被配置为接收所接收的数据信号并将其变换成用于由处理设备执行的功能的可用输入,以执行本文描述的方法和系统。

接收设备202可以被配置为接收由发送者设备102或接收者设备104以电子方式传输的数据信号,该数据信号可以与公钥、互换密钥对、交易值、网络标识符、提议消息或用于执行本文讨论的方法的其它数据叠加或编码。接收设备202还可以被配置为接收由验证系统114以电子方式传输的数据信号,诸如可以与公钥请求叠加或以其它方式编码以用于验证互换。接收设备202还可以被配置为接收由区块链节点108和112以电子方式传输的数据信号,该数据信号可以与区块链数据叠加或以其它方式编码,诸如用于识别提议消息何时已被成功添加到与其相关联的区块链。

计算设备200还可以包括通信模块204。通信模块204可以被配置为在计算设备200的模块、引擎、数据库、存储器和其它组件之间传输数据以用于执行本文讨论的功能。通信模块204可以由一种或多种通信类型组成并且利用各种通信方法用于计算设备内的通信。例如,通信模块204可以由总线、触针连接器、电线等组成。在一些实施例中,通信模块204还可以被配置为在计算设备200的内部组件与计算设备200的外部组件(诸如外部连接的数据库、显示设备、输入设备等)之间进行通信。计算设备200还可以包括处理设备。处理设备可以被配置为执行本文所讨论的计算设备200的功能,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,处理设备可以包括和/或由专门被配置为执行处理设备的一个或多个功能的多个引擎和/或模块(诸如查询模块214、生成模块216、验证模块218等)组成。如本文所使用的,术语“模块”可以是被特别编程为接收输入、使用该输入执行一个或多个处理并且提供输出的软件或硬件。基于本公开,本领域技术人员将清楚由各种模块执行的输入、输出和处理。

计算设备200还可以包括区块链数据206,该区块链数据可以存储在计算设备200的存储器212中或者存储在计算设备200内的单独区域中或者可由计算设备200访问。区块链数据206可以包括区块链,该区块链可以由多个区块组成并且与区块链网络106、110相关联。区块链数据206还可以包括或可替代地包括与可以由计算设备200使用的一个或多个区块链钱包相关联的任何数据,诸如密码密钥对、未花费的交易输出、数字资产量、区块链网络106和110的网络标识符、互换密钥对、签名生成算法、加密算法等。

计算设备200还可以包括存储器212。存储器212可以被配置为存储供计算设备200在执行本文讨论的功能时使用的数据,诸如公钥和私钥、对称密钥等。存储器212可以被配置为使用合适的数据格式化方法和方案来存储数据,并且可以是任何合适类型的存储器,诸如只读存储器、随机存取存储器等。存储器212可以包括例如加密密钥和算法、通信协议和标准、数据格式化标准和协议、用于处理设备的模块和应用的程序代码、以及可以适于计算设备200在执行本文公开的功能时使用的其它数据,如对相关领域的技术人员来说将是显而易见的。在一些实施例中,存储器212可以由关系数据库组成或者可以以其它方式包括关系数据库,该关系数据库利用结构化查询语言用于对存储在其中的结构化数据集的存储、识别、修改、更新、访问等。存储器212可以被配置为存储例如密码密钥、盐(salt)、随机数(nonce)、用于区块链节点108和112以及区块链网络106和110的通信信息、地址生成和验证算法、数字签名生成和验证算法、用于生成引用值的散列算法等。

计算设备200可以包括查询模块214。查询模块214可以被配置为对数据库执行查询以识别信息。查询模块214可以接收一个或多个数据值或查询字符串,并且可以基于所指示的数据库(诸如计算设备200的存储器212)执行查询字符串以识别存储在其中的信息。然后,查询模块214可以根据需要将识别出的信息输出到计算设备200的适当引擎或模块。查询模块214可以例如对区块链数据206执行查询以识别要用于加密通过提议消息生成的数字签名的公钥。

计算设备200还可以包括生成模块216。生成模块216可以被配置为生成供计算设备200在执行本文讨论的功能时使用的数据。生成模块216可以接收指令作为输入,可以基于指令生成数据,并且可以将生成的数据输出到计算设备200的一个或多个模块。例如,生成模块216可以被配置为生成提议消息、互换确认消息、数字签名、数据信号、密钥对等。

计算设备200还可以包括加密模块210。加密模块210可以被配置为使用密钥和加密算法来加密数据或解密所加密的数据,诸如可以存储在计算设备200的区块链数据206或存储器212中或者由其接收设备202接收。加密模块210可以接收数据和指令作为输入,并且可以按照指令对数据进行加密或解密,并且将结果所得的加密或解密的数据输出到计算设备200的另一个模块或引擎。加密模块210可以被配置为例如使用互换公钥和其它私钥来加密数字签名、使用互换私钥和其它公钥来解密数字签名等。

计算设备200还可以包括验证模块218。验证模块218可以被配置为执行作为本文讨论的功能的一部分的计算设备200的验证。验证模块218可以接收指令作为输入,指令还可以包括要在执行验证时使用的数据,可以根据请求执行验证,并且可以将验证的结果输出到计算设备200的另一个模块或引擎。验证模块218可以例如被配置为使用合适的签名生成算法和密钥来验证数字签名、验证交易值和本文所讨论的其它数据。

计算设备200还可以包括传输设备220。传输设备220可以被配置为经由一个或多个网络协议通过一个或多个网络传输数据。在一些情况下,传输设备220可以被配置为经由一种或多种通信方法(局域网、无线区域网、蜂窝通信、蓝牙、射频、互联网等)向发送者设备102、接收者设备104、区块链节点108和112、验证系统114以及其它实体传输数据。在一些实施例中,传输设备220可以由多个设备组成,诸如用于通过不同网络传输数据的不同传输设备,诸如用于通过局域网传输数据的第一传输设备和用于经由互联网传输数据的第二传输设备。传输设备220可以电子方式传输具有可以由接收计算设备解析的叠加数据的数据信号。在一些情况下,传输设备220可以包括用于将数据叠加、编码或以其它方式格式化为适合于传输的数据信号的一个或多个模块。

传输设备220可以被配置为以电子方式向发送者设备102或接收者设备104传输数据信号,该数据信号可以与公钥、互换密钥对、交易值、网络标识符、提议消息或用于执行本文讨论的方法的其它数据叠加或以其它方式一起编码。传输设备220还可以被配置为以电子方式向验证系统114传输数据信号,诸如可以与公钥叠加或以其它方式编码以用于验证互换。传输设备220还可以被配置为向区块链节点108和112以电子方式传输数据信号,该数据信号可以与提议消息、互换确认消息以及如本文讨论的所使用的任何其它数据叠加或以其它方式编码。

用于数字资产的原子交换的处理

图3A-图3C图示了通过使用临时密钥对(本文称为互换密钥对)在两个不同区块链上进行数字资产的原子交换的处理。

在步骤302中,发送者设备102和接收者设备104可以执行数据交换以就一对区块链交易达成一致,以促进与设备相关联的各方之间的数字资产的交换。数据的交换可以包括以下的交换:公钥、未花费的交易输出、数字签名、资产金额以及在区块链网络106和110中的每一个上处理区块链交易所必需的其它数据。在步骤302结束时,发送者设备102可以具有足够的数据以能够为两个区块链网络106和110中的每一个生成交易值,用于通过要在每个区块链上进行的区块链交易在发送者设备102和接收者设备104之间交换资产。

在步骤304中,发送者设备102的生成模块216可以生成第一区块链交易和第二区块链交易的交易值以完成数字资产的交换。在步骤306中,发送者设备102的生成模块216可以使用合适的密钥生成算法来生成互换密码密钥对。在步骤308中,发送者设备102的生成模块216可以生成用于原子交换的提议消息。提议消息可以至少包括互换密钥对的互换公钥以及交易值和两个区块链交易的网络标识符,其中网络标识符是相关联的区块链网络106或110的唯一标识符。在步骤310中,发送者设备102的生成模块216可以通过在使用两个交易值和网络标识符生成的Merkle树的根上生成数字签名来对提议数据进行签名。在步骤312中,发送者设备102的加密模块210可以通过使用互换公钥和发送者设备102的私钥(诸如用于用作用于发送者设备102的区块链钱包的密码密钥对的私钥,该区块链钱包用于正在其上执行资产转移的区块链之一)使用ECDH对数字签名进行加密。在步骤314中,发送者设备102可以将加密的数字签名附加到提议消息。

在步骤316中,发送者设备102的传输设备220可以使用合适的通信方法和系统将具有包括的加密数字签名的提议消息以电子方式传输到接收者设备104。在步骤318中,接收者设备104的接收设备202可以接收提议消息。在步骤320中,接收者设备104的验证模块218可以验证提议消息中的两个交易值和网络标识符,以确保两个区块链交易是合适的,诸如双方就数字资产的交换达成一致而言是正确的。在步骤322中,接收者设备104的生成模块216可以通过对使用交易值和网络标识符生成的Merkle树的根进行签名来生成其自己的提议消息的数字签名。在步骤324中,接收者设备104的加密模块210可以使用如接收到的提议消息中识别出的互换公钥和接收者设备104的私钥(诸如用于用作接收者设备104的区块链钱包的密码密钥对的私钥,该区块链钱包用于正在其上执行资产转移的区块链之一)对生成的数字签名进行加密。在步骤326中,这个附加的加密的数字签名可以被附加到提议消息,诸如在第一加密的数字签名之后。

在步骤328中,接收者设备104的传输设备220可以将具有两个加密的数字签名的提议消息以电子方式传输到区块链节点112(例如,接收者设备104可以将提议消息传输到用于资产交换中所涉及的每个区块链网络的区块链节点,但为了方便起见,仅在图3A-图3C中图示并在本文中讨论由区块链网络中的一个区块链网络中的区块链节点执行的动作)。在步骤330中,区块链节点112可以使用合适的通信网络和方法从接收者设备104接收提议消息。

在步骤332中,区块链节点112可以使用传统方法和系统为其区块链生成新区块,其中提议消息作为存储在其中的交易数据值被包括在新区块中。在步骤334中,可以使用传统方法和系统将新区块发布到区块链,诸如通过将新区块分发到区块链网络110中的其它区块链节点并由大多数区块链节点确认,从而被认为添加到区块链作为其下一个区块。在步骤336中,发送者设备102的接收设备202可以诸如直接从区块链节点112或其它合适的方法接收区块链上的新区块。

在步骤338中,发送者设备102的验证模块218可以验证提议消息以确保提议消息是准确的,诸如没有交易值被改变并且第二加密的数字签名已被附加到其上。在步骤340中,发送者设备102的生成模块216可以生成用于数字资产的交换的确认消息。确认消息可以包括互换私钥以及用于提议消息的引用值。在一些实施例中,引用值可以是经由对已添加到区块链的新区块中的提议消息应用散列算法而生成的散列值。在步骤342中,发送者设备102的传输设备220可以使用合适的通信网络和方法将确认消息以电子方式传输到区块链节点112。

在步骤344中,区块链节点112可以接收确认消息。在步骤346中,区块链节点112可以为其区块链生成新区块,其中新区块包括确认消息。区块可以被分发到区块链网络110中的其它区块链节点以进行确认,并且在步骤348中,可以将具有确认消息的新区块添加到区块链。通过添加确认消息,两个区块链上的区块链交易可因此被认为已经过处理,其中发送者设备102和接收者设备104中的每一个随后将已经从区块链上的另一个设备接收到数字资产。

用于多个区块链上资产的原子交换的示例方法

图4图示了经由使用临时密钥对跨多个区块链进行数字资产的原子交换的方法400,该方法对于区块链的格式化和实施方式以及所涉及的区块链和资产转移的数量是不可知的。

在步骤402中,可以由第一计算设备(例如,发送者设备102)生成(例如,由生成模块216生成)提议消息,该提议消息至少包括第一交易值、与第一区块链对应的第一网络标识符、第二交易值、与第二区块链对应的第二网络标识符、以及互换密钥对的互换公钥。在步骤404中,第一计算设备可以为提议消息生成第一数字签名。在步骤406中,可以使用第一密码密钥对的第一私钥和互换公钥对第一计算设备的第一数字签名进行加密(例如,由加密模块210进行加密)。

在步骤408中,第一计算设备可以将加密的第一数字签名附加到生成的提议消息。在步骤410中,具有附加的加密的第一数字签名的所生成的提议消息可以被第一计算设备以电子方式传输(例如,由传输设备220传输)到第二计算设备(例如,接收者设备104)。

在一个实施例中,方法400还可以包括:由第二计算设备生成用于提议消息的第二数字签名;由第二计算设备使用第二密码密钥对的第二私钥和互换公钥对第二数字签名进行加密;由第二计算设备将加密的第二数字签名附加到生成的提议消息,该生成的提议消息具有附加的加密的第一数字签名;以及由第二计算设备传输具有附加的加密的第一数字签名和附加的加密的第二数字签名的所生成的提议消息。在另一个实施例中,所生成的提议消息可以由第二计算设备传输到与第二区块链相关联的区块链网络(例如,区块链网络110)中的多个区块链节点(例如,区块链节点112)中的至少一个区块链节点。在又一个实施例中,方法400还可以包括:由第一计算设备生成确认消息,该确认消息至少包括(i)使用具有附加的加密的第一数字签名和附加的加密的第二数字签名的所生成的提议消息生成的散列值,以及(ii)互换密码密钥对的互换私钥;以及由第一计算设备将生成的确认消息传输到与第二区块链相关联的区块链网络中的多个区块链节点中的区块链节点。在还有一个实施例中,方法400还可以包括:由第三计算设备(例如,验证系统114)从第二区块链中检索所生成的确认消息和具有附加的加密的第一数字签名和附加的加密的第二数字签名的所生成的提议消息;由第三计算设备使用检索到的确认消息中的互换私钥和第一密码密钥对的第一公钥对第一数字签名进行解密;以及由第三计算设备验证解密的第一数字签名。

在一些实施例中,方法400还可以包括由第一计算设备在生成提议消息之前生成互换密码密钥对。在一个实施例中,可以通过对提议消息中的第一交易值、第一网络标识符、第二交易值和第二网络标识符进行签名来生成第一数字签名。在一些实施例中,第一交易值可以包括使用用于使用第一区块链的第一区块链交易的交易数据生成的散列值,并且第二交易值可以包括用于使用第二区块链的第二区块链交易的交易数据。

计算机系统体系架构

图5图示了计算机系统500,其中本公开的实施例或其部分可以被实现为计算机可读代码。例如,图1的发送者设备102和接收者设备104以及图2的计算设备200可以使用硬件、其上存储有指令的非暂态计算机可读介质或其组合在计算机系统500中实现,并且可以在一个或多个计算机系统或其它处理系统中实现。硬件可以实现用于实施图3A-图3C和图4的方法的模块和组件。

如果使用可编程逻辑,那么这种逻辑可以在由可执行软件代码配置的商业上可用的处理平台上执行,以成为专用计算机或专用设备(例如,可编程逻辑阵列、专用集成电路等)。本领域普通技术人员可以认识到的是,所公开的主题的实施例可以用各种计算机系统配置(包括多核多处理器系统、小型计算机、大型计算机、与分布式功能链接或集群的计算机、以及可以嵌入到几乎任何设备中的普及型或微型计算机)来实践。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。

本文讨论的处理器单元或设备可以是单个处理器、多个处理器或其组合。处理器设备可以具有一个或多个处理器“核”。如本文讨论的术语“计算机程序介质”、“非暂态计算机可读介质”和“计算机可用介质”通常用于指有形介质,诸如可移除存储单元518、可移除存储单元522和安装在硬盘驱动器512中的硬盘。

依据这个示例计算机系统500描述了本公开的各种实施例。在阅读本描述之后,如何使用其它计算机系统和/或计算机体系架构来实现本公开对于相关领域的技术人员来说将显而易见。虽然操作可以被描述为顺序处理,但是一些操作实际上可以并行地、并发地和/或在分布式环境中执行,并且程序代码可以在本地或远程存储以供单个或多个处理器机器访问。此外,在一些实施例中,在不脱离所公开的主题的精神的情况下,可以重新布置操作的次序。

处理器设备504可以是被专门配置为执行本文讨论的功能的专用或通用处理器设备。处理器设备504可以连接到通信基础设施506,诸如总线、消息队列、网络、多核消息传递方案等。网络可以是适于执行如本文公开的功能的任何网络,并且可以包括局域网(LAN)、广域网(WAN)、无线网络(例如,WiFi)、移动通信网络、卫星网络、互联网、光纤、同轴线缆、红外线、射频(RF)或其任何组合。其它合适的网络类型和配置对于相关领域的技术人员将是显而易见的。计算机系统500还可以包括主存储器508(例如,随机存取存储器、只读存储器等)并且还可以包括辅助存储器510。辅助存储器510可以包括硬盘驱动器512和可移除存储驱动器514,诸如软盘驱动器、磁带驱动器、光盘驱动器、闪存存储器等。

可移除存储驱动器514可以以众所周知的方式从可移除存储单元518读取和/或写入可移除存储单元518。可移除存储单元518可以包括可以由可移除存储驱动器514读取和写入的可移除存储介质。例如,如果可移除存储驱动器514是软盘驱动器或通用串行总线端口,那么可移除存储单元518可以分别是软盘或便携式闪存驱动器。在一个实施例中,可移除存储单元518可以是非暂态计算机可读记录介质。

在一些实施例中,辅助存储器510可以包括用于允许计算机程序或其它指令被加载到计算机系统500中的替代部件,例如可移除存储单元522和接口520。此类部件的示例可以包括程序盒和盒式接口(例如,如在视频游戏系统中找到的)、可移除存储器芯片(例如,EEPROM、PROM等)和相关联的插座,以及其它可移除存储单元522和接口520,如对于相关领域的技术人员将显而易见的。

存储在计算机系统500中(例如,在主存储器508和/或辅助存储器510中)的数据可以存储在任何类型的合适的计算机可读介质上,诸如光学存储装置(例如,光盘、数字多功能光盘、蓝光光盘等)或磁带存储装置(例如,硬盘驱动器)。可以以任何类型的合适数据库配置(诸如关系数据库、结构化查询语言(SQL)数据库、分布式数据库、对象数据库等)来配置数据。合适的配置和存储类型对于相关领域的技术人员将是显而易见的。

计算机系统500还可以包括通信接口524。通信接口524可以被配置为允许软件和数据在计算机系统500和外部设备之间传递。示例性通信接口524可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口524传送的软件和数据可以是信号的形式,其可以是电子的、电磁的、光学的或其它信号,如对于相关领域的技术人员来说将显而易见的。信号可以经由通信路径526行进,通信路径526可以被配置为承载信号并且可以使用电线、线缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。

计算机系统500还可以包括显示器接口502。显示器接口502可以被配置为允许数据在计算机系统500和外部显示器530之间传递。示例性显示器接口502可以包括高清多媒体接口(HDMI)、数字视觉接口(DVI)、视频图形阵列(VGA)等。显示器530可以是用于显示经由计算机系统500的显示器接口502传输的数据的任何合适类型的显示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显示器等。

计算机程序介质和计算机可用介质可以指存储器,诸如可以是存储器半导体(例如,DRAM等)的主存储器508和辅助存储器510。这些计算机程序产品可以是用于向计算机系统500提供软件的部件。计算机程序(例如,计算机控制逻辑)可以存储在主存储器508和/或辅助存储器510中。计算机程序也可以经由通信接口524来接收。此类计算机程序在被执行时可以使得计算机系统500能够实现本文所讨论的本方法。特别地,计算机程序在被执行时可以使得处理器设备504能够实现由图3A-图3C和图4所示的方法,如本文所讨论的。因而,此类计算机程序可以表示计算机系统500的控制器。在使用软件实现本公开的情况下,软件可以存储在计算机程序产品中并使用可移除存储驱动器514、接口520以及硬盘驱动器512或通信接口524加载到计算机系统500中。

处理器设备504可以包括被配置为执行计算机系统500的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件实现,并且在一些情况下,也可以利用诸如与存储在主存储器508或辅助存储器510中的程序代码和/或程序对应的软件。在此类情况下,在由计算机系统500的硬件执行之前,程序代码可以由处理器设备504编译(例如,由编译模块或引擎)。例如,程序代码可以是用编程语言编写的源代码,其被转换为较低级别的语言(诸如汇编语言或机器代码)以供处理器设备504和/或计算机系统500的任何附加硬件组件执行。编译的处理可以包括使用词法分析、预处理、解析、语义分析、语法导向转换、代码生成、代码优化,以及可以适于将程序代码转换成适于控制计算机系统500以执行本文公开的功能的较低级别语言的任何其它技术。对于相关领域的技术人员将显而易见的是,此类处理导致计算机系统500成为被独特地编程以执行上面讨论的功能的专门配置的计算机系统500。

除其它特征之外,符合本公开的技术提供了用于使用临时密钥对在多个区块链上进行资产的原子交换的系统和方法。虽然上面已经描述了所公开的系统和方法的各种示例性实施例,但是应该理解的是,它们的呈现仅是为了示例的目的,而不是限制的目的。它不是详尽的并且不将本公开限制于所公开的精确形式。在不脱离广度或范围的情况下,根据上述教导,修改和变化是可能的,或者可以从本公开的实践中获得修改和变化。

相关技术
  • 一种基于企业资产的区块链通证发售方法及发售系统
  • 使用区块链执行原子交换的计算机实现的系统和方法
  • 使用区块链执行原子交换的计算机实现的系统和方法
技术分类

06120116483248