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. shell脚本中exit命令

    shell脚本中exit命令使用千次阅读 2020-09-30 10:19:54 exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行. $ exit --help exit: ...

  2. Python3将web服务和脚本做成开机自启

    1.将bwService文件放到 /etc/init.d/下 bwService文件(类型是文件) #!/bin/bash # # This shell script takes care of st ...

  3. Qt 设置快捷键

    Qt设置快捷键 本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷. 文章目录 Qt设置快捷键 一.需要的类 QShortcut 函数: 二.设置快捷键 官方文档原文翻译: 我的理解: 一.需要的 ...

  4. 记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克

    现在就业的确崩了 这次面试的时间是8月28号.距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月.没多少找工作经验的我也体会到了什么叫就业崩了. 看了一线码农的采访计划后,我也把苏州列为 ...

  5. 删除链表倒数第N个节点(19)

    双指针法 双指针法主要是最开始有两个指针fast,slow都指向链表的虚拟头节点dummy,然后快指针先移动,这里需要先向后移动n+1位(因为你最终是要找到目标节点的前一个节点),然后slow和fas ...

  6. RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023,8)

    RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023 ...

  7. Seata 核心源码详解

    参考文章: 分布式事务实战方案汇总 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分布式事务原理及解决方案案例https://www.cnblo ...

  8. vue-router的History 模式常用的三种配置方式(去掉地址栏中的#号)

    第一种:nginx配置 conf主要的配置代码: http { # nginx负载均衡配置 upstream dynamic_balance { #ip_hash; server 192.168.10 ...

  9. Angular 18+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)

    前言 之前在 Component 组件 の Angular Component vs Custom Elements 文章中,我们有学习过几个基础的 Lifecycle Hooks. 比如 OnCha ...

  10. Angular 学习笔记 work with zip (压缩文件格式)

    最近在做批量创建. 上回说到了 读写 excel, 那么就可以通过 excel 的资料来创建资料了.但是资料经常会有图片,而 excel 里面放图片有点不太好. 于是就想 upload excel 的 ...