Compartilhando o dcrd
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 2 - Dois usuários compartilhando um dispositivo, dcrd instalado em um servidor na rede local
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
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
É 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
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 [--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 [comando]