Beitrag
Teile dein Wissen.
📦 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::package
Modul — dem Motor, der hinter der Veröffentlichung, Aktualisierung und Wartung von Move-Paketen auf der Sui-Blockchain steckt.
🔍 Modulübersicht
sui::package
ist 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
UpgradeCap
entspricht dempackage_id
- Die Richtlinie istnicht freizügigerals zulässig
UpgradeTicket
Gibt 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
UpgradeReceipt
als 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::package
unter 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::package
Modul 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::package
Move-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
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Verdiene deinen Anteil an 1000 Sui
Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.
- Warum benötigt BCS eine genaue Feldreihenfolge für die Deserialisierung, wenn Move-Strukturen benannte Felder haben?53
- Fehler bei der Überprüfung mehrerer Quellen“ in den Veröffentlichungen des Sui Move-Moduls — Automatisierte Fehlerbehebung43
- Sui-Transaktion schlägt fehl: Objekte sind für eine andere Transaktion reserviert25
- Wie interagieren Fähigkeitsbeschränkungen mit dynamischen Feldern in heterogenen Sammlungen?05