Análise de pesquisa original da Web3.com Ventures

0xFishylosopher

Introdução

Com o recente lançamento da mainnet da Aptos e seu lançamento de token na Binance e outras grandes exchanges centralizadas, não há melhor momento para escrever uma análise exploratória deste projeto há muito aclamado. Filho órfão das tentativas de Meta de criar a criptomoeda Libra, Aptos dá continuidade ao ideal de Libra de ser o blockchain que integrará o próximo milhão de usuários em criptografia.

O foco geral do Aptos é fornecer um blockchain escalonável, seguro e confiável [1]. Para fazer isso, Aptos conta com uma nova linguagem de contrato inteligente, Move, aparentemente uma linguagem “mais segura” do que o atual “padrão ouro” do Solidity da Ethereum. É claro que o Aptos não é o primeiro blockchain L1 que se comercializa como “escalável, seguro e confiável”. Outras cadeias, principalmente Solana, também tentaram usar isso como slogan no passado, com sucesso misto [2]. Neste ensaio, tentarei partir dos atributos básicos da linguagem Move, analisar os fundamentos técnicos do Aptos no contexto de outros projetos semelhantes e fornecer uma avaliação crítica sobre o potencial e as limitações desta nova cadeia.

Mover idioma

Você não pode fazer uma análise do Aptos sem uma análise do Move Language. Na verdade, é provavelmente daí que vem a maior parte do potencial do Aptos. Move foi originalmente desenvolvido pela Libra Team da Meta (agora chamada Diem) para fornecer um modelo de programação de contrato inteligente paradigmaticamente diferente em comparação com outras linguagens de contrato inteligente; em vez de adotar uma abordagem baseada em transações, o Move adota uma abordagem baseada em recursos para definir modelos de contratos inteligentes [3].

Então, o que tudo isso significa? Começando com o Bitcoin, a grande maioria dos blockchains notáveis ​​adotaram uma abordagem de “transação primeiro”, onde cada entrada no bloco de um blockchain é uma transação (digamos, entre Alice e Bob). Uma transação é um objeto relativo; para que haja uma transação, é necessário que existam endereços de Alice e de Bob. Para garantir que Alice não esteja “gastando duas vezes” uma moeda em uma abordagem que prioriza a transação, precisamos verificar se não há conflito com todas as outras transações, um incômodo que inevitavelmente retarda as transações.

Por outro lado, a abordagem “baseada em recursos” do Move é dramaticamente diferente. Em vez de registrar linhas de transações de A a B, Move registra o objeto (ou recurso) mudando de mãos e apenas atualiza os atributos de acordo. É importante ressaltar que os recursos são entidades atômicas - um recurso X existente não depende de nenhum outro recurso existente, ao contrário do caso das transações, onde uma transação T depende da existência de dois agentes anteriores, A e B. Assim, ter uma abordagem baseada em recursos permite uma estrutura muito mais atômica e independente, otimizada para execução paralela.

“Recursos” em Move são essencialmente objetos que possuem certos atributos. No jargão técnico, elas são estruturas implementadas (ou seja, uma estrutura de dados de contêiner) [4]. Neste ponto, pessoas com experiência em programação Ethereum podem levantar uma questão: Solidity também possui estruturas, assim como outras estruturas de dados. O que torna as estruturas do Move especiais? Acredito que a diferença mais importante é que enquanto as structs no Solidity têm uma parte relativamente periférica na linguagem (sendo usadas principalmente para maior clareza), as structs são a base de tudo no Move. Além disso, as estruturas do Move têm diferentes “habilidades”, incluindo “copiar”, “descartar”, “armazenar” e “chave”, que definem se um objeto é duplicável, armazenável, excluível, etc. [5]. Este tipo de notação de estrutura é completamente diferente do Solidity, ou mesmo da grande maioria das linguagens de programação comuns (por exemplo, C/C++). No entanto, estas diferentes “habilidades” são profundamente intuitivas. Algumas coisas você pode “copiar”, como uma moeda ou ficha. Algumas coisas você pode “deixar cair” ou jogar fora. Outras coisas, como um ativo digital exclusivo, podem não poder ser copiadas. Agora considere a seguinte definição oficial de “recurso” no Move:

“Muitas vezes nos referimos aos valores estruturais como recursos se eles não puderem ser copiados e descartados.” — Estruturas e recursos, documentação de movimentação de idioma [4]

Portanto, “recursos” são essencialmente “estruturas” únicas que sempre estarão disponíveis para você. Como romantico.

A redefinição completa de uma “estrutura” do Move permite que ele use uma estrutura de dados para definir sucintamente tokens, NFTs, contratos inteligentes e outros ativos digitais em uma abordagem limpa e modular [6]. Isso é algo que o EVM da Ethereum simplesmente não consegue comparar; qualquer pessoa com alguma experiência em desenvolvimento usando EVM sabe como é frustrante lidar com estruturas (e estruturas aninhadas) no Solidity.

Crucialmente, a abordagem baseada em recursos do Move garante as suas garantias de segurança. Como menciona o whitepaper da Move, em muitos programas existe a representação indireta de ativos, o que significa que a escassez e o controle de acesso não são escaláveis. Por exemplo, embora a escassez de Ether seja codificada e protegida pelo EVM, outros tokens ERC-20 “não herdam essas proteções, eles devem ter cuidado para não introduzir bugs que permitam duplicação, reutilização ou perda de ativos”, [4]. Considere o clássico ataque de reentrada. Isso é algo que há muito atormenta os projetos de EVM, muitas vezes fazendo com que percam milhões e milhões de dólares [7]. Devido à abordagem baseada em recursos do Move, o ataque de reentrada é impossível no Move. Assim, a barreira para a codificação de entrada do Move é indiscutivelmente muito mais acessível do que o EVM – um fator crucial para a adoção em massa.

Aptos — Princípios Técnicos

Provavelmente a maior conquista do Aptos é simplesmente colocar o Move como linguagem no mercado. ****Na verdade, grande parte do design do Aptos é retirado diretamente do blockchain Diem (Libra) desenvolvido pela Meta. Vale lembrar que Aptos é uma rede que tem ênfase em escalabilidade e segurança. Existem duas implementações técnicas principais usadas para conseguir isso. A primeira está na sua camada de consenso, nomeadamente o mecanismo de consenso AptosBFT. A segunda é sua camada de execução, ou mecanismo de execução Block-STM. Vamos examiná-los em ordem.

Primeiro, o AptosBFT é um mecanismo de consenso bizantino tolerante a falhas, o que essencialmente significa que ele pode continuar a garantir a segurança desde que não mais que 1/3 dos nós da rede sejam atores maliciosos [8]. Esta é uma prática padrão: a Prova de Trabalho do Bitcoin, a Prova de Participação do Ethereum, etc. são todas tolerantes a falhas bizantinas. Então, como o AptosBFT realmente implementa seu mecanismo de consenso? Como todas as outras cadeias de Prova de Participação, o Aptos depende de nós validadores “apostados”. Ele implementa uma variante do algoritmo de consenso HotStuff, um algoritmo PoS moderno que oferece um protocolo de comunicação muito mais limpo entre nós em comparação com modelos anteriores (por exemplo, pBFT), fazendo com que os nós se comuniquem com um “líder rotativo” em vez de com qualquer outro nó [9 ]. Embora o AptosBFT introduza diversas otimizações no HotStuff, mais notavelmente um “mecanismo de rotação de chaves” (para aumentar a segurança) e uma redução na sobrecarga (para aumentar a escalabilidade), não há grandes mudanças estruturais no design PoS do HotStuff [10].

Por outro lado, o mecanismo de execução paralela Block-STM é um design muito mais original e, sem dúvida, o principal avanço técnico do projeto [11]. Lembre-se de que os recursos são atômicos – a mudança de mãos de um determinado recurso X não depende de nenhum outro recurso. Ao agrupar as transações em blocos (como peças de lego), podemos aproveitar um enorme paralelismo na execução de transações de recursos, obtendo um aumento de 20x na velocidade de computação em comparação com o Ethereum [11].

Mas como isso se compara ao Solana e outros mecanismos de execução paralela? A principal inovação de Solana foi codificar todas as suas dependências de contratos inteligentes para permitir a realização de execuções paralelas. Com todas as dependências conhecidas antecipadamente, o mecanismo de execução Solana pode então bloquear as dependências necessárias antes do tempo de execução. Por outro lado, o Aptos gerencia dependências dinamicamente, primeiro executando todas as transações “de forma otimista” e, em caso de falha, executando novamente aquelas transações específicas que falharam [12].

Vamos usar uma analogia simples para explicar o que foi dito acima. Ethereum é uma estrada de pista única onde todos os carros devem viajar em uma única linha, uns atrás dos outros, enquanto Solana e Aptos são vias expressas de quatro pistas. Isso obviamente acelera as coisas. Mas a questão é: como os carros trafegam na via expressa? No caso de Solana, cada carro tem essencialmente uma faixa específica atribuída e sempre circulará ao longo da faixa. Isso é muito rápido e eficiente na melhor das hipóteses, mas se o processo de atribuição der errado, você terá um cenário muito ruim. Por outro lado, no caso dos Aptos, primeiro os carros recebem algumas faixas, mas se isso não funcionar, os carros podem desviar para outras faixas para evitar acidentes. Portanto, mesmo que o Aptos possa não funcionar tão rápido quanto Solana no melhor cenário, ele é mais confiável que Solana e tem um cenário melhor no pior caso [13].

Avaliação — Potencial e Limitações

Aptos é atualmente a primeira e única grande rede L1 baseada em Move que lançou uma rede principal. Como tal, o lançamento da mainnet do Aptos é um evento incrivelmente simbólico; o dinheiro e a atenção da mídia que a Aptos atraiu não são necessariamente proporcionais à sua inovação técnica inerente.

Conforme mencionado acima, a principal inovação técnica que o próprio Aptos fez está em seu mecanismo de execução paralela Block-STM. A maioria dos outros aspectos técnicos, incluindo seu mecanismo de consenso e o uso da linguagem Move, são produtos legados marginalmente melhorados, herdados do Meta [14]. Em relação ao mecanismo de execução paralela Block-STM, não está claro se isso causará uma diferença qualitativa entre a experiência do usuário no Aptos e a experiência do usuário no Solana; se a experiência do usuário for a mesma, o usuário não se importará como ela será implementada no nível técnico.

Tal como acontece com qualquer projecto de infra-estruturas, o sucesso a longo prazo da Aptos depende dos projectos que escolhem construir sobre ela. Atualmente, os projetos em seu ecossistema, como o Liquidswap DEX, o mercado Topaz NFT e o serviço de domínio Aptos Names, embora sejam produtos necessários em qualquer ecossistema blockchain, não são exclusivos o suficiente para o design do Aptos [15]. Esses projetos são como um supermercado, uma escola e um hospital em uma pequena vila. Embora necessários ao funcionamento da aldeia, não conferem à aldeia qualquer carácter único que não se encontre em nenhuma outra aldeia.

Olhando para trás no tempo, parte do sucesso de Solana pode ser atribuída a projetos como o StepN, que foram realmente capazes de aproveitar a vantagem do paralelismo de Solana. Esses projetos GameFi e SocialFi geralmente envolvem grandes quantidades de dados paralelos relativamente isolados. Assim, essas aplicações são adequadas exclusivamente para mecanismos de execução paralela, como Aptos e Solana, ao mesmo tempo em que são capazes de trazer uma grande base de consumidores e alto volume de transações. Na verdade, a certa altura, StepN sozinho representava cerca de cerca de 20% dos usuários pagantes de Solana [16].

Assim, para que o Aptos tenha sucesso como projeto de infraestrutura, é necessário que haja um conjunto único de projetos que aproveitem muito o mecanismo de execução paralela do Aptos, projetos que não poderiam ser realizados no Ethereum ou mesmo no Solana. Com o novo design Block-STM da Aptos, estes poderiam potencialmente tomar forma na forma de uma nova classe de projetos SocialFi onde os usuários interagem em pequenos grupos (como bate-papos em grupo). Como esses grupos podem ser fluidos e dinâmicos, ao mesmo tempo que são um tanto independentes uns dos outros, eles são muito mais adequados ao mecanismo de execução paralela do Aptos do que ao do Solana ou do Ethereum. Mas é claro que isto é apenas uma especulação abstrata.

No entanto, o lançamento da rede principal do Aptos ainda é um evento extremamente importante e simbólico no mundo criptográfico. Representa o culminar de anos de esforços dos meta engenheiros para dar vida a um paradigma qualitativamente diferente para resolver o gargalo de escalabilidade do Ethereum. Os recursos de linguagem exclusivos do Move significam que inevitavelmente haverá DApps que serão muito melhores para serem implementados no Move do que no Solidity ou em outras linguagens de contratos inteligentes. Mas será que esses projetos serão necessariamente implementados no ecossistema Aptos? Ninguém sabe. Aptos pode desfrutar de algumas vantagens de ser pioneiro ao poder colocar o Move em produção e vincular seu nome à linguagem Move. Mas, ao mesmo tempo, pode muito bem sofrer o destino semelhante ao do MySpace de ser o pioneiro.

Pelo menos uma coisa é certa: o Aptos pode ser a primeira experiência do mercado com o Move, mas certamente não será a última [17].

🐦 @0xfishylosopher

📅 22 de outubro de 2022

Isenção de responsabilidade: esta pesquisa é apenas para fins informativos. Não constitui conselho de investimento ou recomendação de compra ou venda de qualquer investimento e não deve ser utilizado na avaliação dos méritos de tomar qualquer decisão de investimento.

Referências

[1] Veja a página principal do Aptos Labs: https://aptoslabs.com/

[2] Introdução a Solana: https://www.forbes.com/advisor/investing/cryptocurrency/what-is-solana/

[3] Whitepaper sobre Move Language: https://diem-developers-components.netlify.app/papers/diem-move-a-language-with-programmable-resources/2020-05-26.pdf

[4] Mover documentação do desenvolvedor para estruturas e recursos: https://github.com/move-language/move/blob/main/language/documentation/book/src/structs-and-resources.md

[5] Detalhes sobre habilidades estruturais: https://move-language.github.io/move/abilities.html

[6] Consulte o tutorial do Move Language: https://101blockchains.com/move-programming-language-tutorial/

[7] https://blog.chain.link/reentrance-attacks-and-the-dao-hack/

[8] Detalhes da tolerância a falhas bizantinas: https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained

[9] Modelo de consenso HotStuff: https://hackernoon.com/hotstuff-the-consensus-protocol-behind-safestake-and-facebooks-librabft

[10] Consenso AptosBFT: https://blog.pontem.network/aptosbft-all-you-need-to-know-about-the-bft-consensus-in-aptos-ff4cf22c7a80

[11] Consulte o artigo técnico do Block-STM: https://arxiv.org/abs/2203.06871

[12] Comparação do mecanismo de execução Aptos vs Solana: https://www.gofyeo.com/post/aptos-vs-solana-a-technical-comparison-part-1

[13] Análise do pior caso Aptos como O(n²), Solana como O(n⁴). Detalhes: https://antiape.substack.com/p/cf40447d-d674-4454-9e09-f003517de6de?s=r

[14] Consulte o artigo técnico da Aptos: https://aptos.dev/assets/files/Aptos-Whitepaper-47099b4b907b432f81fc0effd34f3b6a.pdf

[15] Aptos Ecosystem: https://coinmarketcap.com/alexandria/article/what-is-aptos-the-ultimate-guide-to-the-aptos-ecosystem

[16] Do Twitter da Messari Crypto: https://twitter.com/MessariCrypto/status/1567880625218019333

[17] Veja Sui, outra linguagem baseada em movimentos: https://sui.io/