數(shù)字共識的本質(zhì)是存儲共識。
存儲計算范式:一種具備終極擴張性的區(qū)塊鏈可信計算范式莱预。
從 2020 年初開始柠掂,以太坊 DeFi 呈爆發(fā)式的增長,由 COMP依沮,YFI 等引發(fā)的流動性挖礦導(dǎo)致以太坊急劇擁堵涯贞,礦工費一度提高至 500 Gwei枪狂,DeFi 手續(xù)費高達上百美金。以太坊擁堵不堪宋渔,亟需一種可擴展的智能合約方案州疾。
10月上旬,V 神發(fā)表評論以 rollup 為中心的以太坊路線圖皇拣,開啟了二層網(wǎng)絡(luò)浪潮严蓖,ZK Rollups 和 Optimism Rollups 競相出鏡。ZK Rollups 和 OP Rollups 采用了兩種完全不同的證明模式氧急,分別是:有效性證明和錯誤性證明颗胡。
ZK 的有效性證明是將一批次的交易和對應(yīng)的完整性證明發(fā)送到以太坊的智能合約進行驗證,如果驗證正確則被合約接受吩坝,驗證錯誤則拒絕交易毒姨;OP 屬于錯誤性證明,是數(shù)據(jù)狀態(tài)運營者將數(shù)據(jù)提交钉寝,并附加押金弧呐,在一段時間內(nèi)任何人都可以發(fā)布非交互式的錯誤證明,如果這段時間內(nèi)無人成功驗證錯誤嵌纲,則狀態(tài)獲得終局性俘枫,反之,成功證明錯誤則會罰沒運營者押金逮走。
ZK 和 OP 的區(qū)別在于對狀態(tài)終局采用了兩種不同的方式鸠蚪。我把 ZK 類比為 POW,他是通過密碼學(xué)算法驗證結(jié)果有效性言沐;而 OP 更像是 POS邓嘹,是運營者抵押資金(像 Staking 一樣),采用了一系列的“治理”手段達到最終目的险胰。ZK 由于密碼學(xué)理論和技術(shù)的限制汹押,由于其“指令集”過于簡潔,難以處理復(fù)雜的業(yè)務(wù)程序起便;OP 的問題在于治理機制棚贾,需要將資金進行鎖定并限制了流動性。
不管是 ZK 還是 OP榆综,能對以太坊進行擴容的根本都在于對數(shù)據(jù)壓縮和鏈外計算妙痹。如下圖所示,為了節(jié)省一層網(wǎng)絡(luò)的負載鼻疮,數(shù)據(jù)進行了極大的壓縮并將計算遷移到二層進行處理怯伊,此時一層存儲的數(shù)據(jù)減少,并且只需要對狀態(tài)進行驗證即可判沟,極大的降低了一層的負載耿芹。
但是降低負載并不代表無限負載崭篡。一層的區(qū)塊大小和 gas 具有上限,并且在將來仍有大量的 gas 會消費在一層DeFi 和組合性應(yīng)用中吧秕,因此二層必定會和一層搶占資源琉闪,并且多個二層之間也會涉及到資源搶占問題。最終在有限資源下會不會存在某些二層無法上鏈砸彬、無法打包交易颠毙,那么二層是否會因此停機?就算二層不進行停機砂碉,一直在二層進行沒有限制的交易蛀蜜,當資產(chǎn)需要要回到一層時,是否會存在過多的數(shù)據(jù)需要在一層驗證绽淘,最終導(dǎo)致無法驗證涵防。另外闹伪,二層的組合行也是一個比較嚴重的問題沪铭。
以太坊是一臺“世界計算機”,其設(shè)計初衷即是在區(qū)塊鏈上完成計算和存儲偏瓤。在鏈上做計算意味著區(qū)塊鏈網(wǎng)絡(luò)中的所有節(jié)點都必須對計算過程進行處理杀怠,鏈上計算模式的成本不可能太低。就算采用二層的擴容方式厅克,也僅僅是對數(shù)據(jù)和計算進行了壓縮赔退,但仍然需要計算過程(驗證)在一層進行處理。
本文旨在介紹一種新的計算范式证舟,與以太坊在鏈上計算的模式不同硕旗,該計算范式將計算完全放在鏈下,鏈上只作存儲女责,此時區(qū)塊鏈僅需要保證存儲的可用性和確定性漆枚。假設(shè)一個計算的入?yún)⑹谴_定性的,那么這個計算的輸出結(jié)果也應(yīng)該是確定的抵知。比如 x + y = z 這個程序墙基,如果 x 和 y 的值都是在鏈上記錄,分別是 x = 1 和 y = 2刷喜,那么公式在任何地方計算結(jié)果 z 始終為 3残制。只要程序的參數(shù)在鏈上確定性的記錄下來,那么程序其實也不需要在鏈上運行(任何人任何地方鏈下運行)掖疮,其結(jié)果依然是確定可信的初茶。由于計算過程與鏈完全解耦,計算參數(shù)完全依賴確定性存儲浊闪,我們將這樣的計算范式稱為:存儲計算范式恼布。
圖靈機吐葵,回歸本源的存儲計算范式
我們知道,不管是馮諾依曼結(jié)構(gòu)還是哈佛結(jié)構(gòu)的計算機桥氏,其本質(zhì)都是一臺通用圖靈機温峭。
圖靈機是一臺假想的機器,由一條無限長的紙帶和一個帶狀態(tài)寄存器的紙帶讀取機器組成字支。讀取器會在紙帶上來回移動并將新的參數(shù)寫入紙帶凤藏。這樣一臺假想的機器可以進行任意復(fù)雜的計算(圖靈完備)。
借助區(qū)塊鏈技術(shù)堕伪,我們可以將圖靈機的紙帶替換為區(qū)塊鏈揖庄,可以得到下圖中的新型計算模型(存儲計算范式):
可以編寫一個業(yè)務(wù)程序,將程序的代碼提前上傳到區(qū)塊鏈上(上圖區(qū)塊高度 102)欠雌。任何人都可以將程序從可信的區(qū)塊鏈中下載并運行起來蹄梢,程序的讀取和輸出端都是區(qū)塊鏈(紙帶)。由于區(qū)塊鏈具備可追溯富俄、不可偽造的特性禁炒,因此鏈下程序的輸入輸出也具備確定性。程序加載來自區(qū)塊鏈的確定性參數(shù)霍比,最終生成的程序狀態(tài)也是確定性的幕袱。
存儲計算范式將程序的源代碼、輸入輸出存儲在區(qū)塊鏈上悠瞬。運行程序時们豌,加載鏈上可信的源代碼,對鏈上的可信參數(shù)進行鏈下計算浅妆,輸出狀態(tài)也必定具備一致性望迎。任何人都可以運行程序,任何人運行的結(jié)果都一致的凌外,達到可信計算的目的辩尊。
模型理論上可行,但將以太坊作為確定性存儲依然過于昂貴趴乡,會到導(dǎo)致應(yīng)用的成本激增对省。使用以太坊有限的區(qū)塊大小作為存儲也會使應(yīng)用的擴展性大打折扣。借助 Arweave晾捏,一條以永久存儲為目標的區(qū)塊鏈蒿涎,我們可以將存儲計算范式進行實踐。
Arweave 原理簡介
Arweave 是一個基于區(qū)塊鏈的文件存儲協(xié)議惦辛,它具有一次性付費劳秋,永久存儲文件的特點,它實現(xiàn)了一套簡單的經(jīng)濟激勵規(guī)則,讓礦工能長久的存儲數(shù)據(jù)玻淑。
永久存儲是 AR 的核心功能嗽冒,因此首先需要明確永久存儲的成本。統(tǒng)計發(fā)現(xiàn)存儲成本每年都在以驚人的速度降低补履,其中每 GB 的存儲成本平均每年下降 30.57%添坊。經(jīng)計算,成本會收斂到一個常數(shù)箫锤,得出一個永久存儲的成本贬蛙。AR 使用這個收斂的永久成本作為數(shù)據(jù)存儲的收費基準。下圖所示谚攒,存儲 1 GB 的數(shù)據(jù)消費 2.45 個 AR阳准,花費約為 $9.8(由于 AR 價格波動,存儲花費也會有一定的波動)馏臭。
在有了收費基準后野蝇,怎么讓礦工永久保存這些數(shù)據(jù)呢?AR 引進了全新的挖礦機制:開采一個新的區(qū)塊時括儒,會隨機鏈到先前的一個“回憶塊”绕沈,要求礦工證明可以訪問這個回憶塊的數(shù)據(jù),才能開采出一個有效的新區(qū)塊塑崖。這會激勵礦工盡量多的存儲歷史區(qū)塊七冲。同時,該算法還激勵礦工存儲“稀有”區(qū)塊规婆,因為當稀有區(qū)塊被選為回憶塊時礦工能在更小的競爭下開采出新的區(qū)塊,以達到數(shù)據(jù)永存的目的蝉稳。
AR 能保證數(shù)據(jù)永存抒蚜、價格穩(wěn)定,便宜耘戚。依賴區(qū)塊鏈技術(shù)嗡髓,AR 存儲的數(shù)據(jù)也具備可驗證可追溯的特性,非常適合作為可信計算的“圖靈機紙帶”收津。
總結(jié)
存儲計算范式能運行的關(guān)鍵在于數(shù)據(jù)永存和成本固定(低廉)饿这,只有永存能使數(shù)據(jù)始終“可得”,得到這些數(shù)據(jù)才能在鏈下計算出一致性的狀態(tài)撞秋;成本的固定或低廉长捧,能讓應(yīng)用的共識成本始終保持在一個穩(wěn)定的范圍,不會像以太坊那樣吻贿,在區(qū)塊擁堵的情況下出現(xiàn)激烈競爭資源的情況串结,穩(wěn)定的成本使應(yīng)用更具備可用性。
將存儲計算范式與 AR 結(jié)合,我們可能獲得了一個比較完美的確定性圖靈機肌割,一個可以實踐應(yīng)用的新型可信計算模型卧蜓。
存儲計算范式至少具備以下優(yōu)勢:
可以進行任意復(fù)雜度的計算。計算能力取決于鏈下機器的性能把敞;
降低共識成本弥奸。共識的成本僅包含存儲成本,不再包含計算成本奋早。計算成本由應(yīng)用的運營者(鏈下計算者)提供其爵;
具備可組合性和優(yōu)秀的“分片”能力伸蚯。應(yīng)用只需要從鏈上加載自己關(guān)心的數(shù)據(jù)摩渺,多個應(yīng)用之間組合時加載多個應(yīng)用的數(shù)據(jù),運營者不再需要下載所有數(shù)據(jù)(比如運行一個 dapp 需要整個 geth 的支撐)剂邮;
極強的可拓展性摇幻。一是共識成本的的降低提高了拓展性,二是數(shù)據(jù)不僅是下載“分片”挥萌,也能達成上傳“分片”绰姻,因此性能瓶頸僅僅是網(wǎng)絡(luò)帶寬;
不限制編程語言引瀑。只需要將目標程序提前存入?yún)^(qū)塊鏈并將程序的所有入?yún)⑿蛄谢湘湣?/p>
我們對 rollups 和 ETH 2.0 進行了深入研究狂芋,所有的努力方向都在將計算鏈外化,而最終的目標可能就是完全的鏈下計算憨栽。在探索的過程中帜矾,可以得出這樣一個結(jié)論:在程序沒有二義性的情況下,只要輸入輸出的存儲具備確定性屑柔,那么程序的計算結(jié)果也一定具備確定性悴晰。
存儲計算范式是一種完全不同于以往區(qū)塊鏈計算模型的新事物先匪,或許還需要很多時間讓大眾來接受和認可缕溉,但它一定是更接近本質(zhì)(圖靈機)的優(yōu)秀可信計算范式待牵。
感謝以太坊愛好者阿劍老師對 rollups 和 ETH 2.0 的深度解讀,星火礦池喵叔對 SmartWeave 的引介以及星火礦池李培對 Arweave 和 LazyLedger 的深入研究唧瘾。