A indústria Blockchain está sempre em busca de crescimento e melhoria. A indústria cresceu e evoluiu recentemente após o início do Ethereum, que foi alimentado pela Ethereum Virtual Machine (EVM). Embora o EVM seja eficaz até certo ponto, um novo player chegou à cidade na forma do WebAssembly (WASM). Neste artigo veremos o que é WebAssembly, como funciona e seus vínculos com a indústria de criptomoedas.
Web Assembly, popularmente conhecido como WASM, é uma estrutura de código aberto que permite aos programadores usar seu código-fonte ou modificá-lo da maneira que o desenvolvedor desejar. WASM vai um passo além com um formato de instrução binária para uma máquina virtual (VM) baseada em pilha. É usado como um alvo de compilação portátil para linguagens de programação de alto nível. É uma opção binária pequena e rápida que promete desempenho quase nativo para aplicações web.
WebAssembly foi projetado para servir como alvo de compilação para qualquer linguagem, incluindo JavaScript. Isso significa que os desenvolvedores podem compilar diversas linguagens de programação como C/C++, Go, Rust e muitas outras em um único padrão que pode ser executado quase nativamente em navegadores como uma alternativa próxima ao JavaScript.
Os desenvolvedores podem usar o Web Assembly para casos de uso de alto desempenho, como jogos, streaming de música, edição de vídeo e aplicativos de design auxiliado por computador (CAD). Vários serviços web já adotaram o WASM, por exemplo, Google Earth e Figma.
O WebAssembly foi desenvolvido para atender à necessidade de melhorar o desempenho da web e ao desejo de introduzir uma gama mais ampla de linguagens na plataforma web. Em 2015, o WebAssembly Community Group, composto por Mozilla, Google, Microsoft e Apple, criou um novo formato binário. Em 2017, o WebAssembly MVP (Minimum Viable Product) foi lançado para fornecer uma base estável para o formato binário, modelo de execução e integração na plataforma web.
O próximo lançamento foi o suporte ao navegador, com os principais navegadores como Chrome, Firefox, Safari e Edge incorporando WebAssembly. Os desenvolvedores descobriram a utilidade da tecnologia fora dos navegadores web e começaram a explorar o uso do WASM na área de ambientes do lado do servidor para computação de alto desempenho.
Para entender como o WebAssembly funciona, você precisa entender como funciona o mecanismo JavaScript. Para compilar o código JS, o motor faz algumas coisas, como passar o código pelo Parser, que é uma ferramenta que percorre o código linha por linha, verificando a sintaxe válida e também os tipos de código. Depois de concluído, o analisador cria uma estrutura de dados em árvore chamada Abstract Syntax Tree (AST).
Depois que o AST é criado, o interpretador do mecanismo pega o AST e o converte em Bytecode, que é uma representação intermediária do código. O compilador do mecanismo então pega o Bytecode e o transforma em código que as máquinas podem executar em seus processadores.
O WebAssembly funciona de maneira diferente do JavaScript e é considerado mais rápido porque o código WASM vai diretamente para o compilador, ignorando efetivamente as etapas um e dois do processo JavaScript. A razão para isso é que, diferentemente do JavaScript, que é uma linguagem de tipagem dinâmica, o WASM é de tipagem estática, o que significa que enquanto a linguagem está sendo digitada, os tipos são declarados antecipadamente; portanto, eles são conhecidos e verificados em tempo de compilação.
Portanto, ao escrever um código WASM, você escreve o código com seus tipos, geralmente em uma linguagem de tipo estaticamente. Em seguida, você gera um módulo WASM pré-compilado e, finalmente, executa o código diretamente pelo compilador do mecanismo, pulando o estágio de análise e transformação para o estágio de Representação Intermediária.
WebAssembly foi desenvolvido para compilar diversas linguagens e é considerado mais rápido que JavaScript. Para poder realizar esta façanha, foi equipado com algumas características que não só garantem a segurança da estrutura, mas também provam que é confiável.
Tendo estabelecido confiança na sua eficácia e credibilidade, o WebAssembly foi adicionado aos idiomas oficiais da web. Existem atualmente quatro linguagens, HTML. CSS, JavaScript e agora WebAssembly. Portanto, WebAssembly agora é considerado o padrão WC3.
A máquina de pilha do WebAssembly foi construída para funcionar em formato de código binário, afetando bastante o tempo e o tamanho de carregamento. Sua velocidade e eficiência tornaram-no um elemento básico no desenvolvimento de blockchain, e muitos desenvolvedores agora fazem uso da linguagem para ecossistemas robustos.
A máquina virtual verifica o código WebAssembly, valida-o e executa-o dentro de uma sandbox com segurança de memória. O ambiente incorporado restringe o acesso aos recursos locais, incluindo o sistema de arquivos ou portas de rede. Isso significa que o código WebAssembly obtido da web e executado no navegador é altamente limitado quando se trata de recursos de hardware e software.
O W3C tem várias empresas de navegadores trabalhando no projeto. Isso permite que a comunidade contribua, possibilitando a criação de aplicativos compatíveis com versões anteriores, sem recursos e aplicativos com recursos testados.
WebAssembly é atualmente visto como uma alternativa próxima à Máquina Virtual Ethereum (EVM). Isso ocorre porque, por meio do WebAssembly, os desenvolvedores agora estão equipados com um conjunto de instruções eficiente no qual diferentes linguagens podem ser compiladas, garantindo ao mesmo tempo um desempenho eficaz em diferentes plataformas. O conjunto de instruções WebAssembly também pode ser facilmente determinístico apagando instruções de ponto flutuante, o que o tornaria um substituto viável para o EVM.
Ethereum demonstrou interesse no WebAssembly e está liderando os esforços para desenvolver o Ethereum WebAssembly (EWASM), o redesenho proposto da Máquina Virtual Ethereum. Uma vez bem-sucedido, espera-se que o EWASM seja mais eficiente e permita que os desenvolvedores escrevam códigos em diversas linguagens devido aos seus laços com o WASM. EWASM funcionará como o EVM como uma linguagem de bytecode pré-compilada que será interpretada nos nós Ethereum.
Com isso, os dApps se tornarão mais eficientes na produção. A integração do WASM tornará o desenvolvimento de contratos inteligentes mais acessível para pessoas que já estão acostumadas com linguagens populares como Rust e Go. Isso eventualmente erradica a necessidade dos desenvolvedores aprenderem como escrever com solidez antes de criar aplicativos úteis no Ethereum.
Embora o WASM não esteja totalmente desenvolvido para atividades de blockchain, alguns projetos já o utilizam para aprimorar a funcionalidade de suas plataformas. Por exemplo:
Cosmos é um blockchain desenvolvido para facilitar a comunicação entre livros distribuídos sem ter que esperar em um servidor central. Popularmente chamados de Internet dos Blockchains, eles foram um dos primeiros blockchains a utilizar o WASM como sua principal pilha de construção. Eles implementam CosmWASM, uma estrutura para construção de contratos inteligentes em WASM para Cosmos SDK, Tendermint BFT e protocolo IBC para seu desenvolvimento de blockchain nativo.
O uso do WASM pelo Polkadot depende de ser um metaprotocolo, permitindo outras linguagens que foram interpretadas ou compiladas no WebAssembly. A utilização do WASM permitiu infraestrutura e substratos sem bifurcação para permitir que outras aplicações fizessem ajustes nas cadeias conectadas com pouca ou nenhuma coordenação.
O protocolo Near é um blockchain público criado para construir aplicativos descentralizados usando WebAssembly. Near usa WebAssembly como uma boa maneira de aproveitar a tecnologia da web para melhorar o desempenho e a portabilidade. Eles implementaram AssemblyScript para sua linguagem porque descobriram que é uma opção mais portátil e também fornece acesso fácil para desenvolvedores web.
JavaScript é uma linguagem de programação interpretada de alto nível que oferece suporte ao desenvolvimento web há décadas. Ele foi desenvolvido para agregar interatividade às páginas web e é exibido no lado do cliente pelos navegadores web. Ao longo dos anos, a popularidade da linguagem cresceu devido à sua facilidade de uso e à ampla adoção.
Desde o início da World Wide Web, sempre existiu JavaScript. Recentemente, surgiu o WASM (WebAssembly) e, embora muitos acreditem que os dois estão intimamente ligados, o WASM consiste em várias outras coisas, incluindo JavaScript. WASM foi originalmente desenvolvido para ajudar o JavaScript a funcionar de forma mais eficaz em navegadores da web.
Embora ainda sirva ao mesmo propósito, o WASM agora se estende além do navegador da web e se aventurou em aplicativos de borda e de servidor, duas áreas em que o JavaScript é conhecido por faltar. Isso é possível porque, no nível da CPU, o WASM é executado em formato binário e também não é uma linguagem de programação como o JavaScript. WASM fornece funcionalidade extra que acomoda uma série de linguagens diferentes, como JavaScript, Python, Rust e muito mais. A vantagem do WASM sobre o JavaScript continua sendo sua capacidade de integração com a linguagem, sem estar limitado ao JavaScript. A integração dá ao JavaScript um grande impulso no desempenho ao compilar a linguagem já interpretada e seu tempo de execução em módulos WASM.
WebAssembly e Rust são duas tecnologias muito distintas, mas ao mesmo tempo estão frequentemente associadas uma à outra. Rust é uma linguagem de programação popular conhecida por sua velocidade, segurança e alto desempenho. Já o WebAssembly é um compilador que converte códigos em máquinas executáveis. Além de suas definições, as duas tecnologias são diferentes nos seguintes aspectos.
WASM é usado principalmente no desenvolvimento web, permitindo a execução de código em navegadores web, incluindo JavaScript. Ao mesmo tempo, Rust é uma linguagem multifuncional que possui diversas aplicações, incluindo programação de sistemas, desenvolvimento de jogos e muito mais.
WASM não é uma linguagem de programação, mas um formato de instrução binária e pode ser direcionado a linguagens como C, C++ e Rust. Rust, por outro lado, é uma linguagem com sintaxe e recursos como empréstimo, propriedade e muito mais.
WASM utiliza um modelo de memória linear que fornece espaço de endereço linear que é facilmente acessado pelo programa. O gerenciamento de memória é feito manualmente pelo desenvolvedor e mantido explícito. Rust, por outro lado, enfatiza a segurança da memória. Ele faz uso de um verificador de empréstimo e sistema de propriedade que impõe uma regra estrita no momento da compilação que elimina vários bugs conhecidos por afetar a segurança da memória.
Rust está equipado com suporte próprio para programação simultânea por meio de seu sistema de propriedade, que permite aos desenvolvedores escrever código seguro e simultâneo sem o risco de corrida de dados. Ao contrário do Rust, o WASM não possui esses recursos; entretanto, ele pode aproveitar os recursos de simultaneidade do ambiente host.
Ao aprender como usar o WASM, certos cursos fornecem o melhor conhecimento para iniciantes que desejam criar projetos WASM em uma variedade de idiomas. Alguns desses cursos incluem:
Este curso fornece um guia completo para aprender a API WebAssembly JavaScript e o conjunto de ferramentas Emscripten. Uma vez adquirido, o curso dá aos usuários acesso a mais de 2 horas de vídeo-aulas sob demanda e 17 recursos educacionais para download.
O curso dá aos iniciantes uma ideia do que é WebAssembly e como ele afeta o desenvolvimento web. Você também aprenderia como carregar e executar módulos WebAssembly usando APIs nativas do navegador Java Script.
Este curso cobre os fundamentos do WebAssembly e por que ele é importante. O curso mostrará como construir aplicativos usando WebAssembly e como criar aplicativos web usando outras linguagens como C/C++.
Este curso gratuito sobre WebAssembly oferece aos iniciantes uma visão detalhada do que é o WASM. Ele ensina como escrever, compilar, incluir e instanciar o código. Ele fornece um guia passo a passo sobre como compilar código C++ em WASM.
O WebAssembly atualmente está na vanguarda do desenvolvimento web e sua velocidade, segurança e adaptabilidade são os principais recursos que os desenvolvedores acreditam que inaugurarão um novo mundo para aplicativos descentralizados. À medida que mais produtos procuram fazer uso do WASM, as portas de um futuro onde os contratos inteligentes sejam facilmente desenvolvidos e protegidos com as linguagens que o desenvolvedor conhece estão ao seu alcance.
Compartilhar
A indústria Blockchain está sempre em busca de crescimento e melhoria. A indústria cresceu e evoluiu recentemente após o início do Ethereum, que foi alimentado pela Ethereum Virtual Machine (EVM). Embora o EVM seja eficaz até certo ponto, um novo player chegou à cidade na forma do WebAssembly (WASM). Neste artigo veremos o que é WebAssembly, como funciona e seus vínculos com a indústria de criptomoedas.
Web Assembly, popularmente conhecido como WASM, é uma estrutura de código aberto que permite aos programadores usar seu código-fonte ou modificá-lo da maneira que o desenvolvedor desejar. WASM vai um passo além com um formato de instrução binária para uma máquina virtual (VM) baseada em pilha. É usado como um alvo de compilação portátil para linguagens de programação de alto nível. É uma opção binária pequena e rápida que promete desempenho quase nativo para aplicações web.
WebAssembly foi projetado para servir como alvo de compilação para qualquer linguagem, incluindo JavaScript. Isso significa que os desenvolvedores podem compilar diversas linguagens de programação como C/C++, Go, Rust e muitas outras em um único padrão que pode ser executado quase nativamente em navegadores como uma alternativa próxima ao JavaScript.
Os desenvolvedores podem usar o Web Assembly para casos de uso de alto desempenho, como jogos, streaming de música, edição de vídeo e aplicativos de design auxiliado por computador (CAD). Vários serviços web já adotaram o WASM, por exemplo, Google Earth e Figma.
O WebAssembly foi desenvolvido para atender à necessidade de melhorar o desempenho da web e ao desejo de introduzir uma gama mais ampla de linguagens na plataforma web. Em 2015, o WebAssembly Community Group, composto por Mozilla, Google, Microsoft e Apple, criou um novo formato binário. Em 2017, o WebAssembly MVP (Minimum Viable Product) foi lançado para fornecer uma base estável para o formato binário, modelo de execução e integração na plataforma web.
O próximo lançamento foi o suporte ao navegador, com os principais navegadores como Chrome, Firefox, Safari e Edge incorporando WebAssembly. Os desenvolvedores descobriram a utilidade da tecnologia fora dos navegadores web e começaram a explorar o uso do WASM na área de ambientes do lado do servidor para computação de alto desempenho.
Para entender como o WebAssembly funciona, você precisa entender como funciona o mecanismo JavaScript. Para compilar o código JS, o motor faz algumas coisas, como passar o código pelo Parser, que é uma ferramenta que percorre o código linha por linha, verificando a sintaxe válida e também os tipos de código. Depois de concluído, o analisador cria uma estrutura de dados em árvore chamada Abstract Syntax Tree (AST).
Depois que o AST é criado, o interpretador do mecanismo pega o AST e o converte em Bytecode, que é uma representação intermediária do código. O compilador do mecanismo então pega o Bytecode e o transforma em código que as máquinas podem executar em seus processadores.
O WebAssembly funciona de maneira diferente do JavaScript e é considerado mais rápido porque o código WASM vai diretamente para o compilador, ignorando efetivamente as etapas um e dois do processo JavaScript. A razão para isso é que, diferentemente do JavaScript, que é uma linguagem de tipagem dinâmica, o WASM é de tipagem estática, o que significa que enquanto a linguagem está sendo digitada, os tipos são declarados antecipadamente; portanto, eles são conhecidos e verificados em tempo de compilação.
Portanto, ao escrever um código WASM, você escreve o código com seus tipos, geralmente em uma linguagem de tipo estaticamente. Em seguida, você gera um módulo WASM pré-compilado e, finalmente, executa o código diretamente pelo compilador do mecanismo, pulando o estágio de análise e transformação para o estágio de Representação Intermediária.
WebAssembly foi desenvolvido para compilar diversas linguagens e é considerado mais rápido que JavaScript. Para poder realizar esta façanha, foi equipado com algumas características que não só garantem a segurança da estrutura, mas também provam que é confiável.
Tendo estabelecido confiança na sua eficácia e credibilidade, o WebAssembly foi adicionado aos idiomas oficiais da web. Existem atualmente quatro linguagens, HTML. CSS, JavaScript e agora WebAssembly. Portanto, WebAssembly agora é considerado o padrão WC3.
A máquina de pilha do WebAssembly foi construída para funcionar em formato de código binário, afetando bastante o tempo e o tamanho de carregamento. Sua velocidade e eficiência tornaram-no um elemento básico no desenvolvimento de blockchain, e muitos desenvolvedores agora fazem uso da linguagem para ecossistemas robustos.
A máquina virtual verifica o código WebAssembly, valida-o e executa-o dentro de uma sandbox com segurança de memória. O ambiente incorporado restringe o acesso aos recursos locais, incluindo o sistema de arquivos ou portas de rede. Isso significa que o código WebAssembly obtido da web e executado no navegador é altamente limitado quando se trata de recursos de hardware e software.
O W3C tem várias empresas de navegadores trabalhando no projeto. Isso permite que a comunidade contribua, possibilitando a criação de aplicativos compatíveis com versões anteriores, sem recursos e aplicativos com recursos testados.
WebAssembly é atualmente visto como uma alternativa próxima à Máquina Virtual Ethereum (EVM). Isso ocorre porque, por meio do WebAssembly, os desenvolvedores agora estão equipados com um conjunto de instruções eficiente no qual diferentes linguagens podem ser compiladas, garantindo ao mesmo tempo um desempenho eficaz em diferentes plataformas. O conjunto de instruções WebAssembly também pode ser facilmente determinístico apagando instruções de ponto flutuante, o que o tornaria um substituto viável para o EVM.
Ethereum demonstrou interesse no WebAssembly e está liderando os esforços para desenvolver o Ethereum WebAssembly (EWASM), o redesenho proposto da Máquina Virtual Ethereum. Uma vez bem-sucedido, espera-se que o EWASM seja mais eficiente e permita que os desenvolvedores escrevam códigos em diversas linguagens devido aos seus laços com o WASM. EWASM funcionará como o EVM como uma linguagem de bytecode pré-compilada que será interpretada nos nós Ethereum.
Com isso, os dApps se tornarão mais eficientes na produção. A integração do WASM tornará o desenvolvimento de contratos inteligentes mais acessível para pessoas que já estão acostumadas com linguagens populares como Rust e Go. Isso eventualmente erradica a necessidade dos desenvolvedores aprenderem como escrever com solidez antes de criar aplicativos úteis no Ethereum.
Embora o WASM não esteja totalmente desenvolvido para atividades de blockchain, alguns projetos já o utilizam para aprimorar a funcionalidade de suas plataformas. Por exemplo:
Cosmos é um blockchain desenvolvido para facilitar a comunicação entre livros distribuídos sem ter que esperar em um servidor central. Popularmente chamados de Internet dos Blockchains, eles foram um dos primeiros blockchains a utilizar o WASM como sua principal pilha de construção. Eles implementam CosmWASM, uma estrutura para construção de contratos inteligentes em WASM para Cosmos SDK, Tendermint BFT e protocolo IBC para seu desenvolvimento de blockchain nativo.
O uso do WASM pelo Polkadot depende de ser um metaprotocolo, permitindo outras linguagens que foram interpretadas ou compiladas no WebAssembly. A utilização do WASM permitiu infraestrutura e substratos sem bifurcação para permitir que outras aplicações fizessem ajustes nas cadeias conectadas com pouca ou nenhuma coordenação.
O protocolo Near é um blockchain público criado para construir aplicativos descentralizados usando WebAssembly. Near usa WebAssembly como uma boa maneira de aproveitar a tecnologia da web para melhorar o desempenho e a portabilidade. Eles implementaram AssemblyScript para sua linguagem porque descobriram que é uma opção mais portátil e também fornece acesso fácil para desenvolvedores web.
JavaScript é uma linguagem de programação interpretada de alto nível que oferece suporte ao desenvolvimento web há décadas. Ele foi desenvolvido para agregar interatividade às páginas web e é exibido no lado do cliente pelos navegadores web. Ao longo dos anos, a popularidade da linguagem cresceu devido à sua facilidade de uso e à ampla adoção.
Desde o início da World Wide Web, sempre existiu JavaScript. Recentemente, surgiu o WASM (WebAssembly) e, embora muitos acreditem que os dois estão intimamente ligados, o WASM consiste em várias outras coisas, incluindo JavaScript. WASM foi originalmente desenvolvido para ajudar o JavaScript a funcionar de forma mais eficaz em navegadores da web.
Embora ainda sirva ao mesmo propósito, o WASM agora se estende além do navegador da web e se aventurou em aplicativos de borda e de servidor, duas áreas em que o JavaScript é conhecido por faltar. Isso é possível porque, no nível da CPU, o WASM é executado em formato binário e também não é uma linguagem de programação como o JavaScript. WASM fornece funcionalidade extra que acomoda uma série de linguagens diferentes, como JavaScript, Python, Rust e muito mais. A vantagem do WASM sobre o JavaScript continua sendo sua capacidade de integração com a linguagem, sem estar limitado ao JavaScript. A integração dá ao JavaScript um grande impulso no desempenho ao compilar a linguagem já interpretada e seu tempo de execução em módulos WASM.
WebAssembly e Rust são duas tecnologias muito distintas, mas ao mesmo tempo estão frequentemente associadas uma à outra. Rust é uma linguagem de programação popular conhecida por sua velocidade, segurança e alto desempenho. Já o WebAssembly é um compilador que converte códigos em máquinas executáveis. Além de suas definições, as duas tecnologias são diferentes nos seguintes aspectos.
WASM é usado principalmente no desenvolvimento web, permitindo a execução de código em navegadores web, incluindo JavaScript. Ao mesmo tempo, Rust é uma linguagem multifuncional que possui diversas aplicações, incluindo programação de sistemas, desenvolvimento de jogos e muito mais.
WASM não é uma linguagem de programação, mas um formato de instrução binária e pode ser direcionado a linguagens como C, C++ e Rust. Rust, por outro lado, é uma linguagem com sintaxe e recursos como empréstimo, propriedade e muito mais.
WASM utiliza um modelo de memória linear que fornece espaço de endereço linear que é facilmente acessado pelo programa. O gerenciamento de memória é feito manualmente pelo desenvolvedor e mantido explícito. Rust, por outro lado, enfatiza a segurança da memória. Ele faz uso de um verificador de empréstimo e sistema de propriedade que impõe uma regra estrita no momento da compilação que elimina vários bugs conhecidos por afetar a segurança da memória.
Rust está equipado com suporte próprio para programação simultânea por meio de seu sistema de propriedade, que permite aos desenvolvedores escrever código seguro e simultâneo sem o risco de corrida de dados. Ao contrário do Rust, o WASM não possui esses recursos; entretanto, ele pode aproveitar os recursos de simultaneidade do ambiente host.
Ao aprender como usar o WASM, certos cursos fornecem o melhor conhecimento para iniciantes que desejam criar projetos WASM em uma variedade de idiomas. Alguns desses cursos incluem:
Este curso fornece um guia completo para aprender a API WebAssembly JavaScript e o conjunto de ferramentas Emscripten. Uma vez adquirido, o curso dá aos usuários acesso a mais de 2 horas de vídeo-aulas sob demanda e 17 recursos educacionais para download.
O curso dá aos iniciantes uma ideia do que é WebAssembly e como ele afeta o desenvolvimento web. Você também aprenderia como carregar e executar módulos WebAssembly usando APIs nativas do navegador Java Script.
Este curso cobre os fundamentos do WebAssembly e por que ele é importante. O curso mostrará como construir aplicativos usando WebAssembly e como criar aplicativos web usando outras linguagens como C/C++.
Este curso gratuito sobre WebAssembly oferece aos iniciantes uma visão detalhada do que é o WASM. Ele ensina como escrever, compilar, incluir e instanciar o código. Ele fornece um guia passo a passo sobre como compilar código C++ em WASM.
O WebAssembly atualmente está na vanguarda do desenvolvimento web e sua velocidade, segurança e adaptabilidade são os principais recursos que os desenvolvedores acreditam que inaugurarão um novo mundo para aplicativos descentralizados. À medida que mais produtos procuram fazer uso do WASM, as portas de um futuro onde os contratos inteligentes sejam facilmente desenvolvidos e protegidos com as linguagens que o desenvolvedor conhece estão ao seu alcance.