Por dentro do blockchain do Ethereum
Fundamentalmente, um blockchain é um banco de dados compartilhado, composto por um livro de registro de transações, ou seja, a sua função é muito semelhante à de um banco. Contudo, enquanto os registros feitos pelo banco são armazenados de forma centralizada, com o blockchain cada participante da rede tem uma cópia do histórico de transações. Cada um desses participantes é chamado de “nó” da rede.
O blockchain elimina o problema da confiança que afeta os bancos de dados das seguintes maneiras:
Descentralização total: a leitura e a possibilidade de agregar informações ao banco de dados são completamente descentralizadas e segura. Nenhuma pessoa ou grupo controla um blockchain.
Tolerância à falha extrema: esta característica refere-se à capacidade de um sistema em lidar com dados corrompidos. É impossível adicionar ao livro de registro do blockchain algum dado corrompido ou errado. Todos os nós da rede precisariam aprovar tal transação e isso não ocorreria se ela não fosse legítima e válida.
Verificação independente: as transações podem ser verificadas por qualquer pessoa, sem a necessidade de um terceiro. Isso às vezes é
referido como “desintermediação”.
Como funciona o Blockchain
Agora que temos alguma ideia da razão pela qual os blockchains são úteis, vamos mergulhar mais profundamente em como eles funcionam.
As interações entre contas em um blockchain são chamadas de “transações”. Elas podem ser transações monetárias, como o envio de ether de uma pessoa para outra. Elas também podem ser transmissões de dados, como uma mensagem, um contrato etc. Um pacote de transações é chamado de “bloco”.
Cada conta no bloco tem uma assinatura exclusiva, que permite a todos saber qual conta iniciou a transação. Em um blockchain público, qualquer pessoa pode ler ou escrever dados. A leitura de dados é gratuita, mas escrever uma transação em um bloco do blockchain não é. Esse custo, conhecido como “gás”, cujo preço é derivado a partir do ether, ajuda a desencorajar o spam e é uma mecanismo de proteção da rede.
Mineração
Qualquer nó na rede pode participar da segurança da rede através de um processo chamado “mineração”. Os nós que optaram por serem mineradores competem para resolver problemas de matemática que protegem o conteúdo de um bloco.
Uma vez que a mineração requer poder de computação (além de muita energia elétrica), os mineradores podem ser compensados pelo seu serviço. O vencedor da competição recebe alguma criptomoeda como recompensa. No caso da rede do Ethereum, o minerador recebe ether. Isso incentiva os nós a trabalharem para proteger a rede, impedindo que muito poder esteja nas mãos de qualquer minerador.
Hashing
Uma vez que um novo bloco é minerado, os outros mineradores são notificados e começam a verificar e adicionar este novo bloco às suas cópias do blockchain. Isso é feito através de hashing criptográfico (ou simplesmente, “hash”). Hashing é um processo unidirecional que transforma dados em uma sequência alfanumérica de comprimento fixo que representa esses dados. Embora os dados originais não possam ser reproduzidos a partir do hash, os mesmos dados sempre produzirão o mesmo hash.
Quando mais da metade dos mineradores já validou o novo bloco, a rede alcança o consenso em relação àquela informação e o bloco passa a fazer parte do histórico permanente do blockchain. Agora, esses dados podem ser baixados por todos os nós, com a sua validade garantida.
O Blockchain do Ethereum
A estrutura do blockchain do Ethereum é muito semelhante à
estrutura do Bitcoin, pois trata-se de um registro compartilhado de
todo o histórico de transações. Cada nó na rede armazena uma
cópia desse histórico.
A grande diferença é que no Ethereum, os nós armazenam o estado mais recente de cada contrato inteligente, além de todas as transações com ether (isso é muito mais complicado do que o descrito, mas o texto abaixo deve ajudá-lo a ficar mais por dentro).
Para cada aplicação no Ethereum, a rede precisa acompanhar o “estado”, ou seja, a informação atual de todas essas aplicações, incluindo o saldo de cada usuário, todo o código do contrato inteligente e onde está armazenado.
O Bitcoin, por outro lado, utiliza algo conhecido como “saídas de transações não gastas” (UTXO, na sigla em inglês) para rastrear quem tem quanto em bitcoin.
Embora pareça mais complexo, a ideia é bastante simples. Toda vez que uma transação de bitcoin é feita, a rede “quebra” o montante total como se fosse papel-moeda, enviando bitcoins de volta como se fossem um troco que recebemos em papel-moeda.
Para fazer transações futuras, a rede do Bitcoin deve somar todas as suas “notas ou moedas” de acordo com o valor que deseja ser enviado. Estas notas são classificadas como “gasto” (spent) ou “não gasto” (unspent).
O Ethereum, por outro lado, utiliza o conceito de contas.
Como os fundos de uma conta bancária, os tokens de ether aparecem em uma carteira e podem ser portados (por assim dizer) para outra conta. Os fundos estão sempre em algum lugar, mas não têm o que você pode chamar de relacionamento contínuo.
O que é prova de trabalho?
Apesar de o blockchain ser considerado a grande inovação que permitiu o surgimento das criptomoedas, na verdade, existe algo ainda mais importante para o bom funcionamento desses ativos digitais que muitas vezes é pouco comentado. Estamos falando de mecanismo de consenso das criptomoedas.
Tanto o Bitcoin, quanto o Ethereum utilizam um mecanismo conhecido como Prova de Trabalho (PoW, na sigla em inglês, que deriva de Proof of Work).
A prova do trabalho é um protocolo que tem como principal objetivo dissuadir ataques cibernéticos, como um ataque distribuído de negação de
serviço (DdoS), que visa esgotar os recursos de um sistema ao enviar múltiplos pedidos falsos.
A ideia da PoW foi originalmente publicada por Cynthia Dwork e Moni Naor em 1993, mas o termo “prova de trabalho” foi cunhado por Markus Jakobsson e Ari Juels em um documento publicado em 1999.
Prova de trabalho e mineração
A prova de trabalho é um requisito para definir um cálculo computacional custoso, também chamado de processo de mineração, responsável por gerar novos blocos de transações e aumentar a oferta da criptomoeda no mercado de forma descentralizada, ao contrário das moedas fiat, que são emitidas através de estruturas centralizadas (Bancos Centrais).
A mineração tem dois propósitos:
1) Verificar a legitimidade de uma transação ou evitar o chamado gasto duplo;
2) Emissão de novas moedas digitais, recompensando mineradores por realizar o processo de mineração.
Quando se configura uma transação, eis o que acontece nos bastidores:
As transações são agrupadas em um conjunto chamado de bloco. Os mineradores, então, verificam que as transações dentro de cada bloco são legítimas. Para fazer isso, eles devem resolver um enigma matemático conhecido como problema de prova de trabalho. Uma recompensa é dada ao primeiro minerador que resolver o problema. As transações verificadas são armazenadas no blockchain público.
Todos os mineradores da rede competem para ser o primeiro a encontrar uma solução para o problema matemático. Este problema não pode ser resolvido por meio da força bruta ou de qualquer outra maneira, de modo que essencialmente requer uma grande quantidade de tentativas. Quando um minerador finalmente encontra a solução certa, toda a rede fica sabendo ao mesmo tempo que houve um “vencedor” daquele bloco, o qual receberá um prêmio em criptomoeda (a recompensa) fornecido pelo protocolo.
Desde que surgiu e, pelo menos, até o final do primeiro trimestre de 2018, o Ethereum funcionou com um mecanismo de consenso de prova de trabalho como este descrito acima. Contudo, os desenvolvedores da plataforma pretendem fazer a transição para um novo tipo de mecanismo conhecido como Prova de Participação (PoS, na sigla em inglês, que deriva de Proof of Stake).
O que é prova de de participação?
A prova de participação é uma maneira diferente de validar transações e de alcançar o consenso distribuído. Também trata-se de um algoritmo e o objetivo é o mesmo da prova de trabalho, mas o processo para atingir o objetivo é bastante diferente.
A primeira menção a esta ideia foi no fórum virtual bitcointalk em 2011, mas a primeira moeda digital a usar este método foi a Peercoin, em 2012.
Na Prova de Participação, o criador de um novo bloco é escolhido de forma determinista, dependendo da sua riqueza, ou seja, da quantidade de tokens que possui.
Neste modelo, todas as moedas digitais são criadas antes do início do sistema e seu número total nunca muda. Não existe emissão paulatina de tokens, como acontece no Bitcoin e também acontece com o Ethereum quando ele usa Prova de Trabalho.
Isso significa que no sistema PoS não há recompensa por bloco, então, os mineradores recebem somente as taxas de transação.
É por isso que, na verdade, neste sistema PoS, os mineradores são chamados de “ferreiros” (forgers, em inglês).
Por que o Ethereum quer usar POS?
A comunidade Ethereum e seu criador, Vitalik Buterin, estão planejando fazer uma atualização na rede da plataforma (hard fork, no termo em inglês) para fazer uma transição da prova de trabalho para prova de participação.
Num consenso distribuído baseado na prova do trabalho, os mineradores precisam de muita energia elétrica para performar os cálculos matemáticos. E esses custos de energia são pagos com moedas fiduciárias, levando a uma constante pressão descendente sobre o valor da moeda digital.
Os desenvolvedores estão muito preocupados com esse problema, e a comunidade Ethereum quer explorar o método da prova de participação para uma forma de consenso mais generalizada e mais econômica. Esta atualização do Ethereum que quer implementar a PoS é conhecida como Casper.