Foresight Ventures: WASM - O motor de uma nova era

Principiante1/1/2024, 2:25:51 AM
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.

TL; DR

WebAssembly (Wasm) é um formato de instrução binária portátil e de alto desempenho que pode ser executado em navegadores web. Foi concebido como um destino de compilação universal que pode ser utilizado com várias linguagens de programação e executado em diferentes plataformas.

Blockchain é uma tecnologia de livro-razão distribuído descentralizada que garante a segurança e a confiabilidade dos dados através do uso de criptografia e algoritmos de consenso. O Blockchain pode ser utilizado para registar transações, armazenar dados e executar contratos inteligentes, entre outras aplicações.

Existem várias relações e cenários de aplicação entre Wasm e blockchain:

  1. Contratos Inteligentes: O Wasm pode servir como ambiente de execução para contratos inteligentes, permitindo que os contratos sejam executados em diferentes plataformas blockchain. O elevado desempenho e a portabilidade do Wasm permitem uma execução mais eficiente de contratos inteligentes e a usabilidade entre plataformas.
  2. Interoperabilidade entre cadeias: O Wasm pode ser utilizado para implementar a interoperabilidade entre cadeias. Ao compilar a lógica de diferentes blockchains em 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: O Wasm pode ser usado para computação fora da cadeia de blocos e submeter os resultados do cálculo para a cadeia de blocos. Isto permite uma maior eficiência e flexibilidade na computação, mantendo a segurança e a fiabilidade dos dados.
  4. Privacidade de dados: O Wasm pode ser usado para obter proteção de privacidade de dados na cadeia de blocos. Ao compilar a lógica de processamento de dados sensíveis no código Wasm e executá-lo na cadeia de blocos, a privacidade dos dados pode ser preservada, garantindo a verificabilidade dos cálculos.

Em resumo, a combinação de Wasm e blockchain fornece aplicações e serviços blockchain mais eficientes, seguros e flexíveis. A portabilidade e o alto desempenho do Wasm fazem dele uma tecnologia importante no campo da blockchain.

1. O que é o Web Assembly?

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

O WebAssembly, também conhecido como WASM, é uma tecnologia segura para memória e independente de plataforma que pode mapear eficientemente para diferentes arquiteturas de CPU. Oferece várias vantagens principais:

  • Eficiência: O WASM tem um conjunto completo de funcionalidades linguísticas e é um formato binário compacto e de carregamento rápido. O seu objetivo é alavancar totalmente as capacidades de hardware para alcançar o desempenho da língua nativa.
  • Segurança: O WASM é executado num ambiente de execução seguro para memória e em sandbox, e pode até ser implementado em máquinas virtuais JavaScript existentes. Num ambiente Web, o WASM adere estritamente à política de mesma origem e às políticas de segurança do browser. Durante a compilação, o WASM limita a interface para reduzir os riscos de segurança. A maioria das aplicações WASM não consegue aceder à Internet (por exemplo, sem suporte a tomadas) e estão limitadas ao acesso à base de dados local. Muitos problemas de segurança surgem do acesso não autorizado à memória, que pode ser mitigado durante a compilação com o WASM.
  • Compatibilidade: O WASM foi concebido para ser sem versão, testável por funcionalidades e compatível com versões anteriores na Web. Pode ser invocado por JavaScript, entrar no contexto JavaScript e aceder às funcionalidades do navegador como uma API Web. O WASM pode ser executado não só em navegadores web mas também em ambientes não Web, como o Node.js, Deno e dispositivos IoT. Ao contrário das abordagens tradicionais que exigem várias compilações, o WASM só precisa de ser compilado uma vez para execução instantânea de plug-and-play.

Além disso, a Web é a única plataforma universal verdadeira que permite o acesso às suas aplicações em qualquer dispositivo. Isto permite-lhe também manter uma única base de código, simplificar as atualizações e garantir que todos os utilizadores possam aceder às suas aplicações. O WASM suporta operações inteiras de 64 bits 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 infra-estrutura do compilador LLVM, o WASM pode beneficiar de mais de uma década de otimizações do compilador no LLVM. O WASM é continuamente desenvolvido por grandes empresas como Google, Apple, Microsoft, Mozilla e Facebook, e é suportado pelos back-ends dos navegadores desenvolvidos por estas empresas.

A beleza do WASM reside na sua capacidade de funcionar em qualquer lugar sem a necessidade de descarregar ou instalar, uma vez que está em formato binário. Com apenas um clique, as aplicações web podem ser executadas imediatamente quando necessário. É ainda mais seguro do que descarregar e executar diretamente ficheiros binários, uma vez que os navegadores têm mecanismos de segurança integrados que impedem que o código executado prejudique o seu sistema. Além disso, partilhar aplicações web é simples - os links podem ser colocados em qualquer lugar como strings 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 aplicações e funcionalidades incríveis, graças à funcionalidade incorporada 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 concebida para realizar estas tarefas.

O JavaScript era inicialmente uma linguagem de script simples destinada a trazer interatividade a documentos de hipertexto leves em aplicações Web. O 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 por navegadores levaram a melhorias de desempenho notáveis.

Com a velocidade acelerada de execução do JavaScript, a gama de coisas que podem ser feitas nos navegadores expandiu-se significativamente. As novas APIs introduziram funcionalidades 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 eram limitadas a ambientes de desktop entraram na Web. Agora pode facilmente editar documentos e enviar e-mails no seu navegador. No entanto, em certos domínios, o desempenho do JavaScript continua a ser um desafio. Pense nas aplicações de software que usa para além dos navegadores: jogos, edição de vídeo, renderização 3D ou produção musical. Estas aplicações requerem cálculos extensivos e alto desempenho. O JavaScript luta para cumprir estes requisitos de alto desempenho.

No entanto, não é prático substituir o JavaScript e pode levar décadas para atingir esse objetivo, já que toda a Internet depende dele. Além disso, há uma grande comunidade a melhorar constantemente o JavaScript. Na verdade, em comparação com outras linguagens, o JavaScript tem algumas deficiências em aspetos como nulo e ==. No entanto, estes problemas não são suficientemente graves 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 vai tornar-se cada vez mais difundido. Isto porque o WASM pode trazer capacidades computacionais poderosas para a web, tais como processamento de imagem ou jogos. Com o WASM, pode criar uma versão baseada na Web do Photoshop que funciona bem, ou um jogo 3D que roda a 60 quadros por segundo ou taxas de quadros ainda mais altas no navegador. Os jogos, em particular, apresentam um desafio porque exigem a execução simultânea de processamento de áudio e vídeo, bem como a coordenação de efeitos de física e IA. O WASM tem a capacidade de executar jogos com eficiência no navegador, abrindo a porta para trazer muitas outras aplicações para o navegador.

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

2.2 Web3

WASM VM

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

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

Problema de tamanho da arquitetura

Os computadores tradicionais têm 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 concebido para lidar com o algoritmo de hash do Ethereum mais facilmente, que produz saídas explícitas de 256 bits.

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

Além disso, se quiser implementar um algoritmo complexo como o SHA256 usando OPCODES básicos do EVM no Ethereum, terá um momento difícil! Para resolver a questão do alto custo do gás da execução de programas complexos através do conjunto de instruções, a 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 de hash Ethereum, pois implementá-lo dentro da máquina virtual resultaria em taxas extremamente caras quando os contratos são chamados.

Pré-compilação inchada

O problema com a pré-compilação é que 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 um novo conjunto de especificações e instruções que não exija a pré-compilação destes programas complexos mas, em vez disso, alcance eficientemente os resultados desejados através de instruções básicas? É aqui que entra o WASM.

2.4 Comparação entre EVM e WASM VM

  • Velocidade: O WASM visa fornecer uma velocidade de execução mais rápida em comparação com o EVM. 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 convertendo diretamente em código compilado.
  • Contratos pré-compilados: EVM depende de contratos pré-compilados para uma execução eficiente de cálculos criptográficos, mas isso pode introduzir riscos de hard forks. O WASM elimina a necessidade de contratos pré-compilados, permitindo aos programadores criar 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 a custos reduzidos de implementação de contrato e transação. Os contratos WASM abordam as questões de altas taxas de transação e congestionamento na rede Ethereum.
  • Flexibilidade e interoperabilidade: O WASM amplia a gama de linguagens disponíveis para o desenvolvimento de contratos inteligentes, suportando o uso de qualquer linguagem de alto nível que compila para WASM, como Rust, C++ e JavaScript. Isto significa que os programadores podem escrever contratos inteligentes na sua linguagem preferida, incluindo estruturas maduras como tinta! para Rust ou Pergunte! para AssemblyScript.

A equipa do EWASM está atualmente a integrar 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. O WASM foi adotado como padrão por muitos outros projetos, incluindo o Dfinity e o EOS, ambos usando-o para melhorar as suas camadas de execução.

2.5 Caneta(Arbitrum)

O projeto Stylus é uma iniciativa na rede Arbitrum Ethereum Layer 2 que visa melhorar o desempenho da execução inteligente de contratos através da introdução da máquina virtual WebAssembly (WASM). Os contratos podem ser executados mais rapidamente do que com o Solidity, reduzindo os custos do gás. Isto torna mais fácil construir contratos inteligentes de alto desempenho na rede Arbitrum e atualmente suporta compilação em C, C++ e Rust.

Suporte de pré-compilação personalizado: Stylus também suporta pré-compilações personalizadas, o que permite aos programadores implementar as suas próprias pré-compilações Rust ou C++ na rede Arbitrum. Isto pode ajudar a introduzir novos algoritmos criptográficos ou outras funcionalidades específicas na cadeia sem esperar por actualizações na cadeia. Por exemplo, a computação do tensor pode ser pré-compilada para reduzir os custos de inferência, o que pode ser benéfico para o aprendizado de máquina em cadeia.

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

Reentrada: Ao contrário do Cosmos Wasm, o Stylus Rust SDK introduz uma funcionalidade de reentrada e permite aos programadores ativá-la manualmente. Isto permite que os contratos tenham mais flexibilidade na interoperabilidade, mas os programadores precisam de gerir cuidadosamente o estado para garantir a segurança.

Com base no ecossistema próspero 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á a criar uma tecnologia que pode ser implantada como um parachain Polkadot, servindo como uma ferramenta para alojar contratos inteligentes. Semelhante ao Polkadot, o Gear também utiliza a estrutura Substrato, que simplifica o processo de criação de diferentes blockchains para aplicações específicas. O substrato fornece funcionalidade imediata, permitindo que as pessoas se concentrem na criação de motores personalizados em cima do protocolo.

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

O motor principal 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 os programadores de fora do mundo cripto, a barreira à entrada é baixa porque podem construir contratos inteligentes num ambiente familiar. Os programadores acham mais fácil experimentar linguagens de programação de contratos inteligentes.

A arquitetura de contrato inteligente do Gear utiliza o Modelo de Ator sob o capô e fornece as seguintes funcionalidades:

  • Memória persistente para programas imutáveis
  • Tratamento assíncrono de mensagens
  • Superfície API mínima, intuitiva e suficiente para o contexto blockchain
  • Modelo de proxy de comunicação de ator entre componentes em cadeia para maior composabilidade e melhor compatibilidade com execução paralela de código e sharding.

Cada programa tem uma quantidade fixa de memória, sobre a qual o Gear permite o controlo. Um programa só pode ler e escrever na sua própria memória e não pode aceder ao espaço de memória de outros programas. Cada programa tem o seu próprio espaço de memória independente e as informações sobre os nós Gear podem ser processadas em paralelo.

2.7 CosmWASM(Cosmos)

O CosmWASM é uma plataforma de contrato inteligente baseada em WASM moderna e poderosa que pode ser facilmente integrada ao Cosmos-SDK. Isto mostra uma das principais vantagens do CosmWASM: os contratos escritos com o CosmWASM estão fortemente integrados com o IBC (Inter-Blockchain Communication) nativamente, permitindo aos programadores e utilizadores entrarem num futuro multi-cadeia. Atualmente, apenas o Rust é suportado.

Vantagens do CosmWASM

  1. Segurança: Aumenta a segurança dos 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 Ethereum Virtual Machine (EVM).
  4. Amigável ao desenvolvimento: 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 aprendizagem: A ferrugem pode ter uma curva de aprendizagem mais acentuada em comparação com as linguagens de contratos inteligentes mais utilizadas, como o Solidity. Para aumentar o potencial de adoção generalizada, o CosmWASM precisa de suportar a compilação em mais idiomas.
  2. Ecossistema e Ferramentas: Enquanto crescem, as ferramentas de desenvolvimento e o ecossistema do CosmWASM podem ainda ser relativamente limitados em comparação com plataformas de contratos inteligentes maduras como o Ethereum.
  3. Quota de mercado e sensibilização: No espaço da plataforma de contratos inteligentes, o CosmWASM pode ter menor consciência em comparação com plataformas como Ethereum e Binance Smart Chain, o que afeta a sua capacidade de atrair programadores e utilizadores.
  4. Desafios de manutenção e actualização: Embora o CosmWASM forneça a funcionalidade de actualização de contratos, manter e gerir actualizações para contratos inteligentes continua a ser uma tarefa complexa que tem de ser cuidadosamente tratada para evitar vulnerabilidades de segurança.
  5. Problemas de compatibilidade: Projetos acostumados a EVM ou outros ambientes de contrato inteligente podem enfrentar desafios de compatibilidade ao migrar para o 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, criou o código aberto do ZK-WASM no GitHub. O ZKWASM permite aos programadores verificar a exatidão dos cálculos executados sem os reexecutar. Ao alavancar o ZKWASM, os programadores podem construir de forma flexível aplicações à prova de conhecimento zero (ZKP) utilizando várias linguagens de programação. Estas aplicações podem ser executadas sem problemas em navegadores web.

O ZKWASM é derivado do ZKSNARK, que é uma combinação de SNARG e provas de conhecimento zero. Vamos explicar melhor. Normalmente, para usar o ZKSNARK, precisa de escrever um programa numa linguagem de circuito aritmético ou numa linguagem compatível com circuitos, como Pinóquio, TinyRam, Buffet/Pequin, Geppetto, XJSNark framework, ZokRates, etc. Isto representa uma barreira para os programas existentes, tornando difícil para eles alavancarem o poder do ZKSNARK. No entanto, há 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 ZKSNARK. A Delphinus Labs adotou a última abordagem incorporando toda a máquina virtual WASM num circuito ZKSNARK. Como resultado, as aplicações WASM existentes podem ser executadas diretamente no ZKWASM sem quaisquer modificações. Portanto, os fornecedores de serviços na nuvem podem provar a qualquer utilizador que os resultados do cálculo são calculados honestamente e não divulgarão nenhuma informação privada.

O ZKWASM fornece vários casos de uso, como permitir a verificação em cadeia das operações realizadas no navegador. Permite interações baseadas na web que são verificáveis na cadeia de blocos. Outros casos de uso incluem serviços oracle, computação fora da cadeia, automação, preenchendo a lacuna entre Web2 e Web3, geração de provas para aprendizado de máquina e processamento de dados, e até jogos e aplicações sociais. Com o aumento da adoção, o ZKWASM expande as possibilidades da Web3 e integra os desenvolvedores Web2 neste cenário transformador.

Através da implementação ZKWASM do Delphinus Lab, os programadores podem aproveitar o poder das provas de conhecimento zero para melhorar a segurança e a privacidade das suas aplicações, abrindo caminho para um ecossistema digital mais fiável e descentralizado.

3. Conclusão

O desempenho da Web e o futuro da camada de execução da plataforma de contrato inteligente são promissores. Não só os DApps terão um 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 de aprender os meandros da solidez ou outras linguagens de desenvolvimento de blockchain. De acordo com a Evans Data Corporation, existem quase 27 milhões de programadores em todo o mundo, e este número está a crescer continuamente, com um aumento esperado para mais de 28.7 milhões até 2024. No entanto, o número de programadores no campo da blockchain é ainda inferior a 30.000, representando apenas cerca de um milésimo do número total de programadores. Embora este número esteja a aumentar constantemente, aprender novas linguagens de contratos inteligentes pode ainda ser uma barreira para os programadores entrarem na indústria de blockchain.

Mas cada vez mais blockchains estão a começar a suportar o Web Assembly como o bytecode para contratos inteligentes compilados. O WASM traz eficiência, interoperabilidade e uma ampla gama de casos de uso para blockchains. Também serve como a chave para destrancar a porta para os programadores, diminuindo a barreira de entrada no desenvolvimento de blockchain. Imaginem, num futuro próximo, quando os programadores da Web 2.0 quiserem experimentar o desenvolvimento de blockchain, podem usar linguagens familiares como Python, C++ e JavaScript para construir aplicações em grande escala na cadeia de blocos, maximizando o valor das redes descentralizadas. Primeiro, abaixe a barreira para criadores (desenvolvedores), depois abaixe 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/introducing-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 seus conselhos e orientações sobre este artigo.

Isenção de responsabilidade: Todos os artigos da Foresight Ventures não se destinam a 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 da [Foresight Research]. Todos os direitos de autor pertencem ao autor original [Mike@ Foresight Ventures]. Se houver objeções a esta reimpressão, contacte a equipa do Gate Learn, e eles tratarão disso imediatamente.
  2. Isenção de responsabilidade: As opiniões e opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa do Gate Learn. A menos que mencionado, é proibido copiar, distribuir ou plagiar os artigos traduzidos.

Foresight Ventures: WASM - O motor de uma nova era

Principiante1/1/2024, 2:25:51 AM
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.

TL; DR

WebAssembly (Wasm) é um formato de instrução binária portátil e de alto desempenho que pode ser executado em navegadores web. Foi concebido como um destino de compilação universal que pode ser utilizado com várias linguagens de programação e executado em diferentes plataformas.

Blockchain é uma tecnologia de livro-razão distribuído descentralizada que garante a segurança e a confiabilidade dos dados através do uso de criptografia e algoritmos de consenso. O Blockchain pode ser utilizado para registar transações, armazenar dados e executar contratos inteligentes, entre outras aplicações.

Existem várias relações e cenários de aplicação entre Wasm e blockchain:

  1. Contratos Inteligentes: O Wasm pode servir como ambiente de execução para contratos inteligentes, permitindo que os contratos sejam executados em diferentes plataformas blockchain. O elevado desempenho e a portabilidade do Wasm permitem uma execução mais eficiente de contratos inteligentes e a usabilidade entre plataformas.
  2. Interoperabilidade entre cadeias: O Wasm pode ser utilizado para implementar a interoperabilidade entre cadeias. Ao compilar a lógica de diferentes blockchains em 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: O Wasm pode ser usado para computação fora da cadeia de blocos e submeter os resultados do cálculo para a cadeia de blocos. Isto permite uma maior eficiência e flexibilidade na computação, mantendo a segurança e a fiabilidade dos dados.
  4. Privacidade de dados: O Wasm pode ser usado para obter proteção de privacidade de dados na cadeia de blocos. Ao compilar a lógica de processamento de dados sensíveis no código Wasm e executá-lo na cadeia de blocos, a privacidade dos dados pode ser preservada, garantindo a verificabilidade dos cálculos.

Em resumo, a combinação de Wasm e blockchain fornece aplicações e serviços blockchain mais eficientes, seguros e flexíveis. A portabilidade e o alto desempenho do Wasm fazem dele uma tecnologia importante no campo da blockchain.

1. O que é o Web Assembly?

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

O WebAssembly, também conhecido como WASM, é uma tecnologia segura para memória e independente de plataforma que pode mapear eficientemente para diferentes arquiteturas de CPU. Oferece várias vantagens principais:

  • Eficiência: O WASM tem um conjunto completo de funcionalidades linguísticas e é um formato binário compacto e de carregamento rápido. O seu objetivo é alavancar totalmente as capacidades de hardware para alcançar o desempenho da língua nativa.
  • Segurança: O WASM é executado num ambiente de execução seguro para memória e em sandbox, e pode até ser implementado em máquinas virtuais JavaScript existentes. Num ambiente Web, o WASM adere estritamente à política de mesma origem e às políticas de segurança do browser. Durante a compilação, o WASM limita a interface para reduzir os riscos de segurança. A maioria das aplicações WASM não consegue aceder à Internet (por exemplo, sem suporte a tomadas) e estão limitadas ao acesso à base de dados local. Muitos problemas de segurança surgem do acesso não autorizado à memória, que pode ser mitigado durante a compilação com o WASM.
  • Compatibilidade: O WASM foi concebido para ser sem versão, testável por funcionalidades e compatível com versões anteriores na Web. Pode ser invocado por JavaScript, entrar no contexto JavaScript e aceder às funcionalidades do navegador como uma API Web. O WASM pode ser executado não só em navegadores web mas também em ambientes não Web, como o Node.js, Deno e dispositivos IoT. Ao contrário das abordagens tradicionais que exigem várias compilações, o WASM só precisa de ser compilado uma vez para execução instantânea de plug-and-play.

Além disso, a Web é a única plataforma universal verdadeira que permite o acesso às suas aplicações em qualquer dispositivo. Isto permite-lhe também manter uma única base de código, simplificar as atualizações e garantir que todos os utilizadores possam aceder às suas aplicações. O WASM suporta operações inteiras de 64 bits 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 infra-estrutura do compilador LLVM, o WASM pode beneficiar de mais de uma década de otimizações do compilador no LLVM. O WASM é continuamente desenvolvido por grandes empresas como Google, Apple, Microsoft, Mozilla e Facebook, e é suportado pelos back-ends dos navegadores desenvolvidos por estas empresas.

A beleza do WASM reside na sua capacidade de funcionar em qualquer lugar sem a necessidade de descarregar ou instalar, uma vez que está em formato binário. Com apenas um clique, as aplicações web podem ser executadas imediatamente quando necessário. É ainda mais seguro do que descarregar e executar diretamente ficheiros binários, uma vez que os navegadores têm mecanismos de segurança integrados que impedem que o código executado prejudique o seu sistema. Além disso, partilhar aplicações web é simples - os links podem ser colocados em qualquer lugar como strings 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 aplicações e funcionalidades incríveis, graças à funcionalidade incorporada 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 concebida para realizar estas tarefas.

O JavaScript era inicialmente uma linguagem de script simples destinada a trazer interatividade a documentos de hipertexto leves em aplicações Web. O 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 por navegadores levaram a melhorias de desempenho notáveis.

Com a velocidade acelerada de execução do JavaScript, a gama de coisas que podem ser feitas nos navegadores expandiu-se significativamente. As novas APIs introduziram funcionalidades 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 eram limitadas a ambientes de desktop entraram na Web. Agora pode facilmente editar documentos e enviar e-mails no seu navegador. No entanto, em certos domínios, o desempenho do JavaScript continua a ser um desafio. Pense nas aplicações de software que usa para além dos navegadores: jogos, edição de vídeo, renderização 3D ou produção musical. Estas aplicações requerem cálculos extensivos e alto desempenho. O JavaScript luta para cumprir estes requisitos de alto desempenho.

No entanto, não é prático substituir o JavaScript e pode levar décadas para atingir esse objetivo, já que toda a Internet depende dele. Além disso, há uma grande comunidade a melhorar constantemente o JavaScript. Na verdade, em comparação com outras linguagens, o JavaScript tem algumas deficiências em aspetos como nulo e ==. No entanto, estes problemas não são suficientemente graves 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 vai tornar-se cada vez mais difundido. Isto porque o WASM pode trazer capacidades computacionais poderosas para a web, tais como processamento de imagem ou jogos. Com o WASM, pode criar uma versão baseada na Web do Photoshop que funciona bem, ou um jogo 3D que roda a 60 quadros por segundo ou taxas de quadros ainda mais altas no navegador. Os jogos, em particular, apresentam um desafio porque exigem a execução simultânea de processamento de áudio e vídeo, bem como a coordenação de efeitos de física e IA. O WASM tem a capacidade de executar jogos com eficiência no navegador, abrindo a porta para trazer muitas outras aplicações para o navegador.

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

2.2 Web3

WASM VM

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

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

Problema de tamanho da arquitetura

Os computadores tradicionais têm 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 concebido para lidar com o algoritmo de hash do Ethereum mais facilmente, que produz saídas explícitas de 256 bits.

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

Além disso, se quiser implementar um algoritmo complexo como o SHA256 usando OPCODES básicos do EVM no Ethereum, terá um momento difícil! Para resolver a questão do alto custo do gás da execução de programas complexos através do conjunto de instruções, a 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 de hash Ethereum, pois implementá-lo dentro da máquina virtual resultaria em taxas extremamente caras quando os contratos são chamados.

Pré-compilação inchada

O problema com a pré-compilação é que 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 um novo conjunto de especificações e instruções que não exija a pré-compilação destes programas complexos mas, em vez disso, alcance eficientemente os resultados desejados através de instruções básicas? É aqui que entra o WASM.

2.4 Comparação entre EVM e WASM VM

  • Velocidade: O WASM visa fornecer uma velocidade de execução mais rápida em comparação com o EVM. 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 convertendo diretamente em código compilado.
  • Contratos pré-compilados: EVM depende de contratos pré-compilados para uma execução eficiente de cálculos criptográficos, mas isso pode introduzir riscos de hard forks. O WASM elimina a necessidade de contratos pré-compilados, permitindo aos programadores criar 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 a custos reduzidos de implementação de contrato e transação. Os contratos WASM abordam as questões de altas taxas de transação e congestionamento na rede Ethereum.
  • Flexibilidade e interoperabilidade: O WASM amplia a gama de linguagens disponíveis para o desenvolvimento de contratos inteligentes, suportando o uso de qualquer linguagem de alto nível que compila para WASM, como Rust, C++ e JavaScript. Isto significa que os programadores podem escrever contratos inteligentes na sua linguagem preferida, incluindo estruturas maduras como tinta! para Rust ou Pergunte! para AssemblyScript.

A equipa do EWASM está atualmente a integrar 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. O WASM foi adotado como padrão por muitos outros projetos, incluindo o Dfinity e o EOS, ambos usando-o para melhorar as suas camadas de execução.

2.5 Caneta(Arbitrum)

O projeto Stylus é uma iniciativa na rede Arbitrum Ethereum Layer 2 que visa melhorar o desempenho da execução inteligente de contratos através da introdução da máquina virtual WebAssembly (WASM). Os contratos podem ser executados mais rapidamente do que com o Solidity, reduzindo os custos do gás. Isto torna mais fácil construir contratos inteligentes de alto desempenho na rede Arbitrum e atualmente suporta compilação em C, C++ e Rust.

Suporte de pré-compilação personalizado: Stylus também suporta pré-compilações personalizadas, o que permite aos programadores implementar as suas próprias pré-compilações Rust ou C++ na rede Arbitrum. Isto pode ajudar a introduzir novos algoritmos criptográficos ou outras funcionalidades específicas na cadeia sem esperar por actualizações na cadeia. Por exemplo, a computação do tensor pode ser pré-compilada para reduzir os custos de inferência, o que pode ser benéfico para o aprendizado de máquina em cadeia.

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

Reentrada: Ao contrário do Cosmos Wasm, o Stylus Rust SDK introduz uma funcionalidade de reentrada e permite aos programadores ativá-la manualmente. Isto permite que os contratos tenham mais flexibilidade na interoperabilidade, mas os programadores precisam de gerir cuidadosamente o estado para garantir a segurança.

Com base no ecossistema próspero 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á a criar uma tecnologia que pode ser implantada como um parachain Polkadot, servindo como uma ferramenta para alojar contratos inteligentes. Semelhante ao Polkadot, o Gear também utiliza a estrutura Substrato, que simplifica o processo de criação de diferentes blockchains para aplicações específicas. O substrato fornece funcionalidade imediata, permitindo que as pessoas se concentrem na criação de motores personalizados em cima do protocolo.

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

O motor principal 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 os programadores de fora do mundo cripto, a barreira à entrada é baixa porque podem construir contratos inteligentes num ambiente familiar. Os programadores acham mais fácil experimentar linguagens de programação de contratos inteligentes.

A arquitetura de contrato inteligente do Gear utiliza o Modelo de Ator sob o capô e fornece as seguintes funcionalidades:

  • Memória persistente para programas imutáveis
  • Tratamento assíncrono de mensagens
  • Superfície API mínima, intuitiva e suficiente para o contexto blockchain
  • Modelo de proxy de comunicação de ator entre componentes em cadeia para maior composabilidade e melhor compatibilidade com execução paralela de código e sharding.

Cada programa tem uma quantidade fixa de memória, sobre a qual o Gear permite o controlo. Um programa só pode ler e escrever na sua própria memória e não pode aceder ao espaço de memória de outros programas. Cada programa tem o seu próprio espaço de memória independente e as informações sobre os nós Gear podem ser processadas em paralelo.

2.7 CosmWASM(Cosmos)

O CosmWASM é uma plataforma de contrato inteligente baseada em WASM moderna e poderosa que pode ser facilmente integrada ao Cosmos-SDK. Isto mostra uma das principais vantagens do CosmWASM: os contratos escritos com o CosmWASM estão fortemente integrados com o IBC (Inter-Blockchain Communication) nativamente, permitindo aos programadores e utilizadores entrarem num futuro multi-cadeia. Atualmente, apenas o Rust é suportado.

Vantagens do CosmWASM

  1. Segurança: Aumenta a segurança dos 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 Ethereum Virtual Machine (EVM).
  4. Amigável ao desenvolvimento: 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 aprendizagem: A ferrugem pode ter uma curva de aprendizagem mais acentuada em comparação com as linguagens de contratos inteligentes mais utilizadas, como o Solidity. Para aumentar o potencial de adoção generalizada, o CosmWASM precisa de suportar a compilação em mais idiomas.
  2. Ecossistema e Ferramentas: Enquanto crescem, as ferramentas de desenvolvimento e o ecossistema do CosmWASM podem ainda ser relativamente limitados em comparação com plataformas de contratos inteligentes maduras como o Ethereum.
  3. Quota de mercado e sensibilização: No espaço da plataforma de contratos inteligentes, o CosmWASM pode ter menor consciência em comparação com plataformas como Ethereum e Binance Smart Chain, o que afeta a sua capacidade de atrair programadores e utilizadores.
  4. Desafios de manutenção e actualização: Embora o CosmWASM forneça a funcionalidade de actualização de contratos, manter e gerir actualizações para contratos inteligentes continua a ser uma tarefa complexa que tem de ser cuidadosamente tratada para evitar vulnerabilidades de segurança.
  5. Problemas de compatibilidade: Projetos acostumados a EVM ou outros ambientes de contrato inteligente podem enfrentar desafios de compatibilidade ao migrar para o 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, criou o código aberto do ZK-WASM no GitHub. O ZKWASM permite aos programadores verificar a exatidão dos cálculos executados sem os reexecutar. Ao alavancar o ZKWASM, os programadores podem construir de forma flexível aplicações à prova de conhecimento zero (ZKP) utilizando várias linguagens de programação. Estas aplicações podem ser executadas sem problemas em navegadores web.

O ZKWASM é derivado do ZKSNARK, que é uma combinação de SNARG e provas de conhecimento zero. Vamos explicar melhor. Normalmente, para usar o ZKSNARK, precisa de escrever um programa numa linguagem de circuito aritmético ou numa linguagem compatível com circuitos, como Pinóquio, TinyRam, Buffet/Pequin, Geppetto, XJSNark framework, ZokRates, etc. Isto representa uma barreira para os programas existentes, tornando difícil para eles alavancarem o poder do ZKSNARK. No entanto, há 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 ZKSNARK. A Delphinus Labs adotou a última abordagem incorporando toda a máquina virtual WASM num circuito ZKSNARK. Como resultado, as aplicações WASM existentes podem ser executadas diretamente no ZKWASM sem quaisquer modificações. Portanto, os fornecedores de serviços na nuvem podem provar a qualquer utilizador que os resultados do cálculo são calculados honestamente e não divulgarão nenhuma informação privada.

O ZKWASM fornece vários casos de uso, como permitir a verificação em cadeia das operações realizadas no navegador. Permite interações baseadas na web que são verificáveis na cadeia de blocos. Outros casos de uso incluem serviços oracle, computação fora da cadeia, automação, preenchendo a lacuna entre Web2 e Web3, geração de provas para aprendizado de máquina e processamento de dados, e até jogos e aplicações sociais. Com o aumento da adoção, o ZKWASM expande as possibilidades da Web3 e integra os desenvolvedores Web2 neste cenário transformador.

Através da implementação ZKWASM do Delphinus Lab, os programadores podem aproveitar o poder das provas de conhecimento zero para melhorar a segurança e a privacidade das suas aplicações, abrindo caminho para um ecossistema digital mais fiável e descentralizado.

3. Conclusão

O desempenho da Web e o futuro da camada de execução da plataforma de contrato inteligente são promissores. Não só os DApps terão um 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 de aprender os meandros da solidez ou outras linguagens de desenvolvimento de blockchain. De acordo com a Evans Data Corporation, existem quase 27 milhões de programadores em todo o mundo, e este número está a crescer continuamente, com um aumento esperado para mais de 28.7 milhões até 2024. No entanto, o número de programadores no campo da blockchain é ainda inferior a 30.000, representando apenas cerca de um milésimo do número total de programadores. Embora este número esteja a aumentar constantemente, aprender novas linguagens de contratos inteligentes pode ainda ser uma barreira para os programadores entrarem na indústria de blockchain.

Mas cada vez mais blockchains estão a começar a suportar o Web Assembly como o bytecode para contratos inteligentes compilados. O WASM traz eficiência, interoperabilidade e uma ampla gama de casos de uso para blockchains. Também serve como a chave para destrancar a porta para os programadores, diminuindo a barreira de entrada no desenvolvimento de blockchain. Imaginem, num futuro próximo, quando os programadores da Web 2.0 quiserem experimentar o desenvolvimento de blockchain, podem usar linguagens familiares como Python, C++ e JavaScript para construir aplicações em grande escala na cadeia de blocos, maximizando o valor das redes descentralizadas. Primeiro, abaixe a barreira para criadores (desenvolvedores), depois abaixe 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/introducing-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 seus conselhos e orientações sobre este artigo.

Isenção de responsabilidade: Todos os artigos da Foresight Ventures não se destinam a 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 da [Foresight Research]. Todos os direitos de autor pertencem ao autor original [Mike@ Foresight Ventures]. Se houver objeções a esta reimpressão, contacte a equipa do Gate Learn, e eles tratarão disso imediatamente.
  2. Isenção de responsabilidade: As opiniões e opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa do Gate Learn. A menos que mencionado, é proibido copiar, distribuir ou plagiar os artigos traduzidos.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!