技术解析 Uniswap 运行机制与核心功能_UNI:Valuedefi vSWAP

原文标题:《CodeReview回顾:去中心化交易所Uniswap》

撰文:要飞的Harry

这次CodeReview的项目是去中心化交易所Uniswap,领读员是Tiny熊。

视频回顾在?这里。

Uniswap介绍

Uniswap的核心原理利用了一个简单的常量乘积模型:K=x*y,其中x,y为代币数量。在交易的过程中,需要保持K值不变,所以x和y的变化方向是相反的。可以参考下面的三幅图来理解如何在Uniswap中交易和增加流动性。

Mango被攻击事件分析:损失总计约1.16亿美元:金色财经报道,据CertiK Skynet监测,Mango遭黑客攻击事件分析,首先攻击者向第一个账户(CQvKSNnY...)注资500万美元,并做空4.83亿单位的MNGO perps。 之后攻击者向第二个账户(4ND8FVPjU...)注资,然后以每单位0.0382美元的价格做多了4.83亿单位的MNGO perps。攻击者通过操纵价格预言机上MNGO的价格,将MNGO价格拉高,从而在第二个账户上获利。之后攻击者用第二个账户在Mango上借取其他代币。 随后将Mango上的流动性资金全部转出。Mango损失总计约1.16亿美元。[2022/10/12 10:32:09]

代码解读

报告:到2032年,加密货币、CBDC等数字资产可以帮助印度经济增长1.1万亿美元:12月6日消息,美印战略伙伴关系论坛(USISPF)和美国加密交易所CrossTower周一表示,互联网发展的下一个阶段被业界称为Web 3.0,其中去中心化互联网利用区块链技术,数据归消费者所有,可以帮助印度在2032年前为其GDP增加1.1万亿美元的经济增长。此处的数字资产被称为加密货币,如比特币、稳定币、央行数字货币(CBDC)、非同质化代币(NFT)和其他使用区块链和分布式账本技术的货币。CrossTower于今年9月进入印度市场。

USISPF和CrossTower周一发布的报告《印度1万亿美元数字资产机遇》称,“印度完全有资格从这场金融和技术生态系统的深刻变革中获益。”其引用的理由包括:第一,印度是一个极具创业精神的国家,是全球第三大创业生态系统;第二,印度拥有世界上最高的原生数字人口,拥有世界上最多的青年人口;第三,印度公民精通技术,2020年的开发者基数约为280万,预计到2023年将拥有最多的开发者。

到2032年,使用区块链技术的行业,包括医疗保健、供应链、忠诚度和奖励、支付和汇款、金融服务和艺术,有可能分别为印度GDP贡献14.2亿美元、686亿美元、28亿美元、217亿美元、133亿美元和515亿美元。(Financial Express)[2021/12/6 12:55:05]

Uniswap有两个核心的项目:

ETH跌破760美元关口 日内跌幅为1.12%:火币全球站数据显示,ETH短线下跌,跌破760美元关口,现报759.88美元,日内跌幅达到1.12%,行情波动较大,请做好风险控制。[2021/1/3 16:18:20]

用来托管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的?文档。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-3:670ms