“打通”区块链:闪电网络即时跨链交易

数字货币界的全新世界或将开启

编者按:今日(2017 年 11 月 17 日)早间五点四十五分,闪电网络实验室在推特上发文宣布,他们成功完成了 首笔从比特币到莱特币的闪电网络跨链原子级交易 。同时,推文上还附带了相关的说明公告,为大家详细地介绍了闪电网络是如何在链下实现跨链原子交易的。

006V5KdJgy1flkr3hzt7zj30hc0e975q图片源自:闪电网络实验室官方 Twitter

隔离见证于莱特币以及比特币网络相继激活之后,围绕着跨链原子交易的讨论以及实验也逐渐热烈起来。 前段时间 ,莱特币创始人李启威和比特币早期投资者 Roger Ver 之间建立了一笔价值约 8 百万美元涉及 1000 个比特币的 BTC、B2X(现已取消)间跨链交易。此外,不少团队也在其他区块链间实现了这种无缝对接的交易(比如由 Altcoin Exchange 测试的比特币兑以太坊交易)。而今天,闪电网络实验室则在比特币和莱特币的测试网络间完成了首笔闪电原子级跨链交易。

那么这究竟是什么呢?就是当两个人,比如 Bob 和 Alice 的数字货币资产处于两条不同的区块链时,他们可以通过这种原子级跨链交换技术直接进行安全地货币交换。

这种原子级跨链交易的执行只有两种结果,要么 Alice 和 Bob 之间成功完成数字货币交换,要么就什么都没有发生。这是至关重要的,因为它无需经过任何可信的第三方,也避免了欺骗等现象的出现。

闪电网络上的跨连原子级交易具有不少可取之处,比如即时结算、提高交易隐私性以及降低交易手续费等等。在闪电网络实验室看来,这种技术将有助于未来基于闪电网络的去中心化交易所的建立。

链上原子级交换

关于链上原子级交换,我们将从一个简单的图表开始说起(点击 这里 可获取概念介绍)。此外,在这里声明,目前出现了很多复杂的链上协议,但是闪电网络实验只专注研究其中一种。

006V5KdJgy1fll58nqivvj31em1hi79b

 

上图大概描述了生成跨链原子级交易的过程。不过要注意的是,编号仅代表交易签名的顺序,不表示其生成的顺序。向上的箭头代表着在双方区块链上交易的建立以及完成(可能),实线箭头用于表示成功交换之后的操作。为了方便接下来的介绍,我统一使用了闪电网络的相关术语来进行描述。

假设交易之前 Alice 有 1 个比特币,Bob 有 10 个莱特币;经过跨链原子级交易协议的系列操作之后,Alice 会按交易要求收到 10 个莱特币(6),而 Bob 则会收到 1 个比特币(7)。

我们把整个跨链原子级交换的过程可以分为两大阶段:设置阶段(setup phase:1-5)和认领阶段(claim phase:6-7),我们今天讨论的三种协议就是在这七个步骤中实现的。在进入认领阶段之前的任一环节中,Alice 和 Bob 可以随时单方面终止交易,届时数字货币将会原路退回。一旦进入认领阶段,Alice 和 Bob 便无法撤销交易且可在相应的区块链上获得数字资产。

设置阶段

设置阶段是为了在 Alice 和 Bob 间建立起足够安全的交易通道。作为起始步骤,Alice 会首先生成一个 32 字节的散列值 x,作为原像,并进行加密——使用如 SHA256 等哈希函数计算出的哈希值 H(x) 来代表原像。

然后,Alice 会建立一个包含 H(x) 值的委托交易,也可以说是一个临时账户。而委托交易只会在以下两种情况其中之一成立时,释放出 Alice 暂存在里面的 1 个比特币:①Bob 提交正确的哈希值,x;②48 小时后系统自动退款。这意味着,Alice 只要在规定时间前将 x 值告诉 Bob,Bob 就可通过提交 x 值来获得 Alice 的比特币。而刚刚提到的退款协议则是在双方交易前签订的,用以确保交易无法进行时,相关数字货币可退回原持有者的账户。不然,Bob 就能故意不提供 x 值,使双重签名交易无法实现,而导致 Alice 的数字资产冻结在临时账户里。

下一步,同样为 Bob 的 10 个莱特币建立安全临时交易账户,并依照 Alice 的顺序签订相关退款协议。不过,Bob 协议上的超时交易退款时间设定为 24 小时,而非 48 小时。顺带一提,待会儿你将看到这种时间锁存在的重要性。

当交易双方在各自的区块链上创建好相关的委托交易之后,设置阶段的工作就告一段落了。

认领阶段

上面的步骤完成之后,Alice 依然是唯一一个知道 x 值的人,所以她可以在这 24 小时内选择任一时间向 Bob 提出获得莱特币的要求。另一方面,虽然 Bob 不知道 x 值,但是它能让 Alice 的比特币冻结 48 个小时。此外,由于双方的委托交易使用了相同的哈希值,所以只有当 Alice 告诉 Bob x 值是什么的时候,她才有获得 10 个莱特币的权利。

总的来说,Alice 想要获得 Bob 的 10 个莱特币,就需要释放自己的认领协议;否则临时账户中的数字资产将在相应时间后返还到双方的原账户中,回归原样。那 Alice 应该什么时候释放她的认领协议(或者说将 x 值透露给 Bob)呢?

还记得吗,Bob 退款协议的期限是 24 小时。所以 24 小时内,Alice 没有将含 x 值的认领协议给 Bob,Bob 就可以拿回自己的莱特币,并把 Alice 的比特币冻结在临时账户里,直到退款协议的 48 小时时间锁失效。而 Bob 在拿到 x 值之后,他也有足够的时间考虑是否与 Alice 进行原子交换。当 Bob 也给出正确的 x 值后,交易完成,双方立即获得自己所需的数字货币。

那么,这和闪电网络有什么联系?

虽然在 Alice 告诉 Bob 原像 x 的时候,认领阶段可能还会继续,但实际上他们已经锁定在交易完成的状态了,否则他们可能会面临丢失所有交易资产的风险。此外,使用这种基于原像的模式进行交易,将能把等待交易完成的时间从一小时甚至是更长的时间,缩短至像发送 32 字节文件一样快。

你们可能会想,如果我们能建立一个更高速、去中心化的网络来发送这种匿名的基于原像的交易,不是更棒吗?先别急,看下面。

在这些基础之上,闪电网络使用了一种特殊的支付方式,称为哈希时间锁定协议(HTLC)。这种协议与我们上面提到的——使用退款协议来保证双方资产安全并使用原像来确认交易的例子有点相似。从理论上说,他们之间唯一的区别是,闪电网络可使用的范围更广、延展性更高。

简单起见,我们不全面地讨论闪电网络是什么,仅仅关注于如何在闪电网络和跨链原子交换中实现交易。这里要注意的是,闪电网络的交易并不会广播到区块链上,但是方便起见你可以自己想象“交易链”的存在。任何一方在任何时候,都可以将自己的委托交易广播到“交易链”上,系统随时监测链上发出的含有 x 值的协议,以及过期等待退款的协议等等。

简单闪电支付


006V5KdJgy1fll59ej4fwj31kw1bsn32

上面是 Alice 通过 Bob 与 Carol 实现简单闪电支付的示意图。这种交易方式由两条比特币支付通道和一条从 Alice 到 Bob 再从 Bob 到 Carol 的原子交换通道组成。如果 v 是支付给 Carol 的金额,那么交易完成之后,Alice 账户上会减少 v 个比特币,Bob 没有变化,Carol 获取 v 个比特币。

开始的时候,Carol 会生成原像,x 值,并把计算出的哈希值 H(x) 交给 Alice。接下来,交易将进入设置阶段,也就是设定支付路线的过程。整个支付路线(从 Alice 到 Carol)搭建的过程中,将会使用同一个 H(x) 值来设定不同通道间的哈希时间锁定协议。

此外,在支付通道中,越靠近 Carol 的支付通道的时间锁,时间越短。这样便可迫使支付通道间各环节能即时释放出 x 值,从而保证交易的原子性和一致性。

建立好安全的交易通道之后,我们接下来就要解决支付问题。在这种情况下,Carol 将沿着支付通道将 x 值传回给 Alice。也就是说,如果 Alice 从 Bob 中获得一个与 H(x) 匹配的 x 值,就代表交易已经成功,因为 Bob 获得 x 值的唯一条件是已经将比特币转给 Carol。

闪电原子交换

上面我们已经为大家介绍了链上原子级交换与闪电支付,最后我们再介绍一下如何使用闪电网络实现跨链原子级链下交易。

在简单闪电网络的支付中,Alice 没有收到任何的钱。这也是问题所在,交换意味着每一个发出方,在发送交易同时也应该接收到相应的交易。所以我们为 Alice 构建了一条循环的通路来解决这一问题。简单来说,Alice 是路线的起点也是终点,是原子交换的交易发送方和接收方。

006V5KdJgy1fll59qm7qkj31bi1g2wk1

所以,为了让 Alice 在进行闪电网络跨链原子级交易过程中,能够和 Bob 实现比特币和莱特币的交换,她必须同时在两条链上开放支付通道。就像上图所示,实现交易的方法是 Alice 和 Bob 在两条链上都开通支付通道。正因如此,Alice 和 Bob 间的支付通道不一定要直接相连,因为支付通道是环状的,无论怎么样 Alice 都能通过支付通道与 Bob 建立联系。

在构建起的环形支付通道中,Alice 将比特币转移给 Bob,Bob 把莱特币转移给 Alice;而 Bob 接收到的比特币和发送出的莱特币的数量比值,则反映出当下两种数字货币间的汇率。由于闪电支付的原子性质,交易过程只会出现两种情况,要么成功(完成交换),要么失败(返还各自原账户)。

实验简介

下图使我们这次成功完成交易的截图,以莱特币兑比特币 100:1 的固定汇率进行的交易。

1、Alice 在 lnd(闪电网络守护进程)上查询与 Bob 的交换路线,并发出用 100 Satoshis(1Satoshis=0.00000001 BTC)换取莱特币的请求;

2、将交易路线放到 lnd 的 sendtoroute 功能中,它便能按照设定执行交易;

3、如果交易成功,Alice 将会第一时间将 10000 Litoshis 传送给 Bob,并随即收到 100 个 Satoshis;

4、最后,通道上余额量表示着,交易成功。

图片1

最后,你们可以点击 这里 观看我们第二次测试的相关视频;而我们使用的修改版 lnd,可在 Github 上查看。

【重磅】粹客网旗下区块链研究小组哈希派正推出针对比特币扩容事件的系列专题报道,想要全方位了解扩容事件始末、掌握未来走向,请关注微信公众号 “哈希派 ”。

本文来自投稿,不代表比特街|比特币爱好者新闻网立场,如若转载,请注明出处:http://bitejie.net/7638.html

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:server@bitejie.net

工作时间:周一至周五,9:30-18:30,节假日休息