最新消息:本站技术交流 QQ 群:28124927

Uniswap 工厂合约创建配对合约

区块链/比特币 exchen 119浏览 0评论

Uniswap 工厂合约创建配对合约

uniswap 里有一个工厂合约,作用是创建交易对合约,每添加一个交易对都会创建一个配对合约。uniswapv2 里使用的是内联汇编创建合约,这种方式比较复杂,先获取配对合约的字节码,再获取 token0 和 token1 打包后的哈希,然后调用 create2 创建合约,主要代码如下:

我们可以使用一种简单的方式创建合约,使用 new 语句创建合约,实现一个简版的 uniswap 工厂合约创建配对合约。

ERC20 代币

uniswap 里的交易对是两个 ERC20 代币,我们需要完成两个 ERC20 代币合约,比如一个是 WETH,一个是 USDC。什么才算是 ERC20 标准?只要满足 ERC20 对应的几个接口就可以称为满足 ERC20 标准,至于每个接口里的逻辑怎么实现没有要求,每个接口的功能,在代码里做了注释,不再细化讲解。

选择 WETH.sol 文件,按快捷键 control + s (macOS 是 command + s) 可以编译文件,然后点 Depoly 布署,布署完后的效果如下图。如果布署 USDC 代币只需要将 name 和 symbol 修改,其他代码和 WETH 保持一样。

配对合约

配对合约名称为 Pair,有三个变量,factory 记录了工厂合约地址,它也可以做为最初的 owner,tokenA 是交易对的第一个币,tokenB 是交易对的第二个币。Pair 合约还有一个构造函数,添加了 payable,说明可以接受主币 ETH,具体代码如下:

工厂合约

工厂合约名称为 Factory,由于工厂合约可以创建 N 个配对合约,所以需要一个数组,用于记录了所有配对合约地址。定义了一个 createPair 函数用来创建合约,有两个参数,即 tokenA 和 token B 的地址,使用 new 语句创建配对合约,并且转 1 wei 主币给创建后的合约,传入 tokenA 和 tokenB 的地址到配对合约的构造函数。最后将创建后的合约地址记录到 allPairs 数组。

布署完工厂合约,在 createPair 接口参数填入 WETH 和 USDC 的合约地址,并给 1wei 主币,执行创建操作,如下图所示:

配对合约创建成功后,在工厂合约的 allPairs 数组里可以获取到合约地址,有了合约地址,选择 Pair 合约名称,填入合约地址,点击 At Address 就能加载配对合约,如下图所示:

配对合约加载完成后,可以看到有三个变量,factory 对应了工厂合约地址,tokenA 对应了 WETH,tokenB 对应了 USDC,如下图所示,至此我们完成了一个简单的工厂合约创建配对合约的功能。

转载请注明:exchen's blog » Uniswap 工厂合约创建配对合约

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址