經過多年的概念開發,比特幣的閃電網絡現已處於測試階段。www.emoneybtc.com因此,每天都有越來越多的節點出現在閃電網絡上,越來越多的用戶正互相開放閃電網絡通道,有些商家甚至開始接受閃電支付。
當然,現在仍處於閃電網絡的早期階段。雖然其主要實現、錢包及其他相關應用程序都可用,但其覆蓋支付網絡預計將在未來幾年內從網絡架構、安全性和可用性等方面進行改進。
以下是目前正處於開發階段的一些主要的閃電網絡相關項目。
雙出資通道(Dual-Funded Channels)閃電網絡由一系列的支付通道組成。支付通道存在於兩兩用戶之間,允許資金在他們之間被來回發送。
但是在現在這樣的早期發展階段,支付通道只能由雙方中的一方提供資金。出資方必須先向另一方發起交易(打開通道);只有這樣另一方才能在同一支付通道(已打開的通道)中返回款項。
閃電網絡白皮書提出了“雙出資通道”(Dual-Funded Channels),Eclair母公司ACINQ現也提出了相關規范提案。顧名思義,雙出資通道可以讓用戶雙方各自發送比特幣到閃電網絡通道上抵押、合資開通通道。這將使得閃電網絡的應用變得更加靈活,用戶隨後可以在已開啟的通道上實現即時支付。
潛交換(Submarine Swaps)
為了實現閃電支付,用戶必須預先將資金存入閃電網絡通道中。一旦資金存入通道,這些資金就不能被發送到常規(鏈上)比特幣地址上(除非該頻道一開始就被關閉了)。這意味著閃電網絡通道中的比特幣與普通錢包中的比特幣是不同的,就像支票賬戶中的資金與儲蓄賬戶中的資金也是不同的。
現在有一些解決方案使得用戶可以在閃電網絡與鏈上間無縫切換交易。
一種解決方案是“潛交換”(Submarine Swaps)。這是由Alex Bosworth開發的(由Lightning Labs首席技術官Olaoluwa Osuntokun所構思的),潛交換允許用戶向閃電網絡中的中間商發送通道中的比特幣;而該中間商會將相應數量的比特幣發送到常規(鏈上)比特幣地址上。反過來也可以:用戶可以定期在鏈上支付給中間商比特幣;然後該中間人將相應數量的比特幣發送到閃電網絡上的接收節點上。
重要的是,這在潛交換中是“自動完成的”。使用已經嵌入在閃電網絡中的方法,閃電支付和鏈上支付可以被有效地相互關聯起來。這使得中間商無法通過不付款來竊取資金。(而通過與用戶達成協議,反而可以收取少量服務費。)
拼接(Splicing)
另一種更無縫的閃電網絡交易解決方案稱為“拼接”(Splicing)。實質上,拼接可以讓用戶在現有的閃電通道中“充值”資金,或者從通道中“取出”資金,同時保持通道暢通。
這個想法很簡單。任何閃電通道都始於開放交易,這就確保了用戶雙方都同意在通道中轉移資金。閃電網絡通道其余部分由用戶間的一系列後續交易組成,這些交易通常不會被傳播到比特幣主網上。在通道關閉之前,通道中的交易資金是不會被轉移的。
當使用“拼接”(splicing in)時,用戶可以采用開放交易(opening transaction),代替將資金發到新的包含更多比特幣的替換開放交易上。一旦該新交易在區塊鏈被上確認,通道就會被充滿。在確認新的開放交易之前,用戶雙方都可以同時更新舊通道和新通道,以避免出現“通道故障”。
而當使用“剪切”(splicing out)時,用戶可以使用開放交易將資金發送到常規(鏈上)地址上,並可以使用相同的方法將其中的一部分保留在通道中。通過這種方式,用戶可以在閃電網絡通道上進行鏈上交易。
Eltoo每次進行新的付款時,用戶之間的閃電通道都會更新以反映它們的總余額。目前用來實現這一目標的方法包括懲罰試圖廣播舊余額的用戶(可能是因為舊的余額會使他們擁有更多的錢)。欺詐用戶可能會失去他們通道中所有的資金。
問題在於廣播舊余額並不總是因為人們想嘗試作弊。很多情況下(例如,由於軟件錯誤或備份出錯),用戶可能會意外地廣播舊的余額。在這種情況下,通道資金的徹底丟失對他們來說是一項相當重的懲罰。
eltoo是在2018年4月30日首次發布的,由Blockstream的c-lightning開發團隊Christian Decker和Rusty Russell以及Lightning Labs的Osuntokun共同開發,eltoo通過構建時間鎖定交易鏈( a chain of time-locked transactions)來更新通道,每筆交易花費都會更新前一筆交易的資金以反映最新的通道余額。
如果用戶廣播了較舊的交易(代表較舊的通道余額),則她的交易對手就有一些時間來廣播最新的交易(代表最新的通道余額)。
像這樣的解決方案目前可能奏效,但在故障的情況下則是不實際的。這需要將整個交易鏈廣播並記錄在比特幣區塊鏈中,或多或少地地使閃電網絡的目的變得不明確。因此,Decker提出了對比特幣協議進行軟分叉,以在這些類型的交易中引入一種層次結構:任何較新的交易都可以覆蓋任何較舊的交易,而不要求廣播整條鏈中的所有交易。
如果這個軟叉在比特幣網絡上被采用激活,閃電網絡用戶就可以根據他們的喜好創建閃電通道。(像現在這樣或者使用eltoo,取決於他們喜歡用什麼)
緊湊型客戶端區塊過濾(Compact Client-Side Block Filtering)
雖然閃電網絡是第二層協議,但在安全性上,比特幣區塊鏈本身也與閃電網絡相關。具體來說,閃電網絡用戶必須密切關注區塊鏈,看看特定交易是否被打包。這可能是要消耗大量資源的,特別是對於手機用戶。
有一種解決方案稱作簡化支付驗證(SPV),這在比特幣白皮書中有所描述。當前的SPV錢包使用稱為“Bloom過濾器”(bloom filters)的方法來確定是否有相關交易產生。
不幸的是,bloom過濾器在隱私保護上有所欠缺,因為錢包本質上把用戶所有的地址都展示給了比特幣網絡上的節點。它也有一些擴容問題和可用性問題,因為每個單獨的SPV錢包都會占用至少一個比特幣全節點的資源。
為了解決這些問題,Lightning Labs的Osuntokun和Alex Akselrod以及Coinbase開發者Jim Posen設計出一種名為“緊湊型客戶端區塊過濾”(Compact Client-Side Block Filtering)的新解決方案,他們正在Neutrino錢包中應用該解決方案。
緊湊型客戶端區塊過濾技術基本上顛覆了當前SPV錢包使用的方法。通過創建Bloom過濾器並將其發送到眾多全節點,接著全節點為所有的Neutrino錢包創建過濾器,從而替代通過錢包請求相關交易。然後Neutrino錢包使用這個過濾器來確定相關交易沒有發生。這確實是所有用戶需要知道的,以確保他們沒有被騙。 (如果過濾器產生匹配,Neutrino會提取相關的區塊,以查看匹配是否確實涉及確切的交易而不是誤報)
有趣的是,雖然這個方法的靈感來自閃電網絡,但它也可以用於普通的輕錢包。
瞭望塔(Watchtowers)
為避免被欺騙,閃電網絡用戶必須跟蹤可能與其相關的潛在鏈上交易。
雖然緊湊型客戶端區塊過濾會讓這件事變得更簡單,但用戶確實需要偶爾“檢查”一下,以確保他們沒有被騙。如果他們忘記檢查,則會產生安全風險。
“瞭望塔”(Watchtowers)是一種可能的解決方案,這可以追溯到閃電網絡的白皮書,它由閃電網絡白皮書合著者和lit開發者Tadge Dryja等人開發。顧名思義,瞭望塔技術可以讓用戶將監控區塊鏈這一任務外包給第三方。
目前的瞭望塔技術在設計上並非一成不變,但大致是這樣工作的。無論用戶何時更新通道,都會發送一個小數據包到瞭望塔。這個數據包的第一部分是用戶應注意的交易“提示”(hint),這個提示本身並沒有透露任何交易內容;用戶也因此不會洩露隱私。
但是,如果相關交易出現在比特幣區塊鏈中,瞭望塔可以使用該提示來識別它。然後通過區塊鏈本身的交易數據,瞭望塔可以使用他們收到的數據包的第二部分重新構建交易懲罰。該交易懲罰會將通道中的所有資金發送給被騙的用戶(或以eltoo為例,它只廣播正確的通道余額)。交易懲罰也可以設計為讓瞭望塔宣布將部分資金作為激勵其工作的獎勵。
用戶可以將通道監控的任務外包給多個瞭望塔。這樣即使一個瞭望塔出故障了,另一個也沒事,從而將閃電網絡的使用風險限制在可以忽略不計的程度。
原子多路徑支付(Atomic Multi-Path Payments)
使閃電網絡成為一個網絡的原因是用戶之間的支付通道是相互關聯的。用戶可以通過閃電網絡中的中間商進行跨通道支付。
但是,現在單次支付的路由也只能是單向的。如果一個用戶想要支付5mbtc給另一個用戶,那麼他不僅必須在單通道上有5mBTC,而且該路由上的所有中間商還必須在通道中准備好5mBTC才能轉發。支付額越大,出現這種情況的可能性就越小。
原子多路徑支付(Atomic Multi-Path Payments))可以很好地解決這一問題。這一技術最初由Lightning Labs的Osuntokun和Conner Fromknecht提出,想法也很簡單:大額付款可以被“分割”成小部分,這些小部分再通過不同的中間商從付款人轉移到收款人手裡。
這一解決方案面臨的挑戰是,閃電支付可能會失敗,在這種情況下意味著只完成了部分支付。然而,部分支付很容易引起一個比不支付更大的問題:商家對部分支付不滿意,而客戶也不樂意花錢購買任何東西。
解決這個問題的方法是原子多路徑支付,它使用了哈希時間鎖定合約(hash time-locked contracts)進行擴展,這些合約已經被閃電網絡路由所使用,且通過網絡傳輸加密數據。使用的是類似於HD錢包(deterministic wallets)所使用的方法(從單一種子生成多個比特幣地址),部分支付只能由收款人進行兌換,但如果某些加密數據不通過整個路由,那麼就會支付失敗。
原子交換(Atomic Swaps)
閃電網絡被設計為比特幣的擴容層。但是由於許多競爭幣是比特幣的分叉,因此為這些競爭幣創建類似的擴容層並不困難。小型的萊特幣閃電網絡已經出現了,未來可能還會出現更多的閃電網絡。
有趣的是,在未來這些閃電網絡之間並沒有被隔離。
使用被稱為“原子交換”(Atomic Swaps)的閃電網絡基本構件(首先由Tier Nolan提出,由Lightning Labs的Fromknecht在閃電網絡上實現),閃電網絡的支付通道就可以跨區塊鏈而相連。換句話說,用戶可以用比特幣進行跨幣種支付,只要網絡上有一個節點願意進行交換,交換後另一個用戶就可以收到等值的萊特幣。
當然,這也意味著用戶可以自己進行這樣的交換:他們可以給節點發出比特幣而收到萊特幣。實際上,閃電網絡可以建立一個無需信任的加密貨幣交換網絡。
通道工廠(Channel Factories)
閃電網絡的主要好處是,它可以大大增加比特幣交易的容量上限,而不會增加對比特幣網絡的負擔。只要用戶雙方在他們的通道中都存有資金,他們就可以相互進行無數次轉賬,而只需要進行兩次鏈上交易:一次是打開支付通道,一次是關閉支付通道。
盡管如此,如果隨著時間推移比特幣和閃電網絡被廣泛采用,這樣的鏈上交易次數無疑也會增多。
蘇黎世聯邦理工學院的研究人員Christian Block(同時也是Blockstream的員工)和Roger Wattenhofer、Conrad Burchert提出的“通道工廠”(Channel Factories)也許能進一步降低每個支付通道所需的鏈上交易平均次數。
根據Decker和Wattenhofer在2015年提出的類閃電網絡協議,通道工廠是一種可以供多用戶使用的支付通道,同時,像其它支付通道一樣,通道工廠也需要進行兩次鏈上交易。 (如果Schnorr簽名是在比特幣上實現的,那麼會涉及到很多用戶,這些交易結構就可能會變得相當緊湊。)
反過來,通道工廠可以充當閃電網絡的“子通道”。通道工廠內的使用者們可以互相打開和關閉幾乎無限量的閃電通道,而無需進行額外的鏈上交易。通過這樣做,理論上他們可以將閃電網絡所需的鏈上交易數量降低一個數量級。