Introdução

De tempos em tempos algumas tecnologias desruptivas surgem e mudam todo que as cerca. Blockchain é uma dessas tecnologias capaz de mudar toda a maneira de algo ser pensado e executado. Com diversas aplicações que vão desde a área financeira com as criptomoedas até soluções para criar sistemas seguros de identidade virtual. Há quem pense que o blockchain é a nova invenção da roda e a solução para todos os problemas cotidianos do homem moderno, facilidade monetária, segurança, sistemas eleitorais. Entretanto seria o blockchain capaz de resolver as demandas do homem mordeno. A implementação de redes blockchain demanda a solução de diversos problemas técnicos e de segurança. Esse trabalho visa esclarecer a implementação e utilização da rede, tais como suas falhas e funcionamento.

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 contantemente crescendo

Em um blockchain há dois tipos básicos de registros: blocos e transações. Começando com um bloco inicial(chamado de bloco gênese) que registra o estado inicial do banco de dados, seguido pelos blocos subsequentes, cada qual contém, um grupo de transações já validadas. Cada um deles, exceto o gênese, contém um hash do bloco anterior, criando um encadeamento entre eles e garantindo a integridade da informação, já que é impossivel alterar blocos antigos sem alterar todos os blocos subsequentes, o que seria percebido pelos demais nós da rede. Podemos entender um blockchain como um estado inicial seguido de um certo número de funções de transição, agrupados em blocos. 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.

Os blocos são criados através de um processo conhecido como mineração. Um nó pega um certo número (geralmente delimitado pelo consenso da maioria) de transações já validadas e as inclui no bloco. Em seguida, deve criar o cabeçalho do bloco. Cada blockchain pode determinar diferentes informações que devem compor este cabeçalho, mas via de regra ele deve conter o hash do bloco anterior para criar o encadeamento e uma marca de tempo indicando quando foi criado. Uma vez concluído o bloco, obtém-se seu hash que é gravado juntamente dele para identificá-lo e para ser incluído no cabeçalho do próximo

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, 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 verificiando 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.

Segurança

Conhecida não somente por descentralizada as redes blockchains também são reconhecidas pela segurança por garantir confidencialidade, integridade e disponibilidade. Tais quesitos são garantidos através de chaves assimétricas, funções hashes e árvores de Merkle, já explicada previamente.

Funções hash

É uma função matemática de mão única -"fácil de calcular apra qualquer entrada, mas difícil de invertar dada uma entrada aleatória" - ela aceita dados de tamanho arbitrário e retorna para toda entrada um valor de tamanho fixo na saída. Hash criptográficas em geral são escolhidas de acordo com a facilidade para calcular sua aplicação a um dado mas que é de dificuldade extremamente maior fazer o caminho oposto.

Chaves assimétricas

Trata-se de um algoritmo que cria duas chaves, uma privda que é propriedade do dono e outra pública distribuída na rede. As aplicações são diversas, desde verificar a autoria de uma mensagem ou garantir a integridade criptografando o dado a ser enviado. A primeira aplicação é feita de forma que o dono da chave usa-a para assinar a sua mensagem e qualquer um que possuir a chave pública e a mensagem pode validar a autoria, a segunda por sua vez é dada de forma a criptografar o dado utilizando a chave pública e apenas o possuidor da chave privada poderá ter acesso à mensagem.

Blockchain e aplicações

Sidechain e smartcontracts

Criptomoedas

Etherium e suas aplicações

Blockchain 2.0

Conclusão