Sui.

Beitrag

Teile dein Wissen.

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

📦 Eingehende Analyse des `sui: :package`-Moduls: Paketveröffentlichung und Aktualisierung in Move

In der rasanten Entwicklung der Blockchain-Technologie zeichnet sich dieMove-Programmiersprachedurch ihreSicherheit,FlexibilitätundÜberprüfbarkeitaus. Eine ihrer Kernstärken ist dieraffinierte Verwaltung intelligenter Vertragspakete.

Dieser Artikel befasst sich eingehend mit dem sui::packageModul — dem Motor, der hinter der Veröffentlichung, Aktualisierung und Wartung von Move-Paketen auf der Sui-Blockchain steckt.


🔍 Modulübersicht

sui::packageist ein Eckpfeiler im Move-Ökosystem. Es bietet Entwicklern robuste Tools und Schnittstellen, um Paketesicher und effizientzu verwalten.

📦 Deklaration und Importe

module sui::package;

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

Dies definiert das Modul und beinhaltet wichtige Move-Standardbibliotheken und SUI-Native-Module für komplexe Logik.


🧩 Kernstrukturen und öffentliche Schnittstellen

1. Publisher

Behandelt dieHerausgeberidentitäteines Pakets.

Die wichtigsten Funktionen:

  • claim
  • claim_and_keep
  • burn_publisher

2. UpgradeCap

Steuert dieUpgrade-Funktioneines Pakets.

Wichtige Felder:

  • package_id
  • version
  • policy(Upgrade-Richtlinie)

Die wichtigsten Funktionen:

  • upgrade_package
  • restrict

3. UpgradeTicket

Erteilt die Erlaubnis für einspezifisches Upgrade.

Die wichtigsten Funktionen:

  • ticket_package
  • ticket_policy
  • ticket_digest

4. UpgradeReceipt

Wird nach einem erfolgreichen Upgrade ausgegeben.

Die wichtigsten Funktionen:

  • receipt_cap
  • receipt_package

🚨 Fehlerkonstanten

Hilft Entwicklern beim übersichtlichen Debuggen.

-ENotOneTimeWitness: Der einmalige Zeuge ist ungültig -ETooPermissive: Die Upgrade-Richtlinie ist zu nachsichtig -EInvalidPackage: Das bereitgestellte Paket ist ungültig


🔒 Strategiekonstanten aktualisieren

Steuert, wie sich Pakete weiterentwickeln können:

-COMPATIBLE: Abwärtskompatible Upgrades -ADDITIVE: Füge neue Funktionen hinzu, ändere/lösche aber keine vorhandenen -DEP_ONLY: Nur Änderungen an Abhängigkeiten sind erlaubt

Diese Konstanten erzwingensichere und kontrollierte Upgrades.


🧱 Strukturdefinitionen

Publisher

-Paketadresse: Identifiziert den Herausgeber eindeutig -Modulname: Der Modul-Namespace des Herausgebers


UpgradeCap

-Paket-ID: Das Zielpaket -Version: Aktuelle Version -Richtlinie: Die Upgrade-Richtlinie wurde angewendet


UpgradeTicket

-upgrade_cap_id: Link zum steuernden UpgradeCap -package_id: Zielpaket -Policy: Es wurde eine Upgrade-Richtlinie verwendet -Digest: Bytecode-Zusammenfassung (Bytevektor)


UpgradeReceipt

-upgrade_cap_id: Identität des Controllers -package_id: Das aktualisierte Paket


🧠 Definitionen der Kernfunktionen

claim

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

Fordert mithilfe eines einmaligen Zeugen (OTW) die Identität eines Herausgebers an. Sorgt für Einzigartigkeit und Vertrauen.


claim_and_keep

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

Ähnlich wieclaim, sendet aber das Publisher-Objekt an das Konto des Anrufers.


burn_publisher

fun burn_publisher(publisher: &mut Publisher);

Zerstört eine Herausgeberidentität und alle zugehörigen Rechte.


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()
    }
}

Validiert:

  • Das UpgradeCapentspricht dem package_id
  • Die Richtlinie istnicht freizügigerals zulässig UpgradeTicketGibt dann ein signiertes zurück.

upgrade_package

fun upgrade_package(ticket: &UpgradeTicket, data: &vector<u8>) -> UpgradeReceipt {
    // Upgrade logic
}
  • Überprüft UpgradeTicket data- Ersetzt den aktuellen Paketcode durch den neuen Bytecode ()
  • Gibt eine UpgradeReceiptals Nachweis für ein erfolgreiches Upgrade zurück

restrict

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

Wird verwendet, umdie Upgrade-Berechtigungen zu verschärfen. Ein Downgrade auf einefreizügigere Richtlinieist nicht möglich.


🛡️ Sicherheits- und Auditfunktionen

wurde sui::packageunter Berücksichtigung vonSicherheit und Überprüfbarkeitentwickelt:

-Einmaliger Zeuge (OTW): Beugt Identitätswechsel bei Veröffentlichungen vor -Richtlinien-Konstanten aktualisieren: Beugt unbefugten oder fehlerhaften Upgrades vor -Assertionen: Integrierte Schutzfunktionen zur Vermeidung von Missbrauch oder unerwarteter Logik


🧪 Test- und Simulationsunterstützung

Das Modul beinhaltetreine Testfunktionen, die auf Entwicklungs-/Testumgebungen beschränkt sind:

TestOnly-: Markiert reine Testlogik -publish: Simuliert das Publizieren in Tests -upgrade: Simuliert das Aktualisieren von Tests


✅ Zusammenfassung

Das sui::packageModul bietet Move-Entwicklern einleistungsstarkes, strukturiertes und sicheresSystem, mit dem sie:

  • Pakete veröffentlichen
  • Upgrades autorisieren und ausführen
  • Verwaltung der Upgrade-Funktionen und -Richtlinien

Es gewährleistetVertrauen, FlexibilitätundWartbarkeitbei der Entwicklung intelligenter Verträge auf Sui.

Mit Modulen wie der sui::packageMove-Sprache zeigt die Move-Sprache weiterhin ihre Stärken in den Bereichenmodulares Design,sicherheitsorientiertes ArchitekturundErgonomiefür Entwickler — und ebnet so den Weg für skalierbare, sichere Web3-Systeme.

  • Sui
  • Architecture
0
Teilen
Kommentare
.

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

386Beiträge541Antworten
Sui.X.Peera.

Verdiene deinen Anteil an 1000 Sui

Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.

BelohnungskampagneJuli