了解 Uniswap V2(DEX)
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 的合约结构
核心合约
- UniswapV2Factory:工厂合约,用于创建和管理交易对。
- UniswapV2Pair:每个交易对的合约,负责管理流动性池和处理代币交换。
- UniswapV2ERC20:实现了流动性代币的 ERC-20 标准。
- UniswapV2Router: 实现一些接口
相关库
- SafeMath:用于安全的数学运算,防止溢出和下溢。
- UQ112x112:用于固定点数运算的库,保证高精度的计算。
- Math:提供了一些基本的数学运算函数。
交易流程示例
- 提供流动性:LP 将等值的两种代币存入流动性池,获得 LP 代币。
- 执行交易:用户将一种代币发送到池中,按照恒定乘积公式计算出可以得到的另一种代币的数量,并支付交易费用。
- 赎回流动性:LP 可以随时赎回他们的流动性代币,并获得相应的两种代币和累计的交易费用。
通过理解这些核心概念,用户和开发者可以更好地利用 Uniswap V2 进行去中心化金融交易和应用开发。
了解 Uniswap V2(DEX)的更多相关文章
- Uniswap V2 — 从代码解释 DeFi 协议
Uniswap V2 - 从代码解释 DeFi 协议 为了理解我们在分析代码时将要经历的不同组件,首先了解哪些是主要概念以及它们的作用是很重要的.所以,和我一起裸露吧,因为这是值得的. 我在 5 个段 ...
- 剖析Defi之Uinswap_1
学习UniswapERC20,它是交易对的父合约.UniswapV2ERC20 是流动性代币合约,也称为 LP Token.功能主要实习ERC20代币功能以及对线下签名授权. 1 pragma sol ...
- 如何搭建自己的SPRING INITIALIZR server
这两天在慕课学Spring boot ,用idea通过spring initializr新建项目 即使用代理连不上.无奈. 参考了 GitHub - spring-io/initializr: A w ...
- Android Dex文件格式(二)
第三块: 数据区 索引区中的最终数据偏移以及文件头中描述的map_off偏移都指向数据区, 还包括了即将要解析的class_def_item, 这个结构非常重要,下面就开始解析 c ...
- Uniswap详解之一(概览)
一.Uniswap简介 Uniswap是以太坊上的DEX实现,基于"恒定乘积自动做市"模型,与传统的中心化和DEX具有很大的差别. 主要特点: 无订单簿,无做市商 兑换币具有很低的 ...
- Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客<Android平台dalvik模式下java Ho ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 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 ... 这个错误是因为有两个相 ...
- Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结
Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码 用户操作 ,比如 ...
- [Android]Android端ORM框架——RapidORM(v2.1)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...
随机推荐
- shell脚本中exit命令
shell脚本中exit命令使用千次阅读 2020-09-30 10:19:54 exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行. $ exit --help exit: ...
- Python3将web服务和脚本做成开机自启
1.将bwService文件放到 /etc/init.d/下 bwService文件(类型是文件) #!/bin/bash # # This shell script takes care of st ...
- Qt 设置快捷键
Qt设置快捷键 本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷. 文章目录 Qt设置快捷键 一.需要的类 QShortcut 函数: 二.设置快捷键 官方文档原文翻译: 我的理解: 一.需要的 ...
- 记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克
现在就业的确崩了 这次面试的时间是8月28号.距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月.没多少找工作经验的我也体会到了什么叫就业崩了. 看了一线码农的采访计划后,我也把苏州列为 ...
- 删除链表倒数第N个节点(19)
双指针法 双指针法主要是最开始有两个指针fast,slow都指向链表的虚拟头节点dummy,然后快指针先移动,这里需要先向后移动n+1位(因为你最终是要找到目标节点的前一个节点),然后slow和fas ...
- 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 ...
- Seata 核心源码详解
参考文章: 分布式事务实战方案汇总 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分布式事务原理及解决方案案例https://www.cnblo ...
- vue-router的History 模式常用的三种配置方式(去掉地址栏中的#号)
第一种:nginx配置 conf主要的配置代码: http { # nginx负载均衡配置 upstream dynamic_balance { #ip_hash; server 192.168.10 ...
- Angular 18+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)
前言 之前在 Component 组件 の Angular Component vs Custom Elements 文章中,我们有学习过几个基础的 Lifecycle Hooks. 比如 OnCha ...
- Angular 学习笔记 work with zip (压缩文件格式)
最近在做批量创建. 上回说到了 读写 excel, 那么就可以通过 excel 的资料来创建资料了.但是资料经常会有图片,而 excel 里面放图片有点不太好. 于是就想 upload excel 的 ...