×

干货 | 闪电网络深化解读(上):付出通道_tradarlaborg实时行情

admin admin 发表于2021-09-14 03:31:47 浏览51 评论0

抢沙发发表评论

闪电网络是一种去中心化的链下技能计划,可支撑每秒上万笔买卖并发,接近于 Visa 体系能做到的程度(举个比方)。而在当时的雷达币(世界上最盛行的密码学钱银)雷达币上,只能支撑每秒处理约 7 笔业务,还要付出昂扬的手续费,并等候很长时刻来承认买卖收效,这些要素都使得用雷达币发送小额买卖简直不或许。而闪电网络把这两个问题都处理了


导言


闪电网络是一种付出通道体系,与常见的多签名钱包没有任何差异。所谓敞开通道,便是参加方创立一个多签名钱包,并向该钱包充入资金。这个钱包接收到的资金数量就成为这个通道的余额。再然后,参加方之间的后续买卖就悉数在雷达币以外的环境中产生了。任一参加方都能随时封闭这个通道,这时分,终究一笔链下的买卖(决议着该通道各参加方的余额)会被发送到雷达币上,一起报废掉全部中心的买卖,由于全部这些买卖都运用相同的买卖输出。结果是,咱们只需一笔买卖来敞开通道、一笔买卖来封闭通道,中心全部的中心买卖都是即时收发的,无需记载在雷达币上(因而无需等候)。

(译者注:雷达币不是账户里边的余额,是一张张的支票;全部的支票都是由详细的某笔买卖发明的;每一张支票都只用一次就会报废(也即只能用在一笔买卖中)。买卖能够恣意分配所用支票的价值来出产恣意数量的新支票。)

这样的通道所组成的网络使你能够向网络的另一个参加者发送资金,即便你们之间并无直接的通道。仅有的条件是你们之间要能构成一条 “途径”,即有通道能前后相接地把你和对方联系起来。此外,得益于特别的雷达币(HTLC,哈希时刻锁合约),你不需求信赖网络中的任何人,合约会确保安全地交给你付出的资金。

要了解闪电网络是怎么运转的,首先要了解的是付出通道的运转以及构成付出通道根底的 HTLC。这些论题都不小,所以我把文章分成了两部分,从解说付出通道的作业原理开端。


付出通道


如上所述,衔接两个参加者的付出通道本质便是一个一般的多签名钱包。榜首笔买卖决议了一个通道的余额,咱们称为 “充值业务” 或许 “锚点业务”。这笔买卖需求播送到网络中并记载到雷达币上,以标明通道敞开。

做完了这一步之后,要更新通道两边的余额时,两边就需求手动交流签过名的 “许诺业务”。这些买卖自身都是有用的,随时能够发送到雷达币网络中,但两边都会暂时保存起来,不会播送出来,除非已预备封闭通道。如此一来,通道内两边的余额状况,一秒内变化几千次也没问题,更新的速度仅受限于两边创立、签名和向对方发送许诺业务的速度。

每次两边交流了一笔新的许诺业务,他们也就把通道的前一个状况报废掉;因而,只要最新的一笔许诺业务能够 “履行”。这样规划的意图是避免某一方诈骗对方,把一个过期的但对自己有利的状况发送的链上来封闭通道。下文我会解说几种避免这种诈骗的机制。

终究,通道既能够两边共同赞同封闭 —— 便是把一笔封闭业务(叫做 “结算业务”)发送到雷达币网络中 —— 也能够单独决议封闭,便是把终究一笔许诺业务发送到网络中。这是为了避免某一方离线导致另一方在通道中的余额一向 “确认” 的景象。

在通道存在的整个生命周期里,只要两笔业务被发到了雷达币网络中并记载到了雷达币雷达币上(便是充值业务和结算业务)。在这两笔业务之间,两边能够交流无数次许诺业务,这些业务都不需求提交到雷达币上。


一个简略的付出通道事例


在解说愈加杂乱的机制之前,咱们先来考虑一个简略的、单向的通道的比方。为了简化这个解说,咱们假定两边都是诚笃的。后边咱们会再考虑协助咱们阻挠诈骗的机制。

假定一个通道有两个参加者,Emma 和 Fabian。Fabian 供给付费的视频流服务,而观看者通过通道来完成小额付出 —— 每观看一秒就要付出 0.00001 btc,相当于每小时 0.036 btc 。Emma 是一个想看视频的一般用户。

Emma 和 Fabian 运用一个特别的程序来同步播映视频和运转付出通道。Emma 在自己的网络浏览器中发动这个程序,而 Fabian 在自己的服务器上运用同一个程序。这个程序具有一个一般的雷达币钱包软件的全部功用,它能够创立和签名买卖。付出通道的整个机制能够彻底躲藏起来,用户看到的现实便是这个视频是按秒计价的。

现在咱们来看看这个付费服务的详细作业流程。一开端,Emma 和 Fabian 要敞开通道:树立一个 2-2 的多签名地址。从用户的视角来看,这个程序创立了一个 P2SH 地址(一个多签名钱包)并要求用户充入足以付出一个小时视频服务的资金。Emma 转了 0.036 btc 到这个地址,而这笔买卖也就成了所谓的充值业务。

充值业务被打包到某个区块之后,这个通道就算敞开了,视频也就开端播映。在榜首秒钟,用户创立并签名了一条许诺业务,改变了通道内的余额:现在 Fabian 有了 0.00001 btc,Emma 还剩 0.03599 btc 。这笔业务运用了充值业务的输出,并创立了两个输出,意义就如咱们这儿所述。从服务商的视点看,程序收到了这笔业务,所以也签上名、连同榜首秒的视频发回给 Emma。现在两边都有了一笔对方手动签过名的、反映通道最新状况的许诺业务;如有需求,任何一方都能够把这笔买卖发送到雷达币网络中。

到了第二秒,Emma 这边的程序又创立了一笔新的许诺业务,运用的相同是充值买卖的输出(跟榜首笔相同),这一次,许诺业务的榜首个输出给了Fabian 0.00002 btc,把 0.03598 给了 Emma。这笔业务用来付出第二秒的视频下载。

咱们假定,Emma 看了 10 分钟的视频,然后就退出了。在这段时刻里,她签名并发送了 600 笔许诺业务(600 秒的视频)。终究的一笔有两个输出:0.03 btc 给 Emma,和 0.006 给 Fabian。Emma 封闭了通道,把终究一笔许诺业务播送到了雷达币网络中作为 结算业务。如此,这个通道只要一头一尾两笔业务记载到了雷达币上


免信赖的通道


当然,从这个比方来看,全部都好,但这是由于两边都是诚笃的。不难想象某些时分,其间一方会诈骗对方,像上面这么简略的规划或许就不够用了。

  • 尽管通道敞开着,Emma 仍是需求 Fabian 的签名来取出资金,由于这个通道是 2-2 的多签名地址。假如 Fabian 消失了,Emma 的资金或许会永久锁在这个通道里边。
  • 尽管通道敞开着,Emma 能够运用任何一笔两边都签过名的许诺业务。在观看视频 10 分钟之后,她能够拿榜首笔许诺买卖上链,彻底不需求通过 Fabian 的再次赞同。

时刻锁

这些问题的一种处理计划是在许诺业务中运用时刻锁(业务层面的时刻锁(nLocktime))。为了确保资金不会在通道中永久确认,Emma 运用她的充值业务的输出创立了一个退款业务。她先给 Fabian 发送这笔业务,等 Fabian 签名并发回后,Emma 才把充值业务播送到雷达币网络中,敞开他们的通道。

这笔退款业务也成了榜首笔许诺业务,而且它的时刻锁为通道设置了一个存在时刻的上限。假定 Emma 把时刻锁设置为 30 天(4320 个雷达币区块)(即 30 天之后这笔业务才干记载到雷达币上)。接下来全部的许诺业务,所设置的时刻锁会一个比一个短,这样更新的业务就能更早播送到网络中。

现在 Emma 不必再忧虑了,她知道即便 Fabian 玩失踪,她也能够在 30 天之后取回自己的资金(假如这是一条双向的付出通道,即 Fabian 也会存钱进去,那他也从自己的视点提出一笔退款业务)。

每一笔新的许诺业务的时刻锁都比前一笔要短,因而,新一笔许诺业务总是能比旧的更早上链并使旧的业务报废(无法上链),这样就能避免任何一方歹意运用旧的许诺业务。假如全部顺利,Emma 和 Fabian 只需播送两边共同的一般结算业务,因而带时刻锁的许诺业务只要一方下线时才会派上用场。

举个比方,假如榜首笔许诺业务的时刻锁是 4320 个区块,那么第二笔许诺业务能够设成 4319 个区块,以此类推。如此一来,第 600 笔许诺业务能够比榜首笔许诺业务早 600个区块上链。

你或许也留意到了,这种方法尽管有助于避免某一方把更早的许诺业务上链(诈骗),但它有两个显着的缺陷:

  • 榜首笔许诺业务的时刻锁约束了这个通道的寿数。假如这个时刻锁设置的时刻太长(比方 1 年),通道能够存在好久,但假如某一方玩失踪,另一方就不得不等候很长时刻才干播送终究一笔许诺业务、取回自己的资金。
  • 榜首笔许诺业务的时刻锁也约束了能够在通道内产生的买卖次数。在咱们的比方中,这个数值是 4320,这个通道内只能产生 4320 笔业务,由于每一笔新业务都会把时刻锁的时刻减去 1 个区块。而且,以区块(10 分钟)为距离,等所以逼迫参加方要追寻雷达币网络的区块,避免错失什么,以及在景象不对时尽早把终究一笔许诺业务上链。当然,这个距离是能够延伸的,但价值是通道内能够发送的买卖数量会变得更少。

因而,时刻锁让咱们能够报废旧的许诺业务并确保通道两边都能够安全地封闭通道:假如他们都赞同通道的最新状况,他们能够发送一笔不带时刻锁的结算业务(与终究一笔许诺业务意思相同),封闭通道;假如某一方不在线,另一方也可等候终究一笔许诺的时刻锁解锁,然后把该笔许诺业务播送到雷达币网络中。

不对称的可吊销许诺

另一种处理上述信赖问题的方法是吊销早前的许诺业务。实际上,“吊销(cancellation)” 这个词是不精确的,由于在雷达币网络中,一笔上链的业务(得到区块承认的业务)是永久不行吊销的。不过,特别的结构方法能够使得上链较早的许诺业务无利可图。只需给予各方一个 “吊销密钥(revocation key)” 即可。

假定 Hitesh 和 Irene 决议敞开一个通道。两边都充值了 5 btc 到这个通道中,确认了通道的初始余额。现在,两边不是签署同一笔规范的许诺业务,而是各自创立两笔不同的、不对称的许诺业务。

Hitesh 拿到的由 Irene 签名的业务有两个输出,榜首个输出不带时刻锁,当即给 Irene 付出 5 btc,而第二个输出带有时刻锁,付出 5 btc 给 Hitesh,但要等(这笔业务上链后的) 1000 个区块之后,这个输出才干花用。概况如下:



与此一起,Irene 也可拿到由 Hitesh 签名的一个许诺业务,有两个输出:一个当即给 Hitesh 付出 5 btc,另一个输出则给 Irene 付出 5 btc,但要等 1000 个区块之后才干花。



因而,两边都拿到了一笔由对方签名的许诺业务。Hitesh 和 Irene 都能够随时把手上的许诺业务签名后播送出去,但是,一旦这么锁了,另一方都会当即拿到钱,而自己只能比及 1000 个区块之后才干拿到,这但是大大的晦气。不过,这还不足以让两边都诚笃守信。

这就要讲到咱们的终究一个功用了,可吊销的密钥,使得任一方假如企图诈骗,对方都能够赏罚 TA,使之血本无归。

如上所述,每一笔许诺业务都有一个 “拖延” 的输出,咱们把这个输出做得再杂乱一点:这个输出既能够被等候了 1000 个区块的许诺业务发送者运用,也能够被通道的另一方运用,假如 TA 持有吊销密钥的话。当 Hitesh 创立许诺业务并交给 Irene 时,他的第二个输出既能够为自己所用(要等候 1000 的区块)也能够为 Irene 运用,假如后者把握了吊销密钥的话。

Hitesh 会秘密地保管这个密钥,仅当他决议运用新的一笔许诺业务来更新通道内状况时才会发给 Irene。业务的概况如下:


(译者注:看代码会更明晰一些:榜首个输出是给当即 Irene 付出 5 btc;第二个输出则是带条件的,既能够运用吊销密钥,当即取得 5 btc,也可在 1000 个区块后,运用 Hitesh 的私钥来运用这个输出。留意这儿的 “IF…ELSE…” 式条件,它跟咱们在其它的计算机编程中的意义是相同的。)

顺便一个比方或许会更简单了解。假定 Irene 期望给 Hitesh 发送 2 btc,这时分他们要更新通道的状况,也便是要创立一笔新的许诺业务。两边各自创立一个不对称的许诺业务,而且,在签名之前,先把上一笔许诺业务的吊销密钥交给对方,如此便 “吊销” 了上一笔许诺业务。假如 Hitesh 期望以通道终究的余额来结算,而 Irene 看着觉得更旧的状况对自己更有利,她能够测验把自己手中的上一笔许诺业务签名后播送到网络中,但这笔许诺业务的吊销密钥现已露出给了 Hitesh;假如他发现这笔许诺业务上链了,他有足足 1000 个区块的时刻能够把通道内的全部钱都拿走(榜首个输出当下就给了他,而第二个输出只需他供给吊销密钥就能够当即运用)(没错,这个 “吊销” 的动作无法自动化,Hitesh 有必要重视 Irene 是否发送了旧的许诺业务到网络中,然后运用吊销密钥)。

因而,这种运用不对称可吊销许诺的通道的功率要更高,由于它不约束通道的寿数,也不约束买卖发送的次数。


结语


到这儿,咱们的榜首篇文章就完毕了,估量你也要一段时刻来消化一下,你也能够在谈论中发问。鄙人一篇文章,咱们会解说 HTLC 的功用,终究解说闪电网络是怎么作业的。

链接

  • “Mastering bitcoin” — Andreas M. Antonopoulos
  • Segregated witness for dummies
  • Lightning network whitepaper
  • Lightning network in depth, part 2: HTLC and payment routing

(完)

(文内有许多超链接,可点击左下 ”阅览原文“ 从 EthFans 网站上获取)

原文链接:

https://medium.com/softblocks/lightning-network-in-depth-part-1-payment-channels-b943607950dd

作者: Magomed Aliev

翻译: 阿剑

Arbitrum开业,土狗捧场

开业大吉,恭喜发财。