毫無疑問,區塊鏈技術非常具有潛力。
去中心化交易所、預測市場、資產管理平臺僅是區塊鏈研發人員們在該領域探索的一小部分。
令人興奮的是,在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),但范圍更大。其本質就是希望以一種安全和可驗證的方式,將計算放在鏈下執行(而不僅僅是代幣傳輸)。這可以提高交易吞吐量,也解決了鏈上計算成本過高的問題?;谝蕴坏腡rueBit就是一個好的例子。
DAGs
“DAG”即“有向非循環圖(Directed Acyclic Graph)”。這是一種由頂點和邊組成的數據圖結構。(頂點是圖上的一個點,邊是從一個頂點到另一個頂點的路徑。)DAG保證無法從任何頂點開始,并遵循最終返回到該頂點的一系列邊緣(即沒有循環)。這樣我們就可以得到一個按拓撲順序排列的節點(或頂點)序列。
像IOTA’s Tangle這種基于DAG的協議,就是完全拋棄全局線性區塊鏈,而使用DAG數據結構來維護系統。為了保護網絡安全,這些協議不要求每個節點以線性方式處理每筆交易。
頻譜協議(SPECTRE)是另一種基于DAG的協議,使用區塊的有向非循環圖,并行地挖掘DAG塊,以提高吞吐量,縮短交易處理時間。
其他基于DAG的協議,我會在之后的文章里提及。這里要說的是,這些協議還處于起步階段,沒有得到大規模的推廣和使用。坦率地說,它們有一些限制/弱點,尚不確定是可行的解決方案。
2.隱私權受限
考慮到區塊鏈交易并不需要綁定身份信息,似乎更加具有隱私性。世界上的任何人都可以創建一個匿名錢包,并用它進行交易。
但是,事實并非如此。
一方面,匿名性無疑是區塊鏈的最大特點之一:交易被記錄、存儲到公共賬本中,并且僅與一個由數字和字母組成的賬戶地址相連。由于這些賬戶地址沒有綁定用戶真實信息,所以無法追蹤到實體個人。
然而,這種表象是具有誤導性的。誠然,只要地址和個人沒有聯系,那么個人的隱私是絕對安全的。但是,一旦有人找到其中聯系,秘密就會揭曉。好比說,執法機構承認他們能夠在調查期間對比特幣用戶進行追蹤。于是用戶就不再處于匿名狀態。這樣也就打破了區塊鏈交易完全匿名這個大前提。
這是如何完成的?
商家在網站上的跟蹤器和cookie很容易造成交易信息的泄露,任何人(包括政府、執法機構和惡意用戶)都可以輕而易舉地利用這些信息。
此外,自從有了像以太坊這樣的區塊鏈平臺,用戶可以通過智能合約,實現交易之外的更多功能。所有關于智能合約的細節都是公開的,包括發送人、接收方、交易數據、執行代碼,以及存儲狀態。
將關鍵的商業數據上傳到區塊鏈中,黑客、競爭對手或其他未經授權的各方可以查看這些信息,大多數公司都對這點很有顧慮??紤]到:
1.電子病歷,這是一個非常隱私和敏感的信息。將這些信息公開放在區塊鏈上,侵害到病人的隱私,一般人都無法接受。 2.身份驗證數據,像身份證號這類的身份信息,就不能放在公共的智能合約中。 3.證件管理,像如密碼和密鑰就不能放在公開的、不受保護的智能合約中。 4.財務文件,如資產表或員工工資,絕不能和易于追蹤的賬戶地址有關聯。 5.等等。
對于關心隱私和個人權益的個人、組織和行業來說,隱私權是底線。許多區塊鏈和加密貨幣的擁護者都有共同的期許,希望能夠建立一個無需信任的、不受審查的系統,讓每個人都可以參與記賬。矛盾的是,我們使用的是一個公共的、易于追蹤的分類帳。(每次想到這件事,我就頭疼?。?/p>
針對隱私權的解決方案
以下是不同開發團隊做的努力。
橢圓曲線(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萬美元以上的智能合約,并且能控制時間表,我會考慮從事這種研發(另一種選擇是先嘗試價值較小的合同)?!?/p>
還有一些像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)激勵其他開發者和研發人員加入我的行列。
不管當前的投資環境是否是泡沫,我都堅信區塊鏈的未來會很光明。我們幫助研發人員度過難關,就相當于幫助區塊鏈走出眼前的困境。我們希望投資者尋求并資助這些真正有實力的科研項目,幫助這些技術團隊走出困境。
-
區塊鏈
+關注
關注
111文章
15562瀏覽量
105941
原文標題:公有鏈發展未來還有哪些挑戰?
文章出處:【微信號:scinaniot,微信公眾號:司南物聯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論