A linguagem Move, como a nova geração de linguagem de contratos inteligentes, tem a segurança como sua principal característica. Este artigo irá explorar a questão da segurança da linguagem Move a partir de 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 abandonou a lógica não linear, não suporta dispatch dinâmico e chamadas externas recursivas, mas utiliza conceitos como genéricos, armazenamento global e recursos para implementar um padrão de programação alternativo. Abaixo está um exemplo simples de implementação de ativos de token:
mover
módulo 0x1::TestCoin {
usar 0x1::signer;
const ADMIN: endereço = @0x1;
struct Coin tem chave, armazenar {
valor: u64
}
struct Info tem chave {
total_supply: u64
}
// A oferta total é igual à soma dos valores de todas as moedas
invariável para todo addr: endereço onde existe<coin>(addr):
global<info>(ADMIN).total_supply == sum(select Coin.value (global<coin>(addr)));
public fun initialize(account: &signer) {
assert!(signer::address_of(account) == ADMIN, 0);
mover_para(conta, Info { total_supply: 0 });
}
public fun mint(account: &signer, amount: u64): Coin {
assert!(signer::address_of(account) == ADMIN, 0);
let supply = borrow_global_mut\u003cinfo\u003e(ADMIN);
supply.total_supply = supply.total_supply + amount;
Moeda { valor: quantidade }
}
public fun value_mut(coin: &mut Coin): &mut u64 {
&mut coin.value
}
}
Dois mecanismos de segurança importantes da linguagem Move:
a) Verificação de invariantes: definição da conservação do estado através de uma linguagem de redução.
b) Verificador de bytecode: impõe tipos de segurança e linearização, prevenindo operações ilegais.
2. Mecanismo de operação do Move
O programa Move é executado na máquina virtual e não pode acessar diretamente a memória do sistema. O estado do programa é composto pela pilha de chamadas, memória, variáveis globais e operações.
O MoveVM separa o armazenamento de dados da pilha de chamadas, melhorando a segurança e a eficiência da execução. O armazenamento independente de recursos e o controle rigoroso de acesso evitam efetivamente algumas vulnerabilidades comuns.
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. Sua arquitetura é a seguinte:
Receber arquivos de origem Move e normas
Compilar para bytecode e modelo de objeto validador
Converter para a linguagem intermediária Boogie
Gerar condições de verificação
Verificação com o solucionador Z3
Saída do relatório de diagnóstico
A Linguagem de Especificação de Movimento é usada para descrever as especificações do comportamento do programa, podendo ser escrita independentemente do código de negócios.
4. Resumo
A linguagem Move considera amplamente a segurança em termos de características da linguagem, execução da máquina virtual e ferramentas de segurança. Ela pode evitar efetivamente algumas vulnerabilidades comuns, mas ainda é necessário ter cuidado com problemas de autenticação, lógica, entre outros. Recomenda-se que os desenvolvedores utilizem auditorias de segurança de terceiros e deixem a validação das normas a cargo de empresas de segurança especializadas.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
22 Curtidas
Recompensa
22
7
Compartilhar
Comentário
0/400
FromMinerToFarmer
· 07-08 18:00
Move, o assassino veio~
Ver originalResponder0
ProxyCollector
· 07-08 01:41
Série de ninguém vê porque é muito longo
Ver originalResponder0
TestnetScholar
· 07-06 08:22
Move é o futuro!
Ver originalResponder0
MetaverseVagabond
· 07-06 08:20
Para que serve a segurança? É preciso saber ganhar dinheiro.
Discussão sobre a segurança da linguagem Move: Análise abrangente de características, mecanismos e ferramentas de verificação
Introdução
A linguagem Move, como a nova geração de linguagem de contratos inteligentes, tem a segurança como sua principal característica. Este artigo irá explorar a questão da segurança da linguagem Move a partir de 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 abandonou a lógica não linear, não suporta dispatch dinâmico e chamadas externas recursivas, mas utiliza conceitos como genéricos, armazenamento global e recursos para implementar um padrão de programação alternativo. Abaixo está um exemplo simples de implementação de ativos de token:
mover módulo 0x1::TestCoin { usar 0x1::signer;
}
Dois mecanismos de segurança importantes da linguagem Move:
a) Verificação de invariantes: definição da conservação do estado através de uma linguagem de redução.
b) Verificador de bytecode: impõe tipos de segurança e linearização, prevenindo operações ilegais.
2. Mecanismo de operação do Move
O programa Move é executado na máquina virtual e não pode acessar diretamente a memória do sistema. O estado do programa é composto pela pilha de chamadas, memória, variáveis globais e operações.
O MoveVM separa o armazenamento de dados da pilha de chamadas, melhorando a segurança e a eficiência da execução. O armazenamento independente de recursos e o controle rigoroso de acesso evitam efetivamente algumas vulnerabilidades comuns.
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. Sua arquitetura é a seguinte:
A Linguagem de Especificação de Movimento é usada para descrever as especificações do comportamento do programa, podendo ser escrita independentemente do código de negócios.
4. Resumo
A linguagem Move considera amplamente a segurança em termos de características da linguagem, execução da máquina virtual e ferramentas de segurança. Ela pode evitar efetivamente algumas vulnerabilidades comuns, mas ainda é necessário ter cuidado com problemas de autenticação, lógica, entre outros. Recomenda-se que os desenvolvedores utilizem auditorias de segurança de terceiros e deixem a validação das normas a cargo de empresas de segurança especializadas.