Bancor 演算法的數學、經濟學解析與引數測算

買賣虛擬貨幣
摘要EOS RAM在經過了價格大幅度波動後,其背後的Bancor定價機制也越來越為人所熟知。繼《【火線視點8】沒有免費的午餐——從EOS RAM價格看公鏈通證經濟體系設計》後,火幣區塊鏈研究院繼續對這一演算法研究,分析其後背的數學和經濟學原理,並透過公式,我們計算對比了不同引數下RAM價格,主要得到以下研究結果:Bancor公式中隱藏價格函式與經濟學上的價格彈性曲線的概念相通。由於是根據供需量來得出價格,Bancor經過微積分計算得出購買RAM時所需EOS的等效價格,防止產生購買價格誤差。在不同的曲線引數下,價格會有不同。我們以北京時間7月10日18點40分的情況為例,使用MATLAB R2015a進行測算:付出10 EOS以上,引數取值改為0.5會比0.0005的商品“價效比”更高。報告正文
1.引言EOS RAM在經過了價格大幅度波動後,其背後的Bancor定價機制也越來越為人所熟知。繼《【火線視點8】沒有免費的午餐——從EOS RAM價格看公鏈通證經濟體系設計》後,火幣區塊鏈研究院繼續對這一演算法研究,分析其後背的數學和經濟學原理。透過公式,我們計算對比了不同引數下RAM價格,可看到引數的確會產生一定程度上的影響。另外需要注意的是:測算得到的資料結果不是也不應被視為是對EOS RAM未來價格走勢等情況的證明或確認。特此宣告。2.主要結論經過研究與測試分析,我們得到以下主要結論及技術建議:Bancor公式中隱藏價格函式與經濟學上的價格彈性曲線的概念相通。
由於是根據供需量來得出價格,Bancor經過微積分計算得出購買RAM時所需EOS的等效價格,防止產生購買價格誤差。在不同的曲線引數下,價格會有不同。我們以北京時間7月10日18點40分的情況為例,使用MATLAB R2015a進行測算:付出10 EOS以上,引數取值改為0.5會比0.0005的商品“價效比”更高。3.什麼是BancorBancor演算法的本質我們在此前的《【火線視點8】沒有免費的午餐——從EOS RAM價格看公鏈通證經濟體系設計》報告中有過介紹:它是在1940年-1942年間由凱恩斯、舒馬赫提出的一個超主權貨幣的概念,可作為一種賬戶單位用於國際貿易中,並由英國在二戰後正式提出。然而,由於美國實力在二戰後一枝獨秀,Bancor 方案並沒有在佈雷頓森林會議上被採納使用。但應用這一思想的 Bancor 演算法則繼續延續了其生命力。Bancor 演算法由 Bancor Network 專案提出應用,旨在採用公式來設定好數字資產間的兌換價格。其聯合創始人 Eyal Hertzog 近期也被BM邀請一起來探討 EOS 中 Bancor 演算法的應用。

雖然Bancor Network近期也經歷被盜風波,但這不妨礙我們繼續研究這一演算法。既然是原本要用於國際貿易的模型,那必然涉及到不同實體間如何兌換。Bancor 白皮書中對定價模型有著十分嚴謹和詳細的說明。它定義了兩類token:一種是通常會流通使用的 connector token(即儲備金,例如:BTC、ETH、EOS等),而另一種是作為“超平臺”中間媒介的 Smart Token。為了使得兌換價格滿足剛才提到的供需關係,設計的公式中的價格為 connector 的可流通餘量(balance)除以 按照一定係數的Smart Token 供應量:

其中,CW 的英文是 Connector Weight,表示設計出來的 Smart Token 的總價值與實際在使用中的 connector 餘量間的關係,設計好後為一個固定引數:

總體上來說,就是 Smart Token 的供應量越少或者 connector 的餘量越多,那麼使用 connector 來兌換 Smart Token 的價格就越高。

雖然很不嚴謹,但這也就能理解了為什麼 EOS 的 RAM 越少,價格越高了。至於不嚴謹的原因,我們將在下文繼續解釋。

4.公式設計思路

回到 RAM 價格上,那麼無疑在 EOS 主網剛上線的時候,RAM 供應量最多。可以看到最低價格是 0.017 EOS/KB 。按照這個價格,也就是買 1MB 需要 0.017 * 1024 = 17.408 EOS。那麼,全部 64GB RAM 在這個時候值 1140850.688 EOS,是不是這個時候花費這些 EOS 就可以把 64 GB一次性都買下?答案顯然是否定的。

實際上,有多種方式可以限制這種做法。最簡單的一種就是限制每次買賣的數量:只要設定每次只能購買 32GB,那麼第二次買 RAM 的價格就會提高很多,買的總成本就會變的很高。再迴圈細分下去為 16GB、8GB …… 總的價格就會越來越合理。這在數學上是有相應的工具可以使用的。


是的,就是微積分。在 Bancor Network 白皮書中引用的另外一個資料中,可以看到這個推導過程。

定義R為當前connector的餘量、S為當前Smart Token的供應量、F為係數(即上文中的CW)、P為當前Smart Token的價格,那麼有:

Smart Token的市場總量 = SP


當要購買dS 的Smart Token時,使用者需要付出P dS 的成本,也等於剩餘connector的變化量,即dR = P dS

又因為R = FSP,同時微分可得到:dR = d(FSP) = F d(SP) = F(S dP + P dS),所以綜合上述兩個等式可得:


然後我們可以看到,這個微分方程的結果和經濟學上的一個概念是一樣的。

是的,就是經濟學上的價格彈性曲線:

當 CW 或者 F 為 1 時,提供100%的流動性,因此價格毫無彈性,一直維持在某一水平線上

當 CW 大於 0 小於 1 時,即上述正常供需情況下的價格曲線

有了這個價格函式後,再對其進行積分,即可得到不同量的 connector 可換購的 Smart Token 數量。

定義使用者要購買Smart Token的數量為T,那麼可得到需要付出的connector的數量E為:


如果用付出的connector 除以兌換到的Smart Token 數量,即可得到等效價格(Effective Price),即只要付出的connector總量一樣,不管分多少次購買,所獲得的Smart Token總量是一樣的,因此也就不需要限制單次購買量了。但相應的,如果單次付出不同數量的connector,折算得到的單價也會不一樣,所以不會存在上文假設的“套利”情況。

5.EOS RAM的公式更復雜

EOS 應用 Bancor 演算法過程中,並不是將 EOS 和 RAM 直接用價格曲線進行兌換,而是引入了中間 token——RAMCORE,對應於 Bancor 中的 Smart Token。

EOS 和 RAM 兌換邏輯的程式碼主要在:

https://github.com/EOSIO/eos/blob/v1.0.8/contracts/eosio.system/exchange_state.cpp

EOS 到 RAM 的兌換過程就涉及了兩個公式,所以上文中用一個公式來舉例就很不嚴謹,只是為了定性的說明價格特性。

從程式碼中可看到EOS與RAMCORE的兌換公式為:


其中,E為EOS到RAMCORE所能兌換的數量,R是RAMCORE的初始發行總量,C1為當前EOS餘量,T1為用於購買的EOS數量,F為常量引數

將上述公式的進行反向整理設計,即可得到RAMCORE與RAM的兌換公式為:


其中,T2是準備購入的RAM數量;C2為可分配的RAM餘量。將中間變數E代入即可得出用於購買的EOS數量(T1)與可兌換到的RAM數量(T2)之間的關係。

為方便直觀的理解,可以對公式進行簡化,得到:


可以看到隨著可買RAM餘量(C2)的降低或者EOS數量(C1)的增多,RAM的價格會加速增長(即同樣付出T1的EOS下,可換取到的RAM數量T2變少了)

6.不同引數下的價格偏差計算

根據簡化公式,F 應該對價格影響很小。那麼 BM 之前說的把 0.5 多除了1000,變成0.0005,對價格是否有很大影響?我們可以直接透過公式計算來驗證。

按照公式,要計算先確定好公式中的引數。引數的獲取可透過網路渠道來獲得(參考https://github.com/eoshackathon/eos_dapp_development_cn/blob/master/docs/ram_price.md):


由於C1和C2的引數會時刻根據行情進行變化,我們選取上述時間作為示例計算引數。下一步,我們使用MATLAB(R2015a 8.5.0.197613)進行公式的計算。

當要付出不同量 EOS 時,分別計算出F=0.0005和F=0.5的 RAM 價格結果,可購買到的RAM之差(F=0.0005-F=0.5)以及兩個價格之間的差值:


可以看到,當F取值變化的時候,不同購買量下的結果的確不同:當一次付出10000 EOS時,F=0.0005能購買到的RAM比F=0.5少了 20 KB,相應的RAM單價高了 4.0412e-04 EOS/KB;而當一次付出100000 EOS時,會少近 2MB,同時單價高 0.0040 EOS/KB。

根據結果,在購買量大的時候,確實會有區別,而且改為F=0.5後RAM的“價效比”反而會更高,這很可能也是BM及EOS社羣在調整引數時所考慮的問題。


更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

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

推荐阅读

;