Internet

30/01/2014 11h06 - Atualizado em 31/01/2014 10h35

Bitcoin: os Blocos e sua Cadeia

B. Piropo
por
Para o TechTudo

Na coluna anterior vimos como as bitcoins são emitidas: “minerando” blocos com poderosas estações de trabalho.

Mas não detalhamos o que vem a ser um bloco.

Então vamos começar pelo princípio: um bloco é um arquivo que contém um cabeçalho que o identifica e mais algumas informações genéricas sobre o ele (como por exemplo o “time-stamp”, data e hora em que foi emitido referente ao UTC) seguidas do registro das transações mais recentes efetuadas com as bitcoins e que ainda não foram registradas em outros blocos. É mais ou menos análogo a uma página individual de um grande livro que registra transações efetuadas em uma bolsa de valores.

Imediatamente após o bloco ser emitido pelo minerador que acabou de “encontrá-lo”, a única transação que ele contém é justamente a emissão de um determinado número de bitcoins que são depositadas em sua “conta” (ou atribuídos a seu “endereço bitcoin”; adiante veremos do que se trata). À medida que transações posteriores são realizadas com aquelas bitcoins, são registradas em novos blocos, de modo que cada bloco contém o registro das transações realizadas imediatamente antes de sua criação.

Uma vez criado o bloco, ele é anexado no final de uma estrutura de dados denominada cadeia de blocos. Há apenas uma cadeia (com muitas cópias, continuamente atualizadas) que vai se tornando mais longa à medida que novos blocos são anexados. Como cada bloco contém o registro das transações realizadas imediatamente antes de sua criação e, tão logo criado, é anexado no final da cadeia, esta cadeia contém o registro de TODAS as transações efetuadas com TODOS os bitcoins emitidos até então (já veremos onde o conteúdo desta cadeia é armazenado, como ter acesso a ela e quem gerencia sua criação e manutenção).

Os sucessivos blocos da cadeia são necessariamente únicos (ou seja, é impossível repetir um bloco, o que corresponderia a “gastar” duas vezes a mesma bitcoin). Esta unicidade é garantida não apenas pelo “time-stamp” mas também (o que é necessário já que dois blocos podem ser gerados no mesmo intervalo de um segundo) porque quando o bloco é criado, é gerado seu “hash” (sequência de um número fixo de bytes gerada por um algoritmo conhecido que funciona como “assinatura digital” garantindo que o conjunto de dados ao qual foi aplicada não foi alterado; veja detalhes aqui). Não somente este “hash” é incluído no cabeçalho do bloco como também o “hash” do bloco anterior, identificando sem possibilidade de erro não somente seu conteúdo como também sua posição na cadeia.

Não dá para descer a detalhes sobre a estrutura interna de cada bloco ou de seu cabeçalho, pois seríamos obrigados a discutir tecnicismos que vão além do escopo desta série de colunas. Mas quem tiver interesse pode encontrar detalhes sobre ambos os assuntos no artigo “Blocks“ e “Block hashing algorithm” da  Bitcoin Wiki, este último um sítio que congrega todas as informações – técnicas ou não – sobre o sistema Bitcoin. Mas se você tiver curiosidade em saber com que se parecem os blocos e seus registros de transações, pode acompanhar o desenvolvimento da cadeia em tempo real visitando a página inicial (em português) do sítio BlockChain, ver a lista, um a um, de cada novo bloco à medida em que é criado assim como consultar as últimas transações anexadas aos blocos. A página é dinâmica: cada novo bloco vai sendo nela exibido no momento em que é criado e você pode acompanhar a cadeia crescendo diante de seus olhos. E mais: clicando no atalho de um bloco na coluna “Altura” (que representa a posição do bloco na cadeia), pode examinar suas características. E, na página que ás contém, clicando no atalho indicado, é possível conferir todas as transações nele incluídas.

Mas onde estas informações são armazenadas? Quem as controla? Quem disciplina a formação da cadeia?

Começando por último: ninguém. E esta é justamente a beleza do conceito: não existe uma pessoa ou entidade central que congregue e controle todas estas informações e procedimentos, tanto no que toca à emissão das bitcoins quanto às transações realizadas com elas e a organização da cadeia de blocos.

Vou tentar explicar isto de uma forma simplificada, mas mesmo que fique difícil de entender, fique certo de uma coisa: o método funciona e garante a segurança do sistema.

GPC20140130_1 Página de “download” do cliente Bitcoin (Foto: Reprodução/B.Piropo)


Então vamos lá: em uma das colunas desta série eu mencionei que, se você deseja minerar bitcoins, precisa se integrar à rede Bitcoin. Esta rede não é centralizada, é do tipo par-a-par (“peer-to-peer”). Para fazer parte dela é preciso baixar e instalar o “programa cliente Bitcoin” que pode ser obtido na página correspondente de Bitcoin.Org (veja seu aspecto na Figura 1). É um software de código aberto cuja primeira versão foi desenvolvida pelo idealizador do sistema, Satoshi Nakamoto (que, como informado na primeira coluna desta série, é um nome fictício e até hoje não se sabe efetivamente de quem se trata) e teve algumas atualizações desenvolvidas por colaboradores e aprovadas pelo Bitcoin Forum, que faz parte da Bitcoin.Org.

A rede Bitcoins Já é integrada por mais de seis mil nós (situados principalmente na Europa e EUA, mas há alguns no Brasil e até nos países conflagrados do Oriente Médio) e sua distribuição pode ser vista no mapa contido nesta página.

Pois bem, o “cliente” Bitcoin é muito mais do que o nome indica. Ao ser instalado ele integra a máquina à rede Bitcoin e passa algum tempo (desde algumas horas a um par de dias, dependendo da capacidade de processamento da UCP e da rapidez do disco rígido) sincronizando-se com a dita rede. E, a partir de então, a máquina passa a integrar um nó desta rede. Isto porque o software cliente não serve apenas para minerar, mas para participar do controle do sistema (o software pode, inclusive, ser instalado em uma máquina que jamais seja utilizada para minerar, apenas para integrar a rede).

Após sincronizada, a máquina passa a integrar o conjunto de máquinas que controla a cadeia de blocos. Ela, juntamente com todas as demais, armazena uma cópia da cadeia e, cada novo bloco criado (por ela, caso esteja entre as máquinas empenhadas na mineração, ou por qualquer outra) é imediatamente distribuído a todas as demais. Estas se comunicam entre si e cada uma delas verifica se o bloco é válido ou se trata de uma tentativa de algum pilantra mal intencionado para tirar proveito indevido do sistema.

A validação do bloco é feita com facilidade e rapidez verificando-se sua “time-stamp”, comparando seu “hash” com os dos demais blocos da cadeia (lembre: cada “hash” é montado aplicando-se um algoritmo ao conteúdo do bloco e não há dois blocos com o mesmo “hash”) e garantindo que ele não contém uma transação ilegal (que usa uma bitcoin já utilizada em outra transação). Se aprovado por aquela máquina, ela informa às demais da cadeia. Quando um número suficiente de nós aprovou o bloco (um procedimento que demora cerca de dez minutos), ele é validado e definitivamente anexado ao final da cadeia que, então, passa a esperar que novo bloco seja validado e anexado, e assim por diante, de modo que a cadeia vai crescendo continuamente, contendo informações sobre TODAS as transações realizadas com CADA bitcoin. E como cada bloco foi verificado por um grande número de nós antes de ser validado, pode-se garantir que a mesma transação (ou uma nova transação com uma quantia em bitcoins que já foi usada antes em outra) jamais venha a ser repetida.

Quem desejar informações mais detalhadas sobre este procedimento de validação de bitcoins e suas transações as encontrará no documento original que propôs o sistema, assinado por Satoshi Nakamoto e em diversos artigos da Bitcoin Wiki.

Mas se não estiver disposto a “esquentar a cabeça” com detalhes, basta saber que o procedimento funciona. E, talvez a parte mais bonita: como não depende do controle de qualquer pessoa ou órgão central (como um governo, por exemplo) que controle a emissão e a circulação das moedas, mas sim da aprovação conjunta de um grande número de nós de uma rede par-a-par, é impossível interferir no procedimento para beneficiar fulano ou sicrano. É um processo que, depois de iniciado (e já foi iniciado há alguns anos) não há mais como interromper, desviar, corromper ou alterar seu curso.

Coisa de gênio.

Mas vamos pensar um pouco: se há milhares de nós minerando bitcoins e emitindo novas moedas, como se pode impedir que um número excessivo de bitcoins no mercado gere um processo inflacionário que fará com que a moeda perca o valor? (valor este que, incidentalmente, hoje está oscilando entre US$ 816,06 e US$ 838,72 e vem se mantendo estável neste patamar há algumas semanas).

Bem, isto veremos na próxima coluna. Até lá.

B. Piropo

 


Seja o primeiro a comentar

Os comentários são de responsabilidade exclusiva de seus autores e não representam a opinião deste site. Se achar algo que viole os termos de uso, denuncie. Leia as perguntas mais frequentes para saber o que é impróprio ou ilegal.

recentes

populares