Carteiras offline com dcraddrgen

2 minutos de leitura

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