使用区块链网络的多轮代币分发系统和方法与流程

文档序号:19877769发布日期:2020-02-08 06:37阅读:482来源:国知局
使用区块链网络的多轮代币分发系统和方法与流程

本发明一般涉及区块链交易,尤其涉及用于构建和执行交易的方法和设备,其中输入和输出以仍然确保交易集合的安全性和其完全完成的方式脱钩。特别地,本申请提供了用于多个输入节点以安全和确定的方式协同地将代币分发给多个输出节点的方法和系统,该方式防止代币丢失和被盗,同时保持免信任的网络结构。



背景技术:

在本文中,使用术语“区块链(blockchain)”来包括所有形式的电子的、基于计算机的分布式账本(distributedledger),包括但不限于基于共识的区块链和交易链技术、许可和未许可的账本、共享账本及其变型。尽管已经提出并开发了其他区块链实施方案,但区块链技术最广为人知的应用是比特币账本(bitcoinledger)。虽然本文中出于方便和说明的目的可以引用比特币,但应指出的是,本发明并不限于与比特币区块链的使用,其他替代性的区块链实现方案和协议也落入本发明的范围内。

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

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

交易涉及一个或多个代币从一个节点到另一个节点的转移。代币可代表对网络资源的未来控制。在某些情况下,代币可代表资产或价值,但不是一定的。例如,在某些情况下,代币可以被理解为加密货币。然而,本申请不限于在加密货币环境中的实现,而是被更广泛地理解为涉及用于控制代币的分布式转移的区块链网络。

区块链技术(例如比特币)的公认优势之一是交易的匿名性。比特币用户的个人详细信息并未正式和明确地附加到比特币地址上,区块链的比特币账本仅包含公共地址信息。但是,使用辅助数据(例如完成交易所需的发货地址)和分析,感兴趣的第三方可能能够组合公开可用的信息,以将用户的身份与特定的比特币地址相关联。

为了促进比特币协议中更高层次的匿名性,可以采用混合解决方案。在集中式混合中,参与者集合(其中至少一个参与者试图将区块链代币从一个地址移动到另一个地址)将其代币转移到由混合服务提供商管理的中央池。然后,服务提供商将代币从中央池分发到合适的输出地址。混合协议依赖于服务提供商的可信度,服务提供商了解其他参与者的输入-输出关系。这种集中式结构可能存在问题,因为(1)不诚信的混合服务可能试图窃取用户的代币,以及(2)混合服务可能会受到监管机构或其他利益相关方的压力,从而释放输入和输出地址的映射。更一般地讲,混合是一种特定类型的分发协议,通过该协议,多个输入节点在多个输出节点之间分发对多个代币的控制。

许多代币分发服务和潜在的协议可能会受到不良的脱钩或安全性受损的影响。为了使分发协议在分布式区块链网络环境中有效,必须对其进行设计和操作,以尽量减少对集中式机构的依赖,同时确保所有参与节点的完成,以避免恶意或不平衡的代币分发结果。因此,希望提供改进的方法和设备,以促进代币分发,同时避免代币丢失或被盗,并确保该过程被实现为“免信任的”。在分布式区块链网络中实现这样一个过程而不使用集中式机构是一个重大的技术挑战。在多轮代币分发过程中,确保实现规定的代币分发并防止故意的或意外的代币不合理分配(例如,由于在一轮或多轮过程中参与者节点离线)尤其具有挑战性。

现在已经设计出这样一种改进的解决方案。



技术实现要素:

因此,根据本发明,提供了如所附权利要求中定义的方法和设备。

本发明可以提供一种计算机实现的方法和相应的系统。该方法/系统可描述为区块链实现的方法/系统。本发明可描述为安全方法或加密方法/系统。本发明可提供数字资产(例如一部分或一定量的加密货币)的安全转移。附加地或替代地,本发明可提供用于控制数字资产(例如一部分或一定量的加密货币)的转移的控制机制。

本申请描述了一种使用区块链发起代币转移过程的计算机实现的方法,用于在多对发送者节点和相应的接收者节点之间转移相应的第一数量的代币。所述方法包括:确定所述代币转移过程中的交易轮数;基于所述相应的第一数量的代币和所述交易轮数生成间接代币交易集合(tt),其中,集合中所有间接代币交易的执行导致所述相应的第一数量的代币从所述发送者节点到其相应的接收者节点的净转移,并且其中,所述间接代币交易集合包括所述发送者节点和所述接收者节点的随机化配对,其中每个节点可以是特定间接代币交易的输入节点或输出节点;以及对于每个发送者和接收者节点,将所述间接代币交易集合的子集传递到该节点,所述子集包括该节点是所述输入节点或所述输出节点的交易。

在一些实施方式中,所述间接代币交易集合包括第一组随机生成的交易,所述第一组中的每个交易指定用于在随机选择的参与节点对之间转移的相应的间接代币数量。

在一些实施方式中,随机选择所述间接代币数量。

在一些实施方式中,所述间接代币数量由概率分布确定。

在一些实施方式中,所述间接代币数量小于或等于阈值量。

在一些实施方式中,所述间接代币交易集合还包括第二组交易,所述第二组交易用于将由所述第一组交易产生的净代币转移与所述发送者节点和所述接收者节点之间的所述第一数量的代币的净转移进行协调。

在一些实施方式中,将所述子集传递给参与节点包括向所述参与节点发送包含所述子集的加密消息,所述消息使用与所述参与节点相关联的公钥加密。

在一些实施方式中,所述间接代币交易集合基于每轮(q)的交易数量生成。

本申请还描述了用于发起代币转移过程的计算设备,所述代币转移过程包括多个参与节点,其中,所述计算设备包括存储器、提供网络连接的网络接口以及用于执行本文描述的方法的处理器。

本申请还描述了存储处理器可执行指令的非暂时性处理器可读介质,用于在多个参与节点间发起代币转移过程,其中,当所述处理器可执行指令由处理器执行时,使得所述处理器执行本文描述的一种或多种方法的操作。

附图说明

关于本发明的一个方面或实施例描述的任何特征也可以用于一个或多个其他方面/实施例。参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并得以阐明。现在将仅以示例的方式并参考附图来描述本发明的实施例,其中:

图1示出了节点的示例区块链网络;

图2示出了在付款方节点和收款方节点之间建立的承诺通道的示意图;

图3以流程图的形式示出了根据本申请实施例的参与代币转移过程以在转让方-受让方对之间转移代币的示例方法;

图4以流程图的形式示出了根据本申请实施例的参与代币转移过程以在转让方-受让方对之间转移代币的另一示例方法;

图5以流程图的形式示出了用于在间接匿名转移协议中在转让方节点和受让方节点之间构建承诺通道的示例过程;和

图6示出了简化的参与节点的框图。

具体实施方式

在本申请中,术语“和/或”旨在涵盖所列元素的所有可能的组合和子组合,包括任何一个单独列出的元素、任何子组合或所有元素,并且不一定排除附加元素。

在本申请中,短语“……或……中的至少一个”旨在覆盖任何一个或多个所列元素,包括任何一个单独列出的元素、任何子组合、或所有元素,不一定排除任何其他元素,并且不一定要求具有所有元素。

首先参考图1,图1以框图形式示出了与区块链相关联的示例区块链网络100。区块链网络是一个点对点的开放式成员网络,任何人都可以加入,无需邀请或无需经其他成员同意。运行区块链协议(区块链网络100在区块链协议下运行)实例的分布式电子设备可以参与区块链网络100。这种分布式电子设备可以称为节点102。例如,区块链协议可以是比特币协议或其他加密货币。

运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括例如计算机(如台式计算机、笔记本电脑、平板电脑、服务器)、移动设备(如智能手机)、可穿戴计算机(如智能手表)、或其他电子设备。

区块链网络100的节点102使用合适的通信技术彼此连接,该通信技术可以包括有线和无线通信技术。在许多情况下,区块链网络100至少部分地通过互联网实现,并且一些单独节点102可以位于地理上分散的位置。

节点102维护区块链上所有交易的全局账本。全局账本是分布式账本,并且每个节点102可以存储全局账本的完整副本或部分副本。影响全局账本的节点102的交易由其他节点102验证,从而保持全局账本的有效性。本领域的普通技术人员将会理解实现和操作区块链网络(例如使用比特币协议的区块链网络)的细节。

每个交易通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定了如何以及由谁访问交易的输出。交易的输出可以是作为交易结果的值被转移到的地址。然后,这些代币作为可用的交易输出与该输出地址相关联。在加密货币(例如比特币)环境中,可用的交易输出可称为未花费的交易输出(utxo)。后续的交易可以引用该地址作为输入,以便将这些代币转移到一个或多个其他地址。

虽然这些交易是伪匿名的(因为区块链账本上的交易中不包含任何个人信息),但是可以跟踪交易链中的代币转移,并且在某些情况下,可以使用外部数据将代币链接到个人。为了提高匿名性,可使用混合交易汇集来自各种来源的输入,然后将汇集的代币进行划分并分配给输出。如果所有的输入和输出大小相同,则很难将特定的输入与特定的输出相关联。然而,在这种交易中,至少一个参与节点知道由另一个参与节点指定的输入地址和输出地址之间的链接。在这种混合交易中,例如比特币协议中的混币(coinjoin)操作,使用具有多个输入和多个输出的单个交易来混合这些代币。

其他一些匿名化技术(例如环签名或隐藏地址)用来试图避免暴露输入和输出之间的链接,其效果各不相同。隐藏地址试图解除特定用户向其发送代币的输出地址的链接。环签名试图通过使一组可能的签名者中的任何一个都具有对特定交易进行签名/授权的可能性,来使源不可追踪。不幸的是,环签名已被证明在某些协议(例如,比特币)中难以实现。其他一些加密货币(例如门罗币(monero))是专门设计用于启用环签名。

本发明提供了一种代币转移协议,该代币转移协议用于通过使用协议的参与者之间的间接代币交易集合来掩盖代币在转让方和受让方之间的移动。具体地,描述了一种安全机制,该安全机制要求该代币转移协议的间接代币交易集合在任何交易能够被执行之前由该协议的所有参与节点来验证。如果一个或多个恶意参与节点未按照协议执行其分配的操作,则这种安全机制可防止其余参与节点受到负面影响。该间接代币交易集合包括协议的不同随机参与节点对之间不同数量的多次转移。在协议规定的间接代币交易完成后,指定的代币将从转让方间接地被转移到受让方。

更一般地的说,本发明提供了一种协议,该协议可以被实现为在多个转让方-受让方对之间实现期望的代币转移。该协议可以包括多个参与节点,其中每个参与节点向另一参与节点发送一个或多个代币转移或从另一参与节点接收一个或多个代币转移。可以使用协议中不同的参与节点对之间的间接代币交易集合来实现转让方-受让方对的代币期望转移。间接代币交易以这样的方式实现,即确保在仅发生某些转移之后协议的完成和避免协议的失败,从而确保适当的代币转移到达其各自的预期目的地。在一些实现中,承诺通道用于促进间接代币交易。如下所述,参与节点可能能够检查已经根据协议要求构建的承诺通道。通过这种方式,协议提供了一种安全的方式确保协议被完全实现,而没有部分完成以及因此而无法实现代币期望的最终分配的风险。

在本文的描述中,可以使用术语“输入节点”、“输出节点”、“参与节点”、“输入地址”和“输出地址”。对节点“地址”的引用并不意味着引用物理节点的网络地址。相反,“地址”是在具有代币分配的区块链上的交易中指定的地址,物理节点可以通过拥有对应于交易签名的密钥来主张对该地址的所有权。从这个意义上来说,“输出地址”不是参与节点的地址,而是参与输出节点拥有或与之相关联的区块链交易输出地址。同样地,“输入地址”是参与输入节点拥有或与之相关联的可用交易输出(在加密货币术语中,即uxto)的地址。

承诺通道

各种区块链技术(例如比特币)有时可能会在参与节点之间成对交易的构建中使用“承诺通道”。承诺通道被设计为允许节点进行多个交易,而无需将所有交易都提交给区块链。一旦在一对参与节点之间建立了承诺通道,节点就可以在给定的时间段内参与任意数量的交易,且最终只有两个交易被添加到区块链。因此,使用承诺通道可以减少需要增加到区块链的交易数量,并降低相关交易成本。如果受让方节点不满足特定标准,或者如果转让方或受让方节点在某一组转移之后决定结束该过程,则承诺通道还为转让方节点提供返回代币的灵活性。

在承诺通道实施方式的至少一个实施例中,一对参与节点ua和ub协作生成三个区块链交易:承诺交易(tc)、返回交易(tr,0)和转移交易(tt)。图2示出了转让方节点ua和受让方节点ub之间的承诺通道ua→ub的示意图。承诺交易tc表示承诺通道的承诺组成部分,在该承诺通道中,转让方ua发送/提交一组指定的代币x,用于转移到ub。在一些实施例中,承诺交易可以是2对2多重签名脚本哈希支付(p2sh)交易。返回交易tr,0是如果受让方节点ub不能在规定时间内完成承诺交易的既定标准,则将先前提交的代币x返回给ua的交易。在一个特定的时间点nlocktime到期后,返回交易才有资格提交到区块链。为了成功执行返回交易,需要转让方节点ua和受让方节点ub两者的签名。转移交易tpay是将提交的代币x实际发送到受让方节点ub的交易。只有当受让方节点ub满足某些标准时,才执行转移交易。例如,为了将转移交易成功提交到区块链,可能至少需要受让方节点ub的数字签名。

秘密共享

已经开发了一种称为“秘密共享”的技术,能够将秘密密钥拆分成多个份额,并在参与节点集合之间分配这些份额。在这种技术中,只要子集的基数大于指定的阈值t,则参与节点集的任何子集都可以重建该秘密。如果子集的基数小于t,则任何关于该秘密的信息都不会被披露。这意味着至少t个参与节点必须协作使用共享秘密进行签名。密钥份额在参与节点之间的分发可以使用分配密钥份额的中央经销商来完成,或者通过无经销商的分发系统来完成。每种解决方案都有其优缺点,在选择分发方法时,需要仔细考虑所实施的系统的需求。

在至少一个实施例中,秘密共享技术可以包括将秘密嵌入到t次多项式中。n个参与节点中的每一个都被分配有当时未知的多项式上的一个点,导致t+1个参与节点能够使用拉格朗日多项式插值来精确地重建多项式。

已经开发了一种被称为门限签名方案(thresholdsignaturescheme)的应用,通过该方案,拥有单独密钥份额的n个参与节点中的m个可以合作执行基于加密的计算,无需将秘密密钥重建/披露给任何单独参与节点,并且让2t+1个参与节点生成签名。

在某些情况下,门限签名方案可以依赖于拉格朗日多项式插值。拉格朗日多项式插值告诉我们,t次函数f(x)可以用t+1个点p={(x1,f(x1)),(x2,f(x2)),…,(xt+1,f(xt+1))}来重构

其中拉格朗日系数

注意:bi,p(xi)=1和bi,p(xj)=0。

应当注意的是,各种其他技术,例如使用椭圆曲线和双线性对或矩阵投影,可能适用于门限签名方案。

门限签名计算的一个要素是确定x×g,其中x是秘密密钥,g是椭圆曲线上的一个点。给定秘密密钥x,其中其密钥份额在n个参与节点之间“拆分”:

任意秘密x是多项式f(x)上的点f(0),

(密钥x的)份额x1,x2,…,xn对应于f(x1),f(x2),…,f(xn),

如果f(x)是t次多项式,秘密x可以通过来插值,其中π是份额中大小为t+1的子集xa,xb,…,xt,xt+1,b是拉格朗日系数,如上文结合拉格朗日多项式插值所述。

π是一组t+1个参与者合作计算x×g,而不透露他们各自的xi份额。x是t次多项式上的x=0点

·每个参与者i计算一部分bi,πxi×g

·π中所有参与者将它们的部分加在一起(通过拉格朗日插值重建秘密x),给出:

ba,πxa×g+bb,πxb×g+…+bt+1,πxt+1×g=x×g

这个过程可以称为“秘密份额合并(secretsharejoining)”。

间接匿名转移协议

本申请描述了用于在一个或多个转让方-受让方对之间转移代币的方法和设备。特别地,本申请提出了一种代币转移协议(间接匿名转移协议(indirectanonymoustransferprotocol),或称为iatp),该协议试图通过使用协议的多个不同参与节点对之间的间接交易集合来掩盖转让方-受让方关系,同时避免交易的部分完成的风险。间接交易的设计方式是使转让方和相关联的受让方之间的联系不容易从区块链数据中识别出来。如果该间接交易集合被执行,则会为参与转让方-受让方节点对分配原始期望的代币(即在协议开始时约定的交易)。

iatp包括多个参与节点,其中每个参与节点属于转让方-受让方对。特别地,iatp适用于三个或更多参与节点的组,其中该组中的至少一个节点向/从该组中的另一个节点发送或接收一个或多个代币转移。为了避免下文描述不清,术语“发送者”和“接收者”可分别用于指代参与iatp的转让方节点和相关联的受让方节点。

现参考图3,图3以流程图的形式示出了用于使用区块链参与代币转移过程的示例方法200,该代币转移过程将一定数量的代币从发送者节点转移到接收者节点。对应于多个发送者-接收者对的多个节点参与iatp。对于总共n个节点,节点被表示为u1,u2…,un。“节点”在这里可称为成员或参与者或参与节点。在一些实施方式中,每个节点是钱包或其他这类区块链实体。

为简单起见,iatp的描述使用单个发送者-接收者对的示例,希望通过n个参与节点之间的多个间接代币交易进行一定量的交易δ*。如下所述,这种推理很容易扩展到多个发送者-接收者对。也就是说,iatp在单对参与节点之间实现转移δ*的用例很容易推广到在多对参与节点之间进行转移δi*。

方法200由参与iatp的节点实现。该参与节点集合包括至少一对发送者和接收者节点,以及不同于发送者和接收者节点的多个节点,这些节点用于进行多个成对间接代币交易,以掩盖至少一个发送者-接收者对之间的预期转移。特别地,发送者节点和接收者节点的行为以与iatp中的任何其他参与节点相同的方式来管理。

方法200从节点在操作202中加入代币转移过程开始。本文没有详细描述加入过程,该加入过程可以以去中心化的方式或者通过中央机构来实现,该中央机构至少部分地基于确保组中包括足够数量的节点以及一个或多个希望在彼此之间转移代币的发送者-接收者对来组装合适的参与节点组。在一些实施例中,多个发送者-接收者对可以结合在一起以协作地参与iatp。

在操作204中,参与节点获得间接代币交易的列表,对于该列表,参与节点是输入节点或输出节点。也就是说,参与节点被告知其将要参与的间接代币交易。参与节点获得的列表是作为iatp的一部分生成的所有间接代币交易集合的子集。

现将描述构建间接代币交易集合的过程,通过该间接代币交易集合,预期数量的代币将在发送者-接收者对之间转移。iatp是基于这样一种概念,即通过使发送者-接收者对之间的代币转移通过(以不同数量的代币为特征的)“间接代币交易”集合以及在参与节点的不同对之间间接地发生来掩盖或混合这些转移。特别地,间接代币交易包括至少两个交易,这至少两个交易不同于从发送者到接收者的期望数量的代币的直接转移。也就是说,该间接代币交易集合包括至少两个交易,每个交易的输入和/或输出节点分别不同于发送者和接收者节点。

构建这一间接代币交易集合的过程由发起者u0实现,该发起者u0可由iatp的参与节点随机选择。协议的一个或多个参与节点定义了以下内容:

·协议的轮数r和每轮的交易数q

·协议中可用的代币的初始数量,以存储为矢量m(0)=(m1(0),…,mn(0)),其中m是提交给协议的代币总数

·参与节点将被放置的最终状态,m(tr)=(m1(0),…,ma(0)–δ*,…,mb(0)+δ*,…,mn(0)),即在发送者-接收者对(例如,ma和mb)之间进行的代币的最终分配。

初始和最终状态可以以矢量形式存储,或者以任何其他适当的数据结构存储。

发起者节点(可以是参与节点之一)接收由一个或多个参与节点设置的协议的参数(r、q、m(0)和m(tr)),并基于接收到的参数,在多个不同的参与节点对之间生成间接代币交易集合。下文详细说明构建过程的示例实施例:

阶段1

对于t=1,…,r–1:

a.发起者节点随机选择q对(i,j),其中i≠j。

b.对应于ui的代币数量mi从概率分布φi以随机增量δi递增,条件是0<δi≤min(mi(t),mj(t))

c.uj以δj=δi递减

d.在每个步骤中,矢量m(t)=(m1(t),…,mn(t))被更新。

在阶段1中,发起者节点生成多个或第一组随机交易,导致多对参与节点之间的代币转移。对于协议的每一轮(即从第1轮到r–1轮),随机选择q对参与节点,以使q对中的每对参与交易,从而导致多对之间一定数量或间接代币数量的代币δi转移。在每一轮之后,分配给每个参与节点的代币的数量被更新以反映q个转移交易(即间接代币交易)。在q对中的每一对之间,在一轮中转移的代币数量δi被限制在规定的范围内。特别地,条件0<δi≤min(mi(t),mj(t))的目的是确保对于q对中的每对,转移的数量为(1)正值,且(2)小于与该对节点相关联的代币分配数量的最小值。通过这种方式,分配给iatp的参与节点的代币数量在整个协议轮次中保持正值。δi值选自概率分布(例如离散均匀分布);在不失一般性的前提下,可以对协议的所有参与节点使用相同的概率分布。

阶段2

对于最后一轮,t=r,生成“最终交易”的序列或第二组,以强制实施反映要达到的发送者-接收者对之间的期望代币转移的最终条件。要生成完成协议所需的最终交易序列,发起者节点:

a.计算差值,

d=m(r–1)–m(r)=(m1(r–1)–m1(r),m2(r–1)–m2(r),…,mn(r–1)-mn(r))

b.匹配矢量d的最小元素和最大元素,并构造相关联的参与节点之间的第一个交易

例如,如果最大值(d)=d1,最小值(d)=d4,d4<0,则节点1向节点4转移数量a,其中

c.向量d被更新,即d’=(d1–a,d2,…,d4+a,…,dn)。然后重复该过程,直到d=0,即所有参与节点达到期望的最终阶段

在阶段2中,生成“最终交易”的序列,以便将协议倒数第二轮中的矢量m(r–1)的值与期望的最终状态m(r)进行协调。也就是说,第二组交易用于将由第一组交易产生的净代币转移与发送者和接收者节点对之间期望数量的代币的净转移进行协调。在最终状态下,属于至少一个发送者-接收者对的所有参与节点的分配的代币数量以原始规定的数量递增或递减。也就是说,若iatp中的每个参与节点是发送方和/或接收方,则与参与节点相关联(由参与节点拥有)的分配的代币将根据期望代币转移的结果值进行调整。与处于最终状态的发送者-接收者节点相关联的代币数量反映了发送者-接收者对之间期望的代币转移。特别地,在发送者-接收者对之间转移的代币的期望数量反映在最终状态中,因此在生成最终交易时考虑该数量。也就是说,间接代币交易集合的生成至少部分地基于将要在发送者-接收者对之间转移的期望数量的代币。

在参与节点中有多个发送者-接收者对的情况下,最终交易将取决于发送者-接收者对之间转移的相应的代币数量。更具体地的说,最终状态m(r)将反映多个发送者-接收者对的转移。

应当注意的是,在实际设置中,不可能“跟踪”每个参与节点具有的代币;相反,可以通过监控区块链上广播的交易,来跟踪每个协议步骤的收益或损失。说明书中对“存储的”或“分配的”代币的任何引用都是为了清楚地说明协议步骤。使用iatp,发送者-接收者对能够通过在多个轮次的过程中,凭借多对参与节点移动随机数量的代币δi,以在彼此之间间接转移一定数量的代币。

发起者节点生成间接代币交易集合后,每个参与节点都会被告知其所参与的交易。特别地,对于iatp的每个参与节点,发起者节点确定所有间接代币交易的集合的子集,该子集仅包括参与节点是输入节点(即,转让方)或输出节点(即,受让方)的交易。发起者节点将标识交易子集的消息发送到各个参与节点。在一些实施例中,发起者节点可以使用参与节点的公钥加密包含交易子集的消息。

在iatp中,虽然间接代币交易是通过协议的r轮按顺序生成的,并且可以表示为包含一个或多个交易的矢量的有序序列,但是交易可以以随机顺序完成。矢量的顺序和矢量内交易的执行顺序不会影响每个参与者期望的最终净代币分配。本质上,被执行以在参与者之间移动代币的间接交易可以以任何顺序完成。发送者-接收者对之间的正确转移的唯一要求是执行作为iatp协议一部分生成的所有间接代币交易。

回到图2,在操作206中,对于参与节点所获得的子集中标识的每个间接代币交易,该节点与相应的第二参与节点协作,以生成其自身和第二参与节点之间的交易的承诺通道。换句话说,针对参与节点所涉及的每个间接代币交易,构建承诺通道以促进交易。在iatp中使用承诺通道来促进间接代币交易集合的参与节点对之间的安全个体交易。在操作208中,该节点与iatp的所有其他参与节点协作,使用生成的承诺通道来执行其所涉及的间接代币交易。所有参与节点之间执行代币交易的这种协作有助于确保正确创建和完成所有相应的承诺通道,而不会使节点中途取消或退出任何交易。下面将参照图4详细描述用于协作执行间接代币交易的技术。

现参考图4,图4以流程图的形式示出了用于参与代币转移过程的示例方法300,该代币转移过程在发送者-接收者对之间转移一定数量的代币。方法300由参与间接匿名转移协议(如本文描述的iatp)的节点实现。操作302和304对应于图3所示的方法200的操作202和204。具体地,在操作302中,节点加入代币转移过程,并且在操作304中,节点(例如,从协议的发起者节点)获得其所涉及的间接代币交易的列表/子集。

方法300合并了管理iatp间接代币交易的创建和执行的安全协议。如上所述,iatp包括参与节点之间的多个成对代币转移。在执行该协议的交易时,一些参与者可以接收代币,这导致了在初始代币数量上分配的代币的临时增益,该初始代币数量是由该节点提交给该协议的。也就是说,在协议执行期间,某些参与节点在控制代币的持有有方面可能比它们的初始状态(即,提交的代币的初始数量)“局部”更好。为了防止参与节点在该节点具有局部代币剩余的时刻离开协议,iatp包括一种机制,通过该机制,协议的每个参与节点都由能力阻止间接代币交易集合的执行,直到参与节点确认必要的承诺通道已被创建。

为了启用这种安全机制,对应于承诺通道的每个间接代币交易由秘密值k的公钥q来保护,使得q=kg,其中g是椭圆曲线上的基点。在创建协议要求的承诺通道之前,k值对于任何参与者都是未知的。而是给每个用户密钥k的秘密份额ki。因此,在操作306中,参与节点获得私钥k的密钥份额。密钥份额被用在产生秘密值k的函数中;特别地,需要参与节点的所有密钥份额ki来产生值k。公钥q由参与节点在创建承诺通道时使用,使得只有当所有参与者协作来重建秘密值k时,才能解锁承诺通道。在iatp中,任意随机秘密作为f(0)被存储在t次多项式f(x)中,只有参与者i可以计算其份额f(xi)。如果n个参与者中的t+1个协作,那么他们可以使用例如拉格朗日多项式插值来用对应于f(x1),f(x2),…,f(xn)的份额k1,k2,…,kn重建上的任何点。

在操作308中,参与节点与协议的其他所有节点协作,使用秘密份额合并来生成对应于私钥k的公钥q。如上所述,公钥q用于生成间接代币交易。在没有任何参与者节点披露他们各自的密钥份额并且没有参与者协作首先找到私钥k的情况下完成q的计算。

在iatp中,协议的参与者可以验证他们所给的密钥份额ki是正确的,是与用于创建承诺通道的公钥q一致的。如果在参与节点之间分配不一致的份额,参与者将无法按照协议的要求重建秘密k。在至少一些实施例中,可采用可公开验证的秘密共享(pvss)方案来验证参与者的密钥份额。在pvss方案中,每个参与者ui都具有解密功能di,该解密功能能够访问用相应的公共加密功能加密的信息ei。然后,交易商可以使用公共加密功能来分发份额并以如下形式发布它们,

ki=ei(ki),i=1,…,n

加密的份额可以由任何感兴趣的个体公开验证;任何人(不仅仅是参与者本身)都可以验证参与者收到了正确的密钥份额。

一旦获得公钥q,就可以在协议的参与节点间建立间接代币交易。不同的参与节点对之间的间接转移是通过使用承诺通道来完成的。在iatp中,“承诺通道”由三个独立的交易定义:承诺交易tc,返回交易tr,0和转移交易tt。也就是说,在不失一般性的情况下,针对转让方节点ua和受让方节点ub之间进行的每个间接转移,创建了三个区块链交易:

·承诺交易tc是一个2对2的多重签名p2sh交易,ua利用该交易来提交一定数量的代币x,以便转移给ub(即交易的输出地址)

·返回交易tr,0将提交的数量的代币x返回到ua(即交易的输入地址)

·转移交易tt实际上将提交的数量的代币x转移到ub(即交易的输出地址)。

作为iatp的一部分而生成的每个承诺通道都被一个秘密值“锁定”。在iatp的至少一个实施方式中,承诺通道ua→ub的秘密值是k+kb,其中k是对应于公钥q的私钥,kb是受让方节点ub选择的随机数。如下所述,秘密值svb=k+kb的加密值qb可由转让方节点ua计算,并在承诺通道ua→ub的构建期间使用。

图5中示出了用于构建承诺通道ua→ub的示例过程400:

1.操作402:ub选择随机数kb。每个承诺通道可以使用不同的随机数,以便使得外部方更难将一组交易关联为iatp的相同实例的元素。特别地,将区块链中可见的不同交易链接到iatp的一个通用实例会变得更加复杂,因为这些交易并不都标记有相同的秘密。

2.操作402:ub将kb的值传送给ua。

3.操作404:ua使用以下关系式计算qb:

qb=(k+kb)g=kg+kbg=q+kbg

其中q是(通过秘密份额合并)协作获得的,并且被认为是秘密密钥k的加密。

4.操作406:ua使用加密值qb并创建承诺交易tc,该交易提交一定数量的代币x,该一定数量的代币x只能由(1)ua和ub两者的签名或(2)ub的签名和svb来花费。

5.操作408:ua创建返回交易tr,0,该交易将提交的数量的代币x的全部(减去可能消耗一个或多个代币的任何交易成本)返回给ua。返回交易包含参数nlocktime,该参数定义了返回交易有资格提交给区块链的时间点。

6.操作410:签署返回交易。

7.操作412:签署承诺交易并将其提交给区块链。

8.操作414:由转让方ua或受让方ub创建转移交易tt,该交易将承诺交易的提交的数量的代币x转移给ub。如果交易要成功地提交给区块链,则转移交易的解锁脚本或<scriptsig>需要包含值svb。

因此,在操作310中,对于参与节点的间接代币交易子集中包括的每个交易,该节点与交易中其对应方协作来构建承诺通道。特别地,如果参与节点是交易中的转让方,则该节点(1)使用由ub(交易中的对应方)传送的随机值kb创建承诺交易,并且(2)创建将提交的代币返回给该节点的返回交易。

在为iatp实例的每个必要交易创建了所有承诺通道之后,在操作312中,节点与协议中的所有其他参与节点协作,使用其密钥份额和合适的秘密共享方案(例如shamir的秘密共享)来恢复私钥k。一旦确定了k的值,如果参与节点是承诺通道的受让方,则该节点利用相应转移交易的<scriptsig>中的秘密值svb=k+kb来获得转移数量的代币。然后,iatp实例的所有转移交易tt都可以提交给区块链。转移交易可以以非结构化的方式广播,并且可以以随机顺序或者由提交交易的参与者节点决定的任何顺序广播。交易广播顺序的随机性可能有助于使协议的最终和初始阶段更难跟踪和识别。

在iatp的至少一些实例中,由参与节点为该节点所涉及的间接转移交易提供的每个输入和输出地址都是唯一的。也就是说,无论是输入地址还是输出地址,节点的地址都不会在iatp协议中的任何位置重复使用。换句话说,在某些情况下,可以对iatp的参与节点施加限制,使得如果节点ui在ni1个间接转移交易中充当输入节点,并且在ni2个间接转移交易中充当输出节点,则在加入iatp之前,ui需要具有至少ni1+ni2个单独的地址,并且这些地址已经有足够的可用资金作为输入。这些多个“断开连接的”地址通过使外部方更难跟踪进出参与节点的代币流,可以促进参与者的多个承诺通道的同时存在,并为参与节点所涉及的交易提供更高的匿名性。

现参考图6,图6以框图形式示出了参与节点500的简化示例。参与节点500可以是输入节点或输出节点。参与节点500包括处理器502,处理器502可以包括一个或多个微处理器、专用集成芯片(asics)、微控制器或类似的计算机处理设备。参与节点500还包括存储器504和网络接口506,存储器504可以包括持久和非持久存储器,以存储值、变量以及在某些情况下存储处理器可执行程序指令,网络接口506通过有线或无线网络提供网络连接。

参与节点500包括包含处理器可执行指令的处理器可执行区块链应用508,当处理器可执行指令被执行时,使得处理器502执行本文描述的一个或多个功能或操作。

应当理解的是,本文描述的设备和过程以及实现所述用于配置参与节点的方法/过程的任何模块、例程、过程、线程、应用或其他软件组件都可以使用标准计算机编程技术和语言来实现。本申请不限于特定处理器、计算机语言、计算机编程惯例、数据结构和其他这样的实现细节。

应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consistsof)”,“包括(comprises)”意指“包括(including)或由......组成(consistingof)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干方式的设备权利要求中,这些方式中的若干个可以由硬件的同一个部件来体现。在相互不同的从属权利要求中列举某些措施的这一事实,并不指示这些措施的组合不能有利利用。

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