閃電網(wǎng)絡(luò)中的潛交換HTLC是如何工作的
潛交換(Submarine Swaps)已經(jīng)討論了幾周,在產(chǎn)品和服務(wù)中已經(jīng)有一些有趣的實(shí)現(xiàn)。
要理解潛交換,我們首先需要討論HTLC: 哈希時(shí)間鎖定合約。它們比看上去的更容易理解。而且,好的一面是,理解HTLC不僅是理解潛交換的關(guān)鍵,而且是理解閃電網(wǎng)絡(luò)本身。
HTLC作為構(gòu)建塊
假設(shè)你是一個(gè)自豪的比特幣擁有者,你把它發(fā)送到一個(gè)屬于你朋友馬丁的地址。為了使用比特幣,馬丁需要證明他擁有該地址的對(duì)應(yīng)私鑰。這就是比特幣在基本層面的運(yùn)作方式: 馬丁證明他有鑰匙,他就可以花錢。
我說的“基本水平”是因?yàn)槟憧梢詾轳R丁增加更多的條件來使用比特幣。您可以添加一個(gè)條件,即馬丁必須在給定的時(shí)間內(nèi)公開某個(gè)秘密。當(dāng)時(shí)間到了,比特幣可以被另一組密鑰使用,比如你自己的一些密鑰。
這個(gè)秘密從何而來?秘密是馬丁或其他人在網(wǎng)絡(luò)上創(chuàng)造的一條信息。如果馬丁自己創(chuàng)造了這個(gè)秘密,他當(dāng)然會(huì)在付款的那一刻就知道了。如果是別人創(chuàng)造的,馬丁需要找出其中的秘密。
無(wú)論如何,只要馬丁知道了這個(gè)秘密,他就會(huì)把比特幣花掉,這意味著把錢寄到他自己的另一個(gè)地址就可以防止超時(shí)被激活,這是有道理的。因?yàn)殡S后我們將要求索賠。
簡(jiǎn)而言之,這就是HTLC:它是一種合同,要求交易中的接收者在一定的時(shí)間內(nèi)證明他們知道某個(gè)特定的秘密,以便使用這筆錢。
事實(shí)證明,添加這個(gè)條件可以實(shí)現(xiàn)一個(gè)非常有趣和有用的特性:鏈接支付的能力。這最初可能與鏈上交易無(wú)關(guān),在鏈上交易中,您可以在任何時(shí)候直接向最終收件人付款,但是在閃電網(wǎng)絡(luò)中非常有用,因?yàn)樵陂W電網(wǎng)絡(luò)中,能夠直接向每個(gè)人付款的效率非常低。
因?yàn)樵诼酚删W(wǎng)絡(luò)(如閃電網(wǎng)絡(luò))的上下文中更容易理解HTLC的用途,所以我們將首先看到一個(gè)離線支付的例子。但是,請(qǐng)記住,HTLC同時(shí)適用于鏈上和鏈外交易。它們甚至可以在其他區(qū)塊鏈上工作,比如萊特幣。
閃電網(wǎng)絡(luò)中的HTLC
假設(shè)您想向Sandra支付1個(gè)BTC,但是您沒有與她共享一個(gè)支付通道。相反,Thomas和你們兩個(gè)都有渠道,會(huì)把錢轉(zhuǎn)過去。在這個(gè)支付鏈中會(huì)出現(xiàn)什么問題呢?
沒有HTLC,根據(jù)誰(shuí)先付款,可能會(huì)出現(xiàn)兩種情況:
如果你先付錢給Thomas,相信他會(huì)再付錢給Sandra,Thomas可能會(huì)搶走你的資金。
如果Thomas先付錢給Sandra,你就可以讓Thomas為你支付費(fèi)用。
使用HTLC, Sandra可以創(chuàng)建一個(gè)只有她知道的秘密,并告訴你將比特幣安全發(fā)送給Thomas,并添加一個(gè)條款,為了使用比特幣,Thomas需要在一段時(shí)間內(nèi)知道這個(gè)秘密。如果他不這么做,你就可以把比特幣花掉。Sandra會(huì)在二維碼中給你這個(gè)指示,并附上她給你看的快速發(fā)票。她可以在不泄露秘密的情況下做到這一點(diǎn),因?yàn)橛幸粋€(gè)有趣的特性:即使事先不知道秘密,你也會(huì)知道Thomas在泄露她創(chuàng)造的秘密。
現(xiàn)在Thomas可以給Sandra寄一個(gè)比特幣了,而且還包含了同樣的條款:要花掉它,她需要在一段時(shí)間內(nèi)知道秘密。Sandra已經(jīng)知道了這個(gè)秘密,她可以馬上要錢。Sandra透露了這個(gè)秘密,Thomas知道了,Thomas可以認(rèn)領(lǐng)你發(fā)給他的比特幣。
結(jié)果是你通過Thomas成功地支付給Sandra,沒有互相信任,就沒有人拿他們的錢冒險(xiǎn)?,F(xiàn)在你和Thomas都知道了Sandra創(chuàng)造的秘密,你們都可以用它作為付款的證明,因?yàn)镾andra是為了索要她的錢才泄露的。請(qǐng)注意,如果Sandra拒絕或不能透露這個(gè)秘密,暫停對(duì)于“回滾”付款是很重要的。
在潛交換中的HTLC
HTLC可以包括在鏈上和鏈外交易中。事實(shí)上,它們可以用于將發(fā)生在鏈上發(fā)送方和鏈外接收方之間的支付鏈接起來,反之亦然。這就是潛交換。
假設(shè)您想在閃電網(wǎng)絡(luò)中付費(fèi),但不想自己手動(dòng)管理通道。潛艇掉期允許你使用鏈上的比特幣通過掉期提供商支付閃電發(fā)票。這是怎么做到的呢?
閃電商家會(huì)生成一個(gè)二維碼,提示你應(yīng)該讓交易提供商透露你的秘密,以便獲得你將向他們發(fā)送的款項(xiàng)。您現(xiàn)在可以安全地將您的比特幣發(fā)送給交換提供商,創(chuàng)建一個(gè)鏈上HTLC。
交換提供商不能使用您剛剛發(fā)送給他的比特幣,因?yàn)樗€不知道這個(gè)秘密。相反,他會(huì)通過閃電將比特幣轉(zhuǎn)移到閃電商人那里,并加上一條條款,要求閃電商人必須披露資金的秘密。
閃電提供商已經(jīng)知道了這個(gè)秘密,但要想得到這筆錢,他必須把它揭露出來。在這個(gè)過程中,交換提供商會(huì)了解到這一點(diǎn),并要求您支付給他們的錢。交換提供商和商家都聲稱收到了錢,但有一個(gè)區(qū)別:當(dāng)交換提供商聲稱收到了鏈上的錢時(shí),商家會(huì)聲稱收到了鏈外的錢。
潛交換有什么用?
潛交換可能是人們通過閃電進(jìn)行首次付款的最簡(jiǎn)單方式。雖然您仍然需要支付鏈上的費(fèi)用,但是支付流類似于一個(gè)鏈上的支付流,并且支付可以是即時(shí)的(取決于實(shí)現(xiàn))。此外,如果您只是想嘗試閃電網(wǎng)絡(luò),那么打開通道本身也需要進(jìn)行鏈上交易。因?yàn)槲覀兲幵陂W電的早期,所以有一個(gè)方便人們嘗試的入口坡道是很重要的。這就是我們?cè)贛uun Wallet中實(shí)現(xiàn)潛艇交易的原因。
潛交換在用戶需要將部分資金從鏈上轉(zhuǎn)移到鏈外的情況下也很有用,反之亦然。例如,在通過閃電成功銷售一周后,商家可能需要獲得鏈上的比特幣來支付提供商。Loop Out提供了一種進(jìn)行反潛交換的方法,同時(shí)重新平衡通道以獲得入站容量。
最后,考慮到潛交換也可以用其他代幣進(jìn)行,你可以使用萊特幣(Litecoin),它的費(fèi)用更低,確認(rèn)時(shí)間更短,可以快速支付給商家,或者為你的渠道提供更多流動(dòng)性。
潛交換最初是閃電實(shí)驗(yàn)室的Alex Bosworth和Olaoluwa Osuntokun提出的一個(gè)想法,隨著時(shí)間的推移越來越受歡迎。雖然它也有缺點(diǎn),但它有一些有趣的應(yīng)用程序,可以幫助網(wǎng)絡(luò)在早期具有更大的流動(dòng)性和采用率。