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

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

撰文:要飞的Harry

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

视频回顾在?这里。

Uniswap介绍

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

Bitcoin Magazine Ventures推出的BTC生态系统基金已募集3000万美元:金色财经报道,Bitcoin Magazine Ventures推出世界上第一个比特币生态系统基金。根据内部消息,这家专门致力于投资比特币生态系统的风险投资基金募集3000万美元,并且已经超额认购了9000万美元。

新基金强调比特币生态系统的发展,主要投资于新的应用程序、工具和基础设施,如Ordinals、Lighting、BRC20、DLC和其他UTXO相关元素。这些创新允许比特币采用更灵活的功能,类似于以太坊。知名风险投资公司Sora Ventures向该基金投资300万美元。[2023/6/2 11:53:19]

代码解读

印度央行希望推广CBDC:金色财经报道,印度储备银行副行长 T. Rabi Sankar 建议,全球数字货币的使用应“限制”为法定货币,并支持中央银行数字货币 ( CBDC )。周四,在最新的G20 Techsprint 黑客马拉松启动仪式上,他还提出了远离主要储备货币的多元化想法 。[2023/5/5 14:44:51]

Uniswap有两个核心的项目:

用来托管Uniswap的资产用来与Uniswap进行交互uniswap-v2-core项目

Waves创始人:Power空投将只在Waves链上进行,USDN将作为指数代币以去中心化方式存在:1月18日消息,公链项目Waves创始人Sasha Ivanov在电报群中发布声明称:“关于USDN的未来有一些误解,我想澄清一下。首先,它作为稳定币是失败了,但没有‘死’。事实证明,它的架构对于硬锚定的稳定币来说是失败的。但对于另一种有趣的金融产品,即生态系统指数,它已经足够了。它不需要硬锚定,它只需要跟踪选定的生态系统代币的投资组合。我们把它作为一种稳定币逐步淘汰,但我们把它作为一种具有新的意义和效用的新资产复活。我认为这很不寻常,但极端时期需要极端措施。我们这样做的方式是,我们将能够保留NSBT和SURF代币及其激励措施,我们也将激励代币持有者将他们的代币添加到指数中。由于它不再是稳定的,它的价格不仅可以低于1美元,也可以高于1美元。我们正在准备添加新的金库资产,首先这将是一项捐赠,之后向金库添加新代币的激励措施将生效,项目将以完全去中心化的方式存在。”

此外,Ivanov在推特上表示,要想获得Power代币空投,需将Waves代币从中心化交易所取出,Power代币空投将只在Waves链上进行。

此前1月12日消息,Ivanov表示,将于1月至2月空投Power代币。1月13日消息,Neutrino团队称,USDN正从稳定币过渡到Waves生态系统指数代币WIXT,将不再与1美元挂钩。[2023/1/18 11:18:24]

这个项目中的代码通常不会被用户直接调用,而是被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-0:816ms