1_xDDxUiUGYNiI6vQo1i0RxA

O que é a Blockchain? Uma breve Introdução

A ideia de uma moeda virtualmente distribuída é constantemente iconizada na cultura pop de Cyberpunk e nos ideais dos ativistas Cypherpunk, expresso através do seu manifesto:

We must come together and create systems which allow anonymous transactions to take place.

Cypherpunk Manifesto [1]

O aparecimento da Bitcoin revelou-se a chave para o avanço das moedas virtuais, mas também mostrou à sociedade como é possível utilizar essa tecnologia (conhecida como Blockchain) para guardar registos, numa rede pública, de uma forma distribuída e permanente.

Um sistema de Blockchain não é nada mais do que um registo (ou ledger) distribuído e público. Este ledger guarda todas as transações (válidas) executadas entre os utilizadores.

Para além de guardar todas as transações, o ledger tem outra funcionalidade chave: qualquer utilizador do sistema pode adicionar transações.

Com esta funcionalidade extra, surge um enorme problema.

Se não temos confiança nos outros utilizadores do sistema, como podemos assegurar o bom funcionamento do mesmo?

O que impede um utilizador de adicionar uma transação sem a aprovação das restantes partes envolvidas?

Para resolver este problema, as soluções de Blockchain recorrem a assinaturas digitais (esquema matemático para garantir a autenticidade da mensagem), em que todas as transações são assinadas pelo emissor.

Para garantir que a assinatura não é forjada e que as transações não podem ser repetidas, todas as transações são numeradas e é utilizada criptografia assimétrica (ou criptografia de chave pública) para assinar a transação, deste modo, mesmo que existam transações similares, a assinatura será sempre diferente, evitando o problema de gasto duplo [2] obtendo-se assim a integridade do sistema.

De forma a distribuir o ledger, todos os utilizadores do sistema precisam de manter uma cópia deste.

Quando um utilizador quer executar uma transação, precisa de anunciá-la para toda a rede, assim, todos os utilizadores podem adicionar essa transação na cópia local do ledger, após validarem todas as assinaturas criptográficas e confirmarem que o emissor tem moeda suficiente para executar a transação.

Esta abordagem é um pouco ingénua. Em redes informáticas, no mundo real, não conseguimos garantir a ordem em que as mensagens são entregues, nem se são realmente entregues. Por isso, não podemos assumir que todos os ledgers da rede têm os mesmos registos, e que aceitam/recusam as transações corretamente.

De forma a resolver este problema, é necessário um mecanismo de consenso para concordar quais as transações aceites e recusadas.

Originalmente, o sistema da Bitcoin, utilizou o mecanismo apresentado no Hashcash [3], mais tarde conhecido como “prova-de-trabalho” (mais detalhes sobre mecanismos de consenso no terceiro artigo da série).

Com o mecanismo de consenso, em vez dos utilizadores adicionarem as transações recebidas na rede diretamente no ledger local, juntam as transações em blocos, conectando os blocos entre si. Assim, o ledger é constituído por uma “corrente” de blocos: a Blockchain.

Criação de Blocos

Todos os utilizadores podem criar blocos com as transações que estão a ser transmitidas na rede e que ainda não foram inseridas noutro bloco.

Para criar um bloco novo, o utilizador tem de demonstrar “prova do seu trabalho” (mecanismo de consenso), que envolve resolver um puzzle criptográfico bastante difícil, em que é fácil fazer a verificação da resposta. E.g. No caso da Bitcoin, o puzzle consiste em calcular qual o número que tem de ser adicionado ao bloco, de forma a que quando é aplicada uma função matemática (função de hash), esta possuí um número pré-definido de zeros.

Para garantir a ordem dos blocos, tem de se adicionar uma função matemática (função de hash) aplicada sobre o último bloco. Desta forma, um bloco é constituído pelo resultado da função matemática, as transações e a prova de trabalho.

Esquemático apresentado no artigo da Bitcoin

Quando um bloco é gerado com sucesso é transmitido através da rede, onde é aprovado/recusado pelos outros utilizadores do sistema após confirmarem as transações e a prova de trabalho.

Se um utilizador receber dois blocos diferentes, a corrente pode ficar dividida. Os utilizadores vão dar sempre prioridade à subcorrente mais longa, uma vez que essa corrente tem mais trabalho envolvido (devido às provas de trabalho dos blocos).

Se as subcorrentes continuarem com um comprimento similar, o utilizador fica à espera que outros blocos sejam transmitidos e conectados às subcorrentes. Assim, para aprovar uma transação, o utilizador tem de esperar que vários blocos sejam conectados depois da conexão do bloco dessa transação.

Recompensas da Criação de Blocos

Quando um utilizador cria um novo bloco existe uma transação especial no mesmo, que consiste na atribuição de um valor pré-determinado da moeda para o utilizador que criou o bloco, o qual é vulgarmente conhecido como minerador.

O valor, da recompensa do bloco, é transmitido pelo próprio sistema e é utilizado como uma forma de encorajar a participação ativa dos utilizadores na rede.

Este sistema é bastante seguro e pode ser considerado à prova de falhas, a não ser, que a maior parte dos utilizadores da rede não sejam confiáveis, como aconteceu no ataque contra o Ethereum Classic [4], em que o atacante conseguiu obter mais do que 51% do poder computacional da rede, produzindo uma falsa corrente “fidedigna”.

Este ataque causou perdas de cerca de $1.1 milhões, e levantou preocupações sobre a segurança dos sistemas em Blockchain.

Daqui se conclui que, quanto maior for a rede e mais utilizadores (ativos) tiver, mais difícil é de executar um ataque deste género, pois a rede terá um maior poder computacional.

Desde a Bitcoin, apareceram vários sistemas de Blockchain sendo que a maior parte destes alterou as características base apresentadas na Bitcoin. Vamos especificar agora alguns exemplos das principais variações das características da Blockchain.

Permissões e Acessos aos Dados

Em termos de permissões, os sistemas de Blockchain podem ser divididos em duas categorias [5]:

  • Blockchain com permissões, onde apenas um número restrito de utilizadores pode contribuir para o consenso do sistema e processar transações.
  • Blockchain sem permissões, onde não existem restrições sobre a identidade dos utilizadores, ou seja, todos os utilizadores podem criar novos blocos, submeter transações e validá-las.

Estes sistemas também podem ser públicos ou privados. Habitualmente, Blockchains com permissões são privadas, enquanto, Blockchains sem permissões são públicas [6].

Numa Blockchain Pública, qualquer utilizador pode fazer download do ledger e ler todas as transações e dados.

Numa Blockchain Privada, apenas um grupo pré-definido de utilizadores pode fazer download do ledger.

Sistemas de Blockchain sem permissões permitem que qualquer utilizador faça parte da rede, desde que este esteja disposto a contribuir com poder computacional.

Estes sistemas são perfeitos para um cenário de sistemas distribuídos de larga escala, removendo um ponto de falha central. No entanto, este cenário também implica grandes custos, devido ao mecanismo de consenso, uma vez que muitos utilizadores não são fiáveis.

Mecanismos de Consenso

Os mecanismos de consenso permitem que os utilizadores concordem com o resultado das transações recebidas, de forma a assegurar que todos os utilizadores têm a mesma informação.

Estes mecanismos têm de garantir que as transações apenas são adicionadas se forem válidas e que não são registadas mais do que uma vez.

Existem vários mecanismos utilizados nas diferentes comunidades. Os principais são:

  • “Prova-de-Trabalho” [7], utiliza um puzzle criptográfico que requer poder computacional para resolver. Habitualmente, a complexidade do puzzle aumenta com o número de vezes que foi resolvido.
  • “Prova-de-Estaca” [8], utiliza uma combinação de aleatoriedade e “tamanho da estaca”. A estaca refere-se à moeda que o utilizador tem na sua carteira. Em blockchains sem moeda, a “prova-de-estaca” é substituida por alternativas como seja a votação, uma vez que os utilizadores, à partida, não possuem moeda.
  • Mecanismos de tolerância a falhas bizantinas [9] (conceito informático), habitualmente utilizado em Blockchains com permissões, existem vários e funcionam todos de forma diferente.

A “prova-de-trabalho” foi o mecanismo de consenso orginal, utilizado na Bitcoin. Mas com o crescimento do valor da moeda, houve um aumento significativo dos mineradores, o que levou a um aumento enorme do poder computacional necessário para produzir novos blocos e consequentemente, moeda.

Este aumento de poder computacional provou-se um desperdício de recursos e energia [10].

Moeda

Os sistemas de Blockchain emergiram com a Bitcoin, a primeira criptomoeda moderna, desenhada para prevenir as fraquezas dos seus predecessores, como o ataques de gasto duplo [11] e a centralização do ledger, prevenindo a escalabilidade [12].

Sendo uma criptomoeda, possui uma forma matemática de gerar moeda que é quase impossível de falsificar [13].

O sistema também especificou como é que a moeda deve ser distribuída entre os utilizadores da rede e as operações disponíveis entre eles.

Muitos sistemas de Blockchain apareceram depois da Bitcoin, sendo que a maior parte serve como aplicações e não como moeda de troca. Estes sistemas geralmente, são públicos e mantém uma moeda apenas para manuntenção e dar um prémio aos utilizadores que processam as transações, embora a existência desta não seja obrigatória (e.g. Hyperledger Fabric).

Contratos Inteligentes

Contratos inteligentes [14] são semelhantes aos contratos no mundo real, mas com caráter digital. Estes são protocolos utilizados para facilitar, verificar e obrigar um contrato.

Com estes, as Blockchains ganham capacidade de programação em que podem desenvolver aplicações decentralizadas.

Nota avançada: Os contratos inteligentes apenas são possíveis em sistemas de Blockchain onde os desenvolvedores forneceram uma linguagem de script que seja Turing-completa (e.g. Ethereum). Este não é o caso na Bitcoin.

Share :

Share on facebook
Share on twitter
Share on linkedin

Other Posts