Um guia introdutório para iniciantes sobre como fazer staking na rede de testes da Keep Network usando o DigitalOcean.

Evandro Saturnino
9 min readJun 27, 2020

--

Instruções passo a passo com capturas de tela.

Foto de Thought Catalog do Unsplash
Fotagrafia de Thought Catalog do Unsplash

Se você estiver fazendo o Playing for Keeps, será necessário executar um node no testnet do Keep Network.
Este tutorial não faz suposições sobre sua experiência usando dapps ou MetaMask. Foi tirado muitas capturas de tela ao longo do passo a passo para facilitar o acompanhamento.
Se tudo for executado seguindo exatamente como está informado neste tutorial, o procedimento deverá levar cerca de uma hora para ser concluído.

Passos

  1. Criar um arquivo Keystore
  2. Instalar o Metamask
  3. Conseguir ETH
  4. Conseguir os Tokens Keep
  5. Delegar os Tokens
  6. Autorizar Contratos
  7. Vincular ETH para tBTC
  8. Criar uma conta no Infura
  9. Configurar o node

Ok, vamos lá.

1. Criar uma carteira (Wallet) por arquivo keystore

Utilizaremos isso ao configurar o node.

Nota

  1. Enquanto você pode criar uma wallet usando o MetaMask, não é possível exportar o arquivo de keystore do MetaMask.
  2. Você precisará da senha criada para o arquivo keystore posteriormente.

Faça o Download do arquivo keystore, nós o usaremos depois.

2. Instale o MetaMask no Chrome

É isso que utilizamos para interagir com o painel da Keep Network. Você pode configurar um novo perfil do Chrome se quiser o manter separado de todo o resto.

url
Sucesso!

Atualmente, o MetaMask não tem possibilidade de importação do arquivo keystore quando você o instala pela primeira vez. Portanto, criamos uma carteira com o MetaMask que desbloqueia o restante das opções de menu que usaremos para importar o arquivo keystore.

Então, agora que desbloqueamos o restante das opções de menu, podemos importar a carteira que criamos com My Ether Wallet.

Para fazer isso, clique no círculo no canto superior direito do MetaMask para acessar My Accounts (Minha Conta). Selecione a opção Import Account (Importar Conta).

O arquivo keystore é um arquivo JSON.

Agora você tem a carteira criada na My Ether Wallet carregada no seu MetaMask.

3. Obtenha ETH com Ropsten em uma faucet

A própria MetaMask fornece faucets para obter o ETH da testnet, também há uma faucet da Ropsten.

Nota

  1. As transações podem demorar alguns minutos para aparecer na faucet.
  2. Algumas pessoas sobrecarregam a rede de teste e ela pode se tornar muito lenta.
  3. Por padrão, o MetaMask se conectará à rede principal. Para o testnet, estamos usando o Ropsten.
  4. Se você for colocado na lista cinza (Grey listed) na Ropsten Faucet,o MetaMask poderá ser mais tolerante.
Isso acontece se você fizer muitas requisições

Eu sugiro apenas utilizar a do Metamask.

Depois de pressionar a solicitação

Clique em connect (Conectar)

Você pode seguir a transação para ver quando ela é gravada em um bloco.

Observe que sua chave pública (public key) é mostrada no endereço sob o cabeçalho do usuário. Sua chave pública será usada na configuração.

Depois que a transação for confirmada, você a verá no histórico de transações do MetaMask

Você pode ver informações adicionais sobre a transação e visualizá-las no Etherscan.

3. Obtenha KEEP Tokens na faucet Keep

Primeiro, você precisa criar o URL para a faucet KEEP usando sua chave pública (public key).

https://us-central1-keep-test-f3e0.cloudfunctions.net/keep-faucet-ropsten?account=0xSUACHAVEPUBLICA

Com sucesso, isso parecerá

Nota

  1. Até que a transação seja gravada em um bloco, você não verá nada no painel do Keep.
  2. No caso improvável de que isso falhe, verifique o canal #staking no discord.

Verifique o status da transação no Etherscan.

4. Delegar Tokens

Vá para o dashboard de testnet

Nota

  1. Se você atualizar a página, precisará reconectar-se ao MetaMask.
  2. Você precisa aguardar que a transação da faucet Keep seja processada antes de receber uma concessão.
  3. Essas páginas podem demorar a carregar, pois estão puxando informações do blockchain Ethereum.
  4. O tempo necessário para processar transações pode variar.

Selecione MetaMask

Na prática, os endereços do Autorizador, Operador e Beneficiário serão todos diferentes.

Para testnet, todos eles podem usar a mesma chave pública (public key) para o endereço Ethereum que criamos com o MetaMask.

Clique em “Delegate Stake” (Delegar Stake)

Confirme.

Depois que a transação mostrada na notificação for gravada em um bloco, você verá a atualização do painel. Seja paciente, isso pode demorar um pouco com base no tráfego de rede do Ropsten.

Quando a delegação estiver concluída, você a verá quando rolar para baixo.

5. Autorizar contratos

Em seguida, precisamos autorizar os contratos. A velocidade com que essas páginas são carregadas tende a variar.

Random Beacon

Clique em “Authorize” (Autorizar).

Confirme.

Você não precisa esperar pela atualização pendente para avançar para a próxima etapa, mas se não concluir, encontrará outros problemas e será preciso autorizar novamente.

Depois de concluído, será semelhante à tela acima.

tBTC

Tanto o BondedECDSAKeepFactory quanto o TBTCSystem precisam ser autorizados.

Confirme.

Autorize.

Confirme.

7. Vincular ETH

O Bond vinculado ao ETH é usado como garantia para o aplicativo testnet tBTC.

A quantidade em stake de tokens KEEP determina com que frequência você é selecionado para fazer o trabalho, o ETH vinculado determina a quantidade de trabalho que você pode fazer.

Certifique-se de selecionar uma quantidade menor que a quantidade que você recebeu da faucet. As taxas de gás (Gas fee) da execução do contrato inteligente (Smart contract) reduzirão a quantidade de ETH em sua carteira (wallet).

Confirme.

Depois que seu ETH estiver em stake, o painel será atualizado. Observe que o ETH vinculado é o que está sendo usado como garantia para que seu node faça o trabalho no aplicativo tBTC; Essa garantia é devolvida quando o tBTC é resgatado.

8. Crie uma conta no Infura

Registre uma conta, utilizaremos o nível gratuito para esse tutorial.

Anote os pontos de extremidade do Ropsten, não da Mainnet. Usaremos o ID DO PROJETO (Project ID) na configuração do seu node.

9. Configurar o Node

O Keep Network requer apenas uma máquina pequena com uma boa conexão com a Internet para executar o node.

Se você ainda não possui uma conta na Digital Ocean, inscreva-se com meu código de referência e recebe US $ 100 em crédito para usar por mais de 60 dias.

Se você ainda não possui uma, crie uma chave SSH.

Faça o SSH no seu host a partir do terminal usando o endereço IP da sua droplet recém-criada.

$ ssh root@12.34.56.78The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.ECDSA key fingerprint is SHA256:rHtSOMESTUFFGOESHEREDONTWORRYABOUTITTHOUGHTsvKmaHDBqGr0o1o4o.Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '12.34.56.78' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Thu May 28 16:38:52 UTC 2020
System load: 0.41 Processes: 98
Usage of /: 1.2% of 77.36GB Users logged in: 0
Memory usage: 3% IP address for eth0: 12.34.56.78
Swap usage: 0%
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.root@keep-testnet:~#

Configurar as regras de firewall

sudo ufw allow 22/tcp
sudo ufw allow 3919/tcp
yes | sudo ufw enable

Instalar docker

sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt install docker.io curl -y
sudo systemctl start docker
sudo systemctl enable docker

Verifique se a docker está instalada

root@keep-testnet:~# sudo docker --version
Docker version 19.03.6, build 369ce74a3c

Crie diretórios e exporte variáveis de ambiente

mkdir -p $HOME/keep-client/config
mkdir -p $HOME/keep-client/keystore
mkdir -p $HOME/keep-client/persistence# Get your server's IP
export SERVER_IP=$(curl ifconfig.me)# Change with your ID from Infura.
export INFURA_PROJECT_ID="YOUR_INFURA_PROJECT_ID"# Change with your ETH Wallet.
export ETH_WALLET="YOUR_ETH_PUBLIC_KEY"

Nota

env | sort
  1. Para verificar se suas variáveis de ambiente estão definidas corretamente.
  2. Se você tiver problemas para se conectar à rede, verifique a lista de Pares na seção 7.2.2 e os endereços do contrato na seção 7.2.3 da documentação.
cat <<EOF >>$HOME/keep-client/config/config.toml
# Ethereum host connection info.
[ethereum]
URL = "wss://ropsten.infura.io/ws/v3/$INFURA_PROJECT_ID"
URLRPC = "https://ropsten.infura.io/v3/$INFURA_PROJECT_ID"# Keep operator Ethereum account.
[ethereum.account]
Address = "$ETH_WALLET"
KeyFile = "/mnt/keystore/keep_wallet.json"# Keep contract addresses configuration.
[ethereum.ContractAddresses]
KeepRandomBeaconOperator = "0x440626169759ad6598cd53558F0982b84A28Ad7a"
TokenStaking = "0xEb2bA3f065081B6459A6784ba8b34A1DfeCc183A"
KeepRandomBeaconService = "0xF9AEdd99357514d9D1AE389A65a4bd270cBCb56c"# Keep network configuration.
[LibP2P]
Peers = ["/dns4/bootstrap-1.core.keep.test.boar.network/tcp/3001/ipfs/16Uiu2HAkuTUKNh6HkfvWBEkftZbqZHPHi3Kak5ZUygAxvsdQ2UgG","/dns4/bootstrap-2.core.keep.test.boar.network/tcp/3001/ipfs/16Uiu2HAmQirGruZBvtbLHr5SDebsYGcq6Djw7ijF3gnkqsdQs3wK"]
Port = 3919
# Override the node's default addresses announced in the network
AnnouncedAddresses = ["/ip4/$SERVER_IP/tcp/3919"]# Storage is encrypted
[Storage]
DataDir = "/mnt/persistence"
EOF

Copie o conteúdo do arquivo keystore do seu computador para um novo arquivo no seu servidor.

vim ~/keep-client/keystore/keep_wallet.json

Certifique-se de que está definido para inserir o modo de texto ao colar o conteúdo e salve e saia do editor de texto.

Defina a senha para o arquivo keystore

export KEEP_CLIENT_ETHEREUM_PASSWORD=INSERTYOURETHWALLETPASSWORD

Inicie o docker container

sudo docker run -dit \
--restart always \
--volume $HOME/keep-client:/mnt \
--env KEEP_ETHEREUM_PASSWORD=$KEEP_CLIENT_ETHEREUM_PASSWORD \
--env LOG_LEVEL=debug \
--name keep-client \
-p 3919:3919 \
keepnetwork/keep-client:latest --config /mnt/config/config.toml start

Verifique se funcionou verificando os logs.

sudo docker logs keep-client -f

Role para cima e procure por

Verifique se você está conectado a pelo menos um peer.

Parabéns agora você tem um node em execução na testnet.

--

--

No responses yet