El lenguaje Move, como un nuevo lenguaje de contratos inteligentes de próxima generación, tiene la seguridad como su principal característica. Este artículo explorará los problemas de seguridad del lenguaje Move desde tres aspectos: características del lenguaje, mecanismos de ejecución y herramientas de verificación.
1. Características de seguridad del lenguaje Move
El lenguaje Move ha abandonado la lógica no lineal, no admite el despacho dinámico ni las llamadas externas recursivas, sino que utiliza conceptos como genéricos, almacenamiento global y recursos para implementar un modo de programación alternativo. A continuación se presenta un ejemplo simple de implementación de activos de tokens:
mover
módulo 0x1::TestCoin {
use 0x1::signer;
const ADMIN: dirección = @0x1;
struct Coin tiene clave, almacenar {
valor: u64
}
struct Info tiene la clave {
total_supply: u64
}
// La oferta total es igual a la suma de los valores de todas las monedas
invariante para todo addr: dirección donde 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);
move_to(cuenta, Información { suministro_total: 0 });
}
public fun mint(account: &signer, amount: u64): Coin {
assert!(signer::address_of(account) == ADMIN, 0);
let supply = borrow_global_mut<info>(ADMIN);
supply.total_supply = supply.total_supply + amount;
Moneda { valor: cantidad }
}
public fun value_mut(coin: &mut Coin): &mut u64 {
&mut coin.value
}
}
Dos mecanismos de seguridad importantes del lenguaje Move:
a) Verificación de invariante: Definir la conservación del estado a través de un lenguaje de reducción.
b) Verificador de bytecode: aplica tipos seguros y linearización, evitando operaciones ilegales.
2. Mecanismo de funcionamiento de Move
El programa Move se ejecuta en una máquina virtual y no puede acceder directamente a la memoria del sistema. El estado del programa consiste en la pila de llamadas, la memoria, las variables globales y las operaciones de matriz.
MoveVM separa el almacenamiento de datos y la pila de llamadas, mejorando la seguridad y la eficiencia de ejecución. El almacenamiento independiente de recursos y el estricto control de acceso evitan eficazmente algunas vulnerabilidades comunes.
3. Mover Proveedor
Move Prover es una herramienta de verificación formal que utiliza algoritmos de verificación deductiva para validar la corrección de los programas. Su arquitectura es la siguiente:
Recibir el archivo fuente Move y las especificaciones
Compilar en bytecode y modelo de objeto de validador
Convertir a lenguaje intermedio Boogie
Generar condiciones de verificación
Verificación con el solucionador Z3
Salida del informe de diagnóstico
Move Specification Language se utiliza para describir las especificaciones del comportamiento del programa, y se puede escribir de forma independiente del código de negocio.
4. Resumen
El lenguaje Move ha considerado ampliamente la seguridad en términos de características del lenguaje, ejecución de la máquina virtual y herramientas de seguridad. Puede evitar de manera efectiva algunas vulnerabilidades comunes, pero aún se deben tener en cuenta problemas como la autenticación y la lógica. Se recomienda a los desarrolladores que utilicen auditorías de seguridad de terceros y que la verificación de normas sea realizada por empresas de seguridad profesionales.
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 me gusta
Recompensa
22
7
Compartir
Comentar
0/400
FromMinerToFarmer
· 07-08 18:00
Move, ¡el asesino viene~
Ver originalesResponder0
ProxyCollector
· 07-08 01:41
Serie de que nadie ve porque es demasiado largo
Ver originalesResponder0
TestnetScholar
· 07-06 08:22
¡Move es el futuro!
Ver originalesResponder0
MetaverseVagabond
· 07-06 08:20
¿De qué sirve la seguridad si no se sabe ganar dinero?
Análisis completo de la seguridad del lenguaje Move: características, mecanismos y herramientas de verificación
Introducción
El lenguaje Move, como un nuevo lenguaje de contratos inteligentes de próxima generación, tiene la seguridad como su principal característica. Este artículo explorará los problemas de seguridad del lenguaje Move desde tres aspectos: características del lenguaje, mecanismos de ejecución y herramientas de verificación.
1. Características de seguridad del lenguaje Move
El lenguaje Move ha abandonado la lógica no lineal, no admite el despacho dinámico ni las llamadas externas recursivas, sino que utiliza conceptos como genéricos, almacenamiento global y recursos para implementar un modo de programación alternativo. A continuación se presenta un ejemplo simple de implementación de activos de tokens:
mover módulo 0x1::TestCoin { use 0x1::signer;
}
Dos mecanismos de seguridad importantes del lenguaje Move:
a) Verificación de invariante: Definir la conservación del estado a través de un lenguaje de reducción.
b) Verificador de bytecode: aplica tipos seguros y linearización, evitando operaciones ilegales.
2. Mecanismo de funcionamiento de Move
El programa Move se ejecuta en una máquina virtual y no puede acceder directamente a la memoria del sistema. El estado del programa consiste en la pila de llamadas, la memoria, las variables globales y las operaciones de matriz.
MoveVM separa el almacenamiento de datos y la pila de llamadas, mejorando la seguridad y la eficiencia de ejecución. El almacenamiento independiente de recursos y el estricto control de acceso evitan eficazmente algunas vulnerabilidades comunes.
3. Mover Proveedor
Move Prover es una herramienta de verificación formal que utiliza algoritmos de verificación deductiva para validar la corrección de los programas. Su arquitectura es la siguiente:
Move Specification Language se utiliza para describir las especificaciones del comportamiento del programa, y se puede escribir de forma independiente del código de negocio.
4. Resumen
El lenguaje Move ha considerado ampliamente la seguridad en términos de características del lenguaje, ejecución de la máquina virtual y herramientas de seguridad. Puede evitar de manera efectiva algunas vulnerabilidades comunes, pero aún se deben tener en cuenta problemas como la autenticación y la lógica. Se recomienda a los desarrolladores que utilicen auditorías de seguridad de terceros y que la verificación de normas sea realizada por empresas de seguridad profesionales.