O conteúdo aqui exposto resume o conhecimento existente sobre a rede Blockchain e outras tecnologias distribuídas enquanto espinha dorsal da Web3, e contextualiza as implicações socioeconómicas das aplicações Web3 desde Contratos Inteligentes, Tokens, DAOs até aos conceitos de dinheiro, economia, governança e finanças descentralizadas (DeFi).
Como funciona a Blockchain
Contratos Inteligentes
Blockchain: Porque é realmente importante?
Blockchain e Contratos Inteligentes
O que são e para que servem. Descubra como a tecnologia Blockchain está a reinventar as relações entre os agentes económicos
O white paper da Bitcoin não apareceu do nada e as redes P2P não são um fenómeno novo. Têm as suas raízes na história inicial do computador e da Internet, assentando em décadas de pesquisa de redes de computadores, criptografia e teoria dos jogos.
Nessas redes de computadores de primeira geração, o foco principal era conectar uma rede pública de computadores entre si, e resolver a questão de endereçar computadores e transmitir dados. A arquitetura de rede ainda era baseada na lógica cliente-servidor, e a comunicação segura nunca foi um foco principal nos primeiros tempos da Internet, mas certos investigadores ficaram intrigados exatamente por esta questão. A pesquisa criptográfica de Ralph Merkle no início da década de 70 lançou as bases da comunicação segura através de redes P2P. O seu trabalho conceptualizou como resolver a “comunicação segura sobre canais inseguros” em cima de uma rede de computadores, e lançou as bases para a criptografia moderna de chaves públicas. Na sua dissertação, descreveu ainda um método de construção de funções de hash criptográficas resistentes à colisão. Ele também registou uma patente para um tipo especial de tabela de hash chamada Merkle Tree que permitiu uma verificação mais eficiente e segura do conteúdo de grandes estruturas de dados.
Em 1976, Whitfield Diffie e Martin Hellman construíram em cima de algumas das suas ideias e criaram um mecanismo para a troca segura de chaves criptográficas através de uma rede pública. Foi um dos primeiros exemplos implementados de troca de chaves públicas, e também introduziu o conceito de assinaturas digitais. Antes da invenção dos métodos de chave pública, as chaves criptográficas tinham que ser transmitidas fisicamente, pelo que a troca segura de chaves digitais por redes públicas terá sido um trabalho pioneiro, sem o qual a Bitcoin e as tecnologias subsequentes não funcionariam. Em 1978, Ron Rivest, Adi Shamir e Leonard Adleman encontraram uma maneira de criar uma função criptográfica unidirecional que era difícil de ser invertida. O seu algoritmo – agora conhecido como RSA – induziu a era da criptografia assimétrica, que então evoluiu para o uso de curvas elípticas na criptografia – sugeridas de forma independente por Neal Koblitz e Victor S. Miller em 1985, também uma tecnologia chave em Bitcoin.
Em redes públicas de computadores, a estrutura do sistema – topologia da rede, latência da rede e número de computadores – não é conhecida antecipadamente. A rede de computadores pode, portanto, consistir em computadores e links de rede desconhecidos e não confiáveis. O tamanho e a composição da rede também podem mudar a qualquer momento durante a execução de um programa distribuído. A capacidade de fornecer e manter um nível de serviço aceitável diante de processos falíveis é, portanto, essencial para a resiliência de uma rede. O foco da época era a transmissão de dados numa rede pública, o que já era um problema difícil de resolver. Nem o TCP nem o IP resolveram a questão de onde armazenar e como gerir os dados. Por razões económicas, o armazenamento e a gestão centralizada de dados tornou-se um problema comum. O problema com as redes cliente-servidor é que os administradores de sistemas, ou instituições que controlam os servidores, têm controlo exclusivo sobre os dados, o que torna esses sistemas propensos à censura, corrupção e ataque.
Entretanto, com o crescimento dos computadores pessoais e a introdução do Internet Protocol Suite, a Internet tornou-se mais difundida. Apesar disso, a usabilidade ainda era um problema. Tinha-se que navegar na Internet usando linhas de comando, também conhecidas como linguagem de computador. Tim Berners-Lee resolveu este problema com a sua visão para a World Wide Web. Ele introduziu um padrão para criar sites visuais com uma linguagem de markup relativamente simples, e navegar na Web com links, que apontam para outros sites com um simples clique. Do ponto de vista da publicação, a WWW permitiu que todos contribuíssem facilmente para a informação disponível na Internet. No entanto, os dados ainda eram armazenados e geridos por detrás do jardim murado dos servidores.
Em 1982, David Chaum introduziu o conceito de Blind Signatures (assinaturas cegas), que garantiu a privacidade do remetente da informação. Ele foi conceptualizado para uso em sistemas de votação e sistemas digitais de dinheiro. Chaum introduziu a ideia do “Ecash” como um sistema de dinheiro eletrónico criptográfico anónimo ou sistema de dinheiro eletrónico, que foi comercializado através de sua empresa “Digicash” e utilizado como um sistema de micropagamentos num banco dos EUA de 1995 a 1998. O sistema foi dissolvido em 1998, possivelmente porque ele estava à frente de seu tempo, já que as aplicações de comércio eletrónico ainda não eram tão amplamente difundidas.
Em 1991, Stuart Haber e W. Scott Stornetta introduziram um sistema em que os carimbos temporais dos documentos não podiam ser adulterados, introduzindo os primeiros trabalhos académicos sobre uma cadeia de blocos criptografados. O seu objetivo era certificar quando um documento era criado ou modificado “num mundo em que todos os documentos de texto, áudio, imagens e vídeo estão em formato digital e em meios facilmente modificáveis”. Nas suas propostas iniciais, eles usaram serviços de timestamping (carimbos de tempo) centralizados. Eles tentaram então distribuir confiança, exigindo que vários utilizadores – que foram selecionados através de geradores de números pseudoaleatórios – imprimissem o hash, ao invés de uma instituição centralizada. Um ano depois, em 1992, Bayer, Haber e Stornetta escreveram outro artigo onde incluíam Merkle Trees no mecanismo. Isso melhorou a eficiência do sistema ao permitir que vários certificados de documentos pudessem ser coletados num bloco.
Em 1997, Adam Back introduziu o “Hashcash“, a primeira função de Proof-of-Work, para limitar o spam de e-mail e os ataques de negação de serviço, forçando os computadores a investir com trabalho computacional. A ideia original foi proposta por Cynthia Dwork e Moni Naor em seu trabalho de 1992, “Pricing via Processing or Combatting Junk Mail“.
Em 2004, o conceito introduzido pela Hashcash foi também utilizado como mecanismo de mineração em “B-money”, uma proposta da Wei Dai para um “sistema de dinheiro eletrónico anónimo e distribuído”. Foi proposto na “cypherpunk mailing list“, que representava um grupo de ativistas que defendiam o uso de criptografia forte e tecnologias que melhoravam a privacidade através da Internet. Muitos dos indivíduos acima mencionados que contribuíram com tecnologias chave que mais tarde foram usadas em Bitcoin eram “cypherpunks” ativos.
Em 1998, Nick Szabo projetou um mecanismo para uma moeda digital descentralizada – “BitGold” – onde ele implementou muitas das suas ideias anteriores sobre contratos inteligentes e adicionou um algoritmo de consenso baseado em PoW onde o poder computacional seria gasto para resolver enigmas criptográficos. BitGold nunca foi implementado, possivelmente porque ele não conseguia resolver o problema do gasto duplo de uma forma totalmente descentralizada e resistente a ataques sybil. Szabo foi alvo de especulação por muitos como sendo Satoshi Nakamoto, o criador anónimo da Bitcoin, mas tal é um rumor que ele sempre negou.
Em 1999, a “Napster“, uma aplicação de partilha de música, introduziu o conceito de redes P2P que mudou a forma como os dados eram armazenados e distribuídos através da Internet. A Napster criou uma rede virtual para aplicações descentralizadas de compartilhamento de ficheiros, que era independente da rede física da Internet, removendo o “ponto único de falha” dos sistemas de dados centralizados. No entanto, Napster dependia do funcionamento de servidores de indexação central, sendo assim suscetível ao encerramento, após reclamações de violação de direitos autorais e uma disputa legal.
Uma nova família de protocolos de compartilhamento de ficheiros liderada pela Gnutella em 2000 eliminou esses pontos centrais de falha. Ela permitiu que os utilizadores se encontrassem e se conectassem remotamente, buscando cada nó da rede e, portanto, era mais descentralizada e resistente à censura. Pese embora que Gnutella tenha resolvido o problema de descentralização, o problema de privacidade, porém não ficou resolvido. As redes de compartilhamento de ficheiros de terceira geração como BitTorrent utilizavam tabelas de hash distribuídas para armazenar locais de recursos em toda a rede, de forma criptografada e segura. Tabelas de hash distribuídas não apenas substituíram servidores de indexação, mas também garantiram o anonimato de seus atores de rede e todos os dados sendo compartilhados pela rede. Estas tabelas de hash distribuídas são agora também usadas por redes Blockchain e outros protocolos Web3 como IPFS e Ethereum. Embora as redes P2P, desde o surgimento do Napster, tenham resolvido o problema da distribuição eficiente de dados dentro de uma rede, elas não resolveram a validação ou verificação descentralizada dos dados. Também não resolveram o problema do free-rider, o facto de que um grande número de utilizadores usaria recursos compartilhados por outros utilizadores, sem contribuir com os próprios ficheiros. Os utilizadores não tinham um incentivo económico de curto prazo para carregar ficheiros e ao invés disso consumiam recursos enquanto degradavam o seu próprio desempenho.
Em 2004, Hal Finney introduziu um sistema PoW reutilizável (RPoW), um conceito onde o valor de um token é garantido pelo valor dos recursos do mundo real necessários para “cunhar” um token PoW. O facto de Finney ter recebido a primeira transação Bitcoin de Satoshi Nakamoto em 2009, e de aparentemente ter vivido na mesma cidade que uma pessoa chamada “Dorian Satoshi Nakamoto“, levou à especulação de que ele poderia ter sido o próprio Satoshi, um rumor que ele sempre negou.
Redes P2P modernas, como a Napster, sofreram com a falta de um mecanismo de incentivo para as contribuições das redes, e as ideias iniciais do e-cash não foram capazes de se defender contra os ataques sybil. O white paper da Bitcoin, publicado em 2008 sob o pseudónimo de Satoshi Nakamoto, resolveu essas questões propondo um mecanismo de incentivo resistente a ataques sybil para validação coletiva de dados. A Proof-of-Work resolveu o problema do free-rider das redes P2P anteriores, introduzindo incentivos tokenizados para motivar todos os atores a contribuir para o sistema de uma forma verdadeira. A Bitcoin foi proposta na sequência da crise financeira de 2008 e do colapso de grandes bancos como o Lehman Brothers. O objetivo era fornecer um sistema de dinheiro eletrónico P2P sem bancos. Enquanto as primeiras especificações foram implementadas por Satoshi, um grupo de indivíduos dedicados assumiu gradualmente a implementação de um maior desenvolvimento do código, que foi finalizado e implementado no início de 2009. Curiosamente, o white paper da Bitcoin mencionava apenas uma “cadeia de blocos”. O termo “blockchain” tornou-se generalizado anos depois, quando as pessoas começaram a replicar o código fonte da Bitcoin para desenvolver protocolos similares baseados em protocolos Blockchain.
Embora a Blockchain Bitcoin nunca tenha sido projetada com o compartilhamento de ficheiros em mente, ela acabou por inspirar uma nova classe de frameworks de armazenamento P2P, um bloco de construção crucial para a Web3. Tais redes de armazenamento descentralizadas podem agora usar o poder dos tokens para construir sobre o legado de protocolos anteriores de compartilhamento de dados, usando uma Blockchain como uma camada de estado universal. A Bitcoin também estimulou muitas pesquisas sobre mecanismos de consenso resistentes a ataques sybil. A resistência a ataques sybil, no entanto, também depende da resiliência das suposições feitas sobre como os atores da rede reagirão aos incentivos económicos. A forma como as pessoas reagem aos incentivos há muito que tem sido um campo de estudo em economia. Em 2007, Hurwicz, Maskin e Myerson ganharam o Prémio Nobel de Economia pelas suas pesquisas sobre Design de Mecanismos, um campo de pesquisa emergente.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Se assumirmos que a WWW revolucionou a informação e que a Web2 revolucionou as interações, a Web3 tem o potencial de revolucionar os acordos e as trocas de valor. A Web3 altera as estruturas de dados na infraestrutura da Internet, introduzindo uma camada de Estado universal, muitas vezes, incentivando os atores de rede com um token. A espinha dorsal desta Web3 é representada por uma série de redes Blockchain ou outras ledgers distribuídas similares.
A Internet que temos hoje anda à deriva. Não controlamos os nossos dados, nem temos uma camada nativa de compensação de valores. Trinta anos após a adoção em massa da Internet, as nossas arquiteturas de dados ainda são baseadas no conceito do computador autónomo, onde os dados são armazenados e geridos centralmente num servidor e enviados ou recuperados por um cliente. Cada vez que interagimos através da Internet, cópias dos nossos dados são enviados para o servidor de um fornecedor de serviços e de cada vez que isso acontece, perdemos o controlo sobre os nossos dados. Como resultado e mesmo que vivamos num mundo cada vez mais conectado, os nossos dados são armazenados essencialmente de forma centralizada: em servidores locais ou remotos, nos nossos computadores pessoais, dispositivos móveis, flash drives e cada vez mais também nos nossos relógios, carros, TVs ou frigoríficos. Isto levanta questões de confiança. Posso confiar nas pessoas e instituições que armazenam e gerem os meus dados contra qualquer forma de corrupção, interna ou externa, de propósito ou por acidente? Estruturas centralizadas de dados não só levantam questões de segurança, privacidade e controlo de dados pessoais, mas também produzem muitas ineficiências ao longo da cadeia de fornecimento de bens e serviços.
As raízes históricas para estas questões remetem para a altura em que o computador precedeu a Internet. Nos primeiros dias dos computadores pessoais, uma pessoa não poderia enviar ficheiros de um computador para o outro. Seria preciso gravar o ficheiro numa disquete, dirigirmo-nos até à pessoa que precisava do ficheiro e copiar o ficheiro para o seu computador para que esta pudesse usá-lo. Se essa pessoa estivesse noutro país, seria preciso ir aos correios e enviar a disquete. O surgimento do Protocolo Internet (IP) pôs um fim a isso, conectando todos os computadores autónomos com um protocolo de transmissão de dados, o que tornou a transferência de dados mais rápida e cortou os custos de transação do intercâmbio de informações. No entanto, a Internet que usamos hoje ainda é predominantemente construída sobre a ideia do computador independente, onde a maioria dos dados são armazenados e geridos centralmente nos servidores de instituições (ditas) confiáveis. Os dados nesses servidores são protegidos por firewalls e os administradores de sistema são necessários para gerir a segurança dos dados armazenados nos servidores.
O surgimento da WWW no início dos anos 90 aumentou a usabilidade da Internet com sites visualmente atraentes e fáceis de navegar. Dez anos depois, a Internet tornou-se mais madura e programável. Assistimos à ascensão da chamada Web2, que nos trouxe redes sociais, comércio eletrónico e plataformas de conhecimento. A Web2 revolucionou as interações sociais, aproximando produtores e consumidores de informação, bens e serviços. A Web2 permitiu-nos desfrutar de interações peer-to-peer (P2P) a uma escala global, mas sempre com um intermediário: uma plataforma atuando como um intermediário confiável entre duas pessoas que não se conhecem ou confiam uma na outra. Apesar de essas plataformas de Internet terem feito um trabalho fantástico de criar uma economia P2P, elas também ditam todas as regras e controlam os dados dos seus utilizadores.
Neste contexto, as redes Blockchain parecem ser uma força motriz da próxima geração de Internet, a que alguns se referem como a Web3. Reinventam a forma como os dados são armazenados e geridos através da Internet, fornecendo um conjunto único de dados, uma camada universal de Estados – que é gerido coletivamente por todos os nós da rede. Esta camada de Estados única, é capaz de fornecer pela primeira vez à Internet uma camada de consenso quanto ao valor nativo de um ativo na ausência de intermediários. Ela permite transações verdadeiramente P2P e tudo começou com o surgimento da Bitcoin.
Enquanto a Web2 era uma revolução de front-end, a Web3 é uma revolução de back-end. A Web3 reinventa como a Internet é conectada na infraestrutura, combinando as funções de sistema da Internet com as funções de sistema dos computadores. No entanto, nada vai mudar no front-end da Internet para o utilizador comum. A Web3 representa um conjunto de protocolos, com os livros-razão distribuídos como sua espinha dorsal. A informação é gerida de forma colaborativa por uma rede P2P de computadores. As regras de gestão são formalizadas no protocolo e garantidas por maioria de consenso de todos os participantes da rede, que são incentivados com um token de rede em prol de suas atividades. O protocolo formaliza as regras de governança da rede e garante que as pessoas que não se conhecem ou confiam umas nas outras alcancem e estabeleçam acordos através da Web. O ato de tentar manipular dados num servidor centralizado assemelha-se a invadir uma casa, onde a segurança é fornecida por uma vedação e um sistema de alarme; a Web3 é projetada de tal maneira que seria necessário invadir várias casas ao redor do planeta simultaneamente, cada uma com sua própria vedação e sistema de alarme. Isto pode ser possível, pelo menos em teoria, mas proibitivamente caro.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
A Internet que usamos está “sem Estados”. Não tem um mecanismo nativo para transferir o que a ciência da computação se refere como “Estados”. Estados refere-se à informação, ou o status de “Quem é quem?”; “Quem detém o quê?” e “Quem tem o direito de fazer o quê?” numa rede. A capacidade de transferir valor facilmente e P2P é essencial para mercados eficientes, e os “Estados” são uma propriedade chave para gerir e transferir valores. Na Web3, os valores são representados por tokens criptograficamente seguros.
Se não se puder manter os Estados na Internet, não se pode transferir valor sem a existência de instituições centralizadas que atuem como entidades de compensação. Embora a Internet de hoje tenha acelerado a transferência de informação por ordens de magnitude como nunca foi possível antes, ainda precisamos de instituições confiáveis, como fornecedores de plataforma de Internet para mediar as nossas ações como uma solução para esta falta de Estados. Protocolos apátridas como a Web atual só gerem a transferência de informação, onde o remetente ou recetor dessa informação não tem conhecimento do Estado do outro. Esta falta de Estados é baseada na simplicidade dos protocolos em que a Web é construída, tais TCP/IP, SMTP ou HTTP. Esta família de protocolos regula a transmissão de dados, mas não como os dados são armazenados. Os dados podem ser armazenados centralmente ou de forma descentralizada. Por muitas razões, o armazenamento centralizado de dados tornou-se a forma principal de armazenamento e gestão de dados.
A introdução de cookies de sessão e prestadores de serviços centralizados ofereceu soluções de trabalho para esta Web sem Estados. Os cookies de sessão foram inventados para que as aplicações baseadas na web pudessem preservar os Estados nos dispositivos locais. Antes dos cookies de sessão, nos primeiros dias da WWW, não tínhamos histórico de navegação, nenhum site favorito salvo e nenhuma ferramenta de “auto-complete”, o que significava que tínhamos de voltar a apresentar as nossas informações de utilizador cada vez que voltávamos a usar um site. Apesar dos cookies de sessão oferecerem uma melhor usabilidade, estes cookies são criados e controlados por um fornecedor de serviços, como Google, Amazon, Facebook, o seu banco, a sua Universidade, etc., cujo papel é fornecer e gerir os Estados do seu utilizador.
As plataformas Web2 introduziram muitos serviços benéficos e criaram um valor social e económico considerável ao longo dos anos. No entanto, a riqueza foi acumulada principalmente pelas empresas que oferecem os serviços, e menos pelo público em geral que contribui com conteúdo e valor para esses serviços. Em vez de descentralizar o mundo, as plataformas Web2 contribuíram para uma recentralização da tomada de decisões económicas, de decisões de Investigação & Desenvolvimento, e, posteriormente, para uma enorme concentração de poder em torno desses fornecedores de plataformas. Além disso, uma vez que o início da Internet foi criado em torno da ideia de informação livre, os clientes muitas vezes não estavam dispostos a pagar por conteúdo on-line com uma taxa de assinatura recorrente e, na maioria dos casos, os micropagamentos ainda não eram viáveis. Portanto, muitas dessas plataformas Web2 precisavam encontrar formas alternativas de lucrar com os serviços gratuitos que forneciam e essa alternativa era a publicidade. O que se seguiu foi a publicidade orientada com base no comportamento do utilizador e a mercantilização de dados privados. Os modelos de negócio desenvolveram-se, portanto, em torno de publicidade orientada que se baseia nos conjuntos de dados recolhidos, que fornecem “Estados” para estas plataformas. Como resultado disso, os utilizadores estão a pagar por serviços através dos seus dados privados.
A rede Bitcoin introduziu um mecanismo para que cada nó da rede possa enviar e receber tokens, e em que os Estados dos tokens ficam permanentemente gravados digitalmente num formato nativo. O protocolo de consenso da rede Bitcoin é projetado de forma a que a rede possa coletivamente lembrar eventos anteriores ou interações de utilizadores, resolvendo o problema do “gasto duplo”, fornecendo uma única fonte de referência para quem recebeu o quê e quando. O protocolo Bitcoin pode, portanto, ser visto como uma mudança de paradigma, abrindo caminho para uma Web mais descentralizada. O White Paper da Bitcoin de 2008 iniciou uma nova forma de infraestrutura pública, onde os Estados de todos os tokens bitcoin são mantidos coletivamente.
As redes Blockchain, tal como a rede Bitcoin, são apenas a espinha dorsal e o ponto de partida, mas não o único bloco de construção nesta nova Web descentralizada. A arquitetura Web3 alavanca os Estados universais mantidos coletivamente para a computação descentralizada. Aplicações descentralizadas podem gerir alguns ou todos os seus conteúdos e lógica de negócio através de uma rede Blockchain ou outra ledger de registos distribuídos. Mas outros protocolos também são necessários. Muitos desenvolvedores começaram a construir redes Blockchain alternativas, bem como protocolos complementares para a Web3.
Outros Protocolos Web3
Blockchain não é a única tecnologia necessária para descentralizar a Web. Uma infinidade de outros protocolos é necessária para criar uma aplicação descentralizada. No entanto, o termo “blockchain” parece ser usado como um sinónimo para muitos protocolos Web3[1] ou a própria Web3, pelo menos para alguns jornalistas e público em geral. Além da computação, precisamos de armazenamento de ficheiros, mensagens, identidades, acesso a dados externos (oráculos) e muitos outros serviços descentralizados. Uma rede Blockchain é simplesmente o processador para aplicações descentralizadas que operam no topo da Web3. Ela funciona como uma máquina de contabilidade distribuída registando todas as transações de tokens e executando computação.
As redes Blockchain não são ideais para armazenar dados, por duas razões principais: (i) as redes públicas de Blockchain são muito lentas e muito caras para armazenar grandes conjuntos de dados; e (ii) armazenar dados de texto simples em redes Blockchain não permite a chamada “privacy by design”[2]. Para criar um YouTube descentralizado, por exemplo, é necessário o armazenamento descentralizado de ficheiros para gerir os ficheiros de vídeo. Uma panóplia de soluções de redes de armazenamento descentralizadas têm vindo a surgir, tais como “IPFS”, “Filecoin”, “Swarm”, “Storj”, ou “Sia”. Redes de armazenamento descentralizadas incentivam os nós da rede a compartilhar o espaço de armazenamento, com um token nativo, transformando o armazenamento em nuvem em mercados algorítmicos. Elas diferem nos seus níveis de descentralização, privacidade e na sua escolha de mecanismos de incentivo. Algumas podem mesmo nem ter uma camada de incentivo, como a IPFS, por exemplo. Protocolos como o “Golem”, por outro lado, fornecem poder de renderização descentralizado, recompensando as contribuições na rede com o seu token de protocolo nativo. A comunidade de desenvolvedores Web3 tem evoluído ao longo dos últimos anos. Diferentes equipes estão a trabalhar em vários componentes desta Web emergente; no entanto, muitos desses protocolos encontram-se ainda em desenvolvimento. Aplicações Web3 tipicamente estabelecem comunicação com pares que são desconhecidos à partida e têm qualidade variável em termos de velocidade e confiabilidade. Novas bibliotecas e APIs (Application Programming Interface) são necessárias para navegar por entre essas complexidades. Não está claro quando irá ser alcançada massa crítica para possivelmente substituir as atuais aplicações Web em maior escala, ou quais os padrões que prevalecerão em última instância. A transição da “web cliente-servidor” para a “web descentralizada” será, portanto, gradual em vez de radical. Parece mais estar a passar de centralizado para parcialmente descentralizado e por fim totalmente descentralizado.
Uma das questões de pesquisa aplicada mais prementes ao desenvolver tecnologias complementares para a Web3 é a questão de como recompensar os participantes da rede com um token, para que a rede permaneça resistente a ataques. Exemplos disso seriam mecanismos de incentivo para soluções descentralizadas de armazenamento de ficheiros, computação descentralizada, análise de dados ou reputação. Muitos mecanismos de consenso diferentes estão a ser experimentados atualmente, como: “prova de recuperabilidade”, “prova de armazenamento” e “prova de espaço-tempo”. Soluções totalmente descentralizadas, tais como IPFS e Swarm, ainda não se encontram funcionalmente implementadas.
Pese embora as arquiteturas descentralizadas serem mais resistentes do que seus antecessores centralizados (Web2), elas também são mais lentas. Velocidade, desempenho e usabilidade são pontos de estrangulamento na Web3 que muito provavelmente serão resolvidos ao longo do tempo, logo que os componentes principais da Web3 estejam em pleno funcionamento. É provável que o futuro da Internet seja mais descentralizado, mas isso não significa que nos vamos livrar completamente dos sistemas centralizados. Os sistemas centralizados têm vantagens e provavelmente prevalecerão, pelo menos para casos de uso específicos.
[1] Note que termos semelhantes, como a Web 3.0, são usados noutros domínios, fazendo muitas das vezes referência a uma Web mais inteligente ou Web Semântica, incluindo “machine learning” e Inteligência Artificial, focando na convergência de várias tecnologias-chave emergentes. No contexto da Blockchain, o termo é usado por muitos para se referir a uma Internet mais descentralizada e é geralmente referido como Web3 (e não, Web 3.0).
[2] “Privacy by Design” refere-se a “data protection through technology design.” (https://gdpr-info.eu/issues/privacy-by-design)
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Ao contrário de aplicações centralizadas que funcionam num único computador, aplicações descentralizadas funcionam numa rede P2P de computadores. Elas existem desde o advento das redes P2P e não precisam necessariamente de correr em cima de uma rede Blockchain. “Tor”, “BitTorrent”, “Popcorn Time” e “BitMessage,” são exemplos de aplicações descentralizadas que são executados numa rede P2P e não numa rede Blockchain, que é um tipo específico de rede P2.
Aplicações tradicionais usam HTML, CSS, ou javascript para renderizar uma página web ou uma aplicação móvel. O front-end de uma página web ou uma aplicação móvel interage com uma ou mais bases de dados centralizadas. Quando se usa um serviço como Twitter, Facebook, Amazon, ou Airbnb, por exemplo, a página web vai chamar uma API para processar os seus dados pessoais e outras informações necessárias armazenadas em seus servidores, para exibi-los no front-end. O ID do utilizador e as respetivas senhas são usados para identificação e autenticação, com baixos níveis de segurança, uma vez que os dados personalizados são armazenados no servidor do fornecedor de serviços (ISP).
As aplicações descentralizadas não se aparentam diferentes dos sites atuais ou aplicativos móveis. O front-end representa o que se vê e o back-end de uma aplicação descentralizada representa toda a lógica de negócio. Uma aplicação descentralizada é um cliente Blockchain chamado “wallet” (carteira). Ela usa as mesmas tecnologias para renderizar uma página web ou uma aplicação móvel (como HTML, CSS, Javascript), mas a comunicação é estabelecida através duma rede Blockchain em vez de um servidor e, no caso de redes de contratos inteligentes, através dos chamados “smart contracts”. A carteira também gere o par de chaves público-privadas e o endereço Blockchain, para fornecer uma identidade única aos nós da rede para que eles possam interagir de forma segura com a rede. Os contratos inteligentes representam a lógica de negócio principal da aplicação descentralizada e processa os “feeds” de dados de dentro e fora da rede para gerir os Estados de todos os atores da rede. De forma simples, um nó de rede é o ponto onde uma mensagem pode ser criada, recebida ou transmitida. Se um determinado nó for um “full node” (nó completo), ele também irá gerir os Estados completos de toda a Blockchain desde a sua génese. Neste caso, o nó executa as funções de um cliente HTTP e um servidor, sendo todos os dados armazenados no lado do cliente. Os dados front-end, incluindo ficheiros de áudio ou vídeo e outros documentos, poderiam ser coletivamente armazenados e gerenciados por redes de armazenamento descentralizadas como “Swarm” ou “IPFS”.” No momento de redação deste livro, esses dados ainda são, na maioria das vezes, armazenados e geridos por servidores.
Para o utilizador comum, as aplicações descentralizadas precisam ser vistas e sentidas da mesma forma que as aplicações existentes, o que significa que elas precisam ser tão fáceis e intuitivas de usar para serem adotadas em maior escala. Atualmente, software de carteiras e gestão de chaves ainda são difíceis de serem usadas e percebidas por parte do utilizador comum, o que pode ser um fator de estrangulamento para a adoção em massa de aplicações Web3. Além disso, a adoção em larga escala só pode acontecer se a desconfiança em relação às soluções centralizadas for suficientemente elevada para justificar o “trade-off” de usabilidade.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
O conceito de “blocos em cadeia” foi introduzido no “White Paper” da Bitcoin em outubro de 2008, com o objetivo de criar “dinheiro P2P sem bancos”. O artigo, publicado sob o pseudónimo de Satoshi Nakamoto, propôs um sistema onde todos os computadores na rede possuem uma cópia idêntica de um livro-razão de transações, que atua como um único ponto de referência para todos na rede. Todos os nós da rede atualizam e gerem coletivamente esta ledger, que representa um conjunto de dados universal em que todos os atores podem confiar, mesmo que eles possam não se conhecer ou confiar uns nos outros. As pessoas e instituições que não conhecem ou não confiam uns nos outros, que residam em países diferentes, que estejam sujeitas a diferentes jurisdições, e que não têm acordos juridicamente vinculativos uns com os outros, podem agora interagir através da Internet, sem a necessidade de terceiros confiáveis, como bancos, plataformas de Internet, ou outros tipos de instituições de compensação.
O Problema do Gasto Duplo: esta nova forma de gestão de dados distribuídos veio resolver o “problema do gasto duplo”. Da forma como a Internet é concebida hoje, pode-se gastar o mesmo valor emitido como um ficheiro digital várias vezes, porque a informação digital pode ser copiada e cópias do mesmo ficheiro digital podem ser enviadas de um computador para vários outros computadores ao mesmo tempo. Antes do surgimento da Bitcoin, ideias em torno de redes P2P criptograficamente seguras tinham sido discutidas em diferentes etapas evolutivas, principalmente em artigos teóricos, desde a década de 1980. No entanto, nunca houve uma implementação prática de uma rede P2P que conseguisse evitar o problema do gasto duplo, sem a necessidade de intermediários confiáveis, por exemplo, os bancos, que garantissem a troca de valores. O protocolo Bitcoin introduziu um mecanismo de tornar absurdamente caro copiar valores digitais.
Cadeia de Blocos: numa rede Blockchain, as transações são registadas em lotes de dados chamados “blocos”, que por sua vez são sujeitos a um processo criptográfico chamado “hash”. Este hash criptográfico cria uma impressão digital do bloco. Cada bloco inclui o hash do bloco anterior, ligando assim os blocos entre si numa cadeia de blocos. Este processo garante a integridade e imutabilidade histórica de todos os blocos até ao primeiro bloco criado, também referido como o bloco génesis. Se os dados num bloco são alterados, o valor de hash do bloco e todos os blocos subsequentes mudará, e cada nó na rede saberá que os dados foram adulterados. Esta crescente lista de blocos acorrentados entre si é também referida como ledger ou livro-razão.
Ledger: é um ficheiro que mantém uma lista incremental de registos de transações, em blocos “acorrentados” criptograficamente e protegidos de adulteração e revisão. Se tentativas de manipulação fossem feitas, o valor do hash da ledger manipulada não coincidiria com o valor do hash gravado nas cópias da ledger em todos os outros nós. O valor do hash de um bloco serve, portanto, como uma proteção que pode ser usada para verificar a autenticidade de uma transação registada numa ledger.
Ledger Distribuída: uma cópia da ledger é armazenada em múltiplos nós de uma rede P2P de segurança criptográfica. A fim de alterar os registos em todas as cópias da ledger presentes na rede, os nós de rede precisam chegar a um acordo mútuo sobre essa alteração. Uma ledger distribuída é um livro de transações partilhado, de confiança e público, que todos podem inspecionar/auditar, mas que nenhum utilizador controla. Cada nó independente tem a última versão da ledger, que contém todas as transações alguma vez jáfeitas, e pode verificar as transações. Este processo é referido como “consenso”, e torna-se particularmente útil em configurações interorganizacionais onde nenhuma instituição quer confiar a outra instituição a gestão dos seus dados.
Token: o termo “token” é, em termos simples, uma metáfora. Ao contrário do que a metáfora poderia sugerir, um token não representa um ficheiro digital que é enviado de um dispositivo para o outro. Em vez disso, manifesta-se como uma entrada na ledger que pertence a um endereço Blockchain. Apenas a pessoa que tem a chave privada para esse endereço pode aceder aos respetivos tokens, usando um software chamado de carteira (“wallet”), que atua como uma porta de comunicação com a rede Blockchain.
Ao contrário das bases de dados distribuídas, onde os dados são distribuídos, mas geridos e controlados por uma única entidade, as redes Blockchain permitem o controlo distribuído. Diferentes pessoas e instituições que não confiam umas nas outras compartilham informações sem necessidade de um administrador central.
Como uma folha de cálculo na cloud: a ledger pode ser descrita como uma folha de cálculo na cloud. Pense em aplicações em nuvem como “Google Sheets“, onde todos podem aceder e editar um ficheiro em simultâneo. Mas, ao contrário do Google Sheets, onde esse ficheiro é armazenado centralmente nos servidores da Google, a ledger de uma rede Blockchain não é armazenada centralmente. Em vez disso, cada nó da rede mantém uma cópia idêntica da mesma ledger em todos os momentos (com exceções temporárias cada vez que um novo bloco é criado).
Estados Universais: cada computador na rede gere a sua própria cópia da ledger, idêntica a todas as outras cópias distribuídas pelos restantes nós (computadores), que atua como um conjunto universal de dados em toda a rede, garantindo que cada token é transferido apenas uma vez num determinado momento. A ledger representa, portanto, o estado universal da rede, com que todos os nós na rede concordam. Como analogia, ela será como um notário digital com um “timestamp” – ou carimbo temporal – publicamente verificável.
Transações Bitcoin: ao usar a rede Bitcoin, em vez de termos uma unidade central (como um banco) a validar as transações financeiras, todos os computadores na rede (nós) verificam as suas cópias da ledger para a validade da transação, e confirmam coletivamente as transações por maioria de consenso. Nenhum utilizador é mais confiável do que qualquer outro. Em vez de haver um único terceiro confiável a validar as transações através de seus servidores (voto único), uma rede P2P de computadores executando o protocolo Blockchain, valida as transações por consenso (votação por maioria).
O protocolo é um conjunto de regras e processos que definem como todos os nós (anónimos) da rede podem chegar a um acordo sobre os verdadeiros Estados da rede. O protocolo define como os participantes na rede interagem entre si: (i) em que condições o envio de tokens de A para B é válido; (ii) as recompensas económicas para a validação de transações com um token criptográfico; (iii) como referenciar identidades e assinar transações; e (iv) quem decide sobre atualizações da rede.
Criptoeconomia: a criptografia transfere segurança à rede e proporciona total transparência para todos os participantes, mantendo ao mesmo tempo a privacidade de cada ator individual. Ela garante também que as transações passadas são, de facto, válidas e verdadeiras. A teoria dos jogos é aplicada para garantir que as transações futuras serão conduzidas de uma forma verdadeira por consenso maioritário de todos os atores de rede, assumindo que todos os atores de rede poderiam potencialmente ser corruptos. Em termos práticos, significa que o custo de manipulação de registos passados em proveito próprio é incomensuravelmente superior ao ganho da não manipulação. O mecanismo de consenso é assim concebido para dificultar a manipulação do livro-razão.
Consenso: “Proof-of-Work” (Prova-de-Trabalho) é o mecanismo de consenso usado pela rede Bitcoin que tem como objetivo orientar a ação coletiva de um conjunto desconhecido de atores anónimos. Baseia-se em princípios criptoeconómicos. A teoria retroativa dos jogos é usada para recompensar os atores de rede com um token de rede nativo. No caso da rede Bitcoin, este seria o token bitcoin. Este mecanismo de recompensa é projetado para tornar economicamente inviável enganar a rede, devido à quantidade proibitivamente grande de poder de computação que seria necessário para fazê-lo, e tendo em conta cenários de ataque extremos. As regras de consenso são projetadas de forma a tornar a rede resistente a ataques, apesar da falta de partes centralizadas para governar a veracidade das atividades da rede.
Identidades: um endereço Blockchain, que é derivado da chave privada, representa uma identidade digital pseudónima do proprietário do token. Os tokens são vistos como pertencentes a um determinado endereço no livro-razão público. Só o proprietário desse endereço pode pedir para enviar esses tokens para outro endereço. A fim de provar a sua propriedade a outros participantes da rede, os titulares de token precisam assinar as transações com a sua chave privada. Esta forma de gestão de identidade é puramente baseada em funções matemáticas, permitindo que outros computadores na rede confirmem a validade de uma transação sem precisar conhecer a pessoa real ou sua chave privada secreta.
Prestação de Contas e Governança: as redes Blockchain também podem ser descritas como sistemas de contabilidade distribuídos, ou sistemas de governança supranacional, públicas e transparentes. À falta de uma entidade central, eles fornecem uma camada de governança para a Internet. Todos os participantes da rede têm acesso igual aos mesmos dados em (quase) tempo real. As transações são geridas coletivamente, transparentes para todos os atores e podem ser rastreadas até à sua origem.
Organizações Autónomas Descentralizadas (DAO): todos os registos são geridos de forma coletiva por nós autónomos da rede, sendo por isso também anunciada uma nova forma de infraestrutura organizacional, muitas vezes referida como Organização Autónoma Descentralizada.
Block-Explorer: devido à natureza pública das redes Blockchain, todos podem executar operações de pesquisa na rede, como rastrear todas as transações de tokens, taxa de hash total da rede, balanço corrente de tokens, crescimento das transações, etc. No entanto, pese embora todos os registos na rede Blockchain serem públicos, poucas pessoas têm os conhecimentos necessários para executar análises de dados avançadas na Blockchain. Os exploradores de blocos são aplicações de terceiros que permitem a qualquer um explorar publicamente todas as transações de uma determinada rede, como Bitcoin ou outras redes públicas de Blockchain. Os exploradores de blocos são como um motor de busca dedicado para dados relacionados à Blockchain. No entanto, este nível de transparência também levanta questões relacionadas com a privacidade. Estas questões relacionadas com a privacidade têm vindo a ser abordadas com novos protocolos Blockchain que usam métodos criptográficos de maior preservação da privacidade.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
O desafio subjacente a uma rede P2P com um conjunto de nós de rede anónimos é lidar com nós de rede maliciosos na ausência de partes centralizadas para proteger o sistema. Devemos sempre assumir que haverá atores maliciosos a tentar perturbar qualquer rede pública e aberta. Noutros termos, como tornar possível que uma rede distribuída possa chegar a um consenso sobre que dados estão corretos ou quais os que não estão corretos, ou que processo é verdadeiro ou falso em tal configuração não confiável? Isto é conhecido como o “problema dos generais bizantinos”: um nó malicioso, também chamado de nó Bizantino, pode intencionalmente enviar informações erradas para todos os outros nós envolvidos no processo de consenso. As falhas bizantinas são consideradas a classe mais difícil de falhas quando se fala em redes distribuídas. Mecanismos de consenso confiáveis devem ser resilientes contra ataques DDoS (Distributed Denial of Service), ataques Sybil[1], e outros ataques cibernéticos. Antes do surgimento da Bitcoin, acreditava-se ser impossível alcançar um consenso tolerante a falhas e resistente a ataques entre nós não confiáveis numa rede P2P.
Pela primeira vez na história da computação distribuída, o protocolo Bitcoin introduziu uma solução matemática para este problema, com um mecanismo de consenso chamado “Proof-of-Work”, ou Prova-de-Trabalho, que faz com que o custo económico de atacar o sistema seja desproporcional em relação ao benefício de fazê-lo. Ele gerou um novo campo de ciência em torno de jogos de coordenação económica usando ferramentas criptográficas, também referido como “Criptoeconomia”. Criptoeconomia pode ser definida como o estudo da interação económica em ambientes não confiáveis, onde cada ator pode potencialmente ser corrupto. É interdisciplinar, e requer uma compreensão profunda da criptografia, economia e redes P2P, e o que motiva os atores da rede. A infraestrutura público-privada garante um controlo de acesso resistente a ataques dos tokens. As funções de Hashing permitem aos nós verificar as transações que são feitas através da rede. Tanto as funções de hashing como a criptografia de chave público-privada também são necessárias para o jogo de coordenação económica chamado “Prova-de-Trabalho” para recompensar os mineradores por adicionarem blocos de transação verdadeiros ao livro-razão. Mecanismos criptoeconómicos podem fornecer um equilíbrio de segurança para tornar a rede tolerante a falhas, e resistente a ataques e colusões. Isso permite que nós de rede anónimos alcancem consenso sobre os Estados de todas as interações da rede. A rede Bitcoin é a primeira instância prática da Criptoeconomia. Produz “confiança pela matemática” ao invés de “confiança por contrato legal”.
No entanto, a segurança depende da resiliência dos pressupostos sobre a forma como os intervenientes na rede reagirão aos incentivos económicos. A forma como as pessoas reagem aos incentivos tem sido há muito um campo de estudo em Economia. A Criptoeconomia tem então muito em comum com o chamado design de mecanismos, um campo da economia relacionado com a teoria dos jogos. A teoria dos jogos analisa interações estratégicas, que são referidas como jogos. Ela tenta entender as melhores estratégias para cada jogador num ambiente em que ambos os jogadores tentam maximizar o melhor resultado para si mesmos. O design do mecanismo define resultados desejáveis e trabalha para trás para criar um jogo que incentiva os jogadores em direção a esse resultado desejado. A Criptoeconomia enquanto interdisciplinar, é uma disciplina que foi predominantemente desenvolvida na comunidade da ciência da computação. Parece que ainda há muito espaço para incorporar métodos de várias disciplinas económicas, e outras disciplinas (mais no próximo capítulo e na Parte 4 – Tokens Orientados a um Propósito).
O “ Proof-of-Work ” (PoW) é o mecanismo de consenso utilizado na rede Bitcoin e em redes Blockchain similares para garantir que uma transação de um “token” enviado através da rede seja válida. O mecanismo baseia-se no pressuposto de que todos os nós da rede podem ser potencialmente corruptos, e que o mínimo denominador comum é o dinheiro. O Proof-of-Work é projetado de forma que (i) ao aplicar dinheiro e jogar pelas regras, poderá ganhar tokens de rede; (ii) não compensa enganar o sistema, uma vez que a mineração requer hardware especialmente desenhado para cálculos computacionais de força bruta e que consome grandes quantidades de energia.
Quando os tokens são enviados à rede, cada nó da rede pode propor novas entradas a serem adicionadas à ledger. Estes nós validam as transações e competem entre si para resolver um complexo quebra-cabeça computacional. Neste processo, eles têm que coletar todas as transações recentes da rede, incluindo alguns metadados adicionais, verificar as transações, adivinhar um número pseudoaleatório (“nonce“), e executar todos os dados através de um algoritmo criptográfico (SHA-256) para encontrar o hash do novo bloco. Isto significa que eles têm que realizar um trabalho computacional, razão pela qual este processo é referido como “Proof-of-Work“.
Se um determinado nó na rede for o primeiro a encontrar esse valor de hash, ele pode adicionar o bloco à sua ledger e transmitir ao resto da rede o valor de hash do novo bloco, incluindo todos os dados do bloco. Os outros nós podem agora verificar a validade do hash. Se eles aceitarem este bloco de transações adicionado como válido, eles adicionam o novo bloco à sua cópia da ledger. O Proof-of-Work é desenhado de forma a que muito embora o hash seja difícil de encontrar, a solução encontrada é facilmente verificada como verdadeira. Imagine por exemplo um cubo mágico, onde a resolução é difícil, mas a solução é facilmente verificada. Ao participar nesta competição de encontrar o valor do hash em primeiro lugar, os nós de mineração coletivamente asseguram que todas as transações incluídas num bloco são válidas. O nó vencedor é recompensado com a “recompensa do bloco” na forma de tokens de rede acabados de ser criados para o efeito (mais possíveis taxas de transação). Esta é a razão pela qual o processo é referido como “mineração”. O hash de um bloco validado representa, portanto, o trabalho realizado pelo minerador. No momento da redação deste livro, a recompensa pela criação bem-sucedida de um bloco na rede Bitcoin é de 6,25 BTC por bloco. A recompensa do bloco é reduzida em 50% a cada 210.000 blocos, cerca de quatro em quatro anos. A próxima “redução pela metade” da recompensa por bloco será em 2024.
Encontrar o valor correto do hash requer algum trabalho, na forma do tempo de processamento de um computador, que também é chamado de “função de custo do CPU”. Se um minerador malicioso fosse eventualmente o computador mais rápido a encontrar o hash (situação pouco provável, mas teoricamente possível), o resto da rede não aceitaria o seu bloco de transações. O minerador batoteiro não receberia, portanto, a recompensa do bloco, mesmo que investisse potência e energia computacional suficiente para o efeito. Esta é uma medida económica para dissuadir os ataques à rede. Um ator económico racional abster-se-ia, portanto, de enganar o sistema, pois isso resultaria em custos irrecuperáveis de investimento em energia e infraestrutura. Através da porta traseira dos custos de infraestrutura e eletricidade, os ataques à rede tornam-se proibitivamente dispendiosos. Um ataque bem-sucedido exigiria muito poder computacional, consumo de energia e tempo, e mesmo assim, poderia nem sequer compensar, isto se o intuito do ator malicioso fosse puramente financeiro. Devido à sua intensidade computacional, a rede Bitcoin também é muito consumidora de energia.
A “dificuldade” de encontrar esse valor de hash, e portanto criar um bloco, é ajustável com o tempo para manter o tempo entre blocos de 10 minutos[2] relativamente constante. Ela é ajustada periodicamente em função de quanto “hash power” (potência de hash) tem sido empregada pela rede de mineradores. Se os blocos forem criados em menos do que 10 minutos, a dificuldade aumenta. Da mesma forma, se os blocos demorarem mais de 10 minutos para serem criados, a dificuldade diminui. A dificuldade também aumenta com o nível de competição – o número de outros computadores que competem para validar um bloco.
[1] Numa rede anónima, o chamado ataque sybil é um ataque onde um único utilizador poderia gerar múltiplas entidades (sob pseudónimos) para influenciar o processo de consenso.
[2] A rede Bitcoin, como rede mundial de computadores, tem latências de rede (atrasos no processamento de dados de rede). Para ter em conta as latências, o protocolo Bitcoin especifica que deve ser criado um bloco a cada 10 minutos, em média.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
A rede Bitcoin é (i) de código aberto, (ii) pública, e (iii) não-permissionada. A natureza de código aberto refere-se ao facto de permitir que qualquer pessoa com skills adequados possa contribuir para o protocolo de forma pública. Além disso, qualquer pessoa pode obter o código, modificá-lo e criar sua própria versão de uma rede de pagamentos P2P. “Público” refere-se ao facto de que qualquer pessoa pode usar a rede como um sistema de pagamento (utilizador), e que qualquer pessoa pode baixar o protocolo e a ledger e verificar transações (nós completos). “Não-permissionada” refere-se ao facto de que qualquer pessoa pode baixar o protocolo e a respetiva ledger e “escrever” as transações na ledger (mineradores). Na Rede Bitcoin, existem quatro tipos de nós: “full nodes” (nós completos), “mining nodes” (nós de mineração), “mining pools” (pools de mineração) e “light nodes” (nós leves).
Os full nodes gerem todo o histórico da rede Bitcoin (a ledger, ou livro-razão) e validam novas transações à medida que vão sendo adicionadas à ledger. Qualquer pessoa que execute um nó completo pode enviar e receber tokens bitcoin, e verificar a integridade das transações, sem ter que confiar em terceiros. A verificação das transações é uma função complementar à mineração de bitcoin. Enquanto que a mineração de bitcoin é feita quase exclusivamente em hardware para fins especiais, um nó completo que só valida as transações pode ser executado num PC doméstico normal com hardware de processamento padrão. Nos primeiros dias da rede Bitcoin, todos tinham de descarregar a ledger completa para poderem enviar as transações. Hoje, os desenvolvedores de “software wallets” (software de carteiras) também oferecem a opção de nós leves (veja abaixo).
Os mining nodes (miners) competem pelo direito de criar novos blocos e adicionar transações à ledger. Eles podem praticar “solo mine” ou “pool mine”. Se eles minerarem sozinhos, precisam manter sua própria cópia completa da ledger. Os mineradores vencedores são recompensados com tokens bitcoin por criarem novos blocos – “block reward”. O mecanismo exato da recompensa é especificado no protocolo. Além da recompensa do bloco, os mineradores também podem ganhar custos de transação. No entanto, estes custos de transação não são exigidos pelo protocolo, mas podem ser exigidos por um minerador no mercado livre. As taxas de transação geralmente aumentam quando o tráfego da rede é alto e a rede fica congestionada.
Mining pools: ao longo dos anos, os mineradores individuais começaram a colaborar e a formar cartéis de nós mineradores. Num cenário de mining pool, os mineradores individuais colaboram com outros mineradores para escrever na ledger e receber a recompensa do bloco. O operador da mining pool mantém um nó completo e os mineradores individuais contribuem com o seu CPU (também chamado de hash-power). Ao usar o poder cumulativo de hash-power de todos os mineradores individuais, eles podem aumentar suas hipóteses de serem o computador mais rápido a resolver o quebra-cabeça e escrever um bloco de transações na ledger. No entanto, o White Paper original do Bitcoin não entrava em linha de conta com esta forma de colaboração entre os mineradores. Os pressupostos económicos baseiam-se na “teoria do jogo simples”, e não na “teoria do jogo colaborativo”. Como resultado, a rede Bitcoin tornou-se um sistema muito mais centralizado do que o pretendido originalmente. Algumas pessoas argumentam que a realidade do mecanismo de consenso da Bitcoin pode ser descrita como uma “Prova-de-Trabalho Delegada” e tornou-se um oligopólio de um punhado de mining pools, o que pode não refletir as intenções originais do criador da Bitcoin, Satoshi Nakamoto.
Os light nodes foram criados para verificação simplificada de pagamentos (SPV) de software wallets para smartphones. Por isso também são chamados de nós SPV ou SPV-clients. Ao contrário dos nós completos, eles não mantêm a ledger completa e apenas armazenam as cópias de todos os cabeçalhos dos blocos de transações. Estes não podem verificar as transações de forma autónoma, pois não têm acesso a todas as informações armazenadas na ledger. Os nós leves dependem das informações fornecidas por outros pares na rede que têm acesso a todos os dados da ledger. Ao contrário dos nós de mineração, os nós completos não têm um incentivo económico direto para validar as transações. No entanto, existem incentivos indiretos para operar um nó completo ao invés de um nó leve. No possível caso de uma atualização de protocolo, um nó completo é a única maneira de votar sobre como a rede deve ser atualizada. Outro motivo para executar um nó completo é o maior grau de privacidade, já que os nós completos mantêm a ledger completa e todos os dados de transação no seu próprio dispositivo. Isto é bem diferente de como os nós leves funcionam. Os nós leves dependem de servidores de terceiros para transmitir transações para a rede, o que significa que os servidores desses serviços de terceiros conhecem o histórico de transações do nó leve.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Todas as entradas na ledger são apenas de leitura. Uma vez que um bloco de transações é aceite pela rede, ele não pode ser facilmente modificado ou removido. Todos os blocos teriam de ser recalculados para que isso acontecesse, o que exigiria que a maioria dos participantes da rede concordasse com tais alterações. Um atacante precisaria refazer o trabalho computacional de todos os blocos sucessores, na maioria dos nós da rede. Isso exigiria controlo sobre, ou suborno da maioria dos nós da rede. Mesmo que fosse possível realizar esses cálculos dentro do período de criação do bloco (~10 minutos), o custo seria muito maior do que as recompensas por atacar a rede. Embora a manipulação seja possível, o mecanismo é desenhado para torná-la inviável.
Os websites abaixo fornecem informação em tempo real sobre quanto custa atualmente atacar diferentes redes Blockchain num chamado “ataque de 51%”. Uma rede de Proof-of-Work é considerada segura desde que mais de 50% do trabalho esteja a ser levado a cabo por mineradores honestos. Um “ataque de 51%” acontece quando uma única pessoa ou instituição é capaz de controlar a maioria da taxa de hash ou do poder computacional para manipular a rede. Nos dez anos de história da Bitcoin, nenhuma manipulação feita por atacantes externos foi bem-sucedida.
* Ferramenta online para verificar quanto custaria atacar a rede Bitcoin:
https://gobitcoin.io/tools/cost-51-attack/
* Ferramenta online para verificar quanto custaria atacar diferentes redes Blockchain:
https://www.crypto51.app/
Um ataque de 51% bem-sucedido poderia ter o seguinte impacto: permitiria (i) alterar blocos, adicionando ou removendo transações, o que exigiria um PoW adicional (quanto mais antiga for uma transação, mais difícil será um ataque); (ii) censurar participantes e, portanto, as transações desses participantes; (iii) enviar transações e depois revertê-las; e (iv) alterar as regras do protocolo.
O que um ataque de 51% não pode fazer é alterar transações existentes ou transações falsas, como por exemplo: (i) alterar a quantia enviada numa transação existente; (ii) alterar o destinatário de uma transação existente; ou (iii) enviar os tokens de alguém sem a sua aprovação. Isto porque todas as transações precisam ser assinadas com a chave privada do proprietário do token, que não pode ser revelada por acordo da maioria da rede. Alterar um detalhe numa transação existente tornaria a ledger “ilegítima”, pois uma transação sem assinatura válida estaria contida nela. Estes tipos de manipulação só podem ser conseguidos através de força bruta computacional de adivinhação das chaves privadas de um ator da rede. Alternativamente, pode-se também quebrar o algoritmo criptográfico (SHA) para atacar a rede, razão pela qual é essencial usar algoritmos criptográficos que tenham sido devidamente testados.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Em engenharia de software, “software forks” referem-se ao facto de qualquer software livre e de código aberto poder ser copiado e modificado sem permissão prévia da equipa de desenvolvimento original e sem violar a lei de direitos autorais. O termo por vezes também se refere a uma divisão na comunidade de desenvolvedores de um projeto existente, ao invés de apenas o código. A natureza de código aberto de redes públicas em Blockchain permite que qualquer pessoa baixe o código, o modifique e comece a criar uma rede separada baseada num pedaço de código distinto.
Desta forma, pode-se (i) criar uma nova rede a partir do zero simplesmente copiando a base de código existente e modificando-a para construir uma nova rede (“Zcash” e “Litecoin“, por exemplo, são baseados na base de código Bitcoin), ou (ii) bifurcar uma rede existente, incluindo a ledger existente e a comunidade, numa continuação diferente a bem de uma atualização do protocolo. Essas atualizações de protocolo podem causar uma divisão da rede como resultado de disputas de atualização de protocolo (como foi o caso com “Bitcoin Cash” e “Ethereum Classic“) ou secessão deliberada por razões económicas, que muitas vezes são projetadas para extrair valor económico acima de qualquer discussão filosófica de protocolo (como foi o caso com “Bitcoin Gold“, “Bitcoin Diamond“, e “Bitcoin Platinum“). Os tipos e regras dos forks de software dependem dos protocolos formais e informais de cada rede. A rede Bitcoin e redes similares distinguem entre “hard forks” e “soft forks“. Um fork será, na prática, uma divisão da rede.
Um “hard fork” é um tipo de mudança de protocolo que não é retrocompatível. Nós que não atualizam a nova versão do protocolo não serão capazes de processar transações. Todos os nós que validam transações de acordo com o protocolo antigo tratarão os blocos produzidos de acordo com o novo protocolo como inválidos. Os nós que quiserem adotar o novo protocolo precisarão, portanto, atualizar o seu software.
Um “soft fork” é um tipo de mudança de protocolo que é retrocompatível. Os nós que não atualizaram o protocolo ainda são capazes de processar transações se não quebrarem as regras do novo protocolo. Os blocos produzidos pelos mineradores que executam o protocolo atualizado são aceites por todos os nós da rede. Blocos produzidos por mineradores executando a versão antiga são rejeitados pelos nós que executam a nova versão do protocolo. Se os mineradores da versão antiga receberem seus blocos rejeitados por parte da rede, eles podem estar inclinados a atualizar também. Os soft forks são, portanto, um pouco mais graduais no seu processo de votação do que os hard forks e demoram várias semanas. Se a maioria dos mineradores fizer o upgrade para o novo protocolo, ele é chamado de soft forks ativados pelos mineradores (MASF). Se os nós se coordenarem entre si por completo, sem o apoio dos mineradores, tal é referido como um soft fork ativado pelo utilizador (UASF). Em termos práticos, um soft fork não resulta numa divisão da rede – dando lugar a uma nova cadeia de blocos “a par” da anterior (hard fork) – mas apenas numa atualização do protocolo da rede.
Uma divisão pode ocorrer quando alguns nós da rede continuam a usar o protocolo antigo enquanto todos os outros usam o novo protocolo. As atualizações técnicas do protocolo acontecem com bastante frequência, e normalmente não criam muita controvérsia, especialmente quando envolvem pequenas atualizações técnicas. A cadeia mais curta morre e o token deixa de ter valor de mercado. No entanto, a curta história das redes Blockchain tem mostrado que decisões mais politizadas sobre atualizações de protocolo podem levar a uma divisão na rede, onde a cadeia minoritária tem seguidores suficientes ou narrativa política para manter uma economia própria. Um aspeto chave disto é uma divisão no “poder cerebral” dos desenvolvedores que suportam uma ou outra rede. Como a comunidade se divide, os desenvolvedores muitas vezes têm que tomar uma posição por uma ou outra rede, o que pode resultar numa falta de poder por parte do desenvolvedor. Os mineradores também têm que escolher qual a rede que irão continuar a apoiar.
No caso de um hard fork, qualquer pessoa que possuísse tokens na rede antiga também possuiria uma quantidade equivalente de tokens na nova rede minoritária, que pode então vender ou manter. Isto, no entanto, requer pelo menos uma troca de tokens para listar o novo token da rede minoritária; caso contrário, não há mercado para o token dessa rede e, como resultado, a rede cai em esquecimento. Um hard fork politizado é um “evento de cisne negro” e pode ter um efeito sério no valor dos tokens, dependendo de qual rede ganhará tração a longo prazo. Exemplos de forks politizados que dividem a rede são o “Ethereum Classic” (ETC)[1] e o “Bitcoin Cash” (BCH)[2]. Como resultado desses forks proeminentes da rede Bitcoin e da rede Ethereum, a questão da governança tem provocado um debate contínuo na comunidade, e parece ser uma das questões de pesquisa mais proeminentes para os próximos anos.
Além disso, as divisões temporais na rede podem acontecer acidentalmente, devido às latências da rede. Se dois mineradores encontrarem soluções diferentes para o mesmo bloco ao mesmo tempo, ambas válidas, é possível que a rede se divida temporariamente. Quando isso acontece, os nós do diagrama de rede têm duas versões alternativas da ledger em diferentes partes do diagrama de rede. Isto cria dois diagramas de rede paralelos na Blockchain. O protocolo Bitcoin estabelece uma provisão para resolver essas divisões temporais de modo que apenas um ramo da rede sobreviva. Numa rede Proof-of-Workcomo a Bitcoin, a rede com o “Proof-of-Work mais cumulativo”, também referido como “potência de hashing” ou “potência de rede”, é sempre considerada a válida pelos nós da rede. Neste processo, a versão vencedora da ledger é determinada por um “voto” maioritário da rede. Os nós votam por uma versão, atualizando o protocolo (ou não). O “comprimento da cadeia de blocos” refere-se ao ramo da rede com o Proof-of-Work mais cumulativo, não aquele com o maior número de blocos.
[1] O hard fork da Ethereum resultou do incidente “TheDAO”, em que cerca de 50 milhões de dólares foram drenados como resultado de uma vulnerabilidade no código. O hard fork, que censurou retroativamente a transação que conduziu à drenagem, foi altamente politizado. Os opositores ao hard fork insistiram na imutabilidade da ledger. Como resultado, o símbolo da rede minoritária que se opunha ao hard fork duro – Ethereum Classic – fez história por ser o primeiro símbolo de rede minoritária a ser listado numa troca.
[2] O aumento das taxas de transação na rede Bitcoin devido ao congestionamento da rede foi a motivação para uma proposta de alguns desenvolvedores da comunidade para aumentar o tamanho do bloco numa atualização de protocolo que exigiu um hard fork. A proposta enfrentou considerável oposição de outros desenvolvedores de rede. Após um debate de dois anos, o controverso hard fork foi levado a cabo em julho de 2017, e levou à formação de uma nova comunidade com uma proposta diferente, chamada Bitcoin Cash. Em 1 de Agosto de 2017, a Bitcoin Cash começou a ser negociada a cerca de 240 USD, enquanto a Bitcoin era negociada a cerca de 2700 USD.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Os forks mencionados acima são o resultado de atualizações de protocolo de uma rede Blockchain existente, que levou a uma divisão dos nós de rede existentes em dois grupos. Essa divisão pode influenciar o preço de mercado do token da rede, já que ambas as redes são menores do que a rede original. Outra forma de fork seria um simples típico fork de software para projetos de código aberto. Como a base de código Bitcoin é aberta, qualquer um pode usar essa base de código como modelo para criar uma Blockchain alternativa, adaptando algumas variáveis, parâmetros ou funções.
Ao longo dos anos, o protocolo Bitcoin foi modificado centenas de vezes para criar versões alternativas da Bitcoin mais rápidas ou mais anónimas, como “Litecoin” ou “Zcash“. A dado momento, ficou claro que um protocolo Blockchain fornece um sistema operacional que permite que um grupo de pessoas que não se conhecem ou não confiam umas nas outras se organizem em torno de objetivos específicos, não apenas “dinheiro sem bancos”. Muitos projetos, portanto, tentaram modificar a base de código Bitcoin para facilitar outros tipos de transferências de valor P2P, como o armazenamento descentralizado de ficheiros sem Amazon Web Services, como no caso de “Sia”, ou redes sociais sem Facebook, Twitter, e similares, como no caso de “Steemit“. A ideia surgiu do intuito de haver um afastamento das redes de propósito único que têm apenas um contrato inteligente[1] e, em vez disso, criar um protocolo onde se possa realizar qualquer tipo de transação de valor P2P sobre a mesma rede. Alguns dos projetos iniciais mais interessantes foram “Colored Coins” e “Mastercoin“. Eles usaram o token bitcoin como um veículo “a reboque” para qualquer tipo de transferência de valor ou contrato legal. Vitalik Buterin, que esteve envolvido nesses projetos por um curto período, percebeu que essas adaptações do protocolo Bitcoin eram possíveis, mas não suficientemente eficientes ou flexíveis. Posteriormente, ele introduziu a ideia de desacoplar as funcionalidades de contrato inteligente das funcionalidades de processamento da rede e iniciou o projeto Ethereum. Isto permitiu um ambiente de desenvolvimento mais flexível do que a rede Bitcoin e outras redes Blockchain com fins especiais. A rede Ethereum, pela primeira vez, introduzia uma rede descentralizada que permitia o processamento de qualquer tipo de transferência de valor utilizando contratos inteligentes. Estes contratos inteligentes podem ser facilmente criados com algumas linhas de código e são processados pela rede Ethereum, sem a necessidade de criar a sua própria infraestrutura de Blockchain. Ao contrário da rede Bitcoin, que é projetada para um único contrato inteligente que liquida remessas P2P, fazendo apenas e só isso, a rede Ethereum é projetada como uma rede descentralizada de computadores na qual qualquer tipo de contrato inteligente pode ser processado usando a Máquina Virtual Ethereum (EVM) e qualquer tipo de ativo tokenizado pode ser transferido, como por exemplo uma obra de arte.
O surgimento da Ethereum inspirou muitos projetos mais recentes no desenvolvimento de redes de contratos inteligentes similares. Exemplos de tais projetos incluem: “Cardano”, “Neo”, “EOS”, “Hyperledger Fabric”, “Ontology”, e muitos mais. Existem vários fatores que serão relevantes para a avaliação da sua viabilidade, tais como fatores técnicos, económicos e legais. Ainda não está claro que soluções alternativas à rede Ethereum poder-se-ão tornar populares e se haverá um cenário “o vencedor leva tudo” ou uma coexistência de múltiplas redes. Por enquanto, a comunidade Ethereum parece ter a maior tração, com a vantagem de ser a primeira, juntamente com uma panóplia alargada de desenvolvedores, mas isso pode mudar.
Além disso, surgiram sistemas alternativos de ledger distribuídas com tipos completamente diferentes de mecanismos de consenso, tais como gráficos acíclicos dirigidos (DAGs – directed acyclic graphs) que não requerem a criação de uma cadeia de blocos e, em vez disso, utilizam mecanismos criptoeconómicos alternativos para chegar a um consenso. Exemplos de redes que usam DAGs como mecanismo de consenso são “IOTA”, “Byteball” ou “Nano”.
Por outro lado, instituições privadas como bancos, companhias de seguros e muitas indústrias da cadeia de abastecimento perceberam que o conceito de gestão coletiva de dados através de um sistema de ledger distribuído poderia ser uma ferramenta útil de colaboração da indústria. Ao contrário das redes Blockchain públicas e não-permissionadas, a indústria começou a projetar “ledgers permissionadas”, onde todos os validadores são membros de um consórcio da indústria, ou pelo menos pessoas juridicamente separadas da mesma organização. No entanto, o termo “blockchain” no contexto de redes permissionadas e privadas é altamente controverso e disputado. Os críticos questionam se um livro-razão permissionado, onde se tem “confiança por autoridade”, pode ser considerado “de facto” e de “per si”, uma rede Blockchain. Os defensores das ledgers permissionadas argumentam que o termo “blockchain” aplica-se a toda e qualquer estrutura de dados distribuídos onde as transações são registadas em blocos interligados através de um “hash” e, da mesma forma, também a redes permissionadas que efetuem transações em lote para uma cadeia de blocos.
As redes públicas utilizam mecanismos criptoeconómicos (confiança por matemática) para manter a rede segura com um mecanismo de consenso que incentiva o comportamento individual (esforços computacionais) para alcançar um objetivo coletivo. O mecanismo de incentivo está estritamente ligado ao token da rede. É essencial colocar essa rede de atores não confiáveis a salvo de ataques e manipulações. As redes permissionadas, por outro lado, são geridas coletivamente por um conjunto de atores de rede que conhecem e confiam uns nos outros e não precisam de mecanismos de consenso computacionalmente intensos, como o Proof-of-Work, e logo, não precisam de um token como incentivo a fazer o que é correto. A confiança depende do sistema legal e da reputação dos atores conhecidos da rede (confiança por contrato legal). O denominador comum destas redes é a existência de um livro-razão distribuído. É por isso que o termo “ledger distribuída” surgiu como um termo mais geral para descrever tecnologias que derivaram da rede Bitcoin. Elas podem ser transações com ou sem permissão, agrupadas em cadeias de blocos ou, como no caso da IOTA, não usar sequer uma cadeia de blocos.
Protocolos Blockchain e ledgers distribuídas similares operam em cima da Internet e podem ser materializados em vários componentes: (i) rede física: representada por uma rede P2P de computadores que executam o mesmo protocolo; (ii) protocolo: define as regras da rede e fá-las cumprir por consenso[2] de todos os nós da rede. Isto inclui incentivos económicos vinculados ao token nativo; (iii) ledger: gestão de todos os ativos na forma de um livro-razão compartilhado e público de todas as transações desde o bloco de génese até hoje; (iv) identificação e endereçamento: os ativos pertencem a identidades que precisam ser tratadas para que possamos transferir ativos de um para o outro. Estas identidades podem ser mais ou menos anónimas, dependendo dos tipos de algoritmos criptográficos utilizados; no caso das redes de contratos inteligentes como a Ethereum os (v) contratos inteligentes gerem as relações dos atores envolvidos, e representam a lógica de negócio ou de governança.
[1] Contratos Inteligentes são programas de computador que regulam, auditam e executam regras arbitrárias de transferência de token que foram escritas no código. Essas regras são executáveis por consenso de todos os computadores da rede, a rede Blockchain.
[2] “Consenso” é um termo usado na ciência da computação que se refere a como uma rede distribuída de computadores pode concordar com um valor específico que é necessário durante um processo de computação distribuída, pelo qual uma maioria especificada de nós de rede deve concordar com o mesmo valor que foi proposto por pelo menos um outro nó.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
O mecanismo de consenso Proof-of-Work (Prova-de-Trabalho) da Bitcoin é inovador, mas envolve um custo. Embora garanta a segurança numa rede não confiável, é lenta, intensa, e favorece aqueles que têm mais recursos económicos para gastar. É por isso que muitos investigadores e programadores começaram a explorar mecanismos alternativos de consenso para tentar enfrentar alguns dos principais desafios do Bitcoin. As questões de pesquisa que precisam ser resolvidas são:
* Como chegar a um consenso sobre uma versão da história que a maioria aceita como verdadeira?
* Como alinhar recursos naturais escassos (como eletricidade e CPU) com os recursos da rede para evitar que atores maliciosos enviem spam para o sistema?
* Quais são os riscos de segurança e os vetores de ataque?
Apesar de muitos algoritmos de consenso diferentes estarem a ser experimentados, o Proof-of-Work e o Proof-of-Stake (Prova-de-Participação) são atualmente os mais difundidos. Contudo, é importante notar que as redes Blockchain que utilizam o mesmo mecanismo de consenso geral podem ter especificações diferentes[1]. As redes Bitcoin e Ethereum utilizam diferentes variantes do Proof-of-Work.
O mesmo é válido para o Proof-of-Stake, um mecanismo de consenso onde apenas os atores da rede que têm uma participação financeira na rede podem adicionar os blocos à ledger. Ao contrário do Proof-of-Work, os validadores não competem entre si para criar um bloco de transações. Em vez de sacrificar energia para validar um bloco, os utilizadores devem provar que possuem uma certa quantidade dos tokens da rede para gerar um bloco. Os tokens na sua carteira representam a sua aposta. Existem diversas variantes de implementações de Proof-of-Stake.
Propostas de Proof-of-Stake mais antigas assumiam que aqueles que têm maior participação no sistema (ou seja, que apostam mais) têm um incentivo natural para agir de forma verdadeira ao validar transações e escrever blocos. Foi assumido que os detentores de tokens teriam um interesse natural no sucesso de longo prazo da rede; de forma oposta, sua “aposta” perderia valor caso contribuíssem de forma maliciosa. Adicionalmente, assumiu-se que quanto mais tokens se possuísse, mais estaria em jogo se a rede fosse atacada. Os direitos de voto foram, portanto, concebidos proporcionalmente à quantidade de tokens de rede detidos. No entanto, existe um problema no mecanismo original do Proof-of-Stake: ao contrário da Proof-of-Work, onde a mineração é cara e, portanto, não é inteligente desperdiçar energia num fork que não renderá nenhum dinheiro, o Proof-of-Stake não requer um trabalho computacionalmente intensivo para criar um bloco. A presunção base é a de que o validador não tem nada a perder a não ser muito a ganhar.
A rede “Peercoin” foi o primeiro projeto a introduzir a Proof-of-Stake. Outras redes seguiram com suas próprias variantes de Proof-of-Stake, tais como “Tendermint” (“Cosmos“), “Ouroboros” (“Cardano”), “Tezos”, “Dfinity”, “Nxt”, “BlackCoin”, “NuShares/NuBits” e “Qora”, cada uma das quais com propriedades diferentes. Algumas, como “Decred”, combinam elementos tanto de Proof-of-Work como de Proof-of-Stake. O projeto Ethereum está a planear a transição do Proof-of-Work para o Proof-of-Stake com um hard fork (Casper). Os desenvolvedores da Ethereum desenvolveram diferentes propostas de como isso deve ser feito.
Delegated Proof-of-Stake (DPoS) é uma variação do Proof-of-Stake, implementado pela primeira vez por “BitShares”. É uma variação mais radical, uma espécie de democracia representativa onde os donos de tokens podem transferir os seus votos para que os chamados “delegados” validem em seu nome. Há geralmente entre 21 e 101 delegados eleitos que podem ser selecionados de forma aleatória periodicamente ou receber uma ordem para entregar os seus blocos. Esses delegados podem criar blocos e impedir que partidos não confiáveis criem blocos. Eles não podem alterar as transações, mas podem vetar transações específicas de serem incluídas no próximo bloco da rede. Diferentes redes adotaram a sua própria versão de DPoS, de que são exemplos “Steemit”, “EOS”, e “Lisk”. Ao invés de competir na validação de blocos, cada delegado tem um espaço de tempo para publicar o seu bloco. Os portadores de Tokens podem retirar seu voto em relação a um delegado, se os delegados falharem continuamente seus blocos ou publicarem transações inválidas. Esta centralização parcial da criação de blocos resulta em melhor rendimento de transações (também chamada de “escalabilidade”) do que a maioria dos outros mecanismos de consenso.
Existem ainda mais variações do Proof-of-Work, a maioria das quais são apenas conceptuais ou foram implementadas por uma única rede: “Leased Proof-of-Stake“, “Transactions as Proof-of-Stake“, “Proof-of-Importance“, “Proof-0f-Capacity“, “Proof-of-Weight“, “Proof-of-Authority” e “Proof-of-Elapsed-Time“.
Byzantine Fault Tolerance (BFT): outro grupo de mecanismos de consenso são derivações da Tolerância de Falhas Bizantinas (BFT) como os Acordos Bizantinos Federados (FBA), implementados por exemplo por “Ripple” ou “Stellar“, Tolerância a Falhas Bizantinas Práticas (pBFT) como implementado por “Hyperledger Fabric“, e Tolerância a Falhas Bizantinas Delegadas (dBFT) como utilizado em “NEO”. Outro grupo de protocolos utiliza uma combinação de mecanismos, como o “Hashgraph”, que combina a Tolerância a Falhas Bizantinas Assíncronas com mecanismos de “gossip protocols” e “virtual voting”.
Directed Acyclic Graphs (DAG): adicionalmente, existe toda uma série de protocolos que utilizam Gráficos Acíclicos Dirigidos, tais como “IoT Chain”, “Byteball”, “Nano” (Block Lattice), e “IOTA” (Tangle). O mecanismo de consenso dos DAG é fundamentalmente diferente das cadeias de blocos. Em vez de agrupar os dados em blocos que são então confirmados um após o outro, Gráficos Acíclicos Dirigidos requerem dados recém adicionados para referenciar e validar dados passados. Normalmente, cada nova transação teria de referenciar e validar duas transações que vieram antes. Ao fazer isso, a rede vai formando um gráfico de transações convergentes e confirmadas. Se um nó validar incorretamente uma transação passada, a transação desse nó não será confirmada por outros participantes.
Explicar em detalhe cada um dos mecanismos de consenso referidos acima está para além do âmbito deste livro e exigiria uma ou várias publicações dedicadas. A literatura sobre estes protocolos no contexto de ledgers distribuídas ainda é escassa, mas está em crescimento. No entanto, muitos destes protocolos ainda se encontram numa fase conceptual, sem documentação adequada. Em muitos casos são implementados por um único projeto, por vezes sem serem devidamente pesquisados, ou sem terem sido submetidos ao processo académico de revisão pelos seus pares.
[1] O Proof-of-Work em Bitcoin e Ethereum são diferentes. Exemplos de tais diferenças são: variação no tipo de algoritmos de hashing (SHA-256 vs. Ethash), variação do tempo médio do bloco alvo (10 minutos vs. ~15 segundos), e esquemas de pagamento variáveis (apenas produtores de blocos reais vs. alguns blocos não aceites são recompensados, por exemplo, Uncles).
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
Com o advento de tecnologias que utilizam regras de governança derivadas do protocolo Bitcoin original, torna-se pertinente classificar os diferentes sistemas de ledgers distribuídas. A principal distinção é concebida em torno da questão de quem pode (i) validar transações, (ii) escrever transações na ledger, (iii) ler transações, e (iv) usar a rede. Dependendo do tipo de ledger, a resposta irá variar. Para manter as coisas simples, podemos dizer que em redes públicas, qualquer pessoa pode ler, escrever e validar transações e usar a rede. Enquanto que em redes privadas, apenas membros convidados podem ler, escrever e validar transações e usar a rede. Variações híbridas também são possíveis. Um exemplo seria um convidado que poderia validar e escrever transações, mas ler (certas) transações seria do âmbito público. Ou vice-versa. Em redes públicas e não-permissionadas, todos os nós que participam do protocolo de consenso não são confiáveis, pois não são conhecidos de antemão. Sem a permissão de uma entidade centralizada, qualquer pessoa pode baixar o protocolo e a versão atual da ledger para:
* Executar um nó completo no seu dispositivo local, validando as transações na rede.
* Minerar um bloco de transações, adicionando dados à ledger, participando assim do processo de consenso (Proof-of-Work) e ganhando tokens de rede nesse processo.
* Enviar tokens através da rede e esperar vê-los incluídos na ledger se a transação for válida.
* Utilizar software público de explorador de blocos para aferir sobre todos os dados relacionados com transações na rede, ou realizar análises de cadeia (big data) em todos os dados relacionados com a cadeia de blocos armazenados num nó completo.
O mecanismo de consenso para tal configuração tem de levar em linha de conta comportamentos maliciosos. O token é um componente essencial para tornar esta rede de atores não confiáveis resistente a ataques. Embora os incentivos tokenizados tornem as redes não confiáveis seguras, eles também as tornam mais lentas. Redes públicas e não-permissionadas só podem lidar com algumas transações por segundo, o que as torna inviáveis para aplicações de larga escala com alto volume de transações. Entretanto, várias soluções tecnológicas têm vindo a ser propostas e implementadas atualmente para resolver esses problemas de escalabilidade.
As ledgers privadas e permissionadas, por outro lado, têm uma configuração federada com acordos contratuais bilaterais. É um clube de sócios apenas por convite. A rede não é acessível a participantes arbitrários. Os sócios confiam uns nos outros porque têm acordos contratuais bilaterais uns com os outros, e se alguma coisa correr mal, sabem quem processar. Portanto, os registos autorizados não precisam de um token para incentivar a ação coordenada, tal como acontece nas redes não-permissionadas. O facto de as identidades de todos os nós participantes serem conhecidas de antemão fornece uma proteção natural contra “ataques sybil“. As ledgers privadas e permissionadas podem, portanto, liquidar muito mais transações por segundo, já que não precisam lidar com uma quantidade desconhecida de nós anónimos. Elas fornecem também mais privacidade do que mesmo as redes Blockchain públicas de última geração, uma vez que os dados da ledger não são acessíveis ao público. As ledgers permissionadas estão a ser desenvolvidas na sua maioria por consórcios industriais. A verificação das transações é realizada por um conjunto pré-selecionado de participantes, por exemplo, sessenta instituições financeiras, cada uma das quais opera um nó, e onde quarenta devem assinar cada bloco para que o bloco seja válido. Dependendo do setor e do caso de uso, o direito de ler os dados da ledger pode ser público, parcialmente público ou restrito aos participantes.
Apesar da maior parte da literatura sobre Blockchain fazer uma distinção vincada entre ledgers permissionadas e não-permissionadas, eu gostaria de argumentar que não existe tal coisa como “100% sem permissão”. Todo o mecanismo de consenso requer um limite mínimo de investimento que se precisa fazer para se poder validar transações ou escrever na ledger. No entanto, a maioria da população mundial não tem os meios económicos para comprar hardware especializado suficientemente poderoso para extrair tokens Bitcoin, ou outros. Mesmo para um nó completo que só valida transações numa rede pública de Blockchain e não requer o mesmo nível de investimento em hardware que um nó de mineração, seria necessário investir num PC comum. No momento em que este livro é redigido, comprar um PC significa gastar pelo menos algumas centenas de euros[1] para validar as transações. Embora 500 EUR não seja muito dinheiro para uma família europeia média, ultrapassa o rendimento mensal de uma parte considerável da população mundial. Para não falar dos custos acessórios que um hardware de mineração envolve.
Além disso, embora, por exemplo, um consenso baseado em “Proof-of-Stake” seja público, ele não é totalmente não-permissionado. O mecanismo de consenso exige que se possua uma quantidade mínima de tokens de rede para se ser elegível para validar as transações. “Sem Permissão” é, portanto, um termo relativo que não podemos usar de forma binária, mas sim como um gradiente, variando de “menos permitido” a “totalmente permitido”. Num estágio tão precoce dos sistemas de ledger distribuída, soluções permissionadas podem ser úteis em indústrias altamente regulamentadas que querem construir sobre uma ledger distribuída, mas que estão sujeitas à regulamentação do Governo. Os defensores do setor alegam que soluções federadas podem proporcionar níveis mais altos de eficiência e segurança e diminuir os problemas de fraude das instituições financeiras tradicionais. Não é muito provável que as Blockchains privadas revolucionem o sistema financeiro, mas elas podem substituir os sistemas legados, tornando o setor mais eficiente. As ledger permissionadas podem também ser um passo para uma adoção mais ampla de redes públicas e não-permissionadas, uma vez que a tecnologia subjacente se torne mais escalável e madura, e melhor compreendida pelos reguladores.
Ainda não está claro como a tecnologia Blockchain irá evoluir a médio e longo prazo. Alguns preveem que as ledgers permissionadas possam sofrer o mesmo destino que as “Intranets” no início dos anos 90, quando as empresas privadas construíam as suas próprias redes privadas, porque tinham medo de se conectar com a Internet pública. Com o tempo, esse medo desapareceu. Hoje, as Intranets são utilizadas em casos muito específicos, onde são necessários altos níveis de segurança.
[1] É possível executar um nó completo num Raspberry PI (um minicomputador acessível) e um cartão SD, que seria inferior a 100 EUR. No entanto, você ainda precisa de um PC normal para fazer o download da Blockchain completa (pelo menos BTC e ETH). Uma vez que a ledger é descarregada, pode-se executar um nó completo num Raspberry PI.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
As redes Blockchain e os sistemas de ledgers distribuídas derivados, fornecem uma infraestrutura para a gestão de direitos. Cada processo, tarefa e pagamento engloba um registo e uma assinatura digital que pode ser identificado, validado, armazenado e compartilhado. Muitas tarefas de intermediários como advogados, corretores, banqueiros e repartições públicas podem ser substituídas por sistemas de ledger distribuídas. Os indivíduos, organizações, máquinas, e algoritmos podem agora interagir uns com os outros com pouco ou nenhum atrito e a uma fração dos custos de transação atuais. Esta nova infraestrutura permite muitas novas aplicações, as mais importantes das quais sendo:
- Transparência e controlo: as redes Blockchain e outros sistemas de ledger distribuídas permitem mais transparência e controlo ao longo da cadeia de abastecimento de bens e serviços, incluindo serviços financeiros que foram tokenizados, o que resolveria muitas questões sobre transparência na cadeia de abastecimento, redução da corrupção e mais controlo sobre o que acontece com os nossos dados privados.
- Redução de burocracia: contratos inteligentes e soluções similares de gestão de direitos têm o potencial de reduzir a burocracia e os custos de coordenação das transações comerciais.
- Resolver o “problema do principal-agente” das organizações[1]: os sistemas de ledger distribuídas também fornecem uma ferramenta de coordenação global para novos tipos de organizações descentralizadas e às vezes também autónomas.
- Tokens como “killer-app”: os tokens criptográficos enquanto aplicação de redes Blockchain e sistemas de ledgers distribuídas derivados podem ser tão revolucionários quanto o surgimento da WWW, que permitiu a criação de páginas web visualmente atraentes com apenas algumas linhas de código, e navegar na Internet seguindo links em vez de usar interfaces de linha de comando. Torna-se agora fácil criar um token com algumas linhas de código de um contrato inteligente.
Um dos mais importantes casos de uso de sistemas de ledgers distribuídas é a transparência e a proveniência ao longo da cadeia de abastecimento de bens e serviços. As cadeias de abastecimento representam uma rede complexa de entidades geograficamente distantes e legalmente independentes que trocam bens, pagamentos e documentos através de uma rede dinâmica, onde todos os documentos são mantidos e geridos em silos centralizados de dados. Como resultado, os sistemas de tratamento de documentos ao longo dessas redes da cadeia de abastecimento são muitas vezes ineficientes, têm interfaces complexas e são de custo intensivo. O comportamento sustentável tanto de empresas como de indivíduos é difícil de rastrear e não é recompensado da melhor forma. Clientes e fornecedores têm pouca ou nenhuma informação sobre a proveniência dos produtos que transacionam, incluindo possíveis fraudes, poluição ou abusos dos direitos humanos.
Ledgers distribuídas permitem que um grupo díspar de atores da rede ao longo de uma cadeia de abastecimento troque dados de forma contínua. Documentos e transações podem ser processados em tempo quase real, uma vez que a auditoria e a fiscalização podem ser automatizadas, ao mitigar desafios como múltiplas cópias de documentos e inconsistências de dados. O rastreamento da proveniência de bens e serviços ao longo das cadeias de abastecimento globais pode-se tornar muito mais viável do que nos dias de hoje. Soluções baseadas na Web3 podem proporcionar (i) maior transparência dos impactos ambientais e (ii) origem, tipo de produção e ingredientes dos alimentos que consumimos, e condições sob as quais as plantas são cultivadas ou como os animais são tratados. Muitas empresas e iniciativas industriais, tais como “Provenance“, “Ambrosus“, “Modum“, “OriginTrail“, “Vechain“, “Wabi” ou “Wantonchain“, começaram a implementar infraestruturas baseadas na Web3 para otimizar as suas cadeias de valor, melhorar as ineficiências, libertar capital de trabalho e tornar os bens e serviços mais acessíveis. Tais soluções, no entanto, exigem sempre a combinação de um conjunto de tecnologias, incluindo algoritmos de aprendizagem de máquinas (machine learning) e dados da Web física, a Internet das Coisas. Aplicações de ledgers distribuídas podem também fornecer uma melhor responsabilidade em relação aos direitos humanos, como condições gerais de trabalho, trabalho infantil ou salários justos. Projetos a trabalhar em tais soluções: “bext360”, “fairfood”, e “Namahe”. Elas podem ainda ser usadas para fornecer mais controlo sobre os nossos dados privados e criar mercados de dados P2P (Ocean Protocol). Embora, em teoria, este nível de transparência do que acontece com os dados privados pudesse também ser fornecido com soluções atuais, tal obrigar-nos-ia a confiar numa instituição centralizada.
[1] Em ciência política e em economia, o problema do principal–agente ou dilema da agência, ocorre quando uma pessoa ou entidade (o “agente“) está apto a tomar decisões ou a promover iniciativas em nome de, ou com impactos, relativos a outra pessoa ou entidade (o “principal”). Este dilema surge, em determinadas circunstâncias, quando a motivação dos “agentes” vai no sentido de agirem de acordo com os seus interesses próprios, contrários aos dos “principais” que os recrutaram.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
As cifras foram uma das primeiras técnicas de encriptação desenvolvidas para encriptar texto simples com cifras de substituição (onde as unidades de texto simples são substituídas por letras simples, pares de letras ou trigémeos de letras) ou cifras de transposição (onde as unidades de texto simples são reordenadas numa ordem diferente e geralmente bastante complexa). A descodificação é o processo de conversão do texto criptográfico ilegível de volta ao texto original. Uma cifra é, portanto, um par de algoritmos que cria a criptografia, bem como a desencriptação inversa: é projetada de uma forma que facilita a criptografia de uma mensagem, mas muito difícil de reverter se não se conhecer o código.
Historicamente, a criptografia tem sido usada de várias formas, como por exemplo um texto criptográfico esculpido numa pedra no Egito. Outras formas de cifras remontam à Pérsia Sassânida, Grécia Antiga, Império Romano, Índia, etc. Desde o desenvolvimento da máquina enigma (uma máquina de cifras de rotor) na Primeira Guerra Mundial, e o surgimento dos computadores na Segunda Guerra Mundial, as aplicações e métodos criptográficos têm evoluído radicalmente. As cifras clássicas tornaram-se redundantes porque eram muito fáceis de adivinhar com simples “ataques de força bruta”, onde um algoritmo de computador executa todas as combinações possíveis até adivinhar o código certo. Os computadores não só aumentaram as possibilidades de criptoanálise, o que se refere ao processo de quebra de criptografia, como também tornaram possíveis cifras mais complexas. Algoritmos criptográficos modernos são projetados para ser inviável em termos de tempo e dinheiro quebrá-los aplicando a força bruta. No entanto, tais “suposições de força computacional” têm de considerar o aumento contínuo do poder de processamento dos computadores.
Para além disso, os computadores introduziram novas formas de criptografia de qualquer tipo de informação digital, e não apenas pedaços de texto. Com o advento dos computadores quânticos, muitos investigadores estão a estudar a relação entre problemas criptográficos e a física quântica. A criptografia pós-quântica está a ser desenvolvida por alguns investigadores e engenheiros que já começaram a considerar os efeitos potenciais da computação quântica ao projetar novos algoritmos. Na era da informação, o uso da criptografia também levanta muitas questões legais. Alguns governos limitam ou proíbem o uso da criptografia e, em alguns casos, até a classificam como uma arma. Certas jurisdições podem permitir que as autoridades governamentais ordenem a divulgação de chaves de criptografia para documentos que possam ser relevantes para uma investigação. Além disso, a criptografia pode ser um factor interessante ao discutir os direitos humanos numa era digital. A questão de como garantir a privacidade na era da máquina está lentamente a tornar-se uma discussão liderada por um público em geral mais amplo, e provavelmente tornar-se-á mais dominante nos anos vindouros. A questão crucial, neste contexto, é se e como o direito constitucional à privacidade da comunicação, ou a santidade da própria casa, poderia corresponder ao direito à comunicação criptografada ou a trilhas de dados criptografados.
Embora as primeiras tentativas de criptografar a comunicação eletrónica tenham-se concentrado em proporcionar sigilo e preservar tecnologias para as comunicações das instituições governamentais, o espectro tem-se vindo a expandir. Nas últimas décadas, as tecnologias de criptografia foram aplicadas em vários outros domínios, como comércio eletrónico, pagamentos digitais, gestão de direitos digitais, gestão de senhas, verificação de integridade de mensagens, autenticação de identidade, assinaturas digitais, provas interativas e computação segura. No contexto de redes Blockchain e outros registos distribuídos, a criptografia é utilizada para fins de identificação, verificação e segurança ao nível do protocolo central. Três camadas relevantes na construção criptográfica são usadas no contexto de redes públicas de Blockchain e outras tecnologias Web3: (i) funções hash, (ii) criptografia simétrica, e (iii) criptografia assimétrica (criptografia de chave pública).
Funções Hash são algoritmos matemáticos que convertem qualquer tipo de dados de tamanho arbitrário (mensagem) em dados de tamanho fixo (valor hash ou hash). A única maneira de recriar os dados originais (mensagem) a partir do hash é tentar todas as variações possíveis para ver se elas produzem uma correspondência. Embora isso seja possível, é demorado e, portanto, caro, e é por isso que é referido como uma função unidirecional. As funções de hash podem ser usadas para assegurar a integridade dos dados transmitidos e a privacidade. As suas aplicações passam por assinaturas digitais, serviços de autenticação, impressão digital, deteção de duplicados, identificação única de ficheiros ou a criação de checksums (somas de controlo) para detetar a corrupção de dados. Para serem consideradas resilientes, as funções criptográficas de hash precisam cumprir determinadas propriedades: precisam ser projetadas de forma que sejam (i) fáceis de calcular; (ii) determinísticas, significando que a mesma mensagem resulta sempre no mesmo hash; (iii) suficientemente demoradas e caras para gerar uma mensagem a partir de seu valor de hash com pura força bruta; (iv) as mais pequenas alterações no valor de entrada original devem alterar o valor de hash. Além disso, deve ser (v) inviável encontrar duas mensagens diferentes (input) com o mesmo valor de hash (output).
Sistemas simétricos: antes do surgimento da criptografia de chave pública, duas partes confiavam numa chave criptográfica que trocavam por um método não criptográfico, tal como reuniões secretas, envelopes selados, ou mensageiros de confiança. Se alguém quisesse comunicar-se de forma privada com outro, seria preciso encontrar-se fisicamente e concordar com uma chave secreta. No mundo das comunicações modernas, onde é necessário haver coordenação no meio de uma rede de muitos atores não confiáveis (a Internet), tais métodos não seriam viáveis. É por isso que a criptografia simétrica não é utilizada para a comunicação em redes públicas. É, no entanto, mais rápida e eficiente do que a criptografia assimétrica e, portanto, usada para criptografar grandes quantidades de dados, certas aplicações de pagamento ou geração de números aleatórios.
Sistemas Assimétricos, também conhecidos como criptografia de chave pública, vieram resolver o problema de coordenação através da introdução de duas chaves, uma pública e uma privada. A chave privada só é conhecida pelo proprietário da mesma e precisa de ser mantida privada, enquanto que a chave pública pode ser fornecida a qualquer pessoa. A chave pública pode ser transmitida à rede, o que permite que qualquer pessoa na rede utilize as chaves públicas para enviar uma mensagem criptografada ao “proprietário” da chave pública. Esta mensagem criptografada só pode ser desencriptada com a chave privada do recetor. Os remetentes podem agregar a sua chave privada à mensagem para criar uma assinatura digital na mensagem. Agora, qualquer pessoa pode verificar com a chave pública correspondente à chave privada se a assinatura é válida. A forma como as chaves são geradas depende dos algoritmos criptográficos utilizados. Exemplos de sistemas assimétricos incluem RSA (Rivest-Shamir-Adleman) e ECC (Elliptic-Curve Cryptography), que também é usado em Bitcoin. O uso de criptografia assimétrica aumentou a segurança da comunicação em redes não confiáveis, como a Internet, de uma forma escalável[1]. Os capítulos seguintes focar-se-ão no modo como a criptografia é utilizada na rede Bitcoin e em redes Blockchain similares.
A rede Bitcoin utiliza fundamentalmente hashes em combinação com assinaturas digitais para proteger a integridade dos dados que fluem através da rede utilizando criptografia de chave pública. Além disso, os hashes são utilizados no contexto do protocolo de consenso “Proof-of-Work”. A Bitcoin usa criptografia de chave pública, e mais especificamente, criptografia de curva elíptica. Por favor note que, redes alternativas de Blockchain e outros sistemas de ledgers distribuídas podem usar ferramentas criptográficas alternativas às descritas abaixo. Algumas redes Blockchain, por exemplo, utilizam criptografia mais orientada à preservação da privacidade, como “Zcash” (Zero-Knowledge-Proof)[2] e “Monero” (Ring Signatures)[3] . A própria comunidade Bitcoin está atualmente à procura de esquemas alternativos de assinatura criptográfica que sejam mais preservadores da privacidade e mais escaláveis, por exemplo, com “Mimblewimble”.
[1] Embora a criptografia de curvas elípticas forneça o mesmo nível de segurança que a RSA, ela precisa de menos computação e menor tamanho de chave, reduzindo assim os requisitos de armazenamento e transmissão. Portanto, permite a redução dos requisitos de armazenamento e transmissão.
[2] A criptografia de provas de conhecimento zero permite a validação da informação sem revelar essa informação com o verificador da mesma.
[3] As assinaturas em anel podem ser usadas para ofuscar a identidade dos proprietários de tokens, combinando um grupo de assinaturas digitais parciais de várias transações enviadas por diferentes usuários, para formar uma assinatura única que é usada para assinar uma transação.
O conteúdo aqui apresentado foi retirado do livro “Token Economy” de Shermin Voshmgir, traduzido e adaptado para português por mim, José Rui Sousa, em conjunto com António Chagas, Courtnay Guimarães e Joana Camilo, publicado sob uma licença Creative Commons CC BY-NC-SA apenas para uso não-comercial.
A rede Bitcoin usa criptografia de chaves públicas para criar uma referência digital segura sobre a identidade de um utilizador com um conjunto de chaves criptográficas: uma chave privada e uma chave pública. Referências digitais seguras sobre quem é quem, e quem possui o quê, são a base para as transações P2P. Em combinação com uma transação, essas chaves criam uma assinatura digital que prova a propriedade dos tokens e permite o controlo dos mesmos com uma “wallet” (software de carteira). À semelhança de um cheque que é assinado à mão, e das senhas que são usadas para autenticação nos “home banking”, a criptografia de chaves públicas é usada para autenticar e assinar transações na Blockchain.
A chave pública é gerada matematicamente a partir da chave privada. Embora seja muito fácil calcular a chave pública a partir da chave privada, o inverso só é possível com pura força bruta; adivinhar a chave é possível, mas proibitivamente caro. Mesmo o supercomputador mais poderoso do mundo levaria triliões de anos para tal, tornando-o praticamente impossível. Isto significa que, embora a chave pública seja conhecida por todos, ninguém pode derivar dela a sua chave privada. Uma mensagem que é criptografada com a chave pública pode agora viajar com segurança até ao proprietário da chave privada e apenas o proprietário desta chave privada é capaz de decifrar a mensagem. Este método também funciona de forma inversa. Qualquer mensagem com uma chave privada pode ser verificada com a chave pública correspondente.
Um exemplo análogo para uma chave pública seria o exemplo de um cadeado. Se Bob quiser enviar uma mensagem a Alice, mas tiver medo que alguém a intercete e a leia, ele pedirá a Alice para enviar o cadeado dela (destrancado) para ele, e para manter a chave do cadeado. Bob pode agora colocar a sua carta numa pequena caixa e trancá-la com o cadeado que Alice lhe enviou, fechando-o com um simples empurrão. A carta pode agora ser enviada ao redor do mundo sem ser intercetada por uma pessoa não autorizada. Somente Alice, que tem a chave do cadeado dela, pode abrir a carta. Claro que alguém poderia tentar partir a caixa com pura força bruta, em vez de usar a chave. Embora seja possível, a dificuldade dependeria da resiliência da caixa e da força da fechadura. Os mesmos princípios básicos aplicam-se à criptografia moderna.
<