adshao

@adshao

https://twitter.com/AdamShao

Joined on Mar 20, 2022

  • 概述 Uniswap v3是一个基于以太坊虚拟机(EVM)实现的无监管自动做市商(AMM)。与之前的版本相比,Uniswap v3提高了资金利用率,赋予流动性提供者更多控制能力,改进了价格预言机的准确性和便利性,同时增加了更灵活的手续费结构。 1 Introduction 介绍 自动做市商(AMMs)是集中流动性,并基于算法将其开放给交易者的代理商。常值函数做市商(CFMMs)(Uniswap也是成员之一)作为AMM中的一个常见类别,已被广泛应用于去中心化金融场景,他们一般都在无需许可的区块链上以交易代币的智能合约的形式实现。 当前市场上的常值函数做市商大多存在资金利用率不高的问题。在Uniswap v1/v2使用的恒定乘积做市商公式中,对于给定价格,池子中仅部分资金参与做市。这显得十分低效,特别是当代币总是在特定价格附近交易时。 注:以稳定币为例,USDC/USDT的波动范围极小,而根据v2的公式,流动性提供者实际上会将资金分布在价格区间(0, $\infty$),即使这些价格几乎永远也无法使用到。因此在Uniswap v1/v2版本,资金利用效率较低,同时也导致交易滑点相对较高。
     Like 9 Bookmark
  • Oracle.sol 本合约定义预言机相关方法。 在交易对合约创建时,默认初始化长度为1的数组用于存储观测点数据;任何用户都可以调用UniswapV3Pool.sol的increaseObservationCardinalityNext方法扩展预言机的观测点空间,但需要承担扩展空间带来的手续费。 一个预言机观测点包括以下内容: blockTimestamp:该观测点写入时的时间 tickCumulative:截止该观测点时间的累计tick secondsPerLiquidityCumulativeX128:截止该观测点的累计每流动性持续时间
     Like 1 Bookmark
  • Uniswap 深入理解 Uniswap v2 白皮书 深入理解 Uniswap v2 合约代码 深入理解 Uniswap v3 白皮书 深入理解 Uniswap v3 合约代码(一) 深入理解 Uniswap v3 合约代码(二) Uniswap v3 Oracle 预言机 Flashloan fee of Uniswap v2 一道Uniswap v2面试题
     Like 4 Bookmark
  • 本文将Paradigm的blog VRGDA做了简单整理,如需了解更多细节,请阅读原文。 概述 VRGDA全称是Variable Rate Gradual Dutch Auctions(可变速率渐进式荷兰拍卖),是Paradigm提出的一种代币发行机制。其目的是通过可定制的代币发行模型,实现渐进式荷兰拍的效果:当市场热度超出预期时,价格上涨;反之,当市场热度低于预期时,价格下跌;而当市场热度与预期一致时,其价格等于设定的目标价格。 在Art Gobblers项目中,有两种NFT通过VRGDA方式进行拍卖:一种是Gobbler,其总量具有固定上限10,000个;另一种是Page,无总量上限。这两种代币发行速率如下图所示: 定义 函数 为了实现荷兰拍卖的效果,需要寻找一种价格 $p$ 与时间 $t$ 的函数,使得随着时间 $t$ 的增长,价格 $p$ 呈下降趋势。
     Like 1 Bookmark
  • 上文介绍了《深入理解 Uniswap v2 白皮书》,今天我们来讲解Uniswap v2合约代码。 本文不会逐行介绍合约代码,而是关注合约架构和重点方法,如果需要详细的代码说明,推荐阅读以太坊官方的Uniswap v2代码走读。 合约架构 Uniswap v2的合约主要分为两类:core合约和periphery合约。其中,core合约仅包含最基础的交易功能,核心代码仅200行左右,由于用户资金都存储在core合约里,因此需要保证core合约最简化,避免引入bug;periphery合约则针对用户使用场景提供多种封装方法,比如支持原生ETH交易(自动转为WETH),多路径交换(一个方法同时执行A→B→C交易)等,其底层调用的是core合约。我们在app.uniswap.org界面操作时用的就是periphery合约。 我们先介绍几个主要合约的功能: uniswap-v2-core
     Like  Bookmark
  • 问:一个Uniswap v2交易对,初始提供100ETH和10,000 token的流动性,获得1000枚LP。现在有一个用户手里有10ETH,如果他希望全部用来做市,应该将多少eth置换为token,以便和手里剩余的eth能正好组成LP? 答: 一、 在兑换之前,我们需要先确认当前池子的reserve0和reserve1。 根据uniswap v2代码,在首次添加流动性时:
     Like  Bookmark
  • Refer to Uniswap v2 Whitepaper, each swap should satisfy following formula: $$ (x_1 - 0.003 \cdot x_{in}) \cdot (y_1 - 0.003 \cdot y_{in}) \ge x_0 \cdot y_0 \tag{1} $$ To simplify the calculation on-chain: $$ (1000 \cdot x_1 - 3 \cdot x_{in}) \cdot (1000 \cdot y_1 - 3 \cdot y_{in}) \ge 1000000 \cdot x_0 \cdot y_0 \tag{2}
     Like  Bookmark
  • 概述 与Uniswap v2一样,Uniswap v3的合约也分为两类: Uniswap-v3-core Uniswap v3的核心代码,实现了协议定义的所有功能,外部合约可直接与core合约交互 Uniswap-v3-periphery 基于使用场景封装接口,如头寸(Position)管理、多路径代币交换等功能,Uniswap界面即与periphery合约交互
     Like 8 Bookmark
  • Uniswap-v3-periphery Uniswap-v3-core合约定义的是基础方法,而Uniswap-v3-periphery合约才是我们平常直接交互的合约。 比如,众所周知Uniswap v3头寸是一个NFT,这个NFT就是在periphery合约中创建和管理的,在core合约中并没有任何NFT的概念。 NonfungiblePositionManager.sol 头寸管理合约,全局仅有一个,负责管理所有交易对的头寸,主要包括以下几个方法: createAndInitializePoolIfNecessary:创建并初始化合约 mint:创建头寸
     Like 4 Bookmark
  • 前言 本文作为《深入理解Uniswap》系列的第一篇,将从Uniswap v2白皮书入手,讲解Uniswap v2协议的设计思路和数学公式推导过程。 网络上讲解Uniswap的文章已经很多了,为什么要再写一遍呢? 最初原因是为了记录我个人在学习Uniswap过程中的总结,这些总结不是简单的翻译,更多是对于白皮书知识点的延伸阅读、数学公式的推导以及合约代码的工程实现的学习思考,而这些在原版白皮书大多没有展开。 虽然目前Uniswap v3已经推出一段时间了,但是学习v2仍然是理解V3的基础;并且由于v3的License限制,其他EVM链AMM项目大多fork v2代码,因此深入学习Uniswap v2仍然很有必要。 此外,Uniswap作为DeFi的基础协议,无论是行业地位,还是理论基础及其工程实现,都是DeFi的经典范例,对于想要深入学习DeFi或者智能合约编程的同学,Uniswap v2是非常好的入门材料。
     Like 3 Bookmark