首页 / 专利库 / 银行与财务事项 / 比特币地址 / 使用区块链分发数据记录的系统和方法

使用链分发数据记录的系统和方法

阅读:415发布:2020-05-14

专利汇可以提供使用链分发数据记录的系统和方法专利检索,专利查询,专利分析的服务。并且一种使用 区 块 链 将总数据记录从输入 节点 转移到 输出节点 的计算机实现的方法。在一些情况下,总数据记录可以是总支付,比如使用 比特币 。输出节点共享公钥材料,并且输入节点选择未花费交易输出以用于支付总值并且确定以固定面额可支付到输出节点的多个输出。输入节点使用公钥材料和相应的随机数为每个输出生成输出地址,并且在一个或多个硬币混合交易中将输入和输出混合。基于相应的随机数生成的用于每个输出的随机公钥单独地或通过区块链与输出节点共享,并且输出节点可以为每个输出地址得出对应的私钥,从而使其能够搜索并识别它可向其要求所有权的输出。,下面是使用链分发数据记录的系统和方法专利的具体信息内容。

1.一种使用链在输入节点输出节点之间转移总数据记录的计算机实现的方法,所述方法包括:
获取与所述输出节点相关联的公钥材料;
基于所述总数据记录和由所述输入节点控制的可用数据记录来确定:
选自所述可用数据记录的一个或多个输入,其中,所述一个或多个输入的累计总和等于或大于所述总数据记录,以及
多个输出,每个输出均针对选自一系列规定的数据记录特性中的相应的数据记录特性,并且,所述多个输出的总和与所述总数据记录相匹配;
为所述输出中的每个输出,
选择随机数,
基于所述公钥材料和所述随机数生成输出地址,
将所述输出地址插入到对具有该输出的相应的数据记录特性的数据记录待分配的记录分发交易中,
根据所述随机数生成随机公钥,并且
与所述输出节点共享所述随机公钥;以及
对所述一个或多个输入进行签署。
2.根据权利要求1所述的方法,其中,确定所述一个或多个输入和所述多个输出部分地基于可用的数据记录分发交易。
3.根据权利要求2所述的方法,其中,所述可用数据记录分发交易各自涉及分发具有一个或多个特定数据记录特性的数据记录,并且,确定所述一个或多个输入和所述多个输出部分地基于根据所述特定数据记录特性中的相应的特定数据记录特性来匹配所述一个或多个输入和所述多个输出中的每一者的数据记录。
4.根据权利要求1至3中的任一项所述的方法,其中,为所述多个输出插入所述输出地址包括将所有输出地址作为输出插入到单个数据记录分发交易中,所述单个数据记录分发交易被构造成对具有不同数据记录特性的多个数据记录进行分发。
5.根据权利要求1至3中的任一项所述的方法,其中,为所述多个输出插入所述输出地址包括在第一数据记录分发交易中插入至少一个输出地址,以及在第二数据记录分发交易中插入至少另一输出地址,并且所述第一数据记录分发交易用于对具有与在所述第二数据记录分发交易中分发的数据记录的数据记录特性不同的数据记录特性的数据记录进行分发。
6.根据权利要求1至5中的任一项所述的方法,其中,所述数据记录特性是在所述数据记录中指定的值,并且所述一系列规定的数据记录特性是基于最大值和由所述最大值倍定义的一系列值,其中,n是正整数。
7.根据权利要求1至6中的任一项所述的方法,其中,所述公钥材料包括两个公钥,即,BPubx和BPuby,并且,输出i的输出地址由下式给出:
BPubi=H(riBPubx)G+BPuby
其中,G是椭圆曲线基点,H()是散列函数,并且ri是为输出i选择的随机数。
8.根据权利要求7所述的方法,其中,所述随机公钥Ri被生成为Ri=riG。
9.根据权利要求1至8中的任一项所述的方法,其中,共享所述随机公钥包括以下之一:
将所述随机公钥插入所述数据记录分发交易中的非交易数据字段中;
将所述随机公钥插入与所述数据记录分发交易不同的单独交易中的非交易数据字段中;或者
使用非区块链通信将所述随机公钥发送到所述输出节点。
10.一种使用区块链在输入节点与输出节点之间转移总数据记录的计算机实现的方法,所述方法在所述输出节点处实现,所述方法包括:
向所述输入节点提供与所述输出节点相关联的公钥材料;
从所述输入节点获得随机公钥;
搜索区块链以寻找数据记录分发交易,所述数据记录分发交易具有多个输入地址和多个输出地址,每个输出地址均被分配具有一系列规定数据记录特性中的相应的数据记录特性的数据记录;
基于所述随机公钥和所述公钥材料来确定公钥-私钥对;
将来自所述公钥-私钥对的所述公钥与所述数据记录分发交易中的所述输出地址之一进行匹配,并且基于该匹配将分配给该输出地址的所述数据记录添加到临时数据记录集;
以及
确定所述临时数据记录集是否小于所述总数据记录,如果是,则继续所述搜索、确定和匹配直到所述临时数据记录集与所述总数据记录相匹配为止。
11.根据权利要求10所述的方法,其中,所述公钥材料包括两个公钥,即,BPubx和BPuby,所述两个公钥具有各自对应的私钥,即,BPrivx和BPrivy。
12.根据权利要求11所述的方法,其中,确定第i个公钥-私钥对包括确定:
BPrivi=H(BPrivxRi)+BPrivy
其中,BPrivi包括公钥-私钥对的私钥,H()是散列函数,并且Ri是随机公钥,所述第i个公钥-私钥对中的所述公钥被确定为BPubi=BPriviG,其中,G是椭圆曲线基点。
13.根据权利要求10到12中的任一项所述的方法,其中,搜索所述区块链包括识别包含非交易代码的数据记录分发交易,并且,获得所述随机公钥包括从所述硬币混合交易的非交易数据字段中提取随机公钥。
14.根据权利要求10到12中的任一项所述的方法,其中,获得随机公钥包括搜索所述区块链以寻找包含非交易代码的交易并且在交易被识别时从所述交易中的非交易数据字段中提取所述随机公钥。
15.一种使用区块链在输入节点与输出节点之间转移总数据记录的计算设备,所述计算设备是所述输入节点或所述输出节点中的一者,所述计算设备包括:
处理器;
存储器
用以提供网络连接的网络接口
包含计算机可执行指令的区块链应用程序,所述计算机可执行指令在被所述处理器执行时使所述处理器执行根据权利要求1至14中的任一项所述的方法。
16.一种非易失性处理器可读介质,所述非易失性处理器可读介质存储处理器可执行指令,用以使用区块链在输入节点与输出节点之间转移总数据记录,其中,所述处理器可执行指令在被所述输入节点或所述输出节点中的一者中的处理器执行时使所述处理器执行根据权利要求1至14中的任一项所述的方法。

说明书全文

使用链分发数据记录的系统和方法

技术领域

[0001] 本发明总体上涉及区块链交易,更具体地涉及生成和执行数据记录分发交易的方法和设备。

背景技术

[0002] 在本文件中,使用术语“区块链(blockchain)”来包括所有形式的电子的、基于计算机的分布式账本。这些包括但不限于区块链和交易链技术、许可及未许可的账本、共享账本及其变型。虽然已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币账本。虽然出于方便和说明的目的,本文中提到的是比特币(Bitcoin),但应当指出的是,本发明不限于与比特币区块链一起使用,替代性的区块链实施方案和协议也落入本发明的范围内。
[0003] 区块链是基于共识的电子账本,该账本被实现为由区块构成的基于计算机的分散式、分布式系统,而该区块又由交易构成。每个交易是对区块链系统中的参与者之间的数字资产的控制的转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。每个区块均包含前一区块的散列,使得这些区块被链接在一起,以构建对自区块链诞生之始就已被写入区块链的所有交易的永久性不可更改的记录。交易包含嵌入其输入和输出中的被称为脚本的小程序,这些小程序指定了如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本使用基于堆栈的脚本语言来写入。
[0004] 为了将交易写入区块链,必须对该交易进行“验证”。网络节点(矿工)执行工作以通过从网络中拒绝无效交易来确保每个交易均是有效的。安装在节点上的软件客户端通过执行其解然后锁定脚本而对未花费交易(UTXO)执行该验证工作。如果执行解锁然后锁定脚本被评估为正确的(TRUE),则交易有效并且交易被写入区块链。因此,为了将交易写入区块链,必须i)由接收交易的第一节点验证,如果交易被验证,则节点将该交易中继至网络中的其他节点;以及ii)被添加到由矿工构建的新区块;以及iii)挖掘,即添加到过去交易的公共帐本。
[0005] 诸如比特币的区块链技术的一个明显优势是其匿名性和安全性。也就是说,比特币帐本不包含关于参与交易的人的任何个人信息,比特币帐本仅包含公共地址信息。然而,通过使用外部数据和分析可以成功地将特定交易和地址与个人相关联。
[0006] 一些数字货币例如比特币的缺点之一是:尽管它们在隐私方面享有普遍声誉,但是区块链中的比特币流是完全公开的并且可以被分析以追踪通过该链的价值移动。这会导致隐私受到损害的情况。例如,如果某人具有包含大量未花费交易输出UTXO的钱包比如双周薪支付,并且该未花费交易输出被用作向另一人支付少量金额的输入,则查看该交易的其他人和任何人将部分地基于在该交易中返还的零钱而获得有关进行支付的人的财富以及可能的薪水的信息。可能出现大的输入和/或大的变更交易损害用户的隐私的其他情况。
[0007] 因此,期望提供改进的方法和设备,该改进的方法和设备通过改进的输入到输出的不可追踪性和不可链接性来提供提高的安全性和更鲁棒的加密术,同时仍然产生高效和有效的加密货币支付机制。
[0008] 尽管区块链技术最广为人知的是使用加密货币实施方案,但是数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据这两者来实现新系统。如果区块链可以用于不局限于加密货币领域的自动化任务和处理,则将是非常有利的。这种解决方案将能够利用区块链的益处(例如对事件的永久性防篡改记录、分布式处理等),同时这种解决方案在区块链的应用中更加通用。因此,本申请可以参考记录的关于区块链“数据记录”。数据记录可以包括例如文档、处理能或时间的测量、加密货币量、指示资产所有权的安全或其他令牌、或者可以由拥有加密材料的实体控制的其他此类事物,其中加密材料允许该实体使用或移动该数据记录。
[0009] 区块链中记录的潜在可追踪性揭示了可能损害某些应用的实现缺陷。示例应用包括提交用于标记的考试或论文、提交匿名犯罪报告、提交匿名调查或人口调查反馈、或其他这样的应用,其中在提交之后数据不可改变的情况下,参与节点组需要安全地和秘密地将数据记录转移到一个或更多个其他节点。与加密货币一样,可以基于记录本身的特性来追踪其他类型的数据记录的移动,从而实现对返还到特定节点的提交进行追踪,这会损害节点用户的隐私或安全或者会破坏分发或提交过程的匿名性的完整性。此外,如果网络中的节点能够将一个节点识别为向另一节点转移文档的源,则它提高了那些观察者节点通过诸如欺骗和其他计算机安全攻击之类的攻击来损害网络安全性的能力。
[0010] 区块链的公共特性在构造数据记录分发过程中无论是对于加密货币还是任何其他类型的数据记录提出了技术挑战,其更有效地确保了分发过程的安全性和完整性同时使对特定节点之间的数据记录的转移进行追踪的机会最小化。

发明内容

[0011] 现在已经设计出这样一种改进的解决方案。
[0012] 因此,根据本发明,提供了如所附权利要求中所限定的方法和设备。
[0013] 有利地,本申请提供了用于基于区块链的数据记录分发的改进的方法、设备和系统,其提高了交易的隐私性和安全性。使用隐地址、记录分发、以及将记录解构为规定的数据记录特性的唯一组合,在将输入与输出断开链接的同时转移全部数据记录,以保护与输入或输出节点有关的信息不被公开并且以妨碍追踪活动。
[0014] 本发明可以提供计算机实现的方法和对应的系统。该方法/系统可以被描述为区块链实现的方法/系统。本发明可以被描述为安全方法或加密方法/系统。本发明可以提供数字资产或数据记录比如一部分或一定量的加密货币的安全转移。附加地或替代性地,本发明可以提供控制机制以对诸如一部分或一定量的加密货币的数字资产的转移进行控制。
[0015] 附加地或替代性地,本申请可以描述一种使用区块链在输入节点与输出节点之间转移总数据记录的计算机实现的方法。在输入节点处实现的方法可以包括:获得与输出节点相关联的公钥材料;基于总数据记录和由输入节点控制的可用数据记录来确定选自可用数据记录的一个或更多个输入以及多个输出,其中,一个或更多个输入的累计总和等于或大于总数据记录,每个输出均针对选自一系列规定的数据记录特性的相应的数据记录特性,并且多个输出的总和与总数据记录相匹配;为输出中的每个输出选择随机数并且基于公钥材料和随机数生成输出地址,将输出地址插入到对具有该输出的相应数据记录特性的数据记录进行待分配的记录分发交易中,根据随机数生成随机公钥,并且与输出节点共享随机公钥;以及对一个或更多个输入进行签署。
[0016] 附加地或替代性地,本申请可以描述一种使用区块链在输入节点与输出节点之间转移总数据记录的计算机实现的方法。在输出节点处实现的方法可以包括向输入节点提供与输出节点相关联的公钥材料;从输入节点获得随机公钥;搜索区块链以寻找数据记录分发交易,数据记录分发交易具有多个输入地址和多个输出地址,每个输出地址均被分配具有一系列规定数据记录特性中的相应数据记录特性的数据记录;基于随机公钥和公钥材料来确定公钥-私钥对;将来自公钥-私钥对的公钥与数据记录分发交易中的输出地址之一进行匹配,并且基于该匹配将分配给该输出地址的数据记录添加到临时数据记录集;以及确定临时数据记录集是否小于总数据记录,如果是,则继续搜索、确定和匹配直到临时数据记录集与总数据记录相匹配为止。
[0017] 附加地或替代性地,本申请可以描述一种使用区块链在输入节点与输出节点之间转移总值的计算机实现的方法。在输入节点处实现的方法可以包括:获得与输出节点相关联的公钥材料;基于总值和输入节点所拥有的可用未花费输出交易来确定选自未花费输出交易的一个或更多个输入以及多个输出,其中,一个或更多个输入的累积值等于或大于总值,每个输出均针对选自一系列规定面额的相应的面额,并且,多个输出的总和与总值相匹配。该方法还包括,为输出中的每个输出选择随机数,基于公钥材料和随机数生成输出地址,将输出地址插入到对该输出的相应面额进行待分配的硬币混合交易中,根据随机数生成随机公钥,以及与输出节点共享随机公钥。输入节点对一个或更多个输入进行签署。
[0018] 在一些实施方案中,确定一个或更多个输入和多个输出部分地基于可用的硬币混合交易。可用的硬币混合交易各自涉及混合特定面额。确定一个或更多个输入和多个输出部分地基于将一个或更多个输入和多个输出中的每一者的值与特定面额中的相应的面额相匹配。
[0019] 在一些实施方案中,为多个输出插入输出地址包括将所有输出地址作为输出插入到构造成将多个不同面额进行混合的单个硬币混合交易中。在一些其他实施方案中,为多个输出插入输出地址包括在第一硬币混合交易中插入至少一个输出地址,以及在第二硬币混合交易中插入至少另一输出地址,并且第一硬币混合交易用于将与在第二硬币混合交易中混合的面额不同的面额进行混合。
[0020] 在一些实施方案中,规定面额系列基于最大硬币值和由最大硬币值的 定义的系列,其中,n是正整数。在其他实施方案中可以使用其他系列。
[0021] 在一些实施方案中,公钥材料包括两个公钥,即,BPubx和BPuby,并且输出i的输出地址由下式给出:
[0022] BPubi=H(riBPubx)G+BPuby
[0023] 其中,G是椭圆曲线基点,H()是散列函数,ri是为输出i选择的随机数。随机公钥Ri可被生成为Ri=riG。
[0024] 在一些实施方案中,共享随机公钥包括将随机公钥插入硬币混合交易中的非交易数据字段中;将随机公钥插入与硬币混合交易不同的单独交易中的非交易数据字段中;或者使用非区块链通信将随机公钥发送到输出节点。
[0025] 附加地或替代性地,本申请可以描述一种在输出节点处实现的方法,该方法包括向输入节点提供与输出节点相关联的公钥材料;从输入节点获得随机公钥;以及搜索区块链以寻找硬币混合交易,该硬币混合交易具有多个输入地址和多个输出地址,每个输出地址均被分配与一系列规定面额中的面额相符的值。该方法还包括基于随机公钥和公钥材料来确定公钥-私钥对;将来自公钥-私钥对的公钥与硬币混合交易中的输出地址之一进行匹配,并且基于该匹配将分配给该输出地址的值添加到支付金额;以及确定所支付的金额是否小于总值,如果是,则继续搜索、确定和匹配直到所支付的金额与总值相匹配为止。
[0026] 在一些实施方案中,公钥材料包括两个公钥,即,BPubx和BPuby,这两个公钥具有各自对应的私钥,即,BPrivx和BPrivy。确定第i个公钥-私钥对可以包括确定:
[0027] BPrivi=H(BPrivxRi)+BPrivy
[0028] 其中,BPrivi包括公钥-私钥对的私钥,H()是散列函数,并且Ri是随机公钥,其中,第i个公钥-私钥对中的公钥被确定为BPubi=BPriviG,其中,G是椭圆曲线基点。
[0029] 在一些实施方案中,搜索区块链包括识别包含非交易代码的硬币混合交易,并且获得随机公钥包括从硬币混合交易的非交易数据字段中提取随机公钥。在一些其他实施方案中,获得随机公钥包括搜索区块链以寻找包含非交易代码的交易并且在交易被识别时从该交易中的非交易数据字段中提取随机公钥。
[0030] 本文中所描述的其他实施方案包括具有存储器、处理器和可执行指令的计算设备,该可执行指令在被执行时使处理器执行本文中所描述的方法中的一个或更多个方法的操作。附图说明
[0031] 关于本发明的一个方面或实施方式所描述的任何特征也可以被一个或更多个其他方面/实施方式使用。本发明的这些方面和其他方面将从本文中所描述的实施方式中变得明显并参照这些实施方式得以阐明。现在将仅通过示例的方式并参照附图对本发明的实施方式进行描述,在附图中:
[0032] 图1示出了节点的示例区块链网络;
[0033] 图2用图解法示出了数据记录分发过程的一个实施方式;
[0034] 图3以流程图的形式示出了用于区块链交易中的数据记录分发的示例过程;
[0035] 图4以流程图的形式示出了根据本申请的实施方式的作为输入节点参与数据记录分发操作的示例过程;
[0036] 图5以流程图的形式示出了根据本申请的实施方式的作为输入节点参与数据记录分发操作的示例过程;以及
[0037] 图6示出了简化的参与节点的框图

具体实施方式

[0038] 在本申请中,术语“和/或”旨在覆盖所列出的元件的所有可能的组合和子组合,包括单独列出的元件中的任何一个元件、任何子组合或者所有元件,并且不必排除附加元件。
[0039] 在本申请中,短语“…或…中的至少一者”旨在覆盖所列出的元件中的任何一个或更多个元件,包括单独列出的元件中的任何一个元件、任何子组合或者所有元件,而不必排除任何附加元件且不必要求所有元件。
[0040] 在以下描述中,有时将参照数据记录,该数据记录可以包括包含值的数据字段。在一些情况下,总数据记录可以由多个数据记录的值的总和形成。在一些实例中,值可以表示数字资产或其量,比如加密货币,但是值也可以表示一些其他资产比如计算资源、时间等。对数据记录特性的引用可以指数据记录的属性。在一些示例中,这可以包括在数据记录中指示的值,并且一系列规定的数据记录特性可以包括一系列规定值。在一些情况下,值可以是整数或十进制值。在一些实例中,这些值代表加密货币量并且可以被称为面额。
[0041] 首先参照图1,图1以框图形式示出了与区块链相关联的示例区块链网络100。该区块链网络是无需邀请或无需经其他成员同意而可以由任何人加入的点对点开放成员资格网络。运行区块链协议的实例的分布式电子设备可以参与到区块链网络100中,其中,区块链网络100在该区块链协议下操作。这种分布式电子设备可以被称为节点102。例如,区块链协议可以是比特币协议或其他加密货币。
[0042] 运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括例如诸如台式计算机、膝上型计算机、平板计算机之类的计算机、服务器、诸如智能电话的移动设备、诸如智能手表的可佩戴计算机、或其他电子设备。
[0043] 区块链网络100的节点102使用合适的通信技术彼此耦接,所述通信技术可以包括有线通信技术和无线通信技术。在许多情况下,区块链网络100至少部分地在因特网上实现,并且一些单独节点102可以位于地理上分散的位置
[0044] 节点102维护区块链上所有交易的全局帐本。全局帐本是分布式帐本,并且每个节点102可以存储全局帐本的完整副本或部分副本。由影响全局帐本的节点102进行的交易由其他节点102验证,使得维护全局帐本的有效性。本领域普通技术人员可以理解实施和操作诸如使用比特币协议的区块链网络的细节。
[0045] 每个交易通常具有一个或更多个输入和一个或更多个输出。嵌入到输入和输出中的脚本指定如何以及由谁可以访问交易的输出。交易的输出作为交易的结果包括值被转移到的地址。然后,将作为未花费交易输出(UTXO)的该值与该输出地址相关联。后续交易随后可以参考作为输入的该地址,以花费或重新分配该值的所有权。
[0046] 虽然由于在区块链帐本上的交易中不包含个人信息因此交易是伪匿名的,但是可以追踪交易链中的数据记录的转移,并且在一些情况下可以使用外部数据将数据记录链接到个别或特定节点。为了提高安全性,数据记录分发交易例如硬币混合交易可以用于汇集来自各种源的输入并且然后将汇集的数据记录划分并分配给输出。如果所有的输入和输出是具有相同特性的数据记录,则难以将特定的输入与特定的输出链接。然而,在这样的交易中,至少一个参与节点知道由另一参与节点指定的输入地址与输出地址之间的链接。在硬币混合交易中比如比特币协议中的CoinJoin操作,具有多个输入和多个输出的单个交易用于将值混合。
[0047] 使用一些其他技术来试图避免揭示输入与输出之间的具有不同有效性的链接,比如隐地址。隐地址试图将数据记录被发送至的输出地址与特定输出节点解除链接,以便破坏可追踪性。
[0048] 根据本申请,描述了一种方法和设备,该方法和设备以下述方式促进从输入节点到输出节点的总数据记录的转移:增加分发的隐私和安全性并且提供将分发链接到特定输入和/或输出和追踪分发或揭示有关输入节点的相关信息的障碍。在区块链协议的结构内这样做在确保安全性的同时提出了重大的技术实现挑战。以下描述提供了对这些技术实现挑战的解决方案的至少一个实施方式。
[0049] 在本文的描述中,可以使用术语“输入节点”、“输出节点”、“参与节点”、“输入地址”和“输出地址”。对节点的“地址”的引用并非意味着指代物理节点的网络地址。相反,“地址”是在区块链上的交易中指定的具有未花费值的地址,物理节点可以通过具有与交易上的签名相对应的密钥来向该未花费值要求所有权。在这种意义上,“输出地址”不是参与节点的地址,而是由参与输出节点拥有或与参与输出节点相关联的区块链交易输出地址。同样,“输入地址”是由参与输入节点拥有或与参与输入节点相关联的未花费交易输出(UTXO)的地址。
[0050] 椭圆曲线数字签名
[0051] 一些区块链技术,如比特币,使用椭圆曲线数字签名算法(ECDSA)作为用于数字签名的数学方案。ECDSA是用于确保与UTXO相关联的值仅可以由其合法所有者花费的加密数字签名。ECDSA签名所需的参数包括:
[0052] E-椭圆曲线函数
[0053] G-椭圆曲线上的基点,阶数为n:n×G=O
[0054] n-大素数
[0055] q-子组阶数
[0056] 密钥对是从随机数x生成的,其中0<x<n。数字x用作私钥,公钥P被生成为P=x×G。
[0057] 给定消息m、随机数k和私钥x,用对(r,s)产生签名。随机数k被选择以使得0<k<q。然后,计算r=k×G,并且计算s=k-1(m+xr)mod n,其中k-1是k mod n:k-1k≡1mod n的乘法逆元素。这给出了签名(r,s)。
[0058] 给定签名(r,s)、消息m和公钥P,可以验证该签名。为了验证签名,计算v=s-1m×G+s-1r×y。在该表达式中,s-1是s mod q的乘法逆元素,以使得s-1s≡1mod n。如果v=r,则签名有效。记住G具有阶数n,因此当EC点乘以G时s-1的modn部分消失。
[0059] 汇集的分解数据记录
[0060] 现在参照图2,其用图解法示出了数据记录分发过程200的一个实施方式。在该示例中,数据记录涉及加密货币,并且总数据记录是总值的支付。输入节点202被指定为“钱包A”。输入节点202可以是设计用于进行支付和接收支付的轻量级节点,但并非是存储区块链的副本的完整节点。在一些情况下,输入节点202可以是全节点或者甚至是挖矿节点,但是在本示例中,输入节点202是轻量级节点,其在许多情况下可以被称为“钱包”。在比特币协议中,这样的节点可以被称为简化支付验证(SPV)节点。输出节点204被指定为“钱包B”。与输入节点202一样,在该示例中,输出节点204是轻量级节点。节点202和204在这里可以被称为参与者或参与节点。
[0061] 输入节点202“拥有”(控制)由附图标记206指示的具有不同值的若干UTXO。输入节点202拥有它们的意义在于,输入节点202持有与每个UTXO206相对应的私钥,该私钥使输入节点202能够将该UTXO206的脚本“花费”签署为对区块链交易的输入。每个UTXO206是发送或返还给输入节点202的先前交易的未花费输出。UTXO206可以用于改变适用的加密货币的价值的量。
[0062] 输出节点204具有两个公钥-私钥对,被指定为(BPubx,BPrivx)和(BPuby,BPrivy),其中BPub=BPrivG。输出节点204与输入节点202以及可能的其他节点共享公钥BPubx和BPuby。
[0063] 在这种情况下,输入节点202的所有者打算将总值转移到输出节点204的所有者。在一些实施方案中,总值可以反映对商品或服务的支付。
[0064] 根据本申请的方面,输入节点202选择一个或更多个UTXO206,以用作实现支付的交易的输入。一个或更多个UTXO206的累积值等于或大于要向输出节点204进行的支付的总值。UTXO206的选择可以部分地基于使用多个较小面额的UTXO206来构成总值,而不是使用将导致零钱或者至少将导致返还到输入节点202的较大额的零钱的一个大的UTXO206。
[0065] 在一些实施方案中,输入节点202可以使用贪婪算法来确定最优或有利的多个UTXO206,该贪婪算法产生等于或大于支付总值的输入总和同时使UTXO206的数量减至最小。分析中的附加因素可以包括使所生成的零钱最小化,即,确保所选择的UTXO206的累积值超过总值达给定可用UTXO206的可能最小量。在一些实施方案中,可以基于UTXO206的值来对UTXO206进行优先级排序;也就是说,如下面将要进一步说明的,在值上对应于一系列规定面值之一的UTXO206可以是优选的。
[0066] 在一些实施方案中,可以基于总值(或总值加费用,这是由于输入节点202可能需要确保所提交的输入足以覆盖(多个)交易的费用)和避免使用大的UTXO206来进行小额支付的规则来选择UTXO206的最佳集合。也就是说,输入节点202可以使用比总支付少的UTXO206来区分优先级。输入节点202可以使用动态编程、贪婪算法或任何其他合适的计算机编程技术来实现UTXO选择过程,以用于找到UTXO206的局部最优的或至少合适的选择。
[0067] 根据本申请的另一方面,价值的转移将通过一个或多个硬币混合交易例如比特币协议中的CoinJoin交易来进行。也就是说,所选择的UTXO206是对一个或多个硬币混合交易的输入。
[0068] 输入节点202还确定多个输出以构成总支付。输出的累积值与对输出节点204进行的支付的总值相匹配。每个输出被确定为从一系列规定面额中选择的相应面额。在一个示例中,面额可以是适用的加密货币的指定的一系列分数。在一个示例中,面额可以由加密货币的基本单位乘以 来给出,其中n=0、1、2、3等。作为示例,使用比特币,面额可以是:
[0069] 1BTC、0.1BTC、0.01BTC、0.001BTC、…、至1Satoshi。
[0070] 其他示例面额不一定与基数10相关,比方说例如,
[0071] 1BTC、0.5BTC、0.2BTC、0.1BTC、0.05BTC、0.02BTC、0.001BTC、…等。
[0072] 在一些实施方案中,至少除一个之外的所有输入具有相同值的对应输出(由于,如果输入的累积值超过总支付,则输入之一可能导致可向输入节点偿还的零钱和/或可归因于交易中可偿还的费用的超额金额)。在值方面与对应输出相匹配的输入可以包括在相同的硬币混合交易中,其中该交易设计成将多个输入和输出混合,所有输入和输出都具有相同的值。
[0073] 一旦输入节点202确定了一个或多个UTXO206用作输入,并且确定了多个输出和其各自的值,输入节点202就通过插入UTXO206作为输入并且插入与输出中的每个输出相对应的各自的输出地址来加入一个或更多个硬币混合交易。
[0074] 在本申请的另一方面,输入节点202不使用输出节点的公共地址作为输出地址,并且不在输出节点204的公共地址处汇集输出。相反,输入节点202为每个输出生成新的秘密输出地址。每个新的秘密输出地址均是基于由输出节点提供的公钥BPubx和BPuby以及随机数ri而生成的。随机数ri可以被称为随机数。在这点上,来自输出节点204的两个公钥一起充当“隐地址”,原因在于来自输出节点204的两个公钥将用作生成秘密地址的种子,但是输出节点204与新的秘密地址之间的链路仅对输入节点202已知。这屏蔽了交易中的收款人的身份,原因在于实际的输出地址不知道与输出节点204相关联,而如果对输出节点204的公布的公钥地址进行支付,则它将可识别地与输出节点204相关联。
[0075] 在该示例中,输入节点202基于以下内容具体地生成新的秘密输出地址BPubi:
[0076] BPubi=H(riBPubx)G+BPuby
[0077] 其中,G是椭圆曲线基点,H()是散列函数。输入节点202还基于Ri=riG从随机数ri计算随机公钥Ri。
[0078] 输入节点202为每个输出生成新的秘密输出地址BPubi。输入节点202还与输出节点204共享用于每个输出的随机公钥Ri。然后,输出节点204使用该随机公钥Ri以及私钥BPrivx和BPrivy使用以下等式来试图生成与交易中的输出地址之一相对应的私钥:
[0079] BPrivi=H(BPrivxRi)+BPrivy
[0080] 如果所生成的私钥可以用于获得公钥BPubi,则输出节点204具有正确的私钥来解锁指向该输出地址的交易输出。
[0081] 用于共享随机公钥Ri的机制可以根据实施方案而采取不同的形式。在一个实施方案中,将随机公钥Ri插入到使用输出地址的硬币混合交易的非交易字段中。输出节点204搜索区块链以寻找在非交易字段中具有数据的硬币混合交易。例如,在比特币协议中,OP_RETURN代码是用于标记无效交易输出的脚本操作码。由于在处理比特币支付时忽略了置于OP_RETURN代码之后的任何数据,因此它可以有效地用作交易内的消息或数据存储字段。因此,在基于比特币协议的一个实施方案中,硬币混合交易包括具有OP_RETURN代码或功能等效物的输出,其后是公共现时密钥Ri。在一般术语中,指示非交易数据或信息被包括在交易中的代码在此可以被称为“非交易代码”。
[0082] 然而,某些协议例如比特币可能限制在交易中使用这种类型的非交易数据字段的能力。作为示例,比特币可以仅允许每个交易一个OP_RETURN代码,这意味着在硬币混合交易中仅可以指定一个Ri。尽管在一些情况下在单个非交易数据字段中串接Ri密钥是可能的,但在一些实施方式中,对密钥的字段长度和大小的限制可能使其不切实际。因此,可以使用另一机制来共享用于硬币混合交易中的多个输出的随机公钥Ri。
[0083] 在一个示例实施方式中,输入节点202生成附加交易212,每个附加交易具有非交易数据字段以包含Ri随机公钥之一。附加交易的数量可以与输出的数量相匹配。输出节点204然后搜索或监测区块链以寻找包含非交易数据比如OP_RETURN代码的交易的存在。如果输出节点204找到这样的交易,则输出节点204基于它可以是随机公钥来提取非交易数据并且使用该数据及其公钥材料来生成可能的输出地址。然后,输出节点204评估所生成的可能输出地址是否作为区块链上的硬币混合交易的输出而出现。
[0084] 在另一示例实施方案中,输入节点202使用单独的、优选地加密的通信信道将随机公钥Ri转移到区块链本身之外的输出节点204。然后,输出节点204生成对应的公钥BPubi并且搜索区块链以寻找将值转移到那些地址的硬币混合交易。
[0085] 在输出节点204没有被直接给予随机公钥Ri而是搜索区块链以寻找包含非交易数据的交易并试图识别硬币混合交易中的对应输出的情况下,输出节点204可以继续该搜索直到它找到累积地累加到待由输入节点202转移的总值的一组输出为止。
[0086] 图2示出了一个示例,在该示例中,输入节点202转移0.49个硬币。硬币可以是比特币、山寨币或任何其他加密货币。在该说明性示例中,硬币混合交易210可用于输入节点202加入并且其中混合了多个面额(以固定的规定面额)。也就是说,交易包括多个1个硬币输入和输出、多个0.1个硬币输入和输出、多个0.01个硬币输入和输出、以及多个0.001个硬币输入和输出等。可以包括其他面额,包括其他示例中的不是以10为基数的面额。
[0087] 在该示例中,输入节点202使用五个可用的UTXO206来组成0.49个硬币,每个UTXO206的数量为0.1个硬币。如果输入节点202没有碰巧具有0.1硬币面额的足够的UTXO206,则它将选择不同面额的UTXO来构成支付。在此示例中,在输入节点202输入0.5个硬币以进行0.49个硬币支付的情况下,输入节点202将有权享有0.01个硬币的零钱,但交易可能涉及费用,如同该示例中的那样。9×0.001个硬币数量的零钱被返还到输入节点202,这意味着0.001个硬币的交易费。
[0088] 这五个输入各自来自输入节点202所拥有的不同UTXO206。输出包括4×0.1个硬币和9×0.01个硬币。在该示例中,输入节点202生成表示为BPub1,BPub2,…,BPub13的13个输出地址。
[0089] 十三个随机公钥Ri,i=1,2,…13被输出节点204共享。如上所述,在一些协议中,可以将密钥插入到硬币混合交易内的相应的非交易数据字段中。非交易数据字段是不会负面影响交易的某种类型的数据字段。数据字段可以是用于注释、文本或与交易不相关的任何这样的数据的指定字段。在一些情况下,数据字段可以由特定代码或标志来标记或指定用以指示该字段包含非交易数据。如上所述,在比特币协议中,OP_RETURN代码可以用于此目的,然而,比特币协议限制了非交易输出的使用,使得所有十三个随机公钥Ri不能被插入到硬币混合交易中。
[0090] 在随机公钥Ri不能在硬币混合交易本身中的非交易字段内共享的情况下,输入节点202以另一种方式共享它们。在一个示例中,输入节点202通过单独的加密信道或通信将它们发送到输出节点204。在另一示例中,输入节点202通过将每个随机公钥Ri放入相应交易的非交易数据字段中来通过区块链共享它们。
[0091] 输出节点204扫描区块链,以寻找可以包括来自输入节点202的支付的交易。搜索可以基于识别包含表示非交易数据的存在的特定标志或代码的交易,所述非交易数据可能是随机公钥。在一个实施方案中,所检测到的标志是非交易代码,比如比特币协议中的OP_RETURN(或其功能等效物),其指示代码之后的数据是非交易的。
[0092] 在该示例中,在硬币混合交易210本身中或在一组十三个附加交易212中,存在至少十三个包含非交易数据的空输出。对于每个字段,输出节点204依次提取数据(其假定可以是随机公钥Ri),基于其BPrivx和BPrivy以及下式计算BPrivi和对应的BPubi:
[0093] BPrivi=H(BPrivxRi)+BPrivy
[0094] 如果所提取的数据是由输入节点202用来生成秘密输出地址的随机公钥Ri之一,则输出节点204将成功地生成与交易210中的输出地址之一相匹配的BPubi。可以简单地将计算出的BPubi与交易210的输出地址进行比较,以验证已经正确地识别了对它的支付之一。既然它具有对应的私钥BPrivi,那么输出节点204拥有该UTXO。
[0095] 可以理解的是,图2中的示例涉及交易210,其将足够数量的多个以10为基数的面额混合,使得输入节点202能够找到累积地构成支付并且能够加入交易210的UTXO206的组合。在一些情况下,这样的硬币混合交易可能无法加入或者可能无法成功完成。
[0096] 还可以理解的是,图2的示例以及以下讨论中的示例专用于加密货币和支付的分发,而所描述的过程和系统也可应用于基于与规定的数据记录特性相匹配的数据记录特性(其一个示例是与规定的面额相匹配的值)的数据记录(其一个示例是加密货币值)的分发。
[0097] 图3示出了另一示例支付过程300,在该支付过程300中使用了多个硬币混合交易302、304。
[0098] 在该示例中,输入节点202被限制在基于可用硬币混合交易302、304选择可用UTXO206。在该说明性示例中,假设一个硬币混合交易302用于混合0.1硬币面额,而另一硬币混合交易304用于混合0.01硬币面额。交易302、304中的每一者的参与都要支付交易费,在该示例中为0.00001个硬币,该交易费由输入节点202使用该数量的离散UTXO206输入到交易而不是依赖于超额支付和零钱。
[0099] 输入节点202不能像先前示例中那样使用5×0.1个硬币,这是由于硬币混合交易302不必被设计成返还0.01的零钱并且输出支付到输出节点204将导致0.01个硬币的超额支付。因此,输入节点202可以使用在交易302中混合的4×0.1个硬币和在交易304中混合的
9×0.01个硬币来构成支付。输出同样是来自交易302的4×0.1个硬币和来自交易304的9×
0.01个硬币。如果在所使用的特定实现/协议中允许多个非交易数据字段,则随机公钥R1、R2、R3、R4将被置于交易302中的非交易数据字段中,并且剩余的随机公钥R5至R13将被置于交易304中的非交易数据字段中。替代性地,随机公钥Ri通过单独的通信信道被输出节点204共享,或者通过单独的区块链交易被共享,每个区块链交易在非交易数据字段中包含随机公钥Ri之一。
[0100] 本领域技术人员可以理解的是,还有其他示例过程可以使用其他面额和硬币混合交易来实现支付。
[0101] 还可以理解的是,为了参与上述过程200和300,输入节点202具有足够可用的合适面额的UTXO206。可能存在输入节点202所拥有的UTXO206不是合适面额却参与规定面额的硬币混合的情况。在一个实施方案中,输入节点202可以用于向付款人表明其希望接收规定面额的支付,使得其将具有可用于其随后打算进行的支付的UTXO。在一些情况下,输入节点202可以用于主动地将其UTXO206分散或分解为具有规定面额的多个UTXO206。如果这种交易可以以可忽略的或零交易费用来实现,则这种功能可以被嵌入钱包软件中,该钱包软件可以主动地生成交易以将UTXO206分解为规定的面额。在一些实例中,钱包软件可用于启用或禁用此功能。如果启用,钱包软件可以在后台生成并执行这些交易。在一些实施方案中,软件可以在执行交易之前显示建议的分解交易以供用户批准,特别是如果需要为分解交易支付任何费用。
[0102] 现在将参照图4,图4以流程图的形式示出了根据本申请的方面的用于从输入节点向输出节点进行基于区块链的支付的一个示例方法400。方法400包括在操作402中从输出节点获得公钥材料。在该示例中,公钥材料包括BPrivx和BPrivy,尽管在一些其他实施方案中,输出节点公钥材料可以采用不同的形式。
[0103] 然后,在操作404中,输入节点从其可用的UTXO资源中选择UTXO,以构成对输出节点的支付。所选择的UTXO可以基于可用硬币混合交易的面额。所选择的UTXO还可以基于使所涉及的UTXO的数量最小化。所选择的UTXO还可以基于使返还到输入节点的零钱最小化。在选择过程中也可以使用其他因素来识别将构成支付的UTXO。尽管在许多情况下,支付可以由多个UTXO构成,但是在一些情况下,可以选择单个UTXO。UTXO的累积值等于或大于总支付金额。
[0104] 在操作404中,输入节点还确定将构成对输出节点的支付的输出的数量和面额。输出的面额从规定的面额中选择并且可以基于可用的硬币混合交易的面额来选择。
[0105] 在操作406中,在确定了输出的数量之后,输入节点为输出中的每个输出选择随机数ri,并且基于其相关联的随机数ri和来自输出节点的公钥材料为每个输出生成BPubi输出地址。
[0106] 然后,在操作408中,输入节点将输入和输出插入到一个或更多个硬币混合交易中。
[0107] 在操作410中,输入节点与输出节点共享随机公钥Ri。每个随机公钥Ri对应于在生成相应输出地址BPubi时使用的随机数ri中的一个相应随机数。在一些实施方案中,将随机公钥Ri插入到硬币混合交易中的一个或多个非交易数据字段中。在一些实施方案中,将随机公钥Ri插入到单独的附加交易中的非交易数据字段中,对于每个随机公钥Ri多达一个交易。在其他实施方案中,输入节点经由区块链协议之外的单独通信信道与输出节点共享随机公钥Ri。
[0108] 然后,在操作412,输入节点对其已插入到一个或更多个交易中的输入中的每个输入进行签署。
[0109] 图5以流程图的形式示出了用于使用区块链技术在输出节点处接收支付的一个示例方法500。在操作502,输出节点首先公布或使其公钥材料可用。在该示例方法500中,公钥材料是两个公钥:BPubx和BPuby。它可以将该材料提供给想要向输出节点进行支付的输入节点。在该示例中,假定输出节点知道即将到来的支付和支付金额。然而,可能存在输出节点通常已公布其公钥材料并且可能以其预先不知道的量从任何数量的可能源接收支付的情况。在这样的情况下,输出节点间歇性地扫描区块链以寻找非交易数据且测试所找到的任何这样的数据,如下所述。
[0110] 在操作504中,输出节点开始在区块链中搜索可能与来自输入节点的支付有关的交易。特别地,输出节点搜索包含指示非交易数据的存在的非交易标志或代码的交易。在一些实施方式中,输出节点可以将其搜索限制为硬币混合交易,该硬币混合交易包含非交易数据。可以理解的是,该示例假设非交易数据被包括在硬币混合交易本身中。如上所述,在一些可以是不可能的的实施方案中,可以以另一种方式比如通过包含非交易数据字段的附加交易或者通过单独的非区块链通信信道与输出节点共享随机公钥材料。例如,如果随机公钥各自在单独的交易中,则输出节点可以搜索包含一个P2PKH输出和一个空数据输出的交易。
[0111] 在操作506中,在识别出包含非交易数据的候选交易之后,输出节点提取非交易数据并且测试该数据是否可以用于生成交易中的输出地址之一。如上所述,如果非交易数据是随机公钥Ri,则输出节点将能够使用其公钥材料来生成公钥-私钥对BPrivi和BPubi,并且所生成的公钥BPubi将匹配输出地址之一。在操作508中,输出节点评估所生成的密钥是否与交易中的输出地址相匹配。如果不是,则它丢弃非交易数据并且返回以搜索区块链,或者如果当前候选交易中存在附加的非交易数据,则测试附加的非交易数据。
[0112] 如果输出节点在操作508中通过确定BPrivi和BPubi确定其已经成功地识别了支付之一,则其继续将分配给BPubi的支付添加到由输入节点支付的总额,如操作510所指示的那样。在操作512中,输出节点可以评估来自输入节点的支付的累积值是否已经完成总支付。如果不是,则继续搜索。
[0113] 可以理解的是,以上示例实施方式中的所描述的操作中的一些操作可以同时发生或以不同的顺序发生,而不会实质上影响过程。本申请包括这些变型和改进。
[0114] 在一些实施方案中,硬币混合交易可以从中央服务器运行。然而,硬币混合交易也可以是完全分布式的,其中所有输入节点充当盲签署服务器。在比特币的上下文中,JoinMarket是鼓励参与并增加流动性的硬币混合的分散实现的示例。
[0115] 现在将参照图6,图6以框图形式示出了参与节点600的简化示例。节点600可以是输入节点或输出节点。节点600包括处理器602,该处理器602可以包括一个或更多个微处理器、专用集成电路(ASIC)、微控制器或类似的计算机处理设备。节点600还包括存储器604和网络接口606,其中,存储器604可以包括永久和非永久存储器,用以存储值、变量和在一些实例中用以存储处理器可执行程序指令,网络接口606用以提供有线或无线网络上的网络连接。
[0116] 节点600包括处理器可执行区块链应用程序608,处理器可执行区块链应用程序608包含处理器可执行指令,该处理器可执行指令在被执行时使处理器602执行本文中所描述的功能或操作中的一个或多个功能或操作。
[0117] 可以理解的是,本文中所描述的设备和过程以及实现用于配置节点的所述方法/过程的任何模块、例程、过程、线程、应用或其他软件部件可以通过使用标准计算机编程技术和语言来实现。本申请不限于特定的处理器、计算机语言、计算机编程惯例、数据结构、其他这样的实现细节。
[0118] 应当指出的是,上述实施方式说明而不是限制本发明,并且本领域技术人员将能够在不脱离由所附权利要求限定的本发明的范围的情况下设计许多替代实施方式。在权利要求中,置于括号中的任何附图标记不应被解释为限制权利要求。用语“包括(comprising)”和“包括(comprises)”等不排除除了在任何权利要求或说明书中作为整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括(comprises)”表示“包括(includes)或由......构成(consists of)”,并且“包括(comprising)”表示“包含(including)或由......构成(consisting of)”。元件的单数引用不排除这些元件的复数引用,反之亦然。本发明可以借助于包括若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的设备权利要求中,这些装置中的若干个装置可以由同一个硬件项实现。在相互不同的从属权利要求中陈述某些手段的仅有事实并不表示这些手段的组合不能用于获益。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈