Beitrag
Teile dein Wissen.
+10
Fehler bei der Überprüfung mehrerer Quellen“ in den Veröffentlichungen des Sui Move-Moduls — Automatisierte Fehlerbehebung
Entwickler, die mit Sui Move arbeiten, stoßen beim Versuch, Module zu veröffentlichen oder zu aktualisieren, häufig auf Probleme im Zusammenhang mit „Fehler bei der Überprüfung mehrerer Quellen gefunden“. Diese Fehler treten aufgrund von Diskrepanzen zwischen lokalen Abhängigkeiten und ihren Gegenstücken in der Kette auf, was zu fehlgeschlagenen Veröffentlichungen und Problemen bei der Bereitstellung führt. Im Folgenden finden Sie ein konsolidiertes Beispiel für die Fehler, mit denen Entwickler konfrontiert sind:
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
Dieses Problem tritt häufig auf aufgrund von:
- Die Versionen zwischen der lokalen Entwicklungsumgebung (z. B. Sui CLI) und dem On-Chain-Status stimmen nicht überein.
- Unterschiede in den Paketkonfigurationen zwischen Netzwerken (z. B. Mainnet vs. Testnet).
- Fehlende oder veraltete Abhängigkeiten in der On-Chain-Umgebung.
Wichtige Fragen
- Wie können wir die Erkennung und Behebung dieser Abhängigkeiten während des Veröffentlichungsprozesses automatisieren?
- Welche Tools oder Skripte können entwickelt werden, um sicherzustellen, dass lokale Abhängigkeiten immer mit denen auf der Kette übereinstimmen?
- Gibt es eine Möglichkeit, diesen Prozess zu rationalisieren, indem man Abhängigkeitsprüfungen in bestehende CI/CD-Pipelines integriert oder das Sui SDK erweitert?
Ihre Aufgabe ist es, eine Lösung vorzuschlagen, die diese Herausforderungen bewältigt und eine reibungslosere und zuverlässigere Bereitstellung für Sui Move-Entwickler gewährleistet. Stellen Sie sicher, dass Sie Ihre Lösung unten veröffentlichen.
- Sui
- SDKs and Developer Tools
Antworten
1Lassen Sie mich die Lösung erklären und wie Sie die**"Fehler bei der Überprüfung mehrerer Quellen**“ beheben können, auf die Sie in Sui Move beim Veröffentlichen oder Aktualisieren von Modulen stoßen. Wenn Sie Sui Move-Module lokal entwickeln, spezifizieren Sie Abhängigkeiten in Ihrer Move.toml-Datei wie folgt:
[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui", subdir = "crates/sui-framework", rev = "some-revision" }
Das Feld rev gibt die spezifische Version (ein Branch, ein Tag oder ein Commit-Hash) des Sui-Frameworks an, das Sie verwenden.
Wenn diese Version nicht mit der Version übereinstimmt, die auf der Blockchain für Ihr Zielnetzwerk bereitgestellt wird, treten bei der Veröffentlichung oder bei Upgrades Überprüfungsfehler auf. Beispielsweise verwendet die Blockchain möglicherweise eine ältere Version Sui::vec_set
Ihres lokalen Codes, oder ein solches Modul ist Sui::zklogin_verified_id
möglicherweise nicht in dem Netzwerk veröffentlicht, auf das Sie abzielen.
Meine Lösung ist ein Bash-Skript, das Ihre Move.toml-Datei mit der richtigen Version des Sui-Frameworks basierend auf Ihrem Zielnetzwerk aktualisiert und dann das Setup überprüft, indem es Ihr Paket erstellt. Speichern Sie es wie update-deps.sh
in Ihrem Projektverzeichnis (wo sich Move.toml befindet).
#!/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 "$@"
Sie können Run chmod +x update-deps.sh
es mit Ihrem Zielnetzwerk ausführen und ausführen. wie ./update-deps.sh testnet
Also hier ist der Ausgang in deinem 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.
Weißt du die Antwort?
Bitte melde dich an und teile sie.