Analyse de la sécurité de Move : caractéristiques, mécanismes et outils de validation en profondeur

robot
Création du résumé en cours

Analyse de la sécurité du langage Move

Le langage Move, en tant que nouveau langage de contrat intelligent de génération, a dès le début de sa conception pris pleinement en compte les problèmes de sécurité liés à la blockchain et aux contrats intelligents. Cet article analysera la sécurité du langage Move sous trois aspects : les caractéristiques du langage, le mécanisme d'exécution et les outils de vérification.

1. Les caractéristiques de sécurité du langage Move

Le langage Move possède les principales caractéristiques de sécurité suivantes :

  • Abandonner la répartition dynamique, les appels externes récursifs et autres logiques non linéaires, éviter les failles de réentrance, etc.
  • Utiliser les types de ressources et le mécanisme de stockage global pour réaliser la gestion sécurisée du stockage et des ressources.
  • Effectuer une double vérification de sécurité à la compilation à l'aide de la réduction par invariants et du vérificateur de bytecode

Voici un exemple simple de contrat Move :

déplacer module 0x1::TestCoin { utiliser 0x1::signer;

const ADMIN: adresse = @0x1;

struct Coin a une clé {
    valeur: u64
}

struct Info a une clé {
    total_supply: u64  
}

invariant pour tout addr: adresse où existe<coin>(addr):
    global\u003cinfo\u003e(ADMIN).total_supply \u003e= global\u003ccoin\u003e(addr).value;

public fun initialize(account: &signer) {
    assert!(signer::address_of(account) == ADMIN, 1);
    move_to(compte, Info { total_supply: 0 });
}

fun publique mint(compte: &signataire, montant: u64): Pièce {
    assert!(signer::address_of(compte) == ADMIN, 1);
    let supply = borrow_global_mut\u003cinfo\u003e(ADMIN);
    supply.total_supply = supply.total_supply + amount;
    Pièce { valeur : montant }
}

fun publique valeur_mut(coin: &mut Coin): &mut u64 {
    &mut coin.value
}

}

Move garantit la sécurité du code par la réduction des invariants et le vérificateur de bytecode :

  1. Règle d'invariant : utilisée pour vérifier que la somme des valeurs de tous les objets Coin dans le système doit être égale à total_supply dans Info.

  2. Vérificateur de bytecode : vérification de type stricte et logique linéaire, empêchant la création, la copie ou la destruction illégale de ressources.

Analyse de la sécurité de Move : le changeur de jeu du langage des contrats intelligents

2. Mécanisme de fonctionnement de Move

Le programme Move s'exécute dans une machine virtuelle et possède les caractéristiques suivantes :

  • L'accès à la mémoire système n'est pas possible en cours d'exécution, garantissant un fonctionnement sécurisé dans un environnement non fiable.
  • Utiliser un interpréteur basé sur une pile pour exécuter des instructions de bytecode, facile à mettre en œuvre et à contrôler.
  • Séparer le stockage des données et la pile d'appels pour améliorer la sécurité et l'efficacité d'exécution
  • Les ressources ne peuvent être déplacées que de manière destructive, et ne peuvent pas être copiées.

L'état d'exécution du programme Move est composé d'un quadruplet ⟨C, M, G, S⟩ :

  • C: pile d'appels
  • M : mémoire ( tas )
  • G: variables globales ( pile )
  • S: opérande

Ce design sépare l'état de l'utilisateur et la logique du programme, améliorant ainsi la sécurité et l'efficacité de l'exécution concurrente.

Analyse de la sécurité de Move : le changeur de jeu pour le langage des contrats intelligents

3. Déplacer le Prover

Move Prover est un outil de vérification formelle utilisé pour garantir la correctitude des contrats intelligents. Son flux de travail est le suivant :

  1. Recevoir le fichier source Move et les spécifications comme entrée
  2. Extraire la spécification et compiler en bytecode
  3. Convertir en modèle d'objet de validateur
  4. Traduire en langue intermédiaire Boogie
  5. Générer des conditions de vérification
  6. Utiliser le solveur Z3 pour vérifier la formule
  7. Générer un rapport de diagnostic

Move Prover utilise le Move Specification Language pour décrire les spécifications des programmes. Ce langage est un sous-ensemble de Move, permettant d'écrire des spécifications de manière indépendante du code métier.

Analyse de la sécurité de Move : le changeur de jeu du langage des contrats intelligents

Résumé

Le langage Move a pris en compte la sécurité de manière exhaustive en ce qui concerne les caractéristiques du langage, l'exécution de la machine virtuelle et les outils de sécurité. Il peut efficacement éviter des vulnérabilités communes telles que les attaques par réentrance et les débordements, mais il est toujours nécessaire de faire attention aux problèmes d'authentification et de logique. Il est conseillé aux développeurs d'utiliser des services d'audit tiers et de confier la rédaction des spécifications à des entreprises de sécurité afin d'améliorer davantage la sécurité des contrats.

Analyse de la sécurité de Move : le changeur de jeu du langage des contrats intelligents

MOVE-3.85%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 6
  • Reposter
  • Partager
Commentaire
0/400
gaslight_gasfeezvip
· 08-19 03:55
move a été soufflé vers le ciel, mais finalement, cela dépendait toujours des tests.
Voir l'originalRépondre0
GhostChainLoyalistvip
· 08-18 16:10
Ce Move est vraiment solide !
Voir l'originalRépondre0
LiquidityNinjavip
· 08-16 06:53
Le mécanisme des types de ressources a vraiment quelque chose d'intéressant !
Voir l'originalRépondre0
ProofOfNothingvip
· 08-16 06:50
Les vieux joueurs de move sont-ils morts ?
Voir l'originalRépondre0
JustAnotherWalletvip
· 08-16 06:49
Move est plutôt pas mal.
Voir l'originalRépondre0
rekt_but_not_brokevip
· 08-16 06:44
Encore un tas de paroles creuses, avez-vous testé les performances réelles ?
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)