在比特幣最近的技術(shù)進步中,閃電網(wǎng)絡是最雄心勃勃的項目。一旦剩下的障礙被清除,它承諾提供更快的交易,更低的費用,更寬敞的街區(qū)和更滿意的錢包。
盡管閃電網(wǎng)絡的優(yōu)勢是熱門話題,但人們對它的障礙卻知之甚少。再平衡問題是閃電網(wǎng)絡每個節(jié)點都必須克服的挑戰(zhàn)之一。我們將在一系列文章中闡明這個問題。
在我們開始之前,快速回顧一下閃電網(wǎng)絡的基礎知識。
支付渠道
你可能聽說過支付渠道。它們是閃電網(wǎng)絡的第一個構(gòu)件。簡單地說,支付通道是雙方之間的管道,我們稱他們?yōu)锳lice和Bob,這允許他們來回發(fā)送金錢,而不需要向區(qū)塊鏈廣播交易。這些移動被稱為脫機交易,并且可能是免費的,并且是即時的。
在閃電網(wǎng)絡中,支付渠道也被設置為不可信的。Alice和Bob不需要成為朋友就能做到這一點。
首先,Alice和Bob必須打開一個支付通道。他們簽署并傳播一個交易。這個初始承諾的總和稱為共享通道的余額,Alice和Bob各自擁有屬于自己的部分。
Alice和Bob打開支付通道,分別存入2個BTC和3個BTC。
一旦打開,Alice和Bob就可以更新通道,在它們之間重新分配余額,次數(shù)不限。每次更新都需要簽署一個交易,并且必須經(jīng)過同意,但是不需要將其廣播到網(wǎng)絡。沒有確認時間,沒有開礦費。
Alice給Bob發(fā)送了一個BTC。
Alice和Bob可以通過該通道進行任意數(shù)量的支付,但是每次支付中處理的金額受發(fā)送方余額的限制。在給定時刻,Alice給Bob的錢不能超過她自己那部分余額。
Bob給Alice發(fā)送了3個BTC。她現(xiàn)在可以發(fā)送最多4個BTC給Bob, Bob可以支付最多1個BTC。
最后,Alice和Bob可能決定通過廣播第二個交易來關(guān)閉頻道。渠道中的資金被解鎖并分配給Alice和Bob,與他們在關(guān)閉時各自擁有的余額成比例。
Alice和Bob關(guān)閉了他們的頻道。Alice擁有4個比特幣,Bob擁有1個比特幣。
當通道被多次更新時,它們是有意義的。開通和關(guān)閉通道都需要進行鏈上交易,因此需要支付費用并等待確認時間。此外,盡管該渠道是開放的,但它們的資金是鎖定的,這意味著它們不能將資金用于其它地方。如果Alice和Bob使用一個通道進行單次非鏈交易,他們就是在浪費金錢和時間。
HTLC
Alice可能也想和Eve 和 Dave進行交易。為了做到這一點,她可以和他們每個人都開一個頻道,然后決定她將為每個頻道投入多少錢。
Alice打開三個通道,每個通道提交2個BTC,總共鎖定6個BTC。最初,她可以為每個頻道支付最多2個BTC。
投入渠道的資金只能用于該渠道的支付。盡管Alice擁有這些比特幣,但她無法用她承諾給Eve頻道的錢付給Bob。Eve為了支付,她首先需要關(guān)閉現(xiàn)有的渠道。
Alice把錢分在太多的頻道,問題是她不能給任何人一大筆錢。遲早,她將不得不關(guān)閉現(xiàn)有的頻道,用新的頻道取而代之。這將花費她的金錢和時間。
這個問題的解決方案是一種特殊的交易輸出,稱為HTLC。它們是閃電網(wǎng)絡的第二個組成部分。
HTLC帶來了通過幾個連鎖渠道匯款的可能性。這意味著可能沒有必要讓成對的用戶在他們之間創(chuàng)建一個直接的通道來支付。
如果Bob、Eve和Dave連接到另一個用戶Carol, Alice可以與Carol打開一個單獨的通道,并將她所有的資金投入其中。她不會與任何她想要打交道的人直接聯(lián)系,但這不會成為障礙。
Alice與Carol打開一個通道,并在那里提交6個BTC。最初,她最多可以支付6個比特幣。
Carol是一個路由節(jié)點,將在與她連接的用戶之間路由支付。讓我們放大Carol, Alice和Bob,看看他們頻道的狀態(tài)。
Alice和Carol分別用6BTC和2 BTC共享一個通道。Carol和Bob還分別用2BTC和4 BTC共享一個通道。
Alice和Bob之間的一次支付涉及到沿途所有通道的更新。首先,Alice把錢寄給Carol更新他們的頻道。然后Carol把錢寄給Bob更新他們的通道。
Alice向Carol發(fā)送一個BTC,更新通道A-C的狀態(tài)。
Carol向Bob發(fā)送一個BTC,更新通道C-B的狀態(tài)。
HTLC的操作是原子性的、不可信的。雖然支付分為兩部分(首先Alice支付Carol,然后Carol支付Bob),但是操作要么完全執(zhí)行,要么根本不執(zhí)行。
再平衡
鏈接通道出現(xiàn)了一個很容易被忽略的問題。為了使整個工作正常進行,路由節(jié)點必須預先為其通道提供資金。Carol只有在她和Bob的通道中有足夠多的余額時才能進行付款。
有時,路由節(jié)點將沒有足夠的資金來路由支付。這是因為每當節(jié)點路由支付時,其與接收方的余額減少,而與發(fā)送方的余額增加。雖然她的總金額保持不變,但她的錢分配得更不均勻。
Alice想寄2個BTC給Bob,但是這次Carol無法匯款。她只有一個BTC在她的頻道與Bob。
為了保持支付的正常運行,Carol需要在平衡她的頻道。在平衡是一個節(jié)點采取的戰(zhàn)略行動,以增加其在支付通道中的余額為代價,減少其在另一個通道中的余額,從而保持路由支付。
拼接
Carol可以選擇使用鏈上交易將她的錢從一個渠道轉(zhuǎn)移到另一個渠道。要做到這一點,她必須首先關(guān)閉與愛麗絲的頻道,并重新開放,留出一些資金。這個操作稱為外拼接,可以在單個鏈上交易中完成。
Carol關(guān)閉了她與Alice的頻道,并打開一個新的頻道。她現(xiàn)在用一個BTC解鎖。
以類似的方式,Carol將廣播另一個交易并進行拼接。這次行動包括關(guān)閉她與Bob的頻道,并用額外的資金重新開通。
Carol關(guān)閉了與Bob的通道并打開了一個新的通道,提交了額外的BTC.
總結(jié)
在平衡渠道需要資金。雖然拼接比單獨關(guān)閉和打開頻道要方便得多,但它們?nèi)匀簧婕皬V播交易和支付鏈上費用。
因此,路由支付至少涉及兩項成本:開通和關(guān)閉渠道的運營成本,以及鎖定資金的財務成本。
評論
查看更多