Web3漫游记——MEV以及赚钱姿势

对MEV没兴趣可以直接拉到文章末尾。

这篇文章假定你已经有了一些Web3相关最基础概念,比如什么是区块链、什么是Defi、什么是挖矿、什么是POW和POS、什么是CEX和DEX等等,这篇主要来聊聊什么是MEV以及MEV相关套利原理,至于技术同学最感兴趣的"Show Me The Code”,后面再说。

什么是MEV?

在POW语境下,MEV是指"Miner Extractable Value"矿工可提取价值,在POS语境下则是"Maximal Extractable Value"最大可提取价值。缩写都是MEV也算是一种殊途同归了,原理简单说就是矿工(验证者,后面统一用矿工)通过对 区块内交易进行添加、删除、调整顺序 ,从而使获得的利润最大化。

注意前面加粗的部分,这种机制是Defi套利的基石。目前最常见、竞争最激烈的三个游戏就是:Arbitrage、Liquidations和Sandwich Trading。

在一个快鱼吃慢鱼的世界,机会往往转瞬即逝,这场竞争中谁的交易最先被打包上链,谁就是赢家,谁就能获取利润。

那么,怎么让自己的交易最先被打包呢?

最朴素的办法就是给足gas费来贿赂矿工,结果导致网络拥堵、整个链的gas飞涨。(当时作为NFT玩家的我,恨死这帮人了……)

但是贿赂矿工总得有个尽头,把所有的利润都给矿工的话,那叫做送福利而不是套利。

于是套利玩家们开始进行合约优化(gas golfing)、网络优化、自建节点、geth客户端代码优化等等等等——欢迎参加科学家之战。(圈内把懂技术的人成为科学家)

Arbitrage

套利,这个很好理解,当不同市场(交易所)对同种物品(token)的价格不同时,套利机会就出现了。比如CEX-DEX套利、DEX-DEX套利。这里有一个DEX-DEX套利的例子,有兴趣的同学可以点进去看看,关于链上数据分析这里就不展开了。

三角套利比较有意思,简单说1个苹果可以换3个香蕉,3个香蕉可以换5个橙子,而5个橙子可以换1.2个苹果。就这么转了一圈,多出来0.2个苹果的利润。如果策略制定的够精妙,甚至可以实现N角套利。

那么问题来了,为什么会产生这些套利模式呢?

这个就得提起DEX的基石——AMM(Automated Market Maker,自动做市商)。

和传统金融股票市场以及CEX不同,前者主要使用的是用订单簿模式来撮合买卖双方成交,而目前主流DEX都是基于AMM提供LP(Liquidity Pool,流动性)。说到这又可以引出恒定乘积做市商(CPMM)、恒定和做市商(CSMM)、恒定平均值做市商(CMMM)以及2种赚钱方式流动性质押和流动性挖矿,说到这又可以引出无偿损失、滑点、多代币敞口……后面再说。

这里我们以CPMM为例,这个是目前最主流的方式。其核心原理是一个乘法公式:K=A*B

假设有一个善人,他拿出自家的10个苹果和10个香蕉组成了一个池子(提供流动性LP),小明想要买5个苹果,请问小明需要付出多少个香蕉?

最初场景K=10*10=100,小明买走5个苹果,那么池子里需要有多少香蕉才能继续保证K=100呢?经过计算K=100=5*20,也就是说小明需要付出10个香蕉——到这里相信大家已经明白恒定积的意思了。那么如果小红接下来想买3个苹果,则需要付出30个香蕉才行——也就是说,前一笔交易会影响后一笔交易的结果,快者为王。

远古时代,所有的交易都是要进入内存池等待矿工打包,有些聪明人就直接扫描内存池来寻找套利机会,如果发现了则换成自己的地址并且给出更高的gas费来争取优先被打包上链进行抢跑(frontrunners)。为了对抗这种行为,大名鼎鼎的Flashbots出现了,通过扩展客户端准许套利玩家不直接向内存池披露交易,而是直接向矿工提交特定顺序的交易集合(bundle),然后矿工模拟独立执行所有bundle并且记录bundle_price,最后按照这个的高低排序,将包含失败交易的bundle移除,剩下的成功bundle按照顺序打包上链。这种方式除了大概率不会进入内存池(这里涉及到了uncle bandit攻击,不展开),而且失败的交易不上链,同时也减少了套利玩家gas费损失。

上面的例子是最理想化的情况,真实交易中不可能一点磨损都没有的。扣除各种费用后,利润可能就会变的非常少,那么有没有什么办法能放大利润绝对值呢?

这里就要引出Defi特有一个东西——闪电贷(Flash Loan),这个玩意可以让套利玩家无抵押获取近乎无上限的贷款,只要在同一个区块交易中偿还本息即可。或许有小伙伴想:“既然如此,借出来钱转到自己账户然后跑路岂不是一夜暴富?“哦嚯,借用长者的话来说就是"图样图森破”。

wechat

借贷协议合约以及EVM共同保证了如果不偿还贷款整个交易都会失败回退,也就是原子性(对,就是技术面试八股文常见问题之数据库事务)。

Sandwich Trading

三明治攻击又名夹子,如果说上面介绍的还是套利玩家之间的游戏,那么三明治攻击可以说是纯粹的作恶了,真真正正的给普通用户造成损失。

我们知道针对于同一池子的前一笔交易会对后一笔交易产生影响。为了能够提高交易成功率,一般用户在DEX进行交易时会设定一个滑点(slippage),滑点就是交易预期价格与交易有效执行价格之间的差异。

普通用户交易一般都会进入内存池中,如果滑点设定的不合理就会被夹子机器人盯上,首先用一个同向交易将目标价格推高,然后将用户真正的交易排在中间,最后用一个反向交易出售获利——就像三明治一样把用户真实交易夹住,不知不觉中用户的钱就损失了,比如下图:

不过有句名言叫做"当你凝视深渊的时候,深渊也在凝视着你”。既然有人用夹子作恶,那么自然也会有人盯上夹子,通过建立有毒代币、有毒池子来对夹子进行一场屠杀,也就是沙门氏菌(Salmonella),将黑暗森林规则展示的淋漓尽致。对这部分感兴趣的同学可以去看青十五大佬写的《黑暗森林》系列,读起来很爽。

Liquidations

现实生活中,当资不抵债时候就会触发清算,Defi中也是如此。不过Defi中的清算会多出一个叫做"清算人”(liquidator)的角色,他们通过扫描区块链上的数据来寻找那些可以被清算的借款人来赚取收益。

举个栗子,已知当前1个苹果可以换2000个香蕉,小明质押了1个苹果,但DEX为了控制风险,不可能给小明2000个香蕉的额度,而是按照一定比例,比如0.75来发放香蕉,也就是说小明最多能拿到2000*0.75=1500个香蕉。其中0.75就叫做清算阈值,每个DEX的可以自由决定大小。

小明也怕自己被清算,于是他决定只用1250个香蕉。

那么小明当前的健康因子就是 1500/1250 = 1.2 > 1

过了一段时间1个苹果只能换1600个香蕉了,那么小明能够借香蕉的最大额度就变成了1600*0.75=1200,此时小明的健康因子变成了1200/1250=0.96 < 1,如果小明没及时补充苹果进去让自己的健康因子大于1,那么他将面临被清算的情况。

小红发现了小明可以被清算,立刻触发了清算协议。这里我们假定清算人可以获得10%的清算激励(liquidationincentive),并且关闭因子(closefactor)为0.5,那么小红可以帮小明偿还1250*0.5=625个香蕉,从而获得625*1.1/1600=0.43个苹果(为了简单就不计算交易费了)。

而此时小明则只剩下了625个香蕉和0.57个苹果,健康因子变成了0.57*1600*0.75/625=1.094 > 1。如果香蕉继续贬值,小明很可能面临再次清算……

清算方式(固定清算|拍卖清算)、清算激励和关闭因子每家DEX略有不同,计算公式也可能有细微差别,但大体思路都差不多。

如果小红没有香蕉来清算怎么办?结合一下上面闪电贷,是不是觉得发现了空手套白狼的稳赚不赔买卖?冷静冷静——看看文章第一张图片的左下角,会有新的体感。

关于个体在Web3领域赚钱的几种姿势

目前我接触的大概有以下几类:

  • 一级市场交易:挖矿、撸空投、IEO|ICO|IDO、流动性质押、各种白名单、Gitcoin等获得一手token的方式都归到这里,新人建议从撸空投入手,最友好。
  • 二级市场交易:最简单也最难。简单有个账户就能操作,难在各种技术指标运用、市场情绪观察、交易策略制定、基建竞赛……上面说的MEV就是此类,做过量化交易的同学应该懂。
  • 知识付费:如果在某个领域比较擅长,运营付费社群也是一个不错的方向。目前我和朋友运营的社群已经到了第三期,内容也在不断更新迭代中。
  • 做项目:如果有人有资金,做个项目方甚至开个交易所都可以。参加黑客松、拉投资,做好了名利双收。(坏的方向就是资金盘、ZP……遵纪守法人人有责)
  • 白(黑)帽子:技术大佬专属。
  • 卖铲子:比如给工作室、工会联盟提供批量操作工具、数据分析工具、反女巫、KYC……
  • KOL|MOD:如果运营能力不错,在TW、油管成为大V,然后等项目方来合作,或者做项目的社区MOD也可以拿到收益。
  • 打工:大多数Web3公司都在国外,比如做链、做基建、做钱包、做安全、做DApp……

砖已抛出,有不足和错误的地方欢迎指正探讨。

交个朋友

感谢耐心看到这里的同学,为了方便没接触过Defi的同学理解,这里进行了大量的简化并且没有使用代币名称。金融+技术造成了N倍的复杂性,相对完备的金融模型如果技术出现漏洞依然会引发市场恐慌进而造成剧烈波动,从而产生套利机会。(Curve没错说的就是你)

wechat

参考资料

ETH官网