區塊鏈之閃電網絡

區塊鏈之閃電網絡

閃電網絡(Lightning Network)是一個去中心化的系統。閃電網絡的卓越之處在於,無需信任對方以及第三方即可實現實時的、海量的交易網絡。

閃電網絡起源於比特幣的擴容問題

閃電網絡是基於微支付通道演進而來,創造性的設計出了兩種類型的交易合約:序列到期可撤銷合約RSMC(Revocable Sequence Maturity Contract,哈希時間鎖定合約HTLC(Hashed Timelock Contract)。

RSMC解決了通道中幣單向流動問題,HTLC解決了幣跨節點傳遞的問題。這兩個類型的交易組合構成了閃電網絡。

RSMC 創建

我們先來創建一個序列到期可撤銷合約(RSMC),愛麗絲和鮑伯是合作方,經常有比特幣往來,所以他們決定各拿出0.5BTC放入通道中,便於業務往來。

解釋一下下方RSMC交易的結構(圖X),左側為愛麗絲的視角,右側為鮑伯的視角。中間Funding Tx為共同可見,C1a和RD1a為愛麗絲持有,C1b和RD1b為鮑伯持有。交易圖中帶有尖括號的簽名表示待填入。

區塊鏈之閃電網絡

RSMC交易的結構圖

1、雙方各拿出0.5BTC,構建Funding Tx,輸出為愛麗絲和鮑伯的2/2多重簽名。此時, Funding Tx未簽名,更不廣播。

2、愛麗絲構造Commitment Tx:C1a和RD1a,並交給鮑伯簽名。C1a的第一個輸出為多重簽名地址,愛麗絲的另一把私鑰愛麗絲2和鮑伯的2/2多重簽名,第二個輸出為鮑伯 0.5BTC。

3、RD1a為C1a第一個輸出的花費交易,輸出給愛麗絲0.5BTC,但此類型交易帶有sequence,作用是阻止當前交易進塊,只有前向交易有sequence個確認時才能進塊。

4、鮑伯構造Commitment Tx:C1b和RD1b,並交給愛麗絲簽名。結構與C1a、RD1a是對稱關係。

5、鮑伯對C1a和RD1a進行簽名,並將簽名給愛麗絲;同理,愛麗絲對C1b和RD1b簽名,完成後給鮑伯。此時,由於並未對Funding Tx進行簽名,任何一方均無法作惡,任何一方也不會有任何損失。

6、雙方均完成對commitment Tx的簽名並交換後,各自再對Funding Tx進行簽名,並交換。此時,Funding Tx是完整的交易,廣播之。

上述過程以及結構圖的描述,就是創建RSMC的全部過程。

C1a, C1b兩筆交易花費的是同一個輸出,故他們兩個交易只有一個能進塊。若愛麗絲廣播C1a,則鮑伯立即拿到0.5BTC(C1a的第二個輸出),而愛麗絲需要等C1a得到1000個確認,才能通過RD1a的輸出拿到0.5BTC。另一方,若鮑伯廣播C1b,則愛麗絲立即拿到0.5BTC,鮑伯等待C1b得到1000個確認,才能通過RD1b拿到0.5BTC。也就是說,單方廣播交易終止合約的那一方會延遲拿到幣,而另一放則立即拿幣。

交易更新

愛麗絲和鮑伯各自0.5BTC的餘額,此時愛麗絲從鮑伯處購買了一件商品,價格為0.1BTC,那麼餘額應該變為愛麗絲 0.4BTC,鮑伯 0.6BTC。於是創建新的Commitment Tx,對於愛麗絲來說是C2a 和RD2a,對於鮑伯來說是C2b和RD2b,過程與上面類似。

區塊鏈之閃電網絡

交易更新時的交易結構

此時兩個狀態均是有效的,那麼最核心的問題來了,如何才能徹底廢棄掉C1a和C1b呢?

RSMC採用了一個非常巧妙的方法,在C1a的第一個輸出中,採用了愛麗絲2和鮑伯的多重簽名,愛麗絲將愛麗絲2 的私鑰交給鮑伯,即表示愛麗絲放棄C1a,承認C2a。

區塊鏈之閃電網絡

交易更新時的多重簽名

愛麗絲交出愛麗絲2的私鑰給鮑伯,那麼鮑伯就可以修改RD1a的輸出給他自己,形成新的交易BR1a。若愛麗絲破壞合約存在C2a的情況下依然廣播出C1a,那麼愛麗絲的懲罰就是失去她全部的幣。愛麗絲交出愛麗絲2的私鑰,或者對交易BR1a進行簽名,兩者是等同的,都是對C1a的放棄。

反之亦然,鮑伯交出鮑伯2的私鑰給愛麗絲即意味放棄C1b,而僅能認可C2b。

引入sequence的目的是,阻止後續交易進塊(RD1a),給出一個實施懲罰窗口期,當發現對方破壞合約時,可以有1000個塊確認的時間去實施懲罰交易,即廣播BR1a代替RD1a。若錯過

1000個塊時間窗口,則無法再實施懲罰了(RD1a進塊了)。

交易關閉

關閉RSMC,直接按照最終的餘額構造出一個Commitment TX即可,例如輸出為愛麗絲0.1BTC,鮑伯0.9BTC,無需再設置多重簽名,構造懲罰交易等。

中轉交易

愛麗絲想要支付0.5BTC給鮑勃,但她並沒有一個渠道來和他進行交易。幸運的是,她和查理有一個交易渠道,而查理正好和鮑勃有一個交易渠道。這樣愛麗絲就能借助查理的交易渠道,通過哈希時間鎖定合約(HTLC)來和鮑勃進行交易了。

區塊鏈之閃電網絡

中轉交易示意圖

為了完成這次交易,愛麗絲就會給鮑勃發短信說:“嘿!我要給你付筆款。”這時鮑勃自己將收到一個隨機數字(R),接著鮑勃便會回一個被哈希的數字(H)(你可以認為被哈希的數字R是隨機數字的一種加密形式)給愛麗絲。然後愛麗絲的錢包緊接著就會聯繫查理說:“嘿,查理。如果你給我生成(H)的未加密值(R),那麼我就同意更新我們渠道的支付分配,這樣你就可以得到的就會比0.5BTC多一點,我得的比0.5少一點。”儘管查理並不知道R,但他也會同意。之後查理便會去找鮑勃說:“嘿,鮑勃。如果你給我那個能生成H的未加密的值R,我將同意更新我們渠道的支付分配,這樣你就可以得到的會比0.5BTC多一點,我得到的比0.5少一點。”

因為R就是從鮑勃這裡生成的,所以他肯定知道。接著他馬上將R告訴查理,並更新了其渠道的支付分配。然後查理將R告訴給了愛麗絲之後也更新他們的渠道,最後交易完成,愛麗絲以脫鏈的形式付給鮑勃0.5BTC。

總結

RSMC通過巧妙的設置Commitment TX的多重簽名輸出,以及sequence的延遲進塊形成懲罰窗口期,解決了在微支付通道中的幣單向流動問題。


分享到:


相關文章: