- 區塊鏈社會:區塊鏈助力國家治理能力現代化
- 王煥然等
- 2734字
- 2021-03-23 16:36:30
3.2 比特幣的擴展方案
針對比特幣的設計機制,比特幣性能的擴展方案可以從幾個方面入手,比如增加區塊大小或者修改共識和記賬機制。但是,這些直觀的擴展方案會導致老系統無法兼容,因而將會硬分叉產生新的比特幣網絡,這對于比特幣的信仰者是不可接受的。因此下面所討論的擴展方案都是不改變比特幣基本機制的擴展方案。
3.2.1 隔離見證(Segregated Witness)
比特幣的每一個交易記錄的數據內容分成兩個部分:交易數據和簽名數據。其中簽名數據占了交易記錄的65%。隔離見證機制約定鏈上區塊只存儲交易記錄中的交易數據,而簽名數據將存儲在附加的見證區塊上。隔離見證機制實質上擴展了比特幣區塊的大小,并保持了與傳統比特幣網絡的兼容性。
隔離見證機制同時也解決了比特幣的交易延展性問題(Transaction Malleability)。
交易延展性,是指當交易被簽名時,簽名并沒有覆蓋交易中所有的數據(即發送者的公鑰和簽名數據),而交易中所有的數據又會被用來生成交易的哈希值作為該交易的唯一標識(Transaction ID)。如此,比特幣網絡中的節點能夠改變發送的交易內容(通過改變發送者中的簽名,因為在橢圓曲線算法中可能存在兩個有效的簽名,攻擊者可以將一個有效的簽名改成另一個,但仍然是有效的簽名),導致該交易的哈希值也即交易的唯一標識發生變化。
注意,攻擊者僅僅能夠改變該哈希值,但不能改變交易中的其他數據。然而,這確實意味著,在任何情況下,接收一系列未確認交易的鏈是不安全的。因為未確認交易的唯一標識可能會發生變化,而隨后交易中的發送者會依賴于先前交易的唯一標識來確認結算。即使交易得到了一個確認,也是不安全的,因為區塊鏈可能會被重新調整。
簡單地說,交易延展性,或者叫作“交易可鍛性”,指的是比特幣支付交易發出后、確認前可被修改(準確說是被偽造復制)。2014年,黑客利用了交易延展性,對當時最大的比特幣交易所MT.GOX交易所(俗稱“門頭溝交易所”)發動攻擊,導致交易所倒閉。本次攻擊交易所丟失了85萬個比特幣,按當時的幣價計算,這些損失的比特幣價值近4.54億美元。
黑客的攻擊過程如下:
Step1:黑客自己有一個賬號,在交易所開了一個賬號,把自己的比特幣轉進去。
Step2:申請提現,交易所發起一筆轉賬交易。
Step3:這筆交易被廣播到網絡上,還未打包進區塊鏈之前。黑客收到這筆交易,稍微更改了簽名的格式,生成一筆新的交易廣播出去,此時交易標識已經變了。
Step4:黑客的這筆新交易被區塊鏈接收了。然后向交易所投訴,說他沒收到錢。交易所根據自己生成的交易標識查詢該筆交易,發現在網絡上查詢不到,會再次轉賬給黑客,導致同一筆錢被黑客提現了兩次甚至多次。最終使交易所蒙受巨大損失。
隔離見證將簽名數據與交易數據分離,使得交易標識具有唯一性和穩定性,解決了交易延展性問題。
3.2.2 側鏈技術(Side Chain)
側鏈技術讓用戶可以在比特幣和其他功能不同的區塊鏈之間相互轉移貨幣。在這個場景下,比特幣被稱為主鏈,其他的區塊鏈則被稱為側鏈。側鏈上可以使用價值來自主鏈的貨幣,與主鏈的功能和特性都可以不同,在一定程度上提高了主鏈的處理能力,擴展了主鏈的應用。圍繞主鏈可以搭建起一個業務形態豐富的側鏈生態。
主鏈向側鏈轉移貨幣時,將這些貨幣在主鏈上鎖定的方式包括:
1)多方聯合保管:在主鏈上創建一個多方共管地址,轉移到側鏈的虛擬貨幣用這個地址鎖定,被鎖定的虛擬貨幣需要多數同意才能使用。
2)“礦工”保管:更容易圍繞一個主鏈打造多個側鏈應用,但是需要比特幣的協議升級支持。
3)混合保管:主鏈使用多方共管,側鏈使用礦工保管。
側鏈技術的案例主要有三種:
1)RootStock(RSK):是一個建立在比特幣區塊鏈上的圖靈完備的智能合約平臺。
2)Liquid:為用戶提供一種從交易所安全、即時轉移資金的方式。Liquid將資金轉移到一個共享的多重簽名錢包地址,并通過一種拜占庭循環共識協議的區塊鏈來處理交易。
3)擴展區塊:是指在主鏈的區塊之外并行地運行另一個側鏈,但所有的礦工都要去驗證這個側鏈上的區塊。因此可以將這些側鏈區塊看成主鏈的擴展區塊。擴展區塊可以提高交易處理能力或實現不容易在主鏈上推行的特性。
3.2.3 閃電網絡(Lighting Networks)
閃電網絡的設計思想則是將大量交易放到比特幣區塊鏈之外進行,只把關鍵環節放到鏈上進行確認。
閃電網絡本質上是使用了哈希時間鎖定智能合約來安全地進行零確認交易的一種機制。閃電網絡是由微支付通道演進而來,有兩種類型的交易合約:序列到期可撤銷合約(Revocable Sequence Maturity Contract,RSMC),哈希時間鎖定合約(Hashed Time Lock Contract,HTLC)。
RSMC的設計思路是交易雙方共同出資創建一個雙向微支付通道。交易雙方先預存一部分資金到微支付通道里,初始情況下雙方的分配方案等于預存的金額。每次發生交易,需要對交易后產生資金分配結果共同進行確認,同時簽名把舊版本的分配方案作廢。任何一方需要提現時,可以將他手里雙方簽署過的交易結果寫到區塊鏈網絡中,從而被確認。
任何一方在任何時候都可以提現,提現時需要提供一個雙方都簽過名的資金分配方案。在一定時間內,如果另外一方拿出證明表明這個方案已經被作廢了(非最新的交易結果),則資金罰沒給質疑方;否則按照提出方的結果進行分配。罰沒機制可以確保沒人會故意拿一個舊的交易結果來提現。
另外,即使雙方都確認了某次提現,首先提出提現一方的資金到賬時間要晚于對方,這就鼓勵大家盡量都在鏈外完成交易。通過RSMC,可以實現大量中間交易發生在鏈外。
HTLC可以保障任何兩個人之間的轉賬都可以通過一條支付通道來完成。HTLC簡單理解就是限時轉賬,通過智能合約,雙方約定轉賬方先凍結一筆錢,并提供一個哈希值,如果在一定時間內有人能提出一個字符串,使得它哈希后的值跟已知值匹配(實際上意味著轉賬方授權了接收方來提現),則這筆錢轉給接收方。通過HTLC可以在閃電網絡任意節點之間安全轉移價值而無須信任中介節點。
閃電網絡整合RSMC和HTLC兩種機制,可以讓任意兩個節點之間的交易都在鏈下完成。在整個交易中,智能合約起到了中介的重要角色,而區塊鏈網絡則確保最終的交易結果被確認。閃電網絡通過將大量的交易放在鏈下完成,大大降低了主鏈負荷,從而讓主鏈快如閃電。然而,從其工作原理分析,閃電網絡也會帶來一些問題:
如果通道中任一節點反應遲鈍,用戶可能要等上幾個小時才能關閉支付通道,并通過另一種途徑重新發送資金。
沒有離線支付:用戶無法支付不在線的人。
不適合大額支付:即使一條經由各種支付通道的路線可能存在,但通道中其他節點多重簽名錢包中的資金可能不足以轉移大筆資金。
集中化:閃電網絡可能會鼓勵支付樞紐的集中化(類似于礦工集中化)。閃電網絡包含百萬級別的支付通道,通道內鎖定了大量的資金,特別是大的中介人通道容易成為系統性攻擊的目標。
沒有一種技術可以解決所有問題,雖然閃電網絡仍然存在一些問題,但不可否認閃電網絡是一個創新性的設計。對于閃電網絡的研究仍在繼續,相信未來閃電網絡的應用會更加完善。
[1] 參考資料來源:https://blog.csdn.net/jason_cuijiahui/article/category/6926621。
- C# 7 and .NET Core Cookbook
- Learning ArcGIS Pro 2
- 面向STEM的Scratch創新課程
- Python自然語言處理(微課版)
- H5頁面設計:Mugeda版(微課版)
- Raspberry Pi Home Automation with Arduino(Second Edition)
- Python程序設計與算法基礎教程(第2版)(微課版)
- Scrapy網絡爬蟲實戰
- SQL Server on Linux
- Developer,Advocate!
- JavaScript Mobile Application Development
- Improving your Penetration Testing Skills
- Learning jqPlot
- AngularJS by Example
- Web應用程序設計:ASP