使用Uniswap V2部署自己的去中心化交易所

  • 本文详细介绍了如何部署基于Uniswap V2的去中心化交易所,包括所需准备的三个核心智能合约项目:uniswap-v2-core(核心合约)、uniswap-v2-periphery(边缘合约)和uniswap-lib(工具库)。

  • 核心合约组件

    • UniswapV2Factory.sol:用于创建和管理交易对的工厂合约
    • UniswapV2Pair.sol:管理具体交易对的流动性资金池
    • UniswapV2ERC20.sol:提供流动性凭证的LP Token合约
  • 边缘合约

    • 提供与核心合约交互的路由功能(Router01/Router02版本)
    • 包含多种交易接口,支持代币兑换、流动性添加等操作
  • 关键部署步骤

    1. 修改UniswapV2Library.sol中的init code hash值
    2. 部署三个主要合约:UniswapV2Factory、WETH(可选)和UniswapV2Router01
    3. 设置工厂合约的管理员地址和路由合约参数
  • 流动性管理

    • 提供addLiquidity和addLiquidityETH两种添加流动性的接口
    • 需先完成代币授权才能添加流动性
  • 交易功能

    • 支持多种代币兑换方式,包括精确输入/输出兑换
    • 提供支持转账扣费的特殊交易接口
    • 包含ETH与ERC20之间的兑换功能

文章配有详细的操作截图和代码示例,指导读者完成从合约部署到实际交易的完整流程。

总结

使用Uniswap V2部署自己的去中心化交易所

Dapp链接:https://www.chainpip.com/dapp-view/6724

 

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

uniswap-v2-core: 核心合约

uniswap-v2-periphery: 与核心合约交互的边缘合约,主要就是路由合约

uniswap-lib: 工具合约

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

使用Uniswap V2部署自己的去中心化交易所 

uniswap-v2-core

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

UniswapV2Factory.sol 工厂合约

**UniswapV2Pair.sol**配对合约

**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核心有两个合约文件:

UniswapV2Router01.sol:路由合约 01 版本

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函数:

使用Uniswap V2部署自己的去中心化交易所 

init code hashUniswapV2Pairbytecode通过keccak-256计算的值:

使用Uniswap V2部署自己的去中心化交易所 

点击Bytecode按钮,在弹框中复制**Bytecode,**打开网址 http://emn178.github.io/online-tools/keccak_256.html

使用Uniswap V2部署自己的去中心化交易所 

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

部署合约

只要部署三个合约:

UniswapV2Factory

WETH (可选, 也可使用链上已有的WETH地址)

UniswapV2Router01

使用Uniswap V2部署自己的去中心化交易所 

UniswapV2Factory参数:

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

UniswapV2Router01参数:

_factory: UniswapV2Factory部署后的合约地址

_WETH: WETH合约地址

添加流动池

addLiquidity:该接口支持添加两种 ERC20 代币作为流动性

addLiquidityETH:与上一个接口不同,该接口提供的流动性资产,其中有一个是 ETH

添加两个代币流动池

使用Uniswap V2部署自己的去中心化交易所 

添加代币与ETH流动池

使用Uniswap V2部署自己的去中心化交易所 

代币授权

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

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

使用Uniswap V2部署自己的去中心化交易所 

交易

swapExactTokensForTokens:用 ERC20 兑换 ERC20,但支付的数量是指定的,而兑换回的数量则是未确定的

swapTokensForExactTokens:也是用 ERC20 兑换 ERC20,与上一个函数不同,指定的是兑换回的数量

swapExactETHForTokens:指定 ETH 数量兑换 ERC20

swapTokensForExactETH:用 ERC20 兑换成指定数量的 ETH

swapExactTokensForETH:用指定数量的 ERC20 兑换 ETH

swapETHForExactTokens:用 ETH 兑换指定数量的 ERC20

swapExactTokensForTokensSupportingFeeOnTransferTokens:指定数量的 ERC20 兑换 ERC20,支持转账时扣费

swapExactETHForTokensSupportingFeeOnTransferTokens:指定数量的 ETH 兑换 ERC20,支持转账时扣费

swapExactTokensForETHSupportingFeeOnTransferTokens:指定数量的 ERC20 兑换 ETH,支持转账时扣费

代币之间交易

使用Uniswap V2部署自己的去中心化交易所

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

分享至:

作者:fingernft

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:fingernft如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
1小时前
4小时前
4小时前
2025-12-13 09:12
2025-12-13 09:02
2025-12-13 06:35

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读