(報告出品方/分析師:國盛證券 宋嘉吉 任鶴義 )
1.核心觀點
Web3.0 時代,互聯(lián)網(wǎng)底層不會全部基于區(qū)塊鏈構(gòu)建,數(shù)據(jù)計算也不會全部跑在公鏈的獨木橋上??紤]到數(shù)據(jù)計算的效率問題、以及不同底層程序語言環(huán)境,Web3.0 時代的數(shù)據(jù)計算基礎(chǔ)層將是復(fù)雜多樣的環(huán)境。
因此,如何破解區(qū)塊鏈時代數(shù)據(jù)計算效率成為下一代計算范式的重點方向。
對于去中心化系統(tǒng),光靠共識機(jī)制創(chuàng)新以及跨鏈?zhǔn)沁h(yuǎn)遠(yuǎn)不夠的,脫鏈/鏈外計算(off-chain)目前已經(jīng)成為解決問題的大趨勢。
由于不可能三角的束縛,探索鏈外計算采用偏中心化等手段能夠得到更高的擴(kuò)展性,這種方案的關(guān)鍵是如何將鏈外計算結(jié)果在鏈上得到一致共識,通過 TEE、零知識證明等技術(shù)手段實現(xiàn)鏈外數(shù)據(jù)計算結(jié)果回到主鏈上達(dá)成一致共識和安全。
本報告分析以 Oasis、Arweave、Mina 等鏈下計算模式為案例,分析了 Web3.0 時代數(shù)據(jù)計算的可能范式,以及如何實現(xiàn)鏈上鏈下、鏈間數(shù)據(jù)計算協(xié)同的可能方式。
2.Web3.0 的共識:公鏈獨木橋外可以做很多事
以以太坊為代表的公鏈在基礎(chǔ)性能方面的限制,光靠共識機(jī)制方面的創(chuàng)新是不夠的,靠多鏈之間的跨接亦不足以承載 web3.0 的數(shù)據(jù)和計算。于是以太坊 2.0 的分片、L2、波卡平行鏈等各類擴(kuò)展方案成為當(dāng)下現(xiàn)實的解決方案。這些方案細(xì)節(jié)盡不相同,但最終都傳遞了一種市場共識:即,Web3.0 數(shù)據(jù)和計算不會都跑在公鏈這個獨木橋上,大量數(shù)據(jù)和計算處理會在公鏈之外實現(xiàn)(可以是 L2、平行鏈,甚至可以是其他非區(qū)塊鏈方式)。
也就是說,脫(主)鏈計算(off-chain)已經(jīng)成為行業(yè)的共識,尤其是對于大量的數(shù)據(jù)處理和計算,會在主鏈之外完成。
本文暫時稱各類在底層公鏈主鏈之外的方式為鏈外計算。如何在公鏈之外建立有效的數(shù)據(jù)和計算平臺,承載 Web3.0 各類應(yīng)用成為未來重要的問題。
2.1.通往 Web3.0 之路:從共識機(jī)制、跨鏈、模塊化公鏈的探索
公鏈基礎(chǔ)性能是行業(yè)一個繞不開的終極問題。圍繞性能的升級,公鏈的演進(jìn)大致經(jīng)歷了如下歷程:
1)共識機(jī)制的探索。
共識機(jī)制經(jīng)歷了從 POW到 POS機(jī)制,再到各類 POS機(jī)制的改進(jìn)版本,無非是想解決公鏈的擴(kuò)展性問題。但無論怎樣的共識機(jī)制,完成一致性的共識勢必犧牲系統(tǒng)的工作性能,這是牢不可破的不可能三角;
2)跨鏈試圖以多鏈來承載應(yīng)用。
跨鏈則是為了考慮一條公鏈不能適用于所有場景,需要多個公鏈來解決數(shù)據(jù)承載和計算運行。例如,波卡(Polkadot)作為一個可伸縮的異構(gòu)多鏈系統(tǒng),能夠傳遞任何數(shù)據(jù)(不只限于代幣)到所有區(qū)塊鏈,實現(xiàn)各個鏈之間資產(chǎn)與數(shù)據(jù)的互相流通。這對于區(qū)塊鏈網(wǎng)絡(luò)的擴(kuò)展性和應(yīng)用多樣性來說非常重要,單獨一條區(qū)塊鏈的性能畢竟有限,且在專用和通用之間難以平衡。同時,束縛行業(yè)的不可能三角(即擴(kuò)展性、安全和去中心化不可能同時達(dá)到)也要進(jìn)行相應(yīng)的平衡。
3)Off-chain(脫鏈計算、鏈外計算)來解放主鏈負(fù)擔(dān)。
從以太坊 2.0 的分片到 L2 網(wǎng)絡(luò),全部工作無非圍繞如何解放主鏈負(fù)擔(dān)來進(jìn)行。即,繁重的數(shù)據(jù)計算交給主鏈之外進(jìn)行——可能是分片這類劃分任務(wù)群組的方式,或者 L2、甚至是非區(qū)塊鏈系統(tǒng)來承載數(shù)據(jù)計算,最終結(jié)果返回到主鏈存證。
主鏈的一致性共識提供數(shù)據(jù)結(jié)果的驗證,保證充分的去中心化和安全,而繁重的數(shù)據(jù)計算交給主鏈之外的平臺進(jìn)行。
雖然這些性能卓越的平臺工作時犧牲了一些去中心化或者安全,但可以通過零知識證明、TEE 等技術(shù)手段實現(xiàn)主鏈對鏈外平臺的監(jiān)督和驗證。整體上的思路就是脫鏈/鏈外計算,把計算(存儲等資源消耗)與存證分開。
近期,行業(yè)出現(xiàn)一個新提法:模塊化公鏈。
類似互聯(lián)網(wǎng)協(xié)議分層,未來公鏈會分執(zhí)行層(Execution Layer )、結(jié)算層(Settlement Layer)、數(shù)據(jù)可用性層(Data Availability Layer)。
在以太坊上,執(zhí)行層就是運行各類 DApp 的 L2,然后將打包的的交易數(shù)據(jù)(Rollup)返回到以太坊主鏈上做驗證上鏈,目前數(shù)據(jù)同樣是存儲到以太坊上(當(dāng)然是做 Rollup 打包后),但對于日益膨脹的原始數(shù)據(jù),有人考慮設(shè)立數(shù)據(jù)可用性層來存儲數(shù)據(jù),進(jìn)一步解放以太坊主鏈,使其只做驗證計算工作(共識)——畢竟,龐大的鏈上鏈下數(shù)據(jù)驗證問題數(shù)據(jù)存儲會進(jìn)一步限制以太坊的性能。
當(dāng)然,這種理想的分層方法還未得到驗證,包括 Vitalik 也對數(shù)據(jù)可用性層安全性提出了質(zhì)疑的聲音。
脫鏈計算最核心的問題就是鏈上鏈下數(shù)據(jù)驗證問題,或者說,如何使鏈下的數(shù)據(jù)計算在鏈上得到共識,使得這種方式能夠被去中心化用戶相信。
對于分片、L2 和鏈外計算,公鏈就好比是貨物運輸管理嚴(yán)格的主干道(一致共識),不可能所有數(shù)據(jù)都跑在主干道上,支路的運輸車輛,通過零知識證明等手段證明自己工作嚴(yán)謹(jǐn)、可信的前提下,可以將繁復(fù)的鄉(xiāng)村毛細(xì)小路上的貨物打包裝箱后運行在主干道上。
如何向主鏈證明其數(shù)據(jù)結(jié)果可信,則要借助零知識證明、TEE等靈活的技術(shù)手段,以適應(yīng)不同的工作場景。
另外,龐大的 Web2.0 時代的數(shù)據(jù)資產(chǎn)和計算方式將會繼續(xù)長期存在,這些勢必構(gòu)成了 Web3.0 時代的一部分。
對于這部分?jǐn)?shù)據(jù)和計算如何與區(qū)塊鏈主導(dǎo)的新生態(tài)進(jìn)行融合,同時數(shù)據(jù)的存儲、網(wǎng)絡(luò)和計算內(nèi)存等互聯(lián)網(wǎng)基礎(chǔ)資源的調(diào)用該如何協(xié)調(diào),這些都是巨大的挑戰(zhàn)。
這方面的問題不是光靠跨鏈、預(yù)言機(jī)就能夠解決的。
3.Web3.0 數(shù)據(jù)計算:鏈外計算的三種模式
雖然數(shù)據(jù)計算脫離了主鏈,但分片、L2 等技術(shù)手段還是考慮基礎(chǔ)數(shù)據(jù)計算依托區(qū)塊鏈,兼顧了去中心化的考慮。
由于不可能三角的束縛,探索鏈外計算采用偏中心化等手段能夠得到更高的擴(kuò)展性,這種方案的關(guān)鍵是如何將鏈外計算結(jié)果在鏈上得到一致共識,通過 TEE、零知識證明等技術(shù)手段實現(xiàn)鏈外數(shù)據(jù)計算結(jié)果回到主鏈上達(dá)成一致共識和安全。
鏈外計算的核心問題是是脫離主鏈,數(shù)據(jù)計算如何獲得共識?也就是說,如何使得用戶相信主鏈之外的計算?
本章節(jié)介紹三個典型案例。從這些不盡相同的實現(xiàn)方式,可以窺見 Web3.0 世界的數(shù)據(jù)計算實現(xiàn)方案繁雜的真實一面。未來 Web3.0 世界,也許不是理想的公鏈獨木橋,而是紛繁復(fù)雜的百花齊放。
3.1.Oasis:共識層與執(zhí)行層(ParaTime)分離的模塊化分層設(shè)計
Oasis 網(wǎng)絡(luò)是一個運用權(quán)益證明(POS)、去中心化的 Layer1 區(qū)塊鏈網(wǎng)絡(luò),其使用的模塊 化架構(gòu)實現(xiàn)了共識層和智能合約執(zhí)行層 ParaTime 層兩部分的解耦合,即數(shù)據(jù)計算(合約執(zhí)行)脫離了 L1 主鏈(即共識層),放在 ParaTime 層執(zhí)行,且充分考慮了隱私計算。
同時在設(shè)計上,對共識層進(jìn)行了盡可能簡單化的設(shè)計,共識層僅處理 Token 的轉(zhuǎn)移、質(zhì)押以及解綁定等較為簡單的操作,這一設(shè)計類似于以太坊 Layer2 項目將智能合約的執(zhí)行與共識操作隔離相類似,均有助于提高網(wǎng)絡(luò)的安全性與效率。
而在 ParaTime 層的設(shè)計上,Oasis 將該層的各個 ParaTime 模塊相分離,不同的 ParaTime 模塊可針對不同的需求做出相應(yīng)的優(yōu)化調(diào)整,彼此之間互相獨立的完成運行。
運行時,不同的 ParaTime 構(gòu)建各自不同的執(zhí)行環(huán)境、驗證機(jī)制以及加密機(jī)制,智能合約在 ParaTime 層完成執(zhí)行后,將其結(jié)果值提交至共識層。
共識層則從 ParaTime 層中接受各類參數(shù)值,并將這些值寫入下一個區(qū)塊之中,同時處理較為基礎(chǔ)的操作。
而在運行過程中,若存在某個 ParaTime 的運行超載或出錯,其僅會影響出錯 ParaTime 提交到共識層的狀態(tài)更新,不會對其他 ParaTime 的運行產(chǎn)生影響。
為防止某一 ParaTime 層惡意向共識層發(fā)送過多的垃圾信息導(dǎo)致共識層運行速度降低,每一 ParaTime 層必須向共識層支付交易費用,從而增加負(fù)載攻擊的成本。
那么ParaTime層如何與L1主鏈完成對接以及達(dá)成共識呢?
在執(zhí)行結(jié)果的驗證方面,Oasis 采用差異檢測來對 ParaTime 的執(zhí)行結(jié)果進(jìn)行驗證。在執(zhí)行差異檢測時,會從節(jié)點中隨機(jī)選擇計算節(jié)點組成計算委員會,當(dāng)委員會所有成員同意結(jié)果時,則會接受結(jié)果。如若檢測到差異,則使用差異解析協(xié)議對其進(jìn)行處理。差異檢測成本更低執(zhí)行更快,而差異解析則往往會耗費更多的成本。具體執(zhí)行過程中,計算節(jié)點首先將執(zhí)行結(jié)果通過 Gossip協(xié)議網(wǎng)絡(luò)發(fā)送到差異檢測器,檢測結(jié)果若無異常,則由驗證器提交至共識層完成處理和出塊。若是存在爭議,則會啟動差異解析協(xié)議來確定正確結(jié)果,并對產(chǎn)生爭議結(jié)果的節(jié)點進(jìn)行懲罰,由爭議節(jié)點支付差異解析的成本。
不同的 ParaTime 在進(jìn)行并行運算時,可以將每個結(jié)果同步提交至共識層,也可定期提交多個結(jié)果的融合值,以此實現(xiàn) ParaTime 結(jié)果產(chǎn)出量與共識層出塊數(shù)量的解耦合。但其缺點在于無法確定不同 ParaTime 之間的相對順序,如 ParaTime A 產(chǎn)出的結(jié)果 TA 與 ParaTime B 產(chǎn)出的結(jié)果 TB 被同時提交至同一區(qū)塊,則無法判斷 TA 與 TB 的發(fā)生順序。
除此以外,Oasis 還支持通過 IBC 協(xié)議(鏈間通信協(xié)議,Inter-Blockchain Communication Protocol)為不同 ParaTime 間提供通信,通過 TEE(可信執(zhí)行環(huán)境)為平臺提供更高的 隱私和安全性。
隱私計算是 Oasis 的亮點。
Oasis 網(wǎng)絡(luò)支持隱私計算基礎(chǔ)上的智能合約,充分體現(xiàn)了隱私計算的特點。在加密的 ParaTime 中,節(jié)點需要使用 TEE(可信執(zhí)行環(huán)境,Trusted Execution Environment)安全計算技術(shù),TEE 相當(dāng)于為智能合約執(zhí)行提供一個安全島。
數(shù)據(jù)對節(jié)點運營商或應(yīng)用開發(fā)者來說是完全加密的。計算層采用 TEE 可信執(zhí)行環(huán)境運行智能合約,使 Oasis 網(wǎng)絡(luò)可以兼顧性能和隱私,且支持計算密集性應(yīng)用場景,如近期流行的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。
總結(jié)而言,Oasis 通過將共識層與計算層分離的方式,實現(xiàn)了節(jié)點功能的解耦合,從而大大降低了網(wǎng)絡(luò)各個節(jié)點的運行壓力,提高了平臺的運行速度。同時 TEE 為數(shù)據(jù)計算提供了隱私與安全解決方案,在 Web3.0 時代有著豐富的想象空間。
3.2.Arweave:基于存儲共識的計算范式 Arweave(AR)
通過去中心化的運行方式以及 POA(Proof Of Access)共識機(jī)制為用戶提供數(shù)據(jù)存儲服務(wù),同時向提供存儲服務(wù)的礦工給予 AR 獎勵。POA 實現(xiàn)的基礎(chǔ)為 Arweave 獨創(chuàng)的 Blockweaves 結(jié)構(gòu),每一區(qū)塊不僅與先前塊(Previous Block)相連,還同時與一個召回塊(Recall Block)相連,召回塊的生成則取決于先前塊的哈希值以及區(qū)塊高度。在決定出塊礦工時,礦工必須證明他們能夠訪問召回塊中的數(shù)據(jù),從而獲得出塊權(quán),進(jìn)而獲得出塊獎勵。
因此這就要求礦工
1)盡可能多的復(fù)制各類區(qū)塊;
2)盡可能的保存難以復(fù)制的區(qū)塊:
3)盡可能的保存存儲人數(shù)較少的區(qū)塊,從而在開采新塊時獲得更多的優(yōu)勢。同時由于區(qū)塊鏈特有的數(shù)據(jù)可驗證和可追溯的特性,能夠極大程度的確保鏈上數(shù)據(jù)的可信性,從而實現(xiàn)可信的永久存儲。
Arweave 采用 "一次付費,永久存儲"的模式。長期來看 AR 的存儲的成本非常低,甚至接近于零。且 AR 的存儲效率較快,因此,AR 常被比喻為圖靈機(jī)的磁帶,就像磁帶一樣、以較低的成本存儲用戶數(shù)據(jù)。
因此,利用 AR 的高效、低成本的存儲,可以將數(shù)據(jù)計算放在鏈下進(jìn)行,而數(shù)據(jù)源來自于 AR 鏈上、且計算結(jié)果也會存證上鏈。SCP(基于存儲的共識范式,Storage-based Consensus Paradigm)正是實現(xiàn)基于 AR 的計算,即 AR 作為數(shù)據(jù)來源的圖靈磁帶,為鏈下應(yīng)用程序提供數(shù)據(jù)源,計算結(jié)果亦上傳到 AR 存證。
其效率決定于鏈下應(yīng)用程序和計算機(jī)的性能,自然比基于共識機(jī)制的鏈上計算要高。
在以太坊等傳統(tǒng) Layer1 上,計算、存儲以及共識等功能均由節(jié)點負(fù)責(zé),通過 POW 等共識 機(jī)制完成上鏈存證,而受不可能三角的束縛,其效率可想而知。而 SCP 則將鏈上存證與 計算功能相分離。
簡而言之,公鏈本身更像是計算機(jī)硬盤,只負(fù)責(zé)數(shù)據(jù)的存儲。
在保證鏈上存儲數(shù)據(jù)可信的前提下,智能合約的執(zhí)行則可以在鏈下任何具有計算能力的設(shè)備上進(jìn)行。SCP 的理念源于 SmartWeave,其為建立在 Arweave 上的智能合約平臺,通過懶惰評估過程(The Process of Lazy Evaluation)將智能合約的執(zhí)行負(fù)擔(dān)轉(zhuǎn)移到用戶身上。
不同于以太坊每個節(jié)點都要執(zhí)行每一筆交易(這樣的共識會影響計算效能),SmartWeave 采用“惰性評估”系統(tǒng),將交易驗證的計算交給用戶。
當(dāng)用戶與 SmartWeave 合約交互時,他們會評估 dApp 上的每筆先前交易,確認(rèn)與鏈上存儲數(shù)據(jù)最新狀態(tài)一致,然后將交易結(jié)果寫入 Arweave 網(wǎng)絡(luò)進(jìn)行存證,如此重復(fù)。
運行時,可將 SmartWeave 看作是鏈外運行的虛擬機(jī)。其通過讀取應(yīng)用程序的代碼以及 Arweave 上的輸入?yún)?shù),在本地完成交易的執(zhí)行,之后再將輸出結(jié)果與 Arweave 同步,從而實現(xiàn)鏈上存儲與鏈下計算的分離。
用戶的驗證工作類似區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu),逐級追溯、驗證交易,而這一切并不需要在鏈上完成,而是用戶在鏈下完成的工作,也就是說,這個環(huán)節(jié)可以不受共識機(jī)制的束縛。
SCP 的另一個開發(fā)實例是 Arweave 上的 everPay。
everPay 是一個跨鏈代幣支付協(xié)議,為用戶和商戶之間提供實時的代幣支付服務(wù)。everPay 將其他公鏈的各類資產(chǎn)鎖定在一個智能合約之中,并將其映射成相應(yīng)的資產(chǎn)。
如當(dāng)用戶將資產(chǎn)從 Ethereum 跨鏈至 Arweave 時,首先由 Coordinator 收集和驗證交易,并將各筆交易放入序列化的待處理交易池中,隨后待處理的交易會被分批打包,每隔一段時間上傳至 Arweave。此后 Detector 會對鏈上全局狀態(tài)以及賬戶余額進(jìn)行驗證,任何用戶都可以申請成為 Detector 節(jié)點。
而 Arweave 上未經(jīng)處理的交易則會由 Watchmen 來使用多重簽名或閾值簽名來完成,并將完成結(jié)果返回至 Ethereum。因此,合約的執(zhí)行均在鏈下完成,數(shù)據(jù)均存儲于鏈上,實現(xiàn)存儲與計算的分離。
總結(jié)而言,基于存儲的共識范式建立起了 Offchain-Dapp 的原型。
鏈上存儲,鏈下運行,充分發(fā)揮鏈上存儲可溯源、不可篡改的特性。在基于數(shù)據(jù)可信的基礎(chǔ)上,解放鏈上運行所帶來的的負(fù)載壓力,將其分散至用戶方,更合理的使用 Web3.0 資源的同時,提高 Dapp 的運行效率。
同時,SCP 的開發(fā)可以基于任何編程語言進(jìn)行,且鏈下計算的效能提高了可用性和可擴(kuò)展性,存儲成本低;同時,鏈下部署應(yīng)用程序與 Web2.0 應(yīng)用可以進(jìn)行很好的對接。
另外,如何確保鏈下應(yīng)用程序執(zhí)行的計算可信——即如何實現(xiàn) SCP 的共識?
數(shù)據(jù)來自于 AR 鏈上,應(yīng)用程序也可以開源發(fā)布在鏈上,因此,計算程序和數(shù)據(jù)均有鏈上存證保證,如果用戶本地修改應(yīng)用程序和數(shù)據(jù),那么相當(dāng)于形成了一次分叉,并不源數(shù)據(jù)和應(yīng)用程序的計算結(jié)果共識。
這一點與區(qū)塊鏈項目的開源代碼類似,礦工節(jié)點運行一樣的開源客戶端腳本,形成一致共識。如果對客戶端代碼(或者數(shù)據(jù)源)進(jìn)行修改,那么將形成一次分叉。
因此,雖然運算是在鏈下執(zhí)行,但來自于鏈上的數(shù)據(jù)源和開源程序代碼確保了鏈下結(jié)果可信。
3.3.Mina:零知識智能合約 Snapp
在主鏈和外部應(yīng)用環(huán)境之間進(jìn)行數(shù)據(jù)計算協(xié)同工作,為了使得最終的結(jié)果達(dá)成共識,需要證明每次計算使用的數(shù)據(jù)與鏈上的區(qū)塊中數(shù)據(jù)一致。
對于存儲在一連串歷史區(qū)塊中的數(shù)據(jù),在主鏈和外部應(yīng)用環(huán)境之間,如何以較輕便的、去中心化的方式來驗證數(shù)據(jù)的有效性?Mina 作為目前最為輕量級的公鏈平臺,通過遞歸零知識證明將區(qū)塊鏈替換為易于驗證、區(qū)塊大小恒定的加密證明,不必窮盡所有區(qū)塊,而以最新區(qū)塊(21kb 左右)就可以實現(xiàn)驗證。
這樣大幅減少了每位用戶需要下載的數(shù)據(jù)量,降低用戶點對點連接的門檻,提高了網(wǎng)絡(luò)的去中心化程度。
一般區(qū)塊鏈公鏈整個賬本數(shù)據(jù)量非常大(如比特幣賬近 400G),且按照時間順序分散在很多區(qū)塊中,為數(shù)據(jù)驗證帶來較大是負(fù)擔(dān)。Mina 則使用遞歸 zk-SNARK(零知識證明)實現(xiàn)驗證證明,只需要把每個區(qū)塊中的交易做一次驗證證明,然后將證明存入?yún)^(qū)塊中,且不會為每一個區(qū)塊單獨做一次證明,而是每一次新區(qū)塊做證明時連帶上一次的區(qū)塊證明一起生成一次證明,存入最新區(qū)塊。
可以簡單理解為,類似套娃一樣,最新區(qū)塊將本區(qū)塊內(nèi)的數(shù)據(jù)和前一個區(qū)塊的驗證證明數(shù)據(jù)一起做一個類似快照的證明。
這樣,每一個區(qū)塊都只需要一個次證明結(jié)果,就可以將所有歷史區(qū)塊的數(shù)據(jù)證明包含在內(nèi)。
舉一個例子比喻,旅行者為了證明自己到過哪些景點,可以每到一個景點便打卡拍照,且下一次景點拍照時候手拿上一次景點照片一起拍照,如此遞歸下去,每一張照片都套娃式的包含了前面所有景點的打卡信息,那么只需要一張最新的照片,就能夠證明該旅行者確實到過所有的景點。
這樣就實現(xiàn)了一種效果:區(qū)塊鏈上儲存的全都是交易正確性的證明,而非交易本身。因為前面說到的這種證明占用空間很小,因此區(qū)塊的大小得以被壓縮。
在此基礎(chǔ)上,Mina 開發(fā)了更具可延展性以及以隱私為中心的 Dapp——Snapp。Snapp 由智能合約和 UI 界面兩部分組成。由于 Snapp 基于零知識證明(zk-SNARKs)構(gòu)建,開發(fā)者需要構(gòu)建證明者函數(shù)和相應(yīng)的驗證者函數(shù)來生成和處理零知識證明。
證明者函數(shù)作為 Snapp 的一部分直接運行在用戶的 web 瀏覽器,當(dāng)用戶與 Snapp 的 UI 界面交互時,用戶需要將私有數(shù)據(jù)輸入(PRIVATE INPUTS)和公共數(shù)據(jù)輸入(PUBLIC INPUTS)提交給證明者函數(shù)以生成零知識證明。
在生成零知識證明之后,不再需要用戶提供任何私有數(shù)據(jù)輸入,進(jìn)而保護(hù)用戶隱私安全。驗證者函數(shù)則用于驗證零知識證明是否通過了證明者函數(shù)中定義的所有約束函數(shù)(也就是數(shù)據(jù)是否有效),一般由 Mina 網(wǎng)絡(luò)完成驗證。
具體運行上,證明功能在用戶的 web 瀏覽器上完成,其生成的零知識證明(驗證密鑰)則會被存儲在給定 Snapp 賬戶的鏈上,之后發(fā)送至 Mina 網(wǎng)絡(luò)進(jìn)行驗證。
因此,交易的生成和數(shù)據(jù)計算在鏈下完成,同時該過程會生成可用于驗證交易的零知識證明,而用戶原始私有數(shù)據(jù)隱私是得到充分保護(hù)的。
鏈上只負(fù)責(zé)對該證明進(jìn)行驗證,通過驗證后將其上鏈保存,并對 Snapp 的狀態(tài)進(jìn)行更新。
從用戶的角度來看,當(dāng)用戶與 Snapp 進(jìn)行交互時,用戶通過智能合約的前端 UI 與之進(jìn) 行交互,之后 Snapp 通過證明者函數(shù)將用戶輸入的數(shù)據(jù)在本地生成零知識證明,數(shù)據(jù)可以是私有的(不會被透明公開)也可以是公共(存儲在鏈上或鏈下)的。
除此以外,還會生成與交易有關(guān)的 Snapp 狀態(tài)更新列表,用于更改 Snapp 狀態(tài)。之后用戶將數(shù)據(jù)提交至 Mina 網(wǎng)絡(luò),Mina 網(wǎng)絡(luò)會通過 Snapp 給出的驗證者函數(shù)對該筆交易進(jìn)行驗證,成功通過后更新 Snapp 的狀態(tài)。
例如用戶可以將自己的征信數(shù)據(jù)在本地生成證明并提交上鏈,可以在不泄露自身隱私數(shù)據(jù)的情況下,得到 DeFi 系統(tǒng)靈活的信貸服務(wù);而傳統(tǒng)的 DeFi 借貸服務(wù)都是需要以資產(chǎn)的超額抵押為前提。
這個應(yīng)用場景的意義在于,將多個生態(tài)的數(shù)據(jù)和應(yīng)用實現(xiàn)快速對接,這些生態(tài)可以是區(qū)塊鏈、也可以是鏈下生態(tài)。
因此,Snapp 應(yīng)用可以很方便充當(dāng)跨鏈、跨鏈上鏈下的橋梁角色。
3.4.小結(jié)
從上述三個案例來看,Oasis 平臺在設(shè)計時就考慮到了模塊化分層設(shè)計,因此在設(shè)計之 初就完成了計算與共識的分層。
而 Arweave 與 Mina 更類似使用分層解決方案來主動的將計算與存儲等功能進(jìn)行分離,如 Arweave 的 SCP 與 Mina 的 Snapp 均是在公鏈運行一段時間后才誕生的。
總結(jié)而言,前者為設(shè)計上的分層,后兩者為解決方案上的分層。拋開這兩類不同路徑的整體表現(xiàn)情況,對于現(xiàn)有公鏈而言,解決方案的路徑似乎能夠更快速的完成共識、計算與存儲的分層,并且能根據(jù)自身特點做出相應(yīng)的調(diào)整。
但如若分層與模塊化將成為不久將來的發(fā)展方向,前者的設(shè)計架構(gòu)上的轉(zhuǎn)變似乎才能更好的面對時代的需求。
4.Web2.5 時代的剛需:預(yù)言機(jī)
也許未來 Web3.0 的真是樣子難以預(yù)測,但毫無疑問的是,Web2.0 時代的數(shù)據(jù)和應(yīng)用將在通往 Web3.0 時代的路上同時存在,并將不斷與 Web3.0 進(jìn)行融合——數(shù)據(jù)將在所謂的新的 Web3.0 應(yīng)用生態(tài)和當(dāng)西 Web2.0 生態(tài)之間共享,應(yīng)用程序?qū)M跨 Web3.0 和 Web2.0 系統(tǒng)之間運行,用戶將同時屬于兩個生態(tài)世界。
我們不妨將 Web2.0 向 Web3.0 過渡的時期成為 Web2.5 時代。
在 Web2.5 時代,如何將數(shù)據(jù)在兩個生態(tài)之間共享、程序如何跨兩個生態(tài)運行、兩個生態(tài)系統(tǒng)融合將是時代的剛需。
將數(shù)據(jù)在中心化世界和去中心化世界共享,將催生預(yù)言機(jī)類應(yīng)用的巨大需求。Web2.0 時代 API 接口成為 App 獲取外部數(shù)據(jù)的重要方式。
API 接口即應(yīng)用程序接口(Application Programming Interface)是一組預(yù)先定義好的函數(shù)或 HTTP 接口,其允許用戶或開發(fā)人員不訪問源碼而直接調(diào)用程序的例程。
對于 app 而言,API 接口成為了 APP 獲取外部數(shù)據(jù)以及輸出自身數(shù)據(jù)的窗口。而對于鏈上應(yīng)用程序 Dapp 而言,由于區(qū)塊鏈本身確定、封閉的特性,Dapp 一般無法直接獲取鏈外數(shù)據(jù)(如 Dapp 從 Coingecko 上獲取 BTC 實時報價)。
預(yù)言機(jī)(Oracle machine)正是區(qū)塊鏈外信息寫入?yún)^(qū)塊鏈內(nèi)的機(jī)制,其本質(zhì)是為智能合約提供外部信息的第三方服務(wù),當(dāng)智能合約請求鏈外數(shù)據(jù)時,由預(yù)言機(jī)將鏈外數(shù)據(jù)輸入鏈上。
目前 ChainLink 為鏈上使用較多的預(yù)言機(jī)協(xié)議之一,其使用第三方預(yù)言機(jī)的方式運行,即在鏈上合約請求外部數(shù)據(jù)時,合約的請求將發(fā)送給預(yù)言機(jī)合約,之后預(yù)言機(jī)合約將相關(guān)事件發(fā)送給第三方的鏈下 Chainlink 網(wǎng)絡(luò),由 ChainLink 網(wǎng)絡(luò)完成外部數(shù)據(jù)的收集工作,此后再次通過預(yù)言機(jī)合約將數(shù)據(jù)返回請求數(shù)據(jù)的合約。
該方法的好處在于由 Chainlink 提供的第三方預(yù)言機(jī)通過預(yù)定的共識規(guī)則來確定結(jié)果能夠確保數(shù)據(jù)傳輸?shù)陌踩裕欢鵁o效冗余(第三方預(yù)言機(jī)沒有 API 提供者直接提供外部數(shù)據(jù)高效)和缺少透明度(第三方網(wǎng)絡(luò)無法得知數(shù)據(jù)來源)的存在導(dǎo)致第三方預(yù)言機(jī)仍面對不少的挑戰(zhàn)。
API3 為解決第三方預(yù)言機(jī)存在的問題,其采用第一方預(yù)言機(jī)的方式將 API 的提供直接交給了由數(shù)據(jù)提供商運營的預(yù)言機(jī),組成 dAPI,并通過 DAO 管理其數(shù)據(jù)饋送。
運行時,dApps 訂閱 dAPIs 服務(wù)并支付相應(yīng)的訂閱費,以此獲取數(shù)據(jù)或服務(wù),當(dāng)調(diào)用的數(shù)據(jù)出錯時,使用 Staking Pool 中的資金為訂閱支付賠償。
API 提供著向提供 dAPIs,各自運行各自的預(yù)言機(jī)服務(wù),由 API3 DAO 向其支付相應(yīng)的報酬。
Stakers 通過質(zhì)押 API3 Token,為質(zhì)押池提供保險金并參與 API3 DAO 的治理,主要包括選擇較為優(yōu)質(zhì)的服務(wù)商進(jìn)入聚合器 dAPIs。
鏈下計算很重要的一點在于保證鏈上數(shù)據(jù)的可信性,如按照數(shù)據(jù)來源將鏈上數(shù)據(jù)分為鏈上產(chǎn)生和鏈下導(dǎo)入兩類,則需要同時保證該兩類數(shù)據(jù)的可信性。
API3 等預(yù)言機(jī)協(xié)議的存在保證了鏈下導(dǎo)入數(shù)據(jù)的可信性,但是否存在一種更為高效的方式,將原本需要鏈下導(dǎo)入的數(shù)據(jù)直接交由鏈下計算,從而減少鏈上負(fù)載,還值得我們?nèi)ヌ剿鳌?/p>
風(fēng)險提示
區(qū)塊鏈商業(yè)模式落地不及預(yù)期:Web3.0 基于區(qū)塊鏈、密碼學(xué)等技術(shù),相關(guān)技術(shù)和項目處于發(fā)展初期,存在商業(yè)模式落地不及預(yù)期的風(fēng)險。
監(jiān)管政策的不確定性:Web3.0 實際運行過程中涉及到多項金融、網(wǎng)絡(luò)及其他監(jiān)管政策,目前各國監(jiān)管政策還處于研究和探索階段,并沒有一個成熟的監(jiān)管模式,所以行業(yè)面臨監(jiān)管政策不確定性的風(fēng)險。
—————————————————————
請您關(guān)注,了解每日最新的行業(yè)分析報告!
報告屬于原作者,我們不做任何投資建議!
如有侵權(quán),請私信刪除,謝謝!