淺談閃電網(wǎng)絡(luò)

TPS

網(wǎng)絡(luò)擁堵钻心、轉(zhuǎn)賬時間長、交易緩慢苇瓣、交易費(fèi)用高等一直是比特幣被詬病的問題〕ス裕客觀看待击罪,比特幣TPS低有利有弊。以太坊Vitalik提出了當(dāng)前區(qū)塊鏈技術(shù)面臨的不可能三角:去中心化(Decentralization)贪薪、安全性(safety)和可擴(kuò)展性(Scalability)媳禁。可擴(kuò)展性主要也是指TPS画切。
比特幣現(xiàn)在每秒處理7筆交易竣稽,以太坊每秒25筆交易,通過優(yōu)化可能會提高到50或100霍弹,visa每秒的交易處理能力是2000筆丧枪,EOS號稱優(yōu)化后TPS可達(dá)百萬,2017天貓雙11創(chuàng)下了32.5萬筆/秒交易創(chuàng)建的紀(jì)錄庞萍,在這個數(shù)字后面拧烦,更是每秒多達(dá)幾千萬次的數(shù)據(jù)庫寫入(數(shù)據(jù)來源于公眾號:阿里巴巴數(shù)據(jù)庫技術(shù))。
所有的區(qū)塊鏈都會遇到不可能三角問題钝计。針對于區(qū)塊鏈的擴(kuò)展性恋博,有多種解決方案,比如:側(cè)鏈私恬、閃電網(wǎng)絡(luò)(雷電網(wǎng)絡(luò))债沮、分片、DAG等本鸣。
上周參加了一個分享會疫衩,研究了一下閃電網(wǎng)絡(luò),這篇文章主要寫一下自己的理解荣德。因?yàn)殚W電網(wǎng)絡(luò)原論文晦(ying)澀(wen)難(bu)懂(hao)闷煤,如果有發(fā)現(xiàn)理解的不對的地方童芹,請指正。
<<The Bitcoin Lightning Network:Scalable Off-Chain Instant Payments>>

閃電網(wǎng)絡(luò)-總體思想

  1. 閃電網(wǎng)絡(luò)本質(zhì)是針對擴(kuò)展性的一種鏈下(off-chain)解決方案鲤拿。
  2. 假如Alice和Bob經(jīng)常發(fā)生比特幣轉(zhuǎn)賬假褪,Alice和Bob可以約定兩個人都轉(zhuǎn)50個比特幣到一個 2-2多重簽名,這個簽名地址的幣只有Alice和Bob同時簽名才可以使用近顷。
  3. 在發(fā)生轉(zhuǎn)賬之前生音,Alice和Bob維護(hù)一個這些幣的歸屬副本,既:現(xiàn)在 2-2簽名中有100個btc窒升,其中50個歸屬于Alice缀遍,50個歸屬于Bob。
  4. 這時就可以認(rèn)為Alice和Bob打開了一個雙向支付通道饱须,以后Alice和Bob之間的轉(zhuǎn)賬都可以視為歸屬副本的更新域醇。
  5. Alice向Bob轉(zhuǎn)了1個BTC,則兩個人更新歸屬副本為:Alice-49BTC, Bob-51BTC冤寿,并且將原來的副本廢棄歹苦。
  6. <font color='red'>副本并不廣播到鏈上青伤,所以是off-chain方案督怜。</font>
  7. 當(dāng)Alice和Bob決定不再有合作關(guān)系時,兩個人可以將最新的副本廣播到鏈上狠角,按照歸屬副本的內(nèi)容号杠,將2-2簽名中的幣分別轉(zhuǎn)給Alice和Bob,視為關(guān)閉通道丰歌。
  8. Alice想向Cavol轉(zhuǎn)10個BTC姨蟋,但是Alice和Cavol之間還沒有建立通道。Bob既和Alice有雙向支付通道立帖,又和Cavol有雙向支付通道眼溶,Alice可以支付給Bob 10BTC,然后由Bob代轉(zhuǎn)給Cavol晓勇,Bob做為中間人堂飞,可以收取少量手續(xù)費(fèi)。
  9. 所有用戶之間的通道連接關(guān)系組成網(wǎng)絡(luò)绑咱,既為閃電網(wǎng)絡(luò)绰筛。

具體實(shí)現(xiàn)

閃電網(wǎng)絡(luò)的第一步是Alice和Bob之間需要打開通道,打開通道的本質(zhì)是Alice和Bob約定轉(zhuǎn)一定數(shù)量的比特幣(>=0)到一個2-2簽名地址描融,但是這里存在兩個問題:

  1. 如何確保兩個人都會轉(zhuǎn)幣铝噩?既不存在Alice已經(jīng)轉(zhuǎn)了,Bob故意作惡不轉(zhuǎn)窿克,導(dǎo)致Alice轉(zhuǎn)的幣取不出來的情況骏庸?
  2. 如何保證Alice和Bob轉(zhuǎn)了以后毛甲,可以不相互依賴對方的情況下,能夠保證把幣取回來敞恋?因?yàn)榇嬖谶@樣的情況丽啡,可能Alice轉(zhuǎn)了10BTC,而Bob轉(zhuǎn)了1BTC硬猫,理論上如果Bob作惡的話补箍,Bob可以敲詐Alice。

通道建立

閃電網(wǎng)絡(luò)提出了RSMC(序列到期可撤銷合約)啸蜜,具體過程:

  1. 比特幣的交易結(jié)構(gòu)是UTXO坑雅,Alice和Bob首先交換各自準(zhǔn)備轉(zhuǎn)到2-2簽名中的UTXO輸入,既各拿出5BTC衬横,用于構(gòu)建Funding Tx裹粤,輸出為Alice和Bob的2/2多重簽名,這個簽名的輸出此后只能同時具有Alice和Bob的簽名才能花掉蜂林。而且遥诉,最重要的是,<font color='red'>此時Alice和Bob均不對Funding Tx進(jìn)行簽名噪叙,也不廣播到鏈上矮锈,因?yàn)闆]有簽名,即使廣播到鏈上也會被立刻拒絕睁蕾。</font> 這一步主要是為了解決第一個問題苞笨,保證不會出現(xiàn)有一個人轉(zhuǎn)幣了而另一個人沒有轉(zhuǎn)幣。
  2. 為了解決第二個問題子眶,雙方需要構(gòu)建Commitment Tx瀑凝。Alice基于未廣播的2-2簽名構(gòu)造兩個合約C1a和RD1a,C1a的內(nèi)容為:直接轉(zhuǎn)給Alice5個BTC臭杰,剩下5個BTC轉(zhuǎn)到新合約RD1a粤咪,RD1a的內(nèi)容為,1000個確認(rèn)以后Bob才可以花掉RD1a里面的5個BTC渴杆。然后Alice把C1a和RD1a都轉(zhuǎn)交給Bob寥枝。同樣,Bob也基于未廣播的2-2簽名将塑,構(gòu)造兩個合約C1b和RD1b脉顿,其中C1b的內(nèi)容為直接轉(zhuǎn)給Bob 5個BTC,剩下5個BTC轉(zhuǎn)到新合約RD1b点寥,RD1b的內(nèi)容為艾疟,1000個確認(rèn)以后Alice才可以花掉RD1b里面的5個BTC。然后Bob把C1b和RD1b都轉(zhuǎn)交給Alice。
  3. 到這一步蔽莱,由于并未對Funding Tx進(jìn)行簽名弟疆,任何一方均無法作惡,任何一方也不會有任何損失盗冷。
  4. 雙方均完成對Commitment Tx的簽名并交換后怠苔,就可以對第一步中的Funding Tx進(jìn)行簽名,并交換仪糖。此時柑司,F(xiàn)unding Tx是完整的交易,就可以廣播到鏈上锅劝。
  5. 上述過程就是創(chuàng)建RSMC的全部過程攒驰,此時Alice和Bob之間的通道就已經(jīng)打開。
  6. 這里面有幾個關(guān)鍵點(diǎn):
    • Commitment Tx基于Funding Tx故爵,但是Funding Tx并未廣播到鏈上玻粪,如何信任Commitment Tx?這里依賴了隔離見證的一些知識诬垂,SIGHASH_NOINPUT指令可以解決這個問題劲室。
    • 為什么Commitment Tx創(chuàng)建以后,F(xiàn)unding Tx就可以簽名畫押了呢结窘?首先很洋,Alice簽名的C1a和RD1a,轉(zhuǎn)交給了Bob晦鞋,Bob只要對這兩個合約簽名廣播蹲缠,就可以保證1000個確認(rèn)以后棺克,收回之前投入的5BTC悠垛。同理,Bob簽名的C1b和RD1b也都轉(zhuǎn)交給了Alice娜谊,Alice對這兩個簽名廣播以后确买,等1000個確認(rèn)也可以拿回自己的5BTC。
    • 大家應(yīng)該發(fā)現(xiàn)這里有一個非常妙的地方纱皆,Alice和Bob都把半簽的合約交給對方湾趾,都等待對方做最后的簽名和廣播,但是誰簽名和廣播派草,誰就會延遲獲得自己的幣搀缠。最后的結(jié)果就是,誰都不愿意先去廣播近迁,就會導(dǎo)致兩方的通道可以長時間保持艺普。
    • C1a,C1b, RD1a, RD1b這四個合約記錄了Alice和Bob雙向支付通道中幣的歸屬副本。

更新狀態(tài)

現(xiàn)在Alice和Bob的通道已經(jīng)建立歧譬,Alice向Bob轉(zhuǎn)1BTC岸浑,怎么操作?

  1. Alice向Bob轉(zhuǎn)1BTC瑰步,Alice變?yōu)?BTC,Bob變?yōu)?BTC,需要創(chuàng)建新的Commitment Tx,與上面的過程類似矢洲,半簽以后交換,生成C2a, RD2a, C2b, RD2b缩焦。
  2. 此時兩個狀態(tài)均是有效的读虏,那么最核心的問題來了,如何才能徹底廢棄掉C1a和C1b呢袁滥?因?yàn)榫蚱珹lice很有可能把Bob之前給他的C1b簽名以后廣播到鏈上,導(dǎo)致Bob承受1BTC的損失呻拌。RSMC采用了一個非常巧妙的方法葱轩,雙方在每一次簽名Commitment Tx時都使用不同的秘鑰對,Bob在接受Alice第二個半簽C2a時藐握,需要Alice將C1a中使用的私鑰交給Bob靴拱,表示愛麗絲放棄C1a,承認(rèn)C2a猾普。C1b也是同樣對待袜炕。
  3. 假設(shè),Alice已經(jīng)簽名了C2a初家,但是Alice故意把C1b廣播到區(qū)塊鏈上偎窘,Bob會馬上拿到自己的5BTC,Alice會等1000個確認(rèn)以后才能拿到剩下的5BTC。這個時間內(nèi)溜在,如果Bob監(jiān)控到Alice作假陌知,可以拿著Alice簽過名的C1a和以及Alice交換過來的私鑰,直接從區(qū)塊鏈上取走剩下的5個BTC掖肋。既:不誠實(shí)的人會失去所有的幣仆葡。

網(wǎng)絡(luò)

假設(shè)A想給C轉(zhuǎn)1個BTC,但是A和C之間沒有雙向轉(zhuǎn)支付通道志笼,但是B和A沿盅、C都有通道,那么A可以直接在鏈上給C轉(zhuǎn)1個BTC纫溃,也可以和C建議通道以后再轉(zhuǎn)腰涧,也可以拜托B幫忙轉(zhuǎn)1BTC。A通過雙向支付通道 經(jīng)由B給C轉(zhuǎn)1BTC的過程紊浩,就是閃電網(wǎng)絡(luò)的應(yīng)用窖铡。在不可信的情況下揍很,轉(zhuǎn)賬過程如何操作?哈希時間鎖定合約(HTLC)万伤!

  1. 為了完成這次交易窒悔,A會先給C發(fā)一個隨機(jī)數(shù)字R,接著C會對R進(jìn)行簽名敌买,生成一個哈希H简珠,并返回給A。
  2. 然后A就找到B虹钮,如果B能夠給出生成簽名H的key聋庵,那么A就同意更新渠道的支付分配,為B轉(zhuǎn)1個BTC芙粱。實(shí)際上祭玉,A和B會先更新Commitment Tx,A生成三個交易春畔,C1a,RD1a和HTLC(a)脱货,C1a和RD1a的內(nèi)容同上面的RSMC,HTLC(a)的內(nèi)容為律姨,如果B找到可簽名H的key振峻,B可以直接拿走HTLC中的1BTC,否則HTLC(a)中的1BTC在一定的鎖定期之后择份,A可以重新花掉扣孟。
  3. 之后B會拿著H去找C,用1個BTC來換簽名key荣赶,同時更新B和C的支付分配凤价。更新過程同A和B之間一樣,基于HTLC拔创。因?yàn)楹灻膋ey就是從C這里生成的利诺,所以他肯定知道,而且理論上也只有他才知道伏蚊。接著C將簽名用的key告訴B立轧,并更新了其渠道的支付分配格粪。
  4. 同理躏吊,B使用key從A那里也拿到了1BTC,A以脫鏈的形式付給C一個BTC帐萎。
  5. 這里有兩個需要注意的問題比伏,A和B之間以及B和C之間的支付分配都會重新創(chuàng)建Commitment Tx,而每個Commitment Tx帶有鎖定時間(如之間的1000個確認(rèn)),A和B之間的鎖定時間需要長于B和C之間的鎖定時間疆导,防止在B拿到key之后赁项,A和B之間的鎖定時間已經(jīng)到期,B會拿不到幣。
  6. 第二個問題是:在B找C拿key的過程中悠菜,A和B之間的通道可以隨時斷開舰攒,B不需要信任A在此期間會關(guān)閉通道,因?yàn)榧词笰作惡悔醋,故意關(guān)閉通道摩窃,HTLC(a)中的幣,A還需要等到一定的鎖定期以后才能花掉芬骄,只要B在這個鎖定期內(nèi)拿到簽名所用的key猾愿,就可以從HTLC(a)中拿走1BTC。
  7. B作為中間人账阻,可以收取少量的費(fèi)用蒂秘。
  8. 通道之間的交易,實(shí)際上無需確認(rèn)等待淘太,瞬時完成的姻僧,對于比特幣的TPS有大量的提升。

閃電網(wǎng)絡(luò)有利有弊蒲牧,有人看好有人看衰段化,不可否認(rèn)兩點(diǎn)是:鏈下節(jié)點(diǎn)會相對中心化;比特幣交易速度會有大幅提升造成,交易費(fèi)也會顯著降低显熏。
閃電網(wǎng)絡(luò)可以用來做跨鏈,甚至有團(tuán)隊(duì)用閃電網(wǎng)絡(luò)做去中心化交易所晒屎,值得期待喘蟆。
文章里面沒有圖,主要是圖不太容易畫明白鼓鲁,抱歉蕴轨。
相關(guān)資料,公眾號后臺回復(fù)”閃電網(wǎng)絡(luò)“獲取骇吭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橙弱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子燥狰,更是在濱河造成了極大的恐慌棘脐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件龙致,死亡現(xiàn)場離奇詭異蛀缝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)目代,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門屈梁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗤练,“玉大人,你說我怎么就攤上這事在讶∩诽В” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵构哺,是天一觀的道長此疹。 經(jīng)常有香客問我,道長遮婶,這世上最難降的妖魔是什么蝗碎? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮旗扑,結(jié)果婚禮上蹦骑,老公的妹妹穿的比我還像新娘。我一直安慰自己臀防,他們只是感情好眠菇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袱衷,像睡著了一般捎废。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上致燥,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天登疗,我揣著相機(jī)與錄音,去河邊找鬼嫌蚤。 笑死辐益,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脱吱。 我是一名探鬼主播智政,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箱蝠!你這毒婦竟也來了续捂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤宦搬,失蹤者是張志新(化名)和其女友劉穎牙瓢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體床三,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡一罩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了撇簿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聂渊。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖四瘫,靈堂內(nèi)的尸體忽然破棺而出汉嗽,到底是詐尸還是另有隱情,我是刑警寧澤找蜜,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布饼暑,位于F島的核電站,受9級特大地震影響洗做,放射性物質(zhì)發(fā)生泄漏弓叛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一诚纸、第九天 我趴在偏房一處隱蔽的房頂上張望撰筷。 院中可真熱鬧,春花似錦畦徘、人聲如沸毕籽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽关筒。三九已至,卻和暖如春杯缺,著一層夾襖步出監(jiān)牢的瞬間蒸播,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工萍肆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廉赔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓匾鸥,卻偏偏與公主長得像蜡塌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子勿负,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容