Carteiras e endereços
A "carteira" do Bitcoin é o arquivo que guarda o par de chaves
públicas (que toda a comunidade pode verificar) e privadas usadas na
autorização das transações. O endereço de Bitcoin é formado a partir de uma
codificação da chave pública, para representá-la de uma forma mais compacta.
Chave pública e privada
O sistema de chave pública e privada não é exclusivo do bitcoin – ele é base de
muitos sistemas de confiança e criptografia digitais, inclusive parte do
"cadeado" que aparece em sites seguros da web e os certificados
digitais brasileiros (como o e-CPF). Funciona da seguinte forma: a chave
pública pode ser usada para verificar se uma assinatura digital foi gerada pela
chave privada, bem como codificar dados que somente a chave privada poderá
abrir. Ou seja, a chave pública é para o uso dos outros, enquanto a chave
privada é usada por você.
Uma
transação de bitcoins inclui a chave pública do(s) destinatário(s). Quando essa
transação for referenciada como origem do dinheiro, apenas a chave privada, que
somente o destinatário possui, será capaz de gerar o código autorizador
(assinatura digital) que será aceito. Caso alguém roube sua
"carteira", que contém a chave privada, essa pessoa poderá gerar as
assinaturas e gastar seu dinheiro. Tudo no bitcoin é um contrato que exige sua
assinatura.
Bloco e corrente de blocos
Todas as transações de bitcoin são reunidas em blocos. Um bloco é
"ligado" ao bloco anterior informando qual foi o "hash" (um
código que é calculado e aceito pela rede de bitcoins), formando a
"corrente de blocos" até o primeiro bloco do bitcoin. Ou seja, ao ler
todos os blocos é possível ver todas as transações já realizadas com a moeda.
O
hash é um número que representa uma informação, gerado a partir de uma fórmula
preestabelecida. Mínimas alterações nos dados geram um hash completamente
diferente e imprevisível. Dessa forma, alterar os blocos do bitcoin mantendo os
hashes já computados é extremamente difícil, o que protege a corrente contra
manipulação do seu "passado". O hash, por ser um número muito grande,
costuma ser representado em hexadecimal, ou seja, com números de 0 a 9 e letras
de A a F.
Mineradores
Mineradores montam os blocos do bitcoin. Primeiro, eles agrupam as transações
que estão sendo propagadas na rede, mas que ainda não foram inclusas em um
bloco já ligado com a corrente. Uma vez com o bloco montado, o minerador
calcula o "hash" para o bloco. Mas o bitcoin não aceita qualquer
hash.
Calcular
o hash dos mesmos dados sempre terá o mesmo resultado. Existe, portanto, um
dado dentro do bloco que o minerador pode manipular. Esse dado é apenas um
número, chamado de "nonce". O minerador então começa a calcular
repetidos hashes do bloco, alterando apenas o número nonce a cada tentativa.
Como
o "hash" é apenas um número, o bitcoin estabelece um valor máximo
para o hash. O bitcoin trabalha com números extremamente grandes, mas, para
fins de exemplo, vamos supor que o hash não pode ser maior do que 8. Quando o
minerador encontrar um "nonce" que faz o bloco ter um hash 6, por
exemplo, ele propaga isso para a rede. O bloco está resolvido e pode integrar a
corrente de blocos.
Blocos
de bitcoins devem levar, em média, 10 minutos para terem seu "nonce"
encontrado. Caso os mineradores estejam encontrando o "nonce" muito
rapidamente, o valor máximo (8, no exemplo) é diminuído, para dificultar o
trabalho. Caso os mineradores estejam muito lentos, o valor máximo é
aumentando, facilitando o trabalho, pois o número de hashes válidos aumenta.
Esse ajuste é proporcional e é calculado pela rede periodicamente, baseando-se
na velocidade média de geração de cada bloco.
Pelo
seu trabalho, os mineradores ganham uma quantidade de bitcoins. Atualmente,
esse valor é de 25, mas ele será diminuído pela metade quando a rede atingir
determinado número de blocos, até que moedas não sejam mais geradas. O
minerador também fica com o "troco" de todas as transações do bloco,
caso esse troco não tenha sido "devolvido" ao pagador na transação.
Blocos órfãos
Caso dois mineradores encontrem um "nonce" juntos ou quase juntos, a
rede terá dois blocos válidos em circulação. Eventualmente, um novo bloco será
gerado, mas ele referenciará apenas o hash de um dos blocos anteriores. O bloco
que sobrou, chamado de "bloco órfão", é descartado. Se a transação
foi incluída apenas no bloco órfão, ele terá que ser novamente incluída em um bloco
futuro, o que pode fazer com que uma transação leve mais de 30 minutos até ser
oficialmente parte do histórico do bitcoin.
Não há 'saldo'
Quando se fala que o bitcoin é uma "moeda criptográfica", supõe-se
que ele funcione como o papel-moeda, e que as "carteiras" de bitcoins
guardam seu dinheiro até você transferir para outra pessoa. Esse, porém, não é
o caso. Carteiras de bitcoin não guardam dinheiro algum, e você não tem
necessariamente um "saldo".
Em
vez disso, todas as bitcoins ficam nas transações. As moedas que você recebe
não ficam em sua carteira e não são gastas dizendo o equivalente "vou usar
agora 5 BTC da minha carteira". Para usar as bitcoins, o software
gerenciador precisa apontar uma transação específica de onde as moedas foram
recebidas.
Por
exemplo, se você recebeu três moedas de bitcoin (BTC) de uma pessoa A, e mais
duas moedas de bitcoin de uma pessoa B, e quer usar quatro moedas, o software
do bitcoin iniciará uma transação que identifica como "origem" essas
duas transações anteriores, que somam 5 BTC. A moeda bitcoin que sobra é o
troco e ele também é enviado – de volta para você mesmo. Quando você quiser
usar essa moeda, o software terá de referenciar essa mesma transação, dizendo,
de certa forma, "quero usar esse 1 BTC que ficou de troco para mim".
Detalhe:
o envio desse "troco" não é automático. O software é que gerencia
isso. Essa "transação", portanto, tinha dois destinatários: 4 BTC
para uma pessoa, 1 BTC de volta para você. Caso essa segunda transação do
"troco" não fosse informada, a moeda que sobra ficaria com o
minerador que incluiu a transação no bloco que foi incluído na corrente de
blocos do bitcoin (entenda o que são mineradores e a corrente de blocos,
acima).
O
bitcoin funciona assim por dois motivos. Um deles é que calcular o
"saldo" de uma carteira levaria muito tempo. O banco de dados
completo do bitcoin, somando todos os blocos da corrente, tem aproximadamente
13 GB hoje, mas aumentará muito mais. Para calcular o saldo de uma carteira,
seria preciso processar esse banco de dados inteiro e chegar ao balanço.
Especificar a origem das moedas permite que a verificação seja mais simples:
basta procurar as transações em que aquela mesma moeda foi gasta. Se houver uma
transação mais nova do que a especificada, e que não dá o direito de uso da
moeda para quem a está usando, então ela já foi gasta e não pode ser usada.
Outro
motivo é que as transações permitem a configuração de autorizações programadas.
Ou seja, o bitcoin não funciona apenas dizendo que A quer autorizar ou enviar
moedas para B. O bitcoin permite muito mais que isso. As autorizações de uso da
moeda são uma sequência de regras. Em linguagem técnica, é um
"script".
Transações futuras
É possível, por exemplo, enviar dinheiro para duas pessoas ao mesmo tempo,
exigindo que as duas forneçam uma autorização para que aquela moeda seja gasta
no futuro – as moedas pertencem a ambas, mas nenhuma tem o direito de usá-las
sozinho. Com isso, é possível criar um fundo de doação, no qual alguns ou todos
os doadores podem reter o controle do dinheiro e autorizá-lo somente quando uma
compra foi acertada entre todas as partes.
Também
é possível criar um "depósito garantido", no qual um valor é
depositado, mas retornado, em todo ou em parte, após uma data combinada (as
transações de bitcoin são todas datadas). Outras possibilidades levantadas são
a de distribuição automática de heranças e criação de loterias.
Essas
possibilidades ainda nem começaram a ser exploradas e são, em grande parte,
hipotéticas. Mas atestam o poder do bitcoin como não apenas uma moeda de
"troca", mas um poderoso protocolo de autorizações programadas,
contratos e registros virtuais.
Fonte:
http://g1.globo.com/tecnologia/noticia/2014/02/entenda-como-e-uma-transacao-feita-com-moeda-virtual-bitcoin.html