中本聰的一失之慮讓比特幣趨於中心化, 那這些問題的嚴重性, 你瞭解嗎?

買賣虛擬貨幣

來源 | 《區塊鏈核心技術與應用》

作者 | 于斌

責編 | 喬治

出品 | 區塊鏈大本營(blockchain_camp)

區塊鏈常見問題剖系列文章涵蓋了諸多區塊鏈領域內的常見問題,這些常見問題基本上會困擾每一個區塊鏈開發者,基本內容包括以下幾個方面:

區塊鏈的技術侷限、資料冗餘、安全性、挖礦、各種共識協議的弱點、交易速度、安全問題、51% 攻擊問題、女巫攻擊、交易所、以太坊智慧合約安全漏洞、挖礦和算力集中困境,比特幣和以太坊的交易效率困境、比特幣擴容、隔離驗證、閃電網路、側鏈、DAG 技術、硬分叉歷史、系統升級維護等問題,涵蓋了區塊鏈各有可能出現問題的領域。

本文是《區塊鏈常見問題剖析》第二篇,上篇文章詳細介紹了區塊鏈的技術侷限區塊鏈的安全問題,本文將從挖礦和共識協議的弱點交易效率問題系統升級維護問題3方面繼續探討區塊鏈常見問題。

為什麼你必須瞭解這些問題?老鐵,讀完這篇文章就知道啦!

挖礦和共識協議的弱點

1、中本聰一失之慮

比特幣的設計者中本聰畢竟不是神,他在設計比特幣時,以去中心化為根本前提,原本希望利用分散的計算資源,透過每個人的計算機解決算力問題,以完成區塊鏈共識和交易上所必需的複雜計算,所以設計了 PoW,以獎勵參與計算的節點。在這份協議的基礎上,全球每個比特幣的參與者都可以開動自己的電腦進行挖礦,公平參與來獲取比特幣。

但後來的發展應該是設計者不想看到的:由於 CPU 挖礦效率極低,人們發現 GPU 效率相對高點,發展出 GPU 挖礦,再後來有 FPGA,最後發展到 AISC(專用積體電路)挖礦,如果說 GPU 挖礦還和“人人為我我為人人”沾點邊的話,那麼 AISC 專業礦機的誕生就徹底背離了當初中本聰“一機一票”的設計初衷。

從此 PoW 機制彷彿進入了軍備競賽,最後礦機的集中分佈形成了礦場,算力的中心化讓後來者無法公平參與。同時算力的過於集中不利於整個比特幣網路的安全性,畢竟還有著名的“51%攻擊”的潛在威脅。

所謂“礦池”,就是大家整合算力,一起解決同一道題。這種方式需要統一管理,一般做法是礦池開出任務,並準備適合的獎勵措施,無論算力高低,把一種類似賭運氣的挖礦賭博變成一種統計學的回報,以降低迴報的波動性。這種工業式的挖礦革命將隨著 PoW 共識機制的推廣而逐漸完善。

2、挖礦和算力集中困境

礦池算力集中化帶來的相關安全話題是一個熱門話題。曾經有一段時間,比特幣是一個大眾參與的遊戲,人們使用自家的家用電腦可以碰運氣挖比特幣。然而,隨著挖礦難度的增加,專業的計算機晶片和專業的比特幣採礦集團出現了,並形成了一些大規模的礦池。它們主要分佈在中國,以及一些電力便宜的國家和地區。

比起區塊鏈技術應用落地的困境,比特幣“挖礦”的生意風景這邊獨好。這裡展開的,是一場“算力”的軍備競賽。由於比特幣的機制,礦圈的這場“權力遊戲”,勝者甚至可以決定比特幣的命運和走向。

因為大多數區塊鏈共識演算法的“51%攻擊”問題,以及日益集中的礦池算力,導致我們的爭議焦點集中在去中心化系統以及實際上日益集中的算力導致的中心化爭論上。目前實際上並未出現51%攻擊的問題,但不可否認,算力的集中至少違背了比特幣去中心化的初衷,成為其繼續發展的一大隱患。

3、其他共識演算法及其問題

區塊鏈的自信任主要體現在分佈於區塊鏈中的使用者無須信任交易的另一方,也無須信任一個中心化的機構,只需要信任區塊鏈協議下的軟體系統即可實現交易。

這種自信任的前提是區塊鏈的共識機制,即在一個互不信任的市場中,要想使各節點達成一致的充分必要條件是每個節點出於對自身利益最大化的考慮,都會自發、誠實地遵守協議中預先設定的規則,判斷每一筆記錄的真實性,最終將判斷為真的記錄記入區塊鏈中。換句話說,如果各節點具有各自獨立的利益並互相競爭,則這些節點幾乎不可能合謀欺騙使用者。而當節點們在網路中擁有公共信譽時,這一點體現得尤為明顯。

區塊鏈各種共識機制的比較

共識機制最好的設計是提供可插拔模組化共識。共識演算法的選擇與應用場景高度相關,不同的應用應該有不同的共識演算法的選擇。

交易效率問題

1、比特幣和以太坊的交易效率困境

談到交易效率,首先我們需要一個衡量指標,在區塊鏈系統中用 TPS 指標來衡量一個系統的交易效率。

TPS 可基於測試周期內完成的事務數量計算得出。例如,使用者每分鐘執行6個事務,TPS 為0.10 TPS。同時我們會知道事務的響應時間(或節拍),如此例中,60秒完成6個事務也同時代表每個事務的響應時間或節拍為10秒。

一個系統吞吐量通常由 TPS、併發數2個因素決定。每套系統的這兩個值都有一個相對極限值。在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、記憶體等等其他消耗導致系統效能下降。

根據這個指標,以比特幣為例,其 TPS 約為7,以太坊大概為20,換算到一天24小時的概念,大概相當於比特幣30萬筆/天,以太坊45萬筆/天。

根據 Blockchain 的資料,投資者大概需要平均78分鐘來確認一次比特幣交易。個別時段,這一平均時長一度高達1188分鐘,也就是將近20小時。這將大大降低使用者使用比特幣的興趣。

2、比特幣擴容

一種貨幣不是天生就有價值,而是很多人相信它有價值的時候才會有價值。這也可以說在一定群體裡形成的“共識機制”。由於前面提到的比特幣交易速度慢的問題,比特幣擴容一直是社羣裡被廣泛重視的一個重要問題。

首先要澄清的一點是,比特幣擴容不是增發比特幣,而是針對比特幣交易量不足增加比特幣的交易量上限。而為什麼要增加交易量上限呢?

比特幣最初的設計是規定每10分鐘(左右)挖出一個大小為1MB的區塊,每筆交易平均下來是250位元組,於是,每塊可以放進4000筆交易,換算成每秒則近似等於每秒7筆交易。這個數字太小了,比如 Paypal 是每秒100筆量級的,而像支付寶這種集中式交易系統,在“雙十一”的時候可是每秒100 000筆量級的。和它們一比,比特幣根本就不能稱之為交易系統。

在比特幣的擴容問題上有兩個技術難題。一是技術上如何實現,即擴容多少合適。第二個問題是如何實施。考慮到比特幣系統是一個分散式系統,它面臨的實施層面的問題會更大,因為涉及在實施層面上的新舊節點如何協調,新舊賬本如何共存和互認的問題。

分散式系統的升級必須讓每個節點都升級才行。如果有人不升級,將會產生分叉。關於分叉,前文詳細講解過,此處不再贅述。

3、比特幣的隔離驗證、閃電網路與側鏈

區塊鏈的可擴充套件性問題,至今仍舊是一個學術難題。例如交易量問題一直是比特幣的最大問題,那麼如何實現比特幣交易量擴容?簡單說應該有以下4種方式。

  • 改變比特幣採用的 PoW(工作量證明)共識機制。這相當於改變了比特幣的安全機制,或者說採用其他共識機制來進行比特幣的升級很難得到原有比特幣相關人員的認同。因為比特幣已經承載了太多的使用者和價值,甚至還承擔了整個數字貨幣和區塊鏈旗幟的重任。想要完全更改共識演算法,冒著不可預測的風險去擴容,無論是投資者、礦工、開發者,都不會輕易答應的。

  • 可以改變區塊大小,但是不能增得太大,因為資料儲存和傳輸工作量會大大增加。

  • 改變區塊生成間隔。這個間隔可以縮小,但是會使得比特幣的網路出現大量的孤塊和分叉,造成大量的算力浪費和安全隱患。

  • 修改資料儲存規則,相同大小的區塊能承載更多交易。

隔離驗證就是一種能夠在不增加區塊大小的前提下增加交易容量的方法。

前文介紹過,比特幣的一筆交易大概250位元組,主要資料包括以下2個部分:

  • 轉賬記錄,也就是交易方和交易額;

  • 使用者有權利做這筆交易的證明,這個證明是一組數字簽名。

實際上,比特幣的簽名資料很大。粗略估計,簽名大概佔了交易大小的2/3。

這樣,我們就可以把交易裡所有的簽名單拉出來,然後把所有的簽名打包放在資料塊的後面,可以節省大約2/3的空間。也就是說,每筆交易都被分成了2部分:交易和見證(簽名)。交易部分只有100位元組左右,於是一個1MB的區塊裡面能放10 000筆交易(原來是4000筆),然後,所有的見證部分,大約1.5MB〜2MB,都被放到了後面。

採用了隔離驗證技術的新節點當然可以接受這種資料格式,而舊節點雖然不能識別資料塊後面的見證部分,但它們仍舊會認為前面的部分是合法的區塊。這樣透過軟分叉就可實現隔離見證的升級。採用這種隔離驗證的方法,大約可以讓比特幣提高2〜3倍的交易量。

除此之外,隔離驗證還修復了比特幣一個被稱為“可變性”(Malleability)的缺陷。比特幣的簽名方式比較複雜,其簽名只針對 UTXO,並不包含交易裡的所有資訊。這樣的話,攻擊者可以改變交易裡的資訊,也可以改變交易 ID,但簽名資訊仍然有效。隔離見證將簽名資訊從交易中提出來,可以針對整個交易簽名,使得比特幣的交易不能改變,交易 ID 可以固定。更重要的是,可以更容易地實現一個叫作“閃電網路”的技術。

閃電網路是比特幣的一個不改變主鏈結構的擴容機制,簡單說就是一個在鏈上提供擔保的鏈下交易機制。實際上就是在比特幣上籤署一個協議,在比特幣主鏈以外再架設一個通道,使用者的幣存在這個通道上可以進行快速支付。閃電網路是一個去中心化架構的網路,和傳統的交易所有本質區別。

例如你經常給某個人轉錢,你不用每次都把交易上傳到比特幣的鏈上。你們雙方可以先在比特幣上籤署一個協議,交一筆保證金,然後只要你們之間轉賬的總額不超過保證金,轉賬就可以私下進行,而這個協議保證如果對方耍賴了,你可以憑著轉賬記錄上傳到區塊鏈上把屬於你的錢拿走,不用再次透過對方授權。這種方式其實和主鏈交易沒有可比性,它完全是另一種交易形式,提供了另外一種支付手段。閃電網路可以將一部分交易挪到鏈下進行,減輕了主鏈的負擔。

在交易過程中,閃電網路允許建立“微支付渠道”,類似交易雙方建立一個交易鏈,多筆比特幣交易在無須與主鏈進行互動的情況下,仍能安全地進行。這些在通道中的支付交易速度極快,與當前的比特幣支付需要冗長的交易驗證時間不同,交易鏈中的交易只有最後一筆需要真實地進入比特幣區塊鏈。如果任何一方終止合作,或者說在約定的時間內沒有響應,該通道可以被關閉。重要的是,這種支付是可路由的,它是跨越多跳路徑建立的專門通訊管道。

相較於為每一個新的合約方建立一個渠道,你可以維持一些渠道,連線少數良好的安全中介機構,並透過他們來完成交易。這就是簡單的支付通道背後的思路。目前已經存在這種支付通道。你可以一直向某人傳送可替換的交易,每次額度比上一次大一點點,一旦達到某種條件,通道被終結,只有最後一筆支付向全網廣播。

事實證明,只需要少量幾乎沒有爭議的比特幣升級,人們就可以生成更加通用的支付通道,它允許雙向支付,也允許“條件支付”。條件支付允許使用者構建一個支付網路。實際上,使用者可以透過安全和非信任依賴的方式設定一些條件,例如“如果張三支付了李四,我就支付給張三”。一些事情發生之後,使用者的錢包就會自動向比特幣網路廣播這個條件支付交易,然後等待。

從理論上來講,這種分散式小額支付網路(閃電網路)可以將比特幣的日交易量擴充到數十億筆,並且極少地使用到區塊鏈,以及僅需少量的交易費。

當然這種閃電網路的機制也存在安全漏洞,如果在這個通道里的交易在未得到主鏈的確認之前出現安全問題,將會導致一些交易無法確認,造成財產損失。

閃電網路論文提出了生成通道和支付網路的機制。它也是如今比特幣創新的一個熱點。

側鏈是以錨定比特幣為基礎的新型區塊鏈,就像美金錨定到金條一樣。比特幣在區塊鏈裡相當於是貨幣體系的黃金地位,具有最去中心化、最多分佈節點、最公平區塊鏈。側鏈是以融合的方式實現加密貨幣金融生態的目標,而不是像其他加密貨幣一樣排斥現有的系統。利用側鏈,我們可以輕鬆地建立各種智慧化的金融合約,如股票、期貨、衍生品等。使用者可以有成千上萬個錨定到比特幣上的側鏈,特性和目的各不相同,所有這些側鏈依賴於比特幣主區塊鏈保障的彈性和稀缺性。比較著名的比特幣側鏈是 Rootstock 和 BlockStream 推出的元素鏈。

4、基於 DAG 的提速技術

DAG(Directed acyclic graph),有向無環圖,是計算機領域一個常用的資料結構。因為獨特的拓撲結構所帶來的一些特性,它經常被用到處理動態規劃、導航中尋求最短路徑、資料壓縮等場景中。

第一次提出 DAG 跟區塊鏈結合是在 Nxt 社羣,可以發現 DAG 最初出現就是為了解決區塊鏈的效率問題。比特幣的效率一直比較低,基於PoW共識下的出塊機制是一個原因,由於鏈式的儲存結構,整個網路中同時只能有一條鏈,導致出塊無法併發執行。社羣有人提出用 DAG 的拓撲結構來儲存區塊,這個時候更多還是類似側鏈的解決思路,不同的鏈條儲存不同型別的交易,降低出現“雙花”的可能,在之後某個節點需要合併的時候,幾個分支再歸併到一個區塊。

透過以上設想我們可以改變區塊的鏈式儲存結構,變成區塊 DAG。在區塊打包時間不變的情況下,網路中可以並行地打包n個區塊,網路中的交易就可以容納n倍。

這時候 DAG 跟區塊鏈的結合還是停留在側鏈的思路,不同型別的交易可以並行在不同的鏈條進行,達到提升效能的目的。這時候的 DAG 還是有區塊的概念。

但是區塊的概念其實也是妨礙我們提升效率的關鍵因素。那麼,可不可以沒有區塊的概念呢?為什麼一定需要區塊呢?能否讓每一筆交易直接參與維護全網的交易順序?這樣交易被髮起後直接跳過打包區塊的階段,直接融入全網,如此達到所謂的“無區塊”(blockless)效果。這樣確實連打包交易出塊的時間都省去了,DAG 最初跟區塊鏈的結合就是為了解決效率問題,現在不用打包確認,交易發起後直接進入確認網路,理論上效率自然提高很多。

自此,以 blockless 獨樹一幟的 DAG 區塊鏈雛形基本形成。其中 IOTA 和 Byteball 在市場上的表現最為耀眼。DAG 系的區塊鏈有些概念很有趣,瞭解這些概念更容易理解 DAG 技術。

DAG 與鏈式結構的本質區別在於非同步與同步通訊。DAG 透過將事務操作進行非同步處理來增加網路吞吐量,採用某種傳播演算法在節點間傳送操作日誌,並透過某種機制(IOTA 每次驗證前2條交易,並計算一個 PoW 代表權重)將一個權重賦給該操作。相比起同步操作的鏈式結構,DAG 結構與任何非同步機制一樣,能夠帶來的提升在於吞吐量,但是產生的問題則在於無法有效預測交易被確認的時間與週期。

DAG 網路一個重要的問題就是解決網路寬度。DAG 網路中,每筆交易被確認,都需要連結到已經在網路中存在的並且比較新的交易;如果都選擇網路中比較早的交易,會導致網路寬度過寬,新的交易難以得到確認。理想的狀態是,新的交易發起時,選擇網路中已經存在並且比較新的交易做連結確認,這樣網路的寬度保持在一定範圍,能讓新的交易有足夠快的確認時間。DAG 的主要特點如下:

  • 交易速度快:DAG 摒棄了區塊概念,交易直接進入全網中,所以交易速度預期比基於 PoW 和 PoS 的需要出塊的區塊鏈會快很多;

  • 無須挖礦:DAG 把交易確認的環境直接下放給交易本身,無須由礦工打包成區塊後同意交易順序。所以 DAG 網路中沒有礦工的角色;

  • 無手續費:交易發起只需要做簡單的 PoW 工作量證明,整個網路中的 PoW 都是發起交易者自己做的,而不是交給礦工,所以發起交易無須手續費;

  • 需要見證節點:DAG 需要見證人機制的存在,這一部分不管是 DPoS、PoS、PBFT,大家最終都會在效率、安全性上尋求一種平衡。

5、其他提速思路

目前區塊鏈效率問題比較突出,但是筆者相信隨著時間的推移會有更多的新技術產生,提速可以從以下幾個方面來考慮。

  • 網路頻寬:網路頻寬的發展會進一步允許更好更先進的分散式共識機制的產生;

  • 硬體速度:包括各種 CPU、GPU 等硬體速度的不斷提高會大大提高區塊鏈的效率;

  • 共識演算法:目前的演算法都有缺陷和不足,將逐步發展,協議也將不斷完善;

  • 併發執行:鏈狀結構理論上缺乏併發機制,類似 DAG 之類的非同步併發技術也將不斷完善;

  • 資料格式:區塊鏈裡儲存的資料格式可透過壓縮技術儲存,提高區塊鏈的執行效率。

系統升級維護問題

1、硬分叉史記

以太坊:2017年成功實施的“拜占庭”硬分叉,透過對底層協議的升級建立新的規則,來完成對整個系統的效能提升和功能增設。2017年10月16日,以太坊官方宣佈,“拜占庭”在以太坊第437萬個區塊高度成功實施硬分叉,將協議升級後調整了區塊獎勵,減小區塊大小,併為平臺上包括區塊鏈隱私性等問題引入了零知識證明等解決方案,完成了開發人員打造更為適合去中心化應用生態環境的技術目標。

a)以太坊(ETH)和以太經典(ETC)

The DAO 計劃基於以太坊智慧合約建立一個眾籌平臺,於2016年5月正式釋出,截至當年6月,募集資金超過1.6億美元。之後,The DAO 被駭客利用智慧合約的漏洞,轉移了市值五千萬美元的以太幣。為了挽回投資者資產,以太坊社羣投票表決決定將更改以太坊程式碼,希望索回資金。為此,以太坊在第1,920,000區塊進行硬分叉,回滾所有以太幣(包括被駭客佔有的)。

但是,有一部分人認為以太坊這種做法違背了區塊鏈的去中心化和不可篡改精神,堅持在原鏈上挖礦,從而形成兩條鏈:一條為不承認回滾交易的鏈—以太經典(ETC),一條為承認回滾交易的鏈—以太坊(ETH),各自代表不同的社羣共識以及價值觀。分叉時持有以太幣的人在分叉後會同時持有 ETH 和 ETC。

以太霧(ETF)是以太坊在2017年12月14日分出的公有鏈,主打霧計算的創新技術,增加了分散式儲存和分散式計算的能力,擁有縮短網路延遲、節省計算資源、減小核心網路壓力的優勢,同時帶來更高的可靠性。

b)比特幣黃金

比特幣黃金(Bitcoin Gold,BTG)是在2017年10月25日左右的又一次比特幣硬分叉產物。比特幣黃金是對大礦工們集中算力的一種對抗,比特幣礦工越來越多地使用定製的 ASIC 來挖礦,但 ASIC 價格昂貴,只有大量買進時才會降低價格,所以大礦工們可以透過較低價大量買進 ASIC 來獲得巨大的算力,導致比特幣網路的算力被集中。比特幣黃金將使用一種新演算法來避免情況惡化。

2、系統升級維護難題和分叉

區塊鏈系統的升級維護包括硬體和軟體兩個方面

硬體方面將隨著技術的發展而逐漸完善,隨著區塊鏈的發展,將有更多的區塊鏈硬體裝置湧現,包括礦機、晶片、區塊鏈硬體節點,以及各種應用相關類硬體出現。比如基於區塊鏈系統設計的各種物聯網裝置、智慧電錶、水錶、氣表、手機以及各種穿戴裝置等。

軟體方面的升級主要包括以下幾個方面。

  • 資料結構:例如比特幣現金(BCH)從1MB區塊改為8MB區塊就是一種資料結構的升級;

  • 共識演算法:隨著系統的執行,最初設計的共識演算法滿足不了系統日益發展的需求時可以修改共識演算法,帶來的將是系統的升級;

  • 加密演算法:演算法問題是區塊鏈安全的核心,再安全的演算法也是百密一疏,因此隨著駭客技術的進步將不斷催生加密演算法的改進和升級;

  • 應用升級:系統的應用發生改變時也面臨升級問題;

  • 漏洞修補:任何軟體系統將不斷完善,尋找自身漏洞並不斷完善。

以上任何一種型別的修改都將可能導致分叉的出現。當然分叉也包括人為因素,因為畢竟區塊鏈網路是由人來控制的。分叉後不可避免地會出現新、舊鏈之間的資料協調以及使用者的分流問題。

以上內容,就是區塊鏈行業的常見問題分析。那麼,關於以太坊的安全、擴容、可擴充套件性、協議等方面仍存在的問題又該如何解決?

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;