【幣圈不定期更新的日?!苛囊涣淖罱蠡鸬拈W電網(wǎng)絡(luò)

簡(jiǎn)介

最近,閃電網(wǎng)絡(luò)的火炬?zhèn)鬟f活動(dòng),讓閃電網(wǎng)絡(luò)一下子從理論階段,躍升成實(shí)踐。作者年前在同事的分享中,學(xué)習(xí)了閃電網(wǎng)絡(luò)的原理,感覺(jué)設(shè)計(jì)確實(shí)很巧妙,一旦大規(guī)模應(yīng)用,能讓btc實(shí)現(xiàn)秒級(jí)支付,真正讓btc的世界貨幣夢(mèng)想come true。本文,會(huì)介紹閃電網(wǎng)絡(luò)的設(shè)計(jì)原理,主要涉及多重簽名地址、 RSMC、HTLC幾大概念。

基本原理

假如Bob和Alice經(jīng)常有業(yè)務(wù)來(lái)往,結(jié)算方式是btc。但是,btc的區(qū)塊打包時(shí)間要10min,一般需要確認(rèn)6塊后,認(rèn)為交易不可回滾。也就是他們每次交易需要等至少1h,才能確認(rèn)交易是否成功。對(duì)于實(shí)時(shí)性要求很高、交易頻率很高的場(chǎng)景,顯然1h太長(zhǎng)了。這時(shí),就有人提出,能不能單獨(dú)為Bob和Alice建立一個(gè)通道,他們之間的頻繁交易先記賬不上鏈,等想結(jié)束業(yè)務(wù)時(shí)再結(jié)算上鏈?閃電網(wǎng)絡(luò)就是在這個(gè)大背景下橫空出世的。

閃電網(wǎng)絡(luò)的架構(gòu)圖,大致如下:

閃電網(wǎng)絡(luò)的架構(gòu)圖

就拿Bob和Alice之間的交易步驟來(lái)說(shuō):

1. 首先,需要構(gòu)建Bob和Alice之間的雙向交易通道

2. 其次,需要解決Bob和Alice在通道中交易面臨的信任問(wèn)題

3. 若再來(lái)個(gè)第三方,比如Jack,如何實(shí)現(xiàn)三人之間的交易

接下來(lái),我會(huì)根據(jù)構(gòu)建步驟,來(lái)詳細(xì)述說(shuō)閃電網(wǎng)絡(luò)的架構(gòu)和原理。

構(gòu)建雙向交易通道

構(gòu)建雙向通道,通俗點(diǎn)講,就是Bob和Alice各出一些btc,比如5btc,將其存入他們兩人控制的2-2多重簽名地址。但是,Alice和Bob是不相互信任的。Bob怕自己轉(zhuǎn)btc之后,Alice不轉(zhuǎn)btc也不提供私鑰幫助Bob解鎖幣,使得資金陷入死循環(huán)。那么,我們需要在不相互信任的前提下,構(gòu)建雙向交易通道。其構(gòu)建方法如下:

構(gòu)建雙向交易通道

1. Alice使用公鑰A1,Bob使用公鑰B1,生成兩個(gè)2-2多重簽名地址:A1B1、B1A1

2. Alice構(gòu)造一筆交易,轉(zhuǎn)賬給B1A1地址5btc,這筆交易沒(méi)簽名也沒(méi)廣播

3. Alice再構(gòu)造一筆交易1,發(fā)起地址是B1A1,目的地址是比特幣地址A1。這筆交易如果被廣播,需要經(jīng)過(guò)1000個(gè)塊才能被打包

4. Alice將交易1單獨(dú)發(fā)給Bob,請(qǐng)Bob對(duì)交易簽名。Bob發(fā)現(xiàn)這筆交易只是Alice將自己的幣轉(zhuǎn)回給自己,對(duì)Bob沒(méi)影響,Bob會(huì)簽名并將交易1發(fā)回給Alice

5. Alice收到Bob簽名后的交易1,對(duì)用B1公鑰簽名的交易使用A1簽名測(cè)試,測(cè)試成功

6. Alice此時(shí),可以放心將第2步的交易廣播,即便Bob不合作,Alice也能拿回自己的幣。這一步完成后,B1A1地址收到Alice充值的5btc

7. Bob也用相同的操作,往B1A1地址充值5btc,且保留有A1簽名的交易2,隨時(shí)可以贖回自己的幣

8. 雖然B1A1地址收到了各自的錢,但是Bob和Alice手上還有交易1和交易2,隨時(shí)會(huì)有毀約的風(fēng)險(xiǎn)。因此,最后一步需要Bob和Ailce共同發(fā)起一筆交易,將B1A1地址里的10btc,轉(zhuǎn)移至A1B1地址里,至此完成了閃電網(wǎng)絡(luò)雙向通道的構(gòu)建

點(diǎn)對(duì)點(diǎn)交易

接上一步,Bob和Alice建立了雙向交易通道,接下來(lái)就可以交易了。但是,Bob和Ailce依舊要面臨信任的問(wèn)題。接下來(lái)介紹的RSMC技術(shù),就是為了解決點(diǎn)對(duì)點(diǎn)交易時(shí)的信任問(wèn)題。

RSMC

RSMC(Recoverable Sequence Maturity Contract),定義了閃電網(wǎng)絡(luò)交易時(shí)的基本工作方式。它提供了一種無(wú)須信任的方法,能夠準(zhǔn)確的記錄通道內(nèi)Bob和Alice的資產(chǎn)分配情況。例如,初始時(shí)Bob和Alice各有5btc;經(jīng)過(guò)一次交易,通道內(nèi)資產(chǎn)分配變更為Alice: 3btc、Bob: 7btc;再經(jīng)過(guò)一次交易,通道內(nèi)資產(chǎn)分配變更為Alice: 4btc、Bob: 6btc。RSMC技術(shù)能夠做到以下兩點(diǎn):

1. Alice和Bob之間交易時(shí),能在雙方互相不信任、交易不廣播的情況下準(zhǔn)確記錄資產(chǎn)分配

2. Alice和Bob每進(jìn)行一次新交易,舊交易能被廢除,以最新交易為準(zhǔn)來(lái)進(jìn)行資產(chǎn)分配

下面,我會(huì)詳細(xì)介紹RSMC實(shí)現(xiàn)的技術(shù)細(xì)節(jié)。

沿用上面的結(jié)果,多簽地址A1B1擁有10個(gè)btc,Bob和Alice各占一半資產(chǎn),作為交易的啟動(dòng)資金池。在后面的交易過(guò)程中,會(huì)使用很多btc地址,其中,Alice擁有A1、A2、A3...,Bob擁有B1、B2、B3...同時(shí),也會(huì)使用很多多重簽名地址,比如B2A1、A1B2...

下面,將詳細(xì)介紹Bob與Alice的交易步驟,第一次交易資產(chǎn)分配變更為Alice: 3btc、Bob: 7btc:

點(diǎn)對(duì)點(diǎn)交易細(xì)節(jié)

1. Alice構(gòu)造交易1,發(fā)起地址是A1B1,目的地址有兩個(gè):A1B2地址得到7btc,A1地址得到3btc

2. Alice構(gòu)造交易2,發(fā)起地址是A1B2,目的地址是B1得到7btc。但是,這筆交易廣播出去,需要1000個(gè)塊之后才能被打包

3. Alice使用A1私鑰對(duì)交易1和交易2簽名,并不廣播,私下發(fā)給Bob

4. Bob收到交易1和交易2,用自己的私鑰B1、B2校驗(yàn)交易的有效性

5. Bob同樣像Alice一樣,構(gòu)造交易3,發(fā)起地址是A1B1,目的地址有兩個(gè):B1A2地址得到3btc,B1地址得到7btc

6. Bob構(gòu)造交易4,發(fā)起地址是B1A2,目的地址是A1得到3btc。但是,這筆交易廣播出去,需要1000個(gè)塊之后才能被打包

7. Bob使用B1私鑰對(duì)交易3和交易4簽名,并不廣播,私下發(fā)給Alice

8. Alice收到交易3和交易4,用自己的私鑰A1、A2校驗(yàn)交易的有效性

下面,來(lái)解釋下,為什么Alice和Bob構(gòu)造這四筆交易之后,就能使得在相互不信任的情況下,依舊能順利的進(jìn)行交易。

首選,Alice構(gòu)建了交易1、2,交易1使得Alice立馬就能獲得3btc;交易2即便簽名,Bob也需要等待1000個(gè)塊打包后,才能拿到屬于自己的7btc。在這期間,Bob如果有任何違約行為,Alice也有足夠時(shí)間采取措施。因此,Alice構(gòu)造的兩筆交易明顯偏向自己,但是需要Bob的簽名,交易生效的權(quán)力在Bob。Bob同時(shí)也構(gòu)造兩筆這樣偏向自己的交易,控制權(quán)同樣在Ailce手上。第一次交易,就在這種互相制約的情況下,完成了資產(chǎn)的重新分配。

假如Alice和Bob繼續(xù)進(jìn)行交易往來(lái),資產(chǎn)分配情況又變成了Alice: 4btc、Bob: 6btc。同樣,他們會(huì)依照上面的步驟,再構(gòu)造四筆交易。關(guān)鍵一點(diǎn),為了廢除舊交易,Alice和Bob需要交換A2、B2地址的私鑰。接下來(lái),我們來(lái)看看這么做的好處。

廢除舊交易,啟用新交易

假如,Bob覺(jué)得之前能得到7btc,現(xiàn)在只剩下6btc了,他想違約廣播舊的交易。那么,這種機(jī)制下違約會(huì)有什么后果呢?Bob將損失全部的btc!?。∈紫龋珺ob只能廣播交易1,Alice瞬間得到3btc;接下來(lái),Bob廣播交易2,等待1000塊后才能得到7btc。但由于Alice擁有A1和B2的私鑰,她馬上可以動(dòng)用A1B2地址里的7btc,在交易2生效之前,立即轉(zhuǎn)賬給自己。這種騷操作使得Alice將獲得全部的10個(gè)btc,Bob將分文不剩。因此,在這種巧妙的設(shè)計(jì)下,閃電網(wǎng)絡(luò)能做到在不相互信任、交易不上鏈的情況下,依然可以順利的完成快速交易。

Alice和Bob如果想結(jié)束閃電通道怎么辦?和平的情況下,各自為對(duì)方簽名最新交易,廣播出去立即得到幣。當(dāng)一方想強(qiáng)制結(jié)束通道時(shí),只需要簽名有利于對(duì)方的兩筆交易,對(duì)方立即得到幣,而強(qiáng)制結(jié)束的一方需要等待1000個(gè)塊后,才能獲得自己的幣,這也就是強(qiáng)制結(jié)束的懲罰。

閃電網(wǎng)絡(luò)交易

上面說(shuō)的都是Alice和Bob之間的點(diǎn)對(duì)點(diǎn)交易細(xì)節(jié),倘若Jack也想加入他們的交易,那Jack和他們也需要建立通道嗎?如果人人都建立點(diǎn)對(duì)點(diǎn)通道,成本是非常高昂的。閃電網(wǎng)絡(luò)會(huì)通過(guò)整個(gè)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),尋找最短路徑,通過(guò)路由節(jié)點(diǎn)完成交易。比如Jack只和Bob建立了點(diǎn)對(duì)點(diǎn)通道,而希望和Ailce進(jìn)行交易,那么就需要Bob充當(dāng)路由節(jié)點(diǎn)輔助交易的進(jìn)行,而實(shí)現(xiàn)這個(gè)功能的技術(shù)就是HTLC。

閃電網(wǎng)絡(luò)交易通道

HTLC

HTLC(Hashed Timelock Contract)允許Alice和Bob之間達(dá)成協(xié)議,協(xié)議將鎖定Alice1btc,在時(shí)刻T到來(lái)之前,如果Bob能向Alice提供一個(gè)答案A,使得A的哈希等于實(shí)現(xiàn)約定的值H(A),Bob就能獲得這1btc;如果超時(shí)后,Bob未能提供答案,則這筆錢自動(dòng)歸還給Alice。

我們舉個(gè)例子來(lái)看HTLC如何用于閃電網(wǎng)絡(luò)的交易的。首先,Jack希望轉(zhuǎn)賬1btc給Alice,然而和Alice并沒(méi)有建立通道,需要通過(guò)Bob路由。可行的操作:Jack轉(zhuǎn)賬1btc給Bob,Bob再轉(zhuǎn)1btc給Alice。但是,如何防止Bob收到錢作惡呢?除去點(diǎn)對(duì)點(diǎn)轉(zhuǎn)賬交易時(shí)候,依賴RSMC技術(shù)的約束,我們還需要通過(guò)HTLC技術(shù)對(duì)三方的行為進(jìn)行約束,具體步驟如下:

閃電網(wǎng)絡(luò)交易

1. Alice生成答案A,將Hash(A)發(fā)給Jack

2. Bob和Jack約定交易1,在T1時(shí)間之前,提供給Jack答案A,Jack會(huì)轉(zhuǎn)賬1btc給Bob

3. Bob和Alice約定交易2,在T2時(shí)間之前,提供給Bob答案A,Bob會(huì)轉(zhuǎn)賬1btc給Alice

4. 執(zhí)行交易2,Bob支付Alice1btc,得到答案A

5. 執(zhí)行交易1,Bob提供答案A給Jack,得到1btc

至此,Bob作為中間人,幫助Jack和Ailce完成轉(zhuǎn)賬。注意,T1時(shí)間要大于T2時(shí)間,這樣Bob在拿到答案A后,才有充裕時(shí)間從Jack那里拿回幣。

后記

本文介紹了閃電網(wǎng)絡(luò)的基本原理,及其相關(guān)的核心技術(shù),讀完本文,應(yīng)該能對(duì)閃電網(wǎng)絡(luò)的架構(gòu)有大體的了解。由于,閃電網(wǎng)絡(luò)是基于比特幣隔離驗(yàn)證技術(shù)的實(shí)現(xiàn),后面將會(huì)為大家介紹隔離驗(yàn)證的原理,以及隔離驗(yàn)證解決的實(shí)際問(wèn)題,盡請(qǐng)期待。

參考文獻(xiàn)

白皮書(shū):https://lightning.network/lightning-network-paper.pdf

解釋多重簽名:https://blog.csdn.net/lianquan_cn/article/details/81634897

詳細(xì)解釋rsmc:https://blog.csdn.net/lianquan_cn/article/details/81736392

大體解釋閃電網(wǎng)絡(luò)框架:https://www.jinse.com/bitcoin/317833.html

大體解釋htlc和rsmc:https://www.8btc.com/article/92887

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TPS 網(wǎng)絡(luò)擁堵、轉(zhuǎn)賬時(shí)間長(zhǎng)、交易緩慢、交易費(fèi)用高等一直是比特幣被詬病的問(wèn)題??陀^看待,比特幣TPS低有利有弊。以...
    不如假如閱讀 2,010評(píng)論 1 2
  • 2008年比特幣誕生以來(lái)熱度漸增,每個(gè)區(qū)塊1MB大小,每秒可處理的交易7筆,是無(wú)法滿足激增的需求,社區(qū)也是一直積極...
    數(shù)字門徒閱讀 1,131評(píng)論 0 1
  • 背景和目的: 「互聯(lián)網(wǎng)運(yùn)營(yíng)P1系列課程」是三節(jié)課運(yùn)營(yíng)系列課程的第一級(jí)課程,也是三節(jié)課賣相很好、銷量頂尖的課程,其目...
    Jason__lin閱讀 1,286評(píng)論 0 1
  • 數(shù)組存儲(chǔ)數(shù)字,實(shí)現(xiàn)加1 。思路:當(dāng)前位是 9 嗎? 不是⑨直接加1返回,是9 的話,就將該位置O,進(jìn)入下一次循環(huán),...
    BeijingIamback閱讀 346評(píng)論 0 0
  • 久聞崇州市元通古鎮(zhèn)是一個(gè)成都周邊商業(yè)化氣息相對(duì)來(lái)說(shuō)不是那么濃郁的古鎮(zhèn) ,并且鎮(zhèn)上還住有很多原住居民和保持原樣的老建...
    晚晴_fe62閱讀 1,521評(píng)論 0 0

友情鏈接更多精彩內(nèi)容