公有鏈的幾大挑戰
毫無疑問,區塊鏈技術非常具有潛力。

去中心化交易所、預測市場、資產管理平臺僅是區塊鏈研發人員們在該領域探索的一小部分。
令人興奮的是,在ICO中募集數十億美金,並推動2017年整個幣價行情上漲。說其中有炒作成分,也是真的。
我也沒有其他意思,這些“炒作”確實也是向主流使用者進行了推廣宣傳。而且,現在每當我我談到“比特幣”或者“以太坊”時,大家也大概有點了解,不會再拿疑惑的眼光看著我。
即便如此,我們也不能忽視一個問題:區塊鏈的幾大技術痛點,使得它目前並不適合大範圍推廣使用。
我相信終有一天這些難關一定會被攻克。但是,作為研發人員和投資者,我們需要更客觀一點。要知道,區塊鏈需要很多年的摸索,才能真正進行大規模推廣。
目前,主要的技術痛點是:
1.可擴充套件性受限(Limited scalability);
2.隱私權受限(Limited privacy);
3.缺乏正式合同保障(Lack of formal contract verification);
4.儲存空間受限(Storage constraints);
5.不可持續的共識機制(Unsustainable consensus mechanisms);
6.缺乏治理和參考標準(Lack of governance and standards);
7.工具不足(Inadequate tooling);
8.量子計算威脅(Quantum computing threat);
9.其他… …
在這篇文章中,我將詳細說說這些技術痛點,並針對這些痛點提出一些解決方案。
作為研發人員,我認為我們要把注意力從ICO,轉移到面臨的技術難題上,因為後者才是阻礙我們前進的關鍵。
(本文表述可能並不詳盡,或有錯漏,歡迎批評指正。)
1.可擴充套件性受限
目前,所有的公有鏈共識機制都有一個致命的弱點:每一個全節點都必須參與每一筆交易。
為什麼呢?要知道區塊鏈本質上是“去中心化”的 ——沒有一箇中心機構有權利和義務去維護這個系統。相應的,網路中的每個節點有責任去參與到每一筆交易,並通過儲存整個交易的副本來保護系統。
雖然去中心化的共識機制為我們帶來了諸多好處:安全保障,政治中立,合規審查等等。但是,這會犧牲一部分的可擴充套件性。去中心化限制了區塊鏈可以處理的交易數量,從而限制了網路中全節點數量。
這會有兩個影響:
1.吞吐量低:區塊鏈的交易處理量有限;
2.交易處理緩慢:處理交易的用時很長。例如,比特幣生成區塊的時間是10分鐘,而以太坊只需要14秒。在高峰時期,比特幣處理一筆交易的時間會更長。與使用Square或Visa的時間進行比較,比特幣不佔優勢。
結果是,公有鏈必然要在吞吐量低和權利集中之間做個取捨。
換句話說,區塊鏈中交易量的增加,也增加了對節點的儲存、寬頻和算力的需求。這會使得整個系統會變得非常笨重,最終可能只有少數節點能應對這些需求。發展到極致的話,就會引發集中化的風險。
這樣就又依賴第三方的集中式系統了。而本來,我們想要建立的是一個在去中心化的、每秒處理數千個交易的系統。
解決可擴充套件性問題
理想情況下,我們希望區塊鏈,在具有與比特幣和以太坊相似或更好的安全屬性的同時,能夠在不需要每個節點參與處理每筆交易的情況下執行。換句話說,我們需要一種機制來限制節點數量,同時又能保護網路安全。這聽起來可能很簡單,但在技術上卻很困難。
可擴充套件性問題亟待解決。目前,業內許多開發團隊都已經開始研究解決方案。
鏈下支付渠道(Off-chain payment channels)
微支付渠道(micropayment channel)背後的理念是讓大多數交易可以在鏈下完成。它本質上是通過一種機制,把原在鏈上的交易放在鏈下完成。區塊鏈純粹作為沉降層(settlement layer),只用處理最終結算,這樣其負擔就減輕了。
這樣可以提高處理效率,從而解決我們前面提到的吞吐量問題。此外,由於交易在支付通道啟動時就已發生,而不用等區塊被核對,這也解決了交易速度的問題,消除了典型的交易延遲。
有代表性的微支付通道包括雷電網路(Raiden Network)和閃電網路(Lightning Network)。
分片技術(Sharding)
分片概念的背後是,區塊鏈的所有內容被分成不同的“碎片”,每個碎片都由網路中不同的節點儲存和處理。每個節點只處理總體資料的一小部分,可以並行處理。除了需要在分散式節點中維護安全之外,區塊鏈分片和傳統資料庫的分片十分類似。
鏈下計算(Off-chain computations)
這相當於狀態通道(state channels),但範圍更大。其本質就是希望以一種安全和可驗證的方式,將計算放在鏈下執行(而不僅僅是代幣傳輸)。這可以提高交易吞吐量,也解決了鏈上計算成本過高的問題。基於以太坊的TrueBit就是一個好的例子。
DAGs
“DAG”即“有向非迴圈圖(Directed Acyclic Graph)”。這是一種由頂點和邊組成的資料圖結構。(頂點是圖上的一個點,邊是從一個頂點到另一個頂點的路徑。)DAG保證無法從任何頂點開始,並遵循最終返回到該頂點的一系列邊緣(即沒有迴圈)。這樣我們就可以得到一個按拓撲順序排列的節點(或頂點)序列。
像IOTA’s Tangle這種基於DAG的協議,就是完全拋棄全域性線性區塊鏈,而使用DAG資料結構來維護系統。為了保護網路安全,這些協議不要求每個節點以線性方式處理每筆交易。
頻譜協議(SPECTRE)是另一種基於DAG的協議,使用區塊的有向非迴圈圖,並行地挖掘DAG塊,以提高吞吐量,縮短交易處理時間。
其他基於DAG的協議,我會在之後的文章裡提及。這裡要說的是,這些協議還處於起步階段,沒有得到大規模的推廣和使用。坦率地說,它們有一些限制/弱點,尚不確定是可行的解決方案。
2.隱私權受限
考慮到區塊鏈交易並不需要繫結身份資訊,似乎更加具有隱私性。世界上的任何人都可以建立一個匿名錢包,並用它進行交易。
但是,事實並非如此。
一方面,匿名性無疑是區塊鏈的最大特點之一:交易被記錄、儲存到公共賬本中,並且僅與一個由數字和字母組成的賬戶地址相連。由於這些賬戶地址沒有繫結使用者真實資訊,所以無法追蹤到實體個人。
然而,這種表象是具有誤導性的。誠然,只要地址和個人沒有聯絡,那麼個人的隱私是絕對安全的。但是,一旦有人找到其中聯絡,祕密就會揭曉。好比說,執法機構承認他們能夠在調查期間對比特幣使用者進行追蹤。於是使用者就不再處於匿名狀態。這樣也就打破了區塊鏈交易完全匿名這個大前提。
這是如何完成的?
商家在網站上的跟蹤器和cookie很容易造成交易資訊的洩露,任何人(包括政府、執法機構和惡意使用者)都可以輕而易舉地利用這些資訊。
此外,自從有了像以太坊這樣的區塊鏈平臺,使用者可以通過智慧合約,實現交易之外的更多功能。所有關於智慧合約的細節都是公開的,包括髮送人、接收方、交易資料、執行程式碼,以及儲存狀態。
將關鍵的商業資料上傳到區塊鏈中,黑客、競爭對手或其他未經授權的各方可以檢視這些資訊,大多數公司都對這點很有顧慮。考慮到:
1.電子病歷,這是一個非常隱私和敏感的資訊。將這些資訊公開放在區塊鏈上,侵害到病人的隱私,一般人都無法接受。
2.身份驗證資料,像身份證號這類的身份資訊,就不能放在公共的智慧合約中。
3.證件管理,像如密碼和金鑰就不能放在公開的、不受保護的智慧合約中。
4.財務檔案,如資產表或員工工資,絕不能和易於追蹤的賬戶地址有關聯。
5.等等。
對於關心隱私和個人權益的個人、組織和行業來說,隱私權是底線。許多區塊鏈和加密貨幣的擁護者都有共同的期許,希望能夠建立一個無需信任的、不受審查的系統,讓每個人都可以參與記賬。矛盾的是,我們使用的是一個公共的、易於追蹤的分類帳。(每次想到這件事,我就頭疼!)
針對隱私權的解決方案
以下是不同開發團隊做的努力。
橢圓曲線(ECDHM)地址
談ECDHM地址之前,需要先了解Diffie-Hellman金鑰交換。Diffie-Hellman金鑰交換背後的理念是,它在雙方之間建立了一個共享的金鑰。這可以讓使用者在區塊鏈網路上實現私密資訊的交流。
具體怎麼操作呢?
傳送方和接收方可以公開共享ECDHM地址,然後利用它們共享的金鑰匯出匿名比特幣地址。這些比特幣地址只能由擁有這個金鑰的人發出。唯一公開可見的是可重用的ECDHM地址。因此,使用者不必擔心交易被跟蹤。
ECDHM地址方案的一些例子包括Peter Todd的 Stealth Addresses、Justus Ranvier的BIP 47可重用支付程式碼(reusable payment codes)、Justin Newton的BIP 75帶外地址交換(Band Address Exchange)等。然而,這些計劃的有效實施和實際使用卻很少。
混合器(Mixers)
混合器背後的想法是,一群人可以將他們的付款合併到一個池中,在私人賬簿中記錄收支情況。然後,當池中的資金被花掉時,每一筆付款的來源就會變得模糊不清。任何人都可以看到支付的金額和收款人,但理論上,具體授權支付的人是無法追蹤的。混合服務的一個例子是CoinJoin。
不幸的是,混合器不是一個可靠的解決方案。因為研究人員很容易就能識別CoinJoin交易。並且,有證據顯示,只要花費32,000美元,攻擊者就可以破壞交易的匿名性。而且,這種攻擊的成功率為90%。此外,研究人員還證明,混合器對Sybil攻擊和Denial-of-Service提供的保護很少。
更令人不安的是,混合器所謂的私人分類賬卻需要由某個中央實體管理,這意味著它需要一個可信的第三方來“混合”交易。
由於CoinJoin不是強制的,使用者可以自己選擇。因此很少人選擇參與這種混合池。參與混合的使用者很少,很容易就可以追蹤出某一特定輸出的來源。
混合解決方案的另一個例子是CoinShuffle,這是一種去中心化的混合協議,由德國薩爾蘭大學的一組研究人員開發。CoinShuffle試圖改進CoinJoin,不再需要可信的第三方來完成混合交易。
門羅(Monero)
另一種保護隱私的方法是建立一個私有的加密貨幣,比如門羅。與許多代幣不同的是,門羅不是比特幣的分叉。相反,門羅是基於另一種協議:CryptoNote。
門羅提供了“環簽名”方案。
環簽名是一種群簽名,組中的每個簽名者都有一個私鑰和一個公鑰。不同於由單個簽名者使用私鑰“批准”的傳統簽名模式,環簽名證明是來自固定組的一個簽名者批准了交易,而不公開具體簽名的人的資訊。
零知識證明
零知識證明是指在不直接透露資訊的情況下,向驗證者證明這些私密資訊。換句話說,程式上,將資訊輸入,而驗證時不向驗證者透露任何資訊。零知識證明提供了基本的原語,可以用來建立隱私保護機制。例子包括:
案例1:挑戰 / 反應小遊戲(Challenge / response games)
在執行挑戰 — 反應認證時,一方提出一個問題(“質詢”),而另一方必須提供一個有效的答案(“響應”)來進行認證。這個“遊戲”可以用來驗證鏈上交易。如果特定交易無效,則另一個節點可以選擇“提請注意”。這就需要提供一個可驗證的證據,來確認交易是無效的。如果做不到這一點,就會產生一個“質疑”,要求交易的發起人產生一個“響應”來證明交易是有效的
讓我們看一個例子:假設“Bob”有訪問某資源的唯一通道。Alice現在也想來訪問這個資源。於是Bob提出了一個挑戰,也許是“52w72y”。Alice必須用一串符合Bob提出的挑戰的字元來回應。使用僅有Bob和Alice知道的演算法,才能找到對應答案。此外,Bob每次都會發出不同的挑戰。所以就算Alice知道某次的答案也沒用。
挑戰 / 反應遊戲已經在以太坊這樣的區塊鏈中使用了。但是,我們需要軟體庫和工具來使這種驗證方案更易於使用。
案例2:Example 2: zkSNARKs
zkSNARKs到底是什麼?讓我們分解一下定義:
1.ZK=Zero-knowledge,即“零 + 知識”。不需要了解資訊,就能證明資訊的存在。
2.SNARK: Succinct Non-interactive Adaptive ARgument of Knowledge,即“簡潔的、非互動式的、適應性的知識論證。”
3.簡潔的(Succinct):指可以快速驗證的簡潔證據。
4.非互動的(Non-interactive):指不要求驗證者與證明人互動。證明人可以先公佈證據,之後驗證者再進行驗證。
5.適應性的知識論證(Adaptive ARgument of Knowledge):指計算知識的證明。
之後我會在其他文章種詳細說說zkSNARKs,但在這裡,我將跳過技術細節。總而言之,zkSNARKs是非常有希望確保隱私性的,但有幾個注意事項:
1)SNARKs是資源密集型的。
2)SNARKs允許使用者證明他們有訪問某個祕密的許可權,但使用者有責任維護該祕密,並在需要時使其可用。
3)SNARKs有一個設定階段(setup phase)。在此階段,要確保算力固定。算力固定的大前提時可信環境:不僅要求使用者信任準備設定的人員,而且還意味著SNARKs總是需要一個準備階段,所以是所有計算裝置都適用。
案例3:zkSNARKs + Zcash
Zcash是一種基於zkSNARKs的保護隱私的加密貨幣。Zcash所謂的“遮蔽交易”,所有使用過的代幣都會在一個匿名集裡。遮蔽交易使用“遮蔽地址”,這要求傳送方或接收方生成零知識證明,允許其他人在不接觸交易資訊的情況下,可以對交易資料進行驗證。
Zcash確實是個值得關注的專案。
案例4:zkSNARKs + 以太坊
在以太坊一次協議升級中(Metropolis),開發人員能在鏈上對zkSNARKs進行驗證。
對於一個zkSNARKs + 以太坊,我們可以做什麼呢?一些合同變數可以成功轉化為私有變數。不再需要把隱私資訊儲存在鏈上,只需要使用者用SNARKs來證明自己遵守合同的規則,就可以由使用者自己儲存資訊。
在以太坊上,SNARKs不能實現的是獨立於使用者之外的、完全自主的隱私權。由於以太坊上的SNARKs需要使用者儲存鏈下資訊,那麼如果那個使用者缺席,就無法找到對應的資訊。
案例5:zkSTARKs
zkSNARKs有一個新出生的表親:zkSTARKs。其中“T”指的是“transparent(透明的)”。
zkSTARKs解決了zkSNARKS的主要弱點之一:依賴使用者來進行儲存。zkSTARKs更簡單,因為完全依賴雜湊和資訊理論,並且,由於不再使用橢圓曲線(elliptic curves)或指數假設(exponent assumptions),因而對量子計算機更安全。
總的來說,儘管在保護隱私方面取得了驚人的進步,但仍有許多工作要做。零知識證明庫需要進行大量的研究和摸索,才能成熟;zkSNARK和zkSTARK需要在各種公鏈上進行試驗。Zcash需要在現實場景中,進行大規模地證明和使用。這一切都還有很長的路要走。
程式碼混淆(Code Obfuscation)
另一種隱私機制是程式碼混淆。其目的是找到一種混淆程式P的方法,使混淆器能夠產生第二個程式O(P)=Q,這樣,如果給定相同的輸入,P和Q返回相同的輸出,但是Q沒有揭示P的內部資訊,這允許我們將隱藏的私有資料儲存在Q的內部,例如密碼、身份證號碼等,但在程式中仍然使用它。
雖然研究人員稱,將混淆做到完全不透明的不可能的,但是有一個較弱的混淆概念,被稱為不可區分的混淆,這是可能實現的。不可區分混淆器O的定義是,如果採用兩個等價的程式A和B(即A或B的相同輸入產生相同的輸出),並計算O(A)=P和O(B)=Q,則對於沒有訪問A或B的人來說,不能判斷P來自A還是B。
最近,Craig Gentry,Amit Sahai,等人完成了不可區分的程式碼混淆。然而,該演算法需要較高的成本。
如果這個架構能夠得到改善,其潛在好處是巨大的。在數字世界裡最有意思的一個特點是,要在公開的鏈上合約中儲存隱私資訊。
比如說,儲存了使用者Coinbase密碼的以太坊智慧合約。然後,我們可以編寫一個程式,這樣如果合同的某些條件得到滿足,合同將使用某個中間節點啟動一個帶有Coinbase的HTTPS會話,使用使用者的密碼登入,並進行交易。由於合同中的資訊將被混淆,因此中間節點或區塊鏈中的任何其他參與者將無法修改正在傳輸的請求或確定使用者的密碼。
預言者(Oracles)
在區塊鏈空中,Oracles可以在智慧合約和外部資料來源之間傳遞資訊,這就相當於一個數據載體。因此,保持資訊隱私性的一種方法就是使用Oracles從外部資料來源獲取私有信息。
可信執行環境(Trusted Execution Environments)
可信環境(TEE)是主處理器的一個安全區域。它保證內部載入的程式碼和資料的機密性和完整性。這個受信任的環境與面向使用者的作業系統並行執行,但其目的是要比面向使用者的作業系統更加私有和安全。
早期的研究和開發正在進行中,以確定如何利用它們來實現區塊鏈上的隱私。我個人非常高興有如此多的人正在解決這些問題。當然,我們也希望更多專家能夠參與進來。
3.缺乏正式合同驗證(Lack of formal contract verification)
對智慧合約的核查仍然是一個尚未解決的巨大問題。首先,在談“正式驗證”(formally verify)之前,讓我們先來理解一下“正式證明”(formal proof)是什麼。數學中的“正式證明”是指由計算機使用數學的基本公理和原始推理規則,來進行檢驗的數學證明。
更廣泛地說,與軟體程式有關的正式驗證,是確定程式是否按照規範執行的方法。通常,這是用一種具體的規範語言來完成的,用於描述函式的輸入和輸出應該如何關聯。換句話說,我們首先宣告一個關於程式的不變數,然後我們必須證明這個陳述。
比如說Isabelle就是一個證明助手,允許用正式語言表達數學公式,並提供了在邏輯微積分中證明這些公式的工具。另一種規範語言是Coq,它是一種編寫數學定義、可執行演算法和定理的形式語言。
那麼,為什麼要對智慧合約中的程式進行正式驗證呢?
首先,智慧合約是不可變的,這意味著一旦它們被放到以太坊主網,就不能再進行更新或修復。因此,我們需要事先確保所有程式執行正常。此外,智慧合約和裡面的儲存內容是公開的,任何人都可以檢視;任何人也可以呼叫智慧合約的公共演算法。雖然這提供了公開性和透明度,但它也使智慧合同成為黑客的目標。
事實上,無論您採取了多少預防措施,都很難使智慧合約完美無缺。以以太坊為例,由於使用到EVM指令,使得驗證EVM程式碼極其困難。這使得為以太坊構建正式的驗證解決方案變得更加困難。無論如何,正式驗證是減少錯誤和攻擊的有力方法。它確保了比傳統方法(如測試、同行評審等)更高的更高的安全性。我們迫切需要更好的解決方案。
正式核查的解決方案
目前解決方案很少,我僅知道一個非常早期的例子,由以太坊基金會的正式驗證工程師Yuichi Hirai完成的。他能夠核實幾個智慧合約,包括一份小的“契約”,產生一些結果。雖然很小,但這是我再這種定理證明環境中的第一個“真實”契約。
正如 Yoichi自己說的…
“驗證結果遠非完美,我仍能發現很多問題。我之所以將其公之於眾,是因為這個專案很好地說明了,使用機器輔助邏輯推理,來驗證智慧合約所需的工作量(和詳細程度)。在這一點上,如果執行一份10萬美元以上的智慧合約,並且能控制時間表,我會考慮從事這種研發(另一種選擇是先嚐試價值較小的合同)。”
還有一些像Tezos這樣的團隊,它們完全放棄使用Solity語言,放棄使用EVM作為VM,而是構建自己的智慧合約程式語言和VM,以便於正式驗證。
無論是對EVM進行全面改革,使正式驗證變得更容易,還是構建一種天生更容易驗證的全新語言,我們都需要在這項工作中投入更多的工作。我們需要更多的研究人員參與。我們需要各種可能的程式語言的正式驗證庫和標準。
4.儲存受限(Storage constraints)
建在公鏈上的大多數應用程式,都需要某種儲存解決方案。(使用者身份、財務資訊等)。
但是,在公鏈資料庫中儲存資訊,意味著資料是:
1)由網路中的每個全節點儲存。
2)無限期儲存,因為區塊鏈資料庫是隻能增加、不可撤銷的。
因此,資料儲存給分散式網路帶來了巨大的負荷,每個全節點都必須將越來越多的資料儲存起來。因此,對於去中心化應用程式來說,儲存仍然是一個很大的問題。
儲存解決方案
有幾個專案正在試圖將資料進行分片,並以分散式方式在節點(即分散式儲存)中儲存。這裡的基本前提是,不是每個節點儲存所有東西,而是有一組節點在它們之間拆分或“分發”資料。一些專案的例子包括:
1.Swarm:Swarm是一種點對點檔案共享協議,它允許使用者將程式碼和資料儲存在Swarm節點中,這些節點連線到以太坊上。之後可以在區塊鏈上對此資料進行交換。
2.Storj: 其中的檔案和資料被分割、加密,分發到多個節點,這樣每個節點只儲存一小部分資料:因此,形成“分散式儲存”。然後,Storj Coin(SCJX)用於支付儲存費用,並對儲存使用者部分檔案 / 資料的節點進行激勵。
3.IPFS: 另一種P2P超媒體協議,它提供高吞吐量、內容地址塊儲存模型和內容地址超連結。本質上,它允許檔案的分散式儲存,同時提供檔案歷史資訊,並可以刪除重複檔案。
4.Decent:Decent是一個去中心化的內容共享平臺,允許使用者上傳、分享他們的視訊、音樂、電子書等,去除對第三方的依賴。使用者可以跳過這些第三方,來以一種更實惠的方式訪問內容,相應地,承載這些內容的節點則會獲得獎勵。
5.不可持續的共識機制
區塊鏈是“無需信任的”。使用者不必在交易中信任任何人,不需要任何第三方提供信任背書。
共識機制(consensus protocol)可以協調節點共同工作,使系統免受攻擊。共識機制不是比特幣和區塊鏈首創的。在1992年,Dwork和Naor建立了“工作證明機制”(POW)。在這種系統中,使用者可以在不需要信任的情況下,生成算力證明,並獲得資源。這個系統本來是用來對付垃圾郵件的。AdamBack後來在1997年建立了一個類似的系統,名為Hashcash。然後在2003年,Vishnumurthy等人第一次使用POW來確保貨幣的安全,但這時,token不是作為一種通用貨幣,而是用來維護檔案交易系統。
五年後,中本聰(Nakamoto)拿工作證明機制來確保比特幣安全。這一共識機制使比特幣成為第一個全球通用的去中心化分類賬。
工作證明機制
工作證明機制中,節點需要去解決一些計算困難、驗證簡單的問題。礦工要進行算力競爭來獲得獎勵,但是這種計算的成本很高。礦工擁有的算力越多,他們在機制中的“權重”就越大,獲得的獎勵也就越多。
工作證明使比特幣成為第一種真正被廣泛接受的去中心化數字貨幣。再不需要任何信任第三方的情況下,它解決了“雙重支出問題”(double-spend problem)。然而,工作證明並不完美,要建立一個更可行的共識機制,仍然需要大量的研究和開發。
工作證明存在哪些問題?
1.硬體越專業,越有優勢
工作證明的一個缺點是需要專業的挖礦硬體。2013年,被稱為“專用積體電路”(ASIC)的裝置被設計成專門用於比特幣的礦機,因為它可以提高10至50倍算力。從那以後,使用普通計算機的CPU和GPU進行挖礦已經沒有優勢了。挖礦的唯一方法就是自己製造ASIC,或從ASIC製造商那裡購買。這與區塊鏈“去中心化”的本意背道而馳,因為每個人挖礦的成功機率變得不平等。
為了緩解這一問題,以太坊選擇了將其PoW演算法(Ethhash)順序記憶困難。這意味著該演算法是經過設計的,因此計算當前值需要大量的記憶體和頻寬。大記憶體需求和高頻寬要求,使得即使是超級快的計算機也很難同時發現多個非連續變數。這降低了集中化的風險,併為節點創造了更公平的競爭環境。
當然,這並不是說在未來不會有一個以太坊的ASIC。對於PoW演算法來說,專用硬體仍然是一個巨大的風險。
2.礦池集中化
礦池背後的概念是,不再是單個礦工挖掘單個區塊,而是挖掘一個池。然後,這個池就會給他們一個相稱的、一致的獎勵。礦池的問題是,由於它們在網路中有更多的“權重”,所以大礦池的回報比單個使用者的差異要小。隨著時間的推移,一些池開始控制大部分網路,集中的一組池也將繼續獲得更多的權重。例如,目前排名前五的礦池擁有近70%的總雜湊算力。這是很可怕的。
3.能源浪費
礦工們花費大量的算力,但算力本身沒有實際價值。根據Digiconomist的比特幣能源消耗指數,比特幣目前的年用電量大約為29.05TWh,佔全球總用電量的0.13%。也就是說,比特幣挖礦需要的電力,比159個國家使用的電力還要多。
隨著使用工作證明的比特幣等公鏈不斷增加,越來越多的能源將被浪費。如果目標是讓公鏈擴大到數百萬使用者和交易,那麼能源浪費和計算成本將會是很大的阻礙。
共識機制解決方案
有用的工作證明
解決能源浪費問題,有一種方法是使算力變得有用。例如,礦工們正在花費他們的算力來解決困難的人工智慧演算法,而不是解決工作證明所要求的隨機SHA 256問題。
權益證明機制(Proof-of-stake)
解決挖礦中心化問題,另一種方法是完全取消挖礦,轉而採用其他機制來計算共識機制中每個節點的權重。這就是權益證明機制的目的所在。
他們沒有投入計算能力,而是投入了金錢。正如Vitalik所指出的那樣,現在起到關鍵作用的,不再是CPU功率而是一張“選票”。
權益證明機制去除了對硬體的需求,因此不受上面提到的硬體中心化問題的影響。此外,由於礦工不需要花費大量算力,因此,權益證明本質上是更節能的。
然而,世上沒有免費的午餐。權益證明有其自身的挑戰。更具體而言,這些挑戰包括:
1)Nothing-at-Stake problem:權益證明機制中,當公鏈出現分叉,無論分叉是偶然的還是惡意的,節點最好的選擇是在每條鏈上同時挖礦。因為節點挖礦無需花費算力,只需要投票就行了。這也就意味著,最終無論哪條鏈贏了,礦工都可以獲得回報。(即:“沒什麼風險”問題要防止礦工在分叉鏈上挖礦。)
2)遠端攻擊(Long-range attacks):當POW公鏈出現分叉時,礦工會在分叉鏈區塊頭之後生成一些區塊。礦工在分叉鏈上生成的區塊的越多,就越難趕上主鏈。因為它需要集合網路一半以上的算力,才能對主鏈構成威脅。然而,在權益證明中,參與者可以嘗試獲取過去參與者的金鑰,然後在一個新的鏈上生成數百萬個塊,這使得使用者很難知道哪個區塊鏈是“正確的”。
3)Cartel formation:在一個由經濟激勵的去中心化系統中,真正的風險是寡頭壟斷。正如弗拉德·贊菲爾(Vlad Zamfir)所指出的,“加密貨幣非常中心化。挖礦業也是如此。寡頭壟斷競爭是許多“現實生活”市場的常態。少數相對富裕的節點之間的協作,要比大量相對貧窮的節點之間的協作容易得多。在這種背景下,Cartel formation完全在意料之中。
用權益證明機制來代替工作證明機制,我們需要解決Nothing-at-Stake problem和遠端攻擊問題,並且不引入新的風險。
在這些問題方面,像Tendermint和以太坊這樣的團隊已經取得了很大的進步。Tendermint是第一批將傳統BFT研究應用於區塊鏈的公司之一,它為區塊鏈建立了一個可行的權益證明機制引擎。然而,Tendermint有它自己的缺點(另一個帖子的話題)。類似地,以太坊在實現權益證明方面也取得了很大的進步,但現實情況是,這對現實使用場景用處不大。
與工作證明不同的是,權益證明是未經證實的,理解的人也更少。要了解不同設計背後理念,則需要進一步的研究和實驗。因此,很有必要在這些早期工作的基礎上,建立一個更高效、快速、安全的共識機制。
6.缺乏治理和參考標準
不言而喻,一個公共的、去中心化的區塊鏈是沒有權利中心的。一方面,這為我們提供了一個完全無需信任的、開放的和無許可權的系統;另一方面,協議沒有安全的升級途徑,也沒有制定和維護標準。
雖然我們在進行區塊鏈技術研發時,會盡可能實現去中心化,但我們仍然需要一些開發人員和其他相關人士的參與,來商定新的標準、特性,並對系統進行升級。目前還不清楚具體如何實施,特別是要保證不會出現任何程度的集中化問題。
例如,以太坊目前的現狀是,通常有一兩個開發人員在特定標準或特性方面起主導作用。雖然目前來看,這是有用的,但這種模式也有缺陷。首先,效率低:如果領導這項工作的開發人員忙碌起來,或者忘記在幾天或幾周內做出反應,那麼進展就會停滯。在沒有權威中心的環境中制定標準很困難,而且人們也無法迅速達成共識,特別是隨著社群的發展,這種難度會越來越大。
另一種方法是讓它完全開放和去中心化。然而,這已經證明是無效的。
需要有更好的方法。
Tezos是一個公鏈的例子,它的目標是利用鏈上治理,從協議內部建立升級協議的能力。這只是一個想法,並沒有被實踐或被證明。
總之,區塊鏈治理是一個非常棘手的問題。在中心與去中心之間找到平衡,將是以後開發需要思考的關鍵問題。
7.工具不足
工具能使開發人員的工作更加高效,所以非常重要。
目前用於區塊鏈開發的工具是很不夠的。在區塊鏈上開發功能協議或分散式應用程式是一項艱鉅的任務(即使對最有經驗的開發人員來說,也是如此)。
作為一個區塊鏈的開發人員,下面是我個人覺得很重要的工具:
1.一個指標良好、具有所有必要外掛的IDE,用於智慧合約開發和區塊鏈分析。
2.一種編譯工具和編譯器。
3.一個優質的配置工具。
4.技術文件:實際存在的,或對現在各種API和框架仍適用的。
5.精緻的測試框架。迫切需要更多的測試的選項和實驗。我見過太多的智慧合約在未經檢驗的情況下,就投入使用。不管怎麼樣,必要的檢測是不能少的,特別是在涉及大量資金的情況下。
6.除錯工具。對程式碼進行除錯,就像蒙著眼睛在漆黑的隧道里找金子。我之前是做web開發的,能用除錯工具逐行瀏覽程式碼,大大減少了我的工作量。如果沒有這種除錯工具(或者類似的工具),除錯那麼大的工作量確實讓人沮喪。我們迫切需要工具,來簡化隔離和診斷問題。
7.測井工具(Logging tools)。和上面一樣。
8.安全審計。這是個大問題。我聽說過以太坊有一個著名的安全審計服務,Open Zepplin。儘管他們確實在這方面做了很多工作,但區塊鏈是一個可以通過智慧合約籌集數十億美元資金的行業,其需要的不止是一個單獨的初創公司。公司和工程師需要建立更先進的工具和服務,需要更多的安全專家來加入。之前,大家沒有怎麼關注智慧合約的安全問題,只有當兩個Parity攻擊或者說DAO攻擊之後,人們才關注了一些。之後,大家吧原因歸結到智慧合約開發者身上,甚至有的人直接怪罪以太坊核心團隊。我覺得這是不公平的。開發人員沒有責任去對其程式碼進行安全稽核。這就像叫斯蒂芬·庫裡(Stephen Curry)去做自己的會計一樣。不該是這個邏輯。我們需要安全工程師和研究人員的專業知識。我們需要投資者把注意力放到他們的資金上,並使他們的投資能夠促進智慧合約和區塊鏈的安全效能的發展。
9.區塊探索者和分析者。對於以太坊,有一個Etherscan。對於比特幣,我們有像Blockchain.info、BlockExplorer或BlockcyPHER這樣的探索者。這些都是社群的巨大努力。事實上,我也經常使用Etherscan。但是深究起來,這些遠遠不夠。有各種各樣有趣的資料顯示,我們可以、也應該對公鏈進行更多分析。
8.量子計算威脅(Quantum computing threat)
數字貨幣和密碼學面臨的威脅之一是量子計算機的問題。
雖然今天的量子計算機仍然有些侷限,但並不總是這樣。可怕的事實是,最流行的公鑰演算法可以被足夠大的量子計算機攻擊。
重要的是,當我們設計和構建區塊鏈以及它背後的密碼學時,我們需要考慮如何使這些屬性成為量子證明(quantum-proof)。
量子證明解決方案
我並不是這方面的專家,我知道的是,目前,後量子密碼學的研究集中在六種方法上:基於格的密碼學(Lattice-based)、多元密碼學(Multivariate cryptography)、基於雜湊的密碼學(Hash-based cryptography)、基於密碼的密碼學(Code-based cryptography)、超橢圓曲線等密碼學(Supersingular elliptic curve isogeny cryptography)和對稱金鑰量子電阻系統(Symmetric key quantum resistance systems)(如AES和斯諾3G)。
不管最後的解決方案是什麼,構建量子驗證的密碼解決方案都是最重要的。
需要牢記的各種挑戰
1.我們需要更強大的解決方案,來實現多個鏈(如比特幣、以太坊、萊特幣等)之間的通訊及交易。
2.我們需要在區塊鏈內建立更好的金鑰管理系統,來支援頂層的應用程式。
3.我們需要更有效的簽名方案和其他密碼系統,使得低配裝置可以安全高效的實現這些操作。
4… …
總結
目前的情況讓我很擔憂,大家的注意力和資金都投入到了ICO。而研發技術的科研人員們,卻經常面臨資金短缺的問題。
不幸的是,許多人在利益驅使下,會有意忽視當前的研發困境 —— 這其中不乏一些有影響力的科研人員和行業意見領袖。
我未來一年的目標是繼續:
1)提高對這些問題的認識。
2)花大量心力尋找解決方案。
3)激勵其他開發者和研發人員加入我的行列。
不管當前的投資環境是否是泡沫,我都堅信區塊鏈的未來會很光明。我們幫助研發人員度過難關,就相當於幫助區塊鏈走出眼前的困境。我們希望投資者尋求並資助這些真正有實力的科研專案,幫助這些技術團隊走出困境。
本文作者 Preethi Kasireddy ,來源於 medium.com, 由 Laura Li 翻譯。
發文時比特幣價格 ¥43420.31