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:
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.
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:
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.
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.
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.
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.
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.
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.
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:
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.
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
Desafios e Limitações
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.
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.
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.
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:
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.
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:
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.
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.
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.
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.
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.
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.
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:
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.
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
Desafios e Limitações
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.
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.
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.