Web3.0程式該跑在哪裡?

買賣虛擬貨幣
探索鏈外計算採用偏中心化等手段能夠得到更高的擴充套件性

摘要

web3.0時代,網際網路底層不會全部基於區塊鏈構建,資料計算也不會全部跑在公鏈的“獨木橋”上。考慮到資料計算的效率問題、以及不同底層程式語言環境,web3.0時代的資料計算基礎層將是複雜多樣的環境。因此,如何破解區塊鏈時代資料計算效率成為下一代計算正規化的重點方向。

web3.0時代的區塊鏈基礎設施,光靠共識機制創新以及跨鏈是遠遠不夠的,脫鏈/鏈外計算(off-chain)目前已經成為解決問題的大趨勢。由於不可能三角的束縛,探索鏈外計算採用偏中心化等手段能夠得到更高的擴充套件性,這種方案的關鍵是如何將鏈外計算結果在鏈上得到一致共識,透過tee、零知識證明等技術手段實現鏈外資料計算結果回到主鏈上達成一致共識和安全。本報告分析以oasis、arweave、mina等鏈下計算模式為案例,分析了web3.0時代資料計算的可能正規化,以及如何實現鏈上鍊下、鏈間資料計算協同的可能方式。

圍繞效能的升級,公鏈的演進大致經歷瞭如下歷程:

1)共識機制的探索。共識機制經歷了從pow到pos、再到各類pos機制的改進版本,無非是想解決公鏈的擴充套件性問題,但依然受不可能三角束縛;

2)跨鏈試圖以多鏈來承載應用。跨鏈則是為了考慮一條公鏈不能適用於所有場景,需要多個公鏈來解決資料承載和計算執行。跨鏈依舊要對束縛行業的不可能三角進行相應的平衡;

3)off-chain(脫鏈計算、鏈外計算)來解放主鏈負擔正在成為趨勢。從以太坊2.0的分片到l2網路,全部工作無非圍繞如何解放主鏈負擔來進行。整體上的思路就是脫鏈/鏈外計算,把計算(儲存等資源消耗)與存證分開。脫鏈計算最核心的問題就是鏈上鍊下資料驗證問題,或者說,如何使鏈下的資料計算在鏈上得到共識,使得這種方式能夠被去中心化使用者相信。

本章節介紹oasis、arweave的scp模式以及mina生態的snapp三個典型的脫鏈計算專案案例。從這些不盡相同的實現方式,可以窺見web3.0世界的資料計算實現方案繁雜的真實一面。未來web3.0世界,也許不是理想的公鏈獨木橋,而是紛繁複雜的百花齊放。

在web2.5時代,如何將資料在兩個生態之間共享、程式如何跨兩個生態執行、兩個生態系統融合將是時代的剛需。將資料在中心化世界和去中心化世界共享,將催生預言機類應用的巨大需求。web2.0時代的資料和應用將在通往web3.0時代的路上長期存在,並將不斷與web3.0進行融合——資料將在所謂的新的web3.0應用生態和當西web2.0生態之間共享,應用程式將橫跨web3.0和web2.0系統之間執行(web2.5時代),使用者將同時屬於兩個生態世界。另外,龐大的web2.0時代的資料資產和計算方式將會繼續長期存在,這些勢必構成了web3.0時代的一部分。對於這部分資料和計算如何與區塊鏈主導的新生態進行融合,同時資料的儲存、網路和計算記憶體等網際網路基礎資源的呼叫該如何協調,這些都是巨大的挑戰。這方面的問題不是光靠跨鏈、預言機就能夠解決的。

風險提示:區塊鏈商業模式落地不及預期;監管政策的不確定性。

一、核心觀點

web3.0時代,網際網路底層不會全部基於區塊鏈構建,資料計算也不會全部跑在公鏈的獨木橋上。考慮到資料計算的效率問題、以及不同底層程式語言環境,web3.0時代的資料計算基礎層將是複雜多樣的環境。因此,如何破解區塊鏈時代資料計算效率成為下一代計算正規化的重點方向。

對於去中心化系統,光靠共識機制創新以及跨鏈是遠遠不夠的,脫鏈/鏈外計算(off-chain)目前已經成為解決問題的大趨勢。由於不可能三角的束縛,探索鏈外計算採用偏中心化等手段能夠得到更高的擴充套件性,這種方案的關鍵是如何將鏈外計算結果在鏈上得到一致共識,透過tee、零知識證明等技術手段實現鏈外資料計算結果回到主鏈上達成一致共識和安全。本報告分析以oasis、arweave、mina等鏈下計算模式為案例,分析了web3.0時代資料計算的可能正規化,以及如何實現鏈上鍊下、鏈間資料計算協同的可能方式。

二、web3.0的共識:公鏈獨木橋外可以做很多事

以以太坊為代表的公鏈在基礎效能方面的限制,光靠共識機制方面的創新是不夠的,靠多鏈之間的跨接亦不足以承載web3.0的資料和計算。於是以太坊2.0的分片、l2、波卡平行鏈等各類擴充套件方案成為當下現實的解決方案。這些方案細節盡不相同,但最終都傳遞了一種市場共識:即,web3.0資料和計算不會都跑在公鏈這個獨木橋上,大量資料和計算處理會在公鏈之外實現(可以是l2、平行鏈,甚至可以是其他非區塊鏈方式)。也就是說,脫(主)鏈計算(off-chain)已經成為行業的共識,尤其是對於大量的資料處理和計算,會在主鏈之外完成。

本文暫時稱各類在底層公鏈主鏈之外的方式為鏈外計算。如何在公鏈之外建立有效的資料和計算平臺,承載web3.0各類應用成為未來重要的問題。

2.1.通往web3.0之路:從共識機制、跨鏈、模組化公鏈的探索

公鏈基礎效能是行業一個繞不開的終極問題。圍繞效能的升級,公鏈的演進大致經歷瞭如下歷程:

1) 共識機制的探索。共識機制經歷了從pow到pos機制,再到各類pos機制的改進版本,無非是想解決公鏈的擴充套件性問題。但無論怎樣的共識機制,完成一致性的共識勢必犧牲系統的工作效能,這是牢不可破的不可能三角;

2) 跨鏈試圖以多鏈來承載應用。跨鏈則是為了考慮一條公鏈不能適用於所有場景,需要多個公鏈來解決資料承載和計算執行。例如,波卡(polkadot)作為一個可伸縮的異構多鏈系統,能夠傳遞任何資料(不只限於代幣)到所有區塊鏈,實現各個鏈之間資產與資料的互相流通。這對於區塊鏈網路的擴充套件性和應用多樣性來說非常重要,單獨一條區塊鏈的效能畢竟有限,且在專用和通用之間難以平衡。同時,束縛行業的不可能三角(即擴充套件性、安全和去中心化不可能同時達到)也要進行相應的平衡。

3) off-chain(脫鏈計算、鏈外計算)來解放主鏈負擔。從以太坊2.0的分片到l2網路,全部工作無非圍繞如何解放主鏈負擔來進行。即,繁重的資料計算交給主鏈之外進行——可能是分片這類劃分任務群組的方式,或者l2、甚至是非區塊鏈系統來承載資料計算,最終結果返回到主鏈存證。主鏈的一致性共識提供資料結果的驗證,保證充分的去中心化和安全,而繁重的資料計算交給主鏈之外的平臺進行。

雖然這些效能卓越的平臺工作時犧牲了一些去中心化或者安全,但可以透過零知識證明、tee等技術手段實現主鏈對鏈外平臺的監督和驗證。整體上的思路就是脫鏈/鏈外計算,把計算(儲存等資源消耗)與存證分開。

近期,行業出現一個新提法:模組化公鏈。類似網際網路協議分層,未來公鏈會分執行層(execution layer )、結算層(settlement layer)、資料可用性層(data availability layer)。在以太坊上,執行層就是執行各類dapp的l2,然後將打包的的交易資料(rollup)返回到以太坊主鏈上做驗證上鍊,目前資料同樣是儲存到以太坊上(當然是做rollup打包後),但對於日益膨脹的原始資料,有人考慮設立資料可用性層來儲存資料,進一步解放以太坊主鏈,使其只做驗證計算工作(共識)——畢竟,龐大的鏈上鍊下資料驗證問題資料儲存會進一步限制以太坊的效能。

當然,這種理想的分層方法還未得到驗證,包括vitalik也對資料可用性層安全性提出了質疑的聲音。脫鏈計算最核心的問題就是鏈上鍊下資料驗證問題,或者說,如何使鏈下的資料計算在鏈上得到共識,使得這種方式能夠被去中心化使用者相信。

對於分片、l2和鏈外計算,公鏈就好比是貨物運輸管理嚴格的主幹道(一致共識),不可能所有資料都跑在主幹道上,支路的運輸車輛,透過零知識證明等手段證明自己工作嚴謹、可信的前提下,可以將繁複的鄉村毛細小路上的貨物打包裝箱後執行在主幹道上。如何向主鏈證明其資料結果可信,則要藉助零知識證明、tee等靈活的技術手段,以適應不同的工作場景。

另外,龐大的web2.0時代的資料資產和計算方式將會繼續長期存在,這些勢必構成了web3.0時代的一部分。對於這部分資料和計算如何與區塊鏈主導的新生態進行融合,同時資料的儲存、網路和計算記憶體等網際網路基礎資源的呼叫該如何協調,這些都是巨大的挑戰。這方面的問題不是光靠跨鏈、預言機就能夠解決的。

三、web3.0資料計算:鏈外計算的三種模式

雖然資料計算脫離了主鏈,但分片、l2等技術手段還是考慮基礎資料計算依託區塊鏈,兼顧了去中心化的考慮。由於不可能三角的束縛,探索鏈外計算採用偏中心化等手段能夠得到更高的擴充套件性,這種方案的關鍵是如何將鏈外計算結果在鏈上得到一致共識,透過tee、零知識證明等技術手段實現鏈外資料計算結果回到主鏈上達成一致共識和安全。

鏈外計算的核心問題是是脫離主鏈,資料計算如何獲得共識?也就是說,如何使得使用者相信主鏈之外的計算?

本章節介紹三個典型案例。從這些不盡相同的實現方式,可以窺見web3.0世界的資料計算實現方案繁雜的真實一面。未來web3.0世界,也許不是理想的公鏈獨木橋,而是紛繁複雜的百花齊放。

3.1.oasis:共識層與執行層(paratime)分離的模組化分層設計

oasis網路是一個運用權益證明(pos)、去中心化的layer1區塊鏈網路,其使用的模組化架構實現了共識層和智慧合約執行層paratime層兩部分的解耦合,即資料計算(合約執行)脫離了l1主鏈(即共識層),放在paratime層執行,且充分考慮了隱私計算。同時在設計上,對共識層進行了儘可能簡單化的設計,共識層僅處理token的轉移、質押以及解繫結等較為簡單的操作,這一設計類似於以太坊layer2專案將智慧合約的執行與共識操作隔離相類似,均有助於提高網路的安全性與效率。而在paratime層的設計上,oasis將該層的各個paratime模組相分離,不同的paratime模組可針對不同的需求做出相應的最佳化調整,彼此之間互相獨立的完成執行。

執行時,不同的paratime構建各自不同的執行環境、驗證機制以及加密機制,智慧合約在paratime層完成執行後,將其結果值提交至共識層。共識層則從paratime層中接受各類引數值,並將這些值寫入下一個區塊之中,同時處理較為基礎的操作。而在執行過程中,若存在某個paratime的執行超載或出錯,其僅會影響出錯paratime提交到共識層的狀態更新,不會對其他paratime的執行產生影響。為防止某一paratime層惡意向共識層傳送過多的垃圾資訊導致共識層執行速度降低,每一paratime層必須向共識層支付交易費用,從而增加負載攻擊的成本。

那麼paratime層如何與l1主鏈完成對接以及達成共識呢?在執行結果的驗證方面,oasis採用差異檢測來對paratime的執行結果進行驗證。在執行差異檢測時,會從節點中隨機選擇計算節點組成計算委員會,當委員會所有成員同意結果時,則會接受結果。如若檢測到差異,則使用差異解析協議對其進行處理。差異檢測成本更低執行更快,而差異解析則往往會耗費更多的成本。具體執行過程中,計算節點首先將執行結果透過gossip協議網路傳送到差異檢測器,檢測結果若無異常,則由驗證器提交至共識層完成處理和出塊。若是存在爭議,則會啟動差異解析協議來確定正確結果,並對產生爭議結果的節點進行懲罰,由爭議節點支付差異解析的成本。

不同的paratime在進行並行運算時,可以將每個結果同步提交至共識層,也可定期提交多個結果的融合值,以此實現paratime結果產出量與共識層出塊數量的解耦合。但其缺點在於無法確定不同paratime之間的相對順序,如paratime a產出的結果ta與paratime b產出的結果tb被同時提交至同一區塊,則無法判斷ta與tb的發生順序。除此以外,oasis還支援透過ibc協議(鏈間通訊協議,inter-blockchain communication protocol)為不同paratime間提供通訊,透過tee(可信執行環境)為平臺提供更高的隱私和安全性。

隱私計算是oasis的亮點。oasis網路支援隱私計算基礎上的智慧合約,充分體現了隱私計算的特點。在加密的paratime中,節點需要使用tee(可信執行環境,trusted execution environment)安全計算技術,tee相當於為智慧合約執行提供一個安全島。資料對節點運營商或應用開發者來說是完全加密的。計算層採用tee可信執行環境執行智慧合約,使oasis網路可以兼顧效能和隱私,且支援計算密集性應用場景,如近期流行的機器學習和深度學習。

總結而言,oasis透過將共識層與計算層分離的方式,實現了節點功能的解耦合,從而大大降低了網路各個節點的執行壓力,提高了平臺的執行速度。同時tee為資料計算提供了隱私與安全解決方案,在web3.0時代有著豐富的想象空間。

3.2.arweave:基於儲存共識的計算正規化

arweave(ar)透過去中心化的執行方式以及poa(proof of access)共識機制為使用者提供資料儲存服務,同時向提供儲存服務的礦工給予ar獎勵。poa實現的基礎為arweave獨創的blockweaves結構,每一區塊不僅與先前塊(previous block)相連,還同時與一個召回塊(recall block)相連,召回塊的生成則取決於先前塊的雜湊值以及區塊高度。在決定出塊礦工時,礦工必須證明他們能夠訪問召回塊中的資料,從而獲得出塊權,進而獲得出塊獎勵。因此這就要求礦工1)儘可能多的複製各類區塊;2)儘可能的儲存難以複製的區塊:3)儘可能的儲存儲存人數較少的區塊,從而在開採新塊時獲得更多的優勢。同時由於區塊鏈特有的資料可驗證和可追溯的特性,能夠極大程度的確保鏈上資料的可信性,從而實現可信的永久儲存。

arweave採用 "一次付費,永久儲存 "的模式。長期來看ar的儲存的成本非常低,甚至接近於零。且ar的儲存效率較快,因此,ar常被比喻為圖靈機的磁帶,就像磁帶一樣、以較低的成本儲存使用者資料。

因此,利用ar的高效、低成本的儲存,可以將資料計算放在鏈下進行,而資料來源來自於ar鏈上、且計算結果也會存證上鍊。scp(基於儲存的共識正規化,storage-based consensus paradigm)正是實現基於ar的計算,即ar作為資料來源的圖靈磁帶,為鏈下應用程式提供資料來源,計算結果亦上傳到ar存證。其效率決定於鏈下應用程式和計算機的效能,自然比基於共識機制的鏈上計算要高。

在以太坊等傳統layer1上,計算、儲存以及共識等功能均由節點負責,透過pow等共識機制完成上鍊存證,而受不可能三角的束縛,其效率可想而知。而scp則將鏈上存證與計算功能相分離。簡而言之,公鏈本身更像是計算機硬碟,只負責資料的儲存。在保證鏈上儲存資料可信的前提下,智慧合約的執行則可以在鏈下任何具有計算能力的裝置上進行。

scp的理念源於smartweave,其為建立在arweave上的智慧合約平臺,透過懶惰評估過程(the process of lazy evaluation)將智慧合約的執行負擔轉移到使用者身上。不同於以太坊每個節點都要執行每一筆交易(這樣的共識會影響計算效能),smartweave採用“惰性評估”系統,將交易驗證的計算交給使用者。當使用者與 smartweave 合約互動時,他們會評估 dapp 上的每筆先前交易,確認與鏈上儲存資料最新狀態一致,然後將交易結果寫入 arweave 網路進行存證,如此重複。執行時,可將smartweave看作是鏈外執行的虛擬機器。其透過讀取應用程式的程式碼以及arweave上的輸入引數,在本地完成交易的執行,之後再將輸出結果與arweave同步,從而實現鏈上儲存與鏈下計算的分離。使用者的驗證工作類似區塊的鏈式結構,逐級追溯、驗證交易,而這一切並不需要在鏈上完成,而是使用者在鏈下完成的工作,也就是說,這個環節可以不受共識機制的束縛。

scp的另一個開發例項是arweave上的everpay。everpay是一個跨鏈代幣支付協議,為使用者和商戶之間提供實時的代幣支付服務。everpay將其他公鏈的各類資產鎖定在一個智慧合約之中,並將其對映成相應的資產。如當使用者將資產從ethereum跨鏈至arweave時,首先由coordinator收集和驗證交易,並將各筆交易放入序列化的待處理交易池中,隨後待處理的交易會被分批打包,每隔一段時間上傳至arweave。此後detector會對鏈上全域性狀態以及賬戶餘額進行驗證,任何使用者都可以申請成為detector節點。而arweave上未經處理的交易則會由watchmen來使用多重簽名或閾值簽名來完成,並將完成結果返回至ethereum。因此,合約的執行均在鏈下完成,資料均儲存於鏈上,實現儲存與計算的分離。

總結而言,基於儲存的共識正規化建立起了offchain-dapp的原型。鏈上儲存,鏈下執行,充分發揮鏈上儲存可溯源、不可篡改的特性。在基於資料可信的基礎上,解放鏈上執行所帶來的的負載壓力,將其分散至使用者方,更合理的使用web3.0資源的同時,提高dapp的執行效率。同時,scp的開發可以基於任何程式語言進行,且鏈下計算的效能提高了可用性和可擴充套件性,儲存成本低;同時,鏈下部署應用程式與web2.0應用可以進行很好的對接。

另外,如何確保鏈下應用程式執行的計算可信——即如何實現scp的共識?資料來自於ar鏈上,應用程式也可以開源釋出在鏈上,因此,計算程式和資料均有鏈上存證保證,如果使用者本地修改應用程式和資料,那麼相當於形成了一次分叉,並不源資料和應用程式的計算結果共識。這一點與區塊鏈專案的開原始碼類似,礦工節點執行一樣的開源客戶端指令碼,形成一致共識。如果對客戶端程式碼(或者資料來源)進行修改,那麼將形成一次分叉。因此,雖然運算是在鏈下執行,但來自於鏈上的資料來源和開源程式程式碼確保了鏈下結果可信。

3.3.mina:零知識智慧合約snapp

在主鏈和外部應用環境之間進行資料計算協同工作,為了使得最終的結果達成共識,需要證明每次計算使用的資料與鏈上的區塊中資料一致。對於儲存在一連串歷史區塊中的資料,在主鏈和外部應用環境之間,如何以較輕便的、去中心化的方式來驗證資料的有效性?mina作為目前最為輕量級的公鏈平臺,透過遞迴零知識證明將區塊鏈替換為易於驗證、區塊大小恆定的加密證明,不必窮盡所有區塊,而以最新區塊(21kb左右)就可以實現驗證。這樣大幅減少了每位使用者需要下載的資料量,降低使用者點對點連線的門檻,提高了網路的去中心化程度。

一般區塊鏈公鏈整個賬本資料量非常大(如比特幣賬近400g),且按照時間順序分散在很多區塊中,為資料驗證帶來較大是負擔。mina則使用遞迴zk-snark(零知識證明)實現驗證證明,只需要把每個區塊中的交易做一次驗證證明,然後將證明存入區塊中,且不會為每一個區塊單獨做一次證明,而是每一次新區塊做證明時連帶上一次的區塊證明一起生成一次證明,存入最新區塊。可以簡單理解為,類似套娃一樣,最新區塊將本區塊內的資料和前一個區塊的驗證證明資料一起做一個類似快照的證明。這樣,每一個區塊都只需要一個次證明結果,就可以將所有歷史區塊的資料證明包含在內。舉一個例子比喻,旅行者為了證明自己到過哪些景點,可以每到一個景點便打卡拍照,且下一次景點拍照時候手拿上一次景點照片一起拍照,如此遞迴下去,每一張照片都套娃式的包含了前面所有景點的打卡資訊,那麼只需要一張最新的照片,就能夠證明該旅行者確實到過所有的景點。

這樣就實現了一種效果:區塊鏈上儲存的全都是交易正確性的證明,而非交易本身。因為前面說到的這種證明佔用空間很小,因此區塊的大小得以被壓縮。

在此基礎上,mina開發了更具可延展性以及以隱私為中心的dapp——snapp。snapp由智慧合約和ui介面兩部分組成。由於snapp基於零知識證明(zk-snarks)構建,開發者需要構建證明者函式和相應的驗證者函式來生成和處理零知識證明。

證明者函式作為snapp的一部分直接執行在使用者的web瀏覽器,當使用者與snapp的ui介面互動時,使用者需要將私有資料輸入(private inputs)和公共資料輸入(public inputs)提交給證明者函式以生成零知識證明。

在生成零知識證明之後,不再需要使用者提供任何私有資料輸入,進而保護使用者隱私安全。驗證者函式則用於驗證零知識證明是否透過了證明者函式中定義的所有約束函式(也就是資料是否有效),一般由mina網路完成驗證。

具體執行上,證明功能在使用者的web瀏覽器上完成,其生成的零知識證明(驗證金鑰)則會被儲存在給定snapp賬戶的鏈上,之後傳送至mina網路進行驗證。因此,交易的生成和資料計算在鏈下完成,同時該過程會生成可用於驗證交易的零知識證明,而使用者原始私有資料隱私是得到充分保護的。鏈上只負責對該證明進行驗證,透過驗證後將其上鍊儲存,並對snapp的狀態進行更新。

從使用者的角度來看,當使用者與snapp進行互動時,使用者透過智慧合約的前端ui與之進行互動,之後snapp透過證明者函式將使用者輸入的資料在本地生成零知識證明,資料可以是私有的(不會被透明公開)也可以是公共(儲存在鏈上或鏈下)的。除此以外,還會生成與交易有關的snapp狀態更新列表,用於更改snapp狀態。之後使用者將資料提交至mina網路,mina網路會透過snapp給出的驗證者函式對該筆交易進行驗證,成功透過後更新snapp的狀態。

例如使用者可以將自己的徵信資料在本地生成證明並提交上鍊,可以在不洩露自身隱私資料的情況下,得到defi系統靈活的信貸服務;而傳統的defi借貸服務都是需要以資產的超額抵押為前提。這個應用場景的意義在於,將多個生態的資料和應用實現快速對接,這些生態可以是區塊鏈、也可以是鏈下生態。因此,snapp應用可以很方便充當跨鏈、跨鏈上鍊下的橋樑角色。

3.4.小結

從上述三個案例來看,oasis平臺在設計時就考慮到了模組化分層設計,因此在設計之初就完成了計算與共識的分層。而arweave與mina更類似使用分層解決方案來主動的將計算與儲存等功能進行分離,如arweave的scp與mina的snapp均是在公鏈執行一段時間後才誕生的。總結而言,前者為設計上的分層,後兩者為解決方案上的分層。拋開這兩類不同路徑的整體表現情況,對於現有公鏈而言,解決方案的路徑似乎能夠更快速的完成共識、計算與儲存的分層,並且能根據自身特點做出相應的調整。但如若分層與模組化將成為不久將來的發展方向,前者的設計架構上的轉變似乎才能更好的面對時代的需求。

四、web2.5時代的剛需:預言機

也許未來web3.0的真是樣子難以預測,但毫無疑問的是,web2.0時代的資料和應用將在通往web3.0時代的路上同時存在,並將不斷與web3.0進行融合——資料將在所謂的新的web3.0應用生態和當西web2.0生態之間共享,應用程式將橫跨web3.0和web2.0系統之間執行,使用者將同時屬於兩個生態世界。我們不妨將web2.0向web3.0過渡的時期成為web2.5時代。

在web2.5時代,如何將資料在兩個生態之間共享、程式如何跨兩個生態執行、兩個生態系統融合將是時代的剛需。將資料在中心化世界和去中心化世界共享,將催生預言機類應用的巨大需求。

web2.0時代api介面成為app獲取外部資料的重要方式。api介面即應用程式介面(application programming interface)是一組預先定義好的函式或http介面,其允許使用者或開發人員不訪問原始碼而直接呼叫程式的例程。對於app而言,api介面成為了app獲取外部資料以及輸出自身資料的視窗。而對於鏈上應用程式dapp而言,由於區塊鏈本身確定、封閉的特性,dapp一般無法直接獲取鏈外資料(如dapp從coingecko上獲取btc實時報價)。預言機(oracle machine)正是區塊鏈外資訊寫入區塊鏈內的機制,其本質是為智慧合約提供外部資訊的第三方服務,當智慧合約請求鏈外資料時,由預言機將鏈外資料輸入鏈上。

目前chainlink為鏈上使用較多的預言機協議之一,其使用第三方預言機的方式執行,即在鏈上合約請求外部資料時,合約的請求將傳送給預言機合約,之後預言機合約將相關事件傳送給第三方的鏈下chainlink網路,由chainlink網路完成外部資料的收集工作,此後再次透過預言機合約將資料返回請求資料的合約。該方法的好處在於由chainlink提供的第三方預言機透過預定的共識規則來確定結果能夠確保資料傳輸的安全性,然而無效冗餘(第三方預言機沒有api提供者直接提供外部資料高效)和缺少透明度(第三方網路無法得知資料來源)的存在導致第三方預言機仍面對不少的挑戰。

api3為解決第三方預言機存在的問題,其採用第一方預言機的方式將api的提供直接交給了由資料提供商運營的預言機,組成dapi,並透過dao管理其資料饋送。

執行時,dapps訂閱dapis服務並支付相應的訂閱費,以此獲取資料或服務,當呼叫的資料出錯時,使用staking pool中的資金為訂閱支付賠償。api提供著向提供dapis,各自執行各自的預言機服務,由api3 dao向其支付相應的報酬。stakers透過質押api3 token,為質押池提供保險金並參與api3 dao的治理,主要包括選擇較為優質的服務商進入聚合器dapis。

鏈下計算很重要的一點在於保證鏈上資料的可信性,如按照資料來源將鏈上資料分為鏈上產生和鏈下匯入兩類,則需要同時保證該兩類資料的可信性。api3等預言機協議的存在保證了鏈下匯入資料的可信性,但是否存在一種更為高效的方式,將原本需要鏈下匯入的資料直接交由鏈下計算,從而減少鏈上負載,還值得我們去探索。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;