第一笔交易
在本章中,将会搭建一个流动性池合约,它能够接受用户的流动性并且在某个价格区间内做交易。
简单起见,我们仅在一个价格区间内提供流动性,并且仅允许单向的交易。
另外,为了更好地理解其中的数学原理,我们将手动计算其中用到的数学参数,暂不使用 Solidity
的数学库进行计算。
我们本章中要搭建的模型如下:
- 这是一个
ETH/USDC
的池子合约。ETH是资产 $x$,USDC是资产 $y$; - 现货价格将被设置为一个
1 ETH, 5000 USDC
; - 我们提供流动性的价格区间为一个ETH对
4545 - 5500 USDC
; - 我们将会从池子中购买
ETH
,并且保证价格在上述价格区间内。
模型的图像大致如下:
在开始代码部分之前,我们首先会手动计算模型中用到的所有数学参数。
简单起见,我将使用 Python
来进行计算而不是 Solidity
,因为 Solidity
在数学计算上有很多细微之处需要考虑。
因此在这章,我们将会把所有的参数硬编码进池子合约里。这会让我们获得一个最小可用的产品。