Tutorial passo a passo para criar o node Keep-ECDSA para mainnet ou testnet
Node Keep ECDSA
Este guia descreve as etapas necessárias para colocar um node Keep-ECDSA em funcionamento na rede de teste Ropstein e na Ethereum Mainnet. Assumimos neste guia que você está executando Ubuntu. Se você usa uma distribuição diferente, como o Fedora, a maioria dos comandos deve permanecer o mesmo, porém tenha isso em mente. Além disso, por favor, utilize o guia do Novy4 para configurar seu servidor e deixá-lo pronto para executar o node ECDSA. Estou detalhando aqui as partes principais que diferem deste tutorial do tutorial de Keep Client para colocar seu node ECDSA em funcionamento: https://medium.com/@evandroricieri/um-guia-introdut%C3%B3rio-para-iniciantes-sobre-como-fazer-staking-na-rede-de-testes-da-keep-network-5273fc91bd49
Links a serem acessados para obter ajuda ou informações
- Página do projeto no Github: https://github.com/keep-network/keep-ecdsa
- https://github.com/keep-network/keep-ecdsa/blob/master/docs/run-keep-ecdsa.adoc
- Discord do projeto Keep https://discordapp.com/invite/wYezN7v Venha nos conhecer no canal #staking!
- Painel do Keep https://dashboard.test.keep.network/
Trabalho de preparação
- Configure uma conta em https://infura.io/. Isso será usado em vez de executar um node local do Ethereum
- Obtenha um servidor VPS ou Linux que esteja pronto para ser configurado!
- Instale o Docker nesta máquina virtual
- Crie uma carteira (Wallet) Ethereum para que você possa fazer o download do arquivo JSON. Será necessário isso.
- Coloque um pouco de Ether do ropstein nessa carteira que você acabou de criar por aqui: https://faucet.ropsten.be/
- Faça o upload do seu arquivo keystore para
~/keep-ecdsa/keystore/
e nomeie o arquivo da carteir parakeep_wallet.json
. Você pode usar o SCP para fazer upload deste arquivo ou criar okeep_wallet.json
arquivo comtouch keep_wallet.json
e depois usenano
para editá-lo e colocar em seu keystore
Autorize contratos tBTC e participe da ETH
Mainnet
Vamos para https://dashboard.keep.network/applications/tbtc e autorize o contrato de tBtc e participe da Mainnet ETH.
Testnet
Vamos para https://dashboard.test.keep.network/applications/tbtc e autorize o contrato de tBtc e participe da Ropstein ETH.
Configuração do servidor
Crie a seguinte estrutura de pastas
Use este comando para criar a seguinte estrutura
mkdir -p $HOME/keep-ecdsa/{config,keystore,persistence}$HOME
│
└───keep-ecdsa
│
│
└───config
│ └───config.toml
│
└───keystore
│ └───keep_wallet.json
│
└───persistence
Crie as seguintes variáveis de ambiente. Talvez você os tenha criado no passo a passo de Novy, também vinculado na parte superior deste guia
## Configure algumas variáveis de ambiente
export SERVER_IP=$(curl ifconfig.co)
# Mude com seu ID no Infura.
export INFURA_PROJECT_ID="$INFURA-ID"
# Mude com sua carteira ETH.
export ETH_WALLET="0x..."
# Digite a senha na qual você criptografou seu arquivo da carteira com
export KEEP_CLIENT_ETHEREUM_PASSWORD = "$ ENTERPASSWORDHERE"
As variáveis de ambiente acima também podem ser adicionadas ao seu arquivo .bashrc com o seguinte comando. Isso garante que eles estejam presentes se a máquina for reinicializada
cat <<EOF >>$HOME/.bashrc## Configure algumas variáveis de ambiente
export SERVER_IP=$(curl ifconfig.co)
# Mude com seu ID no Infura.
export INFURA_PROJECT_ID="$INFURA-ID"
# Mude com sua carteira ETH.
export ETH_WALLET="0x..."
# Digite a senha na qual você criptografou seu arquivo da carteira com
export KEEP_CLIENT_ETHEREUM_PASSWORD = "$ ENTERPASSWORDHERE"
EOF
Agora execute o seguinte comando para criar seu config.toml para o node Keep-ECDSA.
Configuração da mainnet
cat <<CONFIG >>$HOME/keep-ecdsa/config/config.toml# Detalhes da conexão do ethereum blockchain.
[ethereum]
URL = "wss://mainnet.infura.io/ws/v3/$INFURA_PROJECT_ID"
URLRPC = "https://mainnet.infura.io/v3/$INFURA_PROJECT_ID"[ethereum.account]
Address = "$ETH_WALLET"
KeyFile = "/mnt/keep-ecdsa/keystore/keep_wallet.json"
# Este endereço pode mudar e precisa ser substituído periodicamente
# se houver, o novo endereço do contrato será listado aqui:
# https://github.com/keep-network/keep-ecdsa/blob/master/docs/run-keep-ecdsa.adoc
[ethereum.ContractAddresses]
BondedECDSAKeepFactory = "0x18758f16988E61Cd4B61E6B930694BD9fB07C22F"# Esses endereços podem mudar e precisam ser substituídos de tempos em tempos
# Se houver, o novo endereço do contrato será listado aqui:
# https://github.com/keep-network/keep-ecdsa/blob/master/docs/run-keep-ecdsa.adoc
# Endereços dos pedidos aprovados pelo operador.
[SanctionedApplications]
Addresses = [
"0x41A1b40c1280883eA14C6a71e23bb66b83B3fB59",
][Storage]
DataDir = "/mnt/keep-ecdsa/persistence"
[LibP2P]
Peers = ["/dns4/bst-a01.ecdsa.keep.boar.network/tcp/4001/ipfs/16Uiu2HAkzYFHsqbwt64ZztWWK1hyeLntRNqWMYFiZjaKu1PZgikN",
"/dns4/bst-b01.ecdsa.keep.boar.network/tcp/4001/ipfs/16Uiu2HAkxLttmh3G8LYzAy1V1g1b3kdukzYskjpvv5DihY4wvx7D",
"/dns4/keep-boot-validator-0.prod-us-west-2.staked.cloud/tcp/3920/ipfs/16Uiu2HAmDnq9qZJH9zJJ3TR4pX1BkYHWtR2rVww24ttxQTiKhsaJ",
"/dns4/keep-boot-validator-1.prod-us-west-2.staked.cloud/tcp/3920/ipfs/16Uiu2HAmHbbMTDDsT2f6z8zMgDtJkTUDJQSYsQYUpaJjdMjiYNEf",
"/dns4/keep-boot-validator-2.prod-us-west-2.staked.cloud/tcp/3920/ipfs/16Uiu2HAmBXoNLLMYU9EcKYH6JN5tA498sXQHFWk4heK22RfXD7wC",
"/ip4/54.39.179.73/tcp/4001/ipfs/16Uiu2HAkyYtzNoWuF3ULaA7RMfVAxvfQQ9YRvRT3TK4tXmuZtaWi",
"/ip4/54.39.186.166/tcp/4001/ipfs/16Uiu2HAkzD5n4mtTSddzqVY3wPJZmtvWjARTSpr4JbDX9n9PDJRh",
"/ip4/54.39.179.134/tcp/4001/ipfs/16Uiu2HAkuxCuWA4zXnsj9R6A3b3a1TKUjQvBpAEaJ98KGdGue67p"]
Port = 3919# Substitua os endereços padrão do nó anunciados na rede
AnnouncedAddresses = ["/ip4/$SERVER_IP/tcp/5678"][TSS]
# Tempo limite para geração de pré-parâmetros do protocolo TSS. O valor que
# deve ser fornecido com base nos recursos disponíveis na máquina que está executando o cliente.
# Este é um parâmetro opcional, se não for fornecido o tempo limite para o protocolo TSS
# a geração de pré-parâmetros será definida como.
PreParamsGenerationTimeout = "2m30s"
CONFIG
Configurações da Testenet
cat <<CONFIG >>$HOME/keep-ecdsa/config/config.toml# Detalhes da conexão do ethereum blockchain.
[ethereum]
URL = "wss://ropsten.infura.io/ws/v3/$INFURA_PROJECT_ID"
URLRPC = "https://ropsten.infura.io/v3/$INFURA_PROJECT_ID"[ethereum.account]
Address = "$ETH_WALLET"
KeyFile = "/mnt/keep-ecdsa/keystore/keep_wallet.json"
# Este endereço pode mudar e precisa ser substituído periodicamente
# Se houver, o novo endereço do contrato será listado aqui:
# https://github.com/keep-network/keep-ecdsa/blob/master/docs/run-keep-ecdsa.adoc
[ethereum.ContractAddresses]
BondedECDSAKeepFactory = "0xe7BF8421fBE80c3Bf67082370D86C8D81D1D77F4"# Esses endereços podem mudar e precisam ser substituídos de tempos em tempos
# Se houver, o novo endereço do contrato será listado aqui:
# https://github.com/keep-network/keep-ecdsa/blob/master/docs/run-keep-ecdsa.adoc
# Endereços dos pedidos aprovados pelo operador.
[SanctionedApplications]
Addresses = [
"0x25B60668E7a0967a86223828D20f93714D91Ee4B",
][Storage]
DataDir = "/mnt/keep-ecdsa/persistence"
[LibP2P]
Peers = ["/dns4/testnet.keep-client.hashd.dev/tcp/3920/ipfs/16Uiu2HAmJsBiNVFNxsJ27NSQEByv39B1M7AKx5FrAc1htqYhHGhU","/ip4/3.23.88.229/tcp/3919/ipfs/16Uiu2HAmEZpkf1Td8rSBMmgPoa66si2kJLb83Rd2eztJ6f5oLvhp","/dns4/ecdsa-2.test.keep.network/tcp/3919/ipfs/16Uiu2HAmNNuCp45z5bgB8KiTHv1vHTNAVbBgxxtTFGAndageo9Dp",
"/dns4/ecdsa-3.test.keep.network/tcp/3919/ipfs/16Uiu2HAm8KJX32kr3eYUhDuzwTucSfAfspnjnXNf9veVhB12t6Vf","/dns4/bootstrap-1.ecdsa.keep.test.boar.network/tcp/4001/ipfs/16Uiu2HAmPFXDaeGWtnzd8s39NsaQguoWtKi77834A6xwYqeicq6N"]
Port = 3919# Substitua os endereços padrão do nó anunciados na rede
AnnouncedAddresses = ["/ip4/$SERVER_IP/tcp/3920"][TSS]
# Tempo limite para geração de pré-parâmetros do protocolo TSS. O valor que
# deve ser fornecido com base nos recursos disponíveis na máquina que está executando o cliente.
# Este é um parâmetro opcional, se não for fornecido o tempo limite para o protocolo TSS
# A geração de pré-parâmetros será definida como.
PreParamsGenerationTimeout = "2m30s"
CONFIG
O Docker executa o cmd para iniciar o node
Depois de configurar o arquivo config.toml e estar pronto para entrar em $ HOME / keep-ecdsa / config, você pode usar o seguinte comando para iniciar o node. Não é necessário puxar a imagem primeiro, este comando de execução reconhecerá que você não possui a imagem localmente e fará o download automaticamente
NOTA: Eu mapeio a porta local 3920 para 3919 neste comando porque tenho o node ECDSA e o beacon aleatório em execução na mesma caixa. Como você não pode mapear esses dois contêineres para a mesma porta local, optei por mapear o nó ECDSA para 3920. O resultado final é o mesmo desde que você mapeie a porta do contêiner como 3919.
Além disso, sinta-se à vontade para remover a linha para --env LOG_LEVEL=debug
se você quiser ver apenas os logs de aviso. Eu incluí isso porque os logs de depuração são úteis, especialmente na solução de problemas do node.
sudo docker run -d \
--restart always \
--entrypoint /usr/local/bin/keep-ecdsa \
--volume $HOME/keep-ecdsa:/mnt/keep-ecdsa \
--env KEEP_ETHEREUM_PASSWORD=$KEEP_CLIENT_ETHEREUM_PASSWORD \
--env LOG_LEVEL=debug \
--name ecdsa \
-p 3920:3919 \
--log-opt max-size=100m \
--log-opt max-file=3 \
keepnetwork/keep-ecdsa-client:v1.1.2-rc \
--config /mnt/keep-ecdsa/config/config.toml start
Divisão do comando acima
sudo docker run -d \ # Executa o contêiner e o desanexa, o que significa que é executado em segundo plano
--restart always \ # auto explicativo. Seu contêiner tentará sempre reiniciar em caso de falha
--entrypoint /usr/local/bin/keep-ecdsa \ # Isso está especificando que você deseja executar o programa keep-ecdsa nesse local dentro do contêiner
--volume $HOME/keep-ecdsa:/mnt/keep-ecdsa \ # Mapeando o sistema de arquivos local para o sistema de arquivos do contêiner. LOCAL:CONTAINER
--env KEEP_ETHEREUM_PASSWORD=$KEEP_CLIENT_ETHEREUM_PASSWORD \ # Define uma variável de ambiente dentro do contêiner; Nesse caso, sua senha para desbloquear sua wallet.json
--env LOG_LEVEL=debug \ # Opcional, define o nível de log deste contêiner para DEBUG e acima
--name ecdsa \ # Nome do contêiner, se não for fornecido, o Docker criará um nome aleatório
-p 3920:3919 \ # Mapeia a porta local 3920 a 3919 do contêiner.
LOCAL:CONTAINER
--log-opt max-size=100m \ # Cada tamanho de arquivo de log terá 100mb no máximo
--log-opt max-file=3 \ # Apenas 3 arquivos de log de 100mb cada serão armazenados localmente
keepnetwork/keep-ecdsa-client:v1.1.2-rc \ # Especifica qual imagem do Docker executar, neste caso, o node ECDSA
--config /mnt/keep-ecdsa/config/config.toml start # configura seu contêiner usando seu config.toml criado anteriormente e inicie o contêiner
Verifique se o seu node está em execução
NOTA: levará algum tempo para que o seu node possa gerar os primos. Por favor, seja paciente enquanto isso ocorrer. Provavelmente, se o seu node não estiver preso em um loop de reinicialização, você estará bem
docker ps -a
Você deve ver algo semelhante ao seguinte:
ubuntu@ip-172-31-25-217:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
a355b76ca6d4 keepnetwork/keep-ecdsa-client:1.1.2-rc "/usr/local/bin/keep…" 8 minutes ago Up 8 minutes 0.0.0.0:3920->3919/tcp ecdsa
Verifique se o seu node está executando bem
docker logs ecdsa --since 10m -f