Foresight Ventures: WASM – O Motor de uma Nova Era

iniciantesJan 01, 2024
Este artigo examina algumas das relações e casos de uso entre Wasm e blockchain: contratos inteligentes, interações entre cadeias, computação fora da cadeia e privacidade de dados.
Foresight Ventures: WASM – O Motor de uma Nova Era

DR

WebAssembly (Wasm) é um formato de instrução binária portátil e de alto desempenho que pode ser executado em navegadores da web. Ele foi projetado como um alvo de compilação universal que pode ser usado com múltiplas linguagens de programação e executado em diferentes plataformas.

Blockchain é uma tecnologia descentralizada de contabilidade distribuída que garante a segurança e a confiabilidade dos dados por meio do uso de criptografia e algoritmos de consenso. Blockchain pode ser usado para registrar transações, armazenar dados e executar contratos inteligentes, entre outras aplicações.

Existem vários relacionamentos e cenários de aplicação entre Wasm e blockchain:

  1. Contratos Inteligentes: Wasm pode servir como ambiente de execução para contratos inteligentes, permitindo que os contratos sejam executados em diferentes plataformas blockchain. O alto desempenho e a portabilidade do Wasm permitem a execução mais eficiente de contratos inteligentes e a usabilidade entre plataformas.
  2. Interoperabilidade entre cadeias: Wasm pode ser usado para implementar a interoperabilidade entre cadeias. Ao compilar a lógica de diferentes blockchains no código Wasm, a mesma lógica pode ser executada em diferentes blockchains, permitindo a transferência de dados e a interação entre cadeias.
  3. Computação fora da cadeia: Wasm pode ser usado para computação fora do blockchain e enviar os resultados do cálculo para o blockchain. Isso permite maior eficiência e flexibilidade na computação, ao mesmo tempo que mantém a segurança e a confiabilidade dos dados.
  4. Privacidade de dados: Wasm pode ser usado para obter proteção de privacidade de dados no blockchain. Ao compilar a lógica de processamento de dados confidenciais no código Wasm e executá-la no blockchain, a privacidade dos dados pode ser preservada e, ao mesmo tempo, garantir a verificabilidade dos cálculos.

Em resumo, a combinação de Wasm e blockchain fornece aplicativos e serviços de blockchain mais eficientes, seguros e flexíveis. A portabilidade e o alto desempenho do Wasm o tornam uma tecnologia importante na área de blockchain.

1. O que é Web Assembly?

WebAssembly é um padrão de conjunto de instruções leve e eficiente desenvolvido pelo World Wide Web Consortium (W3C). Ele é aclamado como um disruptor para a web e para a computação de alto desempenho, suportando a execução entre navegadores. Isso significa que podemos compilar diferentes linguagens de programação, incluindo C/C++, Go, Rust e muito mais, em um formato binário padrão unificado e usá-lo como um substituto para JavaScript, executando com eficiência de código quase nativo em navegadores da web.

WebAssembly, também conhecido como WASM, é uma tecnologia segura para memória e independente de plataforma que pode mapear com eficiência diferentes arquiteturas de CPU. Ele oferece várias vantagens importantes:

  • Eficiência: WASM possui um conjunto completo de recursos de linguagem e é um formato binário compacto e de carregamento rápido. Seu objetivo é aproveitar totalmente os recursos de hardware para alcançar o desempenho do idioma nativo.
  • Segurança: o WASM é executado em um ambiente de execução seguro para memória e em área restrita, e pode até ser implementado em máquinas virtuais JavaScript existentes. Em um ambiente web, o WASM segue estritamente a política de mesma origem e as políticas de segurança do navegador. Durante a compilação, o WASM limita a interface para reduzir riscos de segurança. A maioria das aplicações WASM não pode acessar a Internet (por exemplo, sem suporte de soquete) e está limitada ao acesso ao banco de dados local. Muitos problemas de segurança surgem do acesso não autorizado à memória, que pode ser atenuado durante a compilação com WASM.
  • Compatibilidade: WASM foi projetado para ser sem versão, com recursos testáveis e compatível com versões anteriores na web. Ele pode ser invocado por JavaScript, entrar no contexto JavaScript e acessar funcionalidades do navegador, como uma API da Web. WASM pode ser executado não apenas em navegadores da web, mas também em ambientes não-web, como Node.js, Deno e dispositivos IoT. Ao contrário das abordagens tradicionais que requerem compilações múltiplas, o WASM só precisa ser compilado uma vez para execução plug-and-play instantânea.

Além disso, a Web é a única plataforma verdadeiramente universal que permite o acesso às suas aplicações em qualquer dispositivo. Isso também permite manter uma única base de código, simplificar atualizações e garantir que todos os usuários possam acessar seus aplicativos. WASM suporta operações inteiras de 64 e 32 bits, que correspondem diretamente às instruções da CPU. Ao remover as operações de ponto flutuante, o comportamento determinístico pode ser facilmente alcançado, o que é necessário para algoritmos de consenso. Apoiado pelo projeto de infraestrutura do compilador LLVM, o WASM pode se beneficiar de mais de uma década de otimizações do compilador no LLVM. WASM é continuamente desenvolvido por grandes empresas como Google, Apple, Microsoft, Mozilla e Facebook, e é suportado pelos backends de navegadores desenvolvidos por essas empresas.

A beleza do WASM está na capacidade de rodar em qualquer lugar sem a necessidade de download ou instalação, pois está em formato binário. Com apenas um clique, os aplicativos da web podem ser executados imediatamente quando necessário. É ainda mais seguro do que baixar e executar arquivos binários diretamente, pois os navegadores possuem mecanismos de segurança integrados que evitam que o código executado danifique o seu sistema. Além disso, o compartilhamento de aplicativos da Web é simples: os links podem ser colocados em qualquer lugar como sequências clicáveis.

2. Por que precisamos de Web Assembly?

2.1 Web2

A Web evoluiu de uma plataforma para conteúdo estático e pequenas linguagens de script para uma plataforma poderosa e popular, repleta de aplicativos e recursos incríveis, graças à funcionalidade integrada dos navegadores e à interatividade fornecida pela Web. No entanto, as aplicações Web ainda são predominantemente conduzidas pela mesma linguagem de script (JavaScript), que não foi inicialmente projetada para realizar essas tarefas.

JavaScript era inicialmente uma linguagem de script simples destinada a trazer interatividade a documentos leves de hipertexto em aplicações Web. Seu design era fácil de aprender e escrever e não priorizava a velocidade de execução. Ao longo dos anos, melhorias significativas de desempenho na análise de JavaScript pelos navegadores levaram a aumentos notáveis de desempenho.

Com a velocidade acelerada da execução do JavaScript, a gama de coisas que podem ser feitas nos navegadores se expandiu significativamente. Novas APIs introduziram recursos como gráficos interativos, streaming de vídeo, navegação offline e muito mais. Além disso, um número crescente de aplicações que antes estavam limitadas a ambientes de desktop entrou na Web. Agora você pode editar documentos e enviar e-mails facilmente em seu navegador. No entanto, em certos domínios, o desempenho do JavaScript continua a ser um desafio. Pense nos aplicativos de software que você usa além dos navegadores: jogos, edição de vídeo, renderização 3D ou produção musical. Essas aplicações exigem cálculos extensos e alto desempenho. JavaScript se esforça para atender a esses requisitos de alto desempenho.

No entanto, não é prático substituir o JavaScript e pode até levar décadas para atingir esse objetivo, já que toda a Internet depende dele. Além disso, há uma grande comunidade que aprimora constantemente o JavaScript. Na verdade, em comparação com outras linguagens, o JavaScript tem algumas deficiências em aspectos como nulo e ==. No entanto, esses problemas não são graves o suficiente para justificar a substituição de toda a tecnologia.

Portanto, o WebAssembly não substituirá o JavaScript, mas isso não significa que o WASM não será usado no futuro. Na verdade, o uso do WASM se tornará cada vez mais difundido. Isso ocorre porque o WASM pode trazer recursos computacionais poderosos para a web, como processamento de imagens ou jogos. Com o WASM, você pode criar uma versão do Photoshop baseada na web que funcione bem ou um jogo 3D que rode a 60 quadros por segundo ou taxas de quadros ainda mais altas no navegador. Os jogos, em particular, representam um desafio porque exigem a execução simultânea de processamento de áudio e vídeo, bem como a coordenação de efeitos físicos e IA. WASM tem a capacidade de executar jogos com eficiência no navegador, abrindo a porta para trazer muitos outros aplicativos para o navegador.

A figura acima mostra uma comparação do fluxo de trabalho entre JavaScript e WebAssembly (wasm). Pode-se observar que wasm é muito mais conciso comparado ao JavaScript.

2.2 Web3

VM WASM

Em 2018, o ecossistema Ethereum começou a discutir o uso de uma VM WASM como máquina virtual de contrato inteligente, por ser considerada de melhor desempenho que a EVM. Gavin Wood, o inventor do EVM, expressou a viabilidade de substituí-lo pelo WASM, e Vitalik também afirmou que o Ethereum 2.0 será atualizado para suportar contratos WASM (eWASM) para atender a mais necessidades de desenvolvimento. Hoje, o desenvolvimento de contratos WASM já tomou forma.

2.3 Como é projetado o EVM? Por que é ineficiente?

Problema de tamanho de arquitetura

Os computadores tradicionais possuem conjuntos de instruções que aceitam entrada de 32 ou 64 bits. O EVM, no entanto, é diferente e único, pois é um computador de 256 bits projetado para lidar mais facilmente com o algoritmo hash do Ethereum, que produz saídas explícitas de 256 bits.

No entanto, o computador real que executa programas EVM precisa dividir as palavras de 256 bits em suas arquiteturas nativas para executar contratos inteligentes, tornando todo o sistema ineficiente e impraticável.

Além disso, se você deseja implementar um algoritmo complexo como SHA256 usando OPCODES básicos do EVM no Ethereum, você enfrentará momentos difíceis! Para resolver o problema do alto custo do gás na execução de programas complexos por meio do conjunto de instruções, Ethereum introduziu o conceito de pré-compilações, que compila o programa em EVM e consome uma quantidade fixa de gás. Uma pré-compilação notável é o algoritmo hash Ethereum, pois implementá-lo na máquina virtual resultaria em taxas extremamente caras quando os contratos são chamados.

Pré-compilação inchada

O problema da pré-compilação é que ela aumenta continuamente o inchaço e a complexidade da máquina virtual, sem resolver o problema central: o design ineficiente e pobre do conjunto de instruções e especificações atuais.

E se pudéssemos definir uma nova especificação e conjunto de instruções que não exigisse pré-compilação desses programas complexos, mas que, em vez disso, alcançasse com eficiência os resultados desejados por meio de instruções básicas? É aqui que o WASM entra em jogo.

2.4 Comparação entre EVM e WASM VM

  • Velocidade: WASM visa fornecer velocidade de execução mais rápida em comparação com EVM. O EVM pode ter problemas de eficiência na compilação e execução de contratos inteligentes, enquanto o WASM melhora a velocidade de carregamento e a capacidade de processamento ao converter diretamente para código compilado.
  • Contratos Pré-compilados: EVM depende de contratos pré-compilados para execução eficiente de cálculos criptográficos, mas isso pode introduzir riscos de hard forks. WASM elimina a necessidade de contratos pré-compilados, permitindo que os desenvolvedores criem contratos inteligentes eficientes e rápidos.
  • Custos de transação: com uma máquina virtual WASM mais rápida, o rendimento das transações aumenta significativamente, levando à redução da implantação de contratos e dos custos de transação. Os contratos WASM abordam as questões de altas taxas de transação e congestionamento na rede Ethereum.
  • Flexibilidade e interoperabilidade: WASM amplia a gama de linguagens disponíveis para desenvolvimento de contratos inteligentes, suportando o uso de qualquer linguagem de alto nível que compile para WASM, como Rust, C++ e JavaScript. Isso significa que os desenvolvedores podem escrever contratos inteligentes em sua linguagem preferida, incluindo estruturas maduras como o ink! para ferrugem ou pergunte! para AssemblyScript.

A equipe EWASM está atualmente integrando o WebAssembly no Ethereum para garantir uma camada de execução mais eficiente e simplificada, tornando o Ethereum adequado como uma plataforma de computação totalmente descentralizada. WASM foi adotado como padrão por muitos outros projetos, incluindo Dfinity e EOS, ambos utilizando-o para aprimorar suas camadas de execução.

2.5 Caneta (Árbitro)

O projeto Stylus é uma iniciativa da rede Arbitrum Ethereum Layer 2 que visa melhorar o desempenho da execução de contratos inteligentes através da introdução da máquina virtual WebAssembly (WASM). Os contratos podem ser executados mais rapidamente do que com o Solidity, ao mesmo tempo que reduz os custos do gás. Isso facilita a construção de contratos inteligentes de alto desempenho na rede Arbitrum e atualmente oferece suporte à compilação em C, C++ e Rust.

Suporte de pré-compilação personalizada: Stylus também oferece suporte a pré-compilações personalizadas, o que permite aos desenvolvedores implantar suas próprias pré-compilações Rust ou C++ na rede Arbitrum. Isso pode ajudar a introduzir novos algoritmos criptográficos ou outras funcionalidades específicas na cadeia, sem esperar por atualizações na cadeia. Por exemplo, a computação de tensores pode ser pré-compilada para reduzir custos de inferência, o que pode ser benéfico para o aprendizado de máquina on-chain.

Interoperabilidade com EVM: Stylus consegue integração com o ecossistema Ethereum existente através da interoperabilidade com a Máquina Virtual Ethereum (EVM). Isto significa que os contratos Stylus podem interagir com contratos EVM existentes e compartilhar o mesmo estado global que o EVM.

Reentrada: Ao contrário do Cosmos Wasm, o Stylus Rust SDK introduz um recurso de reentrada e permite que os desenvolvedores o habilitem manualmente. Isto permite que os contratos tenham mais flexibilidade na interoperabilidade, mas os desenvolvedores precisam gerenciar cuidadosamente o estado para garantir a segurança.

Com base no próspero ecossistema do Arbitrum, a integração do Stylus é talvez a integração WASM mais significativa. Também aumenta a competitividade do Arbitrum entre os campos zkRollup.

2.6 Engrenagem (Polkadot)

O protocolo Gear está criando uma tecnologia que pode ser implantada como um parachain Polkadot, servindo como uma ferramenta para hospedar contratos inteligentes. Semelhante ao Polkadot, o Gear também utiliza a estrutura Substrate, que simplifica o processo de criação de diferentes blockchains para aplicações específicas. O Substrate fornece funcionalidade pronta para uso, permitindo que as pessoas se concentrem na criação de mecanismos personalizados com base no protocolo.

Anteriormente, o custo de lançamento de uma blockchain era alto, mas o Gear permite que os desenvolvedores de dApps se concentrem em seus projetos em vez de construir e operar uma blockchain inteira do zero.

O principal motor do protocolo Gear é o módulo de contrato inteligente. No caso do Gear, qualquer contrato inteligente é um programa WebAssembly compilado em diferentes linguagens como Rust, C e C++. Para desenvolvedores de fora do mundo criptográfico, a barreira de entrada é baixa porque eles podem construir contratos inteligentes em um ambiente familiar. Os desenvolvedores acham mais fácil experimentar linguagens de programação de contratos inteligentes.

A arquitetura de contrato inteligente do Gear utiliza o modelo de ator subjacente e fornece as seguintes funcionalidades:

  • Memória persistente para programas imutáveis
  • Tratamento de mensagens assíncronas
  • Superfície de API mínima, intuitiva e suficiente para contexto de blockchain
  • Modelo proxy de comunicação do ator entre componentes on-chain para maior capacidade de composição e melhor compatibilidade com execução e fragmentação de código paralelo.

Cada programa possui uma quantidade fixa de memória, que o Gear permite controlar. Um programa só pode ler e escrever em sua própria memória e não pode acessar o espaço de memória de outros programas. Cada programa possui seu próprio espaço de memória independente e as informações nos nós do Gear podem ser processadas em paralelo.

2.7 CosmWasm(Cosmos)

CosmWasm é uma plataforma de contrato inteligente baseada em Wasm moderna e poderosa que pode ser facilmente integrada ao Cosmos-SDK. Isso mostra uma das principais vantagens do CosmWasm: os contratos escritos com CosmWasm são totalmente integrados com IBC (Comunicação Inter-Blockchain) nativamente, permitindo que desenvolvedores e usuários entrem em um futuro multi-cadeia. Atualmente, apenas Rust é compatível.

Vantagens do CosmWasm

  1. Segurança: Aumenta a segurança de contratos inteligentes usando a linguagem de programação Rust
  2. Compatibilidade entre cadeias: Suporta o protocolo IBC (Inter-Blockchain Communication) dentro do ecossistema Cosmos.
  3. Desempenho: Demonstra maior eficiência e menores custos de transação em certos casos em comparação com a tradicional Máquina Virtual Ethereum (EVM).
  4. Amigável ao desenvolvedor: os recursos de segurança de tipo e memória da linguagem Rust ajudam a reduzir certos tipos de erros em contratos inteligentes.

Desafios e Limitações

  1. Curva de aprendizado: Rust pode ter uma curva de aprendizado mais acentuada em comparação com linguagens de contratos inteligentes mais comumente usadas, como Solidity. Para aumentar o potencial de adoção generalizada, o CosmWasm precisa suportar a compilação em mais idiomas.
  2. Ecossistema e ferramentas: Embora cresçam, as ferramentas de desenvolvimento e o ecossistema do CosmWasm ainda podem ser relativamente limitados em comparação com plataformas de contratos inteligentes maduras como Ethereum.
  3. Participação de mercado e reconhecimento: No espaço de plataformas de contratos inteligentes, CosmWasm pode ter menor conhecimento em comparação com plataformas como Ethereum e Binance Smart Chain, o que afeta sua capacidade de atrair desenvolvedores e usuários.
  4. Desafios de manutenção e atualização: Embora o CosmWasm forneça funcionalidade de atualização de contratos, manter e gerenciar atualizações para contratos inteligentes ainda é uma tarefa complexa que precisa ser tratada com cuidado para evitar vulnerabilidades de segurança.
  5. Problemas de compatibilidade: Projetos acostumados com EVM ou outros ambientes de contratos inteligentes podem enfrentar desafios de compatibilidade ao migrar para CosmWasm.

2.8 ZK-WASM

Além da máquina virtual wasm, há também uma tecnologia emergente recente chamada ZKWASM. O inventor, Delphinus Labs, abriu o código do ZK-WASM no GitHub. ZKWASM permite que os desenvolvedores verifiquem a exatidão dos cálculos executados sem reexecutá-los. Ao aproveitar o ZKWASM, os desenvolvedores podem construir com flexibilidade aplicativos à prova de conhecimento zero (ZKP) usando várias linguagens de programação. Esses aplicativos podem ser executados perfeitamente em navegadores da web.

ZKWASM é derivado de ZKSNARK, que é uma combinação de SNARG e provas de conhecimento zero. Vamos explicar melhor. Normalmente, para usar o ZKSNARK, você precisa escrever um programa em uma linguagem de circuito aritmético ou em uma linguagem amigável a circuitos, como Pinóquio, TinyRAM, Buffet/Pequin, Geppetto, estrutura xJsnark, ZoKrates, etc. Isto representa uma barreira aos programas existentes, tornando difícil para eles aproveitarem o poder do ZKSNARK. No entanto, existe outra maneira, que não é usar o ZKSNARK no nível do código-fonte, mas no nível do bytecode de uma máquina virtual e, em seguida, implementar uma máquina virtual que suporte o ZKSNARK. Delphinus Labs adotou a última abordagem incorporando toda a máquina virtual WASM em um circuito ZKSNARK. Como resultado, os aplicativos WASM existentes podem ser executados diretamente no ZKWASM sem quaisquer modificações. Portanto, os provedores de serviços em nuvem podem provar a qualquer usuário que os resultados dos cálculos são computados honestamente e não divulgarão nenhuma informação privada.

ZKWASM oferece vários casos de uso, como permitir a verificação on-chain de operações realizadas no navegador. Ele permite interações baseadas na web que são verificáveis no blockchain. Outros casos de uso incluem serviços Oracle, computação fora da cadeia, automação, preenchendo a lacuna entre Web2 e Web3, gerando provas para aprendizado de máquina e processamento de dados, e até mesmo jogos e aplicativos sociais. Com a crescente adoção, o zkWASM expande as possibilidades do Web3 e integra os desenvolvedores do Web2 neste cenário transformador.

Através da implementação ZKWASM do Delphinus Lab, os desenvolvedores podem aproveitar o poder das provas de conhecimento zero para aumentar a segurança e a privacidade de seus aplicativos, abrindo caminho para um ecossistema digital mais confiável e descentralizado.

3. Conclusão

O desempenho da Web e o futuro da camada de execução da plataforma de contratos inteligentes são promissores. Os dApps não apenas terão desempenho superior, mas a integração do WASM também tornará mais fácil para aqueles familiarizados com linguagens convencionais como Rust e Go desenvolver contratos inteligentes, sem ter que aprender as complexidades da solidez ou outras linguagens de desenvolvimento de blockchain. De acordo com a Evans Data Corporation, existem quase 27 milhões de desenvolvedores em todo o mundo, e esse número está crescendo constantemente, com um aumento esperado para mais de 28,7 milhões até 2024. No entanto, o número de desenvolvedores na área de blockchain ainda é inferior a 30.000, representando apenas cerca de um milésimo do número total de desenvolvedores. Embora esse número esteja aumentando constantemente, aprender novas linguagens de contratos inteligentes ainda pode ser uma barreira para os desenvolvedores entrarem na indústria de blockchain.

Mas cada vez mais blockchains estão começando a suportar Web Assembly como bytecode para contratos inteligentes compilados. WASM traz eficiência, interoperabilidade e uma ampla gama de casos de uso para blockchains. Também serve como chave para abrir a porta para os desenvolvedores, reduzindo a barreira de entrada no desenvolvimento de blockchain. Imagine, num futuro próximo, quando os desenvolvedores da Web 2.0 quiserem experimentar o desenvolvimento de blockchain, eles poderão usar linguagens familiares como Python, C++ e JavaScript para construir aplicativos em larga escala no blockchain, maximizando o valor das redes descentralizadas. Primeiro, diminua a barreira para os criadores (desenvolvedores), depois diminua a barreira para os usuários e avance para a adoção em massa.

4. Índice

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

https://wiki.polkadot.network/docs/learn-wasm

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introduzindo-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

Obrigado a Maggie e Xinyou Ji (CMU) pelos conselhos e orientações sobre este artigo.

Isenção de responsabilidade: todos os artigos da Foresight Ventures não pretendem ser conselhos de investimento. Os investimentos envolvem riscos, por isso avalie a sua própria tolerância ao risco e tome decisões de investimento com cuidado.

Isenção de responsabilidade:

  1. Este artigo foi reimpresso de [Foresight Research]. Todos os direitos autorais pertencem ao autor original [Mike @ Foresight Ventures]. Se houver objeções a esta reimpressão, entre em contato com a equipe do Gate Learn e eles cuidarão disso imediatamente.
  2. Isenção de responsabilidade: As opiniões e pontos de vista expressos neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, é proibido copiar, distribuir ou plagiar os artigos traduzidos.
เริ่มตอนนี้
สมัครและรับรางวัล
$100
ลงทะเบียนทันที