Autor original: Analista de negociação PSE @cryptohawk

DR

  1. Uma máquina virtual é um sistema de computador emulado por software que fornece um ambiente de execução para programas. Ele pode simular vários dispositivos de hardware e permitir que programas sejam executados em um ambiente controlado e compatível.

  2. A Máquina Virtual Ethereum (EVM) é uma máquina virtual baseada em pilha usada para executar contratos inteligentes Ethereum zkEVM fez certas otimizações de eficiência de geração à prova de zk na equivalência/compatibilidade de EVM;

    zkVM abandona equivalência/compatibilidade EVM e aumenta a prioridade da facilidade de uso do zk;

    privacidade zkVM sobrepõe recursos de privacidade nativos ao zkVM;

    SVM, FuelVM e MoveVM têm em comum a busca pelo melhor desempenho por meio da execução paralela, mas possuem características próprias nos detalhes de projeto;

    ESC VM e BitVM conduziram alguns experimentos inovadores de camada de computação nas cadeias ETH e BTC, respectivamente, mas a demanda real por implementação é baixa no ambiente atual.

  3. A enorme ecologia de usuários do EVM determina que qualquer rede blockchain que a abandone será difícil competir com ela no curto prazo. Portanto, a ecologia não-EVM introduz usuários ecológicos do EVM através de tradutores/compiladores/intérpretes de bytecode e até mesmo camadas de compatibilidade de VM. utilizar recursos não-EVM Usar recursos de máquinas virtuais para construir uma nova narrativa ecológica pode ser um caminho necessário para o sucesso.

1.1 O que é VM?

Uma máquina virtual (VM) é um bloco de construção de recursos de computação virtualizados que executa quase as mesmas funções que um computador, incluindo a execução de aplicativos e sistemas operacionais. O conceito de máquinas virtuais não é novo e a tecnologia é amplamente utilizada em muitos ecossistemas tecnológicos.

No contexto do blockchain, uma máquina virtual (VM) é um software que executa programas, muitas vezes referido como o ambiente de tempo de execução que executa contratos inteligentes de blockchain. As máquinas virtuais geralmente fornecem um ambiente de computador virtual simulando diferentes dispositivos de hardware. Os dispositivos de hardware que diferentes máquinas virtuais podem simular variam, mas geralmente incluem CPU, memória, disco rígido, interface de rede, etc. Quando uma transação on-chain é enviada, a máquina virtual é responsável por processar a transação e atualizar o estado da blockchain (o estado global atual de toda a rede) afetado pela execução da transação. As regras específicas para alterar o estado da rede são definidas pela VM. Ao processar uma transação, a VM converte o código do contrato inteligente em um formato que o hardware do nó/validador pode executar.

O kernel mais importante entre as VMs é o LLVM (máquina virtual de baixo nível), que pode ser considerado o kernel mais importante do compilador. A imagem mostra o esquema original de operação do EVM. O contrato inteligente é convertido através do código intermediário do LLVM IR e convertido em Bytecode. Esses Bytecodes serão armazenados no blockchain Quando o contrato inteligente for chamado, os Bytecodes serão convertidos em Opcodes correspondentes, que serão então executados pelo EVM e pelo hardware do nó.

1.2 VM principal

1.2.1 EVM - Blockchain VM possui uma pedra no total, EVM possui oito buckets exclusivamente e o restante é dividido em dois buckets.

Projetos representativos: Otimismo, Arbitrum

Como o ecossistema blockchain com os usuários desenvolvedores mais ativos do setor, a Máquina Virtual Ethereum (EVM) é uma máquina virtual baseada em pilha que fornece um ambiente de computador virtual simulando dispositivos de hardware como CPU, memória, armazenamento e pilhas. para executar as instruções do contrato inteligente e armazenar o status e os dados do contrato inteligente. O conjunto de instruções do EVM inclui vários códigos de operação Opcode, como operações aritméticas, operações lógicas, operações de armazenamento, operações de salto, etc.

A memória e o armazenamento simulados pelo EVM são dispositivos utilizados para armazenar o estado e os dados dos contratos inteligentes. EVM trata memória e armazenamento como duas áreas diferentes e pode acessar o status e os dados de contratos inteligentes lendo e gravando memória e armazenamento.

A pilha simulada EVM é usada para armazenar os operandos e resultados das instruções. A maioria das instruções no conjunto de instruções do EVM são baseadas em pilha, lendo operandos da pilha e colocando os resultados de volta na pilha.

O processo de design do EVM é obviamente de baixo para cima. Primeiro, o ambiente de hardware simulado (pilha, memória) é finalizado e, em seguida, seu próprio conjunto de instruções de montagem (Opcode) e bytecode (Bytecode) é projetado de acordo com o ambiente correspondente. . A comunidade Ethereum projetou duas linguagens compiladas de alto nível – Solidity e Vyper – para eficiência de execução de EVM. Nem é preciso dizer que o Solidity precisa ser enfatizado. Vyper é uma linguagem EVM de alto nível projetada por Vitalik para melhorar alguns dos defeitos existentes no Solidity. No entanto, ela não obteve grande adoção na comunidade, por isso foi gradualmente desaparecendo. o palco da história.

1.2.2 zkEVM - Eu quero tudo: compatível com ambiente EVM + suporta transformação de raiz de estado global para gerar à prova de zk

Projetos representativos: Taiko, Scroll, Polygon zkEVM

Como o EVM não foi construído tendo em mente a computação à prova de zk, ele possui características que são hostis aos circuitos de prova, especialmente em termos de opcodes especiais, arquitetura baseada em pilha, sobrecarga de armazenamento e custos de prova. zkEVM é uma máquina virtual que executa contratos inteligentes de forma compatível com cálculos à prova de zk, para que o processo de execução do EVM possa ser verificado de forma mais eficiente e econômica por meio da prova de zk/prova de validade. Em comparação com o OP Rollup, a camada de execução só precisa copiar o EVM, e construir o EVM para ser compatível com ZK é um desafio adicional para o ZK Rollup.

Os rollups ZK não são facilmente compatíveis com a Máquina Virtual Ethereum (EVM). Provar cálculos EVM de uso geral em um circuito é mais difícil e consome muitos recursos do que provar cálculos simples (como a transferência de token descrita anteriormente).

No entanto, os avanços na tecnologia de conhecimento zero reacenderam o interesse em agrupar cálculos EVM em provas de conhecimento zero. Esses esforços visam criar uma implementação EVM de conhecimento zero (zkEVM) que possa verificar com eficiência a exatidão da execução do programa. .

Assim como o EVM, o zkEVM faz a transição entre estados após realizar cálculos em determinadas entradas. A diferença é que o zkEVM também cria provas de conhecimento zero para verificar a exatidão de cada etapa da execução do programa. As provas de validade verificam a correção das operações que envolvem o estado da máquina virtual (memória, pilha, armazenamento) e a própria computação (ou seja, a operação chamou os opcodes corretos e os executou corretamente?).

A ideia é linda, mas a realidade é muito tênue Atualmente, é difícil para o Rollup alcançar a compatibilidade com ZK e EVM (ou mesmo equivalência), ou seja, ele deve copiar a camada de execução Ethereum L1 o mais completamente possível. incluindo hash, árvore de estado e árvore de transação, pré-compilação, etc., para que o cliente de execução Ethereum L1 possa ser usado como está para processar blocos Rollup ou descartar a compatibilidade EVM e recriar o Opcode existente para atestado/verificação no circuito; , permitindo a execução inteligente de contratos .

1.2.3 zkVM - Você não pode ter seu bolo e comê-lo também: máquina virtual não-evm orientada para eficiência e à prova de zk

Projetos representativos: Starknet, Zksync, RISC ZERO

zkVM abandona a compatibilidade EVM, considera a prova de dados e a atualização de status como seus objetivos principais e encontra um denominador comum entre criptografia e linguagens de alto nível para fornecer uma estrutura comum para vários aplicativos.

Desde que a Starkware começou mais cedo em todo o campo ZK, ela acumulou tecnologia suficiente e tem uma certa liderança tecnológica. É uma arquitetura técnica representativa centrada em ZK, e Cairo VM e linguagem Cairo são construídas em torno de ZK. A desvantagem é que o custo de aprendizagem do Cairo é relativamente elevado.

A estrutura do ZKsync é compatível com as características do EVM e do ZK, integrando Solidity com sua linguagem de circuito autodesenvolvida Zinc e unificando os dois no nível IR dentro do compilador. A vantagem é que o núcleo do compilador LLVM é compatível com vários idiomas.

RISC Zero usa a arquitetura RISC-V para construir um simulador que permite aos programadores escrever programas para zkVM usando linguagens comuns como Rust, C/C++ e Go. pode ser expresso em Solidity, permitindo escrever e encadear código irrelevante.

1.2.4 Privacidade zkVM - zk amigável + suporte nativo à privacidade tenta acender uma nova centelha ecológica

Projetos representativos: Aleo, Ola, Polygon Miden

Blockchain serve como um sistema de contabilidade pública, e todas as transações são conduzidas na cadeia, o que significa que as mudanças de estado contendo informações de ativos relacionadas a endereços ou contas são abertas e transparentes. Portanto, além de trabalhar no dimensionamento de soluções, algumas equipes de blockchain acreditam que o próximo recurso chave a ser implementado é a privacidade.

Privacidade zkVM Além dos recursos de suporte compatível com zk para expansão, devido aos recursos de privacidade suportados nativamente por sua própria linguagem de programação, os desenvolvedores de aplicativos de camada superior podem desenvolver dapps relacionados à privacidade, que trarão novos cenários de aplicativos e grandes narrativas. Por exemplo, resolva completamente o problema do MEV e proteja a propriedade dos dados do usuário. É claro que a complexidade do design do Privacy zkVM requer uma equipe técnica maior para implementá-lo e pode levar vários anos para alcançá-lo.

1.2.5 SVM - Depois que a maré baixa, ainda há brasas: um ambiente de execução onde o design de desempenho atingiu o extremo

Projetos representativos: Eclipse Mainnet, Nitro, MakerDAO Chain (talvez)

SVM, a máquina virtual Solana, concentra-se em um ambiente de execução de alto desempenho, e os contratos inteligentes são escritos principalmente na linguagem Rust. Comparado com os ambientes de execução EVM e EOS WASM de thread único, ao exigir que as transações Solana descrevam todos os estados que uma transação irá ler ou escrever durante a execução, o SVM implementa execução simultânea de transações não sobrepostas e transações que apenas leem o mesmo estado.

Além disso, para permitir verificação/transmissão rápida de grandes blocos de transações, o processo de verificação de transações na rede Solana faz uso extensivo de otimizações de pipeline comuns no design de CPU. Para satisfazer a situação em que o fluxo de dados de entrada é processado em uma série de etapas e cada etapa possui um hardware diferente responsável. Uma analogia típica é uma lavadora e secadora que lava/seca/dobra várias cargas de roupa em sequência. A limpeza deve ser feita antes da secagem e a dobra antes da secagem, mas cada uma dessas três operações é realizada por uma unidade separada.

Além disso, o SVM é baseado em registradores e possui um conjunto de instruções muito menor que o EVM, tornando a execução do SVM mais fácil de provar em ZK. Para rollups otimistas, um design baseado em registro facilita a definição de pontos de verificação.

1.2.6 Fuel VM —— buff stack: Máquina virtual paralela sob estrutura UTXO

Projeto representativo: Combustível

Fuel VM é uma melhoria baseada no quadro técnico de EVM, Solana, WASM e BTC Cosmos. Comparado com EVM, possui as seguintes características:

O mais singular é que o Fuel não apenas define listas de acesso semelhantes ao SVM, mas também tem a capacidade de executar transações em paralelo com transações não sobrepostas. Ele também adota o modelo UTXO, que é dividido em token UTXO e contrato UTXO, além disso. melhorando a eficiência do acesso e o rendimento da computação.

Além disso, o Fuel VM fornece uma experiência de desenvolvedor poderosa e tranquila por meio de sua própria linguagem específica de domínio, Sway, e da cadeia de ferramentas de suporte Forc. Seu ambiente de desenvolvimento mantém as vantagens de linguagens de contrato inteligentes, como Solidity, ao mesmo tempo que adota o paradigma introduzido em. o ecossistema de ferramentas Rust.

No futuro, o Fuel VM também implementará atualizações da linguagem Sway, incluindo otimização do compilador em termos de tamanho de bytecode, o Sway suportará mais backends (o backend EVM já está em desenvolvimento), a abstração será mais econômica e mais aplicativos estarão disponíveis. Migrando do Solidity/Vyper para o Sway, melhorando a análise de reentrada no nível do compilador e muito mais.

1.2.7 ESC VM – o sucessor do Ordinal/Smartweave: a camada de computação no topo do Ethereum

Projeto representativo: Protocolo de Etscrições

ESC VM, ou Ethscriptions Virtual Machine, é uma solução de contrato inteligente proposta pelo Ethscriptions Protocol. O próprio Ethscriptions Protocol é um protocolo semelhante ao BTC Ordinal na cadeia Ethereum, com foco na exploração de alternativas de baixo custo diferentes de contratos inteligentes e L2.

As ethscriptions permitem que os usuários ignorem o armazenamento e a execução de contratos inteligentes a um custo muito baixo e apliquem os dados de chamada em Tx para cálculo por meio das regras de protocolo previamente acordadas. Simplificando, desde que haja uma transação Ethereum bem-sucedida, seus dados de chamada estejam em conformidade com as especificações de dados válidas especificadas e o endereço "para" exclusivo não seja 0, pode-se considerar que uma Etscrição foi criada legalmente, o endereço "de" é o criador e o endereço "para" pertence ao proprietário.

No início do design, cada Ethscription prefere a forma de NFT, como imagem NFT. O conteúdo da imagem é gravado diretamente em calldata no formato Base 64:

O recentemente popular eths é baseado na especificação do protocolo brc-20 e foi criado com Ethscription:

O contrato inteligente introduzido pela ESC VM é chamado de contrato burro, que é publicado como um contrato lógico, mas não interage na cadeia na forma de EVM. Além disso, ESC VM também adiciona um comando de computador de formato especial. As Ethscriptions criadas usando este formato serão reconhecidas pelo ESC VM e interagirão com contratos burros, como Implantar - implantar contratos burros, Chamar - invocar contratos burros.

Esta solução tem algumas limitações. Primeiro, a função do contrato burro não é pagável. Ou seja, se você quiser enviar ETH através do contrato burro, deverá passar por um “contrato ponte”, e o “contrato ponte”. em si envolve abuso de controlo e riscos de roubo de activos; segundo, existem barreiras de entrada no ecossistema, o que não permite a criação arbitrária de contratos estúpidos, e os seus códigos precisam de ser definidos através da proposta de governação do Protocolo de Éticas.

Resumindo, ESC VM é uma camada de computação construída sobre Ethereum L1 como camada de armazenamento de dados. Ela é implementada colocando lógica de contrato, chamadas de contrato, chamadas de contrato e outros conteúdos de dados nos dados de chamada do Ethereum tx ESC VM. consenso de estado é o consenso do cliente ESC VM, que é semelhante à lógica de implementação SmartWeave do Arweave, exceto que a camada de armazenamento de dados do SmartWeave é Arweave.

1.2.8 Bit VM - Um experimento de pesquisa interessante: canal de execução ponto a ponto no BTC

Projeto representativo: ZeroSync

O fundador do ZeroSync, Robin Linus, lançou um white paper "BitVM: Compute Anything On Bitcoin" em 9 de outubro. Para ser mais preciso, não é uma VM, mas uma tentativa de criar um espaço de computação Turing completo cujos contratos são armazenados em Bitcoin On-chain , mas a lógica do contrato é executada fora da cadeia. Se você acredita que a outra parte violou o contrato, você pode iniciar um desafio na cadeia. Se a outra parte não puder responder corretamente, você poderá retirar todos os fundos do contrato.

A vantagem é que o Bitcoin pode receber a integridade Turing sem quaisquer modificações no protocolo Bitcoin, sem novos opcodes, sem soft forks, e pode ser aplicado a qualquer momento.

As suas deficiências também são óbvias. Em primeiro lugar, apenas suporta transacções entre duas partes (uma parte certifica e uma parte verifica). Em segundo lugar, a criação de um contrato requer a criação de uma grande quantidade de dados e a pré-assinatura de um grande número de transacções. o armazenamento de informações fora da cadeia é enorme.

A seguir está uma breve introdução à lógica técnica:

(1) Clique para inserir o compromisso

O compromisso de entrada de ponto permite que o provador defina o valor de entrada 0 ou 1 para a porta lógica. Neste compromisso, existem dois valores de hash H(A 0) e H(A 1). , como A 0 , o valor de entrada é definido como 0 e, se A 1 for revelado, o valor de entrada é definido como 1 .

(2) Compromisso da porta lógica

Depois de obter o valor de entrada, você pode combinar qualquer porta lógica no script Bitcoin combinando AND, NOT do Bitcoin e outros códigos de operação.

(3) Compromisso de circuito binário

A completude de Turing pode ser alcançada compondo centenas de milhões de portas lógicas em um circuito binário. Para comprometer este circuito binário na rede Bitcoin, todas as portas lógicas precisam ser colocadas em um nó folha em um endereço Taproot.

(4) Link desafio-resposta

Não basta comprometer o circuito na cadeia. Ambas as partes precisam de uma forma eficaz de verificar se os resultados do cálculo do contrato estão corretos. Num mundo ideal, o contrato funciona fora da cadeia e ambas as partes ficam felizes se cooperarem e não tiverem disputas sobre o resultado. Porém, se houver uma disputa entre as duas partes da transação, elas precisarão entrar no link desafio-resposta para verificar os resultados do cálculo e forçar a distribuição do saldo do canal por meio de scripts Bitcoin.

Portanto, o BitVM está longe de ser uma espécie de Bitcoin Rollup ou L2, sem ambiente completo de execução de máquina virtual, estado global, linguagem de alto nível para publicação de contratos inteligentes complexos, nem permite que qualquer número de usuários interaja facilmente com esses contratos . Vamos usar um exemplo muito popular para ilustrar: BitVM é como construir um computador gigante que é maior que uma sala numa época em que todos podem usar um terminal móvel.

1.2.9 MoveVM —— O produto da herança genética do Facebook Web2

Projetos representativos: Aptos, Sui

Move é uma linguagem de programação para escrever contratos inteligentes seguros. Foi originalmente desenvolvida pelo Facebook para fornecer suporte ao blockchain Diem. Depois que o projeto blockchain Diem foi suspenso, os projetos representados por Aptos e Sui continuaram a usar a linguagem Move. A maior característica do blockchain Move é que o armazenamento de dados usa armazenamento global, consistindo em uma árvore enraizada no endereço da conta. Cada endereço pode armazenar dados de recursos e código do módulo.

O Move possui dois tipos diferentes de programas: módulos e scripts. Módulos são bibliotecas que definem tipos estruturais e funções que operam nesses tipos. O tipo de estrutura define o modo de armazenamento global do Move e a função do módulo define as regras para atualizar o armazenamento. Os próprios módulos também são armazenados no armazenamento global. O script é o ponto de entrada do arquivo executável, semelhante à função principal nas linguagens tradicionais, e é um fragmento de código temporário que não é publicado no armazenamento global.

Em resumo, o módulo Move é semelhante ao módulo de biblioteca dinâmica carregado quando o arquivo executável do sistema é executado e o script é semelhante ao programa principal. Os usuários podem escrever seus próprios scripts para acessar o armazenamento global, incluindo a chamada de módulos, enquanto a publicação de módulos ou a execução de scripts operam por meio do Move VM.

1.3 Tendências de desenvolvimento ecológico

Agora que o efeito de rede EVM é tão poderoso, a migração de usuários EVM para a ecologia de cadeia não EVM se tornou o maior ponto de crescimento para projetos emergentes de blockchain. Isso trará mais capacidade de composição de Dapp e maior conectividade no futuro. crescimento.

1.3.1 Compatibilidade front-end da carteira

A integração de usuários EVM em cadeias não EVM tem sido historicamente uma grande barreira, mas o Metamask Snap lançado recentemente quebrará essa barreira. Os usuários de EVM podem continuar a usar o MetaMask sem trocar de carteira. Graças às contribuições de código aberto do Drift para a construção da excelente implementação do MetaMask Snap, o UX é equivalente à interação com qualquer cadeia EVM. Os usuários da mainnet Eclipse poderão interagir com aplicativos nativos no MetaMask ou usar carteiras nativas Solana, como Salmon.

1.3.2 Compatibilidade de back-end da VM

1.3.2.1 Tradutor/Compilador

Projeto representativo: Wrap

Warp é um tradutor Solidity-Cairo desenvolvido pela Nethermind, uma conhecida equipe de infraestrutura Ethereum. Warp pode traduzir o código do Solidity para o Cairo, mas o programa Cairo traduzido geralmente precisa ser modificado e adicionado com recursos do Cairo (como chamar funções integradas, otimizar memória, etc.) para maximizar a eficiência de execução.

1.3.2.2 Camada de compatibilidade de intérprete de bytecode/VM

Projetos representativos: Kakarot, Neon EVM

Kakarot é um interpretador de bytecode EVM escrito no Cairo e implementado na forma de contratos inteligentes implantados na Starknet. Ele simula a pilha, memória, execução e outros aspectos do EVM na forma de contratos inteligentes do Cairo. Comparado com a tradução de código, Kakarot implementa a implementação passo a passo de Opcode e Pré-compilação por trás de EVM e constrói componentes como Registro de Conta e Registro de Blockhash para realizar processamento adicional no mapeamento de endereço de conta, aquisição de informações de bloco, etc., permitindo kakarot para ter mais alta compatibilidade nativa.

Neon EVM é um EVM que funciona como um contrato inteligente e pode ser implantado em qualquer cadeia SVM. A própria rede principal do Eclipse usa SVM como ambiente de execução, mas oferece compatibilidade total com EVM (incluindo suporte a bytecode EVM e Ethereum JSON-RPC) por meio de Neon EVM, e a taxa de transferência é maior do que EVM de thread único. Além disso, cada instância Neon EVM possui seu próprio mercado de taxas locais, ou seja, há um limite máximo nas unidades de computação relacionadas à interação de conta de contrato único na altura do bloco (1/4 das unidades de computação em bloco), portanto, apenas os usuários precisa interagir com contratos quentes específicos ou precisa pagar uma taxa de prioridade quando o bloco estiver cheio. Nesse sentido, aplicações que implantam seus próprios contratos podem obter as vantagens de uma cadeia de aplicações, reduzindo assim os danos à experiência do usuário, à segurança ou à liquidez de toda a rede causados ​​pelo congestionamento de uma interação específica do contrato tx.

Referências:

1. "Kakarot: Explorando o caminho de compatibilidade EVM da Starknet", por Cynic Starknet Astro

2. "BitVM desperta discussões acaloradas, a rede Bitcoin pode alcançar a integridade de Turing?", por Haotian

3.https://ethereum.org/en/developers/docs/evm/

4. "Arquitetura técnica Starkware e revisão ecológica", por Maxlion

5.https://twitter.com/muneeb/status/1712461799327416491

6. "Relatório de pesquisa de combustível da camada de execução modular de alta velocidade de pesquisa de projeto", da Web3 CN

7.https://www.fuel.network/

8.https://docs.ethscriptions.com/overview/introduzindo-ethscriptions

9. “Análise da primeira vulnerabilidade crítica do Aptos Move VM”,por Numen Cyber ​​Labs

10. https://ethereum.org/en/developers/docs/evm/

11.“O que é SVM - A Máquina Virtual Solana”,por Squads

12.“Apresentando Eclipse Mainnet: The Ethereum SVM L2”,por Eclipse

13.https://john-hol.gitbook.io/bitvm/

14.https://bitvm.org/bitvm.pdf

15.“Os diferentes tipos de ZK-EVMs”,por Vitalik Buterin

16. “Relatório de Pesquisa Cipholio: Discutindo os planos e o futuro do ZkVM”, por YOLO SHEN, Cipholio Ventures