Sumário
Algorand é hoje um dos projetos mais promissores no espaço da blockchain. Essa tecnologia de registro de dados pública distribuída e sem permissão, que deve a sua fama às criptomoedas, pode ser definida como ápice da “criptografia aplicada à teoria dos jogos”. O seu desenvolvimento vai decidir o futuro da interação econômica do século XXI no planeta Terra (e além, talvez).
Esse artigo é uma introdução ao funcionamento de Algorand e, embora não seja reservado aos técnicos, é preciso que o leitor já seja familiarizado com alguns conceitos básicos desse cenário, como: protocolos de consenso, cadeia de blocos, hash, chave pública, etc. As informações técnicas do artigo contêm em parte uma tradução do material oficial disponibilizado no portal de desenvolvedores de Algorand.
Antes de entrar nos detalhes do funcionamento de Algorand é bom contar um pouco sobre Silvio Micali, a mente que mergulhou na profundidade da lógica matemática e veio à tona com uma solução para o trilema da blockchain, ou seja: como construir uma arquitetura global de digitalização da confiança desintermediada que seja, ao mesmo tempo, segura, escalável e descentralizada.
Silvio Micali nasceu em 1954 em Palermo, na ilha da Sicília, berço da cultura clássica que deu à luz, muito antes do 1954, ilustres matemáticos, filósofos e poetas. Durante os estudos no Liceo Classico, instituição de ensino superior do sistema de educação italiano dedicado às matérias humanas e à cultura latina e grega antiga, Silvio apaixonou-se pela geometria euclidiana. Paixão essa que o levou a escolher o curso de Física na Faculdade “La Sapienza” em Roma (e não àquele de Matemática, pois, segundo suas palavras “existia o prêmio Nobel para Física, mas não para Matemática”).
Ao descobrir o poder da Análise Matemática, despertou-se em Silvio a vontade de seguir o caminho da Matemática pura e, sob o conselho de um querido professor, decidiu dedicar seus estudos à Logica Matemática e à Ciência da Computação, campos da matemática nascidos pelo trabalho de grandes nomes como David Hilbert, Kurt Gödel e Alan Turing. Após se formar em março de 1978 com uma tese em Lambda Cálculo, Silvio obteve o doutorado em Ciência da Computação na Universidade de Berkeley em dezembro de 1983.
Os resultados teóricos obtidos por Silvio na área da Criptografia constituem, de fato, parte das fundações matemáticas em sobre as quais estão se erguendo as arquiteturas blockchain: geradores de números pseudoaleatórios, provas de conhecimento-zero, funções aleatórias verificáveis, assinaturas digitais, entre outros, são tijolos dessa construção tecnológica. Muitas das soluções hoje implementadas na tecnologia blockchain não teriam sido possíveis sem os esforços intelectuais de Silvio Micali.
Justamente pelos resultados na Teoria da Complexidade Computacional e na Criptografia, Silvio e a sua colega de trabalho Shafi Goldwasser foram recompensados com o Prémio Gödel (1993) e o Prémio Turing (2012), sendo esse último considerado “o Prêmio Nobel da Ciência da Computação”.
O primeiro contato de Silvio com a tecnologia blockchain deve-se ao encontro com Bitcoin: a ideia de Satoshi Nakamoto pareceu-lhe tão brilhante que valia a pena estudá-la através da consciência crítica de quem dedicou a própria vida à criptografia.
Silvio percebeu imediatamente que a estrutura do protocolo de consenso Proof of Work (Prova de Trabalho) de Bitcoin, embora ser brilhante, tinha a tendência intrínseca a centralizar-se nas mãos de poucos grandes mineradoras, por causa dos altos custos de hardware e gastos de energia.
Era preciso então imaginar uma arquitetura blockchain que fosse ao mesmo tempo: segura, escalável e realmente descentralizada. Foi com essa ambição e desafio que Silvio criou Algorand. Após a brilhante carreira como Professor no MIT, Algorand revelou-se uma ideia poderosa ao ponto de Silvio decidir tirar um ano sabático da vida acadêmica para se dedicar totalmente à construção da ideia:
“Fiquei alguns meses desenvolvendo o sistema. Quando me convenci de que estava tudo certo, publiquei um paper online. Então recebi alguns comentários de meus colegas no MIT: “Silvio, isso é bom demais para ser verdade. Você se importa de que o testemos?”. Preparamos um teste muito rigoroso, alugamos 1.000 servidores da Amazon para simular centenas de milhares de usuários e escalou como havíamos previsto, sem custos ocultos.“
“Nesse ponto decidi iniciar a empresa. Arrecadei dinheiro, montei uma equipe fantástica. Em dezembro avisei o MIT. Normalmente é preciso anunciar com um ano de antecedência, mas me deviam um sabático há dez anos e foram muito compreensivos. Além disso, o MIT se preocupa muito pela transferência tecnológica da academia à sociedade. Essa é a primeira empresa em que estou realmente participando dos trabalhos. Gosto demais do que estou fazendo para não estar presente no primeiro ano. Se faço isso é porque estou convencido de que com o Algorand estou mudando tanto o mundo que o melhor é que continue.“
No grau atual da evolução da tecnologia blockchain, as operações criptográficas necessárias para assinar digitalmente as transações e encadear os blocos um atrás do outro são processos considerados “já resolvidos”, através dos sistemas de criptografia assimétrica. Os desafios que as arquiteturas blockchain estão enfrentando hoje em dia são:
- Como escolher quem vai propor o próximo bloco a ser adicionado na cadeia?
- Como garantir que a transação que acabei de assinar digitalmente será realmente registrada na blockchain?
- Como garantir que não terá conflitos na seleção dos blocos?
- Como garantir que a cadeia seja sempre a mesma para todo mundo e não sofra bifurcações?
- Como garantir que o protocolo de consenso possa evoluir ao longo do tempo mesmo sendo a blockchain um registro imutável de dados?
- Como executar transações rápidas com baixas taxas?
Nos protocolos de consenso Proof of Work, a seleção do próximo bloco da cadeia está nas mãos dos miners. O processo de mineração é de fato uma corrida computacional probabilística, cuja robustez reside acima de tudo na capacidade computacional de gerar “aleatoriedade”. Quanto maior for a potência computacional (e elétrica) gasta por um miner, maior será a probabilidade dele ganhar a corrida e obter a recompensa.
Justamente essa dinâmica levou os protocolos Proof of Work a centralizar a geração dos blocos da cadeia nas mãos dos poucos que podem possuir esses recursos, sem falar da demora de alguns minutos necessária para que cada bloco seja finalizado: é preciso esperar para reduzir quanto mais a probabilidade da corrida computacional ser ganha por miners diferentes, o que iria gerar bifurcações da cadeia de blocos.
A garantia de que a cadeia permaneça unívoca para todo mundo ao longo do tempo é fundamental. As bifurcações enfraquecem a credibilidade do protocolo e geram “verdades diferentes” com o efeito de produzir incoerência entre os orçamentos dos usuários. É preciso lembrar que uma bifurcação da blockchain pode ser geradas não só por causa do protocolo em si (soft-forks), mas também por causa da divisão voluntária da comunidade de desenvolvedores (hard-forks) ou, no pior caso, por causa de ataques a rede de comunicação. A solução de Alogrand para todos esses problemas é o protocolo de consenso Pure Proof of Stake (Prova de Participação Pura).
Para começar é preciso entender a diferença fundamental entre os protocolos de consenso Proof of Work (PoW) e Proof of Stake (PoS). Nos protocolos PoW o “direito de palavra” para o estabelecimento do consenso sobre próximo bloco entre os nós que constituem a rede é concedido, em cada bloco, a quem comprova ter sacrificado de maneira correta os próprios recursos computacionais (e energéticos).
Nos protocolos de PoS, esse “direito de palavra” é concedido para quem possui efetivamente “o ativo” que representa o valor de participação na rede em si. A questão a ser resolvida então passa a ser: no PoS, entre todos os que possuem esse ativo (chamado ALGO em Algorand), quem vai decidir o próximo bloco da cadeia em forma consensual? Veremos isso passo a passo.
Hipótese de uma sociedade estatisticamente honesta
A blockchain de Algorand usa um protocolo de “Acordo Bizantino descentralizado” que desfruta o Pure Proof of Stake (Pure PoS). Isso significa que o protocolo pode tolerar usuários mal-intencionados, alcançando consenso sem uma autoridade central, desde que a super maioria (2/3) de todos os ALGOs esteja em mãos não-maliciosas, ou seja: os vilões são menos que o 33% do total da sociedade, coisa perfeitamente aceitável em base estatística.
Diferentemente dos protocolos PoW o protocolo Pure PoS é muito rápido e requer energia computacional mínima por cada nó, permitindo finalizar as transações com eficiência: em pouco tempo, com gasto energético desprezível e baixas taxas. Para ter uma ideia da rapidez do protocolo é bom comparar o número de transações por segundo (TPS) e o tempo de confirmação para a finalização do bloco (Transaction Finality):
- Bitcoin (PoW): 7 TPS, tempo de confirmação 60 minutos
- Ethereum (PoW): 15–25 TPS, tempo de confirmação 6 minutos
- Algorand (Pure PoS): 1000 TPS, tempo de confirmação instantâneo
Um sorteio criptográfico
Uma das ideias criptográficas de Silvio Micali utilizadas em Algorand é a Função Aleatória Verificável (VRF). Uma VRF é uma função que pega uma chave secreta e um valor em input e produz um output pseudoaleatório, com uma prova que qualquer pessoa pode usar para verificar o resultado sem conhecer a chave secreta.
O VRF em Algorand tem um papel semelhante a um sorteio e é usado seja para escolher líderes para propor o próximo bloco, seja os membros de um comitê de votação do bloco a ser adicionado na blockchain. Quanto mais ALGOs forem guardados numa conta, maior a chance da conta ser selecionada: é como se cada ALGO na conta do usuário participasse no seu próprio sorteio. Esse método garante que um usuário não obtenha nenhuma vantagem criando várias contas.
Os comitês são constituídos por 1000 contas selecionadas aleatoriamente, com poder de voto dependente da quantidade de ALGOs, cada ALGO na conta obtém uma execução do VRF feita pelo próprio hardware do nó, em alguns microssegundos. Usuários com mais ALGOs têm mais probabilidade de ser selecionados. Para os membros de um comitê, isso significa que contas com mais ALGOs provavelmente terão mais votos do que uma conta selecionada com menos ALGOs. O uso de comitês selecionados aleatoriamente permite que o protocolo ainda tenha bom desempenho enquanto permite a participação de qualquer pessoa na rede, sem barreiras devidas aos custos de hardware e de energia.
Chaves de Participação
Uma conta de usuário deve ser registrada como “online” para participar do protocolo de consenso Pure PoS. Para reduzir a exposição aos ataques, os usuários “online” não usam suas chaves secretas de gastos (ou seja, as chaves que eles usam para assinar transações) para alcançar o consenso. Em vez disso, um usuário gera e registra uma chave de participação para um determinado número de rodadas. Uma coleção de chaves efêmeras é gerada também, uma para cada bloco.
A conta assina digitalmente essas chaves efêmeras com a chave de participação e exclui a chave de participação. Cada chave efêmera é usada para assinar mensagens só do bloco correspondente e é excluída após o término da rodada. O uso de chaves de participação descartáveis garante que os ALGOs de um usuário estejam seguros, mesmo que o nó participante esteja comprometido. O vencimento da chave de participação e a exclusão das chaves efêmeras depois de serem usadas garante que a blockchain esteja segura no futuro e não possa ser comprometida por ataques aos blocos antigos usando chaves antigas. Contas “offline” não participam ativamente do protocolo de consenso, mas podem efetuar qualquer transação.
Por cada rodada do protocolo Pure PoS a probabilidade de cada ALGO ser vencedor do sorteio é atualizada de acordo com a quantidade total de ALGOs nas contas marcadas “online”, para garantir estatisticamente sempre a formação de um comitê constituído por 1000 contas. Por exemplo: se a quantidade de ALGOs “online” na rodada atual do protocolo fosse 1 milhão, cada ALGO teria 0,1% de chance de ser escolhido da VRF para participar do comitê de votação desse bloco.
Concórdia, a arte de alcançar o consenso
O consenso refere-se à maneira como os blocos são selecionados e gravados na blockchain. Cada vez um bloco é proposto à blockchain, um comitê de eleitores é selecionado para votar na proposta do bloco. Se a maioria dos votos for de participantes honestos, o bloco poderá com certeza ser certificado. O que torna esse algoritmo um Pure Proof of Stake é que os usuários são escolhidos para comitês de forma aleatória com base no número de ALGOs em suas contas.
O consenso requer três etapas para propor, confirmar e gravar o bloco no blockchain:
- Proposta
- Votação “leve”
- Certificação do voto
Cada etapa é descrita abaixo, assumindo o caso ideal em que não haja usuários mal-intencionados e que a rede não esteja particionada (ou seja, nenhuma parte da rede está inativa devido a problemas técnicos ou por ataques DDoS). Observe-se que todas as mensagens são assinadas criptograficamente com a chave de participação do usuário e a participação no comitê é verificada usando o VRF nessas etapas.
Proposta: Na fase de proposta, as contas são selecionadas para propor novos blocos à rede. Essa fase começa com cada nó da rede processando as próprias contas “online” que possuem chaves de participação válidas, executando a VRF de Algorand para determinar se cada conta foi selecionada para propor o bloco.
O VRF age de maneira semelhante a um sorteio ponderado em que o número de ALGOs que a conta registrou “online” determina a chance da conta ser selecionada. Depois que uma conta foi selecionada pela VRF, o nó propaga o bloco proposto junto com o output da VRF, o que prova que cada conta é um proponente válido. Em seguida, passamos da etapa da proposta dos blocos para a etapa de votação “leve”.
Votação “leve”: O objetivo desta fase é filtrar o número de propostas de blocos até reduzi-las a uma, garantindo que apenas um bloco seja certificado. Cada nó na rede receberá muitas mensagens com as propostas de outros nós. Os nós verificarão a assinatura digital das mensagns e validarão a seleção usando a prova da VRF.
Em seguida, o nó exibirá o hash da prova da VRF de cada vencedor validado para determinar qual é o menor e propagará apenas a proposta de bloco com o menor hash da VRF. Esse processo continua por um tempo fixo para permitir que os votos sejam propagados pela rede. Cada nó executa a VRF para cada conta participante (que possue ALGOs registrados “online”) gerenciada por ele para ver se elas foram escolhidas para participar do comitê de votação “leve”.
Qualquer conta for escolhida terá um voto ponderado com base no número de ALGOs da conta e esses votos serão propagados à rede. Esses votos vão confirmar a proposta do bloco através o hash da VRF mais baixo (calculado no tempo limite) e serão enviados para os outros nós juntamente com a prova da VRF. Um novo comitê é selecionado para cada etapa do processo e cada etapa possui um tamanho de comitê diferente com base na quantidade total de ALGOs registrados “online” em toda a blockchain.
O tamanho do comitê é quantificado em ALGOs. É necessário um quorum de votos para avançar para a próxima etapa e deve ser atingida um certo porcentual do tamanho esperado pelo comitê. Esses votos serão recebidos de outros nós na rede e cada nó validará a prova da VRF dos membros do comitê antes de adicionar à contagem dos votos. Quando o quorum é alcançado para a votação “leve”, o processo passa para a etapa de certificação.
Certificação do voto. Um novo comitê verifica a proposta do bloco que foi votado na votação “leve” por verificar que nas transações não existem over-spending, dobule-spending ou outros problemas. Se tudo estiver certo o novo comitê vota novamente para certificar o bloco. Isso é feito de maneira semelhante à votação “leve” em que cada nó processa cada conta gerenciadas por ele para selecionar um comitê e enviar os votos.
Esses votos são coletados e validados por cada nó até que um quorum seja alcançado, iniciando o término da rodada e solicitando que o nó crie um certificado para o bloco e grave-o na blockchain. Nesse ponto, uma nova rodada é iniciada e o processo recomeça. Se um quorum não for atingido em uma votação do comitê de certificação por um certo tempo limite, a rede entra no modo de recuperação.
Conclusões sobre o protocolo
Algorand através do protocolo Pure Proof of Stake acaba por ser uma blockchain segura, escalável, descentralizada e que pode evoluir de forma consensual ao longo do tempo sem bifurcações. Uma vez entendido o poder do Pure Proof of Stake de Algorand cada um pode participar do protocolo de consenso com um hardware mínimo registrando a própria conta “online” ou simplesmente guardando os próprios ALGOs “offline” numas das carteiras que suportam o protocolo para ganhar a recompensa de staking (lembrando que não é preciso participar do protocolo para receber a recompensa).
Se você gostou desse artigo inscreva-se no canal da comunidade Algorand Brasil e obtenha seus primeiros OBA, o Algorand Standard Asset criado cooperativamente como tokenização da energia da nossa comunidade.
Moeda Criptográfica: Do Bitcoin ao Algorand e Fundamentos do Peer-to-Peer
Pingback: Moeda Criptográfica: Do Bitcoin Ao Algorand E Fundamentos Do Peer-to-Peer - Criptomedia.com.br