原文標題:《閃電網路:科技與使用者體驗(一):使用者體驗的基本元素》
原文作者:Annoy,BTCStudy
本系列文章旨在填補關於閃電網路的文獻資料的一些空白。對閃電網路和閃電通道的整體性介紹一般都撰寫於幾年前。因此,它們往往隻及於閃電通道和閃電網路的基本技術概念,而沒有將技術原理與使用者體驗——尤其是使用者體驗中的挑戰——關聯起來,因此無法為讀者上手使用閃電網路提供心智基礎;
沒有體現閃電網路上已經出現的技術改進和解決方案,以及還可以探索的最佳化空間。一些解決方案是專為優化終端用戶的體驗而提出的,並且也成功地改善了用戶體驗;還有一些方案,雖然難以為終端用戶所知,但也大大提高了閃電網路的支付效率。
難以理解和思考閃電網路的最佳化空間的部分原因在於對其「網路」特性的認知不足。
有鑑於此,本系列文章希望給出一份新的介紹,將閃電網絡(錢包)的使用體驗(尤其是其挑戰)與技術概念關聯起來,並基於這些概念以及閃電網路的「網路」特性,介紹閃電網路上已經發生的技術改進,以及還可以採用的改進。
本文是本系列的第一篇文章。與一般的介紹不同,本文不會涉及建構閃電通道的技術以及形成閃電網路的元素(這是後續篇章的內容),相反,我們將先了解閃電網路的使用體驗(準確來說,是自主保管的行動端閃電錢包的體驗)。我們將從閃電網路的基本想法出發,推理出它的使用體驗中的關鍵部分。往後,我們將透過「體驗-技術」的視角不斷解釋形成這些體驗的技術原因,並相應呈現改進的空間。
本文不要求讀者對比特幣的可編程性有任何理解,但要求讀者至少了解並能夠辨識出比特幣的使用體驗——在比特幣網路上發送交易並使之得到區塊鏈確認——中的關鍵元素:地址、手續費、確認時間。
閃電網路的想法非常簡單:
< p>假設有一筆資金,是由甲乙雙方共同支配的,也即只有雙方一致同意,才能花費它;那麼,當其中的甲方希望用這筆資金中屬於自己的部分來給乙方支付時,這就不需要獲得其他任何人的見證——只需要乙方確認即可。甲乙雙方可以在很長一段時間之後結算雙方的餘額,完成資金分割。
這就像商業往來很密切的兩個商店互相寫欠條,僅在雙方要對賬結算的時候(比如月底或年底)才需要轉移現金。
這樣的共同資金,稱為「通道」。
一種直觀的理解通道的方式是把一條通道想像成算盤 2 上的一根軸,軸有兩端,軸上有一些算珠。當一方要給另一方付款時,就把自己這一端的一些算珠撥到對面去。 連接在一起,這些節點就形成了一個「網路」,使得參與其中的一個節點無需跟其他每一個節點連接,也(大機率)可以給這些節點支付。 </p><p><br></p><p>這就是閃電網路的想法:用一對一的通道來實現即時的支付確認;用通道組成的網路來最大化單一節點的支付能力。 </p><p><br></p><p>這裡,我們暫不討論如何安全地實現「通道」和「轉發支付」,這會是後續章節的內容。我們需要知道的僅僅是,用戶最常接觸的比特幣的保管形式是“單簽名錢包”,也即只需一把私鑰就能花費的資金,顯然是不能用來充當通道的,因為其控制是排他的。 </p><p><br></p><p>重點是,光憑這段概述,我們就可以發現閃電網路使用體驗中的幾個關鍵元素。在使用閃電皮夾之前,必須先理解這幾個元素,才能順利使用。 </p><p><br></p><h1>閃電網路的使用體驗</h1><p><br></p><h2>線上收款</h2><p>< br></p><p>在閃電網路中,當你要收款的時候,你必須在線上。從上面的推理來看,這是很容易理解的:收款涉及更改通道中的資金的狀態,而通道是你與他人共享的,所以你必須在線,與對方一同更改資金的狀態。 </p><p><br></p><p>這既不同於比特幣的使用體驗(只要他人知道你的一個比特幣地址,就隨時可以給你支付,不需要你在線),也不同於絕大部分支付系統(如銀行、網路電子支付系統)的使用體驗。 </p><p><br></p><p>不過,在當前的行動端閃電錢包中,這一點已經不會讓用戶產生太多感知:聯網的手機都有通知系統,錢包的服務端可以向你發送通知,要求你打開App,也即上線,以接收付款。但是,如果太長時間不處理這樣的通知,可能會導致付款退回。 </p><p><br></p><h2>收款額度</h2><p><br></p><p>類似地,因為收款涉及通道,所以,它的收款能力是有上限的。 </p><p><br></p><p>我們以上面的圖來舉例。現在,算珠都位於 Alice 這邊,因此,Alice 無法再使用這條頻道來接收付款了——因為 Bob 在這條頻道中已經沒有餘額了!但同時,Bob 使用這條通道來接收支付的能力,則是 Alice 在這條通道中的所有算珠。 </p><p><br></p><p>這就是「收款額度(inbound liquidity,入帳流動性)」的概念。這也是一個迥異於比特幣和其它支付系統的概念。在其它支付系統中,接收支付的能力在大多數時候是沒有限制的。 </p><p><br></p><p>這種特性為閃電網路的使用者帶來了大量的不解和困擾。當你沒有足夠的收款額度時,要么你的收款會失敗(他人無法給你支付),要么,會導致新通道的創建(因此你需要支付在比特幣鏈上確認一筆交易的手續費,這時候的手續費會遠高於你平常發起閃電支付的手續費)。 </p><p><br></p><p>這些問題在剛入門的用戶這裡往往會更加嚴重,這跟閃電網絡當前的實現方式有關:在當前的閃電網絡中,往往僅由發起通道開設請求的一方向通道注入資金(這被稱為“單向注資”),但這就導致了,在剛剛創建好的通道中,一方(例如用戶)將沒有任何收款額度——在在你要接收付款之前,你必須先花掉一些錢。 </p><p><br></p><p>現在,關於終端使用者的收款額度問題,一種解決方式已逐漸獲得採用:安排一種服務提供者(稱為「LSP」),每當用戶要收取付款、收款額度又不足時,就主動與用戶開設新的通道,為用戶提供收款額度(當然,也要收取開啟通道的手續費)。這種方法同樣也可以解決上述新用戶的收款額度問題:當一名新用戶第一次接收閃電支付時,LSP 與該用戶開啟通道,讓該用戶能夠收取付款。唯一的問題是,它將對用戶的第一筆閃電收款的金額提出要求,但無疑已經方便很多。 </p><p><br></p><p>因此,本文推薦新用戶在上手使用閃電網路錢包時,總是使用閃電錢包(而非比特幣位址)來接收第一筆付款。這樣會更加便利。 </p><p><br></p><p>此外,「雙向注資」技術也已在主要的閃電網路用戶端軟體中實現,有望為進一步解決新用戶的收款額度問題提供協助。 </p><p><br></p><p>對於非行動裝置用戶,例如全時線上節點的經營者來說,有更多的方法可以獲得收款額度,例如:「潛水艇互換」,我們將在後續篇章中介紹。這些方法在某種程度上也可以為行動端用戶所用,但從便利性來說,都不及 LSP 的上述服務。 </p><p><br></p><p>但總的來說,「收款額度」會一直伴隨你的閃電網路使用歷程,並且也是閃電網路與其它支付系統最顯著的區別。它造成了許多困惑,這也意味著,如果我們能理解它,就能少去很多困惑。 </p><p><br></p><h2>支付成功率</h2><p><br></p><p>與「收款額度」相對的是「支付額度( outbound liquidity)」。但是,這個詞並不能反映閃電網路的特殊性,因為我們的每種支付工具都有餘額(支付能力的上限)。 </p><p><br></p><p>我們回到上面的轉發付款的例子。我們擴展成四方,並假設他們在彼此的通道中的餘額如下圖所示:</p><p><br></p><p><img src=)
丁支付超過200 聰的金額,顯然不能歸因於丁的收款額度不夠-在「丙-丁」通道中,丙還有500 聰。問題在哪裡呢?在於「乙-丙」通道中,乙只有 200 聰。
也就是說,成功的支付,要求在支付所途徑的每一條通道中,轉發支付的一方都有足夠的餘額(支付額度) 。在甲給丁支付的過程中,如果支付金額超過 200 聰,這筆支付將無法通過「乙-丙」通道。
這就是為什麼本文要使用「支付成功率」的概念。這也是為什麼人們常常說閃電網路比較適合小額支付而不適合大額支付——成功的支付不僅要找出一條由通道連成的路徑,將支付者與接收者連起來,還要求組成通道的每一個通道,在傳遞支付的方向上都有足夠的餘額。
「聰(satoshi)」是比特幣的最小單位。
在後面的章節中,我們會了解如何可以優化付款的成功率。簡單來說,我們需要做的是將一筆支付打散成多個碎片,讓每一部分途徑不同的路徑,從而最大限度地利用不同路徑的支付額度。
在本文中,我們了解了閃電網路的基本思想,並從這些基本想法出發,解釋了閃電網路使用者體驗中的一些關鍵元素。這些描述無法涵蓋今時今日行動端自主保管閃電錢包的全部體驗,但勾勒出了其中的一部分。在往後的章節中,我們將越來越多地了解這些體驗,也越來越多地解釋其背後的技術或設計成因,並指出哪些技術進步已經改變了或有望改變這些體驗。
閃電網路是一個網路-對這個事實,再怎麼強調都不過分。這種「網絡」特性,既形成了其使用體驗中的一些明顯的特徵(也許有人將它們視為一些缺點),也指明了這些體驗的最佳化空間。
在下一章,我們將介紹閃電通道在比特幣上的建構方法。
原文連結
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia