Move é uma linguagem de contrato inteligente projetada para ambientes de blockchain, que pode ser executada em cadeias que suportam o MoveVM. Seu design leva em consideração questões de segurança relacionadas à blockchain e contratos inteligentes, e se inspira em alguns princípios de design de segurança do Rust. Este artigo analisará a segurança da linguagem Move sob três aspectos: características da linguagem, mecanismo de execução e ferramentas de verificação.
1. Características de segurança da linguagem Move
A linguagem Move aumenta a segurança ao sacrificar alguma flexibilidade, não suporta dispatch dinâmico e chamadas externas recursivas, mas utiliza conceitos como genéricos, armazenamento global, recursos, entre outros, para implementar um padrão de programação alternativo.
Os principais componentes do Move incluem:
Módulo: composto por tipos de estrutura e definições de processo
Estrutura: pode ser definida como um tipo de recurso, armazenada no armazenamento de chave-valor global.
Processo: definir a lógica do contrato
O armazenamento global do Move permite a persistência de dados, que só pode ser lido e escrito programaticamente por quem possui o módulo, mas pode ser visualizado no livro-razão público.
Move garante a segurança da compilação do código através de dois mecanismos:
Invariante de redução: usado para verificação estática, define a conservação do estado do sistema
Validador de bytecode: aplica tipos de segurança e linearização, prevenindo operações ilegais
2. Mecanismo de operação do Move
O programa Move é executado em uma máquina virtual e não pode acessar diretamente a memória do sistema. Ele adota um modelo de execução baseado em pilha, dividindo o armazenamento global em memória ( pilha ) e variáveis globais ( pilha ).
O estado do Move é composto pela pilha de chamadas, memória, variáveis globais e operações de array. Durante a execução, a pilha de chamadas mantém informações de contexto, e o salto estático evita a despachagem dinâmica, prevenindo assim ataques de reentrada.
MoveVM separa o armazenamento de dados e a pilha de chamadas, ao contrário do EVM. Este design melhora a segurança e a eficiência de execução.
3. Mover Prover
Move Prover é uma ferramenta de verificação formal que utiliza algoritmos de verificação dedutiva para validar a correção de programas. O seu fluxo de trabalho é:
Receber o arquivo fonte Move e as especificações
Compilar para bytecode e validar o modelo de objeto
Converter para a linguagem intermediária Boogie
Gerar condições de verificação
Usar o solucionador Z3 para verificar
Gerar relatório de diagnóstico
A Move Specification Language é utilizada para descrever as especificações do programa, podendo ser escrita de forma independente do código de negócios.
4. Resumo
Move considera de forma abrangente o design da linguagem, a execução da máquina virtual e as ferramentas de segurança. Sacrifica alguma flexibilidade, mas melhora a segurança e a verificabilidade. Vulnerabilidades comuns do EVM, como reentrância, estouro, etc., podem ser evitadas de forma eficaz, mas ainda é necessário ter cuidado com a autenticação, lógica e problemas de estouro de inteiros grandes.
Apesar de o Move oferecer múltiplas garantias de segurança, recomenda-se que os desenvolvedores utilizem serviços de auditoria de segurança de terceiros e deixem a redação e verificação das normas a cargo de empresas de segurança profissionais.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
26 Curtidas
Recompensa
26
8
Repostar
Compartilhar
Comentário
0/400
CountdownToBroke
· 08-04 13:47
Outra vez a copiar o irmão rust, praticamente igual a um versão castrada que o amigo escreveu.
Ver originalResponder0
TerraNeverForget
· 08-03 01:26
Então você também está se envolvendo na "move", certo? Eu também vou me envolver.
Ver originalResponder0
DuckFluff
· 08-02 19:38
E parte foi inspirada no Rust, dá até um pouco de dor de cabeça só de olhar.
Ver originalResponder0
SurvivorshipBias
· 08-01 22:52
Move muito seguro, depois o partido dos tubarões já não terá comida.
Ver originalResponder0
Ser_This_Is_A_Casino
· 08-01 22:50
Sinto que o move é um pouco demasiado rígido, ainda mais do que o rust.
Ver originalResponder0
SchrodingerAirdrop
· 08-01 22:50
Já não consigo aprender novamente, é realmente complicado.
Ver originalResponder0
MetaverseMigrant
· 08-01 22:49
Escrever em move ainda não é tão rápido quanto eu correr...
Ver originalResponder0
GasFeeDodger
· 08-01 22:45
Ainda é melhor escrever em solidity. É realmente trabalhoso.
Análise abrangente da segurança da linguagem Move: características da linguagem, mecanismo de execução e ferramentas de verificação
Análise da segurança da linguagem Move
Introdução
Move é uma linguagem de contrato inteligente projetada para ambientes de blockchain, que pode ser executada em cadeias que suportam o MoveVM. Seu design leva em consideração questões de segurança relacionadas à blockchain e contratos inteligentes, e se inspira em alguns princípios de design de segurança do Rust. Este artigo analisará a segurança da linguagem Move sob três aspectos: características da linguagem, mecanismo de execução e ferramentas de verificação.
1. Características de segurança da linguagem Move
A linguagem Move aumenta a segurança ao sacrificar alguma flexibilidade, não suporta dispatch dinâmico e chamadas externas recursivas, mas utiliza conceitos como genéricos, armazenamento global, recursos, entre outros, para implementar um padrão de programação alternativo.
Os principais componentes do Move incluem:
O armazenamento global do Move permite a persistência de dados, que só pode ser lido e escrito programaticamente por quem possui o módulo, mas pode ser visualizado no livro-razão público.
Move garante a segurança da compilação do código através de dois mecanismos:
Invariante de redução: usado para verificação estática, define a conservação do estado do sistema
Validador de bytecode: aplica tipos de segurança e linearização, prevenindo operações ilegais
2. Mecanismo de operação do Move
O programa Move é executado em uma máquina virtual e não pode acessar diretamente a memória do sistema. Ele adota um modelo de execução baseado em pilha, dividindo o armazenamento global em memória ( pilha ) e variáveis globais ( pilha ).
O estado do Move é composto pela pilha de chamadas, memória, variáveis globais e operações de array. Durante a execução, a pilha de chamadas mantém informações de contexto, e o salto estático evita a despachagem dinâmica, prevenindo assim ataques de reentrada.
MoveVM separa o armazenamento de dados e a pilha de chamadas, ao contrário do EVM. Este design melhora a segurança e a eficiência de execução.
3. Mover Prover
Move Prover é uma ferramenta de verificação formal que utiliza algoritmos de verificação dedutiva para validar a correção de programas. O seu fluxo de trabalho é:
A Move Specification Language é utilizada para descrever as especificações do programa, podendo ser escrita de forma independente do código de negócios.
4. Resumo
Move considera de forma abrangente o design da linguagem, a execução da máquina virtual e as ferramentas de segurança. Sacrifica alguma flexibilidade, mas melhora a segurança e a verificabilidade. Vulnerabilidades comuns do EVM, como reentrância, estouro, etc., podem ser evitadas de forma eficaz, mas ainda é necessário ter cuidado com a autenticação, lógica e problemas de estouro de inteiros grandes.
Apesar de o Move oferecer múltiplas garantias de segurança, recomenda-se que os desenvolvedores utilizem serviços de auditoria de segurança de terceiros e deixem a redação e verificação das normas a cargo de empresas de segurança profissionais.