第一笔交易

在本章中,将会搭建一个流动性池合约,它能够接受用户的流动性并且在某个价格区间内做交易。 简单起见,我们仅在一个价格区间内提供流动性,并且仅允许单向的交易。 另外,为了更好地理解其中的数学原理,我们将手动计算其中用到的数学参数,暂不使用 Solidity 的数学库进行计算。

我们本章中要搭建的模型如下:

  1. 这是一个 ETH/USDC 的池子合约。ETH是资产 $x$,USDC是资产 $y$;
  2. 现货价格将被设置为一个 1 ETH, 5000 USDC
  3. 我们提供流动性的价格区间为一个ETH对 4545 - 5500 USDC
  4. 我们将会从池子中购买 ETH,并且保证价格在上述价格区间内。

模型的图像大致如下:

Buy ETH for USDC visualization

在开始代码部分之前,我们首先会手动计算模型中用到的所有数学参数。 简单起见,我将使用 Python 来进行计算而不是 Solidity,因为 Solidity 在数学计算上有很多细微之处需要考虑。 因此在这章,我们将会把所有的参数硬编码进池子合约里。这会让我们获得一个最小可用的产品。

完整的合约代码