根據(jù)mempool的數(shù)據(jù),當(dāng)前BTC閃電網(wǎng)絡(luò)中安置了3億多美元的資金,Node數(shù)量約為1.2萬個(gè),彼此之間構(gòu)建了近5萬條支付通道。
如果有一方退出通道,就把當(dāng)前的余額Alice:70/Bob:130同步到鏈上,把多簽賬戶中的200塊錢按各自余額轉(zhuǎn)給二人,完成結(jié)算。上述流程看起來簡(jiǎn)單,但在實(shí)操中要考慮很多復(fù)雜情況。
首先,你其實(shí)并不知道對(duì)方想在何時(shí)退出通道,拿上面的例子來說,Bob可以在第二筆轉(zhuǎn)賬完成后就退出,亦或是第一筆轉(zhuǎn)賬后就退出,而支付通道不會(huì)對(duì)此強(qiáng)制要求,是允許參與方自由退出的。要實(shí)現(xiàn)這一點(diǎn),要假設(shè)隨時(shí)會(huì)有人退出,任意一方都可能向鏈上提交最終余額,進(jìn)行結(jié)算。
所以有一個(gè)“承諾交易”的設(shè)定,“承諾交易”用于聲明通道內(nèi)雙方的最新余額,每筆轉(zhuǎn)賬發(fā)生時(shí)都會(huì)生成對(duì)應(yīng)的“承諾交易”。你如果要退出通道,可以向鏈上提交最新的一筆“承諾交易”,把自己應(yīng)得的錢從多簽賬戶中抽出來。
這筆承諾交易由Bob構(gòu)造,然后發(fā)給Alice讓對(duì)方自行處理。如圖所示,這就是一筆Bitcoin轉(zhuǎn)賬,聲明把多簽賬戶中70塊錢給Alice,130塊錢給Bob,但錢的解鎖條件“不對(duì)稱”,Alice面對(duì)的限制更苛刻,對(duì)Bob更有利。
Alice收到Bob構(gòu)造的承諾交易后,可以附上自己的簽名滿足2/2多簽,之后Alice可以主動(dòng)把“承諾交易”提交上鏈,這樣就可以退出通道,如果她不這么做就可以繼續(xù)在通道中轉(zhuǎn)賬。
這里我們要注意:這筆承諾交易是Bob主動(dòng)構(gòu)造的,其中條件對(duì)Alice不利,Alice只能接受/拒絕,我們要想辦法留給Alice一些自主權(quán)。在支付通道的設(shè)計(jì)中,只有Alice自己能把“對(duì)自己不利”的承諾交易放到鏈上觸發(fā),這是因?yàn)槌兄Z交易要湊足2/2多簽,Bob在本地構(gòu)造交易后只有自己的簽名,沒有Alice簽名。
而Alice可以“只接收Bob的簽名,但不把自己的簽名發(fā)給他”,這就好比一份對(duì)你不利的合同,需要你和別人雙簽,對(duì)方先簽名后把文件給你,你可以不讓對(duì)方拿到簽名。你想讓合同生效就簽名然后公示,不想生效就不簽名或不公示。顯然在上面的案例中,Alice有辦法限制Bob。
每筆承諾交易都要2/2多簽才能生效,Bob本地構(gòu)造的、對(duì)自己有利的承諾交易不滿足2/2多簽,而滿足2/2多簽的承諾交易扣在Alice手上,Bob沒法提交,只能由Alice提交,這就形成了制衡。反過來也是類似的道理。
如此一來,Alice和Bob只能主動(dòng)提交對(duì)自己不利的承諾交易,只要雙方中有一人把CommitTx提交上鏈且生效,通道就被關(guān)閉。而回到最開始說的“雙重支付”場(chǎng)景,如果有人把過期的承諾交易提交上鏈,會(huì)發(fā)生什么呢?
這里要提到一個(gè)叫“撤銷密鑰”的東西。假如Bob把過期的承諾交易提交上鏈,Alice可以通過撤銷密鑰把Bob應(yīng)得的錢提走。
我們看下面這張圖,假設(shè)最新的承諾交易是CommitTx3,CommitTx2過期,如果Bob把過期的Tx2提交到鏈上,Alice可以通過Tx2的撤銷密鑰把Bob的錢抽走(Alice要趕在時(shí)間鎖范圍內(nèi)行動(dòng))。
除非真的有人作惡,否則WatchTower不會(huì)看到通道參與者的交易記錄(即便看到了也只能看到其中一筆)。
這里我們要提一下Fiber相比于Bitcoin閃電網(wǎng)絡(luò)的優(yōu)化。上述與撤銷密鑰相關(guān)的懲罰機(jī)制被稱為“LN-Penalty”,而Bitcoin閃電網(wǎng)絡(luò)的LN-Penalty有明顯缺點(diǎn):WatchTower要保存所有的過期承諾交易Hash和對(duì)應(yīng)的撤銷密鑰,這會(huì)造成不小的存儲(chǔ)壓力。
早在2018年,Bitcoin社區(qū)就提出了一種叫“eltoo”的方案來解決上述問題,但需要Bitcoin分叉支持SIGHASH_ANYPREVOUT操作碼。思路是當(dāng)過期的承諾交易上鏈后,最新的承諾交易能對(duì)其進(jìn)行懲罰,這樣用戶只保存最新的承諾交易即可。但是SIGHASH_ANYPREVOUT操作碼至今還未激活,該方案遲遲不能落地。
而Fiber實(shí)現(xiàn)了Daric協(xié)議,修改了撤銷密鑰的設(shè)計(jì),讓同一個(gè)撤銷密鑰適用于多筆過期的承諾交易。這樣可以大幅減少WatchTower以及用戶客戶端的存儲(chǔ)壓力。網(wǎng)絡(luò)中的交通系統(tǒng):多跳路由和HTLC/PTLC
前面講的支付通道僅適用于1對(duì)1交易的場(chǎng)景,而閃電網(wǎng)絡(luò)支持多跳支付,即通過中間Node來路由,讓未直接建立通道的兩方間能夠轉(zhuǎn)賬,比如說Alice和Ken沒有通道,但Ken和Bob間有通道,Bob和Alice間有通道,Bob就可以作為Alice和Ken之間的中間Node,讓Alice和Ken之間可以發(fā)生轉(zhuǎn)賬互動(dòng)。而“多跳路由”就是指通過多個(gè)中間人搭建轉(zhuǎn)賬路徑。
“多跳路由”能夠增強(qiáng)網(wǎng)絡(luò)的靈活性和覆蓋范圍。不過,發(fā)送方需要了解所有的公共Node和通道的狀態(tài)。在Fiber中,所有公開通道即網(wǎng)絡(luò)結(jié)構(gòu)是完全公開的,任何一個(gè)Node都可以獲知其它Node掌握的網(wǎng)絡(luò)信息。由于閃電網(wǎng)絡(luò)中整個(gè)網(wǎng)絡(luò)的狀態(tài)是不斷變化的,F(xiàn)iber會(huì)使用Dijkstra最短路徑算法找到最短路由路徑,讓中間人數(shù)量盡可能的少,然后在兩方之間架設(shè)轉(zhuǎn)賬路徑。
Carol如法炮制,在和Daniel的通道中創(chuàng)建HTLC:Carol愿意支付100塊,但Daniel要在20分鐘內(nèi)告訴她R的明文,否則錢會(huì)被Carol收回。
Daniel明白,Carol索要的密鑰R其實(shí)是Alice想要的,因?yàn)槌薃lice沒人會(huì)在意R的內(nèi)容是啥。所以Daniel會(huì)配合Carol,告訴她R的內(nèi)容,并從Carol那拿到100塊,這樣子Alice就實(shí)現(xiàn)了目標(biāo):給Carol100塊錢。
之后的事情不難想象:Carol把密鑰R告訴Bob,拿到101塊錢;Bob再把密鑰R告訴Alice,拿到102塊錢。我們觀測(cè)所有人的得失,可以看出Alice失去102塊錢,Bob和Carol凈賺1塊錢,Daniel得到100塊。這里面Bob和Carol賺的1塊錢就是它們從Alice那抽的手續(xù)費(fèi)。
因此Daniel和Bob能猜到,Alice和Eve之間存在支付路徑,因?yàn)樗鼈兛偸呛拖嗤拿荑扯上關(guān)系,借此推斷出Alice和Eve之間的關(guān)系并施加監(jiān)視。
對(duì)此,F(xiàn)iber采用了PTLC,在HTLC基礎(chǔ)上進(jìn)行了隱私改良,支付路徑中每道PTLC都用不同的密鑰來解鎖,單純觀測(cè)PTLC索要的密鑰無法判斷出彼此的關(guān)聯(lián)性。通過將PTLC與洋蔥路由結(jié)合,可以讓Fiber成為隱私支付的理想方案。
此外,傳統(tǒng)的閃電網(wǎng)絡(luò)存在“替代交易循環(huán)攻擊”(replacementcyclingattack)場(chǎng)景,可以讓支付路徑中間人的資產(chǎn)被盜。這一發(fā)現(xiàn)甚至讓開發(fā)者AntoineRiard退出了閃電網(wǎng)絡(luò)的開發(fā)工作。到目前為止Bitcoin閃電網(wǎng)絡(luò)尚未有根本措施解決這個(gè)問題,已然成為一個(gè)痛點(diǎn)。
目前,CKB官方通過在交易池層面進(jìn)行改良,可以讓Fiber解決上述攻擊場(chǎng)景。由于替代交易循環(huán)攻擊及解決方案比較燒腦,本文不打算繼續(xù)占用篇幅做出解釋,感興趣的可以閱讀BTCStudy的下述文章以及閱讀CKB官方的相關(guān)資料。
總體而言,無論是在隱私還是在安全層面,F(xiàn)iber都比傳統(tǒng)的閃電網(wǎng)絡(luò)進(jìn)行了大幅改良。Fiber與Bitcoin閃電網(wǎng)絡(luò)間的跨域原子支付
利用HTLC和PTLC,F(xiàn)iber可以和Bitcoin閃電網(wǎng)絡(luò)實(shí)現(xiàn)跨域支付,且能夠保證“跨域行為的原子性”,即跨域相關(guān)的全部步驟要么全成功,要么全失敗,不會(huì)有部分成功部分失敗的情況。
跨域原子性有了保障后,可以保證跨域本身不會(huì)導(dǎo)致財(cái)產(chǎn)損失,這樣可以讓Fiber與Bitcoin閃電網(wǎng)絡(luò)可以互聯(lián)起來,比如可以在Fiber和閃電網(wǎng)絡(luò)組成的混合網(wǎng)絡(luò)中搭建支付路徑,直接在Fiber中向BTC閃電網(wǎng)絡(luò)中的用戶轉(zhuǎn)賬(接收端僅限BTC),還可以在Fiber中用CKB和RGB++資產(chǎn)在BTC閃電網(wǎng)絡(luò)中換取等價(jià)Bitcoin。
我們簡(jiǎn)單說下原理:假設(shè)Alice在Fiber網(wǎng)絡(luò)內(nèi)運(yùn)行了Node,而Bob在Bitcoin閃電網(wǎng)絡(luò)中運(yùn)行Node,Alice想向Bob轉(zhuǎn)賬一些錢,它可以通過跨域中轉(zhuǎn)商Ingrid實(shí)現(xiàn)這筆轉(zhuǎn)賬。具體而言,Ingrid會(huì)分別在Fiber和BTC閃電網(wǎng)絡(luò)內(nèi)運(yùn)行Node,充當(dāng)轉(zhuǎn)賬路徑中的中間人。
如果是在復(fù)雜的多跳網(wǎng)絡(luò)中,某些中間Node余額不足無法向外轉(zhuǎn)賬,可能導(dǎo)致整個(gè)支付路徑失敗。這是閃電網(wǎng)絡(luò)的痛點(diǎn)之一,對(duì)此的解決方案無外乎提供高效的流動(dòng)性注入方案,確保大多數(shù)Node都能隨時(shí)注入資金。
但是,在BTC閃電網(wǎng)絡(luò)中,注入流動(dòng)性、打開或關(guān)閉通道的步驟都在BTC鏈上進(jìn)行,若BTC網(wǎng)絡(luò)手續(xù)費(fèi)極高,會(huì)對(duì)支付通道的UX產(chǎn)生不良影響。假設(shè)你想開啟一個(gè)容量為100美元的通道,但建立通道的操作花掉10美元手續(xù)費(fèi),那這個(gè)通道在初始化時(shí)就磨了你10%的資金,這是讓大多數(shù)人無法接受的;對(duì)于流動(dòng)性注入等工作也是同理。
對(duì)此Fiber擁有非常顯著的優(yōu)勢(shì)。首先CKB的TPS遠(yuǎn)比BTC高得多,手續(xù)費(fèi)可以達(dá)到美分級(jí)別;其次,為了應(yīng)對(duì)流動(dòng)性不足導(dǎo)致無法轉(zhuǎn)賬的問題,F(xiàn)iber計(jì)劃與Mercurylayer合作推出新的解決方案,使得流動(dòng)性注入的工作可以擺脫鏈上操作,解決UX和成本問題。
至此,我們系統(tǒng)的梳理了Fiber的總體技術(shù)架構(gòu),其和Bitcoin閃電網(wǎng)絡(luò)的大致對(duì)比總結(jié)如上圖所示。由于Fiber和閃電網(wǎng)絡(luò)本身涉及的知識(shí)點(diǎn)太多太雜,單純一篇文章可能無法覆蓋到方方面面,未來我們將針對(duì)閃電網(wǎng)絡(luò)和Fiber的話題推出系列文章,大家敬請(qǐng)期待。
免責(zé)聲明:系統(tǒng)解讀Fiber:把閃電網(wǎng)絡(luò)嫁接到CKB上的宏大實(shí)驗(yàn)文章轉(zhuǎn)發(fā)自互聯(lián)網(wǎng),版權(quán)歸其所有。
文章內(nèi)容不代表本站立場(chǎng)和任何投資暗示。加密貨幣市場(chǎng)極其波動(dòng),風(fēng)險(xiǎn)很高,可能不適合所有投資者。在投資加密貨幣之前,請(qǐng)確保自己充分了解市場(chǎng)和投資的風(fēng)險(xiǎn),并考慮自己的財(cái)務(wù)狀況和風(fēng)險(xiǎn)承受能力。此外,請(qǐng)遵循您所在國(guó)家的法律法規(guī),以及遵守交易所和錢包提供商的規(guī)定。對(duì)于任何因使用加密貨幣所造成的投資損失或其他損失,本站不承擔(dān)任何責(zé)任。
Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM