Sui.

Publication

Partagez vos connaissances.

Prime+10

Peera Admin.
Mar 05, 2025
Questions et Réponses avec des Experts

« Erreurs de vérification de sources multiples » dans les publications du module Sui Move - Résolution automatique des erreurs

Les développeurs travaillant avec Sui Move rencontrent fréquemment des problèmes liés à des « erreurs de vérification de sources multiples détectées » lorsqu'ils tentent de publier ou de mettre à niveau des modules. Ces erreurs sont dues à des incohérences entre les dépendances locales et leurs homologues en chaîne, ce qui entraîne des échecs de publication et des problèmes de déploiement. Vous trouverez ci-dessous un exemple consolidé des erreurs auxquelles les développeurs sont confrontés :

Failed to publish the Move module(s), reason: [warning] Multiple source verification errors found:
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::vec_set
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::vec_map
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000001::MoveStdlib::bit_vector
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000001::MoveStdlib::ascii
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::hex
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::zklogin_verified_id
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::prover
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::coin
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::dynamic_field
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::transfer
- On-chain version of dependency Sui::zklogin_verified_id was not found.
- On-chain version of dependency Sui::zklogin_verified_issuer was not found.
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::tx_context
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::transfer_policy
- Local dependency did not match its on-chain version at 0000000000000000000000000000000000000000000000000000000000000002::Sui::kiosk

Ce problème se pose souvent pour les raisons suivantes :

  1. Versions incompatibles entre l'environnement de développement local (par exemple, Sui CLI) et l'état de la chaîne.
  2. Différences dans la configuration des packages entre les réseaux (par exemple, Mainnet contre Testnet).
  3. Dépendances manquantes ou obsolètes dans l'environnement en chaîne.

Questions clés

  • Comment pouvons-nous automatiser la détection et la résolution de ces incohérences de dépendance pendant le processus de publication ?
  • Quels outils ou scripts peuvent être développés pour garantir que les dépendances locales s'alignent toujours sur leurs homologues en chaîne ?
  • Existe-t-il un moyen de rationaliser ce processus en intégrant des contrôles de dépendance dans les pipelines CI/CD existants ou en améliorant le SDK Sui ?

Votre tâche consiste à proposer une solution qui réponde à ces défis, en garantissant des déploiements plus fluides et plus fiables pour les développeurs de Sui Move. N'oubliez pas de publier votre solution ci-dessous.

  • Sui
  • SDKs and Developer Tools
4
1
Partager
Commentaires
.

Réponses

1
0xduckmove.
Mar 7 2025, 09:09

Laissez-moi vous expliquer la solution et comment résoudre les**"Erreurs de vérification de sources multiples** » que vous rencontrez dans Sui Move lors de la publication ou de la mise à niveau de modules. Lorsque vous développez des modules Sui Move localement, vous spécifiez les dépendances dans votre fichier Move.toml, comme suit :

[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui", subdir = "crates/sui-framework", rev = "some-revision" }

Le champ rev indique la version spécifique (une branche, une balise ou un hash de validation) du framework Sui que vous utilisez.

Si cette version ne correspond pas à celle déployée sur la blockchain de votre réseau cible, des erreurs de vérification s'afficheront lors de la publication ou des mises à niveau. Par exemple, la blockchain utilise peut-être une version plus ancienne Sui::vec_setque votre code local, ou un module similaire n'est Sui::zklogin_verified_idpeut-être pas publié sur le réseau que vous ciblez.

Ma solution est un script Bash qui met à jour votre fichier Move.toml avec la révision correcte du framework Sui en fonction de votre réseau cible, puis vérifie la configuration en créant votre package. Enregistrez-le update-deps.shdans le répertoire de votre projet (où se trouve Move.toml).

#!/bin/bash

# Function to get the latest commit hash for the network-specific branch
get_latest_rev() {
    network=$1
    case $network in
        "testnet")
            branch="framework/testnet"
            ;;
        "devnet")
            branch="framework/devnet"
            ;;
        "mainnet")
            branch="main"
            ;;
        *)
            echo "Invalid network specified. Use 'testnet', 'devnet', or 'mainnet'."
            exit 1
            ;;
    esac
    # Fetch the latest commit hash from the specified branch
    rev=$(git ls-remote https://github.com/MystenLabs/sui $branch | cut -f1)
    if [ -z "$rev" ]; then
        echo "Failed to fetch revision for branch $branch."
        exit 1
    fi
    echo $rev
}

# Function to update Move.toml with the correct revision
update_move_toml() {
    network=$1
    rev=$(get_latest_rev $network)
    # Update the rev field in Move.toml for the Sui dependency
    sed -i "s/rev = .*/rev = \"$rev\"/" Move.toml
    echo "Updated Move.toml with rev = $rev for $network"
}

# Main function
main() {
    if [ $# -ne 1 ]; then
        echo "Usage: $0 <network> (e.g., testnet, devnet, mainnet)"
        exit 1
    fi
    network=$1
    update_move_toml $network
    # Attempt to build the package
    if ! sui move build; then
        echo "Build failed. Please check for missing dependencies or other issues."
    else
        echo "Build successful. You can now publish the package."
    fi
}

# Run the main function with provided arguments
main "$@"

Vous pouvez l'exécuter Run chmod +x update-deps.shet l'exécuter avec votre réseau cible. comme ./update-deps.sh testnet

Voici donc la sortie de votre terminal :

harryphan@MacBook-Pro-2 hello % ./update-deps.sh testnet

Updated Move.toml with rev = 556b6e14896a09f95e7cf460bc8220a3bf997979 for testnet
UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello
Build successful. You can now publish the package.
5
Meilleure réponse
Commentaires
.

Connaissez-vous la réponse ?

Veuillez vous connecter et la partager.

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

260Publications369Ré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écompensesMai
    Nous utilisons des cookies pour vous assurer la meilleure expérience sur notre site Web.
    Plus d'infos