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