这几天发现了一个自己关于交易的误区。
我们知道,一个卖的交易,能压低市场价格(买的交易,能拔高市场价格)那么我们卖出一个币,再用卖的钱,低价买进一个多一点(假如足够快的话,不要考虑市场竞争),然后又能拉高市价了,又能高价卖出了,如此循环,岂不是能用恶意方法拥有无限的币?
这个误区在哪里?在于:“卖低市场” 是什么意思?
不是说:你的卖交易结束后,市场价会发生降低。
而是:你的卖交易本身,就是那个低价成交的(你根本卖不到交易前当前市场价,因为市场价指的是当前最后一次交易的价格)。交易发生以后,市场价根本没有变化。
进一步解释 (可以略过)
以中心化交易所为例,orderbook 上面是卖单(高价的),下面是买单(低价的 - 想想为什么)
那你卖出的一种方法,是吃一个下面的单,你吃的那个单多少钱,就成了新的市场价。
你成交以后,是没有保证市场价还能走低的。所以单笔交易后,根本没有套利空间。
中心化 vs. 去中心化交易所
去中心交易所(比如:Uniswap)设计的巧妙之处,就在于:它集成了中心化交易所(无论是股票还是电子货币)的最重要特性 — 买进能拉高市价,卖出能压低市价
这样就保持了经济学的供需原理 (供不应求,价格上升,供大于求,价格下降),使之成为自圆其说的交易系统。
同理,去中心化交易所中单笔交易完以后,市场价也是没有保证向上走还是向下走的。
根据去中心化交易所的核心公式 x*y = k
可以看到,斜率是负的,斜率的绝对值是不断的减小。这意味着,A 货币,你一直卖的话(就是一直充入池子里),它的价格是不停地跌的,这也符合市场规律。
所以协议本身并没有漏洞,虽然听起来很像有。
拓展思维
与这个思维误区有些许关联,V神提出过一个有意思的攻击思路:绑架交易
https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281
就是矿机看到了一笔交易后,可能在这笔交易前暗插一笔自私的交易,就是,
卖家要卖币
矿机发现了,矿机在这笔交易前,插一笔自己的卖币交易(等量)
会怎么样:矿机的交易更实惠,因为是先卖的,卖更高
卖家的交易后面,矿机再插一笔买交易,相当于卖家卖的,我全买回来(按着低价)
一来一去,矿机的币平了,USDC(或者别的)从卖家那里白赚到
V神的解决方案,开两个虚拟池,买只能从其中一个池,卖只能从另外一个池。这个效果,你通过恶意插卖单,确实可以把市场价压下去。但是你买,必须比当前市场价更高,最后算你还是亏。
另外有些有意思的推论可以看原贴
下期预告
我计划探索一下,
Uniswap里面智能合约的具体程序
Loan相关的项目(比如Aave)非常有趣,会做一期专门讨论下