用于区块链网络上分层令牌分配的系统和方法与流程

文档序号:20013053发布日期:2020-02-22 04:42阅读:413来源:国知局
用于区块链网络上分层令牌分配的系统和方法与流程

本发明总体涉及经由区块链进行的转移和交易,尤其涉及用于在令牌混合系统中提供加密安全性、以允许多个输入节点合作将令牌分配给多个输出节点的方法和装置。



背景技术:

在本文献中,我们使用术语“区块链”来包括所有形式的电子、基于计算机的分布式账本。它们包括但不限于区块链和交易链技术、许可和非许可账本、共享账本及其变体。虽然提出并开发了其他区块链实施方式,但是区块链技术最广为人知的应用是比特币账本。虽然本文出于方便和说明的目的可以引用比特币,但是应当注意,本发明不限于与比特币区块链一起使用,并且替代性区块链实施方式和协议也落入本发明的范围内。

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

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

与区块链有关的感兴趣的另一个领域是使用“令牌”(或“彩色币”)来表示现实世界的实体并经由区块链来转移该现实世界的实体。潜在的敏感或秘密项目可以用没有明显含义或值的令牌表示。令牌因此用作允许从区块链引用现实世界项目的标识符。令牌例如可以表示对网络资源和/或数字资产的未来控制。在某些情况下,令牌可以表示资产或值。本申请不限于在加密货币背景中的实施方式,并且被更广泛地理解为涉及用于令牌的分布式转移的区块链网络。

区块链技术(例如比特币)的公认优势之一是交易的匿名性。比特币用户的个人详细信息并未正式、明确地附加到比特币地址,并且区块链的比特币账本仅包含公共地址信息。但是,使用辅助数据(例如完成交易所需的收件地址)和分析,感兴趣的第三方可能能够组合公开可用的信息,以将比特币账本的交易详细信息与真实身份相关联。在某些系统(投票系统、医疗应用程序等)中出于多种原因(例如安全性和/或机密性),在网络内部或网络中的用户可追溯性可能不理想。

可通过区块链数据识别用户的一种方式是由特定比特币地址控制的区块链令牌的数量。通过跟踪在比特币网络上广播的交易中的令牌流,有可能将一定数量的令牌归因于一个地址。令牌数量相应地可用于(例如,由外部第三方)推导与地址相关联的用户身份。例如,如果确定从一个地址转移来的令牌总数相当大,那么可将与该地址相关联的用户的可能身份的集合减少为仅包括那些已知持有或能够持有如此大量令牌的身份。

在一个地址上的令牌保持“完好”(即保持为统一的数量)而不是进行从所述地址实际转移令牌之前将其拆分成多个子数额/数量的情况下,保护用户身份的困难尤其突出。即使采用各种匿名技术试图掩盖令牌从一个地址的转移时,如果要经由交易转移的令牌保持完好,那么所述地址发起的交易将更容易被跟踪。但是,在一个地址上拆分令牌数量并不是一项简单任务,并且带来了技术挑战。特别地,将一个地址上令牌的初始数量划分为较小的子数量的任务带来了将用户与初始数量分离、同时仍保持所有权(即对令牌的控制)的技术挑战。

因此,希望提供用于在区块链地址处划分和分配令牌数量的方法和装置,以促进增强在区块链交易中从输入到输出的不可追溯性和不可链接性。

但是,当尝试在区块链网络中安全地混合和分配令牌时,存在很多技术问题。例如,如果在参与者节点(或者与该参与者节点相关联的另一个节点)已经执行允许其他令牌释放到其他节点的协议之前,参与者节点能够主张令牌,那么安全性可能受到损害。此外,重要的是防止令牌的故意或意外错误分配,例如由于离线参与者。

现在已经设计出这样的解决方案。



技术实现要素:

因此,根据本发明,提供如所附权利要求所限定的方法和装置。

本发明可以提供一种计算机实现的方法和对应的系统。可将该方法/系统描述为区块链实现的方法/系统。可将本发明描述为安全方法或密码方法/系统。它可以提供数字资源/资产(例如令牌)的安全传输,例如一部分加密货币或者一定数量的加密货币。附加性或替代性地,它可以提供用于控制数字资产/资源(例如一部分加密货币或者一定数量的加密货币)的转移的控制机制。为了便于参考,本文可将资产或资源称为“令牌”。

可以按照有序的方式构建“承诺通道”,并且可以按照分层的方式布置多个节点。根节点可以控制分层结构内令牌转移或交换的执行(例如,将令牌分配到特定节点)。本文所述方法和系统可通过确保参与者节点未对分配中涉及的任何令牌进行解锁/访问,直到或除非控制器节点已经确定了已经适当创建承诺通道并且控制器节点已经启动令牌转移过程,来提高令牌分配的安全性。然后,控制器节点可以启动秘密值的顺序揭示,当与承诺通道的分层布置结合时,可以确保参与节点接收令牌的预期分布。例如,沿着分层结构的每个路径的秘密值的顺序揭示可以允许参与节点沿着转移这些令牌的路径从相应节点接收令牌。顺序秘密揭示仅在所有令牌交易已由参与节点签名且承诺通道已由控制器节点确定为适当创建和完成时,才允许参与节点接收其各自的令牌。

附加性或替代性地,本申请可以描述一种计算机实现的方法,该方法参与资源(或“资产”或“令牌”)分配过程以用于将与输入节点相关联的输入地址处的一定数量的资源/资产/令牌分为多个子数量,并使用区块链将子数量分配给与相应输出节点相关联的多个输出地址。下面为方便起见,使用术语“令牌”代替“资源”或“资产”。

令牌分配过程可以由输入节点、输出节点和多个混合器节点共同实现。该方法可以在混合器节点处实现。它可包括:

识别与混合器节点相关联的多个下游节点以及上游节点;与上游节点合作,生成用于上游节点和混合器节点之间的第一(区块链)交易的第一承诺通道;

以及对于多个下游节点中的每个下游节点:与下游节点合作,生成用于混合器节点与下游节点之间的第二交易的第二承诺通道,使得从用于所述第二交易中的任何一个交易的解锁脚本中,导出用于第一(区块链)交易的解锁脚本。

在本文中术语“转让者节点”可以与术语“上游节点”互换使用。转让者节点可以是将资源转移到另一个节点的节点。在本文中术语“下游节点”可以与术语“受让者节点”互换使用。受让者节点可以是从另一个节点(例如转让者节点)接收资源的节点。

在一些实施方式中,生成第二承诺通道可包括:与下游节点合作以:用于提交一定数量的令牌以转移到所述下游节点的第一区块链交易;生成将所提交的一定数量的令牌返还所述混合器节点的第二区块链交易;以及生成用于将所提交的一定数量的令牌转移到所述下游节点的第三区块链交易。

在一些实施方式中,基于所述混合器节点的值分配方案来确定所述一定数量的令牌,所述值分配方案识别要转移到所述多个下游节点中的每个下游节点的相应数量。

在一些实施方式中,第三区块链交易可包括解锁脚本,所述解锁脚本包含与第二承诺通道相关联的第二秘密值。

在一些实施方式中,该方法还涉及获得与第二承诺通道相关联的第二秘密值。

在一些实施方式中,该方法还涉及使用第二秘密值来导出与第一承诺通道相关联的第一秘密值。

在一些实施方式中,第一秘密值基于与输入节点相关联的秘密密钥值,所述秘密密钥值对于所有混合器节点都是未知的。

在一些实施方式中,该方法还涉及将混合器密钥值传输到上游节点和输入节点。

在一些实施方式中,混合器节点可包括第一地址以及多个第二地址,混合器节点在第一地址处检测来自上游节点的第一数量的令牌的转移,混合器节点从第二地址向下游节点转移第一数量的多个子数量。

在一些实施方式中,多个第二地址处的令牌的总数量可以至少等于第一数量。

在一些实施方式中,第二区块链交易可包括交易参数,所述交易参数指定时间点,在所述时间点之后第二区块链交易变得有资格提交到区块链。

在一些实施方式中,可以在下游节点对第二区块链交易进行签名之后,将第一区块链交易提交到区块链。

在一些实施方式中,可以在生成任何第二承诺通道之前生成第一承诺通道。

本申请进一步描述了用于执行所述方法的计算装置,其中,计算装置可包括至少一个处理器、存储器、用于提供网络连接的网络接口、以及包含计算机可执行指令的区块链应用程序,在通过处理器执行时,该计算机可执行指令使得处理器执行本文所述一个或多个方法的操作。

本申请进一步描述了非暂时性处理器可读介质,其可以存储处理器可执行指令以参与令牌分配过程,所述令牌分配过程包括输入节点、多个输出节点和多个混合器节点,其中,由所述节点之一中的处理器执行时,处理器可执行指令使得处理器执行本文所述一个或多个方法的操作。可以在混合器节点中提供处理器。

附图说明

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

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

图2以流程图形式示出用于构建承诺通道的示例性过程;

图3示出在分层令牌分配协议中使用的节点的示例性分层结构;

图4以流程图形式示出用于启动分层令牌分配协议的实例的示例性过程;

图5a示出在分层令牌分配协议中使用的承诺通道的示意图;

图5b以流程图形式示出在分层令牌分配协议中在节点与下游节点之间构建承诺通道的示例性过程;

图6以流程图形式示出沿着分层令牌分配协议中的分层结构中的路径提交令牌转移的示例性过程;

图7示出示意图,其示出在分层令牌分配协议中,混合器节点使用不同的区块链地址分别用于接收令牌转移和进行令牌转移;以及

图8示出简化参与节点的方框图。

具体实施方式

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

运行区块链协议并形成区块链网络100的节点102的电子装置可以是各种类型,例如包括,诸如台式计算机、膝上型计算机、平板计算机、服务器这样的计算机,诸如智能电话这样的移动装置,诸如智能手表这样的可穿戴计算机,或其他电子装置。

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

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

每个交易通常具有一个或多个输入和一个或多个输出。嵌入输入和输出中的脚本指定如何以及由谁访问交易的输出。交易的输出可以是作为交易结果将令牌转移到的地址。然后,这些令牌与该输出地址相关联,作为可用的交易输出。在像比特币这样的加密货币的背景下,可用的交易输出可被称为未耗用交易输出(utxo)。随后的后续交易可将该地址作为输入,以将这些令牌转移到一个或多个其他地址。

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

其他一些匿名化技术用于尝试以各种有效性避免揭示输入与输出之间的链接,例如环形签名或隐身地址。隐身地址试图将特定用户向其发送令牌的输出地址解除链接。环形签名试图通过使得一组可能签名者中的任何一个同等可能性成为对特定交易进行签名/授权的签名者,来使得源不可跟踪。不幸的是,已经证明环形签名在某些区块链协议中难以实现。

本公开提供用于将区块链地址处的令牌分配到多个不同地址的技术。更具体而言,描述这样一种技术,其用于将一个地址处的初始令牌数量分为较小的子数量,并将子数量分配到一组输出地址。令牌的划分是为了将初始令牌数量的控制/所有权与子数量在其最终地址的控制/所有权解除链接。特别地,将初始令牌的子数量分配为使得外部观察者难以将最终输出地址与容纳初始令牌数量的地址相关联。

根据本发明实施例,通过在一组参与节点之间进行令牌转移的分层结构来分配在区块链上一个地址处的初始令牌。特别地,通过“分层结构”的多个层一次划分初始令牌数量及其子数量。如本公开所使用的,术语“分层结构”是指用于将为了分配一个地址处的初始令牌数量的子数量而进行的一组转移概念化的结构。在当前背景下,可将“分层结构”理解为树结构,包括根节点以及具有父节点的子系的子树,其被表示为一组链接节点。本公开提出的分层令牌分配方案使用参与节点(在树结构中表示为节点)之间的令牌转移,以将令牌从“根”节点(与分配的发起者相对应)分配到多个“叶”节点(也是由发起者控制的输出地址)。

本文所述技术还提供一种安全机制,其通过使用“承诺通道”(用于在参与节点之间转移令牌)来实现,以确保分配中的参与节点不存在令牌被盗的风险。协议的发起者使用与承诺通道相关联的秘密值的被传播揭示来控制承诺通道的顺序“解锁”,以防止协议的令牌交易一直执行到用于这些交易的所有承诺通道都已经建立。使用所创建的承诺通道成功完成所有令牌交易之后,将一个地址的初始令牌数量分配到多个目标(输出)地址。

在本文的描述中,可以使用术语“输入节点”、“输出节点”、“参与节点”,“输入地址”和“输出地址”。对节点的“地址”的引用并非指实体节点的网络地址。相反,“地址”是在区块链上的交易中指定的地址,其具有令牌的分配,通过具有与交易上的签名相对应的密钥,实体节点可向其主张所有权。从这个意义上讲,“输出地址”不是参与节点的地址,而是参与输出节点拥有或与之关联的区块链交易输出地址。同样,“输入地址”是参与输入节点所拥有或与之关联的可用交易输出的地址(在加密货币方面,uxto)。

承诺通道

各种区块链技术(例如比特币)有时可能会在参与节点之间的成对交易的构建中采用“承诺通道”。承诺通道被设计为允许节点进行多个交易,而无需将所有交易都提交到区块链。一旦在一对参与节点之间建立承诺通道,这些节点就可以在给定时间段内参加如它们所想的那么多的交易,最终只有两个交易添加到区块链中。结果,使用承诺通道将导致需要添加到区块链的交易数量的减少以及关联交易成本的减少。承诺通道还为转让者节点提供在以下情况下将令牌返还的灵活性:在受让方节点不满足特定标准,或者转让者节点或受让方节点确定在一组特定转移之后结束该过程的情况下。

图2以流程图形式示出示例性过程200,用于生成从转让者节点ua到受让者节点ub的单向承诺通道ua→ub。过程200由一对参与节点ua和ub实现。例如,单向承诺通道可能适用于a方希望在一个时间段内通过多次转移向b方支付(例如,为服务)的情况。更一般而言,承诺通道ua→ub可以促进参与节点ua和ub之间令牌交换的可能集合。

在步骤202,转让者ua生成承诺交易tc。承诺交易表示承诺通道的承诺组件,在承诺通道中,发送/提交一组指定的令牌x,用于转移到ub。在一些实施例中,承诺交易可以是2-of-2的多签名p2sh(pay-to-script-hash)交易。此时,交易未提交到区块链网络。

在步骤204,ua生成单独的返还交易tr,0,该交易将来自多签名控制令牌的所有令牌返还ua。该交易包括参数nlocktime,其允许区块链交易仅在特定时间点之后才能被执行。如果受让者节点ub无法在指定时间(即最多到nlocktime)内完成承诺交易的规定标准,则返还交易允许将所提交的令牌返还节点ua。

在步骤206,转让者ua对返还交易进行签名。如果在步骤208确定ub已经签名返还交易,则在步骤210,ua对原始承诺交易tc进行签名并将其提交到区块链。此时,节点ua和ub可以继续创建一个或多个新的返还交易(tr,1,tr,2,…tr,i,...),以反映在区块链之外进行的令牌转移,如步骤212至226所示。特别地,这些返还交易将反映要求ua在该时间点向ub进行的令牌的净转移。如果参与节点拒绝对任何返还交易tr,i进行签名,则该节点可在nlocktime之后将“先前”返还交易tr,i-1提交到区块链。例如,在最坏的情况下,ua可通过对tr,0进行签名并将其提交到区块链网络来收回在tc中由ua提交的所有令牌。

如图2所示,可以创建ua和ub之间的(区块之外)返还交易的迭代,直到构建了表示令牌从ua到ub的净转移的最终返还交易并将其提交到网络。更具体而言,如果初始返还交易tr,0的nlocktime值由sstop表示,则n是正在进行的区块之外转移(其在ua与ub之间进行)中创建的返还交易的数量,而s是在节点承担其他节点提交先前的返还交易的风险之前,为双方同意返还交易所分配的时间,当t≤sstop-i*s时(也就是当用于初始返还交易的nlocktime尚未过去时),节点可以继续协商新的转移(步骤216),其中nlocktime的值随每个后续返还交易而递减,直到在步骤240,将最终返还交易提交到区块链为止。

分层令牌分配

本公开描述用于将区块链特定地址处的令牌分配给多个输出地址的技术。将初始地址处的令牌数量分为多个子数量,然后分配到一组输出地址。本公开中提出的令牌分配方案(分层令牌分配方案,或“htd”)利用参与节点之间的转移的“分层”结构(在概念性“分层结构”中表示为节点)。特别地,htd通过节点的多级分层结构从初始地址转移令牌。在某些情况下,可将htd用作区块链网络中匿名交易解决方案的一部分或补充。下面参考图3至图8描述htd的示例性实施方式。

启动令牌分配

参考图4,示出用于启动htd协议的实例的示例性过程400。节点可以加入htd实例,以划分和分配在与节点相关联的地址处的令牌。如上所述,htd通过概念性地将多个节点布置成多级体系来进行。htd的发起者表示为根节点u0,令牌分配的输出地址表示为分层结构中的叶节点。htd实例可以由发起者本身或由不同的节点和/或控制系统来管理,在这种情况下,发起者将请求使用节点/控制系统所提供的htd服务。

在步骤402,管理者和/或发起者可以收集或选择包括htd服务的各种参数的初始化数据,包括:

·分层结构中每个节点(nb)的固定分支数目,其指示分层结构中每个非叶节点将具有的子节点/受让者的数量。

·输出或“叶”的数量。在至少一部分实施例中,可以从函数范围内的一组值中选择输出的数量。

其中,nl>2是分层结构中的级别数,根节点是级别1,最终级别是包含叶的级别。例如,如果nb=2,则叶的范围为

在步骤404,htd征集一组参与节点以充当分层结构中的“混合器节点”。征集可以由htd的管理者和/或发起者执行,也可以是去中心化的(例如,参与节点可以“选择加入”htd以充当混合器节点,例如,接收用于提供其“混合”服务的支付)。混合器节点是分层结构的树结构中的非根、内部节点。每个混合器节点被配置为从其“父”(或上游)节点接收第一数量的令牌,并将所述第一数量中的子数量转移到其“子”(或下游)节点。给定参数nb和nl,可通过以下方式计算htd实例的分层结构中的混合器节点数nmix:

在一些实施例中,混合器节点可以在htd内提供“混合”函数。为了促进混合,可以期望每个征集的参与节点至少具有最小数量的令牌(minx),其中minx=f(nl)。这个最小值可以取决于混合器节点所在分层结构中的级别。

htd协议的关键组件是安全机制的实现,以确保完全实现该协议,而没有部分完成的风险以及因此不能实现所需的最终令牌分配的风险。为了实现htd的必要安全性,该解决方案利用了椭圆曲线加密的公私钥关系的同态属性,其中

e(m)+e(n)=e(m+n)

e(x)=xg,g是椭圆曲线的基点。协议的安全性取决于对用于htd分层结构中的父子节点对之间的所有令牌交易使用“承诺通道”,以及发起者urt对协议的参与节点之间建立的承诺通道进行的控制。

在设立该安全机制时,发起者首先在步骤406选择一个随机数(或密钥)ks,并计算ksg,其中g代表椭圆曲线上的基点。在整个htd中,发起者将ks的值保密。每个其他参与节点ui选择相应的随机数/密钥ki,并在步骤408将这个值安全地发送给发起者。然后,发起者在步骤410选择一组随机数值{krt,i},其中每个随机数对应于分层结构的叶(输出)节点。也就是说,发起者为每个叶节点分配一个随机值kleaf。

当htd服务已经征集足够数量的混合器节点时,基于发起者所选择的输出值或叶的数量来“构建”节点的分层结构。图3示出节点的示例性分层结构300,其中nb=2并且级别数nl等于4。分层结构包括根节点302、八个叶节点304以及个混合器节点306,该多个混合器节点306沿着根节点302和叶节点304之间的八个不同路径而处在唯一位置。可以使用基于分层结构300的分配方案将与根节点302相关联的地址处的初始数量的令牌分配给输出叶节点304。(在不失一般性的情况下,以下符号将在整个公开中用于标记节点:如果将节点标记为uij,则uij的父节点为ui,uij的子节点为uijk,其中k∈[1,nb]。

htd的“分层结构”是参与节点之间令牌交易集合的表示,其导致将在特定区块链地址的初始数量的令牌分配给多个不同的输出地址。特别地,节点在分层结构中的相对位置限定htd协议在分配初始地址的令牌时使用的交易。分层结构中除根节点之外的每个节点都从其父节点接收令牌的转移,分层结构中的所有非叶节点都将各自数量的令牌转移到它每个子节点。更具体而言,分层结构中每个混合器节点都参与两种类型的交易,即(1)从其父节点接收一定数量(x)的令牌的转移,以及(2)将x的相应子数量转移到其子节点。因此,节点在分层结构中的位置完全限定其中涉及对应参与节点的交易集合。

为了帮助htd的匿名能力,在分层结构的构建过程中可以进行各种随机化过程,以确定各个混合节点的位置。可以在逐级的基础上进行随机化(即,将参与节点指定到分层结构的某个级别,但是它在该级别中的位置是随机确定的),或者可将节点放置在分层结构中的任何随机混合节点位置。

由于htd中混合器节点的分层结构布置,随机化的选择将对混合器节点上已经可用的令牌的minx数量有影响。为了使混合器节点能够在htd期间混合令牌的转移,在接收任何令牌用于分配之前,它应当至少拥有最少数量的令牌。例如,可以在征集混合器节点期间施加约束,其要求混合器节点的至少其中一个具有与被要求分配给它已经在nb个单独地址处可用的子节点的数量相等的令牌数量。这意味着根据要在子节点之间拆分令牌的比例,混合器节点在分层结构中越高,其参与htd所必须拥有的令牌就越多(因为在分层结构中更高的节点接收更多的令牌数量用于分配)。因此,如果为分层结构的特定级别征集混合器节点,则随机化将被限制为在分层结构的该级别上“水平”移动混合器节点,其中该级别有自己的minx值。另一方面,如果征集混音器节点时没有级别限制,则可将混音器节点随机放置在分层结构中任何混合级别的任何位置,并且所有混合节点的minx值将是普适的。

在步骤412确定混合器节点在分层结构中的位置之后,发起者(概念性地)在步骤414构建包括根节点和叶节点在内的分层结构,并且在步骤416,发起者向每个参与节点ui传输他们希望从其接收令牌的节点以及他们各自希望向其转移令牌的节点。

htd中的承诺通道

一旦建立分层结构的设计,并且每个参与节点都知道它们各自的转让者(上游节点)和受让者(下游节点),就会在每个参与节点与其受让者之间设立一组单向承诺通道。htd中父子节点对之间的所有令牌交易都是通过使用“承诺通道”完成的。在htd中,承诺通道由三个独立的交易定义:承诺交易tc、返还交易tr,0和转移交易tt。图5a显示了示出三个交易之间关系的示意图。因此,在不失一般性的情况下,对于在htd中从转让者节点ui到受让者节点uij的每次令牌转移,创建三个区块链交易:

·承诺交易tc是2-of-2的多签名p2sh交易,ui用来提交用于转移到uij的、由以下任一个来管理的一组令牌x:

*2-of-2的多签名(ui,uij),或

*知道秘密值svij和uij的签名

·返还交易tr,0将先前提交的令牌x返还给ui。在特定时间点之后,此交易变为有资格提交到区块链。为了成功执行返还交易,需要用户ui和uij的签名。

·转移交易tt实际上将所提交的令牌x发送到uij。为了成功执行该交易,需要知道秘密值svij和用户uij的签名。

作为htd一部分生成的每个承诺通道都被秘密值“锁定”,为了接收令牌的任何转移,受让者必须提供该秘密值。图5b示出用于在转让者节点ui与受让者节点uij之间构建承诺通道ui→uij的示例性过程500。

1.操作502:受让者uij选择随机数kij。为了使外部节点更难将一组交易关联为htd的同一实例的元素,每个承诺通道可以利用不同的随机数。特别地,能够将区块链中可见的不同交易链接到htd的常见实例的过程可能会更加复杂,因为并非所有交易都用相同的秘密来标记。

2.操作502:受让者uij将kij的值传递给ui。

3.操作504:转让者ui使用以下关系来计算秘密值svij的加密版本qij

qij=qi+kijg=svijg

4.操作506:转让者ui使用加密值qij并创建承诺交易tc,该交易提交一个令牌数量x,该令牌数量只能通过(1)ui和uij两者的签名或(2)svij和uij的签名进行转移。

5.操作508:转让者ui创建返还交易tr,0,该交易将所提交的值x返还ui。返还交易包含参数nlocktime,该参数指定这样一个时间点,在这个时间点或者之后,返还交易变为有资格提交到区块链。可将建议的nlocktime值计算为

其中nl是分层结构中级别的数量,level(ui)是分层结构中ui的级别,s是提交区块链网络的、到节点的第一转移的开始时间,s是时间值,由htd服务所选择,代表每个ui被给予来构建承诺通道、为将令牌转移给ui的承诺通道检索必要的秘密值、并向区块链网络提交转移交易tt的时间量。

6.操作510:受让者uij对返还交易进行签名。

7.操作512:转让者ui对承诺交易tc进行签名,并将其提交到区块链。

8.操作514:创建转移交易tt,该转移交易tt将承诺交易的所提交令牌x转移到uij。如果要将转移交易成功提交到区块链,则转移交易的解锁脚本(或<scriptsig>)需要包含一个值svij。

在htd中,将经由第一承诺通道ui→uij接收的令牌分为几个子数量,这些子数量相应地经由nb个第二承诺通道uij→uijk进行转移。在每个非叶节点处拆分一定数量的令牌用于转移到子节点可通过用于相应节点的值分配方案来控制。例如,用于节点的值分配方案可以指示这样的比率,所述节点可以根据该比率将在所述节点接收到的令牌数量在其子节点之间进行划分(例如50∶50、40∶35∶25等)。可以为分层结构中的每个非叶节点独立确定值分配方案,或者可将相同的值分配方案应用于所有非叶节点。在一些实施例中,可以利用值分配方案来确保期望的子数量到达htd分层结构中的它们各自的目标(输出)地址。

作为在htd中的混合器节点的、提供服务参与节点希望确保它将从上游(父)节点接收一定数量的令牌的转移,该令牌的数量至少等于节点在分配过程中转移到子节点的子数量的总和。这就是使用承诺通道、通过帮助确保完成协议的交易而无需使得节点在中途取消或放弃任何交易,可以为htd参与节点提供安全措施的情况。对于分层结构中跟踪从urt到叶节点的路由的每个路径,按照特定顺序创建父子节点对之间的承诺通道。特别地,承诺通道ui→uij在任何承诺通道uij→uijk之前创建。也就是说,在将用于从用户uij转移到uijk的交易任何承诺通道之前,建立用于将令牌转移到用户uij的交易的承诺通道。这个有序的顺序允许节点uij在冒险/进行转移之前,确保存在到uij的tt交易,如果uij向至少一个它的受让者uijk进行转移,则uij能够成功执行。

在至少一些实施例中,在htd中存在与一个或多个转移交易相关联的交易“成本”。此外,参与协议的混合器节点可能会在提供其混合服务之前要求接收令牌。例如,对于至少一个混合器节点中的每个节点,为了激活混合器节点的服务(例如,调动和/或控制节点的资源以混合令牌),可能需要将一定数量的令牌转移到混合器节点。考虑到在叶节点处输出的期望/预期令牌,发起者在决定要引入到htd中的令牌数量时可以考虑这些“成本”。

作为示例,假设将令牌转移到混合器节点uij可以看作是该节点接收的令牌的百分比,并且包括uij必须转移到uij的受让者的交易成本,则在htd中用于交易集合的混合器节点的总成本cmix可以表示为

其中s是从混合器节点转移的令牌的比率/百分比,x是在u0“存放”的数量,nl是分层结构中的级别数。混合器节点转移从级别2开始,在叶之前的级别结束,因此涉及的级别数为nm=nl-2。函数cmix(s,x)与拆分令牌转移的比例无关。

承诺通道的秘密值

每个承诺通道ui→uij要求转让者uij提供秘密值svij以经由承诺通道接收令牌。在htd协议中,发起者对所有作为令牌分配过程一部分实现的转移过程(父子对之间)进行控制。秘密值svij用于“锁定”承诺通道,防止任何参与节点撤回令牌,直到发起者确信已经创建了将令牌转移到叶节点的承诺通道。可以根据以下过程获得位于htd的分层结构中任意位置的承诺通道ui→uij的秘密值:

1.uij将其随机数kij(其在htd初始化期间由uij选择,如图4中过程400的操作408所示)传递给ui,并且ui将其秘密密钥的加密版本qi传递给uij,其中qi=svig

2.承诺通道ui→uij的秘密值为

svij=svi+kij

其中,其加密值是qij=qi+kijg。秘密值svij被迭代定义,从sv0=ks开始。

3.这个秘密值svij=ks+ka+kb+…+kij,其中ks,ka,kb,...,ki是在相同路径中由承诺通道ui→uij之前的承诺通道的参与节点所选择的随机数。从以下计算中可以看出这一点:

qij=qi+kijg=(ksg+kag+kbg+…+kig)+kijg=(ks+ka+kb+…+kij)g

此时,节点uij不知道承诺通道的秘密值,因为发起者将ks保持私有而对于htd中的任何其他节点都是未知的。更一般而言,如果没有发起者揭示秘密值ks,则无法启动htd的任何转移交易。

执行htd交易

现在参考图6,示出用于执行htd的参与节点所创建的承诺通道的转移交易的示例性过程600。如上所述,分配的发起者u0从分层结构的所有节点接收随机数值ki,并因此拥有所有秘密值。(回想一下,htd中使用的承诺通道的秘密值是由svij=ks+ka+kb+…+kij定义的。)假设所有承诺通道均在时间s时或时间s之前创建,则发起者将启动htd所有承诺通道的秘密值的顺序揭示。特别地,在步骤602,发起者释放由

svfinal=ks+ka+kb+…+kz+kleaf.给出的“最终”秘密值svfinal,用于分层结构中通向其对应叶节点的(连续承诺通道的)每个唯一路径。发起者可通过将svfinal值直接传递到对应的uz节点(即路径中的uleaf的父节点)来实现这一点,或也可以提交转移交易tt:uz→uleaf(因为发起者还拥有叶节点),从而允许uz从区块链中检索秘密值svfinal。在步骤604检查到用于将令牌转移到叶节点的承诺通道的nlocktime还没有过去时,发起者在步骤604将tt:uz→uleaf提交到区块链。

一旦uz在步骤606获得svfinal值,在步骤608,就可以简单地从svfinal中减去kleaf(其为先前由uleaf向其父节点uz传递)以确定svz,也就是uz从父节点接收令牌所需的秘密值。更一般而言,每个节点uijk可以直接将值svijk传递给其转让者uij,或者如果uijk不能这样做,则节点uij尝试在将令牌转移到uij的转移交易的nlocktime值到期之前,在区块链账本中检索值svijk。

通过这种方式,在步骤608到步骤622中,通过在分层结构中向上移动路径并使用关系svij=svijk-kijk顺序揭示秘密值svij,其中当前时间小于

svij值允许节点uij经由tt:ui→uij接收令牌。该顺序揭示过程的一个重要推论是,可以使用针对其在htd的分层结构中共享承诺通道的任何路径来确定特定承诺通道的秘密值。每个承诺通道只有一个秘密值(包含在用于转移交易的解锁脚本<scriptsig>中)。因为表示htd的分层结构的树结构中的“边缘”(即父子节点对之间的承诺通道)由包含所述“边缘”的所有路径共享,所以与对应于所述“边缘”的承诺通道相关联的秘密值的计算可以使用共享该承诺通道的任何路径来进行。这也意味着,节点uij可以在其nb个子节点中的一个或多个从uij接收其令牌之前从ui接收自己的令牌。特别地,即使只有一个受让者从uij撤回令牌,uij也可以从ui接收其应得的全部令牌。因此,如果uij将令牌转移到其至少一个子节点uijk,则每个节点uij都保证了接收令牌的能力。当htd的所有转移交易完成时,将原始令牌集合分配到叶节点的输入地址。

返还令牌

向区块链提交返还交易受nlocktime值限制,nlocktime值是一个时间段,在此期间,返还交易不会被区块链接受。在htd中,nlocktime的建议值由以下给出:

如果受让者uijk在返还交易tr,0:uij→uijk的nlocktime到期之前未能揭示秘密值svijk,则转让者uij可将返还交易提交到区块链。如果成功提交此返还交易,则永远不能执行用于转让者uij与受让者uijk之间的承诺通道的转移交易tt:uij→uijk。如果将至少一个返还交易提交到区块链,则重复进行返还提交过程,直到分层结构的级别达到并包括发起者u0。

匿名耋虑因素

如上所述,混合器节点可以在通过htd的多级分层结构分配令牌期间实现混合令牌的功能。也就是说,混合器节点可使得跟踪令牌流更加困难。可以做到这一点的一种方法是,确保混合器节点具有与接收令牌(来自父节点)的地址不同的预先存在地址,并且混合器节点可将令牌从该地址传递给子节点。图7示出这种场景的示例,其中uij具有地址(addr_p1)(在此它从ui接收令牌),以及另一个地址(addr_p2)(在此要传递到子节点uijk的足够数量的令牌已经可用)。使用混合器节点的这些独立地址将节点处接收令牌数量与从节点转移子数量解除链接可以潜在地在htd中产生匿名化好处。在至少一些实施例中,可将htd协议设计为要求具有不同的支付-接收地址的最小数量的混合器节点。例如,htd的发起者和/或管理者可以强制分层结构每个路径中的至少一个混合器节点遵守不同的转移-接收地址规定。

下面参考图8,其以方框图形式示出参与节点800的简化示例。节点800可以是输入节点或输出节点。节点800包括处理器802,处理器802可包括一个或多个微处理器、专用集成芯片(asic)、微控制器或类似的计算机处理装置。节点800还包括存储器804和用于在有线或无线网络上提供网络连接的网络接口806,存储器804可包括用于存储值、变量以及在某些情况下处理器存储可执行程序指令的永久和非永久存储器。

节点800包括处理器可执行区块链应用808,处理器可执行区块链应用808包含处理器可执行指令,在执行时使得处理器802执行本文所述功能或操作中的一个或多个。

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

应当注意,上述实施例是说明而不是限制本发明,并且本领域技术人员将能够设计很多替代实施例而不脱离所附权利要求限定的本发明的范围。在权利要求中,括号中的任何附图标记都不应解释为限制权利要求。词语“包括”等不排除除了在任何权利要求或说明书中作为整体列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括”表示“包含”或者“由...构成”。元素的单数引用不排除这些元素的复数引用,反之亦然。本发明可通过包括若干不同元件的硬件,以及通过适当编程的计算机来实现。在列举了若干器件的装置权利要求中,这些器件中的若干个可通过硬件的一个项目或相同项目来具体实施。在相互不同的从属权利要求中陈述某些措施的纯粹事实并不表示这些措施的组合不能用于获益。

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