Uniswap V2 是一个基于以太坊的去中心化交易所(DEX),它通过流动性池和自动化做市商(AMM)模型来实现去中心化的代币交换。以下是 Uniswap V2 的核心概念:

1. 自动化做市商(AMM)

Uniswap 使用自动化做市商模型(AMM),这意味着交易对通过数学公式而不是订单簿来确定价格。Uniswap V2 使用恒定乘积公式:

[ x \cdot y = k ]

其中, ( x ) 和 ( y ) 是池中两种代币的数量, ( k ) 是一个常数。这个公式确保了流动性池中的代币数量和价格之间的关系。

2. 流动性池(Liquidity Pool)

每个交易对(例如 ETH/DAI)都有一个流动性池。流动性池由流动性提供者(LP)提供的两种代币组成,LP 通过将等值的两种代币存入池中来提供流动性。作为回报,LP 获得流动性代币,这些代币代表他们在池中的份额,并且可以用来赎回原始代币和交易费用的分成。

3. 流动性代币(Liquidity Tokens)

当 LP 向流动性池中提供流动性时,他们会收到流动性代币(也称为 LP 代币),这些代币表示 LP 在池中的份额。LP 代币可以被转让、交易或赎回以取回池中的原始代币和累计的交易费用。

4. 交易和费用

当用户在 Uniswap 上进行代币交换时,他们实际上是在与流动性池进行交易。每次交易都会支付一定的交易费用(通常为 0.3%),这笔费用会按比例分配给所有流动性提供者,以奖励他们提供的流动性。

5. 任意 ERC-20 代币对

Uniswap V2 支持任意两个 ERC-20 代币之间的交易对。这与 Uniswap V1 不同,V1 只能使用 ETH 作为其中一种交易对。V2 允许更灵活的交易对组合,例如 DAI/USDC、LINK/WBTC 等。

6. 预言机(Oracles)

Uniswap V2 引入了时间加权平均价格(TWAP)预言机。这种预言机利用过去一段时间内的价格数据来计算平均价格,增强了价格的可靠性和安全性,避免了闪电贷攻击等操纵行为。

7. 闪电交换(Flash Swaps)

Uniswap V2 引入了闪电交换功能,允许用户借用池中的代币并在同一交易中偿还。这为去中心化金融(DeFi)应用提供了更多的灵活性和可能性,例如套利、再融资等。

8. 交易对的创建和初始化

新的交易对可以通过工厂合约创建。工厂合约负责管理所有交易对的创建,并维护一个交易对地址的映射。当一个新的交易对创建时,工厂合约会部署一个新的交易对合约,并初始化该交易对。

9. 无常损失(Impermanent Loss)

无常损失是指在流动性提供者撤回流动性时,由于价格波动导致的潜在损失。尽管流动性提供者通过交易费用可以获得回报,但价格波动可能导致的无常损失需要被考虑。

Uniswap V2 的合约结构

核心合约

  1. UniswapV2Factory:工厂合约,用于创建和管理交易对。
  2. UniswapV2Pair:每个交易对的合约,负责管理流动性池和处理代币交换。
  3. UniswapV2ERC20:实现了流动性代币的 ERC-20 标准。
  4. UniswapV2Router: 实现一些接口

相关库

  1. SafeMath:用于安全的数学运算,防止溢出和下溢。
  2. UQ112x112:用于固定点数运算的库,保证高精度的计算。
  3. Math:提供了一些基本的数学运算函数。

交易流程示例

  1. 提供流动性:LP 将等值的两种代币存入流动性池,获得 LP 代币。
  2. 执行交易:用户将一种代币发送到池中,按照恒定乘积公式计算出可以得到的另一种代币的数量,并支付交易费用。
  3. 赎回流动性:LP 可以随时赎回他们的流动性代币,并获得相应的两种代币和累计的交易费用。

通过理解这些核心概念,用户和开发者可以更好地利用 Uniswap V2 进行去中心化金融交易和应用开发。

了解 Uniswap V2(DEX)的更多相关文章

  1. Uniswap V2 — 从代码解释 DeFi 协议

    Uniswap V2 - 从代码解释 DeFi 协议 为了理解我们在分析代码时将要经历的不同组件,首先了解哪些是主要概念以及它们的作用是很重要的.所以,和我一起裸露吧,因为这是值得的. 我在 5 个段 ...

  2. 剖析Defi之Uinswap_1

    学习UniswapERC20,它是交易对的父合约.UniswapV2ERC20 是流动性代币合约,也称为 LP Token.功能主要实习ERC20代币功能以及对线下签名授权. 1 pragma sol ...

  3. 如何搭建自己的SPRING INITIALIZR server

    这两天在慕课学Spring boot ,用idea通过spring initializr新建项目 即使用代理连不上.无奈. 参考了 GitHub - spring-io/initializr: A w ...

  4. Android Dex文件格式(二)

    第三块: 数据区         索引区中的最终数据偏移以及文件头中描述的map_off偏移都指向数据区, 还包括了即将要解析的class_def_item, 这个结构非常重要,下面就开始解析   c ...

  5. Uniswap详解之一(概览)

    一.Uniswap简介 Uniswap是以太坊上的DEX实现,基于"恒定乘积自动做市"模型,与传统的中心化和DEX具有很大的差别. 主要特点: 无订单簿,无做市商 兑换币具有很低的 ...

  6. Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客<Android平台dalvik模式下java Ho ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  8. Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...

    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...

  9. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如 ...

  10. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

随机推荐

  1. CryptoHouse:由 ClickHouse 和 Goldsky 支持的免费区块链分析服务(ClickHouse 博客)

    我们很高兴地宣布 CryptoHouse,在 crypto.clickhouse.com 上可访问,这是一个由 ClickHouse 提供支持的免费区块链分析服务. https://crypto.cl ...

  2. centos7安装docker详细教程

    一.准备工作 1.系统要求 docker要求centos的内核版本不低于3.10.centos7满足最低内核要求. 检查当前的内核版本 [root@zspc /]# uname -r 3.10.0-1 ...

  3. JavaScript设计模式样例五 —— 建造者模式

    建造者模式(Builder Pattern) 定义:使用多个简单的对象一步一步构建成一个复杂的对象. 目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 场景:一些基本部件不 ...

  4. C 语言编译过程

    编译过程 编译过程是将高级编程语言(如 C 语言)写成的源代码转换成机器可以执行的低级机器语言(通常是二进制代码)的过程.这个过程一般可以分为几个阶段: 预处理(Preprocessing): 预处理 ...

  5. ubuntu安装过程(双系统模式)中遇到的坑

    笔者在安装上win11后,看我的M.2硬盘太大,就想着以双系统方式再安装上个ubuntu,以方便以后使用.没想到和win11一样,也是连遇到挫折,一番折腾后最终才成功.下面记录下安装要点. 安装win ...

  6. bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT

    bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT   问题:原因:静态方法无法调用自己定义的非静态方法 解决方案:1 ...

  7. Mybatis骚操作-通用查询工具类

    老项目大多都有对JDBC进行了封装,可以直接执行SQL的工具类,在做项目升级改造的时候(这里仅指整合mybatis),要么全部调整成dao-xml的形式(会有改动代码多的问题,而且看代码时需要xml和 ...

  8. 如何将图片转换为向量?(通过DashScope API调用)

    本文介绍如何通过模型服务灵积DashScope将 图片转换为向量 ,并入库至向量检索服务DashVector中进行向量检索. 模型服务灵积DashScope,通过灵活.易用的模型API服务,让各种模态 ...

  9. CSS – border-radius (Rounded Corners)

    前言 之前的文章 CSS – W3Schools 学习笔记 (3), 这篇独立出来写, 作为整理. 参考: Youtube – Advanced CSS Border-Radius Tutorial ...

  10. 2019牛客暑期多校训练营(第四场)J-free(分层图最短路)

    >传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Co ...