Sui.

Beitrag

Teile dein Wissen.

Prämie+10

Peera Admin.
Mar 05, 2025
Experten Q&A

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:

  1. Die Versionen zwischen der lokalen Entwicklungsumgebung (z. B. Sui CLI) und dem On-Chain-Status stimmen nicht überein.
  2. Unterschiede in den Paketkonfigurationen zwischen Netzwerken (z. B. Mainnet vs. Testnet).
  3. 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
5
5
Teilen
Kommentare
.

Antworten

5
0xduckmove.
Mar 7 2025, 09:09

Lassen 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_setIhres lokalen Codes, oder ein solches Modul ist Sui::zklogin_verified_idmö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.shin 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.shes 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.
7
Beste Antwort
Kommentare
.
md rifat hossen.
Jun 19 2025, 17:22

Meine Antwort (für +10 Bounty):

Um bei der Bereitstellung des Sui Move-Moduls automatisch „Fehler bei der Überprüfung mehrerer Quellen“ zu vermeiden, empfehle ich den folgenden automatisierten Lösungsablauf:


🛠️ Schrittweise Lösung:

  1. Mit der On-Chain-Version synchronisieren

Vor der Veröffentlichung muss Ihre Move.toml genau der Framework-Version entsprechen, die im Zielnetzwerk (Testnet, Devnet oder Mainnet) verwendet wird.

Andernfalls führen nicht übereinstimmende Abhängigkeiten wie Sui: :vec_set oder Sui: :transfer_policy zu Veröffentlichungsfehlern.


  1. Verwenden Sie ein Automatisierungsskript

Erstellen Sie ein Bash-Skript mit dem Namen update-deps.sh, das:

✅ Ruft den richtigen Revisions-Hash für das Netzwerk ab ✅ Aktualisiert deine Move.toml-Abhängigkeit ✅ Erstellt dein Paket neu, um die Kompatibilität zu überprüfen

#! /bin/bash

get_neueste_rev () { Netzwerk=$1 Fall $network in „testnet“) branch= „Framework/Testnet“; „devnet“) branch= „framework/devnet“; „mainnet“) branch= „main“; *) echo „Ungültiges Netzwerk! Benutze: „testnet/devnet/mainnet“; Ausfahrt 1; esac

rev=$ (git ls-remote https://github.com/MystenLabs/sui $branch | cut -f1) echo $rev }

aktualisieren_move_toml () { rev=$ (get_latest_rev $1) Ich habe -i „s/rev =“ verwendet. */rev =\ "$rev\“/“ .toml verschieben echo "✅ Move.toml wurde mit rev = $rev“ aktualisiert }

Haupt () { [$# -ne 1] && echo „Nutzung: $0" && exit 1 update_move_toml $1 sui move build && echo "✅ Build erfolgreich. Bereit zur Veröffentlichung!“ || echo "❌ Build ist fehlgeschlagen. Überprüfen Sie die Abhängigkeiten.“ }

Haupt- „$@“


✅ Verwendungszweck:

chmod +x update-deps.sh . /update-deps.sh Testnetz

Dadurch wird sichergestellt, dass Ihre lokale Umgebung die exakten Sui- und MovestDLib-Versionen verwendet, die in der Kette bereitgestellt werden.


🚀 Zusätzliche Tipps:

CI/CD-Integration: Füge dieses Skript zu deinem GitHub Actions-Workflow hinzu, bevor du sui move veröffentlichst.

Fehlerprotokollierung: Protokollieren Sie Versionskonflikte, um Upgrades schneller zu erkennen.

Modulsicherheit: Ändere niemals öffentliche Strukturfelder oder die Reihenfolge bei Upgrades — Sui wird sie ablehnen.


Durch die Automatisierung der Abhängigkeitssynchronisierung beseitigen Sie die #1 -Ursache für Fehlschläge bei der Modulüberprüfung — und beschleunigen Produktionsbereitstellungen.


Eingereicht von: md rifat hossen Lass mich wissen, ob du das auf Bangla übersetzt haben willst oder ob du auch ein CI/CD YAML-Beispiel haben möchtest ✅

2
Kommentare
.
BigDev.
Aug 15 2025, 16:31

So erklären und beheben Sie die „Fehler bei der Überprüfung mehrerer Quellen“ in Sui Move beim Veröffentlichen oder Aktualisieren:

Diese Fehler treten normalerweise auf, weil Ihre lokale Sui-Framework-Version (von Move.toml) nicht mit der Version übereinstimmt, die die Ziel-Blockchain (Testnet, Devnet, Mainnet) verwendet. Diese Nichtübereinstimmung führt zu Validierungsfehlern — insbesondere, wenn Module wie Sui: :vec_set oder Sui: :zklogin_verified_id nicht vorhanden sind oder sich im Bytecode zwischen den Versionen unterscheiden.

Um das Problem zu beheben, aktualisieren Sie die Version in Ihrem Abschnitt [dependencies] so, dass sie genau der Revision entspricht, die in der Kette für das Netzwerk bereitgestellt wird, auf das Sie abzielen. Anstatt dies manuell zu tun, verwenden Sie das mitgelieferte Bash-Skript (update-deps.sh), um den Prozess zu automatisieren.

Dieses Skript: • Ruft den neuesten Commit-Hash aus dem rechten Branch ab (framework/testnet, framework/devnet oder main). • Aktualisiert den Rev-Wert in Move.toml. • Erstellt das Paket mithilfe von sui move build, um zu bestätigen, dass das Setup gültig ist.

Beispiel für die Verwendung:

chmod +x update-deps.sh . /update-deps.sh Testnetz

Sie erhalten eine Ausgabe wie:

Move.toml mit rev = 556b6e14896a09f95e7cf460bc8220a3bf997979 für Testnet aktualisiert AKTUALISIERUNG DER GIT-ABHÄNGIGKEIT https://github.com/MystenLabs/sui.git EINSCHLIESSLICH DEPENDENCY SUI EINSCHLIESSLICH DER ABHÄNGIGKEIT MOVESTDLIB GEBÄUDE, hallo Erfolgreich gebaut. Sie können das Paket jetzt veröffentlichen.

Dadurch wird sichergestellt, dass Ihr lokaler Build der Laufzeit der Kette entspricht, wodurch Fehler bei der Quellüberprüfung vermieden werden

2
Kommentare
.

Weißt du die Antwort?

Bitte melde dich an und teile sie.