EOS/RAM篇——理性投资

这篇文章我们探究一下 是否存在这么一个值P,使得我们花掉P个EOS来买内存,接着瞬间再卖掉使得最终的EOS余额增多。虽然全网同时有很多人买卖内存,但是通过脚本的话还是有可能做到你的这一买一卖之间没有夹杂进其他人的内存买卖订单。

接着 之前的文章,我们已知有下面两个公式:

单位 RAM 能兑换多少 EOS :

\[UnitRAMforEOS≈\frac{B^2}{G}=\frac{G}{C^2}\]

以及我们用 \(X\) 个 EOS 能买到的内存:

\[RAM=\frac{C}{1+\frac{G}{CX}}\]

那么,假如我们再把这些RAM转手卖掉得到的 EOS 个数 \(X_1\) 就是:

\[ \begin{aligned} X_1=&\frac{C_0}{1+\frac{G}{C_0X_0}} * \frac{G}{C_1^2}\\ =&\frac{C_0^2X_0}{C_0X_0+G} * \frac{G}{C_1^2} \\ =&(\frac{C_0}{C_1})^2\frac{GX_0}{C_0X_0+G} \\ =&(\frac{C_0}{C_1})^2\frac{1}{\frac{C_0}{G}+\frac{1}{X_0}} \\ =&(\frac{C_0}{C_1})^2\frac{1}{\frac{1}{B_0}+\frac{1}{X_0}} \\ =&(\frac{C_0}{C_1})^2\frac{B_0X_0}{B_0+X_0} \end{aligned} \]

那么就有:

\[ \begin{aligned} \frac{X_1}{X_0}=&\frac{C_0}{C_1}\frac{C_0B_0}{C_1(X_0+B_0)}\\ =&\frac{C_0}{C_1}\frac{G}{C_1B_1}\\ =&\frac{C_0}{C_1} \end{aligned} \]

考虑到买卖内存会有 0.5% 的手续费,假设买内存花费的本金 \(P_0\),卖内存实际到手 EOS 个数为 \(P_1\),显然有:

\[X_0 ≈ 0.995P_0\\ P_1 ≈ 0.995X_1\]

那么:

\[ \begin{aligned} \frac{P_0}{P_1}=&\frac{X_0}{0.995^2X_1}\\ =&\frac{C_1}{0.995^2C_0}\\ =&\frac{C_0-RAM}{0.995^2C_0}\\ =&\frac{1}{0.9952}-\frac{RAM}{0.9952C_0} \end{aligned} \]

要想使我们能够赚钱,那 \(P_0\)\(P_1\) 必须得满足下面的条件:

\[ \begin{aligned} \frac{P_0}{P_1}=\frac{1}{0.995^2} - \frac{RAM}{0.995^2C_0} < 1 \end{aligned} \]

最终得到:

\[\frac{RAM}{C\_0}>1-0.995^2=0.009975\]

把式子 \(RAM=\frac{C_0}{1+\frac{G}{C_0X_0}}\) 做一下变换,并代入上面的不等式中:

\[ \begin{aligned} \frac{RAM}{C_0}=\frac{C_0}{C_0+\frac{G}{X_0}}>0.009975 \end{aligned} \]

解不等式:

\[ \begin{aligned} X_0>\frac{G}{99.250626566C_0}=\frac{B_0}{99.250626566} \end{aligned} \]

那么得到最终答案:

\[ \begin{aligned} P_0=\frac{X_0}{0.995}>\frac{B_0}{98.754373433} \end{aligned} \]

这个不等式表明了:

举例来说明的话就是,我写这篇文章的时候 \(B_0\) 的值是5551226.7248,那么算出来 \(P_0\>56212.46464154\) ,意思就是只要我投入超过 56212.46464154 个 EOS 去买内存并且立即再卖掉,那么我账户上的 EOS 最终余额就一定是增长的。

拿到这个结果,我很激动,因为昨晚刚看了 bancor 的 白皮书,对比源码发现BM并没有严格实现白皮书里写的兑换公式,所以就以为真的找到 bug 了,都准备联系有 5w 多 EOS 的大佬合作一波共同财富自由了……

后来为了保险起见,决定先写一个模拟器脚本,来测试这个值的有效性。等最后的脚本写完后测试失败了,这个值的表现就跟一个普通数字没有任何区别,很诡异。

后来不甘心,直接在现网测试,写了一个机器人瞬间买卖内存的脚本,下表是最后的测试结果,EOS 数量不多,就小额测一下。

EOS 收支情况
1 -0.0102999999999
0.1 -0.00160000000005
0.01 -0.000799999999799
0.001 -0.000700000000052
0.0008 -0.000500000000102
0.0007 -0.0003999999999

可以大致发现,基本都是亏损的,亏损的多少和投入的 EOS 数量正相关。

反复演算上面的公式推导,并没有错啊,那么只可能是一个原因了,价格是连续的,并不是离散的,需要重新用微积分分析:

有公式:

\[UnitRAMforEOS≈\frac{B^2}{G}=\frac{G}{C^2}\]

假设我们购买了容量为RRR的内存,那么花费的真正正确的EOS数量将是:

\[ \begin{aligned} \int_0^R {\frac{G}{(C-r)^2}} \,{\rm d}r=&(\frac{G}{C-r}+A)|_{0}^{R}\\ =&(\frac{G}{C-R}+A)-(\frac{G}{C-0}+A)\\ =&\frac{G}{C-R}-\frac{G}{C} \end{aligned} \]

同理卖内存也是一样的算法,自己算吧,反正并不是简单的相乘。

然后我用这个公式去对比自己写的模拟器脚本跑出来的数据,基本吻合(之所以数据不是完全吻合可能是因为本身 UnitRAMforEOS 就是一个约等于的公式吧)。