IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 使用Uniswap V2部署自己的去中心化交易所 -> 正文阅读

[区块链]使用Uniswap V2部署自己的去中心化交易所

?Dapp链接:CHAINPIP

部署UniswapV2前需要准备的智能合约项目:

  1. uniswap-v2-core: 核心合约
  2. uniswap-v2-periphery: 与核心合约交互的边缘合约,主要就是路由合约
  3. uniswap-lib: 工具合约

整合以上三个项目到一个项目中:

?

uniswap-v2-core

core核心主要有三个合约文件:

  1. UniswapV2Factory.sol:?工厂合约
  2. **UniswapV2Pair.sol:**配对合约
  3. **UniswapV2ERC20.sol:**LP Token 合约

UniswapV2Pair.sol管理着流动性资金池,不同币对有着不同的实例,比UniswapV2Pair.sol,?如 USDT-WETH 这一个币对,就对应一个UniswapV2Pair.sol合约地址**,DAI-WETH 又对应另一个UniswapV2Pair.sol**。

UniswapV2ERC20.sol则是用户往资金池里注入流动性的一种凭证,也称为流动性代币,其实也是一种ERC20代币,同样支持转账功能。当用户在Uniswap v2添加两个交易对( 如USDT-WETH),也就是添加流动性, Uniswap会增加对应UniswapV2ERC20.sol实例(如USDT-WETH LP Token)的余额,Uniswap根据用户持有LP Token的额度,计算手续费收益奖励给用户。

每个UniswapV2Pair.sol都有对应的一种UniswapV2ERC20.sol与之绑定。其实,UniswapV2Pair?继承了?UniswapV2ERC20,所以配对合约本身其实也是 LP Token 合约。

UniswapV2Factory.sol则是用来部署UniswapV2Pair.sol的,通过工厂合约的?createPair()?函数来创建新的配对合约实例。

uniswap-v2-periphery

periphery核心有两个合约文件:

  1. UniswapV2Router01.sol:路由合约 01 版本
  2. UniswapV2Router02.sol:路由合约 02 版本,相比 01 版本主要增加了几个支持交税费用的函数

这两个合约只要部署一个就行,本教程只部署UniswapV2Router01.sol

uniswap-lib

提供uniswap-v2-periphery的函数库。

开始部署Uniswap V2

在部署Uniswap V2之前,我们需要改下Uniswap V2代码中init code hash值,否则即便部署成功,也使用不了。位于项目contracts/libraries/UniswapV2Library.sol文件中的pairFor函数:

?init code hash是UniswapV2Pair的bytecode通过keccak-256计算的值:

?点击Bytecode按钮,在弹框中复制**Bytecode值,**打开网址 Keccak-256 Online

记得选择Input type为"Hex",最终得到的"02253df52a97965e4b0f62119b1048e43d71c7e02dd706e7a1d07655ed5f8642",就是我们要的init code hash

部署合约

只要部署三个合约:

  1. UniswapV2Factory
  2. WETH (可选, 也可使用链上已有的WETH地址)
  3. UniswapV2Router01

?

UniswapV2Factory参数:

  1. _feeToSetter: 设置手续费的管理员,可任选一个钱包地址

UniswapV2Router01参数:

  1. _factory: UniswapV2Factory部署后的合约地址
  2. _WETH: WETH合约地址

添加流动池

  1. addLiquidity:该接口支持添加两种 ERC20 代币作为流动性
  2. addLiquidityETH:与上一个接口不同,该接口提供的流动性资产,其中有一个是 ETH

添加两个代币流动池

?添加代币与ETH流动池

?代币授权

在添加流动性时,需要先授权代币给路由合约地址

可以使用一下授权面板,记得修改底部的合约地址为要授权的代币地址

?

交易

  1. swapExactTokensForTokens:用 ERC20 兑换 ERC20,但支付的数量是指定的,而兑换回的数量则是未确定的
  2. swapTokensForExactTokens:也是用 ERC20 兑换 ERC20,与上一个函数不同,指定的是兑换回的数量
  3. swapExactETHForTokens:指定 ETH 数量兑换 ERC20
  4. swapTokensForExactETH:用 ERC20 兑换成指定数量的 ETH
  5. swapExactTokensForETH:用指定数量的 ERC20 兑换 ETH
  6. swapETHForExactTokens:用 ETH 兑换指定数量的 ERC20
  7. swapExactTokensForTokensSupportingFeeOnTransferTokens:指定数量的 ERC20 兑换 ERC20,支持转账时扣费
  8. swapExactETHForTokensSupportingFeeOnTransferTokens:指定数量的 ETH 兑换 ERC20,支持转账时扣费
  9. swapExactTokensForETHSupportingFeeOnTransferTokens:指定数量的 ERC20 兑换 ETH,支持转账时扣费

代币之间交易

?原文链接(含可复制代码):https://www.chainpip.com/dynamic/231

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:02:40  更:2022-10-31 12:02:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:53:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码