menu-icon
anue logo
鉅樂部鉅亨號鉅亨買幣
search icon
Empty
區塊鏈

閃電網路:技術進步與用戶體驗的關聯性

BlockBeats 律動財經 2024-02-09 15:00

news-cover-image
律動財經圖片

本系列文章旨在填補關於閃電網路的文獻資料的一些空白。對閃電網路和閃電通道的整體性介紹一般都撰寫於幾年前。因此,它們往往只及於閃電通道和閃電網路的基本技術概念,而沒有將技術原理與用戶體驗——尤其是用戶體驗中的挑戰——關聯起來,因此無法為讀者上手使用閃電網路提供心智基礎;

沒有體現閃電網路上已經出現的技術改進和解決方案,以及還可以探索的優化空間。一些解決方案是專為優化終端用戶的體驗而提出的,並且也成功地改善了用戶體驗;還有一些方案,雖然難以為終端用戶所知,但也大大提高了閃電網路的支付效率。

難以理解和思考閃電網路的優化空間的部分原因在於對其「網路」特性的認識不足。

有鑒於此,本系列文章希望給出一份新的介紹,將閃電網路(錢包)的使用體驗(尤其是其挑戰)與技術概念關聯起來,並基於這些概念以及閃電網路的「網路」特性,介紹閃電網路上已經發生的技術改進,以及還可以採用的改進。

本文是這個系列的第一篇文章。與一般的介紹不同,本文不會涉及構造閃電通道的技術以及形成閃電網路的元素(這是後續篇章的內容),相反,我們將先了解閃電網路的使用體驗(準確來說,是自主保管的行動端閃電錢包的體驗)。我們將從閃電網路的基本想法出發,推理出它的使用體驗中的關鍵部分。往後,我們將通過「體驗-技術」的視角不斷解釋形成這些體驗的技術原因,並相應呈現改進的空間。

本文不要求讀者對比特幣的可編程性有任何理解,但要求讀者至少了解並能夠辨識出比特幣的使用體驗——在比特幣網路上發送交易並使之得到區塊鏈確認——中的關鍵元素:地址、手續費、確認時間。

閃電網路的想法

閃電網路的想法非常簡單:

假設有一筆資金,是由甲乙雙方共同支配的,也即只有雙方一致同意,才能花費它;那麼,當其中的甲方希望用這筆資金中屬於自己的部分來給乙方支付時,這就不需要獲得其他任何人的見證——只需要乙方確認即可。甲乙雙方可以在很長一段時間之後結算雙方的餘額,完成資金分割。

這就像商業往來很密切的兩個商店互相寫欠條,僅在雙方要對賬結算的時候(比如月底或年底)才需要轉移現金。

這樣的共同資金,稱為「通道」。

一種直觀的理解通道的方式是把一條通道想象成算盤 2 上的一根軸,軸有兩端,軸上有一些算珠。當一方要給另一方支付時,就把自己這一端的一些算珠撥到對面去。

假設一些人不止有一條通道,那麼,他們就可以為其他人「轉發支付」。比如,甲與丙沒有通道,但是甲跟乙有通道、乙跟丙也有通道,那麼,甲就可以藉助乙,給丙支付。例如,甲把錢交給乙,乙再把錢交給丙,就像接力跑一樣。只需要每一條通道的雙方彼此確認,就可以完成支付,也不需要其他任何人的見證。

當許許多多的「通道」將許多的節點(用戶)連接在一起,這些節點就形成了一個「網路」,使得參與其中的一個節點無需跟其他每一個節點相連接,也(大機率)可以給這些節點支付。

這就是閃電網路的想法:用一對一的通道來實現即時的支付確認;用通道組成的網路來最大化單個節點的支付能力。

這裡,我們暫不討論如何安全地實現「通道」和「轉發支付」,這會是後續章節的內容。我們需要知道的僅僅是,用戶最常接觸的比特幣的保管形式是「單簽名錢包」,也即只需一把私鑰就能花費的資金,顯然是不能用來充當通道的,因為其控制是排他的。

重點是,光憑這段概述,我們就可以發現閃電網路使用體驗中的幾個關鍵元素。在使用閃電錢包之前,必須先理解這幾個元素,才能順利使用。

閃電網路的使用體驗

在線收款

在閃電網路中,當你要收款的時候,你必須在線。從上面的推理來看,這是很容易理解的:收款涉及更改通道中的資金的狀態,而通道是你與他人共享的,所以你必須在線,與對方一同更改資金的狀態。

這既不同於比特幣的使用體驗(只要他人知道你的一個比特幣地址,就隨時可以給你支付,不需要你在線),也不同於絕大部分支付系統(比如銀行、網路電子支付系統)的使用體驗。

不過,在當前的行動端閃電錢包中,這一點已經不會讓用戶產生太多感知:聯網的手機都有通知系統,錢包的服務端可以向你發送通知,要求你打開 App,也即上線,以接收付款。但是,如果太長時間不處理這樣的通知,可能會導致支付退回。

收款額度

類似地,因為收款涉及通道,所以,它的收款能力是有上限的。

我們以上面的那張圖來舉例。現在,算珠都位於 Alice 這邊,因此,Alice 無法再用這條通道來接收支付了——因為 Bob 在這條通道中已經沒有餘額了!但與此同時,Bob 使用這條通道來接收支付的能力,則是 Alice 在這條通道中的所有算珠。

這就是「收款額度(inbound liquidity,入賬流動性)」的概念。這也是一個迥異於比特幣和其它支付系統的概念。在其它支付系統中,接收支付的能力在大多數時候是沒有限制的。

這種特性給閃電網路的用戶帶來了大量的不解和困擾。當你沒有足夠多的收款額度時,要麼你的收款會失敗(他人無法給你支付),要麼,會導致新通道的創建(因此你需要支付在比特幣鏈上確認一筆交易的手續費,這時候的手續費會遠遠高於你平時發起閃電支付的手續費)。

這些問題在剛入門的用戶這裡往往會更加嚴重,這跟閃電網路當前的實現方式有關:在當前的閃電網路中,往往僅由發起通道開設請求的一方向通道注入資金(這被稱為「單向注資」),但這就導致了,在剛剛創建好的通道中,一方(比如用戶)將沒有任何收款額度——在你要接收支付之前,你必須先花掉一些錢。

現在,關於終端用戶的收款額度問題,一種解決方式已經逐漸獲得採用:安排一種服務商(稱為「LSP」),每當用戶要收取支付、收款額度又不足時,就主動與用戶開設新的通道,為用戶提供收款額度(當然,也要收取開啟通道的手續費)。這種辦法同樣也可以解決上述新用戶的收款額度問題:當一名新用戶第一次接收閃電支付時,LSP 與該用戶打開通道,讓該用戶能夠收取支付。唯一的問題是,它將對用戶的第一筆閃電收款的數額提出要求,但無疑已經方便很多。

因此,本文推薦新用戶在上手使用閃電網路錢包時,總是使用閃電錢包(而不是比特幣地址)來接收第一筆支付。這樣會更加便利。

此外,「雙向注資」技術也已經在主要的閃電網路客戶端軟體中實現,有望為進一步解決新用戶的收款額度問題提供幫助。

對於非行動端用戶,比如全時在線節點的營運者來說,有更多的方法可以獲得收款額度,比如:「潛水艇互換」,我們將在後續篇章仲介紹。這些方法在一定程度上也可以為行動端用戶所用,但從便利性來說,都不及 LSP 的上述服務。

但總的來說,「收款額度」會始終伴隨你的閃電網路使用歷程,並且也是閃電網路與其它支付系統最顯著的區別。它造成了許多困惑,這也意味著,如果我們能理解它,就能少去很多困惑。

支付成功率

與「收款額度」相對的是「支付額度(outbound liquidity)」。但是,這個詞並不能體現閃電網路的特殊性,因為我們的每一種支付工具都有餘額(支付能力的上限)。

我們回到上面的轉發支付的例子。我們擴展成四方,並假設他們在彼此的通道中的餘額如下圖所示:

無法給丁支付超過 200 聰的數額,顯然不能歸因於丁的收款額度不夠——在「丙-丁」通道中,丙還有 500 聰。問題在哪兒呢?在於「乙-丙」通道中,乙只有 200 聰。

也就是說,成功的支付,要求在支付所途徑的每一條通道中,轉發支付的一方都有足夠多的餘額(支付額度)。在甲給丁支付的過程中,如果支付數額超過 200 聰,這筆支付將無法通過「乙-丙」通道。

這就是為什麼本文要使用「支付成功率」的概念。這也是為什麼人們常常說閃電網路比較適合小額支付而不適合大額支付——成功的支付不僅要找出一條由通道連成的路徑,將支付者與接收者連起來,還要求組成通道的每一條通道,在傳遞支付的方向上都有足夠多的餘額。

「聰(satoshi)」是比特幣的最小單位。

在後面的章節中,我們會了解如何可以優化支付的成功率。簡單來說,我們需要做的是將一筆支付打散成多個碎片,讓每一部分途徑不同的路徑,從而最大限度利用不同路徑的支付額度。

結語

在本文中,我們了解了閃電網路的基本思想,並從這些基本思想出發,解釋了閃電網路用戶體驗中的一些關鍵元素。這些描述無法涵蓋今時今日行動端自主保管閃電錢包的全部體驗,但勾勒出了其中的一部分。在往後的章節中,我們將越來越多地了解這些體驗,也越來越多地解釋其背後的技術或設計成因,並指出哪些技術進步已經改變了或有望改變這些體驗。

閃電網路是一個網路——對這個事實,再怎麼強調都不過分。這種「網路」特性,既形成了其使用體驗中的一些明顯的特點(也許有人將它們視為一些缺點),也指明了這些體驗的優化空間。

在下一章,我們將介紹閃電通道在比特幣上的構造方法。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠






Empty
Empty