O que é blockchain

Blockchain é uma cadeia de blocos onde cada bloco contém informações. Trata-se de um banco de dados distribuido numa rede peer-to-peer, no qual não há unidade centralizadora e nenhum componente da rede possui prioridade quando comparado a outro. Sua principal vantagem com relação a outros bancos de dados é que excluí-se o problema de ponto único de falha e vulnerabilidades.

A história por trás das criptomoedas

Em 2008 o pseudônimo Satoshi Nakamoto publicou um paper chamado "Bitcoin: A peer-to-peer Eletrônic Cash System", um modelo que permitia transações financeiras sem a necessidade de uma entidade controladora. Satoshi Nakamoto continua desconhecido e até os tempos atuais não se sabe se é o pseudônimo de um grupo de pessoas ou de apenas um indivíduo. Meses depois um software desenvolvido com licensa GPL implementou um novo procotolo chamado Genesis Block que possibilitou o desenvolvimento de aplicações blockchain.

Como funciona

Cada Computador conectado à rede de um blockchain(chamado de nó) contém uma cópia completa deste banco de dados e realiza trabalhos de validar e transmitir as transações aos demais nós. A principal característica é que uma vez que uma informação é registrada ela nunca mais será apagada ou modificada, parecido com um livro que não permite ser editado, só pode ser escrito por um lado e um registro está diretamente relacionado ao anterior e ao proximo como uma corrente, e sendo possivel também ter acesso a toda "historia" desse banco de dados, gerando assim uma grande confiabilidade e facilita qualquer eventual auditoria. O ponto negativo disso é que o espaço em disco ocupado por tais informações está em contante crescimento.

Em um blockchain há dois tipos básicos de registros: blocos e transações. Cada bloco possui um cabeçalho composto pelos seguintes campos. Hash do bloco anterior, marcação temporal, nonce(um número arbitrário de 32 bits),Hash do próprio bloco e a raiz da árvore de Merkle. O bloco incial chamado bloco de gênese registra o estado inicial do banco de dados e é o único que não possui em seu cabeçalho o Hash do bloco anterior, este bloco é seguido pelos blocos subsequentes em que apartir deste terão todo o cabeçalho completo. Este encademanteo garante a integridade da informação, tornando impossível alterar blocos antigos sem alterar todos os blocos seguintes.De fato, o estado atual do banco de dados está contido em um blockchain apenas de maneira abstrata, sendo necessário que cada nó determine tal estado partindo do inicial e aplicando as subsequentes transações.

O processo de criação de blocos é chamado mineiração. Um certo número de transações, geralmente definidos por consenso da maioria, já validada é alocada para cada bloco. Após tal é criado então o cabeçalho do bloco. No geral cada modelo de blockchain decide o que coloca em seu cabeçalho além dos capos descritos anteriormente. Uma vez concluído o bloco calcula seu Hash e inclui no seu conteudo e incaminha para que o próximo bloco o inclua em seu cabeçalho.

Para evitar possiveis ataques ao sistema, já que o mesmo depende de maquinas fazendo calculos para gerar o bloco, usa-se mais comumente a Prova de Trabalho, que adiciona um numero arbitrario (nonce), que só sera usado uma vez, ao cabeçalho usando o algoritmo SHA256. Se o resultado obtido for menor do que um certo valor alvo, a prova é aceita. Caso contrario, tenta-se novamente. O valor alvo é redefinido a cada 2016 blocos para aumentar ou diminuir a dificuldade, de modo que seja criado em média um bloco a cada dez minutos.

Para incentivar os mineradores é gerado uma recompensa pela criação dos blocos, e os proprios mineradores competindo pela recompensa ficam verificando outros blocos para que ninguem esteja "roubando".

A validação de um novo bloco é feita a partir da verificação se o bloco anterior referenciado existe e é valido, se a marca temporal do bloco novo, se as informações adicionais que cada blockchain bota no seu cabeçalho, o mecanismo de consenso. Fazendo uma verificação de todas as transações registradas no novo bloco, se a aplicação de alguma transação falhar, ele é dado como invalido, e a verificação falhou, caso foi bem sucedida o nó guarda para si o novo estado atual do blockchain, como o novo bloco no final da cadeia. Esta validação é feita por cada nó quando recebe a informação de que um novo bloco foi criado. Se em qualquer etapa da criação de um bloco o minerador fizer algo que vá contra o consenso, seu novo bloco não será aceito pelos demais.

waht