1.本公开大体涉及用于提高与分布式账本相关联的交易的隐私性和安全性的方法和系统。本公开特别适合但不限于与使用公共区块链的一个或多个实体有关的数字资产的转移相关的应用,同时保持匿名性并提高与转移中涉及到的实体相关联的安全性。
背景技术:2.在本文档中,我们使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本(ledger)。这些包括基于共识的区块链和交易链技术、许可的和未被许可的账本、共享账本、公共和私有区块链及其变型。尽管已经提出并研发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本公开不限于与比特币区块链一起使用,并且与任何类型的数字资产或数字资产的表示相关联的替代区块链实现和协议都落入本公开的范围内。术语“实体”、“节点”、“用户”、“发送方”、“接收方”在本文中可以指基于计算或处理器的资源。在本文中使用术语“比特币”来包括源自或基于比特币协议的任何版本或变型。术语“数字资产”可以指任何可转移资产,例如,加密货币、表示至少一部分财产的代币(token)、智能合约、许可证(即,软件许可证)或媒体内容的drm合约等。应当理解,本文档通篇使用术语数字资产来表示可能与价值相关联的商品,该价值可以在从一个实体到另一个实体的交易中转移或作为付款提供。
3.区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,区块又由交易组成。每个交易是一种数据结构,该数据结构对区块链系统中参与者之间的数字资产的控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块到该区块的哈希值,因此区块被链接在一起来创建所有交易的永久、不可更改的记录,这些交易自其开始就已经被写入区块链中。交易包含嵌入到其输入和输出中的被称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
4.为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每个交易有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定脚本和解锁脚本来对未花费的交易(unspent transaction,utxo)执行该验证工作。如果锁定脚本和解锁脚本的执行被评估为真(true),则该交易有效,并且该交易然后被写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易
–
如果交易经过验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块中;以及iii)对该交易进行挖掘,即添加到过去交易的公共账本中。
5.一旦作为utxo存储在区块链中,用户就可以将关联的资源的控制权转移到与另一个交易中的输入关联的另一个地址。该转移通常是使用数字钱包完成的。该数字钱包可以是诸如台式机、笔记本电脑或移动终端等计算装置上的装置、物理介质、程序、应用程序(app),或是与网络工作上的域(例如,互联网)关联的远程托管服务。数字钱包存储公钥和
私钥,并且可用于跟踪与用户关联的资源、代币和资产等的所有权,接收或花费数字资产,转移可能与数字资产(例如,加密货币或许可证)、财产或其他类型的资源相关的代币。
6.公共区块链用作不可变的分布式数据存储系统,其利用密码学和经济激励措施来保证安全。区块链技术因其与数字资产相关的用途而广为人知。如上所述,与交易相关的输出或utxo被提供或存储在区块链上。因此,有权访问区块链的各方可以查看或访问这些交易,并且这些交易通常包括详细信息,例如至少一个实体的公共地址或公钥,以及数字资产或转移的资产或代币的价值的指示。虽然交易的某些元素可以被掩蔽或加密(并且通常就是这样做的),但公共分布式账本的构思在于,使用公共地址和密钥等,以便此类交易可以通过区块链网络的节点进行验证。因此,尽管实现了不可变且可验证/可审计的分布式存储,但交易(的内容)的隐私性仍然是许多利用区块链的应用和实体的关注点。此外,由于现有技术是基于(一个或多个)给定实体的公共地址或公钥的知识,因此相关实体的身份保持匿名也是一个问题。在实体针对多个交易接收或发送与数字资产或代币相关联的特定价值(即,比如销售一种类型的产品以获得固定价值的加密货币,并始终使用一个或多个已知的公钥请求这种固定价值的商家实体)的情况下尤其如此。如果恶意方可以从公共区块链中推断出此类详细信息,则此类实体可能容易受到冒充、消息重放或窃听相关攻击,这会损害实体和相关交易的安全性、匿名性和隐私性。
7.通过提出可以显著地提高与给定实体和与该实体相关的交易相关联的安全性、隐私性和匿名性的技术,本公开解决了这些技术问题。这是基于通过完全任意地对与转移有关的数据进行分区来改变与实体之间的数字资产转移有关的交易被提供/存储在公共区块链(例如,比特币区块链)上的方式和结构。这种随机性是基于也是任意执行的中间选择来实现的。
技术实现要素:8.在一个方面,本公开提出了用于将与数字资产相关联的请求分区成任意数量的交易的方法、装置和系统。该分区是基于知道或获得允许用于请求的输出的最大数量以及对任意所选整数的可能整数分区的任意选择。然后,随机所选整数分区形成确定交易和输出(utxo)的数量的基础,以便数字资产值可以在存储于公共区块链上之前在确定的utxo间任意拆分。
9.在另一方面,本公开提出了用于在任意确定数量的交易间任意分发与请求相关联的数字资产值的方法、装置和系统。这是基于任意选择数量的交易和每个请求的输出的最大数量。
10.在另一方面,本公开提出了用于生成或确定与给定实体相关联的一个或多个公共地址以用于给定实体的区块链交易的方法、装置和系统,使得这些地址可以安全且正确地与给定实体相关联,同时保持实体身份的匿名性。
11.在整个说明书中,词语“包括(comprise)”或诸如“包括(includes)”、“包括(comprises)”或“包括(comprising)”等变型将被理解为暗示包括所述元素、整数或步骤,或元素、整数或步骤的组,但不排除任何其他元素、整数或步骤,或元素、整数或步骤的组。
附图说明
12.现在将仅通过示例的方式并参考附图来描述本公开的各方面和实施例,其中:
13.图1a是描绘了根据第一方面的用于将与数字资产相关联的请求分区成任意数量的交易的方法的流程图,该方法由与数字资产付款的接收方相关联的一个或多个处理器执行。
14.图1b是描绘了根据第一方面的用于将与数字资产相关联的请求分区成任意数量的交易的方法的流程图,该方法由与数字资产付款的发送方相关联的一个或多个处理器执行。
15.图2是示出了每个整数k的可能整数分区的数量的表,其中,1≤k≤n且n=50。
16.图3是描绘了与第一方面相关联的请求的任意所选m个交易的示意图,每个交易具有最大n个输出。
17.图4a是描绘了根据第二方面的用于在任意选择数量的交易上分发请求或与请求相关联的数字资产的值的方法的流程图,该方法由与数字资产付款的接收方相关联的一个或多个处理器执行。
18.图4b是描绘了根据第二方面的用于在任意选择数量的交易上分发请求或与请求相关联的数字资产的值的方法的流程图,该方法由与数字资产付款的发送方相关联的一个或多个处理器执行。
19.图5是描绘了针对给定请求生成的任意所选m个交易的示意图,每个交易与n个输出相关联,其中,1≤n≤n。
20.图6是描绘了根据第三方面的针对实体安全地生成多个公共地址以用于公共区块链中的一个或多个utxo的方法的流程图,该方法由与数字资产付款的发送方或接收方、或受信任的第三方相关联的一个或多个处理器执行。
21.图7是示出了可以实现本公开的各个方面和实施例的计算环境的示意图。
具体实施方式
22.根据第一方面,本公开提供了一种将与数字资产相关联的请求分区成与分布式账本有关的一个或多个交易的计算机实施的方法,每个交易具有与请求相关联的一个或多个输出,该方法由与接收方相关联的一个或多个处理器实施,其中,该接收方可以是计算资源或节点或实体,其可以与数字钱包相关联。在一些实施例中,该请求可以是付款请求,或者是指示需要与数字资产的值或数量相关联的付款的触发或消息。该方法包括获得用于与接收方相关联的请求的可能的输出的最大数量n的步骤。在一些实施例中,输出的最大数量n是针对请求或接收方预定的。在一些实施例中,输出的最大数量(n)可以是与请求相关联的所有交易的总的最大输出。在一些实施例中,输出的最大数量n与接收方的公共地址有关。例如,接收方或接收方的钱包决定将n应用于所有请求,或者可以基于请求的一个或多个特性来任意选择n。例如,在与不满足阈值的请求相比时,针对数字资产的满足阈值的请求可以具有不同的n值。然后,对于每个整数k(其中,1≤k≤n),确定所有可能的整数分区。然后从请求的可能整数分区中任意选择整数分区。
23.第一方面的方法包括基于所选整数分区生成一个或多个(m')交易模板tx'。在一些实施例中,接收方提供的交易模板包括发送方或另一个实体向接收方进行数字资产付款
所需的所有详细信息,例如,输出脚本(utxo)中接收方的公钥或地址,以及数字资产的值和基于现有公钥基础设施(pki)协议所应用的任何数字签名。该方法包括在与一个或多个生成的交易模板tx'相关联的输出间拆分与数字资产相关联的值,并为或向发送方提供一个或多个生成的交易模板tx'。例如,请求的数字资产可以是bsv中的加密货币付款。在一些实施例中,交易模板tx'可以直接发送到与发送方相关联的处理器或钱包。在其他实施例中,可以将模板发送到可与发送方相关联的付款服务,或者可以将模板存储在区块链(即,分布式账本)上以供发送方检索。
24.在一些实施例中,该方法包括基于来自发送方的一个或多个生成的模板tx'接收一个或多个已完成交易tx的步骤。然后接收方可以将已完成交易提交给分布式账本。在一些实施例中,该提交可以在使用pki技术的已知验证方法之后发生。
25.有利地,通过将交易模板或类似机制用于提供输出脚本以接收数字资产,第一方面的上述方法实现了请求数字资产付款的过程的完全随机化。从任意数量的可能分区中进行任意选择显著地降低了这些交易被追溯回特定实体或与特定实体相关联的可能性,从而提高了对应的交易在区块链上发布时的隐私性。有利地,该方法还提高了接收方的匿名性,这进而又针对恶意方提供了更大的安全性,该恶意方考虑通过窃听来标识或拦截接收方在区块链上的交易进行攻击。这可能是为了观察交易输出地址或与请求相关联的数字资产值或已知分发中的模式。考虑到来自接收方实体的单个请求的交易模板和输出的随机数量,恶意方通过观察区块链进行这种推断现在将非常困难。该方法还提供了针对mitm或消息重放攻击的安全性,这可能涉及恶意方冒充中间的发送方或接收方来改变或拦截两个对应方之间的某些数据。这是因为现在会很难将基于任意生成的交易模板的交易关联到给定实体或节点。
26.第一方面的方法也可以通过与发送方或者在某些情况下与第三方实体相关联的一个或多个处理器实施,该第三方实体可以与能提供服务以实施本公开的第一方面的方法的发送方相关联。在这种情况下,响应于接收到进行与接收方相关联的数字资产付款的请求或触发,发送方执行该方法。在一些实施例中,该请求可以从接收方接收,或者可以通过与发送方相关联的一个或多个处理器或数字钱包在指示从该接收方购买一个或多个商品或服务的意图之后自动生成。与上述方法一样,获得用于与接收方相关联的请求的可能的输出的最大数量(n)。对于每个整数k(其中,1≤k≤n),确定可能的整数分区,并从确定的可能整数分区中为请求任意地选择整数分区。然后,发送方基于所选整数分区生成一个或多个交易tx。然后,该方法包括在与一个或多个生成的交易相关联的输出间拆分与数字资产相关联的值,其中,每个输出与公共地址或公钥有关,该公共地址或公钥与接收方相关联。
27.上述方法与接收方实施的第一方面的方法的不同之处在于,直接为请求生成交易,该交易可以提供给公共区块链,而不需要交易模板。由于发送方在实施用于进行针对接收方实体的付款的方法,因此不需要模板。第一方面的上述方法在由发送方实施时提供了上述第一方面的所有优点,并且附加地提供了以下优点:实现或促进了为一个或多个接收方或节点提供这种分区,这些接收方或节点可能无法或可能没有资源来生成如上所述的交易模板。此外,在许多商家供应链中,发送方可能是从小型供应商(接收方)进行购买的大型实体。在这种情况下,发送方则可以将该方法实施为对较小型且计算复杂度较低的供应商或接收方的付款安全服务。此外,通过使该方法能够由发送方端或接收方端处的处理器执
行,可以基于为接收方实体指定的一个或多个要求来实现数字资产付款的互操作性。
28.在一些实施例中,接收方或发送方可以是与一个或多个计算资源、用户终端或与计算资源相关联的应用相关或由其实施的实体。在一些实施例中,通常每个实体(发送方或接收方)可以与数字钱包相关联,或者可以是与数字钱包相关联的实体,例如具有数字钱包或安装有数字钱包的应用的用户终端。尽管本公开的各方面和实施例涉及接收方实体数字钱包或发送实体数字钱包,但应理解,不具有数字钱包或用于数字钱包的单独应用,但被配置为提供作为数字钱包进行操作或与数字钱包一起操作或与数字钱包类似的功能的实体也在本公开的范围内。仅为了便于解释,以下描述涉及接收方和发送方,并且本公开决不限于具有数字钱包的实体。
29.当由发送方实施时,在一些实施例中,第一方面的方法还包括基于所选整数分区来生成或确定与接收方相关联的一个或多个公共地址,一个或多个公共地址中的给定公共地址被分配给一个或多个生成的交易中给定交易tx的给定输出。如果接收方是计算不复杂的实体,则该实施例有利地实现了在不同的实体处执行用于安全接收付款的公共地址的生成,从而接收方和交易可以受益于提高的安全性、隐私性和匿名性的优点。
30.在一些实施例中,当由发送方实施时,该方法包括向接收方发送一个或多个生成的交易tx。在一些实施例中,生成的交易可以包括与发送方相关联的数字签名,该数字签名可以在接收方端进行验证。这是有利的,因为现在向接收方提供了向区块链进行提交的责任,并且接收方意识到已针对付款请求完成的交易。在其他实施例中,生成的交易tx可以由发送方提交给分布式账本,使得utxo被置于区块链并因此可见,而不是将其发送给接收方。
31.以下实施例涉及在区块链上任意数量的交易和/或输出上对请求进行随机分区的第一方面,并且涉及由接收方或发送方实施时的方法。如上所述,与生成交易模板相关的实施例与接收方实现方式相关,而与交易生成相关的实施例与发送方实现方式相关。
32.在一些实施例中,生成的交易模板的数量m'或生成的交易的数量m是基于所选整数分区中的整数的数量。在一些实施例中,生成的给定交易模板tx'或交易tx中输出的数量是基于在与给定的交易tx或模板tx'相关的所选整数分区中相应位置处的整数的值。例如,如果n=5并且与整数k=3相关的任意所选整数分区是2+1,这意味着存在两个交易/模板txid1和txid2,其中,txid1具有针对接收方的两个输出,而txid1具有一个输出。下面结合图1a和图1b进一步描述该实施例。
33.有利地,上述实施例详细说明了关于如何基于仅知道一个值(即,与接收方相关联的请求的输出的最大数量n)来任意选择交易和输出的结构和粒度的实现细节。输出与接收方的公钥或地址相关联。
34.在一些实施例中,该方法包括获得允许用于请求或接收方的交易模板的最大数量m'
max
或交易的最大数量m
max
。
35.这有利地确保了处理资源的优化,从而减少了具有太多交易的开销,同时仍然通过第一方面的随机分区而获得了为接收方提供的提高的安全性、隐私性和匿名性这一益处。
36.在一些实施例中,该方法包括获得用于请求或接收方的交易模板的最小数量m'
min
或交易的最小数量m
min
和/或输出的最小数量n
min
。
37.这有利地避免了要考虑的琐碎的整数分区的可能性,琐碎的整数分区可能导致出
现和表现得像正常或现有的区块链交易的交易,例如具有一个输出的单个交易。
38.在一些实施例中,生成的给定交易模板tx'或交易tx中的每个输出与接收节点的不同公共地址相关联,该公共地址是相应的输出所特定的。
39.这有利地确保了每个输出与接收方的不同公钥或地址相关联,这辅助提高了接收方的安全性和匿名性,因为同一接收方和同一请求的交易将显得更加随机且与试图观察和标识特定请求或接收方的交易的恶意方不相关。
40.当第一方面的方法由接收方实施时,则由发送方实体的一个或多个处理器执行以完成数字资产付款的方法包括获得或标识与请求相关联的一个或多个交易模板tx'的步骤,该模板tx'与接收方相关联并且基于如上所述的由接收方实施时的第一方面和相关实施例的方法而生成。该方法还包括完成一个或多个模板tx'以创建用于付款的对应区块链交易tx,并将对应交易tx提供给发送方以提交给区块链,或者可替代地,将对应交易提交给分布式账本。
41.当第一方面的方法由发送方实施时,则由数字资产付款的接收方的一个或多个处理器执行的方法包括提供与发送方相关联的请求的步骤。在一些实施例中,这可以是在链上或链外发送给发送方的单独的消息或指示符。该方法包括从发送方接收一个或多个已完成交易tx,该一个或多个已完成交易是基于由发送方实施时的第一方面和实施例的方法而生成;以及,然后将已完成交易提交到分布式账本。
42.根据第二方面,本公开提供了一种在与分布式账本有关的一个或多个交易上分发请求的计算机实施的方法,每个交易具有与该请求相关联的一个或多个输出,该方法通过与接收方关联的一个或多个处理器来实施。该方法包括获得与请求相关联的值l的步骤,其中,该值代表接收方请求的数字资产。该方法包括获得与请求相关联的预定数量m'的交易模板,其中,m'个模板tx'与和请求或接收方有关的预定最大数量n的输出相关联,m'个交易模板tx'中的给定交易模板tx'具有n个输出,其中,n≤n。在一些实施例中,该获得的步骤是基于由接收方实施时的第一方面的方法以获得n和m'。然后,第二方面的方法包括任意生成值l的n-1个值分区u
(i=1到(n-1))
,并且以值的升序顺序对n-1个值分区进行排序0<u
(1)
<u
(2)
<
…
<u
(n-1)
<l,其中,u
(0)
=0,并且其中u
(n)
=l。然后,该方法包括对于i=1到n,基于经排序的顺序中相应的(第i个)值分区与前一值分区之间的差xi=u
(i)-u
(i-1)
,计算预定数量m'的交易模板中给定交易的值x
(i=1到m
′
)
。
43.除了针对第一方面讨论的优点之外,第二方面的方法进一步有利地提高了隐私性和接收方保持匿名的几率。将数字资产的值任意拆分成随机面额以包括在上述第二方法中任意生成的多个交易中,使观察方或恶意方难以基于与用于接受数字资产付款的接收方相关联的数字资产的值或常用或先前使用的面额的知识或推断,而将区块链交易与接收方相关联。这进而又进一步提高了区块链上交易的安全性,因为现在恶意方很难通过查看区块链中给定交易的输出值来猜测或计算任何含义或来源身份。
44.在一些实施例中,第一方面的方法和第二方面的方法可以由接收方组合并实施,其中,第一方面的拆分步骤可以通过第二方面的步骤来实现。
45.第二方面的方法也可以由与发送方相关联的一个或多个处理器来实施。在这种情况下,通过响应于接收到进行与接收方相关联的数字资产付款的请求或触发,来执行该方法。在这种情况下,由发送方实施的方法包括获得与请求相关联的值l,其中,该值代表数字
资产;以及获得与请求相关联的预定数量m的交易,m个交易tx与和请求或接收方有关的预定最大数量n的输出相关联,m个交易tx中的给定交易tx具有n个输出,其中,n≤n。在一些实施例中,获得步骤是基于在多个交易和输出上对请求进行任意分区的方法来执行的,如在由发送方实施时的第一方面中所解释的那样。如关于第一方面所讨论的那样,发送方实现方式与接收方实现的不同之处在于,考虑到是发送方将针对接收方的请求进行分区,不需要交易模板tx。第二方面的方法包括任意生成值l的n-1个值分区u
(i=1到(n-1))
,以及以值的升序顺序对n-1个值分区进行排序0<u
(1)
<u
(2)
<
…
<u
(n-1)
<l,其中,u
(0)
=0,并且其中,u
(n)
=l。然后,该方法包括对于i=1到n,基于经排序的顺序中相应的(第i个)值分区与前一值分区之间的差xi=u
(i)-u
(i-1)
,计算预定数量m的交易中给定交易的值x
(i=1到m)
。
46.发送方实现方式提供了与上面针对接收方实现方式所讨论的第二方面相关联的相同优点。此外,与第一方面类似,这种实现方式有利地允许计算不复杂的接收方确保针对其的付款交易的隐私安全性和匿名性仍然可以从另一个实体来实现,该另一个实体可以代表计算不复杂的接收方将任意分区实施成请求的交易。
47.根据第二方面,本公开提供了一种用于生成与接收方相关联的多个公钥的计算机实施的方法,每个公钥与和接收方相关联的一个或多个交易的一个或多个区块链交易输出(utxo)相关联,该方法由一个或多个处理器实施,该一个或多个处理器可以与数字资产付款的发送方或接收方或与受信任的第三方相关联。该方法包括基于与接收方相关联的私钥sb和代码c获得父公钥pb的步骤,在一些实施例中,该代码c与接收方相关联并且可以是链码。该方法包括导出多个(n个)子公钥p
bi(i=1到n)
,每个(第i个)子公钥是基于相应导出的子秘密密钥s
bi(i=1到n)
。在第三方面,每个导出的子公钥p
bi
表示导出的公共地址,该公共地址特定于可以与接收方相关联的一个或多个区块链交易输出(utxo)。
48.在一些实施例中,父公钥和/或私钥是稳定的椭圆曲线数字签名算法(ecdsa)密钥,即,secp256k1曲线上经过压缩和十六进制编码的有效点。在这种情况下,在一些实施例中,父公钥pb可以基于pb=sb·
g来导出,其中,g是生成器或比特币生成器的椭圆曲线上的基点,或者其中,g是已知常数。在一些实施例中,然后可以基于以上利用安全哈希算法来导出对应的(第i个)子公钥和子秘密密钥。下面结合图6讨论这种导出。
49.有利地,根据第三方面的方法实现了安全地创建由链接到给定实体的公钥表示的多个公共地址。在上述情况下,这将是数字资产付款的接收方。这确保了接收方可以基于父密钥(sb)和代码(c)在区块链上容易地标识或确定这些地址。当基于第一方面和/或第二方面中的请求在区块链上标识经任意分区的交易时,这是特别有利的。根据第三方面导出的地址可以用于与针对经分区的请求所生成的交易相关联的输出。然后,有利地,这提供了能够有效地将这些任意生成的交易链接到共同因子(即,接收方)的机制。这在授权方希望确定哪些经分区的交易与接收方相关时特别有用。这可以通过基于上述方法导出和查找地址来完成。
50.在一些实施例中,如果有必要将这种导出仅限于接收方,则子密钥对的强化也可以作为附加的安全特征来实现。有利地,在子体经强化的情况下,子私钥和链码c的知识不足以重构父体的私钥。除了接收方之外,没有实体能够构造子地址,因为只有接收方会知道父私钥sb。
51.在子密钥对未经强化的实施例中,如果出于进一步的验证目的或作为双重检查或
备份需要的话,则具有公钥pb和链码c的知识的任何实体都可以代表接收方(例如,诸如发送方或受信任的第三方实体等)构造导出的子地址。这确保了可以确定与任意分区的请求相关的交易。这是因为其他实体在被安全地提供上述详细信息时也可以以链接到接收方的方式来构造公共地址。在结果是接收方本身可能已被恶意方损害或攻击的情况下,这可以是用于确定与接收方相关联的交易的有用备份机制。
52.在一些实施例中,根据第三方面的链接的公共地址的导出还可以基于与请求相关联的消息m。该请求可能与在第一方面和第二方面中已被分区的请求有关。在这种情况下,地址的导出也需要知道消息m。以下将描述关于如何进行这种导出的详细信息。
53.除了上面针对第三方面讨论的优点之外,根据该实施例,接收方或另一个实体现在可以基于父私钥和代码c来标识可能已经用于区块链上的特定请求m的所有公共地址。如果链码c是与另一个实体(例如,发送方)共享的,则发送方也可以使用它来导出公共地址。此外,请求m的哈希也可以利用受信任的第三方或权威机构来发送或存储,以进行保管(连同接收方的父公钥),例如用于灾难恢复目的或提供附加的安全层-以防接收方节点已被恶意方攻击或损害。这是因为基于m的导出为与来自接收方的请求相关联的所有交易都提供了可验证的链接。
54.在一些实施例中,代码c是作为接收方的秘密的链码或接收方私有的链码,并且其中,链码c可选地是与接收方相关联的秘密种子的安全哈希。在这种情况下,只有接收方将能够执行第三方面的方法来导出接收方或请求的公共地址。
55.在一些实施例中,代码c是与另一个实体共享的链码,其中,另一个实体是与接收方的请求相关联的数字资产的发送方,或者其中,另一个实体是与接收方或发送方相关联的受信任的第三方。在这种情况下,公共地址可以由其他方以及接收方来导出。
56.在一些实施例中,代码c与由接收方和另一个实体共享的秘密s相关联,并且其中,秘密s基于已知或预定的安全密钥交换协议在接收方与另一实体之间共享,该安全密钥交换协议是基于发送方的父公钥pa和接收方的父公钥pb。在一些实施例中,共享秘密s可以是加密的。
57.除了针对第三方面讨论的所有上述优点之外,基于发送方和接收方共同的共享秘密的密钥导出确保了与接收方相关联并链接到给定消息m的给定发送方的所有区块链交易都可以根据需要进行标识和验证。此外,如果导出的公钥没有经过强化,则发送方还可以基于给定消息m的接收方的导出公钥来确定和验证交易。
58.在一些实施例中,提供了一种计算装置,该计算装置包括处理器和存储器,该存储器包括可执行指令,该可执行指令由于被处理器执行而使装置执行以上讨论的各方面和/或实施例。
59.在一些实施例中,提供了一种其上存储有可执行指令的计算机可读存储介质,该可执行指令由于被计算系统的处理器执行而使计算系统执行以上讨论的各方面和/或实施例的方法。
60.现在参照附图通过说明的方式描述一些具体实施例,在附图中相同的附图标记指代相同的特征。
61.第一方面-接收方实现方式
62.图1a是描绘了根据第一方面或本公开的将请求分区成与分布式账本有关的一个
或多个交易的方法的流程图,如由与接收方相关联的一个或多个处理器所实施,该请求与数字资产相关联。
63.仅作为示例,并且为了辅助描述和说明,让我们考虑一个场景,其中发送方(a代表爱丽丝)从接收方(b代表鲍勃)购买商品或服务。然后,接收方鲍勃将向发送方发送针对3bsv的请求。在该场景中,请求是交易模板tx'的形式,鲍勃已经为该交易模板填充了一些输出,一旦爱丽丝填充了她的输出,交易模板将成为交易。模板的现有形式可以示意性地描述为:
[0064][0065]
在上述交易模板中,鲍勃已插入了与其关联的一个输出地址其输出值为3bsv。
[0066]
在该场景中,让我们假设爱丽丝在其地址处具有值为4bsv的一个utxo。然后,爱丽丝可以将其插入到交易模板的输入中,并且在输出中,在她的另一个地址处向自己发送1bsv作为找零(余额金额)。交易现已完成,并且示意性地如下给出
[0067][0068]
以上示出了基于请求的标准交易,该请求可以是发票或消息,请求付款数字资产,例如,bsv或任何其他加密货币。为了清楚和便于引用,下文将引用bsv,但本公开不限于此。
[0069]
如上所述,如果在观察交易的恶意方从鲍勃通常收取的3bsv的值或从表示鲍勃通常用于接收货物付款的公共地址的公钥进行推断,则恶意方可能推断出鲍勃的身份,从而损害鲍勃的匿名性,以及与鲍勃相关联的交易的隐私性,爱丽丝也可能如此-特别是在爱丽丝定期使用同一公共地址从鲍勃购买相同商品的情况下,因为这些公共地址和密钥在区块链上被掩蔽。整体安全性也可能受到损害,因为一旦知道了节点的身份,恶意方就可以出于恶意目的通过监听或收集与鲍勃相关的信息来执行窃听方攻击。这方面的示例是消息重放攻击,其中攻击方窃听、获得消息或交易的副本,并且然后在晚一点的时间重新使用该消息以试图欺骗正在使用的任何加密协议认为消息或交易可能源自原始商家或接收方(即,鲍勃)。恶意方还可能通过冒充真实方并且甚至篡改消息或交易来执行中间人攻击。
[0070]
通过修改交易模板tx'的结构,本公开的第一方面克服了与涉及来自鲍勃(即,数字资产的接收方)的付款请求的现有交易有关的匿名性、隐私性和安全性的缺乏的上述缺点。当由接收方或接收方的钱包(鲍勃的钱包)的一个或多个处理器实施时,现在将在下面
关于图1a讨论这一点。
[0071]
步骤102a描绘了获得用于与区块链相关联的请求(该请求与鲍勃有关)的可能的输出的最大数量n(即,针对给定请求的与鲍勃相关联的公共地址的最大数量)的步骤。这可以是针对所有与数字资产相关的请求或与鲍勃相关的真实交易预先设置的,或者可以针对每个请求任意设置为不同数字。在一些实施例中,还可以获得允许的最大或最小数量的交易,或每个允许的交易的输出的最小数量,以控制提交给区块链的交易的粒度。然而,这不是必需的。只有输出的最大数量n是接收方所需的必要参数。
[0072]
步骤104a描绘了针对给定整数k,检查1≤k≤n是否成立的步骤。如果该条件为真,则该方法进行到步骤106a。否则,该方法进行到步骤112a。
[0073]
步骤106a描绘了(其中,1≤k≤n)针对每个整数k确定可能的整数分区。整数分区是(无序)数字的不同组合,这些数字相加得出k。例如,k=3和k=4的整数分区为:
[0074]
3,4,
[0075]
2+1,3+1,
[0076]
1+1+1,2+2,
[0077]
2+1+1,
[0078]
1+1+1+1。
[0079]
我们看到3有3个可能的整数分区而4有5个可能的整数分区。
[0080]
整数分区的数量不是线性扩展的。图2中的表列出了每个整数k≤50的可能的分区数量。
[0081]
步骤108a和步骤110a表示针对每个整数k递增地执行步骤106a,其中,只要k+1≤n,接下来就执行k=k+1。
[0082]
步骤112a描绘了从针对请求确定的可能的整数分区中任意选择整数分区n的步骤。因此,在该步骤中,从满足1≤k≤n的每个k的所有可能的分区中均匀地随机选择或挑选单个整数分区。例如,如果我们考虑n=4,则从k为1、2、3和4情况下的所有分区中选择分区。根据图2中的表,这意味着将有5+3+2+1=11个可能的分区可供选择。对于该示例,让我们考虑对于所选整数k=4而言,2+2是完全任意选择的选定整数分区,在这种情况下,k=n也是输出的最大数量。
[0083]
步骤114a描绘了基于在步骤112a中选择的整数分区(即,2+2)生成一个或多个(即,m'个)交易模板tx'的步骤。生成的交易模板的数量m'是基于所选整数分区中整数的数量,并且生成的m'个交易模板tx'中给定的交易模板tx'中输出的数量是基于所选整数分区中相应的位置处整数的值。该步骤描述了基于所选整数分区生成m'个交易模板tx',其中每个模板tx中总共有n个实际输出,其中,n≤n。因此,这会产生m'个交易模板,每个交易模板总共有n个输出,其中,n≤n。按照上面的示例,对于两个txid,接收方鲍勃的每个交易中输出的实际数量n将是n=2。因此,任意选择的分区可以表示为n1+
…
+nm=n,其中,当n是对应于所选整数分区的整数k时,m=m'个交易模板,其中,1≤m≤n≤n。因此,每项都被解释为限定具有ni个输出的交易。也就是说,将构造m=m'个交易模板,并且对于1≤i≤m,第i个交易或交易i将具有ni个输出。该输出在图3中大体地且示意性地表示。
[0084]
在所选分区是2+2的如上示例中,这意味着m=2,因为在所选分区中存在两个整数,这意味着将为请求生成两个交易模板。这也意味着每个模板都具有2个实际输出n,每个
实际输出都与鲍勃(接收方)相关。在一些实施例中,这些输出中的每一个将与表示鲍勃的公共地址的公钥pb相关联,并且在一些实施例中,每个地址将不同于鲍勃的其他地址。基于本文稍后描述的图6,关于本公开的第三方面详细讨论了用于安全地导出实体的公钥的技术。
[0085]
步骤116a描绘了在与来自上述步骤106a的一个或多个生成的交易模板tx'相关联的输出间拆分与数字资产相关联的值的步骤。在上面的示例中,该值为3bsv。下面关于图4a和本公开的第二方面详细解释任意拆分值并将其分发在四个输出(每个交易txid1和txid2中两个输出)间的方法。目前,考虑任意拆分值3bsv,来自步骤114a的m'个交易模板tx',其中,对于任意选择的分区2+2,m'=2,其中,对于m'个模板中的每一个,输出的实际数量n=2,并且其中,针对同一请求(即,在需要来自爱丽丝的3bsv的付款的情况下),k=n=4现在示意性地如下示出:
[0086][0087][0088]
因此,代替鲍勃的一个交易中的付款的一个输出地址,该步骤导致为请求生成m'=2个交易模板,每个交易模板具有2个输出,每个输出与鲍勃的不同公共地址相关联,所有同时匹配n=4的条件。
[0089]
步骤118a描绘了向发送方(爱丽丝)提供由鲍勃在前一步骤中生成的一个或多个生成的交易模板tx'的步骤。尽管图1a中未示出,但发送方爱丽丝也可能希望根据需要将每个交易模板的多个地址用于她自己,并且因此可以完成请求的交易模板,以为区块链创建完整的交易。然而,在本实施例中,输出的最大数量n与接收方的输出有关,并且不包括爱丽丝的输出。下面示出了对于接收方地址/输出而言满足n=4(即,接收方为请求设置的要求)的已完成交易,其中,鲍勃使用k=n=4个地址,而爱丽丝将8个地址用于从爱丽丝到鲍勃的3bsv付款。
[0090]
[0091][0092][0093]
相比于与公共区块链上的数字资产付款相关联的标准现有交易,上述具有小于或等于n的为鲍勃任意选择的输出的任意选择的m'个交易,使得单个发票更难在公共区块链上被标识出并且被归因于爱丽丝或鲍勃。
[0094]
取决于交互的性质,爱丽丝可以将已完成交易交给鲍勃,鲍勃然后将其提交给区块链或分布式账本。在替代实现方式中,爱丽丝可以自己将交易提交给网络。无论哪种方式,双方都可以检查交易已被矿工接收和验证,并最终被挖掘到区块链中。验证和挖掘过程超出了本公开的范围,并且将不在此讨论。然而,应当理解,可以使用已知的针对区块链的验证、提交和挖掘交易的技术,并且如此设想用于本公开的各方面和实施例。
[0095]
第一方面-发送方或受信任的第三方实现方式
[0096]
图1b是描绘了根据本公开的第一方面的对请求进行分区的方法的流程图,如通过与发送方(即,与付款3bsv给鲍勃(接收方)的上述示例场景相关的爱丽丝)相关联的一个或多个处理器所实施的。如上所述,通过与发送方或实际上是受信任的第三方相关联的一个或多个处理器实施用于对请求进行分区的第一方面的方法,从而将请求在多个交易和输出上进行拆分,这对于计算不复杂的、可能无法应对与实施该方法本身相关联的处理的接收方而言是有利的。为了便于引用,本文讨论了通过与发送方相关联的一个或多个处理器或数字钱包进行的实现方式。
[0097]
在步骤102b中,从接收方或代表接收方接收付款请求。在上面的示例中,这可能是爱丽丝从鲍勃那里购买的商品或服务应付款3bsv的通知或消息。在一些实施例中,请求可以表示发票。
[0098]
步骤104b至步骤114b将由发送方爱丽丝分别以与步骤102a至步骤112a中所述相同的方式来实施,但由发送方来实施。因此,这里不再重复这些步骤,以避免重复第一方面的相同概念。
[0099]
步骤116b描绘了基于所选整数分区生成一个或多个交易tx的步骤。该步骤也类似于关于114a所讨论的实现方式,但不是m'个交易模板,而是在发送方实现方式中可以为请求直接生成m个交易。这是因为在该实现方式中,没有从接收方发送任何输入或模板。这也
在上面在与第一方面相关联的相关实施例中进行了讨论。在一些实施例中,该方法还包括导出与接收方鲍勃相关联的一个或多个公共地址或公钥。由发送方或受信任的受托方安全地实施这种导出的过程将结合图6中的第三方面进行讨论。
[0100]
在步骤118b和120b中,分别以在步骤116a和118a中讨论的方式来执行在与一个或多个生成的交易相关联的输出间拆分与数字资产相关联的值,但由发送方来实施。一旦已经创建了m个已完成交易,发送方就可以将其提交给公共区块链,或者以安全的方式将其发送给接收方以提交给区块链。
[0101]
第二方面-接收方实现方式
[0102]
图4a是描绘了根据第二方面或本公开的在多个交易输出上分发与请求相关联的值的方法的流程图。该请求与数字资产相关联。根据与第一方面相关的同一场景,数字资产为bsv,并且值为3。在该图中,该方法通过与接收方(鲍勃)相关联的一个或多个处理器或数字钱包来实施。在一些实施例中,第二方面的方法用于实现在步骤116a中对交易的值进行拆分的步骤。
[0103]
步骤402a描绘了获得与请求相关联的值l的步骤,其中,该值表示数字资产,例如bsv,但不限于此。
[0104]
步骤404a描绘了获得与请求相关联的预定数量m'的交易模板的步骤。如关于第一方面所解释,每个交易模板tx'与和请求有关的预定最大数量n的输出相关联,这些输出与接收方相关联。在一些实施例中,该步骤与图1a的步骤102a至114a相关,使得其在图1a的步骤102a至114a之后或包括图1a的步骤102a至114a,以获得m'个交易模板,m'个交易中的每一个都具有与鲍勃(即,接收方)相关联的n个实际输出,其中,n≤n。
[0105]
步骤406a描绘了任意生成值l的n-1个值分区u
(i=1到(n-1))
的步骤。因此,如果取n为4,则值的3个分区(在这种情况下,即l=3)是随机生成的。这可以是0.1或0.5等任意面额。
[0106]
在一些实施例中,涉及发送方实现方式和接收方实现方式,任意生成n-1个数的步骤包括均匀地随机生成n-1个数,精度为10-8
(u1,u2,...,u
n-1
∈(0,1))。
[0107]
有利地,第二方面的方法可以适用于基于要转移的加密货币和数字资产的不同度量和精度单位。在上述实施例中,示出了基于中本聪(satoshis)到bsv(bitcoin satoshi vision,比特币中本聪愿景)的度量,因为最小单位是1satoshi-10-8
bsv,其中,satoshi是大约0.00000001bsv中的最小帐户单位。以太坊或瑞波币可能具有不同的精度度量。
[0108]
在步骤408a中,以值的升序顺序对n-1个值分区进行排序0<u
(1)
<u
(2)
<
…
<u
(n-1)
<l,其中,u
(0)
=0,并且其中,u
(n)
=l。可以考虑其他排序顺序,或者顺序可以是随机的。
[0109]
步骤410a描绘了为预定数量m'的交易模板中的每个给定交易模板计算值x
(i=1到m
′
)
的步骤。该值是经排序的顺序中相应的(第i个)值分区与前一值分区之间的差而计算的。这通过xi=u
(i)-u
(i-1)
(其中,i=1到n)来描绘。
[0110]
步骤412a描绘了包括x的计算值以完成每个模板、形成已完成交易并将已完成交易发送给发送方或将已完成交易提交给区块链的步骤。
[0111]
考虑上面讨论的示例,先使用第一方面的方法将请求分区成任意数量的交易和输出,然后使用第二方面的方法任意拆分请求的值,这导致请求被拆分成m=2个交易,每个交易有n=2个输出,其中,与接收方关联的输出总数n不超过4,如前所述。
[0112]
因此,按照上面3bsv的请求的示例,不是针对接收方鲍勃的具有一个地址的单个
交易,我们现在有一种情况,其中,爱丽丝在输入中花费了4bsv,鲍勃在输出中接收到了3bsv,并且爱丽丝获得了1bsv找零(余额)。在附图的图5中示意性地描绘了这种情况。由于这些组成交易中的每一个都将提交给区块链而不是单个交易,因此出于前面讨论的原因,恶意方将无法通过查看公钥或交易中的bsv值来轻松地推断出与这种请求相关联的交易含义的身份。
[0113]
第二方面-发送方实现方式
[0114]
图4b是描绘了根据本公开的第二方面的分发请求的值的方法的流程图,如通过与发送方(即,与付款3bsv给鲍勃(接收方)的上述示例场景相关的爱丽丝)相关联的一个或多个处理器所实施。如上所述,通过与发送方或实际上是受信任的第三方相关联的一个或多个处理器实施用于分发请求的值的第二方面的方法,从而将请求在多个交易和输出上进行拆分,这对于计算不复杂的、可能无法应对与实施该方法本身相关联的处理的接收方是有利的。为了便于引用,本文讨论了通过与发送方相关联的一个或多个处理器或数字钱包进行的实现方式。
[0115]
在步骤402b中,从接收方或代表接收方接收付款请求。在上面的示例中,这可能是爱丽丝从鲍勃那里购买的商品或服务应付款3bsv的通知或消息。在一些实施例中,请求可以表示发票。
[0116]
步骤404b至步骤414b将由发送方爱丽丝分别以与步骤402a至步骤412a中所述相同的方式来实施,但由发送方来实施。但是,在发送方实现方式中,不是m'个交易模板tx,而是在发送方实现方式中可以为请求直接生成m个交易tx。这也在上面与第二方面相关的相关实施例中进行了讨论。这是因为在该实现方式中,没有从接收方发送任何输入或模板。因此,这里不再重复这些步骤,以避免重复第一方面的相同概念。
[0117]
第三方面
[0118]
图6是描绘了用于生成与接收方相关联的多个公钥的方法的流程图,每个公钥表示接收方的公共地址。一旦生成,则公钥就可以与一个或多个交易的一个或多个区块链交易输出(utxo)相关联,该一个或多个交易与接收方相关联。在一些实施例中,第三方面的方法可以与第一方面和第二方面的方法一起执行。例如,图1a和图1b中生成交易tx或交易模板tx'的步骤(分别为步骤114a和116b)需要在交易/模板中提供公共地址。第三方面的方法可以用于导出与接收方实体相关联的这种公共地址,从而可以将付款发送给接收方。如上所述,使用第三方面的方法来导出实体的公共地址/公钥,有利地使公共区块链上的交易能够安全且准确地与给定实体相关联或链接。在许多情况下,这将是接收方实体,但方法不限于此。类似的技术可以由发送方实体或实际上由第三方实体实现,作为提供给接收方或发送方的服务。
[0119]
在图6中,步骤602描绘了基于与接收方相关联的私钥sb和代码c获得父公钥pb的步骤。在一些实施例中,代码c与接收方相关联。在一些实施例中,父公钥和私钥可以是ecdsa密钥,即,secp256k1比特币曲线上的经压缩和十六进制编码的有效点。但是,其他区块链可以使用其他类型的曲线。此外,密钥为ecdsa密钥也不是必要的。父密钥也可以推广到具有同态特性的任何公钥/私钥对,从而s
bi
+s
bi+1
,然后对应的公钥相加p
bi
+p
bi+1
,即,同态加密允许对密文进行计算,生成加密结果,该加密结果经解密后与操作的结果相匹配,就好像它们是在明文上执行的一样。
[0120]
步骤604描绘了导出多个(n个)子公钥p
bi(i=1到n)
的步骤,每个子公钥基于相应导出的子秘密密钥s
bi(i=1到n)
。每个导出的子公钥p
bi
表示导出的公共地址,该导出的公共地址特定于与接收方关联的一个或多个区块链交易输出(utxo)。如以下步骤所解释,这种导出可以以多种不同但相关的方式进行。让我们考虑父密钥pb是基于pb=sb·
g导出的,其中,g是生成器,或者在ecdsa密钥的情况下是比特币生成器的椭圆曲线上的基点,或者其中,g是已知常数。
[0121]
步骤606描绘了基于代码c以及子私钥的导出而针对实体导出公钥或公共地址的一个实施例。在该实施例中,代码可以是接收方私有的或与发送方或另一个实体共享的常数。
[0122]
在该实施例中,给定子秘密密钥的对应(第i个)(其中,i=1到n)子私钥通过来导出,其中,对应子密钥对通过来导出,其中,对应子密钥对通过给出。
[0123]
在该计算之后,给定(第i个)子私钥通过来导出,其中,li=以下项的左侧256位:
[0124]
a)
[0125]
其中,索引i是32位整数,并且其中,hmac表示基于哈希的消息认证码计算函数。这可以基于已知的安全哈希算法。
[0126]
因此,该实施例能够基于秘密或共享代码c以及父秘密密钥的知识而为实体导出公共地址。该代码可以是链码。子密钥对的可选强化是附加的安全特征。如果子体经过强化,则子私钥和链码的知识就不足以重构父体的私钥。除了接收方之外,没有其他实体能够构造子地址,因为只有接收方知道秘密或私钥sb。如果子密钥对未经强化,则具有公钥pb和链码c的知识的实体可以代表接收方(例如,发送方,如果需要的话)构造导出的子密钥。
[0127]
步骤608描绘了除了可以是链码或常数的代码c之外,与请求的信息或数据项相关的消息m也用于导出的实施例。这具有以下附加优势:确定链接到接收方实体的给定消息的公共地址。
[0128]
一旦获得请求的数据项(即,与接收方关联的数据项或消息m),第i个导出的私子钥就可以基于以下来导出:
[0129][0130]
对应的公钥通过给出,其中,g是生成器或比特币生成器的椭圆曲线上的基点,或者其中,g是已知常数,并且其中,m表示与请求相关联的消息或数据项,该请求与数字资产有关。
[0131]
步骤610描绘了代码c实际上是由接收方和另一个实体共享的秘密s的实施例,其中,另一个实体是与接收方的请求相关联的数字资产的发送方,或是与接收方或发送方相关联的受信任的第三方。在一些实施例中,秘密s基于已知或预定的安全密钥交换协议(即,基于发送方的父公钥pa和接收方飞父公钥pb的迪菲-赫尔曼(diffie-hellman)交换)而在接
收方与另一个实体之间共享。
[0132]
在该实施例中,第i个子私钥通过来导出,其中,si=以下项的左侧256位:
[0133][0134]
其中,索引i是32位整数,并且其中,hmac是基于哈希的消息认证码计算函数。
[0135]
对应的公钥通过给出。
[0136]
该实施例确保了与接收方相关联并且链接到给定消息m的给定发送方的所有交易都可以在需要时进行标识和验证。此外,如果导出的公钥未经强化,则发送方或与其共享密钥的一方也可以基于针对给定消息m的接收方所导出的公钥来确定和验证交易。
[0137]
在第三方面的所有上述实施例中,使接收方以外的一方能够导出接收方的公共地址,提供了有用的备份,以防接收方受到损害。如果受信任的第三方也能够导出地址,这也可以用作附加的验证,或者在接收方和/或发送方已受损害的情况下可以用作灾难恢复或备份。
[0138]
现在转向图7,提供了可用于实践本公开的至少一个实施例的计算装置2600的说明性简化框图。在各种实施例中,计算装置2600可以用于实现以上示出和描述的任何系统。例如,计算装置2600可以被配置为用作图中dbms的一个或多个组件,或者计算装置2600可以被配置为与给定用户相关联的客户端实体,客户端实体对由图6的dbms管理的数据库进行数据库请求。因此,计算装置2600可以是便携式计算装置、个人计算机或任何电子计算装置。如图7所示,计算装置2600可以包括具有一个或多个级别的高速缓冲存储器和存储器控制器的一个或多个处理器(统称为2602),该处理器可以被配置为与包括主存储器2608和永久性存储装置2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(dram)2618和只读存储器(rom)2620。存储子系统2606和高速缓存存储器2602可以用于存储信息,例如与本公开中所描述的交易和区块关联的细节。(一个或多个)处理器2602可用于提供本公开中所描述的任何实施例的步骤或功能。
[0139]
(一个或多个)处理器2602还可以与一个或多个用户接口输入装置2612、一个或多个用户接口输出装置2614以及网络接口子系统2616进行通信。
[0140]
总线子系统2604可以提供用于使得计算装置2600的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统2604被示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。
[0141]
网络接口子系统2616可以提供至其他计算装置和网络的接口。网络接口子系统2616可以用作从不同于计算装置2600的其他系统接收数据,以及将数据传输到不同于计算装置2600的其他系统的接口。例如,网络接口子系统2616可以使数据技术人员能够将装置连接至网络,使得数据技术员能够在位于远程位置(例如,数据中心)的同时,将数据传输到该装置并从该装置接收数据。
[0142]
用户接口输入装置2612可以包括一个或多个用户输入装置,例如,键盘;诸如集成鼠标、轨迹球、触摸板或图形输入板等定点装置;扫描仪;条形码扫描仪;合并到显示器中的
触摸屏;诸如语音识别系统、麦克风等音频输入装置;以及其他类型的输入装置。通常,术语“输入装置”的使用旨在包括用于将信息输入到计算装置2600的所有可能类型的装置和机构。
[0143]
一个或多个用户接口输出装置2614可以包括显示子系统、打印机或诸如音频输出装置等非可视显示器。显示子系统可以是阴极射线管(crt),诸如液晶显示器(lcd)、发光二极管(led)显示器或投影仪的平板装置,或其他显示装置。通常,术语“输出装置”的使用旨在包括用于从计算装置2600输出信息的所有可能类型的装置和机构。一个或多个用户接口输出装置2614可以用于例如呈现用户界面,以有助于用户与执行所描述的过程及其中的变型的应用进行交互,如果这样的交互是适当的话。
[0144]
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可以提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或多个实施例的功能,并且可以被存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。另外,存储子系统2606可以提供用于存储根据本公开而使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久性存储装置2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括快闪存储器、一个或多个固态驱动器、一个或多个磁性硬盘驱动器、一个或多个具有关联的可移动介质的软盘驱动器、一个或多个具有关联的可移动介质的光驱(例如,cd-rom或dvd或blue-ray)驱动器、以及其他类似的存储介质。这样的程序和数据可以包括用于执行如本公开中所描述的一个或多个实施例的步骤的程序以及与本公开中所描述的交易和区块关联的数据。
[0145]
计算装置2600可以是各种类型的,包括便携式计算机装置、平板计算机、工作站或以下描述的任何其他装置。另外,计算装置2600可以包括可通过一个或多个端口(例如,usb、耳机插孔、闪电连接器等)连接到计算装置2600的另一装置。可以连接到计算装置2600的装置可以包括被配置为接受光纤连接器的多个端口。因此,该装置可以被配置为将光信号转换为电信号,该电信号可以通过将该装置连接至计算装置2600的端口进行传输以用于处理。由于计算机和网络不断变化的性质,图7中所描绘的计算装置2600的描述仅旨在作为特定示例,以达到说明该装置的优选实施例的目的。具有比图7中描绘的系统更多或更少的组件的许多其他配置是可能的。
[0146]
列举的示例实施例
[0147]
在此基于与上述方面相关的以下条款讨论本公开,本文提供这些条款作为示例性实施例以更好地解释、描述和理解要求保护的各方面和实施例。
[0148]
1、一种将与数字资产相关联的请求分区成与分布式账本有关的一个或多个交易的计算机实施的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与接收方相关联的一个或多个处理器来实施,所述方法包括以下步骤:
[0149]
获得对于与所述接收方相关联的请求而言可能的输出的最大数量(n);
[0150]
对于每个整数k,确定可能的整数分区,其中,1≤k≤n;
[0151]
从针对所述请求所确定的可能的整数分区中任意选择整数分区;
[0152]
基于选择的整数分区生成一个或多个(m')交易模板tx';
[0153]
在与一个或多个生成的交易模板tx'相关联的输出间拆分与所述数字资产相关联
的值;以及
[0154]
为或向发送方提供所述一个或多个生成的交易模板tx'。
[0155]
2、根据条款1所述的方法,还包括:基于一个或多个生成的模板tx'从所述发送方接收一个或多个已完成交易tx;以及将已完成交易提交到所述分布式账本。
[0156]
3、一种将请求分区成与分布式账本有关的一个或多个交易的计算机实施的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与发送方相关联的一个或多个处理器来实施,并且包括以下步骤:
[0157]
响应于从接收方接收到所述请求,获得对于与所述接收方相关联的请求而言可能的输出的最大数量(n);
[0158]
对于每个整数k,确定可能的整数分区,其中,1≤k≤n;
[0159]
从针对所述请求所确定的可能的整数分区中任意选择整数分区;
[0160]
基于选择的整数分区生成一个或多个交易tx;以及
[0161]
在与一个或多个生成的交易相关联的输出间拆分与所述数字资产相关联的值,其中,每个输出与公共地址有关,所述公共地址与所述接收方相关联。
[0162]
4、根据条款3所述的方法,还包括:基于选择的整数分区来生成或确定与所述接收方相关联的一个或多个公共地址,所述一个或多个公共地址中的给定公共地址被分配给所述一个或多个生成的交易中的给定交易tx的给定输出。
[0163]
5、根据条款3或4中任一项所述的方法,还包括:将所述一个或多个生成的交易tx发送给所述发送方,或将生成的交易tx提交给所述分布式账本。
[0164]
6、根据前述任一条款所述的方法,其中,生成的交易模板的数量m'或生成的交易的数量m是基于选择的整数分区中的整数的数量。
[0165]
7、根据前述任一条款所述的方法,其中,生成的给定交易模板tx'或交易tx中的输出的数量是基于选择的整数分区中与给定交易tx或模板tx'相关的相应位置处的整数的值。
[0166]
8、根据前述任一条款所述的方法,其中,为所述请求或所述接收方预定输出的最大数量n,并且其中,n个输出与公共地址相关,所述公共地址与所述接收方相关联。
[0167]
9、根据前述任一条款所述的方法,还包括:获得允许用于所述请求或所述接收方的交易模板的最大数量m'
max
或交易的最大数量m
max
。
[0168]
10、根据前述任一条款所述的方法,还包括:获得用于所述请求或所述接收方的交易模板的最小数量m'
min
或交易的最小数量m
min
和/或输出的最小数量n
min
。
[0169]
11、根据前述任一条款所述的方法,其中,生成的给定交易模板tx'或交易tx中的每个输出与接收方节点的不同公共地址相关联,所述公共地址特定于相应的输出。
[0170]
12、一种将与数字资产相关联的请求分区成与分布式账本有关的一个或多个交易的计算机实施的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与发送方相关联的一个或多个处理器来实施,所述方法包括以下步骤:
[0171]
获得或标识与所述请求相关联的一个或多个交易模板tx',所述模板tx'与接收方相关联,并且是基于条款1、2和6至11中任一项所述的方法生成的;
[0172]
完成所述一个或多个模板tx'以创建对应的交易tx;以及
[0173]
向所述发送方提供所述对应的交易tx,或向所述分布式账本提交所述对应的交
易。
[0174]
13、一种将与数字资产相关联的请求分区成与分布式账本有关的一个或多个交易的计算机实现的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与接收方相关联的一个或多个处理器来实施,所述方法包括以下步骤:
[0175]
向发送方提供关联的请求;
[0176]
从所述发送方接收一个或多个已完成交易tx,所述一个或多个已完成交易是基于条款3至11中任一项所述的方法生成的;以及
[0177]
将所述已完成交易提交到所述分布式账本。
[0178]
14、一种在与分布式账本有关的一个或多个交易上分发请求的计算机实施的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与接收方关联的一个或多个处理器来实施,所述方法包括以下步骤:
[0179]
获得与所述请求相关联的值l,其中,所述值代表数字资产;
[0180]
获得与所述请求相关联的预定数量m'的交易模板,其中,m'个交易模板tx'与和所述请求或所述接收方有关的预定的最大数量n的输出相关联,所述m'个交易模板tx'中的给定交易模板tx'具有n个输出,其中,n≤n;
[0181]
任意生成所述值l的n-1个值分区u
(i=1到(n-1))
;
[0182]
以值的升序顺序对所述n-1个值分区进行排序0<u
(1)
<u
(2)
<
…
<u
(n-1)
<l,其中,u
(0)
=0,并且其中,u
(n)
=l;以及
[0183]
对于i=1到n,基于经排序的顺序中相应的(第i个)值分区与前一值分区之间的差xi=u
(i)-u
(i-1)
,计算所述预定数量m'的交易模板中的给定交易模板的值x
(i=1到m
′
)
。
[0184]
15、根据条款14所述的方法,其中,所述获得步骤包括根据条款1、2和6至11中任一项所述的方法。
[0185]
16、根据条款1所述的方法,其中,所述拆分步骤包括根据条款14所述的方法。
[0186]
17、一种在与分布式账本有关的一个或多个交易上分发请求的计算机实施的方法,每个交易具有与所述请求相关联的一个或多个输出,所述方法通过与发送方关联的一个或多个处理器来实施,所述方法包括以下步骤:
[0187]
响应于从接收方接收到请求,获得与所述请求相关联的值l,其中,所述值代表数字资产;
[0188]
获得与所述请求相关联的预定数量m的交易,其中,m个交易tx与和所述请求或所述接收方有关的预定的最大数量n的输出相关联,所述m个交易模板tx中的给定交易tx具有n个输出,其中,n≤n;
[0189]
任意生成所述值l的n-1个值分区u
(i=1到(n-1))
;
[0190]
以值的升序顺序对n-1个值分区进行排序0<u
(1)
<u
(2)
<
…
<u
(n-1)
<l,其中,u
(0)
=0,并且其中,u
(n)
=l;以及
[0191]
对于i=1到n,基于经排序的顺序中相应的(第i个)值分区与前一值分区之间的差xi=u
(i)-u
(i-1)
,计算所述预定数量m的交易中的给定交易的值x
(i=1到m)
。
[0192]
18、根据条款15所述的方法,其中,所述获得步骤包括根据条款3至11中任一项所述的方法。
[0193]
19、根据条款3所述的方法,其中,所述拆分步骤包括根据条款17所述的方法。
[0194]
20、根据条款14至19中任一项所述的方法,其中,任意生成n-1个数的步骤包括以10-8
的精度均匀地随机地生成n-1个数(u1,u2,...,u
n-1
∈(0,1))。
[0195]
21、一种用于生成与接收方相关联的多个公钥的计算机实施的方法,每个公钥与一个或多个交易的一个或多个区块链交易输出(utxo)相关联,所述一个或多个交易与所述接收方相关联,所述方法由一个或多个处理器实施,所述方法包括以下步骤:
[0196]
基于与接收方相关联的私钥sb和代码c来获得父公钥pb;以及
[0197]
导出多个(n个)子公钥p
bi(i=1到n)
,每个子公钥基于相应导出的子秘密密钥s
bi(i=1到n)
;
[0198]
其中,每个导出的子公钥p
bi
表示导出的公共地址,所述导出的公共地址特定于与所述接收方相关联的一个或多个区块链交易输出(utxo)。
[0199]
22、根据条款21所述的方法,其中,所述接收方是旨在接收数字资产的实体,并且其中,所述代码c是与所述接收方相关联的代码。
[0200]
23、根据条款19或20中任一项所述的方法,其中,所述父公钥和/或私钥是稳定的椭圆曲线数字签名算法(ecdsa)密钥。
[0201]
24、根据条款23所述的方法,其中,所述父公钥pb基于pb=sb·
g来导出,其中,g是生成器或者比特币生成器的椭圆曲线上的基点,或者其中,g是已知常数。
[0202]
25、根据条款24所述的方法,其中,给定子秘密密钥的对应(第i个)子私钥通过来导出,其中,对应的子密钥对通过给出。
[0203]
26、根据条款21至25中任一项所述的方法,其中,给定的(第i个)子私钥通过来导出,
[0204]
其中,li=以下项的左侧256位:
[0205][0206]
其中,索引i是32位整数,并且其中,hmac表示基于哈希的消息认证码计算函数。
[0207]
27、根据条款21至26中任一项所述的方法,还包括以下步骤:
[0208]
获得与所述接收方相关联的请求m;
[0209]
基于来导出第i个导出的子私钥
[0210]
28、根据条款27所述的方法,其中,对应的公钥通过通过给出,其中,g是生成器或者比特币生成器的椭圆曲线上的基点,或者其中,g是已知常数,并且其中,m表示与所述请求相关联的消息或数据项,所述请求与数字资产有关。
[0211]
29、根据条款21至28中任一项所述的方法,其中,所述代码c是作为所述接收方的秘密的链码或是所述接收方私有的链码,并且其中,所述链码c可选地是与所述接收方相关
联的秘密种子的安全哈希。
[0212]
30、根据条款21至28中任一项所述的方法,其中,所述代码c是与另一个实体共享的链码,其中,所述另一个实体是与所述接收方的请求相关联的数字资产的发送方,或者其中,所述另一个实体是与所述接收方或所述发送方相关联的受信任的第三方。
[0213]
31、根据条款27或28中任一项所述的方法,其中,所述代码c与由所述接收方和另一个实体共享的秘密s相关联,其中,所述另一个实体是与所述接收方的请求相关联的数字资产的发送方,或者其中,所述另一个实体是与所述接收方或所述发送方相关联的受信任的第三方,其中,所述秘密s基于已知或预定的安全密钥交换协议在所述接收方与所述另一实体之间共享,所述安全密钥交换协议是基于发送方的父公钥pa和接收方的父公钥pb。
[0214]
32、根据条款31所述的方法,其中,第i个子私钥通过以下等式导出:
[0215][0216]
其中,si=以下项的左侧256位:
[0217][0218]
其中,索引i是32位整数,并且其中,hmac是基于哈希的消息认证码计算函数。
[0219]
33、根据条款32所述的方法,其中,对应的公钥通过通过给出。
[0220]
34、根据条款21至33中任一项所述的方法,其中,实施所述方法的所述一个或多个处理器与所述接收方相关联。
[0221]
35、根据条款34所述的方法,其中,所述一个或多个处理器与所述接收方的数字钱包相关联。
[0222]
36、根据条款21至35中任一项所述的方法,其中,导出的公共地址被分配给一个或多个交易模板tx'的一个或多个输出,所述一个或多个交易模板tx'是根据条款1、2、6至11、14至16和20中任一项所述的方法为所述接收方任意生成的。
[0223]
37、根据条款1、2、6至11和14至16中任一项所述的方法,还包括:根据条款21至35中任一项所述的方法。
[0224]
38、根据条款30至33中任一项所述的方法,其中,实施所述方法的所述一个或多个处理器与发送方或受信任的第三方实体相关联,所述方法还包括:接收或获得与所述接收方相关联的共享链码c或秘密s。
[0225]
39、根据条款38所述的方法,其中,所述一个或多个处理器与所述发送方的数字钱包相关联。
[0226]
40、根据条款30至33、38和39中任一项所述的方法,其中,导出的公共地址被分配给一个或多个交易tx的一个或多个输出,所述一个或多个交易tx是由所述发送方根据任何条款3至11和17至20中任一项所述的方法为所述接收方任意生成的。
[0227]
41、根据条款3至11和17至20中任一项所述的方法,还包括:根据条款21至33、38和39中任一项所述的方法。
[0228]
42、一种计算装置,包括:处理器;以及包括可执行指令的存储器,所述可执行指令
由于被所述处理器执行而使所述装置执行根据条款1、2、6至11、13至16和21至37中任一项所述的计算机实施的方法,所述计算装置与接收方或与接收方相关联的数字钱包有关。
[0229]
43、一种计算装置,包括:处理器;以及包括可执行指令的存储器,所述可执行指令由于被所述处理器执行而使所述装置执行根据条款3至12、17至33、38和39中任一项所述的计算机实施的方法,所述计算装置与发送方或与发送方相关联的数字钱包有关。
[0230]
44、一种其上存储有可执行指令的计算机可读存储介质,所述可执行指令由于被计算机系统的处理器执行而使所述计算机系统执行条款1、2、6至11、13至16和21至37中任一项的方法,以实现接收方或与接收方相关联的数字钱包。
[0231]
45、一种其上存储有可执行指令的计算机可读存储介质,所述可执行指令由于被计算机系统的处理器执行而使所述计算机系统执行条款3至12、17至33、38和39中任一项的方法,以实现发送方或与发送方相关联的数字钱包。
[0232]
应当注意,上述各方面和实施例说明而不是限制本公开,并且本领域技术人员将能够设计许多替代实施例,而不脱离由所附权利要求限定的本公开的范围。在权利要求中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括(comprising、comprise)”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括(comprise)”是指“包括(include)或由
……
组成(consist of)”,并且“包括(comprising)”是指“包括(including)或由
……
组成(consisting of)”。元素的单数形式并不排除此类元素的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实施。在列举几个部件的装置权利要求中,这些部件中的几个可以由一个且相同的硬件项来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。