區塊鏈-閃電網絡示例

目錄:http://www.javashuo.com/article/p-nitsjfvy-ey.html 算法

摘自《精通比特幣》網絡

閃電網絡是一種端到端鏈接的雙向支付通道的可路由網絡。這樣的網絡能夠容許任何參與者穿過一個通道路由到另外一個通道進行支付,而不須要信任任何中間人。 閃電網絡由JosephPoon和ThadeusDryja 於2015年2月首次描述,其基礎是許多其餘人提出和闡述的支付通道概念。區塊鏈

「閃電網絡」是指路由支付通道網絡的具體設計,現已由至少五個不一樣的開源團隊實施。這些的獨立實施是由「閃電技術基礎」(BOLT)論文中描述的一組互通性標準進行協做。.net

閃電網絡的原型實施已經由幾個團隊發佈。如今,這些實現只能在testnet上運行, 由於它們使用segwit,尚未在比特幣區塊主鏈(mainnet)上激活。設計

閃電網絡是實現可路由支付通道的一種可能方式。還有其餘幾種旨在實現相似目標的設計,如Teechan和Tumblebit。3d

讓咱們看看它是如何工做的。blog

在這個例子中,咱們有五個參與者:Alice,Bob,Carol,Diana,andEric。這五名參與者已經彼此之間開設了支付通道。Alice 和 Bob 有支付通道。Bob 鏈接 Carol,Carol 鏈接到 Diana,Diana 鏈接 Eric。爲了簡單起見,咱們假設每一個通道每一個參與者都 注資 2 個比特幣資金,每一個通道的總容量爲4個比特幣。路由

下圖顯示一系列經過雙向支付的通道鏈接在一塊兒造成閃電網絡以支持一筆 從 Alice 到 Eric 的付款展現了閃電網絡中五名參與者,經過雙向支付通道鏈接, 可從Alice付款到Eric(路由支付通道(閃電網絡))。get

Alice 想要支付給 Eric1 個比特幣。 不過,Alice 並未經過支付通道鏈接到 Eric。 建立支付通道須要資金交易,而這筆交易必須首先提交給比特幣區塊鏈。 Alice 不想打開一個新的支付通道並支出更多的手續費。 有沒有辦法間接 支付 Eric?原型

下圖顯示了經過在鏈接各方參與者的支付通道上經過一系列 HTLC 承諾將付款從 Alice 路由到 Eric 的逐步過程。

Alice 正在運行閃電網絡(LN)節點,該節點正在跟蹤其向Bob的付費通道,而且可以發現支付通道之間的路由。Alice 的 LN 節點還具備經過互聯網鏈接到 Eric 的 LN 節點的能力。 Eric 的 LN 節點使用隨機數生成器建立一個祕密 R。Eric 的節點 沒有向任何人泄漏這個祕密。相反,Eric 的節點計算祕密R對應的哈希 H,並將此哈希發送到 Alice 的節點。

如今 Alice 的 LN 節點構建了 Alice 的 LN 節點和 Eric 的 LN 節點之間的路由。所使用的路由算法將在後面進行更詳細的解釋,但如今咱們假設 Alice 節點能夠找到一個高效的路由。

而後,Alice 的節點構造一個 HTLC,支付到哈希 H,具備 10 個區塊時間的退款超時(當前塊+10),數量爲 1.003 比特幣。 額外的0.003將用於補償參與此支付路由的中間節點。 Alice將此HTLC提供給Bob, 從和 Bob 之間的通道餘額中扣除 1.003 比特幣,並將其提交給 HTLC。 該HTLC具備如下含義:「若是 Bob 知道祕密,Alice 將其通道餘額的 1.003 支付給 Bob,或者 若是超過10個區塊時間後,則退還入 Alice 的餘額」。 Alice和Bob之間的通道餘 額如今由承諾交易表示,其中有三個輸出:Bob 的 2 比特幣餘額,Alice 的 0.997 比特幣餘額,Alice 的 HTLC 中承諾的 1.003 比特幣。承諾在 HTLC 中的金額從 Alice 的餘額中被減去。

Bob 如今有一個承諾,若是他可以在接下來的 10 個區塊生產時間內得到祕密 R, 他能夠獲取 Alice 鎖定的 1.003。手上有了這一承諾,Bob 的節點在和 Carol 的支付通道上構建了一個 HTLC。Bob 的 HTLC 提交 1.002 比特幣到哈希 H 共 9 個區塊時 間,這個 HTLC 中若是 Carol 有祕密 R 她能夠兌換。Bob 知道,若是 Carol 要獲取他的 HTLC,她必須出示祕密 R。若是 Bob 在 9 個區塊的時間內有 R,他能夠用它來獲取 Alice 的 HTLC 給本身。經過承諾本身的通道餘額 9 個區塊的時間,他也賺了 0.001 比特幣。若是 Carol 沒法獲取他的 HTLC,而且他也沒法獲取 Alice 的 HTLC,那麼一切都將恢復到之前的通道餘額,沒有人會虧損。 Bob 和 Carol 之間的通道餘額如今是:2 比特幣給 Carol,0.998 給 Bob,1.002 由 Bob 承諾給 HTLC。

Carol 如今有一個承諾,若是她在接下來的 9 個區塊時間內得到 R,她能夠獲取 Bob 的鎖定 1.002 比特幣。如今她能夠在她與 Diana 的通道上構建 HTLC 承諾。她提交 了一個 1.001 比特幣的 HTLC 到哈希 H,共計 8 個區塊時間,若是 Diana 有祕密 R , 她就能夠兌換。從 Carol 的角度來看,若是可以實現,她 就能夠得到的 0.001 比特幣,不然也沒有失去任何東西。她提交給 Diana 的 HTLC, 只有在 R 被泄漏的狀況下才可行,到那時候她能夠從 Bob 那裏索取 HTLC。Carol 和 Diana 之間的通道餘額如今是:2 給 Diana,0.999 給 Carol,1.001 由 Carol 承諾 給 HTLC。

最後,Diana 能夠提供給 Eric 一個 HTLC,承諾 1 比特幣,7 個區塊時間,到哈希 H 。Diana 與 Eric 之間的通道餘額如今是:2 給 Eric,1 給 Diana,1 由 Diana 承諾給 HTLC。

然而,在這條路上,Eric 擁有祕密 R,他能夠獲取 Diana 提供的 HTLC。他將 R 發 送給 Diana,並獲取 1 個比特幣,添加到他的通道餘額中。 通道平衡如今是:1 給 Diana,3 給 Eric。

如今,Diana 有祕密 R,所以,她如今能夠獲取來自 Carol 的 HTLC。Diana 將 R 發 送給 Carol,並將 1.001 比特幣添加到其通道餘額中。現 在 Carol 與 Diana 之間的通道餘額是:0.999 給 Carol,3.001 給 Diana。Diana 已經 「賺了」參與這個付款路線 0.001 比特幣。

經過路由回傳,祕密 R 容許每一個參與者獲取未完成的 HTLC。Carol 從 Bob 那裏獲 取 1.002 個比特幣,將他們通道餘額設爲:0.998 給 Bob,3.002 給 Carol。

最後,Bob 獲取來自 Alice 的 HTLC。他們的通道餘額更新爲:0.997 給 Alice,3.003 給 Bob。

在沒有向 Eric 打開通道的狀況下,Alice 已經支付了 Eric1 比特幣。付款路線中的 中間方沒必要要互相信任。在他們的通道內作一個短期的資金承諾,他們能夠賺 取一小筆費用,惟一的風險是,若是通道關閉或路由付款失敗,退款有段短短的 延遲時間。