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.什么是Bancor
Bancor算法的本質我們在此前的《【火線視點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社區在調整參數時所考慮的問題。
評論
查看更多