笔者之前承诺过,拿到lp相关代码后就给大家解析Codex中AMM功能的lp系列的,但是懒惰的笔者今天才发现3月4号AP就把代码发出来了,只不过没发全,刚才看到赶紧写这篇长文来解析lp合约。由于已经有很多优秀长文解读过了,拾人牙慧的行为笔者又不屑为之(AP的不算),所以今天笔者尝试结合计算思维来解读lp。
分割问题降低复杂度的计算思维
首先请大家看一个有趣的小问题。
一天,有个年轻人来到小米步童鞋店里买了一双鞋子。这双鞋子成本是15元,标价是21元。结果是这个年轻人掏出50元要买这双鞋子。小米步童鞋店当时没有零钱,用那50元向街坊换了50元的零钱,找给年轻人29元。但是街坊后来发现那50元是假钞,小米步童鞋店无奈之下,还了街坊50元。 现在问题是:小米步童鞋店在这次交易中到底损失了多少钱?
这个问题不算太复杂,但是可能会有不少人算错,笔者并没有要卖弄算法的意思,所以直接在这里贴上各种解题方法:
方法一:流水账: 拿货(-15)-> 卖出收款(+50)-> 找零(-29)-> 找邻居换钱(+50-50) -> 给邻居赔钱(-50)
最后的结果是:-15+50-29-50+50-50=-44, 即赔了44元
一般情形下,我们做的交易也是这样简单的,只要一条线把账算清就可以了。
方法二:进出账:
所有进账:卖出收款(+50)、找邻居换钱(+50) ==> 100 所有处长:拿货(-15)、找零(-29)、找邻居换钱(-50)、给邻居赔钱(-50) ==> -144
最后的结果是: 100-144=-44, 即赔了44元
显而易见的是,这一次我们把模型分成了进账和出账两部分,整个问题的复杂度大幅度下降
方法三:辨真假:
真实交易:拿货(-15)、找零(-29)、找邻居换钱(+50)、给邻居赔钱(-50) ==>-44 虚假交易:卖出收款(+50)、找邻居换钱(-50)==> 不论过程如何,直接记坐0
最后的结果是: -44+0=-44,即赔了44元
在这种方法中,直接将所有假币作为货币的记录作废,直接得出答案。
好了,其实还可以更简单,但是没必要再讲下去了,我相信已经有很多读者理解了我的意图。lp本身其实并不复杂,只要你能把问题剥离成足够简单的结构就可以了。所以,笔者下面的讲解将围绕这一思路展开。
lp到底是什么样的?
其实这类问题的解读已经很多了,笔者最赞同邹刚大佬的解释————即你买了一部分lp,相当于你开了一个交易所。虽然这种解读并不准确(应该是自动做市商),但是对于小白来说这就足够了,所以本文中笔者也将就这一观点展开。
从上面的例子中我们知道,要想理解自己还不曾理解的复杂概念,将其分割成小块会有很大帮助。那么lp也可以分割吗?当然可以。依然是以EIDOS/EOS为例,且不计手续费。
- 你买了多少eoslp,你就有交易所多少资产,包括交易本身。
举个例子,假设现在你有100EOSLP,而eoslp的总发行量是1000EOSLP,那么你就拥有10%的eospool.eo中的所有资产,包括10%的EIDOS和10%的EOS,以及所有交易的10%。这个时候我拿了100EOS来交易,那么其中有10个EOS实质上是在跟你交易。
- 先来的后来的股东并没有实质上的区别,也可以认为“互不影响”
接着上面的例子,这个时候神童也来了,买了100EOSLP,先不管他用什么买的,反正就是买了,然后eospool里的资产只有1/11是你的了。你亏了吗?没有,因为对应的还是那么多,他买不买跟你没关系。
不少人在这里就迷糊了,你这个作者骗人,我不管,你现在去买一个看看价格变不变!
所以呢,这里还是需要您忍住,且听笔者慢慢讲。
我们先假设这个阶段Codex里的EIDOS和EOS之间价格不变,假设这1000EOSLP的eospool中有8000EOS和1000w EIDOS,那么就相当于你的100 EOSLP代表的是800 EOS和100w EIDOS。
然后神童来买lp了,神童观察到自己一次性买越多价格滑点越大,机智如他立马写了个代码,先花8EOS买lp,然后1wEIDOS买lp,再花8EOS买lp,然后1wEIDOS买lp,一共循环了100次,反正就是买了lp以后价格居然没有变。
现在好了,池子里有1100EOS和8800w EIDOS,你占有1/11,还是原来那么多,神童也和你一样。那么神童购买老婆的行为并没有对你产生困扰,他没有抢走你的老婆。
- 每个人都是一个自动做市商
好了,讲到这里,我们是不是,可以把每个EOSLP持有者分割开呢?大家互相并不影响,都是做市商,每个人持有的EOSLP代表自己做市商的规模,你的100EOS和800w EIDOS是一个做市商,这些是你自己的,你随时可以把它卖了拿回你的EOS和EIDOS,并且先卖和后卖是完全一样的,不需要骚操作。那你的客户哪里来呢?就是现在,任何人在Codex上的交易,都会摊给你1/11.
- 每个EOSLP都是一个自动做市商
我们可以比上一步更进一步,认为每个EOSLP都是一个自动做市商,在本例中,1EOSLP代表什么呢?它代表一个自动做市商,持有8EOS和1w EIDOS,一共这么多,你给他EOS,他给你EIDOS,童叟无欺。但是来了个大户它一个人吃不下来,怎么办?它找来了伙伴,找来了好多EOSLP,每个EOSLP都和它一样,大家平分了交易。好了,不管大户拿的钱再多,只要老婆多,就不会产生大的滑点。
而你,有多少老婆,就能做多大生意。
老婆是怎么算钱的
自古以来,就有一种叫老婆的生物存在于世,她有一个绝技,那就是:“你可能血赚,我永远不亏。”
lp的计算方法很简单,依然从上例来看:
value(1EOSLP)=value(8 EOS)+value(1w EIDOS)
这是最简单的公式,那么我们可以再来一个新公式:
8 * 1w = 8w
这是什么意思呢?一旦AP在初始设定中,设置为value(1EOSLP)=value(8 EOS)+value(1w EIDOS),那么就会有这样一个常数存在,8*10000=80000,这个常数不会发生变化。
假设我现在给这个EOSLP分了2个EOS的交易过去,那么EOS的数量变成了10个,那么EIDOS的数量就会变成80000/10=8000个,这时候,少了2000EIDOS,这部分EIDOS就是用2个EOS换的。
对于每一个EOSLP,除手续费外,不管发生任何交易,这个80000是不会变的。如果这个EOSLP分到了8个EOS的交易,那么交易的结果是卖出去的EIDOS=80000/16=5000个,则这个EOSLP变成了16个EOS和5000个EIDOS。从这个角度来讲,1. Codex是不惧砸盘的;2. Codex在深度不足时,价格容易波动。
那么这种时候为什么说不亏呢?AP说乘积不变,我觉得计算复杂很多人理解不了,所以作如下解释:
依上例,假设EIDOS涨了,以前1EOS=1250EIDOS,现在只能换1000个了。那么Codex立马被搬砖党搬平,怎么搬呢?就是转入EOS,转出EIDOS,由于80000是不变的,
最后的结果是:8.94EOS,8948.5EIDOS。
这个时候你会看到,虽然EIDOS少了,但是EOS多了。那么总共怎么变呢?
变化前:
如果1EOSLP卖出去,你会得到 8EOS,10000EIDOS。
你只想要EIDOS,就把EOS卖了,假设你影响不了市价: 8EOS=10000EIDOS,合计20000EIDOS
你只想要EOS,把EIDOS卖了,假设你影响不了市价:10000EIDOS=8EOS,合计16EOS
变化后:
如果1EOSLP卖出去,你会得到 8.944EOS,8948.5EIDOS。
你只想要EIDOS,就把EOS卖了,假设你影响不了市价: 8.944EOS=8944EIDOS,合计17892.5 EIDOS
你只想要EOS,把EIDOS卖了,假设你影响不了市价:8948.5EIDOS=8.949EOS,合计17.893EOS
从上面你可以看出来,按EIDOS计,你亏了,但是按照EOS计,你又赚了。
很多人都在这里迷糊了,怎么回事呢?其实这里有一个问题就是:
Codex是交易对的形式运作的,一个币涨了,那么对交易对来说就是另一个跌了,所以任何价格变动,都是一样的,就像天平一样。因此,一边价格涨20%,另一边就跌1-1/1.2=16.7%。由于两边总价值始终相等,所以不管涨跌都是一样的,只是计量方式变化了,所以币本位永远不亏。
好了,又有人要迷惑了,因为有时候只要计算人民币,就能发现总值是会变的,这又是为何呢?
这里再引入一个概念,那就是,以现在Codex的体量,EOS几乎就是稳定币,EOS兑人民币的价格不变的话,EIDOS的变化就会影响总值(金本位)。这里就可以看到老婆的有一个特点了————保值。
依然是上面的例子,EIDOS升值了,从0.0008升到了0.001:
如果你从一开始只持有EIDOS,即20000EIDOS,那么变化后你相当于持有20EOS;
如果你从一开始只持有EOS,即16EOS,那么变化后相当于持有16EOS;
然而实际是你持有lp使得你最后持有17.893EOS。
嗯,亏了?还是少赚了?还是Codex太坑了?
那你反过来看,假设EIDOS从0.001跌到了0.0008呢?
不论价格涨跌,你都套着两种币在涨跌,笔者没必要再进行复杂的计算说明,只说结论了:涨的时候少涨很多,跌的时候少跌很多,少的部分比一半多。
老婆是怎么买来的?
这里笔者讲一下流程:
如果你用EOS买,你带着16个EOS的彩礼来了,丈母娘说,这怎么好意思,给你买个车。然后就花了8EOS买了价值10000EIDOS的法拉利借给你用,老婆也跟你回家了。从此,你拥有了你老婆,而你老婆有8EOS和10000EIDOS,你把老婆卖了就能把彩礼拿回来,但是拿回来的不是你给的16EOS,而是8EOS和10000EIDOS。
如果你用EIDOS买,你带着20000EIDOS的彩礼来了,丈母娘说,这怎么好意思,得买个房子,然后就用10000EIDOS的法拉利换了一套8EOS的二手房借给你,还交了0.1%的房产税。从此,你拥有了老婆,而你老婆有7.992EOS和10000EIDOS(实际上这里计算结果会有点变化,多一点EIDOS买EOS,使得二者价值相等)。你把老婆卖了就能把彩礼拿回来,但是拿回来的不是你给的20000EOS,而是7.992EOS和10000EIDOS。
最后,再补充一点,前面计算的8EOS*10000EIDOS得到的80000这个值,并不是完全不变的,而是会把手续费无偿添加进去。因此,手续费永远在交易的同时就已经平分给每一个EOSLP了,而你持有的EOSLP的多少,会决定你拿到多少手续费,而这一计算和rex是完全一致的。
最后,如果觉得笔者写的有用,欢迎给zhaoyilun532节点投票。后续本系列会继续不定时更新,如果有什么系列想了解的,可以评论区留言。另外,笔者要开始着手开发上次提过的可视化编程智能合约了,届时会发布教程和该教程配对的激励代币,试图让学习者获得代币奖励,这里先做点预告,至于正式开始的时间,就看开发进度了。
版权声明:项目均采集于互联网, 空投币 无法审核全面,且希望大家能赚钱,请谨慎切勿上当受骗!
温馨提示:★★★天上真会掉馅饼!天道酬勤,都是机会!不错过每个空投糖果!真假难以辨认,尽量0撸!