原文标题:《CodeReview回顾:去中心化交易所Uniswap》
撰文:要飞的Harry
这次CodeReview的项目是去中心化交易所Uniswap,领读员是Tiny熊。
视频回顾在?这里。
Uniswap介绍
Uniswap的核心原理利用了一个简单的常量乘积模型:K=x*y,其中x,y为代币数量。在交易的过程中,需要保持K值不变,所以x和y的变化方向是相反的。可以参考下面的三幅图来理解如何在Uniswap中交易和增加流动性。
Elon Musk赞同“火星经济将依靠加密货币运行”言论:12月29日消息,近日,SpaceX和特斯拉公司CEO Elon Musk在人工智能研究员兼播客主持人Lex Fridman的推文下发表的评论引发热议。根据该推文,Elon Musk对Lex Fridman所言“火星经济将依靠加密货币运行”表示赞同。但与此同时,Elon Musk没有具体说明它会是比特币还是另一种加密货币。(福布斯)[2020/12/30 16:03:39]
代码解读
声音 | 火星人许子敬:数字货币投资最理性的行动就是持有比特币:火星人许子敬在刚刚微博上表示,绝大部分参与数字货币投资的人是赚不到钱的。其本质原因是:这些人都是法币的信徒,而非数字货币的信徒。如果选择数字货币,那么最理性的行动就是:持有比特币,好好睡觉。如果选择法定货币,那么最理性的行动就是:追涨杀跌,杠杠期权。在过去的十年间,两种不同的选择已然有了天壤之别。[2019/6/21]
Uniswap有两个核心的项目:
声音 | 火星人朋友圈科普RAM:火星人在朋友圈发文称,“什么是RAM?简单来说就是EOS这个国家的土地,所有的经济行为都离不开土地。只要EOS的BP们能投票形成一个稳定的供给预期,并且不改变目前的Bancor算法,那么RAM后续的价格有可能会像北上广深的房价走势。房价下跌不行,房价过快上涨也不行,EOS的生态越来越像某国了,真有意思。”[2018/7/6]
用来托管Uniswap的资产用来与Uniswap进行交互uniswap-v2-core项目
这个项目中的代码通常不会被用户直接调用,而是被uniswap-v2-periphery项目中的路由合约调用,因为路由合约的接口更友好。
合约:UniswapV2Factory.sol
核心方法:
createPair:用来创建一个交易对。接收两个token的地址作为参数,然后调用汇编方法create2创建pair,之后调用IUniswapV2Pair的initialize方法初始化pair。创建成功后发出PairCreated事件。
合约:UniswapV2Pair.sol
这个合约相当于
核心方法:
mint:给指定的地址mintLPtoken。burn:burn掉LPtoken,发送给用户对应的token0和token1。swap:交易。uniswap-v2-periphery项目
这个项目会被前端直接调用,之后会调用进uniswap-v2-core项目中的对应方法。
合约:UniswapV2Router02.sol
核心方法:
addLiquidity:提供两种ERC-20token,给ERC-20?ERC-20池子添加流动性removeLiquidity:移除ERC-20?ERC-20池子的流动性,接收两种ERC-20tokenremoveLiquidityWithPermit:让用户提前签好名授权合约,这样就省去了approve交易,只需要一笔交易就可以完成approve+transferFrom的操作。swapExactTokensForTokens:交易。指定发送(in)的token0数量,让合约计算得到(out)的token1数量swapTokensForExactTokens:交易。指定想要得到(out)的token1数量,让合约计算需要发送(in)的token0数量更多的关于合约方法的描述,可以参考Uniswap的?文档。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。