Sui.

Bài viết

Chia sẻ kiến thức của bạn.

Tiền thưởng+10

Peera Admin.
Mar 05, 2025
Hỏi đáp Chuyên Gia

Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động

Các nhà phát triển làm việc với Sui Move thường gặp phải các vấn đề liên quan đến “Tìm thấy nhiều lỗi xác minh nguồn” khi cố gắng xuất bản hoặc nâng cấp các mô-đun. Những lỗi này xảy ra do sự không phù hợp giữa các phụ thuộc cục bộ và các đối tác trên chuỗi của chúng, dẫn đến các ấn phẩm không thành công và các thách thức triển khai. Dưới đây là một ví dụ tổng hợp về các lỗi mà các nhà phát triển phải đối mặt:

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

Vấn đề này thường phát sinh do:

  1. Các phiên bản không phù hợp giữa môi trường phát triển địa phương (ví dụ: Sui CLI) và tr���ng thái trên chuỗi.
  2. Sự khác biệt trong cấu hình gói trên các mạng (ví dụ: Mainnet so với Testnet).
  3. Thiếu hoặc lỗi thời các phụ thuộc trong môi trường trên chuỗi.

Các câu hỏi chính

  • Làm thế nào chúng ta có thể tự động hóa việc phát hiện và giải quyết các sự không phù hợp phụ thuộc này trong quá trình xuất bản?
  • Những công cụ hoặc tập lệnh nào có thể được phát triển để đảm bảo rằng các phụ thuộc cục bộ luôn phù hợp với các đối tác trên chuỗi của chúng?
  • Có cách nào để hợp lý hóa quy trình này bằng cách tích hợp kiểm tra phụ thuộc vào các đường ống CI/CD hiện có hoặc tăng cường Sui SDK không?

Nhiệm vụ của bạn là đề xuất một giải pháp giải quyết những thách thức này, đảm bảo triển khai mượt mà và đáng tin cậy hơn cho các nhà phát triển Sui Move. Đảm bảo đăng giải pháp của bạn bên dưới.

  • Sui
  • SDKs and Developer Tools
4
1
Chia sẻ
Bình luận
.

Câu trả lời

1
0xduckmove.
Mar 7 2025, 09:09

Hãy để tôi giải thích giải pháp và cách giải quyết**"Lỗi xác minh nhiều nguồn**” mà bạn gặp phải trong Sui Move khi xuất bản hoặc nâng cấp các mô-đun. Khi bạn phát triển các mô-đun Sui Move cục bộ, bạn chỉ định các phụ thuộc trong tệp Move.toml của mình, như sau:

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

Trường rev cho biết phiên bản cụ thể (một nhánh, thẻ hoặc hash commit) của khung Sui mà bạn đang sử dụng.

Nếu phiên bản này không khớp với những gì được triển khai trên blockchain cho mạng mục tiêu của bạn, bạn sẽ gặp lỗi xác minh trong quá trình xuất bản hoặc nâng cấp. Ví dụ: blockchain có thể đang sử dụng phiên bản cũ Sui::vec_sethơn mã cục bộ của bạn hoặc một mô-đun tương tự có Sui::zklogin_verified_idthể không được xuất bản trên mạng bạn đang nhắm mục tiêu.

Giải pháp của tôi là tập lệnh Bash cập nhật tệp Move.toml của bạn với bản sửa đổi chính xác của khung Sui dựa trên mạng mục tiêu của bạn và sau đó xác minh thiết lập bằng cách xây dựng gói của bạn. Lưu nó như update-deps.shtrong thư mục dự án của bạn (nơi Move.toml được đặt).

#!/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 "$@"

Bạn có thể chạy Run chmod +x update-deps.shvà thực thi nó với mạng mục tiêu của mình. như ./update-deps.sh testnet

Vì vậy, đây là phần ra trong thiết bị đầu cuối của bạn:

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
Câu trả lời hay nhất
Bình luận
.

Bạn có biết câu trả lời không?

Hãy đăng nhập và chia sẻ nó.

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

260Bài viết369Câu trả lời
Sui.X.Peera.

Kiếm phần của bạn từ 1000 Sui

Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.

Chiến dịch phần thưởngTháng Năm
    Chúng tôi sử dụng cookie để đảm bảo bạn có trải nghiệm tốt nhất trên trang web của chúng tôi.
    Thêm thông tin