以下是对sparkswap即时结算技术的深入研究,这是一种交易加密货币而不在交易所存放资产的新方式。
无信任的原子跨链交换被认为是托管加密货币交换问题的潜在解决方案,但在很大程度上未能实现大量用户采用。我认为,失败的一个重要原因是普通金额交易的最终速度慢得让人无法接受。使用2层解决方案的原子交换(如闪电网络(和更普遍的支付通道网络)有可能显著提高这些交换的速度,但到目前为止,主要是针对具体实施的演示。
跨网络预映像检索是支付通道网络上无信任原子交换的一种新机制,增加潜在的货币支持并简化实施,同时保持链式交换的原子和无信任属性。
托管交易所重新引入风险
今天的加密货币交易主要是在托管交易所进行的,在托管交易所中,用户直接将其货币存入交易所,在交易所系统内进行交易,然后在以后提取新的货币余额。从交易所的角度来看,这一结构虽然最简单,但它将托管风险重新引入了一个系统( 比特币 /加密货币),该系统旨在消除托管风险并为其用户提供金融主权。
因此,监管交流表现出传统金融体系的所有问题,尽管在某些情况下,行业的新的和大多数不受管制的性质加剧了这种问题。在过去的几年里,数十亿人从交易所被盗,资产经常被地方政府冻结,或者由于运营积压,用户根本无法将货币转出。
原子互换交易速度太慢
无信任的原子交换是这个问题的潜在解决方案。使用加密货币原生的属性(例如脚本),用户可以构建两个不同区块链上的货币之间的交换,其中交易在各方之间是无信任的,不需要可信中介,并且是原子性的(即它完成或不完成,它不能部分完成)。
Decred已经在Script中发布了一个简单易懂的原子交换合同,并生成了一个交换多种货币的示例实现(该研究扩展到包括以太坊)。
然而,通过链上交易使用原子交换需要相当长的时间来保持不信任——在使用比特币(迄今为止最具流动性的加密货币)进行交易的情况下,这些交换需要一个多小时才能完成。对于价格在几秒钟和几分钟内变动的交易货币,这种缓慢的最终确定将导致其中一方退出交易。因此,它们不会像预期的那样进行结算交换,而是完全没有交换。
一些项目正在使用0确认事务和专用仲裁节点或类似系统的组合来尝试提高交换的速度,这降低了交换的不信任性质。另一些机构则利用链上掉期的延迟方面,将其构建成类似期权合约的交易——这是一个很有前景的研究领域,但不能解决现货交易问题。
闪电网络交换目前受到限制
像闪电网络这样的2层解决方案以一般方式解决了比特币和其他加密货币中的交易终结速度问题,并且也可以用于原子交换。事实上,原子交换在其白皮书中被列为闪电网络的潜在应用。 闪电实验室在2017年底使用闪电Daemon演示了BTC / LTC交换。
虽然BOLT规范是迄今为止最成熟的支付通道网络,但它是为比特币(理所当然地)构建的,并且可能无法支持用户想要交换的更的多种加密货币。R ai den作为非BOLT兼容网络的发展是朝这个方向迈出的明确一步。
作为链上和链下交换的混合解决方案,Alex Bosworth创建了潜艇交换,允许用户使用链上交易支付闪电网络发票。该软件扩大了与其他货币的互操作性,并为闪电网络发票提供了独特的视角。但是,由于链上交易,结算速度仍然受到限制。
跨网络原像检索
基于闪电实验室团队和Alex Bosworth的工作,我们开发了一种新机制,使用支付通道网络(如Lightning Network)执行加密货币之间的无信任原子交换:
· 增加交换对其他区块链和货币的潜在影响
· 简化交换的实施
· 维护交换的不信任和原子属性
我们称这种机制为跨网络原像检索。
在我解释这种机制的具体结构之前,我将简要介绍支付通道网络支付和交换的背景,这是了解跨网络原像检索的两个关键组件。
支付通道网络支付
在诸如闪电网络之类的支付通道网络中,支付是通过仅为最终支付的接收者所知的原像来调节的。在从起点(付款人)到目的地(收款人)的路线上不可撤销地承诺付款,每个节点不可撤销地承诺如果他们呈现对应于散列的前映像,则向下一节点支付给余额。
为了兑现她的付款,目的地节点将预映像呈现给倒数第二个节点,传输承诺的货币并完成付款。然后,倒数第二个节点使用该预映像来兑现到期的付款,依此类推,沿到原点的路线向后触发整个结算链,使原点节点的货币更少,目标节点的货币更多,并且每个中间节点的余额没有变化(例如提取费用除外)。
在接收到闪电网络中的预映像时,用于不可撤销地承诺付款的合同是一个哈希时间 锁 定合同。
支付通道网络交换
使用支付通道网络的原子交换最好被视为循环支付。如果最简单的多跳支付沿着从用户A到用户X到用户B的路径都在同一区块链上,则最简单的交换沿着区块链1上的用户A到用户B的路由,以及从用户B到用户的路由。A区块链2.此付款是一个循环,其起源位于区块链1上的用户A和区块链2上用户A的目的地。由于这是一条路线的所有部分并且与一个前映像和散列相关联,因此其结果是原子的。如果交换成功,则用户A在区块链1上用较少的货币结束,并且区块链2上的货币更多(用户B具有相反的结果)。
正如他们迄今为止所证明的,支付通道网络交换依赖于用户B在区块链1和区块链2上操作他的节点,这样他就可以在区块链1上收到支付承诺(HTLC),并在区块链2上延长支付承诺,并在整个路径上向后结算。
此设置为用户B带来了重大困难,即:
· 他运行的软件必须支持他希望交易的每一个区块链(或者:他必须拥有支持他希望每一笔交易的软件)。
· 支付转发机制必须支持本地交换,并且可以访问(或逻辑)用户的交易偏好。
#1显着限制了理论和实践中的兼容性,#2显着增加了实现复杂性。
跨网络原像检索交换
使用跨网络原像检索的支付通道网络交换要求每个参与者操作三个组件:
· 每个不同网络的支付通道网络节点(共两个节点)
· 连接支付通道网络节点的节点,我们称之为链间路由器。
· 这些组件都是由同一个用户控制和操作的,因此它们之间的交互模式是半可信的。
准备交换
设置交换,用户A(发起方)在区块链2上运行的支付通道网络节点上创建一个只有她知道的原始图像的发票。她将带有此原像的哈希发送给用户B带外。
用户B(转移方)在他的支付通道网络节点上为用户A发送的哈希在区块链1上创建发票。由于用户B不知道该发票的原像,他将其 标记 为外部原像发票,或者从外部 存储 原像的发票。
开始交换
然后,用户A在收到区块链1上的PCN节点到区块链1上的用户B的PCN节点的预映像(HTLC)后,通过延长不可撤销的付款承诺来启动交换。
区块链1上的用户B的PCN节点在收到此付款承诺后,通常会拒绝它,因为它没有兑换它的映像。在我们的案例中,用户B创建了一个特殊的外部映像发票,表明付款的映像可以通过外部服务获得。区块链1上的用户B的PCN节点从外部服务请求映像,在我们的例子中是链间路由器。
跨区块链转换交换
链间路由器根据价格、交易对手和规模决定是否进行交换交易。如果链间路由器确实决定继续交换,它通过使用区块链2上的用户B的PCN节点来转换支付,以便在收到预映像(HTLC)后,将不可撤销的支付承诺扩展到区块链2上的用户A的PCN节点。
解决交换的最后一步
区块链2上的用户A的PCN节点,在为其知道的预映像(见步骤1)扩展此付款后,结算付款,从而将预映像显示给区块链2上的用户B的PCN节点。
跨区块链转换原像
区块链2上的用户B的PCN节点将预映像返回到链间路由器(发起支付)。一旦链间路由器具有预映像,它就可以将预映像返回到区块链1上的用户B的PCN节点。
结算交换的初始阶段
现在拥有扩展到它的支付的预映像,区块链1上的用户B的PCN节点结算初始支付,触发结算回区块链1上的用户B的PCN节点。
交换结果
结果是用户A在区块链1上减少货币以换取区块链2上的货币,而用户B则相反。
在正常操作中,此交换将在各自的支付通道网络上进行两次支付所需的时间内结算,在闪电网络的情况下通常是在数百毫秒内。
增加互操作性
两个支付通道网络及其基础区块链需要具有的唯一共同属性是为了使用跨网络原像检索完成原子交换,基于收到原像后不可撤销的付款承诺和对同一个预映像的支持的支付过程。这些原像的哈希函数(例如sha256)。对于通过无脚本消除甚至是散列函数的通用性限制也有积极的研究,但即使没有这样的开发,保持对单个散列函数的互操作性要求也会打开大量的潜在货币,包括目前正在开发的网络。开发(如RAIDEN和闪电网络)。
除了纸面上增加的互操作性外,跨网络原像检索通过消除对单个客户机支持两个区块链的要求,提高了实际的互操作性。对于不同的足够货币(如比特币和zcash),即使是遵循相同规格的客户(如bolt)也可能不同到需要(或至少建议)一个单独的客户。
简化实施
消除两个区块链上的两种货币同时在同一客户机内共存的需求,显著降低了交换实施的复杂性(正如Lightning Labs团队为LND取消优先级的并行多链支持所证明的那样)。
此外,跨网络原像检索通常使用每个支付通道网络都应该使用的原语。具体来说,它使用:
· 发送付款
· 结算付款
· 发票/原像创建
在一个区域中,支付通道网络节点必须执行非标准动作,即检索存储在外部服务上的原像。鉴于原像的潜在敏感性和分离问题的愿望,即使该功能可能最终在跨网络交换之外具有实用性。
权衡
当然,这种方法也有取舍。最容易想到的两个问题是减少隐私和限制跨网络消息传递。
闪电网络实验室演示的交换只要求发起方用户A知道用户B的身份,即转移方。跨网络原像检索要求每一方都知道对方的身份(至少在一个支付通道网络上),因为每一方都负责构建一条路线。在我看来,这是一个可以接受的折衷方案,因为在进行交易时,交易对手的身份可能是一个相关细节。
此外,由于这是一种跨网络和跨规范交换,因此将特定于网络的消息传递回来的能力是有限的。这也可能是一个可以接受的折衷方案,因为在网络间传递此类消息的需要也是有限的。
快速、简单且可互操作的跨链交换
跨网络原像检索允许交换利用支付通道网络带来的速度,允许交易与当今保管加密货币交换所允许的速度相当,同时保持链上的原子性,无信任性和最终性交换交易。
这种新机制允许在不同基础区块链上构建的多个不同类型的网络之间进行交换,这些网络在不同的网络客户端中实现。它是一种更简单的方法,能够更好地利用这些网络的内置功能,从而使其成为更强大的 交换机 制。
实践中的跨网络原像检索
我们在构建Sparkswap的同时开发了跨网络原像检索,这是一种交换加密货币的新系统,无需将资产存入第三方(如交易所)。这些交换正在为在 测试 网上运行的软件提供动力,执行比特币/莱特币交易,这些交易可以在几秒钟内完成。