Criando um ambiente de testes
1. Introdução
Um ambiente de testes dedicado facilita o estudo dos componentes do Decred e a criação de novos aplicativos.
O uso da máquina virtual serve para separar completamente o ambiente de testes do ambiente de produção, mas é perfeitamente possível seguir apenas parte das sugestões, criando os usuários e instalando os aplicativos localmente, no caso da instalação de um full node na rede local ou um explorador de blocos com dcrdata.
Pré-requisitos
- Oracle Virtualbox em https://www.virtualbox.org/
- Imagem do Debian Linux 9, primeiro DVD em https://www.debian.org/CD/
- dcrinstall e Decrediton em https://github.com/decred/decred-binaries/releases/
- Golang (opcional) em https://golang.org/dl/
2. Instalação
Usuários de Debian e Ubuntu no host podem instalar o Virtualbox através de:
$ sudo apt-get install virtualbox
Para outros pacotes de instalação, verifique o hash SHA256 disponível na página de Downloads.
Instale o Oracle Virtualbox normalmente e inicie a criação da máquina virtual. Uma configuração recomendada seria 2 processadores, 2GB de RAM, 1 placa de rede, 1 DVD. O espaço em disco depende do que será instalado. Veja a seguir.
2.1. Particionamento
É melhor separar as partições e os discos para facilitar o gerenciamento do espaço em disco. No caso dos diretórios /boot, /, /home e /root, esses serão sempre necessários e devem ficar no disco principal. A vantagem de partições separadas é facilitar a atualização do sistema e evitar que o espaço em disco do sistema seja ocupado por muitos arquivos salvos em /home ou /root.
Para o download da blockchain pode ser usado um disco virtual separado, para facilitar o gerenciamento. No exemplo, o segundo disco foi montado no diretório /opt/blockchain. Para armazenar as blockchains da Mainnet e da Testnet, reserve no mínimo, 7GB. Para instalar o dcrdata é necessário reservar um disco de no mínimo 25GB para o banco de dados PostgreSQL, que no exemplo foi montado no diretório /opt/pgsql. Pode ser necessário adicionar outros discos se outros componentes forem instalados no mesmo servidor.
Figura 1 - Sugestão de particionamento
2.2. Instalação e atualização
Antes de instalar o Debian Linux, verifique a sua assinatura digital. Saiba mais em Verificando assinaturas digitais: Debian Linux.
Faça a instalação padrão do Debian. Regras de firewall podem ser configuradas como no exemplo do artigo A estrutura do Decred.
Instale o sudo (Super User do) e adicione o seu usuário (criado na instalação) ao grupo sudo (grupo de usuários que podem executar o comando sudo). Daí em diante passe a usar o sudo para executar comandos que requerem poderes de root.
$ su -
# apt-get install sudo
# usermod -aG sudo $USERNAME
Para verificar se o seu usuário é membro do grupo sudo:
# groups $USERNAME
Se fez logon com seu usuário não-administrativo (no lugar do usuário root), será necessário fazer logoff e logon para atualizar a informação sobre os grupos do usuário. Após o logon, faça a atualização do sistema operacional:
$ sudo apt-get update && apt-get upgrade
3. Criação de usuários
A partir do Decrediton 1.2.1 em diante é possível gerenciar várias carteiras com um único usuário, escolhendo a carteira que será usada após iniciar o Decrediton. Para facilitar a separação e o entendimento serão mantidos aqui usuários separados.
Crie os usuários para cada personagem do teste que pretende executar. Cada usuário terá sua própria carteira, assim é possível reaproveitar os usuários e as carteiras em outros testes e executá-las em paralelo.
$ sudo adduser alice
$ sudo adduser bob
Figura 2 - Sugestão de estrutura de diretórios
4. Componentes
Baixe o decred-linux e o Decrediton em https://github.com/decred/decred-binaries/releases/ e disponibilize em um diretório acessível por todos os usuários de testes:
$ mv decred-linux-$ARCH-$VERSION.tar.gz decrediton-$VERSION.tar.gz /opt
Antes de descompactar o decred-linux ou o Decrediton, verifique as assinaturas digitais. Saiba mais sobre a Instalação do Decrediton.
4.1. dcrd
Com o seu usuário, descompacte o pacote do Decred dentro de /opt
:
$ sudo tar -C /opt -xvf decred-linux-$ARCH-$VERSION.tar.gz
Faça uma cópia do arquivo sample-dcrd.conf
para dcrd.conf
. Configure usuário e senha do RPC no arquivo dcrd.conf
. Para executar o dcrd na Testnet:
$ cd /opt/decred-linux-$ARCH-$VERSION
$ ./dcrd --testnet -C dcrd.conf -b /opt/blockchain
Para mais detalhes veja o artigo Instalando o dcrd.
Minimize a janela do terminal.
4.2. dcrwallet e Decrediton
Faça logon com um dos usuários de testes (Alice, Bob, etc) e descompacte os pacotes.
$ su - alice
$ tar -C $HOME -xvf decred-linux-$ARCH-$VERSION.tar.gz
$ tar -C $HOME -xvf decrediton-$VERSION.tar.gz
Entre no diretório dos executáveis do Decred e execute o dcrwallet para criar uma nova carteira com:
$ cd $HOME/decred-linux-$ARCH-$VERSION
$ ./dcrwallet --testnet create
Faça uma cópia do arquivo sample-dcrwallet.conf
para dcrwallet.conf
. Configure os mesmos usuário e senha de RPC do arquivo dcrd.conf
no arquivo dcrwallet.conf
.
Para executar um dcrwallet por usuário ao mesmo tempo, será necessário especificar portas TCP diferentes para cada conexão do dcrctl. Após executar o dcrwallet, minimize o terminal.
alice@testnet$ ./dcrwallet --testnet --rpclisten=127.0.0.1:9211
alice@testnet$ ./dcrctl --testnet -s 127.0.0.1:9211 --wallet getbalance
Em outro terminal, execute o dcrctl. Repare na mudança de porta.
bob@testnet$ ./dcrwallet --testnet --rpclisten=127.0.0.1:9212
bob@testnet$ ./dcrctl --testnet -s 127.0.0.1:9212 --wallet getbalance
Para usar a mesma carteira no dcrwallet e no Decrediton será necessário copiar o arquivo de uma pasta para a outra antes do uso.
alice@testnet$ cp ~/.dcrwallet/testnet2/wallet.db ~/.config/decrediton/testnet2/
A execução de mais de um Decrediton simultaneamente é um pouco mais complicada porque precisa configurar o Decrediton para usar o dcrd local e também por causa do uso do dcrwallet interno. O uso compartilhado do dcrd e do dcrwallet será tratado em outros artigos.
5. Instalação do Go (golang)
Para fazer modificações nos componentes do Decred ou criar novos componentes usando a mesma linguagem veja a Instalando o Go (golang).