Sui.

Publicación

Comparte tu conocimiento.

article banner.
Meaning.Sui.
Jul 08, 2025
Artículo

📦 Análisis en profundidad del módulo `sui: :package`: publicación y actualización de paquetes en movimiento

En la rápida evolución de la tecnología blockchain, el lenguaje de programaciónMovedestaca por suseguridad,flexibilidadyauditabilidad. Una de sus principales fortalezas es lagestión refinada de los paquetes de contratos inteligentes.

Este artículo profundiza en el sui::packagemódulo: el motor detrás de la publicación, la actualización y el mantenimiento de los paquetes Move en la cadena de bloques Sui.


🔍 Descripción general del módulo

sui::packagees la piedra angular del ecosistema Move. Proporciona a los desarrolladores herramientas e interfaces sólidas para gestionar los paquetesde forma segura y eficiente.

📦 Declaración e importaciones

module sui::package;

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

Esto define el módulo e incorpora las bibliotecas estándar esenciales de Move y los módulos nativos de la interfaz de usuario para una lógica compleja.


🧩 Estructuras principales e interfaces públicas

1. Publisher

Gestiona laidentidad del publicadorde un paquete.

Funciones clave:

  • claim
  • claim_and_keep
  • burn_publisher

###2. UpgradeCap

Controla lacapacidad de actualizaciónde un paquete.

Campos clave:

  • package_id
  • version
  • policy(política de actualización)

Funciones clave:

  • upgrade_package
  • restrict

3. UpgradeTicket

Concede permiso para unamejora especifica.

Funciones clave:

  • ticket_package
  • ticket_policy
  • ticket_digest

4. UpgradeReceipt

Se emite después de una actualización exitosa.

Funciones principales:

  • receipt_cap
  • receipt_package

🚨 Constantes de error

Ayuda a los desarrolladores a depurar los errores con claridad.

-ENotOneTimeWitness: El testimonio de una sola vez no es válido -ETooPermissive: La política de actualización es demasiado indulgente -EInvalidPackage: El paquete proporcionado no es válido


🔒 Constantes de estrategia de actualización

Controla la evolución de los paquetes:

-COMPATIBLE: Actualizaciones compatibles con versiones anteriores -ADDITIVE: Añade nuevas funciones, pero no cambies ni elimines las existentes -DEP_ONLY: Solo se permiten cambios de dependencia

Estas constantes imponenactualizaciones seguras y controladas.


🧱 Definiciones de estructura

Publisher

-dirección del paquete: identifica de forma exclusiva al editor -nombre del módulo: el espacio de nombres del módulo del editor


UpgradeCap

-ID del paquete: el paquete de destino -versión: versión actual -política: se ha aplicado la política de actualización


UpgradeTicket

-upgrade_cap_id: enlace al UpgradeCap que lo controla -package_id: paquete de destino -política: política de actualización utilizada -digest: resumen del código de bytes (vector de bytes)


UpgradeReceipt

-upgrade_cap_id: identidad del controlador -package_id: el paquete actualizado


🧠 Definiciones de funciones principales

claim

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

Reclama la identidad de un editor mediante un testigo único (OTW). Garantiza la exclusividad y la confianza.


claim_and_keep

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

Similar aclaim, pero envía el objeto Publisher a la cuenta de la persona que llama.


burn_publisher

fun burn_publisher(publisher: &mut Publisher);

Destruye la identidad de un editor y todos los privilegios asociados.


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

Valida:

  • Que UpgradeCapcoincide con el package_id
  • La políticano es más permisivade lo permitido UpgradeTicketLuego devuelve un firmado.

upgrade_package

fun upgrade_package(ticket: &UpgradeTicket, data: &vector<u8>) -> UpgradeReceipt {
    // Upgrade logic
}
  • Verifica UpgradeTicket data- Sustituye el código del paquete actual por el nuevo bytecode ()
  • Devuelve un UpgradeReceiptcomo prueba de que la actualización se ha realizado correctamente

restrict

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

Se usa pararestringir los permisos de actualización. No se puede cambiar a una políticamás permisiva.


🛡️ Funciones de seguridad y auditoría

sui::packageestá diseñado teniendo en cuentala seguridad y la auditabilidad:

-Testigo único (OTW): evita la suplantación de identidad en las publicaciones -Constantes de la política de actualizaciones: Impida las actualizaciones no autorizadas o incorrectas -Aserciones: protecciones integradas para evitar el uso indebido o la lógica inesperada


🧪 Soporte de pruebas y simulación

El módulo incluyefunciones exclusivas de pruebaque están destinadas a entornos de desarrollo y prueba:

TestOnly-: Marca la lógica de solo prueba -publish: Simula la publicación en las pruebas -upgrade: Simula la actualización en las pruebas


✅ Resumen

El sui::packagemódulo ofrece a los desarrolladores de Move un sistemapotente, estructurado y seguropara:

  • Publicar paquetes
  • Autorizar y ejecutar actualizaciones
  • Gestione las capacidades y políticas de actualización

Garantizaconfianza, flexibilidadymantenimientoen el desarrollo de contratos inteligentes en Sui.

Con módulos como Movesui::package, el lenguaje Move sigue demostrando su fuerza en eldiseño modular, laarquitectura que prioriza la seguridady laergonomía del desarrollador, lo que allana el camino para sistemas Web3 seguros y escalables.

  • Sui
  • Architecture
0
Cuota
Comentarios
.

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

394Publicaciones554Respuestas
Sui.X.Peera.

Gana tu parte de 1000 Sui

Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

Campaña de RecompensasJulio