Sui.

Publication

Partagez vos connaissances.

article banner.
Meaning.Sui.
Jul 08, 2025
Article

📦 Analyse approfondie du module `sui : :package` : publication et mise à niveau de packages dans Move

Dans l'évolution rapide de la technologie blockchain, lelangage de programmation Movese distingue par sasécurité, saflexibilitéet sonauditabilité. L'une de ses principales forces est lagestion raffinée des packages de contrats intelligents.

Cet article explore en profondeur le sui::packagemodule, le moteur à l'origine de la publication, de la mise à niveau et de la maintenance des packages Move sur la blockchain Sui.


🔍 Présentation du module

sui::packageest la pierre angulaire de l'écosystème Move. Il fournit aux développeurs des outils et des interfaces robustes pour gérer les packagesde manière sécurisée et efficace.

📦 Déclaration et importations

module sui::package;

use std::ascii::String;
use std::type_name;
use sui::types;

Cela définit le module et intègre les bibliothèques standard Move essentielles et les modules natifs de SUI pour la logique complexe.


🧩 Structures de base et interfaces publiques

1. Publisher

Gère l'identité de l'éditeurd'un package.

Fonctions principales :

  • claim
  • claim_and_keep
  • burn_publisher

###2. UpgradeCap

Contrôle lacapacité de mise à niveaud'un package.

Champs clés :

  • package_id
  • version
  • policy(politique de mise à niveau)

Fonctions principales :

  • upgrade_package
  • restrict

3. UpgradeTicket

Autorise unemise à niveau spécifique.

Fonctions principales :

  • ticket_package
  • ticket_policy
  • ticket_digest

##4. UpgradeReceipt

Publié après une mise à niveau réussie.

Fonctions principales :

  • receipt_cap
  • receipt_package

🚨 Constantes d'erreur

Aide les développeurs à déboguer avec clarté.

ENotOneTimeWitness: Le témoin unique n'est pas valide - ETooPermissive: La politique de mise à niveau est trop indulgente - EInvalidPackage: Le colis fourni n'est pas valide


🔒 Constantes de stratégie de mise à niveau

Contrôle la façon dont les packages peuvent évoluer :

COMPATIBLE: Mises à niveau rétrocompatibles - ADDITIVE: Ajoutez de nouvelles fonctionnalités, mais ne modifiez/ne supprimez pas les fonctionnalités existantes - DEP_ONLY: Seuls les changements de dépendance sont autorisés

Ces constantes appliquent desmises à niveau sécurisées et contrôlées.


🧱 Définitions des structures

Publisher

-adresse du package : identifie de manière unique l'éditeur -nom du module : espace de noms du module de l'éditeur


UpgradeCap

-ID du package : le package cible -version : version actuelle -politique : politique de mise à niveau appliquée


UpgradeTicket

-upgrade_cap_id : lien vers l'UpgradeCap de contrôle -package_id : package cible -politique : politique de mise à niveau utilisée -digest : résumé du bytecode (vecteur d'octets)


UpgradeReceipt

-upgrade_cap_id : identité du contrôleur -package_id : le package mis à jour


🧠 Définitions des fonctions de base

claim

fun claim(otw: &OneTimeWitness) -> Publisher;

Requiert l'identité d'un éditeur à l'aide d'un témoin unique (OTW). Garantit l'unicité et la confiance.


claim_and_keep

fun claim_and_keep(otw: &OneTimeWitness) -> Publisher;

Similaire àclaim, mais envoie l'objet Publisher sur le compte de l'appelant.


burn_publisher

fun burn_publisher(publisher: &mut Publisher);

Détruit l'identité d'un éditeur et tous les privilèges associés.


authorize_upgrade

fun authorize_upgrade(cap: &UpgradeCap, package_id: &PackageID, policy: u8, digest: &vector<u8>) -> UpgradeTicket {
    assert!(cap.package_id == *package_id, EInvalidPackage);
    assert!(cap.policy <= policy, ETooPermissive);
    UpgradeTicket {
        upgrade_cap_id: cap.id(),
        package_id: *package_id,
        policy: policy,
        digest: digest.clone()
    }
}

Valide :

  • Cela UpgradeCapcorrespond à package_id
  • La politique n'estpas plus permissiveque ce qui est autorisé Renvoie ensuite une signatureUpgradeTicket.

upgrade_package

fun upgrade_package(ticket: &UpgradeTicket, data: &vector<u8>) -> UpgradeReceipt {
    // Upgrade logic
}
  • Vérifie UpgradeTicket data- Remplace le code du package actuel par le nouveau bytecode ()
  • Renvoie un UpgradeReceiptcomme preuve de réussite de la mise à niveau

restrict

fun restrict(cap: &mut UpgradeCap, policy: u8) {
    assert!(cap.policy < policy, ETooPermissive);
    cap.policy = policy;
}

Utilisé pourrenforcer les autorisations de mise à niveau. Impossible de revenir à une politiqueplus permissive.


🛡️ Fonctionnalités de sécurité et d'audit

sui::packageest conçu dans un souci desécurité et d'auditabilité :

-Témoin unique (OTW) : empêche l'usurpation d'identité lors de la publication -Constantes de la politique de mise à niveau : empêchez les mises à niveau non autorisées ou interrompues -Assertions : protections intégrées pour empêcher toute utilisation abusive ou toute logique inattendue


🧪 Assistance aux tests et à la simulation

Le module inclut desfonctions de testréservées aux environnements de développement/test :

TestOnly: Marque la logique de test uniquement - publish: Simule la publication dans les tests - upgrade: Simule la mise à niveau lors des tests


✅ Résumé

Le sui::packagemodule offre aux développeurs de Move un systèmepuissant, structuré et sécurisépour :

  • Publier des packages
  • Autoriser et exécuter les mises à niveau
  • Gérer les capacités et les politiques de mise à niveau

Il garantitla confiance, la flexibilitéet lamaintenabilitédans le développement de contrats intelligents sur Sui.

Avec des modules tels quesui::package, le langage Move continue de montrer sa force dans laconception modulaire, l'architecture axée sur la sécuritéet l'ergonomie pour les développeurs, ouvrant la voie à des systèmes Web3 évolutifs et sécurisés.

  • Sui
  • Architecture
0
Partager
Commentaires
.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

394Publications554Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesJuillet