WEB3DEV

Cover image for Como executar um bot keeper para leilões de MKR, DAI e ETH
Arnaldo Pereira Campos Junior
Arnaldo Pereira Campos Junior

Posted on

Como executar um bot keeper para leilões de MKR, DAI e ETH

Visão geral

A um nível elevado, os leilões keeper permitem que os especuladores comprem ativos automaticamente com desconto, como os +$ 4 milhões de ETH que foram comprados por DAI a quase zero na quinta-feira negra. Você pode ver os resultados de alguns leilões recentes aqui: https://defiexplore.com/liquidations

O MakerDAO (MKR) introduziu o Multi-Collateral DAI (MCD) em novembro de 2019. DAI é uma stablecoin tradicionalmente apoiada pelo Ethereum, mas com a liberação de MCD, o MKR está permitindo que outros ativos sejam usados ​​como garantia. Por meio de uma série de incentivos e atores, o MKR atinge um valor estável para DAI:

alt_text

Neste artigo, abordaremos como executar um Bot Keeper, que é uma entidade que faz lances em vários tipos de ativos com base em como seu valor flutua como parte do ecossistema para manter um valor estável para DAI. Mais especificamente, os keepers mantêm o sistema MCD em um estado financeiro estável, mantendo o equilíbrio do sistema ao evitar que a dívida e o excedente se acumulem além dos limites determinados pelo processo de governança MKR DAO.

Você pode obter uma visão geral completa do ecossistema DAI revisando o PDF aqui ou o conteúdo educacional do MCD aqui .

Instalação

Vamos começar a preparar nosso ambiente para executar nosso bot keeper. Para começar, você precisará do python3 instalado. Vamos verificar se nossa versão do python está correta:

    $ python3 --version
Enter fullscreen mode Exit fullscreen mode

Se aparecer Python 3.6.0, você está no caminho certo. Caso contrário, instale o python3 via homebrew ou algum outro método baseado no seu sistema operacional :

    $ brew install python3
Enter fullscreen mode Exit fullscreen mode

Em seguida, você precisará baixar e instalar o software do auction-keeper:

    $ git clone https://github.com/makerdao/auction-keeper.git


    $ cd auction-keeper


    $ git submodule update --init --recursive
Enter fullscreen mode Exit fullscreen mode

Antes de instalar seus requisitos, certifique-se de ter um ambiente virtual instalado e ativado para Python3, você pode fazer isso executando o seguinte comando:

    $ ./install.
Enter fullscreen mode Exit fullscreen mode

Se isso falhar, você pode fazer isso manualmente:

    $ python3 - m venv _virtualenv


    $ source _virtualenv / bin / activate # (adicione um .fi) se estiver usando fi ell


    $ pip3 install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

Nota: Se você estiver no Linux, precisará executar sudo apt-get install python3-venv porque virtualenv não está no pacote base python3 no Ubuntu. Ou se você estiver no CentOS, utilize o comandoyum install python3-devel && yum groupinstall "Ferramentas de desenvolvimento"

Vamos garantir que funcionou executando o seguinte comando:

    $ bin/auction-keeper -h
Enter fullscreen mode Exit fullscreen mode

Você deve produzir assim:

Por fim, precisaremos disso mais tarde para gerar um keystore. Vamos instalar a biblioteca ethereum-js:

    $ npm install ethereumjs-wallet
Enter fullscreen mode Exit fullscreen mode

Flipping, Flapping e Flopping

Quando você está executando seu bot, existem basicamente 3 tipos de leilões nos quais você pode fazer lances:

Leilões Flip:

Como parte do ecossistema DAI, cada DAI deve ser lastreado em mais de 1 USD de ativos. Como parte disso, a geradora exige que todos os DAIs emitidos sejam integralmente lastreados por um ativo com valor comprovado em mercados livres. Se o valor do ativo subjacente cair abaixo do valor exigido, que é diferente para cada tipo de ativo, a taxa de garantia (valor em USD do ativo / valor em USD da dívida DAI) diminui. Para aumentar esse índice e evitar a insolvência do sistema, o gerador pega a garantia e a vende para a DAI em um leilão - isso é chamado de leilão flip.

O que acontece a seguir é que os keepers licitam com valores crescentes de DAI por um valor fixo da garantia. Quando o déficit do saldo do DAI é coberto, os licitantes continuam a licitar por um tamanho de colateral decrescente até que o leilão seja concluído. Assim que o leilão termina, a garantia restante é devolvida ao proprietário original.

Você oferta na DAI para leilões flip.

Leilões Flop:

Outra parte fundamental do ecossistema são os leilões de flop - eles acontecem quando as posições de dívida garantidas são fechadas. Sua dívida é assumida pelo MKR, unidade de dívida do sistema emitida e colocada na fila de eliminação da dívida. Se essa dívida não for coberta por um leilão flip dentro de algum tempo de espera, a dívida “vencerá” e agora será considerada dívida inadimplente para com a MKR. Essa inadimplência pode ser coberta por meio de um leilão de dívida quando ela ultrapassa um valor mínimo - é um fracasso.

A finalidade do leilão da dívida é cobrir o déficit do sistema, que é representado pela dívida. Ele vende uma quantidade de MKR cunhados e compra DAI para ser cancelado 1 para 1 com Sin.

Você oferta em DAI para leilões de flop.

Leilões Flap:

A última parte do ecossistema DAI em que seu bot keeper pode licitar é chamada de leilão flap - os leilões flap acontecem quando o MKR tem muito DAI em seu saldo. Ele precisa liberar o excesso de DAI de seu saldo. Ele vende um valor fixo de DAI para comprar e queimar um valor de lance de MKR. Literalmente fazendo os tokens MKR desaparecerem no ar.

Você oferta em MKR para leilões flap.

Para nossos propósitos de hoje, para manter as coisas simples, executaremos nosso bot para leilões flip APENAS para um tipo específico de garantia: "ETH-A".

Modelo de licitação

Portanto, neste ponto, devemos entender que temos um bot que encontrará e fará lances em leilões flip para nós de forma automática. Mas que preço o bot oferece? É aí que adicionamos um modelo de licitação. Seu modelo de lance deve aceitar um monte de entradas via STDIN e cuspir um preço máximo por moeda, bem como um preço de gas que você está disposto a pagar em ETH. Para começar, usaremos um modelo de lance simples que nos dá um prêmio de 15% - também em 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)
Enter fullscreen mode Exit fullscreen mode

Salve-o em um arquivo chamado bidder.py no mesmo diretório do software de auction-keeper. Finalmente estamos prontos para executar esta coisa.

Nota: é importante perceber que esta é apenas uma estratégia de lances, se quiser, você pode escrever a sua própria ou ajustar as variáveis ​​no exemplo que fornecemos aqui.

Executando seu bot

Ótimo, então instalamos nosso bot keeper, entendemos os conceitos flip/flap/flop e temos um modelo de lances que pode se comunicar com nosso bot keeper. Agora precisamos de um nó Ethereum em execução para escanear a blockchain, na verdade, encontrar leilões e lances. É sempre muito simples obter um nó Ethereum conosco, para este bot específico, porém, recomendamos o plano SCALE e o MKR também, na verdade. Vá em frente e pegue o URL do seu provedor e nos encontre aqui. É importante observar que nem todos os provedores de infraestrutura Ethereum são compatíveis com o bot keeper - por exemplo, o Infura não é compatível no momento.

Beleza, agora precisamos de um keystore, então vamos usar o pacote ethereumjs-wallet para fazer isso:

var Wallet = require('ethereumjs-wallet');


var key = Buffer.from('<random-64-character-hex>', 'hex');


var wallet = Wallet.fromPrivateKey(key);


console.log(`Address: 0x${wallet.getAddress().toString('hex')}`)


console.log(`Keystore: ${wallet.toV3String('<password-you-will-remember>')}`);
Enter fullscreen mode Exit fullscreen mode
  1. Salve o código acima em um arquivo (talvez o chame de 'generatekeystore.js') e execute-o.

  2. Pegue a saída após "Keystore:" e salve-a no mesmo diretório que nosso software auction-keeper como "eth-keystore.json".

  3. Copie/cole o endereço ETH após "Address:" em algum lugar seguro

  4. Salve a senha em outro arquivo, também no diretório do auction-keeper chamado "passfile"

Agora, para a etapa final, vamos executar nosso keeper:

$ bin/auction-keeper \


    --rpc-host "<your-quicknode-endpoint-url-here>" \


    --rpc-timeout 30 \


    --eth-from "<your-account-address-here>" \


    --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" 
Enter fullscreen mode Exit fullscreen mode

Se você visualizar algo nesse sentido, funcionou! Parabéns:

alt_text

P.S. Não se esqueça de financiar a carteira que você criou acima com ETH & DAI para realmente licitar nos leilões! Além disso, observe que você pode usar preços de gás dinâmicos com --ethgasstation-api-ke

Esse artigo foi escrito por Auston Bunsen e traduzido por Arnaldo Campos. Seu original pode ser lido Aqui.

Oldest comments (0)