Você já se perguntou o que há por trás das criptomoedas que suporta e assegura o volume de transações realizadas durante a mais recente onda de atenção? Conheça a blockchain, a tecnologia idealizada por Satoshi Nakamoto para pagamentos eletrônicos, e algumas de suas possíveis utilizações.
Matheus Vinícius Lopes Martins e Vinícius Shoiti Koike Graciliano
Bitcoin
Você provavelmente já ouviu falar da Bitcoin, a primeira criptomoeda descentralizada da história, que inclusive já foi assunto no Coruja Informa [1]. A moeda, cuja versão 0.1 foi lançada em 2009 [2], vem acumulando cada vez mais interesse, com uma unidade chegando a valer U$ 19.000,00 [3]. A criação de Satoshi Nakamoto, pseudônimo do criador ou ainda criadores da moeda, está se difundindo cada vez mais no mundo e muitos veem na moeda o potencial de revolucionar a economia, reduzindo o poder de instituições como bancos e governos, descentralizando e “anonimizando” a troca de valores. Porém, para muitos, Bitcoin é apenas a ponta de um grande iceberg, chamado blockchain.
Blockchain
Blockchain é uma estrutura de dados gerenciada de maneira descentralizada em uma rede peer to peer que mantém registrada uma sequência de eventos testemunhados. Ela foi idealizada e implementada por Satoshi para resolver o problema de double spending1 em uma moeda virtual sem a necessidade do intermédio de uma instituição reguladora, criando assim a blockchain responsável pela Bitcoin [4].
Para entender um pouco mais sobre o funcionamento desta tecnologia, vamos utilizar como exemplo a própria Bitcoin e sua blockchain, na qual movimentações da moeda entre diferentes carteiras são verificadas e registradas em blocos na rede.
Na rede peer to peer, existem nós denominados de mineradores que oferecem o poder de computação necessário para gerar novos blocos e movimentar a rede. Os nós recebem transações dos usuários e são responsáveis por verificar a validade das transações ao varrer a blockchain e, desta forma, verificar se a carteira emissora da transação possui os fundos necessários para realizá-la. Cada nó, então, gera um bloco com as transações e adiciona o valor da função de hash SHA256 do bloco anterior [4]. O minerador adiciona também uma transação especial que dá a si próprio uma recompensa pelo trabalho realizado, que é, atualmente, 12,5 Bitcoins e é periodicamente reduzida pela metade [4][5].
Figura 1 – Organização dos blocos – Fonte: https://bitcoin.org/bitcoin.pdf
A figura acima mostra a estrutura simplificada de um bloco da Bitcoin. O bloco contém múltiplas transações, representadas como “Tx”s, e um campo de 256 bits que contém o resultado da função de hash sobre o bloco anterior, chamado de “Prev Hash”. O campo “Nonce” é o campo de 32 bits, incrementado aleatoriamente de maneira que o resultado da função de hash sobre o bloco satisfaça a prova de trabalho [4].
O minerador, então, propaga o bloco aos outros nós, que são responsáveis por verificar se o mesmo de fato atende a estes requisitos. Verificada a conformidade das transações recebidas, o minerador passa a minerar um novo bloco apontando para o recém recebido como anterior, dando, assim, um voto na veracidade da informação recebida ao optar por prolongar a corrente incluindo aquele bloco. Um pacote recentemente propagado não necessariamente é confiável. Apenas quando novos blocos gerados apontam para ele, pode ser constatado que uma quantidade significativa de esforço computacional foi empenhada por nós que atestam a integridade daquelas transações – e aí sim o pacote ganha confiabilidade. Se um nó determinar que as transações repassadas não são confiáveis, ele pode ignorá-las e esperar obter outras, estendendo a corrente apenas com blocos confiáveis.
Figura 2 – Organização dos blocos na corrente. Fonte: acervo próprio
A figura acima demonstra o cenário onde blocos são propagados concorrentemente, como o bloco vermelho e bloco azul abaixo dele. Devido à escala global de redes como a Bitcoin, é possível que um nó minere um bloco sem saber que um outro bloco válido que aponta ao mesmo antecessor já foi propagado por outro minerador e ainda não chegou a ele. Quando o bloco vermelho e o azul estão no fim da corrente, não há um consenso na rede sobre qual bifurcação da corrente é válida. O poder computacional despendido na geração do próximo bloco determinará qual bifurcação será mantida e o bloco sem sucessores será descartado.
Com o sistema de prova de trabalho, agentes desonestos têm baixas chances de inserir transações inválidas na blockchain, desde que a maioria da rede, em termos de poder computacional, aja de maneira honesta, ignorando os blocos inválidos. Além disso, o sistema torna a blockchain resistente a alterações retroativas. Isto ocorre pois alterar os dados de um bloco significa alterar o resultado da função de hash resultante dele, e a função hash resultante de todos os blocos posteriores a ele na corrente, pois os mesmos são ligados por tais resultados. Isso significa também refazer a prova de trabalho para todos estes blocos. Se o agente desonesto não possui a maioria em poder computacional, ele ficará para trás conforme novos blocos são gerados [4].
A blockchain é, portanto, um registro de eventos descentralizado entre múltiplos agentes livres para entrar ou sair da rede, porém sem capacidade de corromper a “verdade” mantida. Atualmente, sua principal aplicação é em criptomoedas. Alguns descrevem as criptomoedas como o killer app da blockchain, assim como o e-mail foi o killer app que popularizou o uso da internet [7].
Veremos, porém, que há aplicações alternativas à tecnologia que recebem cada vez mais atenção [7], e muitos acreditam que, assim como a internet, novas aplicações atualmente inimagináveis florescerão da blockchain.
Colored coins
Além da funcionalidade normal de registrar transações simples, a blockchain da Bitcoin suporta uma linguagem simples de programação chamada Script. A Script possibilita a criação de transações mais complexas que só são válidas se a execução do Script embutido não retornar erros [8].
O uso do Script possibilita a inserção de metadados em transações que podem significar a transição de posse de ativos do mundo real registrados na blockchain, criando “moedas coloridas” cujo emissor pode prometer algum valor. Por exemplo, um cinema pode realizar transações que simbolizam a posse de um ingresso à um filme, e prometer que o resgate destas moedas dão o direito de assistir à um filme X no horário Y [9].
Namecoin
Namecoin é um projeto que visa estender a tecnologia da blockchain para a criação de um DNS2 descentralizado e livre de censura. Criada em 2011, Namecoin é uma blockchain alternativa baseada na Bitcoin, cujo intuito é armazenar pares de chaves e valores na blockchain. Sua principal aplicação é o sistema de DNS de domínios .bit, na qual sua blockchain associa nomes de domínios a seus IPs e informações [10].
Ao contrário de domínios .net e .com, a Namecoin não possui um órgão regulatório como a ICANN [11] e a natureza imutável e descentralizada da blockchain confere aos registros segurança contra ataques ou censuras.
Steem
Steem é uma blockchain que serve de fundação para o Steemit, uma rede social monetizada com mais de 500 mil usuários registrados. Inaugurada em 2016, a Steemit visa resolver o problema de monetizar a criação e curadoria de conteúdo na internet [12]. A blockchain registra os posts no site e suas interações com usuários, como votos e comentários, e então distribui tokens denominados de STEEM para autores e curadores de posts populares, que podem ser trocados por dólares ou outras criptomoedas [13].
Ethereum
Ethereum é um projeto open source que visa criar uma plataforma de computação descentralizada utilizando uma blockchain e o conceito de smart contracts, proposto em 2013 por Vitalik Buterin e lançado em 2015 [14].
Assim como a Bitcoin, a blockchain do Ethereum também registra a posse e transações de uma moeda, o Ether, entre contas. Mas, além das contas normais que guardam e transferem Ethers, Ethereum suporta um segundo tipo de conta, denominadas de contratos, os smart contracts. Os contratos, além de possuírem fundos em Ether para realizar transações, possuem também código e armazenamento na blockchain [6].
O Ethereum têm sua própria máquina virtual turing-completa, a Ethereum Virtual Machine (EVM). Quando uma transação é enviada a um contrato, ele é ativado e seu código é executado pela EVM, podendo realizar transações, operações de entrada e saída ou ativar outros contratos na blockchain [6].
O funcionamento da blockchain do Ethereum no alto nível é similar ao da Bitcoin, com a adição dos smart contracts. Na mineração dos novos blocos no Ethereum, parte da validação de uma transação é a execução do código caso o recipiente da transação seja um contrato, e cálculo do novo estado do contrato e todos os outros contratos e contas com quem ele interagiu [6]. O bloco então é propagado e todos os outros nós re-executam os contratos para validar o bloco que receberam, criando apps descentralizados, denominados de DApps, executados seguramente na blockchain onde cada agente pode verificar e confiar em seu estado.
Cryptokitties
Das centenas de DApps lançados na blockchain, um dos mais intrigantes é o Cryptokitties, um jogo no qual usuários podem adotar, criar e trocar gatos virtuais. O jogo utiliza o Ethereum para registrar as posses e transações dos cryptokitties. Cada gato virtual possui um genoma único de 256 bits armazenado na blockchain que determina suas características e de seus descendentes [15]. O jogo é um dos DApps mais populares e chegou a ser a maior fonte de transações no network do Ethereum, gerando preocupações que o jogo poderiam empurrar aplicações “mais importantes” para fora da rede por falta de espaço. Pelo lado positivo, a popularidade dos Cryptokitties pode ser vista como uma difusão da tecnologia da blockchain, tornando-a mais acessível ao público geral [16].
O problema de “espaço” tornou-se recorrente nas blockchains. Devido a descentralização e transparência, todos os nós recebem todas as informações, e no caso do Ethereum, executam todo o código. Isto limita o tamanho dos blocos e a complexidade dos smart contracts para que eles sejam propagados e verificados sem grande latência. Esta limitação porém, prejudica a adoção em massa da tecnologia ao reduzir a vazão de transações realizadas. Durante o período de alta demanda da Bitcoin no ano passado as taxas e o tempo das transações aumentaram demasiadamente [17][18], inviabilizando determinadas aplicações e levando negócios a deixar de aceitar a moeda [17]. A falta de consenso sobre que ação tomar dividiu a comunidade e gerou blockchains alternativas, como a Bitcoin Cash [19], que lidam com o problema de escalabilidade de maneiras diferentes mas dividem os usuários e nós, reduzindo o poder computacional e a segurança nas correntes.
Como vimos, a blockchain é uma das estruturas de dados descentralizadas mais seguras do mundo. Na blockchain, todos são livres para começar e deixar de contribuir à rede, mas o uso inteligente de criptografia impede a modificação dos registros a não ser que um grupo desonesto possua mais poder computacional do que todos os outros nós na rede juntos. Junto com o incentivo aos nós que movimentam a rede, estes mecanismos criam uma rede que movimenta-se sem um órgão central, controle e censura. Sua principal aplicação atualmente é na implementação de criptomoedas, mas sua estrutura tem potencial para ser utilizada em diversas aplicações descentralizadas que requerem uma segurança de alto nível.
1. A realização de múltiplas transações com a mesma moeda. ↩
2. Domain Name System, ou Sistema de Nomes de Domínios. ↩