NEST Protocol:一種分散式價格預言機網路

買賣虛擬貨幣
大部分 DeFi 協議都需要價格資料,特別像穩定幣、期貨等合約資產,需要價格進行清算。價格是 DeFi的核心風險,因此本文提供的價格預言機方案,對 DeFi 的重要性毋庸置疑。1. 價格 oracle 的挑戰目前 DeFi 常用的價格預言機,一般由“可信”節點採納中心化交易所的價格,以資料的形式上傳到鏈上,供 DeFi 呼叫。此方案存在一個根本性的問題,即價格沒有進行有效驗證。有些 DeFi 採用去中心化交易所的價格,但由於交易深度低,很容易被攻擊。是否存在一種對價格進行直接驗證的預言機,能保證價格準確、及時,且攻擊成本極高?同時,該方案是分散式的,即不存在中心化的風險。總結起來為以下 5 點:1)價格具備準確性:能真實反應市場價格2)價格具備靈敏性:對市場價格的反應足夠快3)價格具備抗攻擊性:扭曲或者影響真實價格的成本極高
4)對價格進行直接驗證:且驗證者是任意第三方,同時不需要審查或門檻5)報價系統是分散式的:不需要審查或門檻,可以自由進入或退出理論上,1、2、3 不可能同時完美實現,但我們可以在三者中某一點上做出適度讓步,以換取 1-5 的成立。NEST 選擇犧牲一定的靈敏性,實現 1-5 的成立。2. NEST 的解決方案

NEST 提供一種創造性方案,包含抵押資產報價、套利驗證、價格鏈以及 BETA 係數等模組,組成一個完整的 NEST-Protocol。以以太坊網路為例, NEST-Protocol 的示意圖如下:

1)角色定義

NEST-Protocol 中的參與者定義如下:

報價者:協議中提供報價的參與者,包含報價挖礦的礦工以及成交併報價的驗證者。

A 礦工:提供報價並支付佣金獲得 NEST(ERC-20Token),礦工的集合記為 O,任何人都可以成為礦工。

B 驗證者:如果某個報價偏離市場價格,驗證者可以以該價格與報價資產成交,從而獲得收益。驗證者在成交的同時,需要強制報價,該報價不用支付佣金也不參與挖礦。驗證者集合記為 A,任何人都可以成為驗證者。

價格呼叫者:呼叫 NEST 提供的報價並付費的合約或賬戶稱之為價格呼叫者,價格呼叫者的集合記為 C,任何合約和賬戶都可以成為價格呼叫者,一般為 DeFi 協議。

2)報價挖礦及價格驗證

以 ETH/USDT 為例,某個礦工 o 打算報價 1ETH=100USDT,他需要將報價資產 ETH 和 USDT 轉入報價合約,規模為 xETH 和 100xUSDT,支付的佣金為 λxETH,按照支付的佣金規模參與挖礦,獲得NEST。整個過程完全開放,任何人都可以成為 o,且價格和規模由其自主設定。

礦工 o 將資產和價格提交到報價合約後,任意驗證者 a 認為該價格有套利空間,便可以按照 o 的報價1ETH=100USDT,成交掉 ETH 或者 USDT。這一機制,保證了報價要麼是市場上的公允價格,要麼是報價者認可的等效價格(即在 o 看來,1ETH 和 100USDT 是等價的,所以無論驗證者成交哪種資產都是無差異的),這一過程即價格的驗證期。

用公式表達如下:報價者 o 報價 p,即 1ETH=pUSDT,資產規模為 xETH,則對應 USDT 數量=x*p,參與挖礦的佣金規模為 w=λ*x,驗證者 a 可以以價格 p 成交 xETH 或者 x*p 的 USDT。

3)價格驗證期

從報價時間算起,任何一次報價的驗證期都是有限的,記為 T0,它決定報價者承擔風險的週期和價格的靈敏度。驗證期過後,沒有成交的報價稱之為生效報價,包含價格和報價規模(p,x)兩個變數,生效報價形成 5)所說的區塊價格;而被驗證者成交的報價則不被採納,如果某個報價有一部分成交,則剩餘部分也是生效報價,即(p,x’)。價格驗證期過後,報價者的剩餘資產以及被成交的資產可以隨時取回。

按照當前 DeFi 對價格的需求,將 T0 設計成 10 分鐘或者 5 分鐘都是合理的(可以根據以太坊網路效能和驗證者的規模最佳化調整,最佳的當然是 1 分鐘以內了)。因此價格呼叫者每次呼叫的價格,原則上將相比市場即期價格延時 5-10 分鐘,這對於大部分 DeFi 來說是可以接受的。

4)價格鏈

根據上面的約定,驗證者在對某個報價者價格成交後,需要強制報一個新的價格(可以理解為,驗證者銷燬了一個報價,就需要留下一個新的報價)。如 a1 與某報價者 o 的價格 p0 成交(o 的報價規模為x),他需要同時報一個價格 p1 到合約內,其規模為 x1,即需要將 x1 個 ETH 及 x1*p1 個 USDT 打到合約中,但此時不必再支付佣金,也不參與挖礦。如果有套利者 a2,與 a1 的報價成交,他就需要報價p2,其規模為 x2,如此類推,就形成了一個以 TO 為最大報價時間間隔的連續價格鏈:p0—p1—p2...,報價資產鏈為 x—x1—x2...

5)區塊價格

NEST 預言機的價格是按照區塊記錄的,每個區塊形成一個價格,由該區塊內生效的報價按照一定的演算法生成,該價格稱之為區塊價格或者 NEST-Price。假設某一區塊的生效報價為(p1,x1),(p2,x2)(p3,x3)…則該區塊價格 P=∑pi*xi/∑xi,如果該區塊沒有生效報價,則沿用上一個區塊價格。

6)價格序列與波動率

以太坊網路的每個區塊對應一個 NEST 價格,從而形成價格序列。價格序列擁有重要意義,包含:

A. 提供均價供 DeFi 呼叫,包括連續 N 個區塊的算術平均價格,Ps=∑P/N;或者連續 N 個區塊加權平均價格 Pm=∑P*Y/∑X,其中 X=∑Xi,為上述生效報價。
B. 提供波動率指標供大部分衍生品 DeFi 呼叫,如連續 50 筆報價的滾動波動率,或者 DeFi 自定義的各種波動率。
C. 其他統計量。

7)抗攻擊演算法

如果呼叫 NEST 價格的 DeFi 資產規模較大,可能存在攻擊者。攻擊者篡改某個正常報價 p0,將其改為 p1,或者攻擊者惡意成交,以期望價格一直不更新(因為價格一旦被成交了就無法採納並更新)。攻擊者願意犧牲掉 P1 與 P0 的價差,以換來更大的收益,這樣價格機制就會失效。那麼,NEST 如何防範此種攻擊?

我們透過提高攻擊者的成本來防範攻擊:

首先,價格鏈本身就是一種抗攻擊機制,即攻擊者攻擊完價格後必須留下一個價格以及該價格對應的資產。這意味著攻擊者攻擊後,要麼留下正確的價格,要麼留下一個套利空間,市場上必然會有驗證者來套利並修正報價。

其次,為了放大攻擊者的成本,對所有驗證者的報價規模進行如下安排:驗證者成交的規模為 x1,則其同時報價的規模 x2=βx1,其中β>1,即驗證者必須以一倍以上的規模來報價。我們以β=2 為例,初始報價為 x=10 個 ETH,則全部成交的情況下,x1=20,x2=40,x3=80...以此類推。攻擊者要麼暴露給市場極大的套利機會(規模以級數上升,這種攻擊幾乎是無效的),要麼依據市場價格不斷動用極高規模的資產進行自成交,以延緩價格被採納的機會。

目前在 ETH 上每個區塊最多可以報價 20 筆,報價也是分散式隨機進入,如果假設每個區塊有 1 筆報價,報價規模為 10 個 ETH,T0=5 分鐘,那麼透過攻擊,使得 NEST 在一個小時內無價格更新,需要動用的資產規模將接近 2^12*25*10=100 萬個 ETH。如果β=3,則該資料趨近於 ETH 的數量極限,這種抗攻擊性是任何中心化交易所都做不到的。

8)激勵及經濟

礦工透過支付 ETH 佣金,以及承擔一定的價格波動風險來獲得 NEST;而驗證者則基於價格的偏差計算直接的獲利,並承擔成交報價的風險。因此對驗證者而言,其成本收益相對較為清晰。對礦工而言,其報價挖礦的模型需要相應的經濟學基礎。

我們將礦工貢獻的所有 ETH,記為 X,定期(一般按周)全部返還給 NEST 持有人。該過程構建了一個自動分配的模型,從而使得每個 NEST 具備了內在價值,該價值在鏈上可證。但僅僅依靠報價挖礦者的 ETH 是不足以完成邏輯的閉環的,這就回到我們構建價格預言機的初衷:鏈上的價格事實對所有的 DeFi 產品都是根本需求,是 DeFi 最重要的基礎設施。因此任何 DeFi 開發者或使用者在呼叫NEST-Price 的時候,都應該支付相應的費用,此部分收益記為 Z。因此 NEST 對應的價值記為 X+Z。

而從總體上來說,獲得 NEST 支付的成本為 X,即 NEST 從總體上是創造了價值的。

可以理解成 NEST 的整體價值大於整體成本,但對於每個礦工而言,它的成本是不確定的,這裡就存在交易的可能,不同成本的 NEST 所有者在整體價值大於整體成本的背景下,進行買賣交易,從而達到均衡,這種均衡類似於股票市場的均衡。

NEST 系統的所有 Token 全部由挖礦產生,不預留或者預挖,產生 NEST 的所有成本全部返回給 NEST持有人,NEST 只是用於激勵。NEST 模型實現了完全的去中心化,不對任何人設定門檻,其特點與比特幣類似。NEST 協議升級採用 DAO 的方式,即提案者發起,社羣投票,按照一定比例透過並執行,該比例一般為 51%。

3. NEST-Price 的應用

當我們擁有了鏈上價格時,依賴於均衡價格的 DeFi 產品便可以設計了,在這裡我們簡單列舉幾類:

1)均衡幣:一種透過超額抵押,以及市場套利機制形成的代表了經濟均衡的數字資產,該資產代表了價格之間的均衡兌換關係。均衡幣可以視為鏈上的計價單位,由 Token 生成合約,套利機制及反饋修正機制組成,除了其風險收益結構比較穩定外,其重要意義在於:首先是完全內生的經濟單位,跟隨整個公鏈如以太坊經濟體變化而增加或減少;其次是在鏈上可證,且風險收益結構不同於 ETH。

2)去中心化交易:傳統的去中心化交易以點對點報價撮合為主,此方向不正確,因為現代交易所的核心是雙邊拍賣,對報價雙方的價格強制排序和強制成交,這涉及的計算與區塊鏈當前序列排隊運算的機制不匹配。有意義的去中心化交易應該是自由做市商制度的,即對於報價的雙向強制接納,且做市商可以是任意參與者,這一點在我們的報價機制裡可以完美的實現。

3)自動結算型抵押借貸:由於擁有了鏈上價格,涉及到平倉或者自動結算的借貸合約,即可引用該價格完成某些約束條件的觸發,使得借貸行為不侷限於互換這一期權結構。

4)期貨:一種分散式期貨的模型,類似於均衡幣,引入任意第三方的套利,能夠放大對遠期交易的交易規模,或者直接捕捉交易價格波動的收益。這在之前是不可能被設計出來的,一般意義的期貨都需要中心化機構進行強制平倉等,但分散式期貨不承擔中心化風險。

5)波動率產品:基於對均衡價格的波動率設計的衍生品,用來對沖或者平滑衍生品風險,由於有鏈上均衡價格序列,這一產品也成為可能。

以上僅以金融領域最基礎的產品為例,透過 NEST-Price 的匯入,實現了完全去中心化的金融產品設計,且不同於最簡單的點對點的交易。由於有全域性變數的引入,整個 DeFi 便進入快車道。至於為何 DeFi需要全域性變數,這是因為金融本質是一般均衡的,而非區域性均衡,不是簡單的區域性供給需求關係決定,需要基於全市場的套利機制完成有效定價,不是商品經濟的規律。因此簡單的點對點交易並不能解決根本的金融問題,而既不承擔中心化風險,又具備一般均衡特徵,就需要類似價格序列等全域性變數了,這一變數不能中心化的引入,因此我們的預言機方案是整個去中心化金融領域的根本性基礎設施。

4. NEST-Price 的引用風險

和一切金融產品或者金融服務一樣,NEST-Price 不可能沒有風險,這裡對 NEST-Price 的引用風險做出簡單的描述,當然可能存在其它未被描述到或者認知到的風險:

1)由於犧牲了有限的靈敏性,因此對於價格靈敏性要求極高的金融服務,在使用 NEST-Price 時,在極端情況下存在一定的價格波動風險。我們傾向於設計金融產品不要依賴於較為敏感的交易價格,或者作出波動率補償。

2)市場套利機制的深度不夠,即套利者不充分,明明存在巨大的機會,卻沒有人理會。這是需要市場接受度和認知度的,是行業發展深化的問題。

3)雖然無法攻擊價格,但可以透過攻擊 NEST 來間接攻擊價格機制,比如佔有 51% 以上的 NEST,然後對重要引數進行修改,使得報價機制失效。這一問題可以透過對關鍵引數限定來防範,同時提升NEST 市場規模,使得 51% 攻擊難以實現。

4)程式碼漏洞或外部重大變化的風險,如果以太坊底層程式碼、NEST 系統程式碼出現漏洞,或者外部環境發生較大變化,會對價格呼叫者造成影響,這可以透過鏈上治理及合約分叉來修正。

免責聲明:

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

推荐阅读

;