如何运行用于MKR、DAI和ETH拍卖的守护机器人

  • QuickNode
  • 发布于 2024-03-31 17:46
  • 阅读 21

本文详细介绍了如何运行一个 Keeper Bot,用于在 MakerDAO 生态系统中投标各种拍卖,确保 DAI 的稳定性。文章从环境准备,软件安装,到具体的投标模型和运行步骤都进行了详尽的说明,适合对区块链拍卖有兴趣的开发者学习和实践。

概述

在高层次上,keeper 拍卖允许投机者自动以折扣购买资产,例如 在黑色星期四以接近零 DAI 购买的超过 400 万美元的 ETH。你可以在这里查看一些最近拍卖的结果:https://defiexplore.com/liquidations

MKR DAO 在 2019 年 11 月推出了多抵押 DAI (MCD)。DAI 是一种稳定币,传统上由以太坊支持,但随着 MCD 的发布,MKR 允许其他资产作为抵押品。通过一系列激励措施和参与者,MKR 达到 DAI 的稳定价值:

DAI 生态系统

在本文中,我们将介绍如何运行一个 Keeper Bot,这个实体根据资产价值的波动在生态系统中竞标多种资产,以维持 DAI 的稳定价值。更具体地说,keepers 确保 MCD 系统保持稳定的财务状态,防止债务和盈余在 MKR DAO 治理过程中确定的限制之外积累,维护系统平衡。

你可以通过查看他们的 PDFMCD 教育内容 来获得 DAI 生态系统的完整概述。

安装

让我们深入准备环境以运行我们的 keeper bot。首先,你需要安装 python3。让我们检查一下我们的python版本是否正确:

python3 --version

如果输出 Python 3.6.0,那么非常好。如果不是,请通过 homebrew 或 根据你的操作系统的其他方法安装 python3

brew install python3

接下来,你需要下载并安装 auction-keeper 软件:

git clone https://github.com/makerdao/auction-keeper.git
cd auction-keeper
git submodule update --init --recursive

在安装要求之前,请确保你已为 Python3 安装并激活虚拟环境,你可以通过运行以下命令来做到这一点:

./install.

如果失败,你可以手动执行:

python3 -m venv _virtualenv
source _virtualenv/bin/activate # (如果你使用 fi ell,请加一个 .fi)
pip3 install -r requirements.txt

注意:如果你在 Linux 上,你需要运行 sudo apt-get install python3-venv,因为 virtualenv 不在 Ubuntu 的基本 python3 包中。或者如果你在 CentOS 上,运行 yum install python3-devel && yum groupinstall "Development Tools"

让我们通过运行以下命令确保它正常工作:

bin/auction-keeper -h

应该输出如下内容:

最后,我们稍后需要这个来生成一个密钥存储。让我们安装 ethereum-js 库:

npm install ethereumjs-wallet

翻转、拍卖与倒闭

在你运行 bot 时,基本上有三种类型的拍卖你可以参与竞标:

翻转拍卖:

作为 DAI 生态系统的一部分,每一个 DAI 必须拥有超过 1 美元的资产作为支持。作为这一部分,生成器要求所有铸造的 DAI 必须由自由市场证明价值的资产完全支持。如果基础资产的价值低于所需金额,每种资产类型的金额都不同,则抵押率(资产的美元价值 / DAI 债务的美元价值)下降。为了提高这一比率并防止系统破产,生成器将抵押品取出并在拍卖中以 DAI 出售 – 这称为翻转拍卖。

接下来发生的事情是,keepers 用不断增加的 DAI 数额对固定数额的抵押品进行竞标。当 DAI 余额赤字得到填补时,竞标者会继续针对减少的抵押品规模进行竞标,直到拍卖结束。拍卖结束后,剩余的抵押品将返回给原所有者。

你可以用 DAI 进行翻转拍卖的竞标。

倒闭拍卖:

生态系统的另一个关键部分是倒闭拍卖 – 当抵押债务头寸被关闭时会发生。这些债务将由 MKR 承担,然后发行系统债务单位,并放入债务消除队列。如果在某个等待时间内这些债务没有通过翻转拍卖被覆盖,那么债务 “成熟”,现在被视为 MKR 的坏债务。这些坏债务可以通过债务拍卖进行覆盖,当其超出最低值时 – 这就是倒闭拍卖。

债务拍卖的目的是覆盖系统赤字,用债务来表示。它出售一定数量的铸造 MKR,并购买 DAI 进行1对1的销毁。

你可以用 DAI 进行倒闭拍卖的竞标。

拍卖:

你的 keeper bot 可以参与的 DAI 生态系统的最后一部分称为拍卖 - 当 MKR 在其余额中有过多 DAI 时发生。它需要从其余额中释放 DAI 盈余。它以固定数量的 DAI 出售,以兑换并销毁一部分 MKR 竞标。字面上使 MKR 代币无影无踪。

你可以用 MKR 进行拍卖的竞标。

为了简化,我们今天将只为特定类型的抵押品:“ETH-A”运行我们的 bot。

竞标模型

所以此时我们应该理解我们有一个 bot 将自动查找并竞标翻转拍卖。但 bot 以什么价格竞标?这就是我们添加竞标模型的地方。你的竞标模型应通过 STDIN 接收 一大堆输入,并输出每个硬币的最大售价以及你愿意支付的 ETH 中的气体费用。我们将使用 一个简单的竞标模型为我们提供 15% 的溢价 – 它也是用 Python 编写:

#!/usr/bin/env
import os
import sys
import json
import requests

discount = 0.15

def get_price():
    resp = requests.get(
      'https://api.coingecko.com/api/v3/simple/price',
      params={'ids': 'ethereum', 'vs_currencies': 'usd'}
    )
    return resp.json()['ethereum']['usd']

for line in sys.stdin:
    signal = json.loads(line)
    if signal['guy'] == os.environ['ACCOUNT_ADDRESS']:
        continue
    oracle = get_price()
    stance = {'price': oracle * (1 - discount)}
    print(json.dumps(stance), flush=True)

将其保存为 bidder.py 文件,放在我们的 auction-keeper 软件的同一目录下。我们终于准备好运行这个程序了。

注意:重要的是要意识到这只是一个竞标策略,你可以自行编写,或调整我们在这里提供的示例中的变量。

运行你的 bot

太好了,我们已经安装了我们的 keeper bot,理解了翻转/拍卖/倒闭的概念,并有了能够与我们的 keeper bot 通信的竞标模型。现在我们需要一个运行的以太坊节点来扫描区块链,实际上找到拍卖并进行竞标。与我们一起获取以太坊节点总是非常简单,对于这个特定的 bot,建议使用 Build 计划,MKR 也是这样建议的, 实际上。去获取你的提供商 URL 并返回这里。需要注意的是,并非所有以太坊基础设施提供商都与 keeper bot 兼容 – 例如,Infura 目前不兼容。

太好了,现在我们需要一个密钥存储,因此让我们使用 ethereumjs-wallet 包 来做到这一点:

var Wallet = require('ethereumjs-wallet');
var key = Buffer.from('<随机-64-字符-十六进制>', 'hex');
var wallet = Wallet.fromPrivateKey(key);
console.log(`地址: 0x${wallet.getAddress().toString('hex')}`)
console.log(`密钥存储: ${wallet.toV3String('<你将记住的密码>')}`);

1. 将上述代码保存到一个文件中(可以叫它 'generatekeystore.js')并运行。

2. 在你的 auction-keeper 软件同一目录下,将 "密钥存储:" 后的输出保存为 "eth-keystore.json"。

3. 将 "地址:" 后的 ETH 地址保存在安全的地方

4. 将密码保存在另一个文件中,同样在 auction-keeper 目录下,命名为 "passfile"

现在进行最后一步,运行我们的 keeper:

bin/auction-keeper \
    --rpc-host "<你的-quicknode-endpoint-url>" \
    --rpc-timeout 30 \
    --eth-from "<你的-账户地址>" \
    --eth-key "key_file=keystore.json,pass_file=passfile" \
    --type flip \
    --ilk ETH-A \
    --from-block 14764534 \
    --vat-dai-target 1000 \
    --model "./our-model.py"

如果你看到类似这样的内容,它就成功运行了!恭喜:

Keeper Bot 在终端运行

附言:不要忘记为你创建的上述钱包充入 ETH 和 DAI,以实际竞标拍卖!另外,请注意,你可以使用动态 gas 定价与 --ethgasstation-api-key

我们 ❤️ 反馈!

告诉我们 如果你有任何反馈或请求新的主题。我们很想听到你的想法。

  • 原文链接: quicknode.com/guides/def...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。