Carteiras offline com dcraddrgen
1. Introdução
O dcraddrgen é um aplicativo escrito em Go para gerar endereços offline (chave privada, seed) sem precisar executar a carteira (Decrediton ou dcrwallet).
Motivação
A criação de uma carteira offline evita que sua chave privada (ou seed) possa vazar na Internet. É uma forma segura de gerar uma carteira completamente desconectada das suas carteiras já existentes. Assim não é necessário transportar ou digitar com a seed de uma carteira que tem recursos disponíveis.
A ferramenta fornece apenas o primeiro endereço público. A criação de endereços adicionais faria com que o aplicativo da carteira (dcrwallet e Decrediton) precisasse verificar N endereços derivados em busca de depósitos (veja o artigo Uma seed, uma carteira.
Pré-requisito
A linguagem Go 1.8 ou 1.9 deve estar instalada. Para instalar, veja Instalando o Go (golang).
2. Instalação
Os passos a seguir foram executados em um Debian 9.
a) Clone o repositório do dcraddrgen:
$ sudo git clone https://github.com/decred/dcraddrgen $HOME/go/src/github.com/decred/dcraddrgen
Se não possui o git instalado:
$ sudo apt-get install git
b) Entre no diretório que acabou de ser criado, execute o Dep para verificar as dependências e compile.
$ cd $HOME/go/src/github.com/decred/dcraddrgen
$ dep ensure
ou
$ /usr/local/go/bin/dep ensure
$ go build
ou
$ /usr/local/go/bin/go build
c) Se não ocorreu nenhum erro, deve ter sido criado um arquivo dcraddrgen com atributo executável.
Referências: https://github.com/decred/dcraddrgen, https://github.com/golang/go/wiki/SettingGOPATH
3. Utilização
a) Para ver a lista de comandos digite:
$ ./dcraddrgen --help
Usage: dcraddrgen [-testnet] [-simnet] [-noseed] [-verify] [-h] filename
Generate a Decred private and public key or wallet seed.
These are output to the file 'filename'.
-h Print this message
-testnet Generate a testnet key instead of mainnet
-simnet Generate a simnet key instead of mainnet
-noseed Generate a single keypair instead of a seed
-verify Verify a seed by generating the first address
b) Executar o dcraddrgen sem qualquer parâmetro gera uma chave privada e seu seed na tela. Se pretende usar essa chave essa é sua única chance de anotá-la. No arquivo keys.txt
será armazenada master public key e o primeiro endereço público:
$ ./dcraddrgen
WRITE DOWN THE SEED GIVEN BELOW. YOU WILL NOT BE GIVEN ANOTHER CHANCE TO.
Your wallet generation seed is:
prowler insincere aimless Galveston accrue fascinate
commence revenue choking hurricane peachy butterfat
chatter paperweight Oakland confidence revenge Jupiter
cranky retrieval allow fortitude wayside finicky
dwelling cellulose adult voyager obtuse souvenir
soybean hideaway pheasant
Hex: 997d0863025c3dca3473902031a58a34a98441c80a60fc5e532805f78bd4c771
IMPORTANT: Keep the seed in a safe place as you
will NOT be able to restore your wallet without it.
Please keep in mind that anyone who has access
to the seed can also restore your wallet thereby
giving them access to all your funds, so it is
imperative that you keep it in a secure location.
Once you have stored the seed in a safe
and secure location, enter OK here to erase the
seed and all derived keys from memory. Derived
public keys and an address will be stored in the
file specified (default: keys.txt):
Atenção! Esta seed, usada aqui como exemplo, não deve mais ser usada como carteira para armazenar recursos.
c) Para verificar se a seed está correta e gerar o primeiro endereço público, digite:
$ ./dcraddrgen --verify
Em seguida será pedido que informe toda a seed. Digite cada palavra ou copie e cole.
Enter existing wallet seed: prowler insincere aimless Galveston accrue fascinate commence revenue choking hurricane peachy butterfat chatter paperweight Oakland confidence revenge Jupiter cranky retrieval allow fortitude wayside finicky dwelling cellulose adult voyager obtuse souvenir soybean hideaway pheasant
First derived address of given seed:
DsaZek8XQ2p3nBKSvAqUq9f8BcTqoHeNpJp