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

物聯(lián)網(wǎng)未來發(fā)展趨勢如何?
FOC電機(jī)控制究竟該如何學(xué)?
設(shè)備管理系統(tǒng)新范式:區(qū)塊鏈存證+動態(tài)權(quán)限管理

人工智能、云計(jì)算、區(qū)塊鏈三者區(qū)別對比
ADS1298R PACE_OUT1和PACE_OUT2這兩條引腿究竟是輸入還是輸出?有什么用?怎樣使用?
多個TCL5615通過菊花鏈實(shí)現(xiàn)級聯(lián)時,DIN、CS、SCLK信號如何控制?
“恒峰國際”完成1億美金融資,推出區(qū)塊鏈平臺FO-X
dap協(xié)議在跨鏈技術(shù)中的應(yīng)用
dap協(xié)議的基本概念 dap協(xié)議在區(qū)塊鏈中的應(yīng)用
YOGO ROBO智能機(jī)器人助力區(qū)塊鏈行業(yè)發(fā)展
智慧能源管理系統(tǒng):區(qū)塊鏈技術(shù)在能源交易中的應(yīng)用

地物高光譜儀的發(fā)展趨勢如何?
華為云、上海鈞達(dá)數(shù)科 發(fā)布區(qū)塊鏈數(shù)據(jù)要素聯(lián)合解決方案

京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時服務(wù)器助力區(qū)塊鏈數(shù)據(jù)網(wǎng)

評論