10 de nov. de 2015

Carteiras Bitcoin - O que são?


Introdução

Se você ainda não sabe o que é Bitcoin ou cripto moedas acesse aqui, se você já sabe prossiga.

O blockchain é inovador por permitir dispensar valor de forma segura, uma transação só pode acontecer se tiver outra de entrada e assim por diante, mas ai vem a pergunta:

 

Como então é gerada a transação inicial?

Na verdade os blocos são gerados a partir de um bloco pai chamado de 'genesis block', a partir deste bloco inicial começa a 'mineração' e a cada novo bloco premia-se o minerador com novas moedas que advém do 'coinbase', o coinbase nada mais do que uma 'entidade' que guarda as futuras moedas, esse coinbase é pré-programado com um número limitado de moedas, no caso do Bitcoin só serão geradas 21.000.000 (vinte e um milhões) de moedas.

Quando um minerador ganha essas moedas a própria rede sabe pra quem vai através do endereço que o minerador colocou quando começou a 'minerar' o bloco e gera uma transação minerada e inclui as transações pendentes de outras carteiras, validando a geração das moedas, para gastar essas moedas o minerador precisa esperar a maturação (confirmação na rede) dessas moedas.

No bitcoin essa maturação ocorre em 120 blocos, ou seja ele vai precisar esperar 120 blocos a frente para poder gastar. Outras cripto moedas podem ter um tempo de maturação maior ou menor depende de como foi programada.

 

Cryptoescudo
O que é então a carteira de Bitcoin?

Uma carteira 'core', ou seja a carteira principal, de cripto moeda é composta essencialmente de duas partes: o gerenciador de moedas (carteira) e o núcleo de acesso a rede.

O núcleo de acesso a rede se conecta com os outros nós da rede e mantém sempre atualizado o banco de dados principal (blockchain) sincronizado com os outros. Portanto há a necessidade de um grande armazenamento. Atualmente o blockchain do Bitcoin passa dos 58 gigabytes (veja aqui o tamanho atualizado).

 
O gerenciador de moedas (carteira) nada mais é que um gerenciador das chaves privadas, toda a vez que você instala uma carteira 'core' automaticamente é gerado um arquivo (wallet.dat) que mantém as chaves privadas e o registro de suas transações dessa carteira.

 

E para que servem essas chaves privadas?

É através destas chaves privadas que você vai assinar uma transação e a rede vai saber que você é o dono dessas moedas e está querendo transferir essas moedas para outro endereço.

O endereço é a parte pública da chave privada é esse endereço que você precisa mencionar quando quiser receber moedas.

O que você precisa guardar a sete chaves são as 'chaves privadas' de qualquer carteira seja ela 'core', SPV, HD, 'paper wallet' ou 'brain wallet'.

Nunca em hipótese nenhuma compartilhe suas chaves privadas, pois com a posse delas qualquer um pode 'gastar' (furtar) suas preciosas moedinhas.

  

Tipos de assinaturas

Como você já sabe, uma transação só pode acontecer se o dono das moedas assinar essas moedas com sua chave privada, para aumentar a segurança existe a possibilidade de usar várias assinaturas (chaves privadas) para um mesmo endereço aumentando assim a segurança. A maioria das carteiras que vou mencionar aceitam endereço com multi assinaturas (multisig address)

 

 

Tipos de carteiras

Existem basicamente seis tipos de carteiras: a 'core', a SPV (Simplified Payment Verification), a carteira HD (hierarchical deterministic), a carteira no papel (paper wallet), a carteira cerebral/memorizável (brain wallet) e a Web wallet.

 

A carteira CORE

A carteira core é a carteira que será responsável por manter em seu computador um cópia do blockchain criando assim mais um nó. Hoje em dia é desaconselhável manter uma carteira core por um simples motivo, você manterá em seu poder um arquivo gigantesco até o fim dos tempos, pois o blockchain, como é um arquivo de registro de transações cresce a cada bloco gerado. Por outro lado manter uma CORE wallet é fundamental para a saúde da rede, neste artigo aquiensino como montar uma carteira core em ambiente Ubuntu (Linux), também chamado de 'full node', para auxiliar a rede.

 

A carteira SPV (Simplified Payment Verification)

As carteiras SPV são clientes leves (thin clients), elas também se conectam a rede bitcoin mas usam uma versão mais leve do blockchain, onde essa versão não verifica a cadeia de blocos, somente usa os cabeçalhos dos blocos. As carteiras SPV não são recomendadas atualmente, principalmente quando acontecem ataques contra o blockchain, elas ficam mais vulneráveis e esses ataques são frequentes.

 

A carteira deterministica

As carteiras deterministicas são a versão mais leve (espaço em disco), o blockchain não é baixado, elas mantém somente os registros das transações e acessam a rede através de um servidor. Outra vantagem desse tipo de carteira é que as chaves privadas podem ser restauradas em outro dispositivo tento somente a 'semente'. Todas as chaves privadas são derivadas da semente, manter a semente segura (backup) é fundamental. O servidor mais usado para esse tipo de carteira é o Electrum que tem um cliente de mesmo nome: 'carteira
Electrum'.

  

A Web Wallet

Web wallets são carteiras que você pode acessar por um browser de internet, a grande desvantagem desse tipo de carteira é que você não é o dono das chaves privadas, portanto se o dono do web site que controla a web wallet quiser sumir e levar suas moedas ele pode fazer, inclusive sem te avisar. Não é recomendado manter grandes quantias de moedas nesse tipo de carteira, nessa categoria entram as exchanges de bitcoins, que não são recomendadas para se usar como carteira, use uma exchange somente para negociar (comprar e vender).

 

A carteira de papel (paper wallet)

A paper wallet é um recurso interessantíssimo onde a chave privada fica evidentemente em papel. Imprimir a chave privada tem vantagens e desvantagens, a principal vantagem é que você pode receber moedas sem precisar de computador ou qualquer dispositivo, ficando você logicamente protegido de hackers. A desvantagem principal é que se você a perder perde-se as moedas e papel nem sempre é um bom lugar para se guardar coisas valiosas, mas com o devido cuidado é uma das melhores opções para guardar moedas a longo prazo, outra desvantagem é que você irá precisar de um dispositivo para gastá-las.


A carteira cerebral (brain wallet)
A brain wallet é uma carteira que você guarda na sua memória, como assim?

Vou ter que guardar um sequencia gigantesca de uma chave privada e soletrar toda vez que for receber e enviar moedas? Quase isso.

Entenda que as chaves privadas nada mais são que um conjunto numérico criptografado de algum valor ou sequência, pode ser numérica, uma frase ou até mesmo um arquivo ou a combinação de ambos. O algoritmo usado para a criptografia é o SHA256 esse conjunto chamado de 'hash' pela definição do SHA256 é praticamente único, segue uma fórmula matemática que qualquer alteração na sequência irá gerar um 'hash' diferente, inclusive fica diferente usando letras maiúsculas e minusculas. Por exemplo: O hash da palavra “Bitcoin” vai ser diferente do hash da palavra “bitcoin”.

O segredo de uma boa brain wallet é criar uma super senha misturando números, palavras inclusive estrangeiras e símbolos, quanto maior, mais difícil de se descobrir. Se for de um arquivo que você consegue regenerá-lo mentalmente será ainda melhor.

Não me venha com uma brain wallet de suas senhas de rede social. Será hackeado da mesma maneira que outro tipo de carteira conectada a internet. A desvantagem é de você não se lembrar como gerar novamente e também precisar de um dispositivo para sempre regenerá-la e gastar suas moedas. Ela é altamente recomendada como cofre, use-a para fins de armazenamento a longo prazo.
 
 

Gerando paper e brain wallets.

Para se gerar paper e brain wallet baixe do Github esse App aqui.

Dica de segurança: A melhor maneira de se gerar um paper/brain wallet é desconectado da internet e com sistema operacional livre de vírus (Windows não é recomendado), acesse o link do gerador, no rodapé dele tem o código fonte no github baixe-o, desconecte o computador da internet, rode-o pelo seu browser e gere suas chaves, imprima, destrua qualquer evidência delas, desligue o computador e guarde em lugar seguro, de preferencia um cofre a prova de catástrofes se for paper wallet.

No caso da brain wallet crie um mecanismo de segurança para relembrar de como gerá-la que só você saiba e no caso de precisar de um backup crie uma charada que só seus familiares próximos possam descobrir em caso de sua falta e recuperar as suas moedas.



Resumo

  • Uma carteira Bitcoin ou de qualquer cripto moeda tem em sua essência chaves públicas e privadas.
  • As chaves públicas são usadas para receber moedas e as chaves privadas para gastar.
  • Existem endereços que usam apenas uma assinatura e outros que usam multiplas assinaturas (multisig).
  • Exchanges, carteiras web e SPV, não são recomendadas para guardar grandes quantidades de moedas. Para isso use de paper wallets e/ou brain wallets, também chamado de cold storage (literalemente armazenagem a frio). Para uso cotidiano procure usar carteiras HD e a própria CORE wallet.
  • O backup das chaves privadas é o mais importante de todos, pois é com elas e somente com elas que você poderá gastar e transferir suas moedas. Se for a core wallet faça backup frequentemente , pois existem endereços escondidos chamados endereço de troco que não aparecem normalmente.

 

Links úteis:

Carteiras para Celular: Mycelium, Coinomi, Uberpay entre outras.
Gerar paper e brain wallet, fonte no github

Para saber mais:

 


2 comentários: