Facebook Libra e alguns aspectos da tecnologia
O documento oficial intitulado “Libra White Paper” foi escrito por 53 autores, e se você visitar o site verá que ele possui várias partes e está organizado como uma “colcha de retalhos”.
O texto a seguir é o produto da minha leitura dos vários documentos oficiais parte do “libra – white paper”, e das 26 páginas do texto referente à linguagem de programação onde o funcionamento da rede é descrito, assim como o protocolo a ser usado pela nova criptomoeda do Facebook.
O primeiro aspecto que salta aos olhos de qualquer cripto-entusiasta são os chamados “validadores” que formam a autoridades da rede. A descrição começa afirmando que esta “autoridade” será responsável pela manutenção de um banco de dados (você leu corretamente!) de recursos programáveis, algo tipo “smart contracts”.
Para aqueles que não buscam o detalhe técnico da plataforma, sugiro a leitura a partir do tópico Política Monetária do Ecossistema Libra / Move.
Continuando, o documento explicitamente estabelece que o sistema será controlado por um conjunto de entidades organizadas hierarquicamente, note que o banco de dados citado é para os “recursos programáveis”, e não apenas para moeda digital.
O uso de palavras genéricas como “recursos” já sinaliza que o Libra pretende ser mais do que apenas uma stablecoin. Esses recursos são de propriedade de diferentes contas de usuários autenticadas pela criptografia de chave pública e seguem as regras personalizadas, especificadas pelos desenvolvedores desses recursos.
As transações são baseadas em contratos pré-definidos e, em versões futuras, em contratos inteligentes definidos pelo usuário na linguagem de programação chamada Move. A linguagem Move vem sendo usada para definir os mecanismos principais de muitas redes blockchain.
O uso de uma linguagem originalmente usada para “smart contracts” cria muitas questões sobre a solidez do sistema em relação a disputas que venham a ocorrer nos contratos e nas operações do dia-a-dia. Perguntas sobre a facilidade de uso por parte de desenvolvedores e quais salvaguardas estarão disponíveis para proteger o desenvolvedor de dar um tiro no pé ainda não encontram respostas definitivas.
Autoridade Central
Parece que haverá uma federação que poderá se transformar num sistema baseado em votação ou algum tipo de sistema baseado em reputação pré-existente: a Associação Libra.
O ecossistema oferece uma nova moeda global, chamada Libra, e que será totalmente apoiada por uma cesta de serviços e depósitos bancários e tesourarias, envolvendo inclusive bancos tradicionais. Contudo, ainda há esperança de um ambiente descentralizado: o Libra é um protocolo genérico de ativos criptográficos, cujo primeiro ativo será uma stablecoin. Mais poderá vir pela frente.
Com o passar do tempo, a elegibilidade da associação mudará para se tornar completamente aberta e baseada apenas nas participações de cada membro da rede Libra. Tudo indica que o chamado “Proof of Stake” será o protocolo de consenso. A associação publicou relatórios delineando “(…) o roteiro para a mudança de direção para um sistema ‘permissionless’ ”.
O fato de ser a primeira vez que uma rede distribuída passaria de “permissioned” para “permissionless” cria incerteza quanto à integridade do próprio funcionamento do protocolo de consenso. No entanto para evitar a volatilidade da criptomoeda, um conjunto de entidades deverá manter a porta aberta para o sistema financeiro tradicional. Este será um ponto persistente de controle centralizado através da Associação Libra.
Os “validadores” se revezariam no processo de aprovação das transações. No âmbito do funcionamento da rede, quando um validador atua como líder, ele propõe as transações a serem validadas, tanto aquelas diretamente submetidas a ele, quanto às submetidas indiretamente por meio de outros validadores. Todos os validadores executam as transações e formam uma estrutura de dados autenticada que contém um novo registro histórico, o chamado “ledger”. Os validadores votam no autenticador para que a estrutura de dados seja incluída como parte do protocolo de consenso.
O processo se assemelha ao “Practical Byzantine Fault Tolerance”, que é um algoritmo com mais de 20 anos de idade, sendo bem documentado e compreendido. Embora tenha havido alguns ajustes, na seção 5 do “white paper” o que é chamado LibraBFT é na verdade uma variante do protocolo de consenso HotStuff.
O modelo de conta faz sentido neste caso porque é improvável que o Facebook esteja preocupado com a privacidade, embora pareça sim interessado na implementação de “smart contracts”.
Modelo Lógico de Dados
O protocolo Libra usa um modelo de dados baseado em contas para codificar o estado do “ledger”, uma entre outras semelhanças com o Ethreum.
Portanto, do ponto de vista da estrutura de dados, o Libra é mais parecido com o Ripple do que com o Bitcoin. Um modelo UTXO tem prós e contras, (como melhor privacidade e um histórico de transações mais robusto devido à simplicidade do histórico baseado em saída), mas pode ser mais difícil de trabalhar com contratos inteligentes complexos que impõe regras de negócios, auditorias, inúmeras partes interessadas e outras interações em termos de “business logic”.
O protocolo Libra não vincula contas a uma identidade do mundo real. Um usuário é livre para criar várias contas gerando vários pares de chaves. As contas controladas pelo mesmo usuário não possuem um link entre si. Este esquema segue o exemplo do Bitcoin e Ethereum na medida em que fornece pseudonimato para os usuários.
A pergunta que permanece é se esse pseudonimato será extendido ao Libra, a criptomoeda. Algo para ser observado será quanto ao grau de abertura do sistema aos desenvolvedores, e se estes se sentirão livres e encorajados para criar aplicativos que visem a manutenção da privacidade.
No que tange ao código no smart contract, a linguagem oferece um “type” para cada recurso por módulo. Os tipos de recursos são tipos nominais que consistem no nome do tipo, e no nome e endereço do módulo declarante do recurso. Parece que um endereço pode ser gerado, e esse endereço pode ter um número arbitrário de ativos atribuídos a ele, contanto que cada ativo tenha um nome exclusivo.
As semelhanças com o Solidity não param por aí. O que, ao menos agora, sinaliza como que o sistema está protegido contra ataques, mas que por outro lado aumenta o custo da transação num sistema similar ao da Ethereum.
“Não há conceito de um bloco de transações no histórico do ledger.”
Não há estrutura de dados de blockchain no protocolo Libra, os blocos são uma construção lógica virtual usada pelos validadores com o propósito de coordenar o estado da rede a cada momento de confirmação. Pois é, um banho de água fria, mas agora a ideia de “banco de dados” citada no início começa fazer sentido.
Na versão inicial do protocolo Libra, apenas um subconjunto limitado da funcionalidade do Move está disponível para os usuários. Enquanto o Move é usado para definir os principais conceitos do sistema, como a moeda Libra, os usuários não podem publicar módulos personalizados que declaram seus próprios tipos de recursos.
Essa abordagem permitiria que a linguagem e o conjunto de ferramentas Move se desenvolvam, com base na experiência e implementação dos principais componentes, isso antes de serem expostos aos usuários.
A abordagem também mostra desafios de escalabilidade, seja na execução de transações e armazenamento de dados, seja em questões inerentes a uma plataforma projetada para executar smart contracts com vários propósitos.
Isso parece bastante semelhante aos planos de “associação aberta de validadores”, mas parece que o Facebook ainda não resolveu nenhum dos grandes problemas que a Ethereum vem trabalhando há anos.
Para gerenciar a demanda por capacidade de processamento, o protocolo Libra cobra taxas por transações, e estas serão denominadas em moedas de Libra.
As moedas de Libra são, na verdade, a unidade nativa do protocolo, assim como ETH é a unidade nativa do Ethereum. Isso nos leva a outra questão de privacidade: você pode adquirir moedas sem AML / KYC (Anti Money Laundry / Know Your Client)? Se a resposta é Não, então o usuário comum do Facebook não terá acesso para transacionar com o Libra e suas funcionalidades.
Além do mais, o tal acesso a serviços bancários a ser oferecido aos 1.7 bilhões de novos usuários na mira do Facebook parece ficar comprometido. Em comunidades isoladas e pobres do globo, da mesma forma com indivíduos não têm acesso à rede bancária, tampouco têm acesso a serviços governamentais.
Privacidade, portanto, é carta fora do baralho, o que não é surpresa pra ninguém. Assim como não será surpresa se, daqui há alguns anos, na eventualidade de existir uma grande adesão ao Libra, o Facebook decidir arbitrariamente mudar as regras do jogo.
Isso sem contar que o histórico de constantes revisões nos Termos de Uso, não oferece a estabilidade necessária para que um sistema financeiro possa funcionar organicamente, obter maturidade e credibilidade. Imagina se o Banco Central mudasse as regras do jogo a toda hora, arbitrariamente e sem levar em consideração o mercado e a economia.
Quando examinados os elementos da carteira Calibra fica claro que será necessário preencher os requerimentos de AML / KYC. Tal fato levanta a dúvida se haverá adesão ao sistema sem que o usuário se submeta a um rígido controle individual por parte do Facebook e seu time.
O documento ainda cita que o sistema é projetado para ter taxas com custo baixo durante “operação normal”, quando houver capacidade suficiente disponível. Isso é muito vago e levanta muitas questões: Quanto é “custo baixo”? O que é operação normal? O que é capacidade suficiente?
Executando Transações
Muitas partes da lógica central da plataforma são definidas usando o Move, incluindo a dedução de taxas de gás. Para evitar a circularidade, a VM desabilita a medição de gás durante a execução desses componentes. Desabilitar componentes da VM quando o sistema está rodando parece perigoso, mas os autores do documento observam que os tais componentes principais devem ser escritos cautelosamente para evitar ataques DoS. Mas como garantir a integridade? Ninguém cria uma vulnerabilidade de propósito? Ou será que sim?
Por outro lado, o recurso principal do Move é a capacidade de definir tipos de recursos personalizados. Em outras palavras, o Move oferece salvaguardas especiais. Um recurso nunca pode ser copiado, apenas movido. O que em teoria permite representar as moedas de Libra como um tipo de recurso na linguagem Move. As moedas de Libra são ou não um ativo nativo?
O bytecode baseado em “stack” do Move tem menos instruções do que um código fonte. Além disso, cada instrução tem uma semântica simples que pode ser expressa através de um número ainda menor. Isso reduz os rastros no protocolo, simplifica o processo e facilita a identificação de erros de implementação. Essa é uma característica apreciada pela comunidade de desenvolvedores, que espera que isso se traduza numa melhor segurança no script do que a do Ethereum.
“Libra Blockchain” não é na verdade uma blockchain
A plataforma Libra é uma estrutura de dados e armazenamento autenticado. O protocolo Libra usa uma única árvore Merkle para fornecer uma estrutura de dados autenticada do registro histórico das transações. O esse histórico usa a abordagem “Merkle tree accumulator” para formar árvores Merkle, que também fornece operações de acréscimo mais eficientes.
Ainda assim, vemos que o “Libra Blockchain” não é realmente uma blockchain. É estranho que o protocolo seja chamando de blockchain quando a estrutura de dados e registros é um conjunto de estados de cada estágio da transação, e que contém uma assinatura criptográfica (controlada pelo Facebook, ou melhor, pela associação).
Os validadores estão assumindo compromissos a cada estado do “ledger”, e todos os estados dos registros também estão conectados através dos hashes existentes nas árvores Merkle. No entanto, a comunidade permanece no “ver pra crer”, já que no documento não há menção sobre os dados serem conectados com backlinks formando assimuma cadeia, e muito menos uma cadeia de blocos.
O autenticador de uma conta é o hash serializado
Observe que essa operação exige recalcular o autenticador para toda a conta após toda e qualquer modificação. O custo dessa operação é determinado em função do comprimento do string resultante em byte da conta inteira. A comunidade de desenvolvedores aponta isso como uma vulnerabilidade, uma abertura para ataques DoS se não houver limitações quanto à quantidade de dados armazenados por uma determinada conta.
Da mesma forma, a comunidade aponta a escalabilidade como um problema. Na medida que o sistema for sendo usado, armazenamento associado às contas cresce exponencialmente e poderá tornar-se imenso. Assim como o gás incentiva o uso responsável dos recursos de processamento, espera-se que um mecanismo baseado em “taxa” de armazenamento será adotado.
Falando em protocolo de consenso
O poder de voto deverá permanecer tanto durante o “epoch” quanto por um “período de tempo” após o “epoch”, a fim de permitir que os clientes sincronizem com a nova configuração. Um cliente que está offline por mais tempo que este período precisa re-sincronizar usando alguma fonte externa autenticada para adquirir um ponto de verificação em que possa confiar.
O problema é que o documento não deixa claro quanto tempo esse “período de tempo” representa. Será que o protocolo de consenso é robusto o suficiente para que participantes possam sair e reingressar à rede aleatoriamente?
LibraBFT assume que um conjunto de 3f + 1 votos é distribuído entre um conjunto de validadores que podem ser honestos, ou bizantinos. O LibraBFT permanece seguro, prevenindo ataques, como “double-spending” e “forks” quando, no máximo, os votos são controlados por validadores bizantinos.
Com N = 3f + 1, até um terço dos validadores pode ser desonesto e ainda assim não há risco de que transações sejam adulteradas. Cada validador no protocolo Libra mantém uma visão completa do sistema e se conecta diretamente a qualquer validador com o qual ele precisa se comunicar. Um validador que não pode ser conectado diretamente é considerado dentro da cota de falhas bizantinas tolerada pelo sistema. Isso vai exigir muito trabalho para possibilitar a escala do sistema considerando várias centenas de validadores.
Especificações Técnicas
A segurança do Libra depende da implementação correta dos validadores, do programa Move e do Move VM. Abordar essas questões no Libra Core é um trabalho em andamento. No documento consta que a implementação foi escrita em Rust, o que parece ser um bom começo para um bom desempenho e segurança.
Estimativas feitas por engenheiros e programadores prevêem que o protocolo Libra poderá suportar 1.000 transações de pagamento por segundo com um tempo de finalização de 10 segundos entre uma transação sendo enviada e confirmada.
Como só haverá aproximadamente 100 validadores, e todos eles estão diretamente conectados uns aos outros, o tempo de bloqueio de 10 segundos é possível.
Os requisitos mínimos para o ponto de rede, ou “peer” são: 40 Mbps Conexão com a Internet, CPU com 16TB SSD.
Algumas referências anteriores falam em preservar a capacidade de um validador executar sincronizações iniciais do zero (em vez de confiar nos estados assinados de outros validadores). Acontece que se houver um grande volume de transações, esse tipo de sincronização se tornará impraticável. O que em termos de modelo de segurança do ponto de rede (ou peer) será altamente dependente da confiança dos validadores.
Política Monetária do Ecossistema Libra / Move
Segundo o documento:
“A reserva [moeda de Libra] é o principal mecanismo para alcançar a preservação de valor. Através desse lastro, cada moeda é totalmente respaldada por um conjunto de ativos estáveis e líquidos. O contrato de moedas de Libra permite que a associação cunhe novas moedas quando a demanda aumenta e as destrói quando a demanda contrai. A associação não define uma política monetária. Ele só pode cunhar e queimar moedas em resposta à demanda de revendedores autorizados. Os usuários não precisam se preocupar com a associação que introduz a inflação no sistema ou a desvalorização da moeda: para que as novas moedas sejam cunhadas, deve haver um depósito fiat proporcional na reserva.”
Adicionar externalidades ao sistema cripto-monetário que se pretende criar demonstra um quadro de incerteza desnecessário, a não ser que o objetivo seja manter o controle sobre as diretivas e a condução de tais políticas. Como afirmado anteriormente no white paper, a rede não consegue executar scripts que usam entradas de dados externos ao estado da rede. Assim, o “pode” e “deve” no trecho acima estão certamente se referindo às políticas a serem definidas pela Associação Libra, ou pelas obrigações contratuais das quais a rede não está ciente.
O algoritmo de consenso depende do módulo Move no conjunto de validadores e da alocação de votos entre os validadores. Inicialmente, a plataforma Libra só concede votos a membros fundadores.
Assumindo que os validadores votam em alterações no conjunto de validadores, claramente existe o mesmo problema visto no “Proof of Stake”. Se um limite suficiente de chaves privadas de membros fundadores for comprometido, um invasor poderia escrever um novo histórico contabilizando transações a partir do início? Em caso afirmativo, outros pontos da rede aceitariam isso? Não está claro se o protocolo de consenso permite reescrever estados antigos ou se são “append only”.
Algumas Perguntas e Respostas
Como funciona a governança?
Podemos ver aqui que a Associação Libra é um conselho de membros e 2/3 é necessário para fazer mudanças. Eles são os únicos autorizados a cunhar ou destruir moedas Libra, mas eles podem presumivelmente fazer qualquer mudança que eles querem, se houver acordo suficiente.
É necessário AML / KYC?
Para o protocolo não seria necessário, mas a carteira Calibra (que será aparentemente administrada por entidades financeiras ou bancos tradicionais) afirma que todos os usuários serão verificados por meio de uma identidade emitida por órgão do governo. Também parece que a carteira Calibra será a única carteira disponível por um tempo. Pelo menos até o momento não está claro se os desenvolvedores e usuários podem rodar aplicativos na rede Libra que não cumprem os mesmos padrões do Calibra.
Quais são as taxas baixas? O que é operação normal? O que é capacidade suficiente?
A FAQ do Calibra Wallet promete taxas baixas, mas parece que isso pode estar em conflito com a operação do protocolo subjacente em momentos de pico. As taxas de transação serão de baixo custo e transparentes, especialmente se você estiver enviando dinheiro internacionalmente. O Calibra cortará taxas para ajudar as pessoas a economizar mais. Mas essas taxas serão bem mais altas do que as “taxas” às quais os cripto-usuários já estão acostumados
Libra será realmente aberto a desenvolvedores?
De acordo com o plano a plataforma quer avançar em direção ao consenso “permissionless”. A plataforma Libra estará aberta a todos, qualquer consumidor, desenvolvedor ou empresa pode usar a rede Libra, construir produtos sobre ela e agregar valor através de seus serviços. O acesso aberto garante baixas barreiras à entrada e à inovação, além de incentivar uma concorrência saudável que beneficia os consumidores.
Considerações sob o aspecto cripto-econômico
A primeira questão que todo desenvolvedor, empreendedor, usuário ou CEO quer ver respondida é sobre o conflito de interesses entre Facebook e liberdade de expressão e os direitos fundamentais. Em que jurisdição estarão submetidas as disputas que vierem a ocorrer? E a tutela jurisdicional do Estado no que se refere a crimes ou infrações civis? Todo mundo terá a capacidade criar e executar qualquer aplicativo tecnicamente válido na plataforma? Qual é o histórico do Facebook quanto à censura e arbitrariedade?
Facebook Libra empresta apenas os componentes da tecnologia blockchain que lhe são imprescindíveis para o funcionamento, deixando de fora os paradigmas da descentralização e privacidade. Inclusive estipula de forma indefinida que uma corpo ou autoridade central será não só onipresente, mas também determinará o controle da política e da base monetária.
Sem mencionar que a plataforma reúne em um só lugar as corporações financeiras para as quais o algoritmo de consenso blockchain foi projetado a substituir. Veja a lista:
- Mastercard,
- PayPal,
- PayU,
- Stripe,
- Visa
- Booking Holdings,
- eBay,
- Farfetch,
- Lyft,
- MercadoPago,
- Spotify AB,
- Uber Technologies, Inc.
- Iliad,
- Vodafone Group
- Andreessen Horowitz,
- Breakthrough Initiatives,
- Ribbit Capital,
- Thrive Capital,
- Union Square Ventures
No que tange à privacidade, se espera que o Facebook vai alterar os Termos de Uso, como sempre na forma de um contrato de adesão, e assim obter acesso a dados financeiros e informações comportamentais sem precedentes. A profundidade e capilaridade dessas informações pessoais são de dar inveja a qualquer regimes totalitário da história recente.
Os mais de 2 bilhões de usuários, ao aderir à plataforma Libra, endossam o início de um movimento com uma causa nobre. Permitir acesso a serviços financeiros a outros 1.7 bilhões de novos usuários, aqueles que vivem isolados em comunidades pobres da África, Índia, e Brasil, para citar algumas.
Mas ao mesmo tempo, o Facebook e seus parceiros terão a capacidade de transpassar a soberania nacional resguardada por bancos centrais e pelos marcos regulatórios dos governos ao redor do globo. Isso pode significar o fim das fronteiras, da política fiscal e tributária, da proteção ao trabalhador, e o fim de muitas economias locais.
A plataforma Libra se alcançar o sucesso esperado, representará uma grande mudança. Com a anuência destes mesmos 2 bilhões de usuários do Facebook, os efeitos dessa mudança pode representar um passo definitivo rumo a concentração de poder e influência mantido por uma única entidade global. Só o tempo dirá!
Por Pascual Ariel Arrechea
Para saber mais sobre blockchain, criptomoedas e tecnologia, me acompanhe no Quora ou visite arrechea.net
Os créditos dessa compilação no que se refere aos aspectos técnicos devem ser dados ao excelente trabalho produzido por Jameson Lopp, CTO do keys.casa, criador do statoshi.info, e fundador do bitcoinsig.com.
Saiba mais em Facebook Libra e alguns aspectos da tecnologia