全维度深入解析:Uniswap的正面与背面
任何投资回报都以风险控制为前提,尤其是在目前智能合约仍处于试验阶段时。
今天的内容主要是针对DEX里的AMM(全自动化做市商)类型,从多个维度深入解析Uniswap的优势与风险。
本文结构:
- 代币流通性问题与AMM
- Uniswap的正面
- Uniswap是什么?
- 版本的升级
- Uniswap的背面
- 外部风险
- 技术风险
- 经济模型风险
- 总结
代币流通性问题与AMM
去中心化交易所一直存在一个问题——代币流通性问题,流通性差用户体验自然也就不会好。
以前的Dex用户交易的方式是以订单薄式交易,DEX的订单薄交易信息在链上记录,用户创建交易订单完成订单,然后付一些链上的gas费用,以完成交易记账。AMM(Automated Market Maker,自动化做市商)的出现很好地解决了流通性的问题,AMM类型的交易所不需要提供买卖盘口数据来展示价格,这类Dex将流动性汇集到一起形成一个流通性池,根据算法实现全自动化做市。目前市面上最热门的几个Dex都是使用AMM的方式来进行的,比如Uniswap,Balancer、Curve等等。
当一个市场(币种)不那么活跃或流动性不那么强时,买卖盘的价格将需要由做市商提供。做市商是流通量提供者,可以确保价格变化是流动顺畅的。Uniswap作为一个去中心化做市商为ERC20代币提供流通性,用户同时可以再向交易所提供流通性获取收益。
Uniswap的正面
目前Uniswap在用户人数,交易量,成交额上面一直排在Dex板块榜首的位置。
某区块链导航网站DEX排名
Uniswap官网数据,总流通量2.5亿美金,每天交易次数超10万次
- Uniswap是什么?
- Uniswap是一个基于以太坊网络的去中心化交易所(DEX),可以用来交易ERC20代币。
- 一般的中心化交易所,交易代理由买卖双方创造流通性,Uniswap则可以自动创建交易市场。
- Uniswap可以解决dex的流通性问题。
- 版本的升级
- V1版本 只能通过ETH为桥 bridge currency。如两种ERC20 ABC/XYZ的转换,需要ABC/ETH 再转换为 ETH/XYZ
- V2版本 可直接创建两种ERC20的pair 来直接提供流通性V2版本的优点:
省手续费,因为只有一次转账。省去一次滑点,因为只有一次交易
Uniswap的背面
我总结Uniswap的风险可以分为三个方面:
- 外部风险
- 技术风险
- 经济模型风险
下面来具体分析这些风险。
-
外部风险
最近币圈最火的单词再也不是“1CO”或“1EO”了,而是“1UO”,全称为initial Uniswap offering。
Uniswap上币,是真正的三无产品。
只需要建立两个资金池,“无上币费”,“无审查”,“无成本” ,而其中的经济模型机制设计又天然利于FOMO,鼠标和键盘上甚至不需要超过100次的点击,就可以完成Uniswap里的上币的工作。
我花了46美元在Uniswap上发了一个币 https://36kr.com/p/827803890523778
Uniswap的出现大大降低了项目方发币割韭菜的难度和成本,Uniswap发币三件套:电报、discord、微信群(有些良心项目方还会做一个网站),居然连ICO时代的发币标配白皮书都没有。
项目方以极低的成本就可以获得交易所上币,市值管理,流通盘维护等服务,要知道这些服务在中心化交易所要缴纳数枚乃至数十枚BTC才可以享受的到。
Uniswap继承了以太坊在2017年1co的衣钵,让所有的项目都可以上交易所,相当于在2017年所有项目方都可以进行募资,让新韭菜了解到币圈的疯狂,更是让老韭菜对于币圈做了一次再次审视。
光鲜的一面是新的技术的诞生为比特币减半后死气沉沉的币圈吹来了一阵春风,另一方面,缺乏监管的去中心化交易所,出现了许多割韭菜项目和骗子项目。例如这段时间很火的分片项目near protocol(著名1co平台coinlist被巨大流量拥挤宕机了两次,公募时间推迟一次)就被Uniswap的某些居心不良的人“强上了交易所”,很多不明真相的群众中招买到了假币。
Near Protocol官方推特声明
-
技术风险
https://github.com/runtimeverification/verified-smart-contracts/tree/Uniswap/Uniswap
要注意,现在Uniswap是存在一个已知的可攻击路径的,风险源主要是ERC-777token的重入攻击,该攻击的大概原理: 通过二次调用tokenToEthSwapInput 函数来进入Uniswap代币兑换。 在第二次token的购买中,ETH储备较低,但token的储备相同。这意味着第二批代币将只交换 比应有的数量多一点的ETH 。这是控制交易所购买正在出售的代币的价格公式:
正常操作下,在随后的常规token售出之后,代币的储备将增加(分母增加),而以太坊的储备将减少(分子减少)。因此,在每轮售出后,token支付的金额将减少。 相反,通过利用可重入性,此动作将有效地防止储备的代币数量增加,从而将等式的分母变成常数。请注意,储备中的ETH数量仍将减少(即,每个可重入调用中的分子将较小)。从长远来看(经过几次重入之后),我们将能够获得一个可观的利润,重入迭代次数越多越好。我们将这种攻击称为“可重入式微交易”攻击。 该漏洞在代码中的表示为下图,攻击者能够将利润提高27%以上。
https://github.com/Uniswap/Uniswap-v1/blob/c10c08d81d6114f694baa8bd32f555a40f6264da/contracts/Uniswap_exchange.vy#L202
我们将攻击者利用漏洞的利润随token卖出数量的增长绘制为图表如下图:
上图为作者绘制
每个点代表固定销售数量Uniswap支付的ETH。例如,在20个“重入攻击”中每个售出350个token,使用重入微交易攻击(红色)产生大约22.192 ETH,而正常条件下通过外部调用tokenToEthSwapInput 函数 20次(每个调用中卖出350个token),一共出售7000个token,则利润仅为17.44 ETH(蓝色)。 随着调用次数的增加,重入攻击中显示出的利润有着明显的差异。合法的正常交易(蓝色)产生大约17.418 ETH的收益,而重入微交易攻击(红色)产生约22.324 ETH的收入。随着时间的推移,蓝色虚线并不是恒定的,有一个较小的斜率。
代码贡献: OpenZeppelin,该漏洞由OpenZeppelin测试得出。
参考资料:https://github.com/openzeppelin/exploit-Uniswaphttps://smartcontractsecurity.github.io/SWC-registry/docs/SWC-107
-
经济模型风险
相当于我卖了100个ERC20的这个币,然后我拿到0.048ETH的钱。这就是交易所的逻辑了。 这是最简单的计算方法,恒定函数做市商的计算逻辑更复杂,这里不再赘述。这里大家应该发现问题了,本来我们可以得到的以太坊应该是0.05个(计算方法:100/2000=0.05ETH),但是兑换后只拿到了0.048个,这就是在资金池内的资金不够多时,会存在较大的滑点。 Uniswap定价模型为x*y = k的定价模型(如忽略手续费),其中x和y是A和B两种代币的数量,A为以太坊,B为ERC20代币,K是常数,常数不变,这个定价机制决定了买入哪一边的数量多,与之相应的币种价格就会上升。举个例子,如果ERC20的币这个池子,被买走很多比如说一下买走50%(y变成0.5y),那么,x就要增加一倍,变成2x,那么对应之前就相当于你的ETH资金池变大了,然后币价就变高了。
Uniswap白皮书第5页 Uniswap唯一的经济参数是每笔交易0.30%的交易手续费。该手续费会激励给投入流通性池代币或eth的参与者,这是为了鼓励人们将其资金投入流动性池中。如果这笔手续费的设计过高或过低,可能会改变每个资金池里的资金水平,进而改变流动性提供者的回报,但是对流动性提供者的资金没有直接影响。
因此,我认为这种情况下没有经济模型激励失败的风险。
总结
Uniswap是一种AMM类型的去中心化交易所,本文对其进行多个维度的全面解析,并着重分析了其外部风险、技术风险与经济模型风险。 经过深入的研究发现,主要的风险是外部风险(也就是项目方的风险),平台本身的风险并不大。这正如ICO,本身只是一种新型融资模式,只是有的项目方借助这样的模式去行骗,所以,对项目的审核与研究尤为重要,我们会在后续的文章中对项目本身进行研究分析。敬请关注。