然后,我們就非常迅速地取得了一系列重大進展。在這段時間,我們在很多不同的研究領域都有所收獲:一些是圍繞權益證明、希望讓我們的共識層更加高效的;一些是圍繞可擴展性,希望讓我們的基礎層共識可以分片;一些是嘗試提高虛擬機效率的;還有一些是圍繞賬戶抽象的,賬戶抽象可以讓用戶自己選擇要使用哪種簽名方案,這樣可以獲得后量子時代的安全性,并且讓隱私解決方案變得更簡單;還有圍繞協議層經濟模型的。當然所有這一切都還在生長。
Casper FFG
在 2017 年伊始的某個時間點,我們開發了一個協議,并且起了個謙虛的名字:最小罰沒條件(Minimal Slashing Condition)。最小罰沒條件轉化了 PBFT 類型的傳統拜占庭共識;在 80 年代,Lamport、Shostak 等人便創建了同類的材料,但我簡化了算法并把它放到了大多數區塊鏈的環境中。
基本的觀念如下:在一條區塊鏈上會不斷產生新的區塊,你可以通過連續的合并和觀察來獲得一種流水線版的效率:每一輪開始時你都會為本輪添加數據,而在下一輪中人們可以確認這些數據中的一部分;我們可以從中獲得巨大的效率提升(譯者注:此即 FFG 的核心思想,一旦在某輪中某區塊獲得 2/3 的驗證者同意,該區塊的父塊便被敲定)。
一開始的最小罰沒條件有 6 條,然后我減少到 4 條,而一年后,我們終止合并 prepare 和 commit,這便是 Casper Friendly Finality Gadget(FFG,友好的確定性小工具)。
分片
上一年的 Devcon 上我演示了這種新的分片設計,就是保持主鏈不變,然后創建分片作為某種意義上的 Layer-2 系統掛載在現有的主鏈上,確認足夠可靠之后再升級成為 Layer-1。
Casper CBC
然后是來自 Vlad 的 Casper CBC ~ 論文。
Casper FFG POC
泰國時間 2017 年12 月 31 日 23:40,那時候我們恰好在泰國,Casper FFG 概念驗證橫空出世。那時候我們真的非常想確定,一種 PoW/PoS 混合共識的技術詳述到底是什么樣子的,而這一種混合共識會使用一部分來自 Casper FFG 中的觀念,還有一部分傳統拜占庭容錯共識所啟發的觀念,并加載在現有的工作量證明鏈上。這會是一種可以讓我們快速轉向混合共識的機制,并且對現有區塊鏈造成的沖擊也最小,然后理論上我們將有可能升級為完全的權益證明。
我們同樣在這條路上走了很遠,我們還做了一個 Python 測試客戶端,用不同的 VPS、服務器和電腦通信來做測試。
Shasper
與此同時,我們在分片上也取得了許多進展。我們不斷完善分片的技術詳述,最終我們在 18 年 3 月的臺北組織了一次集體休整。在這里很多想法開始冒出來,如何實現一條分片區塊鏈看起來變得明朗起來。對,看起來變得明朗起來。
在 6 月份,我們做了一個非常困難,但我個人認為從長遠來看非常有價值的決定。我們發現:咦,這邊我們有幾支團隊在實現混合權益證明,他們試圖將 Casper FFG 開發為一個現有鏈上的智能合約,對分叉選擇規則做調整;另一邊,有幾支完全隔離的團隊,要開發一個驗證者或者說管理者合約(后來被重命名為鏈上分片管理者合約),在這個基礎上開發分片系統;他們之間是沒有交流的。在分片這一邊,最終變得越來越清楚的是:讓分片系統的核心放在 PoS 鏈上會給我們帶來更高的效率;變成 PoW 鏈上的一個合約,我們就不得不處理 EVM 的開銷,應付 Gas 機制,應付不可預測的 PoW 區塊時間;PoS + 分片 可以帶來更快的出塊時間等一系列好處。
然后我們就意識到,為什么這邊有個團隊在開發 PoS,那邊又有一個 PoS 項目?為什么我們要做重復工作呢?然后我們決定要把兩邊的工作合并起來。這個決定給之前的許多工作判了死刑,但意義深遠:我們會在一起工作,開發同一份技術說明,同一個協議,而我們可以同時讓 Casper PoS 和分片相得益彰。
總而言之,與其這邊有一個目的,那邊有另一個目的,然后我們要努力分辨如何合并兩邊的成果,我們還不如在起點上多花一些時間,然后走向一套權益證明和分片區塊鏈。(掌聲)
其它
與此同時,我們花了不少時間討論分叉選擇規則,最終我們越來越接近也越來越深入地理解分叉選擇規則;GHOST 算法雖然一開始是為工作量證明設計的,但因為一系列原因,我們重新提議用于權益證明。
Justin 開始研究可證延遲函數(Verifiable Delay Funciton,VDF),我們在斯坦福有個工作室,Justin 一直在跟那里的許多研究者合作。
關于如何實現抽象和租金,我們也形成了更多想法。因為一些理由,我們決定將存儲租金重命名為存儲維護費。
在研究方面,我們正在研究跨分片交易,比如 csoss-shard-yanking,我們是普遍化傳統分布式系統中的一些概念,用到異步的跨分片環境中;還有資源定價的論文,包括最優化費用市場,如何收取存儲維護費,不同設計之間的權衡。Casey 還寫了這篇文章討論同步假設下的跨分片交易。當然,CBC 的研究也擴展到了,分片領域,對了,這個真的不叫 Valding,Vlad 很討厭這個詞。還有開發,我們在以太坊 2.0 開發推進中使用的策略是:追求創造性的多客戶端去中心化開發。這不僅僅是因為我們有去中心化的追求,這也是一套非常實用的策略,就是打賭別的團隊都不會有你干得漂亮;此外,上海事件讓我們醒悟,如果某個客戶端出了問題而別的客戶端沒有,整個網絡可以更好地運行;順便,還讓整個生態系統的開發更不依賴于基金會本身。基金會真正開發的客戶端是 Python 客戶端,Python 在性能上有內在的限制,這也給了大家激勵去運行由 Prysmatic 創造的客戶端、Lighthouse、Status 還有 Pegasus 以及其他如雨后春筍般冒出的團隊開發的客戶端。