學習狀態通道,Part 3 多跳交易 中心輻射通道

2021-09-22 12:46:42 字數 2706 閱讀 8896

part-1:支付通道

在我們開始之前,如果你還沒有讀過我的第一篇博文——菜鳥學習狀態通道,part-1,你一定得看一下,因為本博文是基於第一篇的。對此感興趣的人,這裡有乙個基於metamask 和 ipfs pubsub 實現的單向支付通道的實現以及演示。

-乙個神秘的玫瑰——非常漂亮,對吧?

儘管它美輪美奐,幾何特徵明顯,但是效率非常非常低——我們可以做的更好。

進入路由網路,每個人都可以通過公共連線(中介器)互相交易。大量減少了網路中的連線:

-看起來有點亂,但肯定更划算!-

這樣就很好了,因為我們不需要承擔頻繁開關鏈上通道的費用。 我們有了貫穿全網且一直開啟的通道;其他人要使用也可以,我們可以收費。需注意的是,要在兩個節點之間建立路由支付通道——必須要有一條路徑,路徑上每個節點的代幣不小於傳輸的數量。 以下是想要在路由網路中傳輸 3eth 的兩個節點(a,e)之間的有效和無效路由的示例。

-有效路由——最小通道大小為 4 eth,大於我們所需的 3 eth-

-無效路由——該路由不支援任何大於 2 eth 的傳輸-

現在可能有人會說,這種路由支付通道的費用可能會超過直接與目的賬戶連線的支付通道費用——如果是這種情況的話,會有新的節點上線提供通道並以此牟利。隨著時間的推移,網路會根據最佳路徑進行自我優化,產生最低費用。

這種路由方式當然是一種進步,但我們如何確保路徑上的人不會偷走我們要他**的錢?公認的做法是,用一種稱作「雜湊鎖」的機制,縮寫是「hlc」或「htlc」。

讓我們舉乙個簡單的例子,jerry 想發1 eth 給 kramer,而 newman 是他們在支付通道中唯一的共同連線。在這個場景下,newman 是乙個「轉移中介」,jerry 是「發起者」,kramer 是「目標接收者」。

為了促進實現這種中介轉移,我們將採取以下步驟(來自位元幣維基):

kramer 生成乙個隨機數並生成這個數的 sha256 雜湊值,然後把這個雜湊值給 jerry。

jerry 用支付通道向 newman 轉 1 eth,但他把 kramer 給他的雜湊值加到了支付條件裡:newman 要想收錢,就必須提供能夠產生相同雜湊值的資料。

newman 用支付通道向 kramer 轉 1 eth,並且把 jerry 給他的支付條件加到了他給 kramer 的支付條件裡。

kramer 有用於生成雜湊的原始資料(稱為原象),因此 kramer 可以使用它來完成自己的支付並完全收到 newman 的錢。這樣做的話,kramer 必然也將原象給了 newman。

newman 使用原象來得到 jerry 的錢。

太長不看版 —— jerry 給 newman乙個 iou(欠條),newman 把 iou 給 kramer,並且兩者的兌換條件相同。一般來說,我們形成這種 iou 鏈條,並且從目標接收者開始乙個接乙個向上家要求償付,最終回溯到傳送者那裡,資金就這樣在網路中完成了傳遞。

因此,這些「雜湊鎖」能夠讓發起者通過乙個或多個有一系列前向承諾的中介,給目標接收者轉賬。一旦前向承諾鏈建立成功,並且發起人已經支付,資金就會通過前向承諾路徑到達目標接收者。這大致就是位元幣閃電網路目前運作的方式。

注意:出於示例的目的,此處沒有給 newman 任何作為中間人的交易費。 這是乙個實現細節,可以包含到中介人的每個交易裡,根據他們的偏好收費。

從附近的街道開始(道路窄#乘車,慢速)

上一條主幹道(路寬適中#乘車,中速)

上高速公路(道路寬#乘車,最快)

下車到另一條主幹道(路寬適中#乘車,中速)

在朋友的鄰居街上結束(路寬小#乘車,慢速)

類似的行為會激勵形成我們所說的「中心輻射」網路(hub-and-spoke payment channels)。

在中心輻射支付通道,每個人都可以通過公共連線(hub)相互交易。這使我們從簡單的路由網路中獲得了更清晰的網路:

人們通常會對中心輻射網路持不同意見,聲稱它們是中心化的。在無法繞過 hub 並依賴於它們的情況下,當然是中心化的。但在這個網路中,你可以隨時向其它節點或其它 hub 開啟通道——這就在網路中提供了可選擇性。最後,網路會發展成這樣一種情形:在整個網路中會有非常多的 hub:

-截至 18 年 9 月 8 日的閃電網路 —— 來自 gaben.win -

目前,spankchain,nathan ginnever(finality labs)和 arjun bhuptani(connext)正在開發支付通道的中心輻射網路。

這幾個章節列出來的技術,讓我們稱之為「虛擬通道」的網路成為可能。在本系列的第4部分中,我們將深入介紹虛擬通道,敬請期待!

-我把這張圖放在下面,這樣就能當文章封面啦~ -

特別感謝 nathan ginnever和 connext 團隊,讓我了解他們在這個領域的實踐。

part-4:賬本通道和虛擬通道

part-5:廣義狀態通道

Python學習筆記 part 3

ide vscode python版本 python3.6 學習教材 python程式設計從入門到實踐 人民郵電出版社 操作列表 for a in b 構建了python的for迴圈,迴圈方式為每次從列表b中取出乙個元素存入a。例如 idiols chen ju liu for idiol in i...

《演算法筆記》學習記錄 Part 3 樹(下)

9.7.1 堆的定義與基本操作 堆是一顆完全二叉樹,樹中的每個結點都不小於 或不大於 其左右結點孩子結點的值,分為大根堆和小根堆 由於是完全二叉樹,可以使用陣列儲存 const int maxn 100 heap為堆,n為元素個數 int heap maxn n 10 對heap陣列在 low,hi...

嵌入式系統學習筆記 Part 3

arm處理器具有9種基本定址方式。1.暫存器定址 2.立即定址 3.暫存器移位定址 4.暫存器間接定址 5.基址定址 6.多暫存器定址 7.堆疊定址 8.塊拷貝定址 9.相對定址 暫存器定址 運算元的值在暫存器中,指令中的位址碼字段指出的是暫存器編號,指令執行時直接取出暫存器值來操作 立即定址 立即...