Esse artigo é baseado na palestra de mesmo título criada por mim e pelo Gabriel Rhama para a Campus Party de Brasília1. Como o conteúdo é bem legal, achei que colocar ele por escrito seria também interessante. Pra facilitar, devo escrever em várias partes, uma pra cada um dos temas que abordamos na palestra.
Introdução
A primeira coisa que vem à mente quando falamos de criptomoedas2 é descentralização3. Criptomoedas são descentralizadas, Blockchain é consenso descentralizado. Mas o que isso quer dizer? Pra que serve isso? Porque isso é tão importante?
TCP/IP4
Vamos voltar um pouco no passado e falar sobre a internet. Na década de 1960 o governo americano financiou um projeto de pesquisa para a criação de uma rede de computadores. Não é a primeira rede, já existiam outras, abrangendo universidades, empresas, etc. Essa nova rede tinha um objetivo específico: resistir a ataques nucleares que tirassem do ar um ou mais dos computadores envolvidos. Até então, as redes eram estruturadas de forma centralizada (um computador central que se comunica com vários terminais) ou hierárquica (sem apenas um computador central, mas computadores ligados de forma em que alguns são concentradores das informações vindas dos outros). Redes com esses formatos são extremamente frágeis em caso de ataque. Atacando um único computador você interrompe toda a rede.
A Darpa5, agência de pesquisa do departamento de defesa dos EUA, junto com algumas universidades norte-americanas, desenvolveu então a ARPANET, e seu protocolo de comunicação, o TCP/IP. A ARPANET, que depois evoluiu e veio a se chamar Internet6, usava de um protocolo descentralizado, onde nenhum computador é mais importante que o outro e onde os caminhos entre um computador e outro se adaptavam de acordo com a disponibilidade dos mesmos. Com isso, se um computador saísse do ar por qualquer motivo, os outros continuavam se comunicando normalmente. Não havia um ponto central de falha. Tínhamos aí o primeiro uso da descentralização: Resistência a falhas e ataques.
O TCP/IP foi o primeiro passo em direção a descentralização, a descentralização dos canais de comunicação.
Bitcoin78
Em 2008, Satoshi Nakamoto9 deu mais um passo em direção a descentralização: O Bitcoin10. Bitcoin é uma moeda digital descentralizada que funciona sobre um protocolo criptográfico. Era logo depois da crise de 200811, onde os bancos haviam criado uma bolha econômica e depois recorreram aos governos dos seus países para evitarem a falência, enriquecendo com dinheiro público ao mesmo tempo em que transformavam em pó as economias da população. A ideia do Satoshi era dar ao cidadão comum uma alternativa ao dinheiro digital que não fosse controlada pelos bancos.
Não tenho certeza se o Satoshi tinha noção de quão revolucionário era o sistema que ele criou. Acredito que, pra ele, era só mais uma evolução dos sistemas de moedas criptográficas que tinham vindo antes, como o bit-gold12 ou o hashcash13. Inclusive, muitas das ideias que ele usou foram tiradas dessas precursoras.
Com o Bitcoin, o Satoshi se aproveita de mais uma vantagem da descentralização: Resistência à censura. Os bancos não podem mais fechar sua conta e recusar seu crédito, eles não tem mais controle sobre seu dinheiro.
O Bitcoin trouxe a descentralização do dinheiro!
Blockchain14
Esse é um caso bem especial. Para o Satoshi Nakamoto, só existia o Bitcoin15. Só depois de lançado o Bitcoin é que outros desenvolvedores e cientistas perceberam que dentro do Bitcoin existia mais uma inovação, que poderia ter vida própria: A Blockchain! A Blockchain, ou cadeia de blocos, é a estrutura de dados que dá suporte ao Bitcoin. É o banco de dados por trás do Bitcoin, e de todas as criptomoedas.
Não vou entrar aqui no debate filosófico se Blockchain existe sem o Bitcoin ou não. Alguns acham que sim, outros que não. Enfim, não é o meu debate e daria para uma nova série de artigos. Afirmo apenas que ela tem uso que não é simplesmente dar suporte ao Bitcoin, precisando do Bitcoin para existir ou não.1617
A Blockchain trouxe mais uma inovação: ela permite o registro de dados, não somente de dados financeiros, mas quaisquer dados, de forma descentralizada. Enquanto o Bitcoin usa a Blockchain apenas para o fim específico de realizar transações financeiras, outros sistemas podem se aproveitar dessa mesma infraestrutura para registrar todo tipo de dados.
É bom tomar cuidado com isso. Descentralização não é algo barato. Uma Blockchain vai ser replicada em TODOS os computadores que formam a rede descentralizada onde ela opera. Isso tem um custo. Esse custo é refletido nas famosas “taxas de transação” do Bitcoin, ou no “gas” da rede Ethereum. Então enquanto Blockchain é uma ferramenta fantástica, ela não é bala de prata. Ela é uma solução cara para problemas específicos.
A Blockchain é então outro degrau no nosso caminho rumo a descentralização: descentralização do armazenamento de informações.
Smart-Contracts1819
Apesar de já existirem no Bitcoin os smart-contracts “simples”, foi com a Ethereum e o Vitalik que surgiram os smart-contracts como entendemos hoje. Uma coisa importante que é preciso entender sobre smart-contracts é que, apesar do nome, eles não são contratos como nós entendemos. São trechos de código capazes de serem executados de forma descentralizada. Você escreve um trecho de código, registra ele na Blockchain, e depois ele pode ser executado por você ou por terceiros para processar as informações e registrá-las também na Blockchain. Um smart-contract vai ser executado simultaneamente em todos os nós participantes da sua rede de forma a validar se os dados gerados por ele podem ou não ser gravados na Blockchain. De novo, como toda descentralização, esse processo é caro. Por isso existem restrições quanto ao tamanho e funcionalidade do código a ser executado. E essa execução tem um preço a ser pago: o “gas”20, a ser pago aos mineradores em troca desse serviço.
Smart-contracts então não são contratos, são uma forma de estender as regras de consenso de uma Blockchain. Com um smart-contract o usuário cria novas validações, novas regras de consenso, novas funcionalidades em cima de uma Blockchain existente, sem precisar criar uma nova Blockchain. Isso permitiu coisas com os tokens ERC2021, e consequentemente as ICOs22. E permite que você estenda sua Blockchain para armazenar e processar virtualmente qualquer tipo de dado.
Smart-contracts são a descentralização do processamento de dados.
Decred23
Em 2013, Tacotime, criador da Monero24, propôs uma moeda chamada Memcoin2 (MC2), usando um sistema híbrido de Proof-of-Work (PoW) e Proof-of-Stake (PoS)2526. Logo em seguida, e de forma independente, o Charlie Lee27, da Litecoin propôs um sistema similar que ele chamou de Proof-of-Activity (PoA)2829. As ideias por trás da MC2 acabaram indo parar nos ouvidos da Company 0, empresa responsável pelo btcsuite, e a equipe então usou essas ideias em uma nova moeda, a Decred30. O foco principal da Decred seria prover governança descentralizada para evitar os problemas de governança constantes na Criptoesfera que geram tantos forks, novas moedas e brigas políticas.
A Decred dispõe de um sistema de votação onchain, um sistema de registro de documentos (Dcrtime) e de apresentação de propostas para a moeda (Politeia).
Decred é a descentralização da governança.
Resumo da primeira parte e conclusão
Nesse primeiro artigo vimos a evolução das tecnologias e criptomoedas em direção à descentralização:
- TCP/IP é a descentralização dos canais de comunicação.
- Bitcoin é a descentralização do dinheiro
- A Blockchain é a descentralização do armazenamento de informações.
- Smart-contracts são a descentralização do processamento de dados.
- Decred é a descentralização da governança.
Em especial vimos a importância da descentralização em:
- Resistência a falhas
- Resistência a ataques
- Resistência a censura.
Descentralização é uma ferramenta de resiliência para sistemas de informação. Com a descentralização, busca-se garantir que nenhum tipo de falha, ataque, ou entidade em posição de autoridade interrompa, censure ou interfira na operação dos sistemas.
Notas e referências
- Link para a palestra na Campus Party Brasília 2
- Criptomoeda na wikipedia em português @ wikipedia.org (pt)
- Descentralização na wikipedia em inglês @ wikipedia.org (en)
- Artigo sobre TCP/IP na wikipédia em português @ wikipedia.org (pt)
- DARPA na wikipédia em inglês @ wikipedia.org (en)
- Internet na wikipédia em português @ wikipedia.org (pt)
- Paper original do bitcoin
- Paper Original do Bitcoin em Português
- Satoshi Nakamoto na wikipédia em português @ wikipedia.org (pt)
- Bitcoin na wikipédia em português @ wikipedia.org (pt)
- Crise de 2008 na wikipédia em português @ wikipedia.org (pt)
- Artigo sobre Bit-Gold, do Nick Szabo
- Hashcash na wikipédia em inglês @ wikipedia.org (en)
- Blockchain na wikipédia em português @ wikipedia.org (pt)
- O termo Blockchain não aparece no artigo original do Bitcoin, e só veio a ser usado mais tarde, pelo Hal Finney numa lista de discussão: Link para o email do Hal Finney
- Blockchain without bitcoin, no Medium
- Can Blockchain exists without bitcoin? no hacked.com
- Seção sobre “Scripting” do White Paper da Ethereum
- Smart-contracts na wikipédia em inglês @ wikipedia.org (en)
- What is Gas? No, Not that Gas… no Medium
- ERC20 na wikipédia em inglês @ wikipedia.org (en)
- ICO na wikipédia em inglês @ wikipedia.org (en)
- Decred.org, Site oficial da moeda
- A Monero está fora do nosos escopo, mas como citei, aqui vai um link para o site oficial da moeda: https://getmonero.org. O nome do Tacotime com link para seu perfil no Reddit pode ser visto na pagina de “Team”, aba de Special Thanks.
- Link para o post propondo a Memcoin2 no bitcointalk
- White paper da Memcoin2
- Perfil do Charlie Lee no Twitter
- No final foi o nome de Proof-of-Activity que “pegou”, apesar dele não ser influencia direta na criação da Decred
- Paper original do Proof-of-Activity, co-autorado pelo Charlie Lee
- Decred Where did it all begin ? no The Decred Digest