Publication
Partagez vos connaissances.
+10
« 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 :
- Versions incompatibles entre l'environnement de développement local (par exemple, Sui CLI) et l'état de la chaîne.
- Différences dans la configuration des packages entre les réseaux (par exemple, Mainnet contre Testnet).
- 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
Réponses
5Laissez-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.
Ma réponse (pour une prime de +10) :
Pour éviter automatiquement les « erreurs de vérification de sources multiples » lors du déploiement du module Sui Move, je recommande le flux de résolution automatique suivant :
🛠️ Solution étape par étape :
- Synchronisation avec la version en chaîne
Avant de publier, votre fichier Move.toml doit correspondre exactement à la révision du framework utilisée sur le réseau cible (Testnet, Devnet ou Mainnet).
Sinon, des incohérences de dépendances telles que Sui : :vec_set ou Sui : :transfer_policy entraîneront des échecs de publication.
- Utiliser un script d'automatisation
Créez un script bash nommé update-deps.sh qui :
✅ Récupère le hachage de révision correct pour le réseau ✅ Met à jour votre dépendance Move.toml ✅ Reconstruit votre package pour vérifier la compatibilité
# ! /bin/bash
get_latest_rev () { réseau = 1$ case $network dans « testnet ») branche = « framework/testnet » ; « devnet ») branch="framework/devnet » ; « réseau principal ») branch="main » ; *) echo « Réseau non valide ! Utilisez : « testnet/devnet/mainnet » ; exit 1 ; esac
rev=$ (git ls-remote https://github.com/MystenLabs/sui $branch | cut -f1) écho $rev }
update_move_toml () { rev=$ (get_latest_rev $1) sed -i « s/rev =. */rev = \ "$rev \ »/» Déplacer.toml echo "✅ Mise à jour de Move.toml avec rev = $rev » }
principal () {
[$# -ne 1] && echo « Utilisation : 0$
principal « $@ »
✅ Utilisation :
chmod+x update-deps.sh . réseau de test /update-deps.sh
Cela garantit que votre environnement local utilise les versions exactes de Sui et MoveStdLib déployées en chaîne.
🚀 Conseils supplémentaires :
Intégration CI/CD : ajoutez ce script à votre flux de travail GitHub Actions avant de déplacer la publication.
Journalisation des erreurs : consignez les incohérences entre les versions afin de détecter les mises à niveau plus rapidement.
Sécurité du module : ne modifiez jamais les champs de structure publics ni l'ordre des mises à niveau — Sui les rejettera.
En automatisant la synchronisation des dépendances, vous supprimez la cause #1 de l'échec de la vérification des modules et vous accélérez les déploiements de production.
Proposé par : md rifat hossen Faites-moi savoir si vous voulez que cela soit traduit en bengali ou si vous voulez également un exemple CI/CD YAML ✅
Voici comment expliquer et résoudre les « erreurs de vérification de sources multiples » dans Sui Move lors de la publication ou de la mise à niveau :
Ces erreurs se produisent généralement parce que la version locale de votre framework Sui (depuis Move.toml) ne correspond pas à celle utilisée par la blockchain cible (Testnet, Devnet, Mainnet). Cette incompatibilité entraîne des échecs de validation, en particulier si des modules tels que Sui : :vec_set ou Sui : :zklogin_verified_id ne sont pas présents ou diffèrent en bytecode d'une version à l'autre.
Pour résoudre ce problème, mettez à jour la version dans votre section [dépendances] pour qu'elle corresponde exactement à la révision déployée en chaîne pour le réseau que vous ciblez. Au lieu de le faire manuellement, utilisez le script Bash fourni (update-deps.sh) pour automatiser le processus.
Ce script : • Extrait le dernier hash de validation de la branche droite (framework/testnet, framework/devnet ou main). • Met à jour la valeur rev dans Move.toml. • Construit le package à l'aide de sui move build pour confirmer la validité de la configuration.
Exemple d'utilisation :
chmod+x update-deps.sh . réseau de test /update-deps.sh
Vous obtiendrez une sortie telle que :
Mise à jour de Move.toml avec rev = 556b6e14896a09f95e7cf460bc8220a3bf997979 pour testnet MISE À JOUR DE LA DÉPENDANCE GIT https://github.com/MystenLabs/sui.git Y COMPRIS LA DÉPENDANCE Sui Y COMPRIS LA DÉPENDANCE | MoveStdLib BUILDING : bonjour Construisez avec succès. Vous pouvez désormais publier le package.
Cela garantit que votre version locale correspond au temps d'exécution de la chaîne, évitant ainsi les erreurs de vérification des sources
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.
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.
- Comment maximiser la détention de profits SUI : Sui Staking contre Liquid Staking616
- Pourquoi BCS exige-t-il un ordre de champs exact pour la désérialisation alors que les structures Move ont des champs nommés ?65
- « Erreurs de vérification de sources multiples » dans les publications du module Sui Move - Résolution automatique des erreurs55
- Erreur Sui Move - Impossible de traiter la transaction Aucune pièce de gaz valide n'a été trouvée pour la transaction419
- Échec de la transaction Sui : objets réservés pour une autre transaction410