乾貨|公有鏈的8大挑戰及其解決方案

image

毫無疑問區塊鏈技術有巨大的潛力。在 2017 年裏,人們高昂的熱情爲 I-C-O 募集了數百億資金,大大提高了加密貨幣市場的規模。算法

然而,另外一面卻沒有獲得足夠重視:區塊鏈存在一些技術壁壘(technical barriers),這致使難以有效地將它應用到主流人羣裏。這些技術壁壘包括:數據庫

  • 可擴展性的限制安全

  • 隱私保護的限制cookie

  • 缺少合約的形式化驗證網絡

  • 存儲限制數據結構

  • 難以證實的共識機制app

  • 缺少治理和標準框架

  • 缺少開發工具less

  • 量子計算機的威脅分佈式

  • 還有...

在這篇文章裏,我會一一闡述這些技術壁壘,並分享一些可行的解決方案。

1

可擴展性的限制

當前公有鏈的共識協議都存在這樣的限制:網絡中的全節點參與者須要處理所有交易。

爲何會這樣?由於區塊鏈本質上是「去中心化」——這意味着不存在一箇中心團體來保護和維持系統。取而代之,網絡的每一個節點都會處理每筆交易並維持全狀態副本,經過這種方式來保護系統。

去中心化共識機制的關鍵優點是安全保證、政治中立和抵抗審查等。然而,這是以擴展性爲代價換來的,由於去中心化限制了區塊鏈裏全節點可處理交易的數量。

實質上這帶來了兩個影響:

  • 低吞吐量:區塊鏈可處理交易的數量十分有限

  • 緩慢的交易速度:處理一個區塊的時間很長。好比比特幣的區塊時間是 10 分鐘,以太坊的區塊時間大約是 14 秒。在高峯期裏花費的時間甚至更長。相較之下,Square 和 Visa 等服務的交易是即時確認的。

所以,公有鏈須要在低交易吞吐量和高中心化之間作一個權衡。

換句話說,隨着區塊鏈大小的增長,網絡裏全節點所需的存儲、帶寬和計算能力也會增長。當到達某個時刻,就只有少數節點才能提供足夠資源來處理區塊——這會帶來中心化風險。

在那時,咱們會回到需信任少數大節點的中心化系統裏。然而咱們想要的系統是:它既能每秒處理上千筆交易,又能帶來必定程度的去中心化。

可擴展性的解決方案

理想狀態下,咱們但願咱們設計的區塊鏈有着與比特幣和以太坊相近或更好的安全性,但同時又不但願網絡裏每一個節點都要處理超過必定比例的交易。換句話說,咱們須要一種機制,來限制驗證交易的節點數量(注:由於減小驗證節點數量能夠提升吞吐量),同時又保證網絡裏的每筆交易都是合法可信。這聽起來很容易,但在技術上很是困難。

可擴展性是平臺走向成功的一個巨大障礙。下面是一些不一樣開發團隊正在努力研究的解決方案。

鏈下交易通道(off-chain payment channel)

該方案是在鏈下使用微支付通道網絡處理大部分交易。區塊鏈只做爲清算層來處理一系列交易的最終清算,從而來減小底層區塊鏈的負擔。

這解決了咱們前面討論的吞吐量問題,區塊鏈可處理交易的數量可提高一個量級。除此以外,因爲交易都是在支付通道里處理的,無需等待區塊確認,所以交易速度問題也獲得瞭解決,消除了時延。

Raiden Network 和 Lightning Network 都是微支付通道網絡的實例。

分片(Sharding)

分片的思想是把區塊鏈的總體狀態分割成不一樣的「片」,每部分狀態都由不一樣的節點存儲和處理。每一個分片都只處理總體狀態的一小部分,所以能夠作到並行處理。區塊鏈分片就像傳統數據庫的分片同樣,但還需額外考慮如何在去中心化的節點集合裏維持安全性和合法性。

鏈下計算(off-chain computation)

這個方案和狀態通道很類似,但適用範圍更廣。其主要思想是以一種安全可證的方式,在鏈下處理一些在鏈上執行代價很高的計算。把計算和證實處理移到鏈下的獨立協議裏,能夠提升交易吞吐量。一個實例是以太坊的 TrueBit。

DAG

DAG 是有向無環圖(Directed Acyclic Graph)的縮寫,這是一種有頂點和邊的圖結構。DAG 能夠保證從一個頂點沿着若干邊前進,最後不能回到原點。由此咱們能夠給頂點進行拓撲排序。

image

DAG

一些 DAG 協議,如 IOTA 的 Tangle,丟棄了全局的線性區塊概念,使用 DAG 數據結構來維持系統狀態。爲了保證網絡安全,這些協議須要用某種新方法,使節點不須要用線性方式處理每一筆交易。

另外一種 DAG 協議 SPECTRE protocol,使用了區塊的 DAG 技術,能夠並行挖礦,從而帶來更大的吞吐量和更快的交易確認時間。

DAG 技術還處在早期階段。老實說,它們也存在一些須要被解決的底層限制和缺陷。

2

隱私保護的限制

區塊鏈上的交易並無直接關聯到你的身份,這看起來彷佛是能夠具備隱私保護的。每一個人均可以匿名地生成錢包,並進行交易。

然而,事實遠沒有這麼簡單。

區塊鏈技術的巨大前景之一是假名(pseudonymity)的使用:交易被記錄在公共帳本里,可是它們又與由數字和字母組成的地址保持關聯。由於無需將真實世界的身份信息關聯到地址上,交易的發起者彷佛是不可能被追蹤的。

然而,這種想法是錯誤的。沒有將假名關聯到我的信息,這確實能夠保護隱私。然而只要有人創建了連接,則隱私就再也不是祕密。一個例子是執法機構坦言他們在調查時,能夠識別比特幣用戶,對他們進行反匿名(deanonymizing)。

這是怎麼發生的呢?

商業網站的 Web Tracker 和 cookies 會輕易泄露與交易相關的信息。任何人,包括政府、執法機構和惡意用戶均可以利用這些信息。

此外,區塊鏈平臺(如以太坊)的用戶與智能合約進行着複雜交互。智能合約的全部細節,包括髮送者和接受者、交易數據、執行的代碼和合約內部存儲的狀態,都是公開。

大部分公司都不會考慮把重要的商業數據上傳區塊鏈中,由於黑客、競爭者和其餘非受權組織均可以輕易看到這些信息。思考一下:

  • 電子醫療記錄是十分隱私和敏感的信息。

  • 身份識別數據如身份證不能在智能合約上公開。

  • 憑證管理如密碼和密鑰都不能放在公開和不安全的智能合約中。

  • 金融文件如股權結構表或員工薪資都不能公開。

  • 這樣的例子不勝枚舉

隱私保護對於我的、組織和企業來講,都是一個本質挑戰。許多人爲區塊鏈和數字貨幣着迷,是由於這個去信任和抵抗審查的系統能帶來金融上的變革。矛盾的是,咱們在使用的是一個公開且容易被追蹤的帳本。

隱私保護解決方案

下面是一些不一樣開發團隊正在努力實現的方案。

Elliptic Curve Diffie-Hellman-Merkle (ECDHM) addresses

理解 ECDHM 地址以前,你須要理解 Diffie-Hellman 密鑰交換,其背後的思想在於雙方之間創建一個共享的祕密。在公開網絡裏,這能夠被用於交換祕密信息。

這是如何作到?

發送方和接收方共享 ECDHM 地址,而後經過共享的祕密將其轉化成比特幣地址。該比特幣地址只會被擁有該祕密的人知道。惟一公開的東西只有可重複使用的 ECDHM 地址。所以,用戶不用擔憂交易會被追蹤。

image

Conceptual diagram that illustrates the general idea of the key exchange by using colors instead of very large numbers (Source: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)

ECDHM 地址方案包括 Peter Todd 提出的 Stealth Addresses,Justus Ranvier 提出的 BIP47 Reusable Payment Codes 和 Justin Newton 提出的 BIP75 Out of Band Address Exchange。然而,沒有一個方案獲得實際應用。

混合器(Mixer)

混合器的思想是把交易混到一個池裏,收支平衡由池中的私有帳原本記錄。當池中的資金被花費後,原始交易就變得難以追蹤了。觀察區塊鏈的人能夠看到池的支付金額和收款人,可是沒法追蹤交易的發起人。混合器服務的一個例子是 CoinJoin。

image

Source: https://en.wikipedia.org/wiki/CoinJoin

不幸的是,混合器不是一個可靠的解決方案。研究者能夠肯定 CoinJoin 裏的交易,他們證實,攻擊者只要花費 $32,000,就能以 90% 的成功率識別交易。而且,研究者還證實混合器幾乎沒法抵禦女巫攻擊(Sybil attacks)和拒絕服務攻擊(Denial-of-Service attacks)。

另外一個使人不安的地方是,須要經過一個相對中心化的實體來維護混合器的私有帳本,這意味着須要一個可信第三方來「混合」交易。

CoinJoin 不是默認交易方法,所以不多人蔘與到進混合池裏,這致使匿名集合十分小。在人數少的集合裏,能夠很容易確認交易的來源。

另外一種混合器方案是 CoinShuffle,這是德國薩爾布呂肯大學研究團隊設計的去中心化混合協議。CoinShuffle 嘗試解決 CoinJoin 裏須要可信第三方來混合交易的問題。

門羅幣(Menoro)

不一樣於其餘的山寨幣,門羅幣不是比特幣的分叉,而是基於另外一種協議 CryptoNote。門羅幣的最大特點是環簽名(Ring Signature)方案。

環簽名是一種羣簽名,羣裏的每一個簽名者都擁有一對私公鑰對。不像傳統的加密簽名證實交易是單個簽名者用私鑰籤的,羣簽名證實交易是羣裏的某我的簽名的,但不會暴露具體是誰籤的。

零知識證實(Zero-knowledge proofs)

零知識證實是指,在不揭露特定知識的狀況下,證實者(prover)能夠說服驗證者(verifier)他們知道該知識。換句話說,零知識的輸入是祕密的,證實者不會向驗證者揭露任何知識。零知識證實能夠被用在隱私保護方案裏。例子包括:

  • 例子1:質詢/響應比賽

在計算機安全裏,質詢-響應認證(challenge-response authentication)是一個協議族。在協議裏,一方進行提問(「質詢「),另外一方給出正確的答案(」響應」)以得到受權。在區塊鏈裏,這個「比賽」能被用於驗證交易。若是某一交易是非法的,其餘節點會注意到其非法性。這就須要提供可驗證的證實(verifiable proof),來證明交易是非法的。若是驗證失敗,則會產生一個「質詢」,要求交易的發起人生成一個「響應」,來證實交易是合法的。

這裏有一個例子:假設只有 Bob 能夠訪問某些資源(如他的車)。Alice 如今也想訪問它們(如開這輛車去雜貨店)。Bob 發起一個質詢,假設爲「52w72y「。Alice 必須用一個字符串來響應 Bob 發起的質詢。使用一個只有 Bob 和 Alice 知道的算法,這是找到答案的惟一方式。此外,Bob 每次發起的質詢都會不同。知道先前正確的響應,並不能給 Alice 帶來任何的優點。

image

質詢/響應比賽已經被使用在區塊鏈,如以太坊裏了。然而,咱們須要相應的函數庫和工具,來使這一類的認證方案更容易被使用。

  • 例子2:zkSNARKs

zkSNARKs 究竟是什麼?讓咱們來逐步分解其定義:

zk=zero-knowledge(零知識)。不須要信息自己的條件下,能夠證實該信息存在。

  • SNARK:Succinct Non-interactive Adaptive ARgument of Knowledge

  • 簡潔(Succinct)表示證實簡潔,能夠被快速驗證。

  • 非交互(Non-interactive)表示驗證者不須要和證實者進行交互。取而代之,證實者會預先公開它的證實,而驗證者能夠檢查它的正確性。

  • 適應性知識論證(Adaptive argument of knowledge)表示某些計算的證實。

儘管我但願有一天能夠寫一篇文章介紹 zkSNARKs,但這裏我會跳過技術細節。zkSNARKs是一個的構建隱私保護的組件,它使人振奮且具備遠大前景,但有幾點須要注意:

  • SNARKs 是資源密集型的

  • SNARKs 能讓用戶證實他們擁有訪問某個祕密的權限。但用戶有職責維護祕密,讓它在須要的時候能被訪問到。

  • SNARKs 須要一個啓動階段,來準備須要證實的電路或運算。該階段由一組可信團體預先進行。這不只意味着你須要信任進行該啓動階段的團體,還意味着不適合用 SNARKs 進行任意的運算,由於總須要一個準備階段。

  • 例子3:zkSNARKs + Zcash

Zcash 是基於 zk-SNARKs,具備隱私保護特色的加密貨幣。在 Zcash 所謂的「私密交易(shielded transactions)」裏,每個被使用的幣都帶有一組匿名集合。私密交易使用「私密地址(shielded addresses)」,它要求發送方或接收方生成一個零知識證實,以在不泄露交易信息的狀況下,容許其餘人驗證交易。

image

Zcash transaction diagram

Zcash 無疑是一個值得關注的有趣項目。

  • 例子4:zkSNARKs + Ethereum

在以太坊下一個要升級的協議 Metropolis 裏,開發者將能夠在鏈上高效地驗證 zk-SNARKs。

咱們能夠在支持 SNARKs 的以太坊裏作什麼呢?能夠把某些合約變量被設爲不可見。祕密信息能夠與那些遵照使用 SNARKs 的合約規則的用戶存儲在一塊兒,而不是直接存儲在鏈上。每一組用戶羣自身都須要一個可信的啓動階段,這會增長一些用於準備階段的開銷。但一旦電路被設置好,它就能夠被任意數量的交易使用。

在支持 SNARKs 的以太坊裏,你沒法把隱私與用戶分開,即作不到自治性隱私(autonomous privacy)。因爲以太坊的 SNARKs 依賴用戶在鏈下維護密鑰,所以若是沒有這些用戶,就沒有地方能夠找到這些祕密。

  • 例子5:zkSTARKs

ZK-SNARKs 有一個更年輕更閃耀的同胞兄弟:ZK-STARKs,其中「T「表示」透明(transparent)「。ZK-STARKs 解決了 ZK-SNARKs 的一個主要缺陷:須要依賴一個可信的啓動階段。因爲 ZK-STARKs 只依賴哈希和信息論,所以它更簡易;因爲再也不使用橢圓曲線和指數假設,面對量子計算機時它更加安全。

總而言之,儘管在上述的零知識證實隱私保護方案的前沿研究中,咱們取得了驚人的進步,但仍然有許多工做須要去作。咱們須要對零知識證實的函數庫進行實證研究和實踐檢測,使其成熟。咱們須要在不一樣公鏈上對 zkSNARKs 和 zkSTARKs 進行實驗。在真實世界的場景裏,Zcash 則須要在擴展性上給出使人滿意的使用案例。咱們離這些仍有很長的路要走。

代碼混淆(Code Obfuscation)

另外一種隱私保護機制是代碼混淆。該方案要找到一種方式來混淆程序 P,混淆器(obfuscator)會產生第二個程序 O(P)=Q,使得在給 P 和 Q 相同的輸入時,產生相同的輸出。可是 Q 不會揭露與 P 內部構造相關的任何信息。這使得咱們能夠在 Q 內部隱藏如密碼和身份證等的私密信息,但同時在程序裏使用這些信息。

雖然研究者已經證實徹底的黑盒混淆器是不可能實現的,但不可區分混淆器(indistinguishability obfuscation)是能夠實現的,這是一種概念上弱化的混淆器。不可區分混淆器 O 的定義是,若是你使用兩個同等的程序 A 和 B(如把相同值輸入到 A 或 B 裏去產生相同的輸入)計算獲得 O(A)=P 和 O(B)=Q,則在沒法進入程序 A 或 B 的狀況下,則在計算上分辨 P 來自於 A 仍是 B 是不可行的。

image

最近,研究者 Craig Gentry, Amit Sahai 等人完成了不可區分代碼混淆器。然而,該算法的計算開銷十分高昂。

若是開銷問題能夠獲得改善,則能帶來巨大的潛在好處。

舉個例子,假設以太坊的智能合約裏有  Coinbase 的密碼。則咱們能夠寫出這樣一個程序:當智能合約知足了特定條件後,合約經過中間節點初始化與 Coinbase 的 HTTPS 會話,使用密碼進行登陸,而後執行交易。因爲合約裏的信息被混淆了,所以中間節點或區塊鏈的其餘參與者都無法修改發出的請求和獲取用戶密碼。

預言機(Oracle)

在區塊鏈世界裏,預言機是指在智能合約和外部數據源之間傳遞消息的角色。它在鏈上智能合約和鏈下外部數據源之間充當數據的運輸者。所以,一種保護信息隱私性的方法是使用預言機從外部數據源中取出隱私數據。

可信任執行環境(Trusted Execution Environments)

可信任執行環境(TEE)是位於主處理器裏的一個安全區域。在 TEE 里加載運行的代碼和數據會獲得隱私性和完整性的保護。TEE 能夠與面向用戶的操做系統並行運行,但比後者具備更好的隱私性和安全性。

image

Source: https://www.slideshare.net/JavierGonzlez49/operating-system-support-for-runtime-security-with-a-trusted-execution-environment-phd-thesis

3

缺少合約的形式化驗證

智能合約的形式化驗證仍然是一個未解決的巨大問題。首先,讓咱們經過「形式化證實(formal proof)」來理解「形式化驗證(formally verify)」的意思。在數學上,「形式化證實」是一種數學證實,計算機能夠經過基本的數學千米和推理規則(inference rules)來證實它。

在程序方面,形式化驗證是一種判斷程序是否能按預期運行的方法。具體的規約語言能夠來描述輸入和輸出之間的函數關係。也就是說,若是聲明瞭關於程序的一個不變式(invariant),則咱們應該證實聲明的確實是不變式。

規範語言的一個例子是 Isabelle,它是一種通用證實輔助,能夠在形式化語言裏表達數學公式,還提供了工具在邏輯運算上來證實這些公式。另外一種規範語言是 Coq,這是一種用來書寫數學定義、可執行算法和定理的形式語言。

對於編碼在智能合約裏的程序來講,爲何形式化驗證十分重要?

一個緣由是智能合約是不可逆的,這意味着一旦將它們部署到主網絡裏,你就沒法升級或修改它們。所以在部署和使用智能合約以前,須要保證一切都不會出錯。並且,智能合約是可公開訪問的,存儲在智能合約裏的內容對任何人可見;每一個人均可以調用智能合約裏的公開方法。這帶來了開放性和透明性,但也會吸引黑客攻擊智能合約。

不管你多麼當心謹慎,寫出一個沒有 bug 和徹底可信的智能合約都是十分困難的。此外,在以太坊上,因爲 EVM 指令的設計方式,驗證 EVM 代碼也很困難。所以在以太坊上很難找到一種形式化驗證的解決方案。但不管如何,形式化驗證都是一種減小 bug 和攻擊的強有力手段。比起傳統方法(如代碼測試和同行審查),它在很大程度上能夠保證正確性。咱們急切地須要一種更好的解決方案。

4

存儲限制

公有鏈上的大部分應用都須要解決存儲問題(如用戶身份、金融信息等)

然而,在公有鏈上存儲信息意味着數據:

  • 被網絡裏的每個全節點存儲着

  • 被無限期存儲着,由於區塊鏈數據只增不減,且不可逆。

在去中心化網絡裏,每個全節點會存儲愈來愈多的數據,所以數據存儲帶來了巨大的開銷。這將致使存儲變成區塊鏈應用的巨大瓶頸。

存儲解決方案

下面介紹一些項目,它們使用不一樣的策略將數據分割成分片(shard),並以去中心化的方法將其存儲在參與節點裏。這些方法的基本前提是不讓每一個節點都存儲全部數據,而是將數據分散後,存儲在一個節點集合裏。一些工程實例:

  • Swarm:Swarm 是以太坊上的 p2p 文件分享協議。你能將程序代碼和數據存儲在主鏈以外的 swarm 節點裏,這些節點與以太坊主鏈會保持鏈接。你能夠在鏈上交換這些數據。

  • Storj:文件和數據一開始會被分片和加密,而後被分散並存儲到多個節點裏,每一個節點只存儲數據的一小部分。這是一種「分佈式存儲」。Storj 代幣(SCJX)被用來支付存儲和激勵存儲文件和數據的節點。

  • IPFS:這是一種 p2p 超媒體(hypermedia)協議,它的特色是高吞吐量,基於內容尋址(content-addressed)的區塊存儲模型和超連接。本質上,它能以一種持久化和去中心化的方式存儲文件,同時還有歷史版本控制和減小相同文件副本的特色。

  • Decent:Decent 是一個去中心化的內容分享平臺,容許用戶在沒有可信第三方時上傳和分享它們的做品(如視頻、音樂和電子書等)。存儲內容的節點會被獎勵手續費,用戶能夠跳過中介,經濟實惠地接觸到這些內容。

  • ... 還有更多

5

難以證實的共識機制

區塊鏈具備」去信任(trustless)「的特色。用戶不須要信任任何人。無需信任帶來了自治、抵抗審查、真實性和無需受權等一系列引人注目的性質。

這種用來保證區塊鏈不易受攻擊者破壞的機制,被稱爲「共識協議」。對於比特幣和其餘區塊鏈來講,共識協議並非一個新東西。

在 1992 年,Dwork 和 Naor 就建立了第一個「工做量證實(proof-of-work)「系統,用來在無需任何信任的狀況下訪問資源。這個系統被用來解決垃圾郵件問題。Adam Back 後來在 1997 年建立了名爲 Hashcash 的類似系統。 在 2003 年,Vishnumurthy 等人首次採用 proof-of-work 來保護貨幣,但其代幣不是做爲通用貨幣來使用,而是用於維護點對點文件的交易系統。

5 年後,中本聰(Nakamoto)用 proof-of-work 機制發明了一種有價值的貨幣,即比特幣。這種底層共識協議使得比特幣成爲第一個在全球使用的去中心化帳本。

工做量證實(proof-of-work)共識

PoW 機制的思想是讓問題很難解決,但驗證很容易。礦工須要使用算力來進行巨大開銷的計算,而比特幣系統用比特幣和交易費來獎勵給出答案的礦工。礦工擁有的算力越多,則他們在共識上的「貢獻」越大。

PoW 共識使得比特幣成爲第一個在全球使用的去中心化帳本。它無需可信第三方就能解決「雙花」問題。然而,PoW 不是完美的,仍然有許多人從事着研究和開發,試圖去構建更可靠的共識算法。

PoW 存在什麼問題呢?

  • 定製化硬件存在優點

PoW 的缺點是定製化硬件的使用。在 2013,一種名爲專用集成電路(application-specific integrated circuits, ASICs)的設備被設計來專門挖比特幣,能夠將效率提升 10-50 倍。從那時起,使用普通計算機的 CPU 和 GPU 來挖礦便變得無利可圖,挖礦的惟一方法是使用 ASIC 設備來挖。在區塊鏈裏,每一個人都應該能爲網絡的安全作貢獻,而 ASIC 的出現背離了「去中心化」的特色。

爲了緩解這個問題,以太坊選用的 PoW 算法(Ethhash)是線性內存困難(sequentially memory-hard)的。算法被設計成須要大量的內存和帶寬才能算出一個 nonce 值。即便是超高速計算機,也沒法在須要大量的內存和帶寬的條件下同時計算出多個 nonce 值。這減小了中心化的風險,爲節點建立一個公平競爭的環境。

固然,這不表示將來不會出現針對以太坊的 ASIC。定製化硬件對 PoW 算法仍然存在着巨大的威脅

  • 礦池中心化

用戶單獨挖礦時,收到區塊獎勵的機會是很小的。取而代之,他們都爲礦池挖礦。礦池按比例給礦工持續的回報。礦池算力在網絡裏佔的權重大,大礦池所得回報的方差比單一礦工低得多。隨着時間推移,少數礦池將控制大部分網絡,而中心化的礦池控制的算力隨着時間又進一步增長。如今,前 5 個礦池擁有接近 70% 的全網算力,這很嚇人。

  • 浪費電力

礦工消耗大量電力來計算 PoW 問題,然而對於社會來講,這些計算都是無價值的。根據  Digiconomist’s Bitcoin Energy Consumption Index 所示,當前比特幣每一年消耗的電力約爲 29.05TWh,大約佔全球消耗電力的 0.13%,超過了 159 個國家。

使用 PoW 共識的公有鏈消耗的電費都會愈來愈多。不可持續的電力浪費和 PoW 計算開銷不利於公有鏈將規模擴展到成千上萬的用戶和交易。

共識的解決方案

有意義的 PoW

一種解決電力浪費問題的方法是用 PoW 函數來解決某些有意義的問題。好比,讓礦工用計算資源去解決困難的 AI 算法,而不是解決隨機的 SHA256 問題。

Proof-of-stake

另外一種解決挖礦中心化的問題是徹底拋棄挖礦,在共識裏引入另外一種機制來每一個節點的貢獻。這就是 PoS 要作的事。

不像礦工使用算力,這裏使用」權益(stake)「。如 Vitalik 所說,將「一單位算力一張票(one unit of CPU power, one vote)「變成「一塊錢一張票(one currency unit, one vote)「。

PoS 消除了對硬件的需求,所以再也不有硬件中心化的問題。並且,礦工不再用消耗大量電力來解決 PoW 問題,PoS 本質上更節能。

然而,天下沒有免費的午飯。PoS 算法也有自身的挑戰,它們包括:

  • Nothing-at-Stake Problem:在 PoS 共識下,若是存在分叉(不管是由於意外或攻擊),節點最好的策略都是同時「挖」每條鏈。節點不須要消耗計算資源,只須要使用本身的錢來投票。這意味着不管哪條鏈勝出,礦工都會獲得獎勵。

  • Long-range attacks:若是礦工想在 PoW 鏈裏分叉,它得在主鏈最新區塊前幾個區塊開始挖。礦工往回得越多,就越難追上主鏈,這須要超過網絡一半的算力才能作到。然而,在 PoS 裏,因爲挖礦所需的東西只是權益,即錢,礦工能夠從成千上萬個塊以前開始分叉。礦工能夠輕易生成成千上萬的區塊,而用戶很難發現哪一條鏈纔是「正確」的鏈。

  • Cartel formation:在由經濟激勵治理的去中心化系統裏,一個真實存在的風險是共同合做(coordinated efforts)和寡頭的出現。就如以太坊研究者 Vlad Zamfir 所說,「數字貨幣都很集中,挖礦的算力也是這樣。在」真實世界「的市場中,寡頭競爭是常態。比起大量相對貧窮的驗證者,少數相對富有的驗證者之間的合做十分容易。卡特爾(Cartel)的出現是徹底能夠預期到的。」

爲了能夠有效地替代 PoW,咱們須要一種算法來解決 nothing-at-stake 問題和 long-range attake 問題,同時不引入新的共謀風險。

一些團隊,如 Tendermint 和以太坊,在解決這個問題上已經取得了許多進展。Tendermint 是經過設計 PoS 共識引擎將傳統的 BFT 算法應用到區塊鏈裏。然而,Tendermint 也有自身的缺陷。統一,以太坊也在 PoS 的實現上取得了很大的進展,可是在網絡裏仍沒有運行。

不像 PoW,PoS 未經檢驗且難以理解。爲了理解各種設計裏的不一樣權衡,須要進一步的研究和實驗。正因如此,咱們應該在前人的工做之上共同合做,研究出一個更有效、更快和更安全的共識系統。

6

缺少治理和標準

在去中心化的公有鏈,不存在中央集權和組織來作決策,這是毋庸置疑的。在另外一方面,每一個人都是管理者——這是一個徹底去信任、開發且無需受權的系統——然而在另外一方面,又不存在可以安全升級協議的方法,沒有人負責維護協議標準。

在維持區塊鏈技術的去中心化的同時,咱們仍然須要一個由生態裏開發者和其餘成員組成的組織,來對新標準、特性和升級達成共識。如何在沒有中心化組織(如以太坊基金會)的帶領下實現這個目標,仍然是個未知數。

例如,以太坊當前的特定標準和特性只由一兩個開發者來指導和決策。儘管這個模式可行,但仍存有缺陷。其中之一是不夠效率——若是領頭開發者太忙,或幾天幾周內忘記迴應,則標準的推動就會陷入停滯,無論這個標準對其餘參與構建區塊鏈的人來講是多麼重要。在沒有明確領導下制定標準,將帶來混亂,很難快速即便地對問題達成共識。在社區越大時,這種狀況越嚴重。

另外一種方法是徹底開放和去中心化區塊鏈。然而,這會使得自治十分低效,將帶來長久的危害。

咱們須要一種更好的方法。

Tezos 試圖經過鏈上治理(on-chain governance)讓區塊鏈擁有升級協議的能力,但這還是構想,還未被實現,也未被證實合理。

總之,治理區塊鏈是一個棘手的問題。在治理控制權的集中和分佈之間作好權衡,這是維持發展的關鍵所在。

7

缺少開發工具

製造充足的開發工具,這其實是開發者的職責,尤爲是對於想高效完成工做的開發者來講。

在當前區塊鏈生態系統裏,開發工具顯然沒法讓人滿意。即便是經驗豐富的開發者,在區塊鏈之上開發功能性協議或去中心化應用也是一項艱鉅的任務。

我從一個 Solidity 和區塊鏈開發人員的角度,列舉了一些生態裏缺少的工具:

  • 可以檢查代碼錯誤,且集成開發智能合約和區塊鏈分析所需插件的 IDE。

  • 有完整文檔,且容易使用的構建工具和編譯器。

  • 持續更新的 API 和框架技術文檔。

  • 測試框架。以太坊裏有一些可用的測試框架,如 Truffle,但咱們急需能提供更多選項和實驗的測試框架。我看到過許多智能合約未通過測試,卻存着數以萬計的美圓。在任何狀況下,缺少測試都不是一個能夠使人接受的選擇,尤爲是與大額資金相關時。舉例來講,BAT 的代幣銷售合約裏就沒有測試套件,但它卻在 24 秒內募集了 3600 萬美圓。任何理性的人都明白,若是合約能夠移動那麼多錢,那它極可能會遭受攻擊。

  • 調試工具。調試 Solidity 代碼就像在黑暗隧道里蒙着眼睛尋找金子。在開發網站時,我可使用調試器一行一行單步調試代碼。可是 Solidity 開發環境裏沒有相似的工具,這使人沮喪。咱們急需一種能夠隔離和診斷問題的易用工具。

  • 日誌工具。與上述相同。

8

量子計算機的威脅

量子計算機是密碼學和加密貨幣的潛在威脅之一。

儘管量子計算機目前只能解決特定類型的問題,但這種狀況不會一直持續。量子計算機能夠有效地攻破當前流行的公鑰算法,這聽起來很可怕,但事實如此。

在設計區塊鏈和底層的加密算法時,咱們應該考慮怎麼使它擁有抗量子的特性,這是很重要的。

抗量子解決方案

在我有限的認知裏,後量子算法的研究有六個不一樣的方向: Lattice-based cryptography, Multivariate cryptography, Hash-based cryptography, Code-based cryptography, Supersingular elliptic curve isogeny cryptography, 和 Symmetric key quantum resistance systems(如 AES 和 SNOW 3G)。

無論最終方案是什麼,探尋一種抗量子的密碼解決方案都是咱們首要關注的重點。

9

其餘挑戰

咱們須要一種跨鏈通訊的解決方案,使得咱們能在不一樣鏈(如比特幣、以太坊和萊特幣等)之間無縫進行通訊和轉帳。

咱們須要打造一套更好的密鑰管理系統,讓應用程序基於之上運行。

咱們須要更高效的簽名方案和密碼系統,使得它們能夠在低運算資源的設備上運行,同時又保證安全性。

還有...

10

總  結

I-C-O 吸引了太多的注意力和資金。與此同時,一些全身心投入解決這些問題的研究者和開發人員卻得不到足夠的支持。這不是一件好事。

更使人遺憾的是,許多人,包括一些領域內有影響力的開發人員和領袖在內,都由於金錢而選擇忽略這些問題。

在接下來一年裏,個人目標會:

  • 持續關注這些問題

  • 投入時間去思考解決方案

  • 鼓勵其餘研究者和開發者作一樣的工做

無論當前的投資環境是否存在泡沫,我都是區塊鏈堅決的信仰者。做爲開發者,咱們有義務投入精力去解決這些問題,將區塊鏈帶向主流人羣。同時咱們也須要投資者,來挖掘和支持這些工做。

(內容來源:知乎-趁風捲。文章首發:每日幣吹   本文是 Fundamental challenges with public blockchains 的非徹底翻譯。 原文做者 Preethi Kasireddy 是 Coinbase 的前員工,她寫的技術文章很是適合新手閱讀。)

如下是咱們的社區介紹,歡迎各類合做、交流、學習:)

image

相關文章
相關標籤/搜索