Compartilhando o dcrd

3 minutos de leitura

1. Introdução

Compartilhar um dcrd com outros dispositivos é útil para quem:

a) pretende usar um servidor de blockchain na rede local para que a blockchain seja copiada da Internet apenas uma vez;

b) por qualquer motivo de compatibilidade ou teste precisa executar um dcrd diferente do que vem no pacote do Decrediton.

Atenção: Compartilhar um dispositivo que guarda uma carteira digital é apenas para pessoas que tem uma relação de confiança, independentemente de compartilhar o dcrd ou não. O usuário root consegue ler qualquer arquivo sob o alcance do Linux. No Windows o Administrator pode se apropriar de outras pastas. No final, apenas a senha da carteira ou criptografia de pastas protege o usuário.

Além disso, erros de configuração de segurança, vulnerabilidades introduzidas por um usuário e código malicioso executado localmente, como um keylogger, podem afetar todos os usuários do dispositivo.

Este artigo mostra que é possível fazer tal configuração (Figuras 2 e 3), não que seja recomendado.

2. Arquitetura

Figura 1 - Apenas o dcrd instalado em um servidor na rede local é compartilhado
Figura 1 - Apenas o dcrd instalado em um servidor na rede local é compartilhado

Figura 2 - Dois usuários compartilhando um dispositivo, dcrd instalado em um servidor na rede local
Figura 2 - Dois usuários compartilhando um dispositivo, dcrd instalado em um servidor na rede local

Figura 3 - Dois usuários, dcrd instalado localmente
Figura 3 - Dois usuários, dcrd instalado localmente

Até o momento não há Decrediton para plataforma ARM ou ARM64.

3. Configuração

Os passos a seguir foram executados em um Debian 9 64-bit.

Pré-requisito

É necessário ter o dcrd instalado separadamente no dispositivo local ou em outro dispositivo. Saiba mais no artigo Instalando o dcrd.

Se já possui o Decrediton instalado nesse dispositivo, antes de começar faça backup da pasta ~/.config/decrediton e certifique-se de ter a seed da carteira anotada em local seguro.

Se ainda não instalou o Decrediton, faça a verificação da assinatura digital antes da instalação do Decrediton.

Saiba mais sobre os Certificados digitais de conexões RPC.

3.1. Configuração do dcrd

Para que o dcrd aceite conexões de dcrwallet e dcrctl de outros hosts, será necessário alterar o parâmetro rpclisten no arquivo dcrd.conf ou executar o dcrd com a opção rpclisten informando o endereço IP das interfaces de rede onde o dcrd estará disponível ou 0.0.0.0 para todas:

$ ./dcrd --rpclisten=0.0.0.0 [--testnet]

3.2. Configuração do Decrediton

A execução do Decrediton inicia um dcrd e um dcrwallet. É necessário configurar o Decrediton para que o dcrd não seja mais iniciado. Essa configuração pode ser feita no arquivo ~/.config/decrediton/config.json:

"daemon_start_advanced": true,

Ou na interface gráfica, acessando o menu Settings e alterando o parâmetro “Advanced Daemon Startup” para “Enabled”:

Figura 4 - Tela para configuração do Decrediton
Figura 4 - Tela para configuração do Decrediton

3.2.1. dcrd executado remotamente

O Decrediton iniciará com a tela a seguir, que mostra a primeira guia, “Remote Daemon”, na qual o Decrediton espera que seja indicado um dispositivo remoto onde está instalado o dcrd. Assim não será necessário aguardar a inicialização do dcrd sempre que o Decrediton for iniciado. É útil também para quem pretende usar o dcrwallet no mesmo dispositivo.

Figura 5 - Tela para informar o dispositivo de rede que executa o dcrd
Figura 5 - Tela para informar o dispositivo de rede que executa o dcrd

É possível inserir as configurações de conexão ao dcrd remoto no arquivo /wallets/[mainnet|testnet]/$WALLET_NAME/config.json dentro do diretório de configuração do Decrediton. De qualquer forma o usuário poderá alterá-las na inicialização do Decrediton:

"remote_credentials": {
   rpc_user: [usuário no servidor dcrd (dcrd.conf)]
   rpc_password: [senha no servidor dcrd (dcrd.conf)]
   rpc_cert: [certificado gerado no servidor dcrd]
   rpc_host: [IP do servidor dcrd ou 127.0.0.1]
   rpc_port: 9109 [ou 19109 para a Testnet]
}

Selecione o botão azul “Use Remote Daemon”. O Decrediton deve iniciar normalmente.

3.2.2. dcrd como um processo separado

Para indicar ao Decrediton que o dcrd está sendo executado em um diretório local no mesmo dispositivo, use a segunda guia “Different Local Daemon Location”, conforme a figura a seguir.

Figura 6 - Tela para configuração do diretório do dcrd no mesmo dispositivo
Figura 6 - Tela para configuração do diretório do dcrd no mesmo dispositivo

3.3. Configuração do dcrwallet

Para conectar o dcrwallet a um dcrd remoto será necessário copiar o certificado digital do RPC Server, que nesse caso é o dcrd, para uma pasta acessível ao dcrwallet. Dessa forma, nenhum outro dcrd pode se passar pelo dcrd no qual o usuário espera se conectar.

$ ./dcrwallet -c $DCRD_IP -u $DCRD_USER -P $DCRD_PASS --cafile $DCRD_CERT_FILE
 [--testnet]

3.4. Configuração do dcrctl

Para conectar o dcrctl a um dcrd remoto será necessário copiar o certificado digital do RPC Server, que nesse caso é o dcrd, para uma pasta acessível ao dcrctl. Dessa forma, nenhum outro dcrd pode se passar pelo dcrd no qual o usuário espera se conectar.

$ ./dcrctl [--testnet] -s $DCRD_IP -u $DCRD_USER -P $DCRD_PASS -c $DCRD_CERT_FILE [comando]