隔離見證、閃電網路概述

Published: Nov 10, 2019 by Cypherpunks Core

原文:隔离见证、闪电网络理解
隔離見證已經於2017年8月在比特幣上啟動了。最近比特幣正在朝著下一個擴容方案努力,閃電網路 Lightning Network。閃電網路的啟動必須基於更多的使用者使用隔離見證地址。

源起

現在的比特幣網路交易量特別大,但是區塊10分鐘一個,一個區塊限制1M大小,這就造成了比特幣網路的擁堵。如果大家瞭解交易結構就一定知道加解密指令碼,這些指令碼都是放在區塊裡面的,於是大家就想如何能把指令碼從區塊中拿出來單獨儲存,這樣一個區塊不就可以容納更多的交易了嗎?於是下圖的結構就出現了:

隔離見證的其中一個好處是能緩解我們交易堵塞的問題。但是最重要的是為了閃電網路鋪路。一種建立在比特幣底層網路的智慧合約。

隔離驗證確實不是很好的解決之道,因為指令碼還是需要儲存的,沒有指令碼的交易,那麼這個交易是不是可以隨便花費。另外對於錢包節點都是要去檢查指令碼的準確性,這個還是需要有指令碼資料的,所以這個也不是簡單的事情吧!

分叉

隔離見證可以應用軟分叉或者硬分叉,當然最終實施的是軟分叉。新的節點是可以相容後者的,但是舊節點是不是相容新版本的區塊這個是需要考慮的,如果不相容那麼就肯定出現軟分叉。但是官方的說明是舊版本的節點不用升級,這句話的話外之音就是舊節點也是支援新版的區塊(包含隔離見證)。看來這項技術很好。至於BCH應該是人為的硬分叉了。這部分知識可參考隔離見證比任何硬分叉都高階

上篇的文章中提到了Core團隊很多的問題,也許確實有問題,但是作為開發者,考慮前後版本相容也是應該的,畢竟誰都不想出問題。另外還有一點就是一旦一個項目上線,可做的可能真的就不多了,一是改動複雜,程式設計師不想動,二是工作量比較大!對於這場戰爭我還是當個第三者吧,看慣了公司風風雨雨,拿刀開乾的人還是很少的。一旦變革失敗也不會有人同情,core團隊可能有自己的考量。畢竟對於資本市場來說一切都是那麼的浮躁。

閃電網路

閃電網路提供了一個可擴充套件的微支付通道網路。交易雙方若在區塊鏈上預先設有支付通道,就可以多次、高頻、雙向地通過軋差方式實現瞬間確認的微支付;雙方若無直接的點對點支付通道,只要網路中存在一條連通雙方的、由多個支付通道構成的支付路徑,閃電網路也可以利用這條支付路徑實現資金在雙方之間的可靠轉移。

上面的這段話可能比較難於理解,總的來說就是通過多簽名實現多重交易的劃分,這裡需要了解比特幣的智慧合約P2SH指令碼的相關知識。

閃電網路並不試圖解決單次支付的銀貨對付問題,其假設是單次支付的金額足夠小,即使一方違約另一方的損失也非常小,風險可以承受。因此使用時必須注意“微支付”這個前提。多少資金算“微”,顯然應該根據業務而定。

技術本質

閃電網路的關鍵技術有三,後後依賴於前前,依次是:RSMC,HTLC和閃電網路。技術實現雖然複雜,但本質卻很簡單。

RSMC解決了通道中幣單向流動問題,HTLC解決了幣跨節點傳遞的問題。這兩個類型的交易組合構成了閃電網路。這裡面還會用到我們之前提到的BIP-65 OP_CHECKLOCKTIMEVERIFYBIP-68使用共識序列號記錄相對鎖定時間,這兩篇文件提到了交易鎖定的問題,也提到了分叉的問題。

RSMC

我們先來建立一個序列到期可撤銷合約(RSMC),Alice和Bob是合作方,經常有比特幣往來,所以他們決定各拿出0.5BTC放入 通道 中,便於業務往來。解釋一下下方RSMC交易的結構(圖X),左側為Alice的視角,右側為Bob的視角。中間Funding Tx為共同可見,C1a和RD1a為Alice持有,C1b和RD1b為Bob持有。交易圖中帶有尖括號的簽名表示待填入。

建立交易

來對上面的圖進行一番解釋:

  1. 雙方各拿出0.5BTC,構建Funding Tx,輸出為Alice和Bob的2/2多重簽名。此時,Funding Tx未簽名,更不廣播。
  2. Alice構造Commitment Tx:C1a和RD1a,並交給Bob簽名。C1a的第一個輸出為多重簽名地址,Alice的另一把私鑰Alice2和Bob的2/2多重簽名,第二個輸出為Bob 0.5BTC。
  3. RD1a為C1a第一個輸出的花費交易,輸出給Alice0.5BTC,但此類型交易帶有sequence,作用是阻止當前交易進塊,只有前向交易有sequence個確認時才能進塊。
  4. Bob構造Commitment Tx:C1b和RD1b,並交給Alice簽名。結構與C1a、RD1a是對稱關係。
  5. Bob對C1a和RD1a進行簽名,並將簽名給Alice;同理,Alice對C1b和RD1b簽名,完成後給Bob。此時,由於並未對Funding Tx進行簽名,任何一方均無法作惡,任何一方也不會有任何損失。
  6. 雙方均完成對commitment Tx的簽名並交換後,各自再對Funding Tx進行簽名,並交換。此時,Funding Tx是完整的交易,廣播之。

上述過程以及結構圖的描述,就是建立RSMC的全部過程。C1a, C1b兩筆交易花費的是同一個輸出,故他們兩個交易只有一個能進塊。若Alice廣播C1a,則Bob立即拿到0.5BTC(C1a的第二個輸出),而Alice需要等C1a得到1000個確認,才能通過RD1a的輸出拿到0.5BTC。另一方,若Bob廣播C1b,則Alice立即拿到0.5BTC,Bob等待C1b得到1000個確認,才能通過RD1b拿到0.5BTC。也就是說,單方廣播交易終止合約的那一方會延遲拿到幣,而另一放則立即拿幣。

交易更新

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

此時兩個狀態均是有效的,那麼最核心的問題來了,如何才能徹底廢棄掉C1a和C1b呢? RSMC採用了一個非常巧妙的方法,在C1a的第一個輸出中,採用了Alice2和Bob的多重簽名,Alice將Alice2的私鑰交給Bob,即表示Alice放棄C1a,承認C2a。

Alice交出Alice2的私鑰給Bob,那麼Bob就可以修改RD1a的輸出給他自己,形成新的交易BR1a。若Alice破壞合約存在C2a的情況下依然廣播出C1a,那麼Alice的懲罰就是失去她全部的幣。Alice交出Alice2的私鑰,或者對交易BR1a進行簽名,兩者是等同的,都是對C1a的放棄。反之亦然,Bob交出Bob2的私鑰給Alice即意味放棄C1b,而僅能認可C2b。引入sequence的目的是,阻止後續交易進塊(RD1a),給出一個實施懲罰視窗期,當發現對方破壞合約時,可以有1000個塊確認的時間去實施懲罰交易,即廣播BR1a代替RD1a。若錯過1000個塊時間視窗,則無法再實施懲罰了(RD1a進塊了)。

交易關閉

關閉RSMC,直接按照最終的餘額構造出一個Commitment TX即可,例如輸出為Alice0.1BTC,Bob0.9BTC,無需再設定多重簽名,構造懲罰交易等。

中轉交易(真實的閃電網路,HTLC)

我們來看一下基本的流程圖吧! 這裡面的R就是支付的口令,其實就是交易節點之間沒有直連的通道,需要其他人待轉,這些人會收手續費。這裡面需要解決幾個問題(我的思考):

  1. 如何建立初始的支付通道
  2. 如果兩個節點間無直接支付通道,如何找到最佳的支付通道。
  3. 如何保證第三方不作弊,防止現金丟失(前面的講的都是這個問題)

總結

RSMC

閃電網路的基礎是交易雙方之間的雙向微支付通道,RSMC(Recoverable Sequence Maturity Contract)定義了該雙向微支付通道的最基本工作方式。這是要求雙方都拿出資金放到合約上,然後輸出動態分配,最後確認輸出後上鏈,這樣的好處就是支付完全是在鏈下執行。

為了鼓勵雙方儘可能久地利用通道進行交易,RSMC對主動終止通道方給予了一定的懲罰:主動提出方其資金到賬將比對方晚,因此誰發起誰吃虧。這個設計雖然增加了技術複雜度,但應該說是合理的。  這樣許多交易就會在區塊鏈下面執行,不會產生交易(只產生預備交易),最後交易才會上鍊。還有就是交易的憑證怎麼保證?所以這個方式或許也有很多技術和現實的缺陷所在。

通道餘額分配方案的本質是結算準備金。在此安排下,因為要完全控制資金交收風險,每筆交易都不能突破當前結算準備金所施限制。

HTLC

RSMC只支援最簡單的無條件資金支付,HTLC(Hashed Timelock Contract)進一步實現了有條件的資金支付,通道餘額的分配方式也因此變得更為複雜。

通過HTLC,Alice和Bob可以達成這樣一個協議:協議將鎖定Alice的0.1 BTC,在時刻T到來之前(T以未來的某個區塊鏈高度表述),如果Bob能夠向Alice出示一個適當的R(稱為祕密),使得R的雜湊值等於事先約定的值H(R),Bob就能獲得這0.1 BTC;如果直到時刻T過去Bob仍然未能提供一個正確的R,這0.1 BTC將自動解凍並歸還Alice。

雷電網路

基於閃電網路的思路,以太坊社群也提出了自己的鏈下微支付通道解決方案:雷電網路(Raiden Network)。 延續了以太坊的風格,把本來較簡單的問題複雜智慧化。大致與閃電網路相同,但細節有些地方更復雜。例如:第一層面的那個舊版本作廢,其實只要加上時間戳看哪個時間新就可以了。但是其額外增加了一個單增的Sequence Number欄位來標明哪個有效。還有記錄分配餘額即可,但雷電網路記錄的是增減變動量。在第二個層面上,雷電網路引入了較HTLC更通用和複雜的“Smart Condition”。就是說HTLC中採用的成熟簡單地求HASH函數,在雷電網路中替代成了使用者可自己設定的任意函數,就是說向外擴充套件了,更加智慧,但同時面臨的風險可能就越大。

Corda

相近技術的低層思想是相通的,受到閃電網路思想的啟發,知名的R3也宣佈釋出非區塊鏈的分散式賬本應用Corda,其本質思想應該是與閃電網路較相近似。 關於Corda的資料較少,如整個R3較閉源封閉一樣,只是R3 CEV的首席技術官Richard Brown之前在部落格中披露些Corda的主要特點:

  1. 沒有多餘的全局資料共享:有合法需求的參與方才可按照協議獲取資料;
  2. Corda編寫和配置在企業間流轉,無中心控制者;
  3. Corda在企業間單個交易水平達成共識,而不是在系統水平上;
  4. 系統設計直接支援監管觀察員節點;
  5. 交易直接由交易雙方驗證,而不是由一大群不相干的驗證者進行;
  6. 支援多種共識機制;
  7. 記錄了智慧合約程式碼和人類語言法律檔案的清晰聯絡;
  8. 用行業標準工具建立;
  9. 沒有原始加密貨幣。

總結

將交易和智慧合約的執行放在鏈下快速地執行,僅在必要時才將其在鏈上公開結算執行,這就是閃電網路帶給我們的絕佳思路。同時可增加對閃電結鏈上算時的手續費,減輕鏈上壓力的同時有可能提升礦工收入,因理論上不可能所有交易都閃電。比特幣主鏈上交易有其它任何形式鏈下交易或側鏈交易所無法替代的優點。

參考和引用

Latest Posts

比特幣的區塊時間戳保護規則
比特幣的區塊時間戳保護規則

摘要: 我們檢查了比特幣鮮為人知的兩個規則,這些規則用於防止不法礦工操縱區塊時間戳以獲得不公平的高額挖礦報酬。我們討論了為什麼可能選擇類似2小時MAX_FUTURE_BLOCK_TIME值之類的常數,以及該值會對比特幣現金有何特定的影響。我們得出的結論是,考慮到實施規則時缺乏功能網路,比特幣的時間保護規則似乎相當有效,令人讚嘆。6 NOVEMBER 2019, BITMEX RESEARCH

過去到現在的Bitcoin性能測試
過去到現在的Bitcoin性能測試

摘要: 我們成功地進行了 35 次初始區塊下載(Initial Block Download, IBD),並記錄了節點與網路同步所花費的時間,從而測試了 Bitcoin Core 的性能。我們使用了從 2012 年到 2019 年的軟體版本。結果表明,軟體性能得到了顯著而持續的改善,但差異也很大。即使使用最新的電腦硬體,舊版本的 Bitcoin 仍難以克服 2015 年至 2016 年期間的交易量提升。因此,我們得出結論,如果沒有軟體增強功能,今天的初始同步幾乎是不可能的。2019年11月29日, BITMEX Research

使用區塊鏈和感知雜湊達到去中心化之圖像共享和版權保護
使用區塊鏈和感知雜湊達到去中心化之圖像共享和版權保護

本篇文章翻譯自 Decentralised Image Sharing and Copyright Protection using Blockchain and Perceptual Hashes,媒體區塊鏈的範疇越來越發人深省,究竟該如何透過去中心化的機制來達到版權保護呢?一起來閱讀本篇文章吧!