一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用区块链交易分配数字资产的制作方法

2022-06-16 07:40:38 来源:中国专利 TAG:


1.本公开涉及使用区块链交易向一个或更多个接收方安全地分配或分发数字资产的金额的方法。特别地,该方法确保仅预期接收方可访问其相应的数字资产金额。


背景技术:

2.区块链是指一种分布式数据结构形式,其中在点对点(p2p)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一笔或多笔交易。每笔交易都可以回指序列中的先前交易,其可以扩展一个或更多区块。通过称为“挖掘”的过程,交易可以通过提交到网络包括在新区块中,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决交易池解决加密难题。
3.区块链中的交易通常用于传递数字资产,即用作价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在交易输出中存储附加用户数据。现代区块链在单一交易中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
4.网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播交易。挖掘节点将交易挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将交易记录在区块链中,一方将该交易发送到网络中的节点中的一个节点进行传播。接收该交易的挖掘节点可以争相将该交易挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认交易有效的一个或更多个条件。无效交易将不会传播或挖掘到区块中。假定交易已经核实有效,从而在区块链上被接受,该附加用户数据将因此作为不可改变的公共记录,继续存储在p2p网络中的各个节点处。
5.在标准区块链协议内,一方拥有唯一的私钥,该私钥可用于识别该方。但是,由于需要维护私钥的私密性,私钥无法直接用于识别该方。相反,使用了加密签名方案,其中每个私钥与相应公钥配对。公钥也可唯一地识别一方,与其他方共享并且公开可用。


技术实现要素:

6.根据本文公开的一方面,提供了一种生成与区块链相关联的至少一个交易的计算机实现的方法,该至少一个交易用于将数字资产的分配金额从分配方分发给一个或更多个接收方,其中分配方与和该分配链接的分配公钥相关联,其中每个接收方与相应所有权公钥相关联,并且其中该方法包括:获取一个或更多个接收方中每一个的相应所有权公钥;对于一个或多更个接收方中的每一个,基于(i)与该接收用户相关联的所有权公钥和(ii)分配公钥生成相应付款公钥;并且生成至少一个交易,其中该至少一个交易包括一个或更多个输出脚本,每个输出脚本被配置为将分配的相应金额转移至相应付款地址,该相应付款地址基于相应付款公钥。
7.本公开认识到一种利用公钥-私钥对的方式,以确保将数字资产金额分发给特定方(即预期接收者)并且仅可由特定方访问。换言之,分配方将付款分配给特定接收者,仅这些接收者可访问这些付款。本公开还确保多个接收者可同时透明且安全地访问其数字资产的相应金额。分配方访问数字资产的分配,并且可生成每个预期接收者的唯一付款公钥。付款公钥基于接收者的唯一所有权公钥。公钥可充当区块链地址,用于使用区块链交易转移数字资产金额(份额)。或者,地址可基于公钥生成,例如支付到公钥哈希(p2pkh)。每个公钥是公钥-私钥对的一部分。访问转移至区块链付款地址(例如,相应的公钥或p2pkh)的数字资产时,需要来自公钥-私钥对的私钥。鉴于接收者(例如爱丽丝)的付款公钥基于爱丽丝的所有权公钥,并且仅爱丽丝可访问相应的所有权私钥,仅爱丽丝可生成所需的付款私钥,以访问转移至付款地址的资金。
8.通过获取每个接收者的所有权公钥,分配方可生成一组相应的付款公钥,每个均链接到特定接收者。分配方可向接收者的付款地址分配数字资产金额(例如,表示现实世界资产的所有权的代币)。
9.根据本文公开的另一方面,提供了一种访问数字资产金额的计算机实现的方法,该数字资产金额使用与区块链相关联的交易从分配方的分配公钥转移至接收方的付款地址,其中该接收方与所有权公钥相关联;并且其中该方法包括:导致包括所有权公钥的第一交易包含在区块链中;获取与分配公钥配对的分配私钥;基于付款公钥确定付款地址,其中该付款公钥已基于所有权公钥和分配公钥生成;并且使用分配私钥确定与付款公钥配对的付款私钥。
10.在该方法中,接收者(例如爱丽丝)直接或间接地使用区块链的交易注册其唯一的所有权公钥。例如,爱丽丝可通过将其包含在区块链交易的输出中,直接注册她的所有权公钥。爱丽丝可通过请求第三方在区块链交易的输出中包含其所有权公钥,间接注册她的所有权公钥。一旦提交到区块链,交易则充当不可变的记录,将爱丽丝链接到她的所有权公钥。进一步地,通过在区块链上存储所有权公钥,分配方可获得该公钥,以便为爱丽丝生成付款公钥,并且因此生成付款地址。利用她所知的自己的所有权私钥和分配方的私钥,爱丽丝还能够确定她的数字资产份额(金额)已转移至的付款公钥。然后,爱丽丝可访问她的数字资产份额。由于无其他方可访问爱丽丝的所有权私钥,他们无法访问已经转移至爱丽丝的付款地址的数字资产。
附图说明
11.为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
12.图1是一种用于实现区块链的系统的示意性框图;
13.图2示意性地示出了可记录在区块链中的交易的一些示例;
14.图3是用于向接收方分配数字资产金额的系统的示意性框图;
15.图4是用于向多个接收者分配数字资产金额的区块链交易的示意性表示;
16.图5a和图5b示意性示出了用于注册接收方的所有权公钥的示例性区块链交易;
17.图6示意性示出了用于注册接收方的所有权公钥的另一示例性区块链交易。
具体实施方式
18.示例性系统概述
19.图1总体地示出了一种用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(p2p)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(cpu)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(fpga)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(ssd)、闪存或电可擦可编程只读存储器(eeprom)等的电子媒介和/或诸如光盘驱动器等的光学介质。
20.区块链150包括一系列数据区块151,其中在p2p网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一笔或多笔交易152,其中该上下文中的交易是指一种数据结构。数据结构的性质将取决于用作交易模型或计划的一部分的交易协议类型。给定的区块链通常全程使用一个特定的交易协议。在一种常见的交易协议中,每笔交易152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个金额,该金额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前交易152的输出,从而链接这些交易。
21.节点104中的至少一些节点扮演转发节点104f的角色,这些节点转发并因此传播交易152。节点104中的至少一些节点扮演挖掘区块151的矿工104m的角色。节点104中的至少一些节点扮演存储节点104s(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104m还维护等待挖掘到区块151中的交易152的池154。给定节点104可以是转发节点104、矿工104m、存储节点104s或其中两个节点或所有节点的任意组合。
22.在给定的当前交易152j中,输入(或每个输入)包括指针,该指针引用交易序列中先前交易152i的输出,指定该输出将在当前交易152j中被赎回或“花费”。通常,当前交易可以是池154或任何区块151中的任何交易。尽管为了确保当前交易有效,将需要存在先前交易152i并核实其有效,但是在创建当前交易152j甚至向网络106发送当前交易152j时,不必存在先前交易152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送交易152i、152j的情况(参见下面关于孤立交易的讨论)。先前交易152i同样可以称为先行交易或前任交易。
23.当前交易152j的输入还包括先前交易152i的输出被锁定到的用户103a的签名。反过来,当前交易152j的输出可以加密锁定到新用户103b。因此,当前交易152j可将先前交易152i的输入中定义的金额转移到当前交易152j的输出中定义的新用户103b。在某些情况下,交易152可具有多个输出,以在多个用户间分割输入金额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一个交易还可以具有多个输入,以将一个或更多个先前交易的多个输出中的金额汇总在一起,并重新分配到当前交易的一个或更多个输出。
24.上述可称为“基于输出的”交易协议,有时也称为未花费的交易输出(utxo)的协议
(其中输出称为utxo)。用户的总余额不是用区块链中存储的任何一个数字定义的;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有utxo值,这些utxo值分散在区块链151的许多不同交易152中。
25.作为基于账户的交易模型的一部分,另一种类型的交易协议可称为“基于账户的”协议。在基于账户的情况下,每笔交易均不通过参考过去交易序列中先前交易的utxo来定义转移的金额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类系统中,交易使用账户的运行交易记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为交易引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在交易中签名。例如,如果数据字段中包含先前交易的id,则该数据字段可指向先前交易。
26.无论采用何种类型的交易协议,当用户103希望执行新交易152j时,其希望将新交易从其计算机终端102发送至p2p网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查交易是否有效。节点协议的详细信息将与相关区块链150中使用的交易协议类型相对应,一起形成整个交易模型。节点协议通常要求节点104检查新交易152j中的加密签名是否与预期签名相匹配,这取决于交易152的有序序列中的先前交易152i。在基于输出的情况下,这可包括检查新交易152j的输入中包含的用户加密签名是否与新交易花费的先前交易152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新交易152j的输入中的加密签名是否解锁新交易的输入所指向的先前交易152i的输出。在一些交易协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新交易152j有效,当前节点会将其转发到p2p网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104f,根据相同的节点协议应用相同的测试,从而将新交易152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新交易在节点104的整个网络中进行传播。
27.在基于输出的模型中,给定输出(例如,utxo)是否花费的定义是,根据节点协议,其是否通过另一个随后交易152j的输入有效赎回。交易有效的另一个条件是其试图花费或赎回的先前交易152i的输出尚未被另一笔有效交易花费/赎回。同样,如果无效,交易152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一笔交易的输出花费超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的交易顺序,账户余额在任何时候均具有单一定义的状态。
28.除核实之外,节点104m中的至少一些节点在称为挖矿的过程中争先创建交易区块,该过程以“工作量证明”为基础。在挖矿节点104m处,将新交易添加到区块中尚未出现的有效交易的池中。然后,矿工争相通过尝试解决加密难题来组装交易池154中交易152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与交易池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104m处消耗大量的处理资源。
29.解决难题的第一矿工节点104m在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,
就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的交易池154之后由充当存储节点104s的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104m受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在p2p网络106中的存储节点104s中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于交易152记录在p2p网络106中每个存储节点104s处的有序区块中,因此提供了交易的不可变公共分类账。
30.应当注意的是,在任何给定时间争相解决难题的不同矿工104m可能会根据任何给定时间的未挖掘交易池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的交易152,并更新当前未挖掘交易池154。然后,矿工104m继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104m彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
31.在大部分区块链中,获胜矿工104m会自动获得特殊类型的新交易作为奖励,该新交易创建新的数字资产值(与将数字资产金额从一个用户转移至另一个用户的正常交易截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的交易有时称为“生成”交易,其自动形成新区块151n的一部分。该奖励可激励矿工104m争相参与工作量证明。通常情况下,常规(非生成)交易152还将在其输出中的一个输出中指定附加交易费用,以进一步奖励创建其中包含交易的区块151n的获胜矿工104m。
32.由于挖掘中涉及的计算资源,通常至少矿工节点104m中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104m和/或存储节点104s还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
33.每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理交易152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
34.扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当交易中的付款人和收款人,但不一定代表其他方参与挖掘或传播交易。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
35.每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个cpu、图形处理单元(gpu)、其他加速器处理器、特定应用程序处理器和/
或fpga。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如ssd、闪存或eeprom等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
36.客户端应用程序或软件105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动ssd、闪存密钥、可移动eeprom、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如cd或dvd rom等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
37.客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的交易152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产金额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种交易152的输出中定义的金额。
38.每个计算机设备102上的客户端应用程序105的实例可操作地耦合到p2p网络106的转发节点104f中的至少一个转发节点。这可以启用客户端105的钱包功能,以将交易152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何交易(或实际上在区块链150中检查其他方的交易,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供交易信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据交易协议制定和发送交易152。每个节点104运行软件,其被配置为根据节点协议核实交易152有效的软件,并且在转发节点104f的情况下转发交易152,以在整个网络106中传播此类交易。交易协议和节点协议相互对应,给定交易协议和给定节点协议一起实现给定的交易模型。区块链150中的所有交易152均采用相同的交易协议(尽管交易协议可允许其内存在不同的交易子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的交易子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
39.如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个交易152的集合。每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效交易池154,其等待通过工作量证明过程包含在新的区块中。每笔交易152包括指向先前交易的指针,以定义交易序列的顺序(注:交易152的序列可进行分支)。区块151的区块链一直追溯到创始区块(gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一笔或多笔原始交易152指向创始区块153,而非先前交易。
40.当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新交易152j时,她将根据相关交易协议(使用其客户端应用程序105中的钱包功能)制定新交易。然后,她将交
易152从客户端应用程序105发送至其连接的一个或更多个转发节点104f中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104f。当任何给定节点104接收新交易152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的交易152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些交易协议中,有效条件可通过交易152中包含的脚本在每个交易的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
41.如果新接收的交易152j通过有效性测试(即:“有效”的条件下),接收交易152j的任何存储节点104s将向在该节点104s处维护的区块链150的副本中的池154中添加新有效交易152。进一步地,接收交易152j的任何转发节点104f随后将有效交易152传播至p2p网络106中的一个或更多个其他节点104。由于每个转发节点104f应用相同的协议,因此假定交易152j有效,这意味着交易很快将在整个p2p网络106中传播。
42.一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104m将开始竞相解决包括新交易152的池154的最新版本方面的工作量证明难题(其他矿工104m可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的交易152j的池154的一部分的难题)。一旦包括新交易152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每笔交易152包括指向早前交易的指针,因此交易的顺序也被不可变地记录下来。
43.图2示出了示例性交易协议。这是基于utxo的协议的示例。交易152(简称“tx”)是区块链150的基本数据结构(每个区块151包括一笔或更多笔交易152)。下面将通过参考基于输出或基于“utxo”的协议进行描述。但这并不限于所有可能的实施例。
44.在基于utxo的模型中,每笔交易(“tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的交易输出(utxo),其可用作另一新交易的输入202的来源(如果utxo尚未赎回)。utxo指定数字资产金额(价值储存手段)。它还可包含其来源交易的交易id以及其他信息。交易数据结构还可包括头部201,其可包括输入字段202和输出字段203的大小指示符。头部201还可包括交易的id。在实施例中,交易id是交易数据(不含交易id本身)的哈希值,且存储在提交至矿工104m的原始交易152的头部201中。
45.比方说爱丽丝103a希望创建转移相关数字资产金额至鲍勃103b的交易152j。在图2中,爱丽丝的新交易152j标记为“tx
1”。该新交易获取在序列中先前交易152i的输出203中锁定至爱丽丝的数字资产金额,并至少将此类金额中的一部分转移至鲍勃。在图2中,先前交易152i标记为“tx
0”。tx0和tx1只是任意的标记,其不一定意味着tx0指区块链151中的第一交易且tx1指池154中的下一笔交易。tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)交易。
46.当爱丽丝创建其新交易tx1时,或至少在她将该新交易发送至网络106时,先前交易tx0可能已经有效并包括在区块链150中。该交易此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该交易将很快包括在新区块151中。或者,tx0和tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”交易,tx0甚至可以在tx1之后发送。本文交易序列上下文中使用的“先前”和“后续”一词是指由交易中
指定的交易指针定义的序列中的交易顺序(哪个交易指向哪个其他交易等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前交易(先行交易或“父交易”)的后续交易(后代交易或“子交易”)不会有效除非父交易有效。在父交易之前到达节点104的子交易被视为孤立交易。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父交易。
47.先前交易tx0的一个或更多个输出203中的一个包括特定的utxo,标记为utxo0。每个utxo包括指定utxo表示的数字资产金额的值以及锁定脚本,该锁定脚本定义后续交易的输入202中的解锁脚本必须满足的条件,以使后续交易有效,从而成功赎回utxo。通常情况下,锁定脚本将金额锁定至特定方(该金额的交易的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续交易的输入中的解锁脚本包括先前交易被锁定到的一方的加密签名。
48.锁定脚本(亦称scriptpubkey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(script)”(s大写)。锁定脚本指定花费交易输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在交易的输出中。解锁脚本(亦称scriptsig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在交易的输入202中。
49.因此在示出的示例中,tx0的输出203中的utxo0包括锁定脚本[checksig pa],该锁定脚本需要爱丽丝的签名sig pa,以赎回utxo0(严格来说,是为了使试图赎回utxo0的后续交易有效)。[checksig pa]包含爱丽丝的公私密钥对中的公钥pa。tx1的输入202包括指向tx1的指针(例如,通过其交易id(txid0),其在实施例中是整个交易tx0的哈希值)。tx1的输入202包括在tx0中标识utxo0的索引,以在tx0的任何其他可能输出中对其进行标识。tx1的输入202进一步包括解锁脚本《sig pa》,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
[0050]
当新交易tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
[0051]
《sig pa》《pa》||[checksig pa]
[0052]
其中“||”表示并置,“《

》”表示将数据放在堆栈上,“[

]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥pa(包括在tx0的输出的锁定脚本中),以认证tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在tx0中,以便执行此认证。在实施例中,签名的数据包括整个tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
[0053]
本领域技术人员将熟悉通过公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸
是指脚本语言的特定操作码。op_checksig(又称“checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ecdsa)验证签名的有效性。在运行时,移除脚本中任何出现的签名(

sig’),但在由

sig’输入验证的交易中仍保留附加要求,诸如哈希难题。再如,op_return是脚本语言操作码,用于创建交易的不可花费输出,其可以将元数据储存在交易中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
[0060]
签名pa是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ecdsa。数字签名对特定的数据段进行签名。在实施例中,对于给定交易,签名将对部分交易输入以及全部或部分交易输出进行签名。对输出的特定部分进行签名取决于sighash标志。sighash标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
[0061]
锁定脚本有时称为“scriptpubkey”,指其包括相应交易被锁定到的当事方的公钥。解锁脚本有时称为“scriptsig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,utxo赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
[0062]
分发数字资产
[0063]
图3示出了使用区块链交易分配数字资产金额(即付款)的示例性系统300。系统300包括一个或更多个接收方301和分配方(“分配者”)302。如图3中的标签1至标签n所示,可存在任意数量的接收方(“接收者”)301。每一方操作相应的计算机设备。比如,参考图1,一个或更多个接收者301可扮演爱丽丝103a或鲍勃103b的角色,操作其相应的计算机设备102a,102b。图3中的每个箭头表示使用区块链交易152转移数字资产金额。
[0064]
系统300还可包括发行方(“发行人”)303,该发行方操作相应的计算机设备。在一些实施例中,发行人303和分配者302是同一方。或者,发行人303和分配者302可以是不同方。
[0065]
分配者302和/或发行人303可采用服务器的形式,其包括一个或更多个物理服务器单元,或甚至整个数据中心。或者,分配者和/或发行人可采用一个用户终端或联网在一起的一组用户终端的形式。也就是说,分配者和/或发行人可以是个人用户,也可以是一组诸如组织的用户,例如,公司、学术机构、慈善机构等。通常而言,分配者和/或发行人包括计算机设备。计算机设备包括处理装置,该处理装置包括一个或更多个处理器,例如一个或更多个中央处理单元(cpu)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(fpga)。计算机设备还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(ssd)、闪存或电可擦可编程只读存储器(eeprom)等电子媒介和/或诸如光盘驱动器等光学介质。分配者的存储器存储被配置为在节点的计算机设备的处理装置上运行以执行其相应一个或更多个角色的软件。应当理解的是,在本文归因于分配者和/或发行人的任何措施均可通过在分配者和/或发行人的计算机设备的相应处理装置上运行的软件执行。分配者和/或发行人可例如经由互联网101与接收方301(例如,爱丽丝和鲍勃)进行通信。
[0066]
每一方都经由唯一的公钥与区块链150相关联。公钥可以是椭圆曲线加密公钥。如图3所示,每个接收者301经由其自身的所有权公钥p
oi
与区块链150相关联,分配者302经由
分配公钥p
ai
与区块链150相关联。比如,第一接收者(接收者i=1)拥有第一所有权公钥p
o1
、第二接收者(接收者i=2)拥有第二所有权公钥p
o2
,以此类推,第n个接收者(接收者i=n)拥有第n所有权公钥p
on
。应当理解的是,第一、第二......第n等仅是用于区分不同接收者及其所有权公钥的标签。在系统300包括发行人303的示例中,发行人303通过发行公钥pi与区块链150相关联。每个公钥构成公钥-私钥对的一部分,公钥基于私钥生成。通常而言,私钥是保密的,不与其他方共享或不发布。
[0067]
上面讨论的一个或更多个公钥可以是经认证的公钥。经认证的公钥与证书颁发机构颁发的公钥证书相关联。证书属于数字证书,可用于证明相关联公钥的所有权。证书还可用于证明颁发证书的证书颁发机构证实公钥的所有权。
[0068]
分配者302可访问数字资产的分配(即存储)。数字资产可表示现实世界资产的映射。例如,数字资产的特定金额可表示现实世界资产的特定金额。举例来说,数字资产可表示房屋、艺术品、专利等的所有权,分配者可负责转移资产的(部分)所有权。分配者可比如想将资产的50%所有权转移给第一接收者,将资产的50%所有权转移给第二接收者。数字资产可以是数字代币。也就是说,数字资产的分配可以是多个代币。每个代币均可与现实世界资产的金额挂钩。代币可以表示例如投票、电能的时间段、活动的门票等。例如,分配者可负责向接收者301分配(即分发)代币。然后,接收者可赎回其代币,例如用于参加音乐节。再如,代币可允许访问订阅服务(例如,媒体数据流式传输服务)。每个代币可表示访问服务的时间段(例如,一个月)。分配方可向接收方分配一定数量的代币(例如,订阅一年为12个代币),该代币可花费以访问服务。
[0069]
可选地,发行人303可向分配者302发行数字资产的分配。也就是说,发行人可生成一个或更多个区块链交易,这些交易一起将数字资产的分配从发行人转移至分配者。具体地,区块链交易将数字资产的所有权从发行人的区块链地址(例如,发行公钥pi或基于pi的地址)转移至分配者的公钥pa。举例来说,发行人可委托分配者将数字资产金额分发给接收者,从而免除发行人生成和传输(大量)区块链交易的义务。在此示例中,发行人仅需将数字资产的分配转移至分配者的分配地址(例如,公钥pa或基于pa的p2pkh)。也就是说,发行人仅需执行单一交易。
[0070]
如上文所更详细地解释,区块链交易的输出将数字资产金额锁定至特定公钥。访问(例如,转移、使用、花费)锁定至公钥的数字资产金额时,需要相应的私钥。因此,在此示例中,仅分配者302可通过与pa配对的私钥sa访问数字资产的分配。最初,数字资产的分配保持在(即锁定至)与第一分配私钥sa配对的第一分配公钥pa。如下所述,分配者可进行几次付款分配。每次付款分配(即分配数字资产金额的每次迭代)可涉及不同的公钥-私钥对。比如,第一迭代可利用p
a(1)
和s
a(1)
,第二迭代可利用p
a(2)
和s
a(2)
,第n迭代可利用p
a(n)
和s
a(n)
。为简洁起见,符号pa用于表示p
a(1)

[0071]
分配者302需要将数字资产的分配金额转移至接收者301的集合。该集合可包括单一接收者或更多个接收者。每个接收者拥有唯一的所有权私钥s
oi
,该所有权私钥与相应的所有权公钥p
oi
配对。分配者获得对应于接收者的所有权公钥p
oi
的集合,该接收者将接收数字资产分配的金额。有几种方式可获得所有权公钥p
oi
的集合。例如,每个接收者可以向分配者和/或发行人303注册(即提供)其个人所有权公钥p
oi
。下面将讨论公钥的注册。需注意,如下文所讨论,转移至接收者的相应金额可以相等,也可以不相等。
[0072]
需注意,分配者302可仅将数字资产金额转移至接收者的所有权公钥。但是,如果接收者的所有权私钥被泄露,则未来所有向接收者的付款都将泄露。但是,如果接收者的付款私钥被泄露,则仅付款被泄露。新的付款公钥-私钥对可以基于p
oi
生成,并且用作下一付款地址。p
oi
可能被认为是接收者的标识符,而p
pi
是可赎回的票券/代币(即可赎回现实世界的资产)。定期付款可使用作为认证访问点的所有权密钥p
oi
,基于p
pi
从地址进行检索。因为p
pi
可在每次付款时更新,其泄露只会导致有限的盗窃(即仅数字资产金额基于p
pi
的迭代转移至地址)。p
oi
的泄露等同于身份泄露和所有未来付款的潜在损失。
[0073]
相反,分配者302可为每个所有权公钥p
oi
生成相应的付款公钥p
pi
。对于给定接收者301,其付款公钥p
pi
至少使用接收者的所有权公钥p
oi
和分配者的公钥p
ai
两者生成。例如,对于第一轮分配,第一接收者的付款公钥至少使用第一接收者的所有权公钥p
oi
和分配者的第一分配公钥pa来生成。使用接收者的所有权公钥和分配者的公钥两者可在双方之间创建链接。
[0074]
当执行多个分配付款周期时,使用分配者的第一公钥pa生成第一付款公钥的集合。后期分配迭代可涉及使用第二不同的分配公钥p
a(2)
生成第二付款公钥的集合。下面将讨论不同分配者公钥的生成。
[0075]
分配者302控制充当或用于生成每个接收者的付款地址的付款公钥p
pi
。付款密钥p
pi
的集合允许任一方(例如,发行人303、接收者301、监管机构等)在任意点及时验证付款地址和比如转移至该付款地址的数字资产金额。
[0076]
一旦已生成付款公钥p
pi
的集合,则分配者302可生成一个或更多个区块链交易,以将数字资产存储的付款转移至预期接收者,由此交易将数字资产的相应金额从分配者的地址(基于分配公钥pa)转移至相应接收者的付款地址(基于接收者的付款公钥p
pi
)。付款可在单一交易中进行转移。也就是说,单一交易可具有多个输出,由此每个输出将数字资产份额转移至不同的付款地址(即,转移至不同的接收者)。或者,付款可使用多个交易进行转移,例如,每个交易可将数字资产的份额转让至单个不同的付款地址(即不同的接收者)。
[0077]
分配者302可将交易传输至区块链网络106,即传输至连接到区块链的一个或更多个节点104。如果交易通过满足区块链协议的条件而被视为有效交易(如上所述),则交易将提交到区块链150,并且充当所分配金额的不可改变的公共记录。
[0078]
一旦交易提交到区块链,则可在一定条件下访问数字资产金额。其中的一个条件是在试图访问数字资产金额的交易中提供使用对应于付款公钥p
pi
的付款私钥s
pi
生成的签名。换言之,如果基于第一公开付款密钥p
p1
将数字资产份额转移至付款地址,则来自第一公钥-私钥对的第一私人付款密钥s
p1
需要将该份额转移至另一区块链地址。为了访问其数字资产份额,每个接收者301必须生成对应于其付款公钥p
p1
的付款私钥s
pi
。这要求必须知道分配者的私钥sa。
[0079]
分配者302可将私钥sa发布在区块链上,例如,在区块链交易的(可证明的)不可花费的输出中。比如,sa可包含在交易的op_return输出中。op_return操作码将交易的输出标记为无效,从而保证后续交易的输入无法花费该输出。或者,分配者可在链下发布私钥sa,例如通过在网上发布和/或经由其他安全的通讯方式传输至接收者301,例如加密电子邮件。
[0080]
下面描述一种用于生成付款公钥p
pi
的技术,以供分配者302和接收者301使用。付
款公钥p
pi
可从分配私钥sa以及私人所有权公钥s
oi
中派生,具体如下:
[0081]
p
pi
=s
pi
·
g=(s
oi
sa)
·g[0082]
p
pi
=pa s
oi
·g[0083]
p
pi
=pa p
oi
[0084]
此处使用公钥加法在两个地址之间创建链接,因此双方(分配者302和接收者301)无需进一步通讯。使用个人付款公钥(p
pi
=pa p
oi
)意味着分配者可将数字资产的分配从pa分发至跨整个地址集p
oi
的单独输出。图4中示出了交易400的示例。
[0085]
正如所示的,交易400包括输入401,该输入用于从分配者的分配公钥pa和多个输出转移数字资产的分配。在此示例中,存在n个输出。每个输出将数字资产的相应金额402转移至属于相应接收者302的相应付款公钥403。应当理解的是,图4是交易的表示。实际上,交易的输入将包括解锁脚本,并且交易的每个输出将包括锁定脚本。
[0086]
分配者302使用区块链交易将数字资产金额分发给付款公钥p
pi
的集合。然后,分配者可使用op_return声明在链上发布秘密分配私钥sa,或采用其他方式,从而每个接收者301可计算p
pi
并独立检索其相应金额。
[0087]
为了访问(即花费)其数字资产金额,接收者301必须能够确定其金额所转移到的付款地址。请记住,付款地址基于接收者的所有权公钥p
oi
(仅接收者知道相应的私钥s
oi
)和分配者的公钥pa而生成。因此,接收者可计算其自身的付款公钥p
pi
及其付款地址(例如p2pkh)。进一步地,接收者必须能够确定与其付款公钥p
pi
配对的付款私钥s
pi
。接收者拥有自己的所有权私钥s
oi
和分配者的私钥sa。因此,接收者可以使用上述方程式生成付款私钥s
pi
,即s
pi
=s
oi
sa。
[0088]
对于连续分配,则必须更新分配者的公钥pa,因为相应私钥sa已发布,使得将总共存在用于n次分配的n个分配公钥-私钥对。在使用相应私钥s
a(1)
执行第一分配(n=1)至公钥p
a(1)
后,分配者302用相应的更新私钥s
a(2)
生成更新的公钥p
a(2)
。当分配用于第二分配的数字资产金额时,与之前一样,除了使用更新的公钥,分配者生成第二付款公钥p
pi(2)
的集合。也就是说,p
pi(2)
=p
oi
p
a(2)
,或通常而言,p
pi(n)
=p
oi
p
a(n)
。然后,分配者可生成一个或更多个交易,将第二分配的金额转移至接收者更新的付款地址。更新的付款地址可以是更新的公钥本身,或更新的公钥的哈希值。
[0089]
公钥可通过几种方式进行更新。在一些示例中,公钥随机进行更新。在其他示例中,使用以下混合方案,其中第n公钥p
a(n)
从随机(或以其他方式,例如使用共享密钥)生成的公钥p
an
与先前的公钥列表的总和中派生,以在分配序列之间创建链:
[0090]
[0091]
在此示例中,更新的分配公钥等于新(例如随机)生成的密钥加上所有先前公钥的总和。该公钥结构创建了付款的审计追踪,将每个更新的公钥链接到先前的公钥。通过这种方法,创建了付款链。新公钥不是单纯从先前的公钥生成,因为这会增加攻击面(即,如果旧公钥被泄露,攻击者将能够生成所有未来的地址)。
[0092]
可选地,每个接收者301可更新其所有权公钥p
oi
。比如,如wo2017/145016所述,(认证的)所有权公钥p
pi
可使用从共享密钥(在接收者和分配者302之间共享)派生的确定性组件进行更新。wo2017/145016中描述的技术总结如下所示:
[0093]
1.爱丽丝创建消息并且对其进行哈希处理。
[0094]
2.爱丽丝使用哈希处理的消息经由ecc加法创建二级公钥-私钥对。
[0095]
3.爱丽丝将哈希处理的消息发送至分配者,由其二级私钥进行签名。
[0096]
4.分配者核实爱丽丝的签名。
[0097]
5.分配者使用哈希处理的消息经由椭圆曲线加密(ecc)加法创建二级公钥-私钥对。
[0098]
6.爱丽丝和分配者现在都能够计算彼此的二级公钥。
[0099]
7.爱丽丝和分配者用其个人二级私钥乘以彼此的二级公钥,以派生共享密钥(交换律)。
[0100]
8.对哈希处理的消息进行哈希处理(以及对哈希处理的消息的哈希值进行哈希处理)能够创建共享密钥的层次结构,其中仅需要知道原始消息。
[0101]
需注意,在一些示例中,分配者可执行归因于爱丽丝的动作,并且接收者可执行归因于分配者的动作。
[0102]
所有权公钥p
oi(1)
,p
oi(2)
,...,p
oi(n)
的序列可使用上述方法生成。接收者和分配者可将第二所有权公钥p
oi(2)
用于第二分配周期。每次分配可使用更新的所有权公钥,其中第n个周期使用第n个更新的所有权公钥p
oi(n)
。这通过定期更新密钥增强了交易的安全性,同时还保留了对初始(认证的)所有权公钥p
oi
的引用,例如以创建审计追踪。
[0103]
分配者可使用更新的所有权公钥生成更新的付款公钥,用于使用p
pi(n)
=p
oi(n)
p
an
进行连续分配。
[0104]
在一些示例中,不是每个接收者都能收到同等份额的数字资产存储。也就是说,一些接收者可能收到比其他人更大的份额。每个所有权公钥p
oi
可用数字资产分配的(百分比)权重di进行编码。分配者可维护并存储每个份额di的相对权重记录,以确保在分配时将正确的分配比例分发给每个付款公钥p
pi
。应当注意的是,∑di=100%。
[0105]
分配者302还可维护和存储有效所有权公钥(active ownership public key)的集合的记录。例如,一些接收者可将其所有权转移至不同的接收者(例如,现有接收者或新接收者),或转移至发行人,从而撤销其自身的所有权公钥p
oi
。因此,需要获取(刷新)所有权公钥p
oi
列表,以识别已经添加或从有效接收者列表中撤销的任何密钥。更新可以实时进行,或在生成分配交易时进行。
[0106]
如上文所述,爱丽丝可在区块链上注册其所有权公钥,以允许分配方获得其所有权公钥。图5a和图5b示出了用于注册爱丽丝的所有权公钥的示例性交易。如图5a所示,交易500从爱丽丝发送给发行人。也就是说,交易500包括输入,该输入具有包括爱丽丝的签名和爱丽丝的公钥的解锁脚本501。这使得爱丽丝能够花费已经发送给爱丽丝的先前区块链交
易的输出。交易500包括输出,该输出具有锁定脚本502,该锁定脚本被配置为将输入金额转移至发行人(例如,对发行人公钥进行支付到公钥哈希)。这充当从爱丽丝至发行人的股东付款。需注意,该股东付款可在区块外实现,例如使用银行转账等。输入包括等于v w的值503。此处,值是份额金额的付款,w是表示链接到爱丽丝的权重di的代表值。需注意,值w是可选的。
[0107]
图5b示出了包含爱丽丝的所有权公钥的示例性交易504。然后,交易504从发行人发送给爱丽丝。也就是说,交易504包括输入,该输入具有包括发行人的签名和发行人的公钥的解锁脚本。交易504包括两个输出。第一输出包括不可花费的交易输出506中爱丽丝的所有权公钥,例如op_return输出。这在区块链150上注册了爱丽丝的所有权公钥。第二输出507包括对爱丽丝进行的支付到公钥哈希。这允许爱丽丝撤销(或停用)其所有权公钥,例如将其份额转移至不同方(different party)。或者,第二输出507可包括对发行人进行的支付到公钥哈希。这将允许发行人撤销爱丽丝的所有权公钥。作为另一替代方案,第二输出507可能需要m个签名中的n个签名,以花费输出值508。比如,第二输出507可能需要爱丽丝和发行人的公钥中的一者或两者。
[0108]
现在参照图5a和图5b对维护有效所有权公钥p
oi
和/或权重di的一种方法进行描述。在注册接收者的所有权公钥p
oi
时,接收者301或发行人303(带发行公钥pi)可将具有代表性的数字资产金额(数字资产存储中的同一数字资产或不同类型的数字资产)转移至接收者的所有权公钥p
oi
例如,数字资产可以是原生代币。代表性金额表示数字资产金额的有效所有权(即权利)。在一些示例中,在注册所有权公钥p
oi
期间,多签名交易可由发行人或接收者设置,使得双方可核实交易,从而针对分配至接收者的金额权重(例如,百分比)di达成一致。
[0109]
将代表性金额映射到相对权重di的比例可由发行人303决定。例如,如果接收者301将接收数字资产分配的25%,则代表性金额可以是映射到数字资产的25个单位的代币。代表性金额可发送至区块链交易中接收者的所有权公钥p
oi
。图5a中示出了此等交易。在此示例中,接收者(假设爱丽丝)经由第一输出将金额v转移至发行人的公钥pi。这充当数字资产金额的付款。在图5b的示例性交易中,发行人向爱丽丝的所有权公钥p
o1
转移代表性金额w,表示数字资产的d1=w%份额。该交易将爱丽丝的所有权公钥p
o1
链接至其权重d1。
[0110]
如果不赎回(即花费)向爱丽丝提供的输出507,则其交易的输出归类为未花费的交易输出(utxo)。整个区块链中的utxo集合可以很容易地进行查询。也就是说,utxo集合就像区块链的通用存储器一样。所有权公钥p
o1
的有效持有人将出现在utxo集合中。因此,分配者可查询utxo集合中的所有权公钥(例如认证的所有权公钥)p
oi
及其相应权重di,以确定向谁转移数字资产的付款以及转移多少数字资产。
[0111]
接收者301(例如爱丽丝)可决定将其分配转回发行人303。为此,爱丽丝可生成交易,将代表性金额w转回发行人。这会使得爱丽丝的所有权公钥p
o1
将不再出现在utxo集合中。或者,爱丽丝可选择使用区块链交易将其所有权转移(例如,交易)至新接收者的所有权公钥p
o2
。交易可以是要求发行人签名的多签名交易。采用那种方式,则仅在发行人批准时可进行转移。
[0112]
现在参照图6描述注册所有权公钥和维护有效所有权公钥p
oi
和权重di列表的替代方法。
[0113]
该方法涉及在不可花费的交易输出中注册所有权公钥p
oi
。例如,在初始注册过程期间,发行人303可宣布金额的权重d1,该权重由不可花费的输出中爱丽丝的所有权公钥p
o1
表示。在这种意义上,所有权公钥充当与权重di挂钩的代币。由于例如包括导致输出(锁定)脚本在执行时失效的操作码,输出可以是不可花费的。在一些此等示例中,无论何时注册或撤销所有权公钥p
oi
,op_return输出均可包含在带认证标识符(例如,4字节前缀)的交易中。标识符可由发行人或可信的第三方进行认证。输出可由接收者或发行人生成。
[0114]
图6示出了一个示例性交易。交易600包括输入601,该输入转移来自爱丽丝的公钥和输出602的金额x(交易费用)。输出602是不可花费的交易输出。输出602包括认证标识符603、爱丽丝的所有权公钥p
o1
和爱丽丝的权重d1。
[0115]
分配者302可识别带特定标识符的交易,例如特定前缀。例如,分配者可存储所有权公钥的列表,然后该列表可通过用特定认证标识符识别交易来进行更新。有效所有权公钥可用特定标识符(例如,前缀)表示,分配者可在分配到期时检查该标识符。从此列表中撤销的任何所有权公钥均可用不同标识符表示,该不同标识符在撤销时(例如,份额交易时)通过op_return交易分配给过去的持有人。
[0116]
上面假设分配者302是可信的第三方。在替代场景中或作为附加安全措施,共享的分配私钥sa可存储在可信的执行环境的飞地中,例如诸如sgx(软件保护扩展),以保护与pa相关联的数字资产的分配。分配者的软件中定义的所有自动化代码还可在可信的执行环境中运行,以避免泄露秘密sa,直至付款已安全分配至付款公钥p
pi

[0117]
简而言之,公钥可用于表示数字资产的所有权。在注册时,每个持有人向例如发行方或分配方处注册其个人所有权公钥。发行的公钥总数等于持有人n的总数量。使用公钥,例如椭圆曲线加密(ecc)密钥表示资产所有权可用于以下任何一个或更多个应用。
[0118]
·
安全——ecc公钥是可证明安全的。份额的所有权可通过数字签名来证明。以这种方式使用底层加密系统表示份额所有权提供了较小的代码库,并且减少了攻击面。
[0119]
·
法规——知晓在公钥发行时提交的客户信息可实现法规遵从性。公钥可使用证书颁发机构进行认证。
[0120]
·
可追踪份额——组织/监管机构和持有人本身可使用唯一的公钥集合,识别分配份额列表中的完整持有人名单。这确保了双方(例如,公司及其股东)的透明性,而不泄露个人信息或持有人的身份。
[0121]
下面描述了使用上述实施例的示例性用例。付款分配可用于以下用途:股息支付;债券和国库券的息票;单位信托基金分配;分散破产分配、伙伴关系分配和公平分配;月工资支付;贷款偿还;和支付使用费,例如,从销售利润中向艺术家支付使用费。
[0122]
现在将描述特定用例。发行人(例如,公司)kangaroo ltd使用可信的第三方,该第三方在区块链上提供代币协议。协议使用请求-响应机制,以生成智能合约。kangaroo ltd.公司希望将其数字资产中的份额分发给其股东。下面是参与者根据上述实施例遵循的程序的分步概述。下面列出了示例性分配方案中涉及的各方的名称、其角色及其拥有的任何公钥-私钥对。
[0123]
·
爱丽丝——股东——p
o1
,p
p1
[0124]
·
鲍勃——发行人(例如,kangaroo ltd.公司)——pi[0125]
·
卡罗尔——分配者——pa[0126]
·
代币服务(ts)——智能合约提供商——智能合约地址
[0127]
为注册数字资产中份额的所有权:
[0128]
1.爱丽丝将交易发送至请求kangaroo ltd公司的数字资产中1%份额的智能合约地址。
[0129]
2.鲍勃看到爱丽丝的股东请求,并接受她的请求。
[0130]
3.爱丽丝将份额的数字资产金额转移给鲍勃。
[0131]
4.鲍勃发送op_return语句,声明爱丽丝归属于其个人份额所有权密钥p
o1
的份额的价值。
[0132]
为分配数字资产的份额:
[0133]
1.在份额到期分配时,kangaroo ltd公司将其数字资产分配转移至pa。
[0134]
2.卡罗尔检索pa中的资金,并在每个op_return语句中引用有效所有权公钥列表。卡罗尔可从鲍勃认证的ts获取此信息。
[0135]
3.卡罗尔根据与每个p
oi
相关联的持有百分比,将份额分配给公钥p
pi
=p
oi
pa集合定义的每个付款公钥。
[0136]
4.卡罗尔在op_return交易中于链上发布秘密sa。
[0137]
5.爱丽丝现在可计算p
p1
=p
o1
pa,其中她可检索季度股息付款。
[0138]
应当理解,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任何一个或更多个陈述提供一种方法、装置或程序。
[0139]
陈述1:一种生成与区块链相关联的至少一个交易的计算机实现的方法,所述至少一个交易用于将数字资产的分配的金额从分配方分发给一个或更多个接收方,其中所述分配方与分配公钥相关联,所述分配公钥与所述分配相链接,其中每个接收方与相应所有权公钥相关联,并且其中所述方法包括:获取所述一个或更多个接收方中每一个接收方的相应所有权公钥;对于所述一个或更多个接收方中的每一个,基于(i)与该接收用户相关联的所述所有权公钥、和(ii)所述分配公钥,生成相应付款公钥;以及,生成所述至少一个交易,其中所述至少一个交易包括一个或更多个输出脚本,每个输出脚本被配置为将所述分配的相应金额转移至相应付款地址,所述相应付款地址基于所述相应付款公钥。
[0140]
例如,付款地址可以是付款公钥。或者,付款地址可以是p2pkh,即付款公钥的哈希值。
[0141]
陈述2:根据陈述1所述的方法,所述方法包括:导致所述至少一个交易包含在所述区块链中。
[0142]
例如,所述导致包括将至少一个交易传输给区块链网络的一个或更多个节点以使交易包含在区块链中。
[0143]
陈述3:根据陈述2所述的方法,其中所述分配公钥与分配私钥配对,并且其中所述方法包括使所述分配私钥可供所述一个或更多个接收方使用。
[0144]
例如,分配私钥可在交易中于链上发布(例如,使用不可花费的交易输出或可花费的输出中的私钥难题)。或者,私钥可在链下发布,例如使用侧信道传输至接收方。
[0145]
陈述4:根据陈述1至3中任一项所述的方法,其中每个所有权公钥与相应权重相关联,并且其中所述方法包括:对于每个接收方,获取与其所有权公钥相关联的所述相应权重,其中拟转移至所述接收方的所述分配的相应金额基于所述获取的相应权重。
[0146]
陈述5:根据陈述1至4中任一项所述的方法,其中所述区块链包括多个未花费的交易输出,其中每个未花费的交易输出与相应不可花费的交易输出相链接,所述不可花费的交易输出包括相应接收方的所有权公钥,并且其中所述获取相应所有权公钥包括从与相应未花费的交易输出相链接的所述不可花费的交易输出中获取所述相应所有权公钥。
[0147]
陈述6:根据从属于陈述4的陈述5所述的方法,其中每个未花费的交易输出包括所述权重的相应表示;并且,所述获取相应权重包括,对于每个接收方,基于与所述相应不可花费的交易输出相链接的所述未花费的交易输出中的所述相应表示获取所述相应权重,所述不可花费的交易输出包括该接收方的所述所有权公钥。
[0148]
例如,对于与注册所有权公钥链接的未花费的交易输出,可通过扫描多个未花费的交易输出获得权重。
[0149]
陈述7:根据陈述6所述的方法,其中所述权重的每个表示都是所述数字资产的代表性金额。
[0150]
陈述8:根据陈述5至7中任一项所述的方法,所述方法包括:基于所述相应所有权公钥是否与未花费的交易输出相链接,确定是否所述一个或更多个接收方中每一个接收方的相应所有权公钥是有效所有权公钥;以及,所述生成相应付款密钥包括仅生成用于有效所有权公钥的相应付款密钥。
[0151]
陈述9:根据陈述1至8所述的方法,其中所述区块链包括多个具有不可花费的交易输出的交易,每个不可花费的交易输出包括相应接收方的所述所有权公钥,并且其中所述获取相应所有权公钥包括从所述相应不可花费的交易输出中获取所述相应所有权公钥。
[0152]
陈述10:根据至少从属于陈述4的陈述9所述的方法,其中每个不可花费的交易输出包括与所述相应所有权公钥相关联的所述权重的表示;其中所述获取相应权重包括对于每个接收方,基于所述相应不可花费的交易输出中的所述表示确定所述相应权重。
[0153]
陈述11:根据陈述9或陈述10所述的方法,包括基于预定标识符识别每个不可花费的交易输出,所述预定标识符包含在所述至少一个不可花费的交易输出中。
[0154]
陈述12:根据陈述11所述的方法,所述方法包括:对于每个接收用户,基于包括其相应所有权公钥的所述至少一个不可花费的交易输出是否包括所述预定标识符,确定其相应所有权公钥是否为有效所有权公钥;所述生成相应付款密钥包括仅生成用于有效所有权公钥的相应付款密钥。
[0155]
陈述13:根据陈述4至12任一项所述的方法,所述方法包括:保持每个接收用户的所述相应权重的记录,和/或保持所述有效所有权公钥的记录。
[0156]
陈述14:根据陈述1至13所述的方法,其中所述至少一个交易是单一交易,所述单一交易包括所述一个或更多个输出脚本。
[0157]
陈述15:根据陈述1至14所述的方法,其中一个或更多个付款地址是托管付款地址,并且其中所述方法包括从所述一个或更多个接收方的至少一个中扣留所述分配私钥,直到所述至少一个接收方满足至少一个条件为止。
[0158]
陈述16:根据陈述1至15所述的方法,包括:生成更新的分配公钥;对于所述一个或更多个接收方中的每一个,基于(iii)与该接收方相关联的所述所有权公钥和(iv)所述更新的分配公钥生成更新的相应付款公钥;以及,生成所述至少一个交易,其中所述至少一个交易包括一个或更多个输出脚本,每个输出脚本被配置为将所述分配的相应金额转移至相
应接收方的相应更新的付款地址,所述相应更新的付款地址基于所述相应更新的付款公钥。
[0159]
陈述17:根据陈述16所述的方法,包括发布与所述更新的分配公钥配对的更新的分配私钥。
[0160]
陈述18:根据陈述1至17所述的方法,其中所述分配使用所述区块链的交易,从与发行方相关联的发行公钥转移至基于所述分配公钥的分配地址。
[0161]
陈述19:根据陈述3或从属于其的任何后续陈述所述的方法,其中所述分配私钥存储在可信的执行环境内,并且其中所述分配私钥仅可在所述导致至少一个交易包含在区块链中之后由所述分配方访问。
[0162]
陈述20:所述分配方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被布置为在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据陈述1至19中任一项所述的方法。
[0163]
陈述21:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在分配方的计算机设备上运行时,执行根据陈述1至19中任一项所述的方法。
[0164]
陈述22:一种访问数字资产金额的计算机实现的方法,所述数字资产金额使用与区块链相关联的交易从分配方的分配公钥转移至接收方的付款地址,其中所述接收方与所有权公钥相关联;并且其中所述方法包括:导致包括所述所有权公钥的第一交易包含在所述区块链中;获取与所述分配公钥配对的分配私钥;基于付款公钥确定付款地址,其中所述付款公钥已基于所述所有权公钥和所述分配公钥生成;以及,使用所述分配私钥确定与所述付款公钥配对的付款私钥。
[0165]
陈述23:根据陈述22所述的方法,所述方法包括:生成第二交易,其中所述第二交易将所述数字资产金额从所述付款地址转移至所述区块链的不同地址。
[0166]
陈述24:根据陈述22或陈述23所述的方法,其中所述区块链包括具有未花费的交易输出的第三交易,其中所述未花费的交易输出包括链接到所述所有权公钥的所述数字资产金额,并且其中所述方法包括生成第四交易,所述第四交易将链接到所述所有权公钥的所述数字资产金额转移至所述区块链的不同方(different party)的公钥。
[0167]
陈述25:根据陈述24所述的方法,其中所述不同方是:(i)与不同所有权公钥相关联的不同接收方、或(ii)发行方,其中所述分配使用所述区块链的交易,从与所述发行方相关联的发行公钥转移至基于所述分配方的所述分配公钥。
[0168]
陈述26:接收方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被布置为在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据陈述22至25中任一项所述的方法。
[0169]
陈述27:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在接收方的计算机设备上运行时,执行根据陈述22至25中任一项所述的方法。
[0170]
根据本文公开的一方面,可提供一种包括接收方、分配方和发行方的动作的方法。
[0171]
根据本文公开的一方面,可提供一种包括接收方、分配方和发行方的计算机设备的系统。
[0172]
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献