Pilha Tecnológica de Criptomoedas 2 - Blockchain

Publicado em 2017-12-15

Este é o segundo artigo em uma série sobre a tecnologia de criptomoedas. Comece pelo primeiro para acompanhar desde o começo.


Retomando o estudo da pilha tecnológica de uma criptomoeda, nesse artigo vou explorar um pouco as características da blockchain.

A blockchain não foi inventada pelo Bitcoin e é uma estrutura de dados genérica, aplicável em outras situações. Ela também não é absolutamente essencial para uma moeda digital, já que aquelas controladas por uma entidade central podem ser emitidas sem necessidade de POW (proof of work, a ser abordado em um artigo futuro).

O nome dessa estrutura já diz boa parte do que você precisa saber sobre ela: a block chain (cadeia de blocos) representa um conjunto de dados em que cada grupo de informações (bloco) existe dentro de uma sequência (cadeia).

A forma de encadear as informações é fazer com que cada bloco “aponte” para um bloco anterior, criando uma sequência desde o bloco inicial (chamado bloco gênesis) até o bloco mais recente (topo).

Uma cadeia de blocos genérica

Note os seguintes aspectos:

  • Um bloco contém duas partes: o cabeçalho e o conteúdo
  • Vários blocos podem apontar para o mesmo antecessor
  • Para substituir um ramo inteiro de blocos basta trocar o antecessor de um único bloco

Blockchain Criptográfica

Uma blockchain puramente em memória é funcionalmente equivalente a uma lista encadeada ou árvore, e portanto qualquer nó (bloco) da rede pode ser substituído a qualquer momento.

Apenas armazenar essa estrutura em algum banco de dados, usando por exemplo um campo sequencial auto-incremento para identificar o bloco, também não garante a integridade da cadeia como um todo.

Ao combinar a blockchain com algumas primitivas criptográficas, conseguimos criar uma estrutura de dados onde um bloco mais novo é dependente da cadeia anterior inteira, o que garante que blocos mais antigos nunca poderão ser modificados.

Isso é feito através do uso de uma função de hash. Se estabelece (por convenção/consenso) que o identificador de um bloco é o hash do seu cabeçalho. Como o identificador do bloco anterior faz parte do cabeçalho, ele está incluído nesse cálculo. E como qualquer alteração nos dados de origem de um hash provoca uma alteração no seu resultado, isso garante que o apontamento de qual é o bloco anterior na cadeia não pode ser modificado.

Para garantir que o conteúdo do bloco não possa ser alterado, adiciona-se ao cabeçalho um hash calculado a partir de todo o conteúdo. No caso do Bitcoin, Decred e criptomoedas similares, o hash é a raiz de uma Merkle Tree (Árvore Merkle), construída de uma forma que especifica a existência e sequência das transações do bloco.

Blockchain criptográfica

Dessa vez, note o seguinte:

  • O hash do bloco em si não faz parte do bloco
  • O identificador do bloco anterior é o hash do cabeçalho (ao invés de um número sequencial)
  • Blocos com conteúdos (transações) diferentes tem uma raiz Merkle diferente
  • É impossível mudar qualquer informação de um bloco anterior arbitrário (porque isso muda seu hash, o que muda seu identificador, o que muda todos os blocos sucessores)

Blockchain da Decred

A Decred contém algumas mudanças significativas no layout da sua blockchain quando comparada com a do Bitcoin. Em particular, o tamanho do cabeçalho é maior (180 bytes vs 80 bytes):

Além do hash do bloco anterior e da raiz da árvore de transações, um bloco também contém uma árvore de transações de stake, onde são armazenadas as transações de tickets, votos e revogações do sistema de votação:

Além de vários outros campos usados nos cálculos de ativação das regras e um campo ExtraData para future proofing de hard/soft forks:

Compare os itens presentes em um cabeçalho Decred ao cabeçalho de um bloco bitcoin:


Esse foi o segundo artigo sobre a pilha tecnológica de criptomoedas. Para acompanhar os próximos lançamentos, assine meu feed RSS, minha newsletter, ou meu facebook.