反直覺的Algorand:突破“不可能三角”,理想國還是烏托邦?區(qū)塊鏈
Algorand最大的亮點是“密碼學”的設計,但人們也將因為“密碼學”不斷對它產生質疑。
一
2017年10月,伯克利大學。
algorand的分享會剛剛結束。Micali教授站在臺上,望向人群。
有人舉手問了一個問題:
“在algorand系統(tǒng)里,驗證節(jié)點如果作惡是不會受到任何懲罰的嗎?這樣的話整個系統(tǒng)可以輕易被收買吧,哪怕我事先并不知道這些驗證節(jié)點是誰……”
algroand核心設計理念有一個非常重要的假設:在一個系統(tǒng)中,絕大部分人都是誠實的。這個假設貫穿整個系統(tǒng),代表了algorand最本質的內核。但顯然,現場提問的這位朋友對此仍然有所質疑。
Micali教授打斷了對方的問題:“algorand整個系統(tǒng)的確沒有所謂的「懲罰」機制。你后面說的其實是另一個問題。”
他把身體轉向觀眾,說了接下來這樣一段意味深長的話:
“我和你,包括在場所有人,我想我們都同意「誠實」究竟意味著什么。
你知道密碼學誕生至今最古老的協(xié)議是什么嗎?是「秘密分享協(xié)議」(secret sharing)。
這個協(xié)議的原理大部分人都說得出來:我們都害怕忘記密碼,而密碼其實就是一串數字而已,于是有人想出了一個方法——把這串數字拆成十個不同的數字,它們相加的和剛好等于密碼的值,然后我把這10個數字隨機發(fā)給10個不同的人保管。我請求他們做一個誠實的人,不要把自己的數字告訴別人。當有一天我自己忘記了密碼,我就去找他們每個人要回數字,相加一遍就好了。
按照你的質疑,如果人們會一邊認為自己是誠實的,一邊把手里的數字告訴別人,那秘密分享這個協(xié)議是不成立的——不僅如此,整個密碼學領域里所有的協(xié)議大概也都不存在了。「誠實」的基礎是不去考慮那些不誠實的做法,我認為不止是我一個人這么想的。”
二
micali是世界級的密碼學家,任職于MIT,得過圖靈獎。
如果你對隱私幣(privacy coin)和zcash比較熟的話,你可能聽說過,這些項目很多都用到了密碼學里的一個理論——零知識證明(zero knowledge proof)。
第一篇提出零知識證明理論的論文發(fā)表于1985年,micali正是這篇論文的聯合作者。
零知識證明,包括密碼學,原本只是一個很小眾的學科。直到2009年,一個化名中本聰的密碼朋克發(fā)表了關于比特幣構想的白皮書,密碼學里的許多理論才得到了實際應用。同時,比特幣和區(qū)塊鏈也迅速吸引來了其他人的眼光。
比特幣的出現當然也立刻引起了 micali 的興趣。“我在想我可以做點什么。我把自己關在房間里,幾個月都不出門,不停地研究區(qū)塊鏈的協(xié)議、共識、治理、激勵機制,然后,我終于知道自己想要的是什么了。”在杭州的見面會上,micali這樣告訴橙皮書,“最后我把激勵機制拿掉,單獨去思考整個協(xié)議。我把自己的想法寫成了一份白皮書,扔到網上,然后你猜發(fā)生了什么?”
幾個同在MIT的同事找了上來,其中一位叫nickolai zeldovich,他是系統(tǒng)安全領域鼎鼎有名的人物。nickolai覺得白皮書里的設想看起來過于美好,不像是真的,“too good to be true”,于是他問 micali,能不能把白皮書拿出來測試一下?micali回答,當然可以。
于是,他們著手準備了一次測試。
“我們租了1000臺亞馬遜的服務器,每臺模擬500名用戶,然后增長到1000個用戶、2000個用戶、5000個用戶,15000個用戶,一直到500000用戶。測試的結果顯示,達到15000個用戶時,系統(tǒng)完全沒有變慢——在那一刻我知道,我的想法不僅在白皮書上可行,在測試上也是可行的。”后來,nickolai也成了白皮書的聯合作者之一。
有了白皮書,有了技術可行性的測試,是時候動手做點大的了。
micali 把這個項目正式取名為algorand,他想把 algorand 建設成為區(qū)塊鏈里切實可用、值得依賴的基礎設施——換句話說,就是做成一條最好的公鏈。
algorand是一個復合詞,由algorithm(算法) random(隨機)組成。這個名字揭示了alogrand的設計原理,即用算法隨機產生出塊節(jié)點與驗證節(jié)點——這本身就是一種很“密碼學”的思路。
三
技術型的創(chuàng)始人在區(qū)塊鏈行業(yè)里不見得是一個優(yōu)勢。事實上,擁有網紅型的技術創(chuàng)始人,才是這個行業(yè)真正通吃的殺手锏。
micali 關于圖靈獎的頭銜,能夠為 algorand 吸引來不少好奇的目光。但其實 micali 本身也是一個特別擅長傳達理念的人。
這個瘦瘦小小的老頭子教授,看起來永遠是一副精神充沛的樣子。在上海萬向舉辦的區(qū)塊鏈大會上,micali 與 oasis lab 創(chuàng)始人 dawn song、cosmos 創(chuàng)始人 jae、以太坊創(chuàng)始人 vitalik 分到了同一組做 pannel 討論。當主持人一個一個詢問嘉賓觀點的時候,micali是唯一一個執(zhí)意要從座位上站起來、面向觀眾大聲回答問題的人。
雖然他講的英語有很重的意大利口音,但這個口音似乎從來沒有影響過他對自己所表達的東西的自信力。杭州見面會現場的話筒臨時出了問題,micali對工作人員搖了搖頭,示意自己其實并不需要話筒。
在這些公開的分享會里,micali喜歡用“魔法”來代替algorand涉及到的許多復雜的密碼學算法,以此讓聽眾更好的理解algorand系統(tǒng)究竟是如何運作的。
對于第一次接觸algorand的人來說,這個系統(tǒng)在設計上有兩個非常“反直覺”的地方:
這個系統(tǒng)里沒有任何的“懲罰措施”
這個系統(tǒng)不需要你押注任何的資產
在大部分公鏈系統(tǒng)的設計里,為了防止節(jié)點作惡,系統(tǒng)往往會設置相應的懲罰機制。dpos或者bpos的共識機制要求節(jié)點抵押一部分的資產,以此作為籌碼,約束節(jié)點的行為。可以說,大部分區(qū)塊鏈項目的“信任”,都是通過這種基于資產抵押的懲罰機制,建立起來的。
但在micali的腦子里,上面這些并非都是必須存在的東西。這背后反映了algorand與眾不同的設計哲學。
micali認為,當“錢”不需要拿去做任何抵押、可以隨時流動的時候,系統(tǒng)里大部分的錢就會掌握在誠實的人手里。因為大部分的人都是誠實的,錢只要足夠分散,大部分錢也會是誠實的。而對一個POS的系統(tǒng)來說,“錢”就是一種投票權。如果大部分投票是誠實的,那么這時,“懲罰”也就沒有必要存在了。
“我認為我們應該做一個「不可能作弊,而非如果有人作弊就去懲罰它」的系統(tǒng)。我覺得這才是更好的設計。”micali在一次分享會上說,“當錢可以隨意流動的時候,大多數錢掌握在大多數人的手里,而大多數人是誠實的,這個網絡就是安全可靠的。”
四
對一個公鏈而言,最核心的問題其實是怎么產生下一個區(qū)塊。
第一個區(qū)塊,也就是創(chuàng)世塊,是不需要考慮的,它是人為定義的,不需要共識。第二個區(qū)塊怎么產生才是關鍵。
在micali的設計里,algorand通過兩個階段的“魔法”——這個魔法背后其實是數學和密碼學——來確定下一個區(qū)塊的產生。
第一階段:魔法隨機選出一個人來產生區(qū)塊(概率與這個人所擁有的錢的數量成正比,不需要鎖定或抵押),然后他把「簽名的區(qū)塊 自己的公鑰」廣播到網絡里;
第二階段:魔法隨機選出一千個人來驗證這個區(qū)塊。這一千個人組成的委員會對該區(qū)塊是否有效達成共識,他們把「自己對區(qū)塊的投票意見 自己的公鑰」廣播到網絡里。
micali 喜歡把“公鏈系統(tǒng)”想象成一個小型的人類社會:“在一個社會里肯定會有一小撮壞人,比例可能是1%、2%,或者20%,但是不可能大部分人都是壞人。不然所謂的「社會」就不存在了,那就是一個野蠻動物的黑暗叢林。”
因此,當第一個人被選出來的時候,他可能有10%的概率是壞人。壞人會發(fā)布錯誤的區(qū)塊,或者把不同的區(qū)塊發(fā)給不同的人,以此完成欺騙。這時,如果我們再隨機選出一千個人,這一千個人都是壞人的概率是非常非常低的。相反,這一千個人和整個系統(tǒng)一樣(如果足夠隨機的話),大部分人都會是好人。
如果你既沒有被選為生成區(qū)塊的人,也沒有被選為驗證區(qū)塊的一千人,當你看到一個區(qū)塊被這1000個人中的750個人驗證過,那么你也可以知道,這個區(qū)塊是正確的。
這就是algorand的基本原理。
那么問題來了:這一千個人的委員會到底是怎么選舉出來的呢?
一人一票,通過純民主的方式,讓網絡里所有的用戶一起來選舉?這樣效率肯定非常低。
algorand采用了一種反直覺的做法:讓他們自己推選自己。
這部分其實也是密碼學的精華。
委員會的選舉,依賴于一個神奇的彩票程序。這個彩票程序有如下幾個特點:
每個用戶都有一個彩票程序
彩票程序只在用戶本地的計算機上運行
用戶自己無法通過彩票程序作弊
如果中獎了,用戶可以拿出證據證明自己中獎
整個彩票程序的計算量非常小,就是一些哈希和字符串的比較。中獎的概率和你手里的錢的數量成正比,而且,一個公鑰有100萬個幣,和100萬個公鑰,每個地址有1個幣,他們被選舉上的概率是相同的,同時,二者彩票搖獎的時間和速度也是相同的。
然后,一旦你中獎了,你的計算機就會給你一張中獎證明,這個中獎證明會和你對區(qū)塊的投票意見一起廣播到網絡中。所有這些事情將在幾毫秒中完成,非常快速。
聰明的讀者到這里應該反應過來了——micali 所說的那個“魔法”,其實就是這個基于密碼學的彩票程序。
這個彩票搖獎機有兩個好處:
委員會的選舉速度很快:時間是毫秒級,因為沒有人需要互相溝通,大家在自己本地的機器上運行就好了。
委員會選舉的過程很安全:假設系統(tǒng)中的壞人可以賄賂任何節(jié)點,讓他們說謊,但在algorand系統(tǒng)里,壞人到底應該去賄賂誰呢?當委員會被選舉出來的時候,壞人可以知道這 1000 個人分別是誰,但問題是,這時哪怕委員會里的人被賄賂了,他也已經把自己的中獎證明和對區(qū)塊鏈的驗證意見給廣播出去了——換句話說,此時區(qū)塊驗證已完成,賄賂也無濟于事。
粗略的理解大概是這樣。其中 alogrand 還做了不少的技術細節(jié),比如:
vrfs(隨機驗證函數)和基于密碼學的自選舉
新的速度超快的拜占庭協(xié)議(即 1000 人委員會對新區(qū)塊達成共識的過程)
用戶可替代性(上面做拜占庭共識的過程中,如果對區(qū)塊產生分歧需要經過最多 9 輪投票,這 9 輪以內的投票,每一輪的委員會都是不同的 1000 個人。這種可替代性可以更有效地經受被賄賂的情況)
……
五
基于上面這套設計,micali認為algorand跟比特幣相比有了很大的改進。
“我們今天一直在說的「區(qū)塊鏈」,其實從來就不是一條鏈。它(比特幣的鏈)是一棵樹,”micali 說,“只不過,這棵樹的分支隨著時間的進行逐漸凋亡,最終留下了最長的那一條。但在 alogrand 系統(tǒng)里,從始至終就只有一條干凈的主鏈,不需要 6 個區(qū)塊的確認時間,一個新區(qū)塊一旦產生就是最終的區(qū)塊。就是這么簡單、干凈、明了。”
比特幣之所以是一棵樹而不是一條鏈,原因在于比特幣需要額外的 6 個區(qū)塊時間才能確認該區(qū)塊的最終一致性。援引 maxdeath 在知乎上的答案:“在比特幣里,因為網絡延遲的原因,某個區(qū)塊的生成者天然地在下一個區(qū)塊的生成上具有優(yōu)勢。于是,比特幣有了 6 個區(qū)塊這么個延遲,因為一個區(qū)塊的生成者預測 6 個區(qū)塊以后的生成者的概率的時候,網絡延遲能造成的優(yōu)勢就微乎其微了”。
algorand 能快速確定一個區(qū)塊的最終一致性。根據 micali 的說法,algorand 上出現分叉的概率非常之低。大概需要經過「從宇宙誕生至今」這么長的時間,系統(tǒng)才有可能出現分叉。
除此之外,micali 認為 algorand 還有其他一些更重要的改進,比如:
真正意義上的去中心化:所有節(jié)點都一樣,不存在礦工與普通用戶的不同角色。
借助于計算量很小、幾乎沒有延時的隨機算法,在可擴展性上可以有很大的突破;
很好的安全性:不僅可以抵擋協(xié)議層的攻擊,還可以抵擋網絡通信層面的攻擊。
上面這三點分別代表了“去中心化”、“可擴展性”和“安全性”——換句話說,algorand 解決了一直以來困擾公鏈的三難問題,即「不可能三角」。
在行業(yè)整體思潮開始轉變,越來越多人開始探討「以太坊成為世界計算機的愿景是否必要」時,“區(qū)塊鏈在保持去中心化與安全性的前提下,應該盡量把計算剝離開,挪到第二層來做,讓layer2來提升性能” 幾乎已經成了行業(yè)新的共識了。
人們已經習慣并默認「不可能三角」無法解決,放棄與這個問題剛正面,轉而去尋求其他解決思路,比如分片、鏈下擴容、側鏈等等。在已經接受了一個既定條件的情況下,突然告訴你這個條件不存在了,讓你重新定義問題——這時的人們很難做出正確的反應,因為大部分人的思想已經被這個既定條件牢牢困住了,很難掙脫。
algorand 的橫空出世,如果對行業(yè)有其他方面的借鑒意義的話,也許在于它在嘗試幫助這個行業(yè)打破這個狹小的思維框架。用 micali 的話來說,“algorand是真正使用第一性原理設計出來的”。
六
這種第一性原理的設計思路,很大程度上歸功于 micali 在密碼學領域長期的研究。micali 嘗試用純密碼學的方法來搭建新的公鏈基礎設施,一方面為整個行業(yè)打開了一片新世界,但另一方面,也帶來了更多人對 algorand 的質疑。
最大的質疑聲聚集在同一個問題上—— alogrand 沒有完善的激勵機制。
對于這個問題,micali 在早期曾經嘗試論證為什么不需要經濟激勵機制。coindesk 2017 年 5 月發(fā)表的一篇報道里,micali 表示“激勵機制是最難的”,他的解釋是這樣: 當你為系統(tǒng)加入激勵機制,人們就會嘗試去利用激勵機制賺錢。他們會想出各種你預想不到的辦法專空子。中本聰肯定不會想到,pow 最終會導致比特幣出現產業(yè)規(guī)模級的挖礦活動。
“我們必須把激勵機制當作最后一種方法來使用。我相信我可以(讓 algorand 在沒有激勵機制下運作起來),但我沒有確切的論證方法證明我可以,因為這比「讓 algorand 自己證明自己」要來得更難。”
但沒有激勵機制,就像沒有懲罰機制一樣,很容易讓人懷疑因此可能產生更大的問題。比如,沒有激勵機制,怎么吸引更多的人加入整個生態(tài)?人們?yōu)槭裁匆獏⑴c成為 algorand 的節(jié)點,哪怕這個節(jié)點不需要消耗太多的計算資源和資產,沒有好處的話,人們一開始為什么要去做呢?所有的節(jié)點會不會都變成懶惰節(jié)點?
micali 對這些問題做了一個有趣的反問:你會因為擔心電腦上的 gmail 費電,而選擇把郵箱關掉嗎?
vitalik 顯然對激勵機制有不一樣的看法。在被問及如何看待 algorand 時,v 神說過這樣一句話:“algorand 假設系統(tǒng)中大部分人都是誠實的。而我們(以太坊的 casper)則是嘗試用更偏經濟激勵機制的方法、而非密碼學的方法,來實現 pos。”
micali 認為 algorand 是「更純粹的 pos」。“pow 通過算力提高了節(jié)點出塊的成本,保證系統(tǒng)的安全性,同時也產生了廉價電力和專業(yè)挖礦設備的競爭賽,最終一定程度上導致了「中心化」礦池的出現。而使用需要抵押資產、有懲罰機制的 pos 共識則是另一種「隱形的中心化」。讓我來問你,一個普通的用戶能把多少錢抵押在鏈上并且保證 30 天內不動這筆錢?沒多少錢。最終那些有能力鎖定大額資產的人,就會形成新的中心化。”
看起來,沒有激勵機制和沒有懲罰機制一樣,似乎都是 micali 出于對 algorand 系統(tǒng)保持足夠去中心化的一個考量。不過盡管如此,在前不久的杭州見面會上,當現場許多人提出激勵機制的質疑時,micali 主動站起來回答了這個問題。他表示 algorand 并非完全沒有激勵機制,只是目前激勵機制的 paper 還沒有最終確定發(fā)布出來。
micali 透露 algorand 的激勵機制會跟其他公鏈有所不同:“algorand 不會去獎勵出塊的節(jié)點,我們也不會獎勵那 1000 個入選委員會的區(qū)塊驗證者。如果你去獎勵最終勝出的冠軍,獎勵那些第一個沖破終點的贏家,人們就會開始想盡一切辦法把自己訓練成百米賽跑的運動員。他們會買更好的設備,用更好的算法,來獲得出塊或者驗證區(qū)塊的權利。相反地,alogrand 會去獎勵那些一直保持在線狀態(tài)的節(jié)點和用戶。只要你持續(xù)在線,保持對網絡數據的接受和監(jiān)聽,就有可能獲得 algorand 代幣的獎勵。”
這是至今為止 algorand 對外公布的關于激勵機制方面的所有信息了。看起來,激勵機制在 algorand 項目的發(fā)展中也經歷了新的變化。從原本的「不需要」,到后來出現的「新的設計理念」,這對algorand也許是一件好事。一個項目總是需要經過一些時間,不停地完善想法。
盡管如此,algorand 仍然留下了不少問題。
按照這套激勵機制的假設,以及 algorand 希望采用的「純 pos」的共識算法,初始代幣的發(fā)放將會變得尤為關鍵。Alogrand希望通過拍賣的形式發(fā)放代幣,由市場決定Algo代幣的價格,但這一部分目前還沒有太多的信息。
此外,如果假設系統(tǒng)中所有的節(jié)點都是一樣的,那么用戶有可能通過類似“輕節(jié)點”的方式進行訪問嗎?
在杭州分享會現場,有人問到了這個問題:在沒有礦工的情況下,一個新節(jié)點加入網絡需要如何開始同步歷史數據?algorand 論文的聯合作者陳婧回答稱,他們將會開發(fā)一套專門的歷史數據同步工具,并且新加入的節(jié)點也并不需要從創(chuàng)世塊開始同步所有區(qū)塊的數據。
algorand 留下的最后兩個問題是:目前沒有實際的代碼和開發(fā)進程,以及,目前 algorand 僅有的測試結果仍然是跑在非常穩(wěn)定可靠的亞馬遜云服務器上的,這跟實際的公鏈運行場景可能會有所差別。
而從另一方面來說,無論是經濟激勵機制、代幣發(fā)放,還是系統(tǒng)工程上的實現細節(jié),這些疑問看起來似乎都不是一個密碼學家最擅長的事情。
七
2017 年那場伯克利大學的分享會,micali 在 ppt 的最后放了一張圖。
這是一座羅馬石拱橋,名叫朱利安橋。這座橋橫跨法國東南部的卡拉翁河,于公元前3年建立。至今這座橋仍然在使用中,古羅馬人完全想象不到的、后世新誕生的各種重型交通工具在橋上通過,但這座橋依然堅挺無比。
micali 說這座橋是一個美妙的基礎設施。
一個去中心化、不可篡改、無法屏蔽的公共賬本,同樣也是人類夢寐以求的一個美妙的基礎設施。
問題是,什么才是實現這種理想基礎設施的最好方法?
是最早出現的比特幣嗎?
還是會有更好的?
algorand提出了一個很有趣的想法:盡可能多地依賴于密碼學算法本身,而減少經濟激勵對人性可能產生的影響。
這種「隨機抽取樣本來達成網絡共識」的辦法,在 micali 眼里還有更大的用處。
當被問及 algorand 最大的不同點是什么的時候,micali 說,“algorand 的拜占庭算法能讓網絡對任何的話題和決定快速達成共識。這將給予 algorand 更大的可能性。我認為 algorand 最大的不同是它的進化能力。整個社區(qū)對 algorand 未來的發(fā)展如果有新的想法,有更好的主意,都可以通過這種方式快速達成共識。因此,algorand 能擁有更快的進化迭代速度。”
algorand的「進化能力」,讓我想到了另外一些東西。
自古以來,在人類社會里,一群人做出決定的唯一方式是選舉出一個管理機構。你不可能讓10萬人逐一舉手投票。哪怕有了區(qū)塊鏈這一種人類歷史上首次擁有的、防篡改、可以讓數百萬人同時發(fā)聲達成共識然后做出集體決定的技術,一人一票的“純民主”也不現實——因為效率實在太慢了。所以 EOS 才會使用 21 個超級節(jié)點的設計。
但 algorand 提出了另一種思路:如果我們的社會,每做一次決定,是通過隨機選取社會里 1000 個人作為樣本進行投票的話,會怎樣?這種方式會不會更好?
老實說我不知道答案。雖然從概率上來說,這可能會是一個更貼近于社會全部成員意志的投票方式。但如果真理通常只掌握在少數人手中呢?如果選出來的這 1000 個人都是笨蛋呢?如果這 1000 個笨蛋做了最糟糕的決定?
我不敢想象這種機制,但同時我又對這種想象感到興奮。對我們來說,唯一能確定的是,這樣的社會將在極大的“不確定性”中向前走。
在回去的路上,我想起了另一個密碼學家 Bruce Schneier。Bruce Schneier 寫過一本書叫《應用密碼學》。幾年后,他又寫了另外一本書叫《Secrets & Lies》。在第二本書里,Bruce Schneier 寫下了這樣一段前言(選自LeanCloud創(chuàng)始人江宏翻譯版本):“七年前我寫了另一本書:《應用密碼學》。我在其中描繪了一個數學的烏托邦:可以永遠保守秘密的算法,以及能安全可靠地執(zhí)行無監(jiān)管的賭博、抗檢測的認證、匿名貨幣等美妙的電子化交互的協(xié)議。在我眼中,密碼學是帶來平等的偉大技術;任何有廉價計算機的人都能擁有與最強大的政府同樣的安全。在兩年后寫此書第二版時,我甚至說「僅靠法律保護自己是不夠的,我們還需要靠數學保護自己。」 然而我錯了。密碼學做不到以上的任何一點。 這并不是因為 1994 年以后密碼學變弱了;也不是因為書中的技術內容不再正確。而是因為密碼學不存在于真空中。 密碼學是數學的一個分支。和數學的其它部分一樣,它是關于數字、等式、邏輯的。而對于你我來說在生活中能感受到的安全是關于人的:人知道的事、人之間的關系、人和機器的關系。信息安全是關于計算機的:復雜、不穩(wěn)定、有缺陷的計算機。 數學是完美的;現實是主觀的。數學是確定的;計算機是易怒的。數學是有邏輯的;人是不確定、易變和難以理解的。 《應用密碼學》的錯誤在于我沒有對上下文做任何討論。我把密碼學當作答案?來講述。這是很幼稚的。 […] 一個同事曾和我說,世界上充滿了《應用密碼學》的讀者設計的糟糕的安全系統(tǒng)。[…] 幾年前我聽過一句話,在這里稍微改動一下:如果你認為技術能解決安全問題,那么你既不懂安全也不懂技術。”
algorand 最大的亮點是“密碼學”的設計,但人們也將因為“密碼學”不斷對它產生質疑。
1.TMT觀察網遵循行業(yè)規(guī)范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創(chuàng)文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創(chuàng)的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。