运行 Perp-maker 脚本以实现自动化做市 — 第一部分

Perpetual Protocol 永续协议
11 min readJun 1, 2022

--

Perp-maker 是在 Perpetual Protocol v2 版本上一个开源的做市脚本。 任何人都可以使用或修改其模板来方便在协议上交易并赚取费用。

在本教程中,我们将和大家一起了解运行自动化机器人(bot)的风险和收益,以及如何在本地运行一个 bot。 由于篇幅限制,我们会在之后的第二部分文章中介绍如何在AWS上运行 bot,并提出进一步的修改建议。 敬请期待!

运行 Perp-maker 的风险和收益

通过运行 Perp-maker,任何人都可以在 Perp v2 上实现其做市策略的自动化,并赚取交易费和流动性挖矿奖励(后文详述)

Perp-maker 能够让您自由选择您想要提供流动性的市场以及做市的价格区间。 值得一提的是,如果市场价格超出了您设置的价格区间,此时是无法赚取任何费用的。 而 Perp-maker 可以在市场价格达到您预设的情况时自动调整您的流动性仓位的价格区间,并且结算无常损失。

那什么是无常损失呢?

在 Perp v2 当中,做市商实际上是每笔交易的对手方。 如果交易者在一笔交易中获利,那么做市商则会产生相应的亏损。 而这种损失是暂时性的,因为当市场价格恢复到初始水平时,损失将变成0。 即使市场价格偏离了初始价格,如果市场价格始终保持在价格区间内,做市商则可以一直赚取手续费用。

根据经验来说,您设置的价格区间越大,所需承受的无常损失就越小, 同时,您可以赚取到的交易费也就越少。如果一个市场上产生的交易手续费越高,作为做市商您就能获得更多的收益。 您可以使用 Perpetual Simulator 来模拟在不同市场中的各种价格区间,以衡量该策略的效益。

此外, 协议还提供了其代币 $PERP 作为流动性提供奖励,来鼓励更多人成为其上的做市商。 此奖励会每周根据您在该周按比例在该市场上收取来多少交易费用来分配。 该奖励也被称为流动性挖矿奖励。

总而言之, 如果某种策略下能赚取的交易手续费加上流动性挖矿奖励能够超过无常损失,那么它就是一种有利可图的策略。 当然, 如果延长任一策略的做市时间,前两者的收益总和有较高的概率能弥补其造成的无常损失。

准备工作

如果你认为自己是一个有经验的程序员, 您应该能够通过代码库的指南轻松完成设置并运行 Perp-maker 机器人。

在前面的章节中,我们了解了作为在 Perp v2 上的做市商会有怎样的风险和收益。 本节我们将按照步骤与您一起在您的计算机上完成 Perp-maker 的设置。 您可以加入我们的 Discord 服务器,在那里我们有一个 #coding-chat channel 来回答您在 Perp v2 之上构建程序时遇到的任何问题。

首先,您需要在您的计算机上下载并安装 Node.JS ,和我们需要的 Node Package Manager (npm,节点管理器)。

安装完成后, 您可以在您的终端(MacOS)或命令行(Windows)中输入以下命令,以检查软件的版本。

node -v
npm -v

您应该能够在屏幕上看到如下图中的类似响应。 您的版本和我的截图中显示的版本可能有所不同, 但如果 npm 的版本高于 7,Node.js 的版本高于16,那么就不会有任何问题。

对于 Windows 用户, 如果您看到错误提示 “node is not recognized as an internal or external command”(指令未识别),您则需要修改或添加环境变量。 您可以在 PC 上搜索 “Environment Variables”(环境变量)并在 PATH 中添加您安装 Node.js 的位置。 比如我安装的 Node.js 的位置为 “C:\Program Files\nodejs\”。

然后您需要在计算机上安装Git。 您可以访问 这个网站 来查看每个操作系统的安装指南。 如果您想了解更多关于 Git 的内容,可以观看 this 100 seconds video。 一旦安装完成,在终端输入一下命令以查看其是否正常运行。

git — version

同样的,对于 Windows 用户,如果出现错误提示 “git is not recognized as an internal or external command”(指令未识别),您需要像我们先前为 Node.js 做的那样编辑或添加您的环境变量。

现在,我们将克隆 Perp-maker 的代码,然后在本地使用它。 在终端输入以下命令:

git clone https://github.com/perpetual-protocol/perp-maker.git
cd perp-maker
npm i
npm run build

如果一切正常,您应该可以看到下图类似的响应。

本部分的最后一件事是你需要下载一个加密货币钱包。 这里我们推荐您使用 MetaMask,因为它是目前最流行的浏览器钱包。 在登入过程中,您将会被要求保存 12 个助记词。 请在任何情况下 都不要 与任何人共享它们。

配置 bot — 自定义变量和策略

至此,我们仅差几步调整便能在本地开始运行 bot 了。

1.修改 .env 文件其内容

您需要将您的 perp-maker 文件夹中的 .env 添加一个 web3 终端和你的钱包私钥。 完成后它将会像这样 :

您可以通过在 InfuraAlchemy 创建免费账户来获取 Web3 的终端。 出于测试目的,你应该获取到 “Optimism Kovan” 的终端而不是 “ Optimism” 或 “Kovan” 的终端。

web3 终端是用来告诉 bot 在哪里提交您的交易信息的。 端点服务商如 Infura 将在接收到您的交易信息后广播告知所有的区块矿工或验证者,将由他们来验证您的交易并将其添加最新的区块当中。

至于私钥,您可以通过单击钱包界面上的更多按钮(在钱包地址旁边的三个小圆点图标),然后单击 “帐户详情”,然后单击“导出私钥”,将其从 MetaMask 中导出。 建议您使用一个新的 MetaMask 帐户,而不是您之前用于交易的账户。

2.修改 config.json 文件

接下来,我们需要修改 config.json 文件中的参数 — 该文件位于 src 文件夹的 configs 子文件夹中 — 来创建我们的策略。

这里是您可以自定义的参数和配置文件中的相应描述:

  • PRICE_CHECK_INTERVAL_SEC:获取价格的频率,以秒为单位。
  • ADJUT_MAX_GAS_PRICE_GWEI:bot 在调整流动性时能够接受的最大 Gas 费,单位为 Gwei。 如果 Gas 费超过这个数字,bot 将不会自动调整流动性。 目前,Optimism 网络上的 Gas 费固定为 0.001 Gwei。
  • IS_ENABLED:设置为 `true` 以启用该市场。
  • LIQUIDITY_AMOUNT:提供流动性的 vUSD (加杠杆之后) 金额。 Perp v2 最多支持 10x 杠杆,意味着您可以最多使用 10x 的 USDC 来提供流动性。
  • LIQUIDITY_RANGE_OFFSET:提供流动性的价格区间大小。 例如,如果设置为0.05,提供流动性的价格区间则为 当前价格/1.05 至 当前价格*1.05。
  • LIQUIDITY_ADJUST_THRESHOLD:告知 bot 调整流动性仓位的触发阈值:机器人将移除您现有的流动性仓位并结算无常损失,再重新设置一个价格区间。 例如,如果设置为 0.01,那么市场价格的偏离值要超出初始价格的1.01倍(低于初始价格/1.01,高于初始价格*1.01),机器人就会触发流动性仓位调整动作,并根据 LIQUIDITY_RANGE_OFFSET 和当前价格来重新设置价格区间并提供流动性。

我们使用默认的 vBTC (BTC市场) 和 vPERP (PERP市场) 作为配置文件中的目标市场。 您可以通过 Perp v2 的前端界面 或者 此 json 文件 来查看有哪些市场可供选择。

在 Optimism Kovan (测试网) 上运行

您需要在运行 Optimism 测试网络上的 bot 之前首先获取一些测试代币。 跳转到 Optifaucet, 输入您的钱包地址 (以0x开头) 并发送请求。

如果用于测试的 ETH 用完,您还可以前往 Paradigm’s faucet来获取更多的测试 ETH 代币,然后通过 Optimism Bridge 将它们跨链转移到 Optimism Kovan。

默认情况下的 bot 设置为在 Optimism 网络上运行。 为了让其切换到 Optimis Kovan 上运行,您需要在 src 文件夹中的 index.ts 文件下注释掉 (在代码之前添加两个 “斜线” ) 以下内容:

// process.env[“STAGE”] = “production”
// process.env[“NETWORK”] = “optimism”

对于 Windows 用户,您需要在 index.ts 文件中的 initLog() 前添加另外两行指令:

import dotenv from “dotenv”;
dotenv.config();

如果出现错误提示说 dotenv 未安装,您可以在终端中运行以下指令来 安装 dotenv

npm install dotenv — save

现在,一切准备就绪! 对于macOS 用户,输入下面的指令以在本地运行 bot:

env $(cat .env | grep -v ‘#’ | xargs) npm run start

对于 Windows 用户,在您的命令行中输入下面的指令来运行 bot:

npm start

如果运行成功,您应该能够在您的终端上看到类似的响应:

验证其运行成功的另一种方法是直接前往目标市场的流动性界面检查前端的情况。 对于测试网 (Optimism Kovan), 请访问 testnet.perp.exchange; 对于正式网 (Optimism), 请访问 app.perp.com.

好了! 今天的内容就到这里, 希望你有所收获。 敬请期待本系列的第二部分内容! 同时,欢迎随时加入我们的 Discord 社区,我们在那里有一个 #coding-chat channel 专门用于解决各种技术问题。

其他相关链接

  • 查看您的做市收益和年化率的第三方网站:https://www.seedle.finance/
  • Perp v2的做市商模拟器:https://conve-lab.xyz/perpetralsimulator
  • Perp v2 的 API 查询:https://thegraph.com/hosted-service/subgraph/perpetral-protocol/perpetrated v2-openism?query=Get%20Trader
  • Perp v2上的合约地址:https://metadata.perp.exchange/v2/oplethism.json
  • Perp v2 文档:https://v2docs.perp.fi/
  • 英文原文:https://mirror.xyz/0x071B76df4a05Fb162569930aB82d8d265Bb8A497/LWB40sjbmk4R34eq2ZD88vm466wAZ7iiskalKWGVPXc

--

--