作者:Che Kohler,BTCStudy
將比特幣推廣給下一個10 億人並不是一件簡單的事,但隨著成長的痛苦,我們也能學到教訓。在媒介某一些價值轉移,例如你的小額電子支付、打賞以及向結算層的更高層級流式支付時,出於許多理由,鏈上交易是不實用的,其經濟代價和交易確認時間無法滿足要求。
閃電網路這樣的二層解決方案在持續成熟, 而且每天都路由幾百萬筆交易,減少了上鍊確認交易的需要,但這離不開單體節點的孜孜不倦的管理。
閃電網路可以運作,但它要求每個用戶都管理自己的支付系統—— 運行一個節點、建立通道、保證資本量以及不斷再平衡通道。雖然這對於普通的比特幣業餘認識,以及那些希望透過運行路由節點來賺取額外收入的人來說可能很有趣,但普通用戶不會為了路由69 聰而搞懂這些東西。
付出跟回報根本不成正比,這也是為什麼許多閃電網路的用戶都選擇使用託管錢包,或是跟一個閃電網路服務商一起保管自己的閃電資金。
閃電網路使用者體驗的一個痛點是啟動成本;在遷移到二層的過程中,你需要一個全節點來廣播發送到鏈上的交易、建立一條通道,還需要在收款之前先獲得收款額度。這跟比特幣的用戶體驗是很不相同的:從你上手使用比特幣錢包開始,你就隨時可以接收付款,而且可以接收任意大的數額。
為了免去用戶的辛勞,非同步支付和JIT 通道這樣的技術被發明出來。這些方法是為了徹底改變用戶進入閃電網路以及在閃電網路中互動的體驗而提出來的。
什麼是「JIT 通道」?
“按需使用(Just-In-Time,JIT)”,是從投資管理借用來的一個概念,指的是在閃電支付到達時才創建通道。 「JIT 通道」 最初是一條虛擬的支付通道;一旦這個虛擬通道收到一筆支付,通道的一方(閃電網路服務商)就會就廣播一筆鏈上交易,將該通道錨定到鏈上(使之成為一條常規的通道)。
也就是說,「JIT 通道」 是一種在來自公開網路的支付進入時,由LSP 對一個客戶響應式開啟的通道。這使得沒有閃電通道的客戶也能立即開始接收閃電支付,而他們獲得入帳流動性(收款額度)的成本會從這一第一筆支付的支付額中扣除。
這種技術與傳統的方法大相逕庭。在傳統的模式中,使用者必須自行提前開設通道,並且是自己要準備好開啟通道的資金。
注意:JIT 通道不應該跟「JIT 路由」 混淆,後者是一種用於再平衡現有的通道、以接受原本可能會被拒絕的支付的技術。
JIT 通道的工作流程是什麼樣的?
-
一個客戶希望透過閃電網路來接收資金,但他沒有任何收款額度。
-
這個客戶要求一個閃電網路服務商(LSP)來獲得開啟一條JIT 通道的參數。
-
這個LSP 回傳一個SCID(短通道識別碼),是這個通道請求的唯一識別碼。
-
這個客戶產生一個閃電網路發票,包含這個SCID 和LSP 的節點ID。
-
客戶將這個發票發給希望給他付款的人。
-
支付在閃電網路中轉發給這個LSP。
-
LSP 辨識其中的SCID 並跟著客戶開啟一條「零確認通道」。
-
LSP 轉發相應的付款給客戶,並扣除開啟通道所需花費的手續費。
-
客戶領取支付。
換句話說,JIT 通道的工作流程允許一個客戶在即使沒有任何收款額度時,也能透過閃電網路接收付款。服務該客戶的LSP 開啟一條零確認通道,來路由支付,同時扣減開啟通道的手續費。在頻道開啟之後,客戶端就能領取付款。
JIT 工作流程中的關鍵字:
-
閃電網路服務商(LSP):一個LSP 就是閃電網路中一個節點,而且它可以向其它節點提供幫助,例如開啟JIT 通道。
-
短通道識別碼(SCID):一個JIT 通道請求的唯一識別碼。
-
閃電發票(Invoice):一個閃電網路的支付請求,包含了需要支付的數量、收款方的節點ID 以及其它資訊。
-
零確認通道(0-confirmation channel):一種還沒有得到比特幣區塊鏈完全確認的閃電通道。這意味著通道中的資金還不是完全安全的,但仍然很有可能是安全的。
為什麼閃電網路需要JIT 通道?
JIT 通道對閃電網路來說是關鍵的,理由如下:
-
簡化入門流程:開啟通道(鎖定資金)對新用戶來說可能是複雜的體驗。而JIT 通道去掉了這種複雜性,簡化了入門流程。
-
高效率的流動性管理:因為只有在需要的時候才建立通道,JIT 可以實現更好的流動性管理。用戶支付額度不夠時才鎖入資金,也可以優化用戶的資源利用。
-
推動採用:透過簡化使用者的體驗,JIT 可能會促進閃電網路的採用。
JIT 通道的風險
不幸的是,因為鏈上交易和閃電支付的結算速度有差別,JIT 通道有一個內在的假設,就是鉚定這條通道的UTXO 最終會在鏈上確認,但路由到客戶端閃電支付是即時結算的。
雖然JIT 通道減少了對通道建構和處理速度較慢的區塊鏈層的依賴,但它也引入了自己的信任假設。 LSP 承擔了轉送支付的風險,需要信任客戶;客戶也需要信任LSP。
LSP 將需要決定自己願意承擔多少風險,並相應評估客戶;如果客戶能夠提供 LSAT、節點ID 或可以承擔名譽損失的 Nostr 公鑰,那可能會有所幫助。
那麼,沒有使用經驗的用戶可能會在JIT 通道的支付規模上受到限制。使用限制較廣泛的LSP 可能會受到攻擊,但也可以將損失視為一種獲客成本(實際上,只會損失一些鏈上手續費,以及在不會得到支付的通道中鎖定資本的機會成本),並且希望將來可以從可信任的客戶上獲得回報來覆蓋損失。
回到不信任並且驗證
如果客戶和LSP 都不信任彼此,那他們就會陷入死鎖。不願意信任客戶的LSP 會扣住頻道注資交易而不廣播,直到自己看到支付原像;而不信任LSP 的客戶會扣住支付原像,直到看到注資交易;這就跟JIT 通道的目的違背了。 JIT 通道需要雙方的信任,以協助及時的流動性部署。
打破這種死鎖而不引入信任的唯一辦法就是使用區塊鏈來確認是寫合約,以保證注資交易當且僅當原像提供給LSP 時就會廣播。
這可以透過使用一個HTLC 來做到:其哈希鎖分支由LSP 和客戶一起簽名,並且LSP 提供從哈希鎖分支花費到通道注資輸出點的的見證,而客戶提供自己的簽名以及原像,以讓通道注資輸出點得到確認。
(譯者註:這種合約並不是標準的哈希時間鎖合約,但原理上相似。哈希鎖分支要求雙方的簽名,而不是只有一方的簽名;並且哈希鎖是用進入支付的同一個原像構造的。LSP 給客戶提供將資金花費到通道注資點的簽名,客戶一旦加上自己的簽名和原像,就能讓通道得到區塊的確認。當然,通道內的承諾交易,雙方要提前構造。)
但總的來說,從結算的角度來看,這跟標準的支付通道創建並沒有什麼不同。
讓流動性可以隨時獲得
雖然有這些潛在的缺點,顯然JIT 通道有很大希望,讓閃電網路變得更用戶友好,而且更有效率。就像我們這個領域的所有開發,一定有需要考慮的取捨;推出之後,市場會確定這些取捨是否值得、這種方法能否繼續進步,以及還有什麼取捨需要解決。
不管怎麼說,在引導入門和流動性管理上的好處,讓JIT 通道成了閃電網路演化的巨大進步。