Move.

Bài viết

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

Jeremy.
Nov 09, 2023
Hỏi đáp Chuyên Gia

Sự cố khi xuất bản Move Module vào Move VM với lỗi “MODULE_ADDRESS_DOES_NOT_MATCH_SENDER”

Xin chào mọi người, tôi đang cố gắng tích hợp Move VM vào mạng tùy chỉnh của mình và gặp sự cố trong khi cố gắng xuất bản mô-đun Move lên Move VM. Tôi đã đọc rằng Move VM là “không có nền tảng” và tôi đánh giá cao hướng dẫn về các bước ban đầu liên quan và liệu quy trình này có liên quan đến nỗ lực đáng kể hay không. Ngoài ra, tôi đang gặp phải một vấn đề cụ thể. Tôi tiếp tục nhận được lỗi sau liên quan đến phụ thuộc Mo stdlibve khi cố gắng xuất bản mô-đun Move:

VMError {
  major_status: MODULE_ADDRESS_DOES_NOT_MATCH_SENDER,
  sub_status: None,
  message: None,
  exec_state: None,
  location: Undefined,
  indices: [(AddressIdentifier, 0)],
  offsets: []
}
Below is a snippet of my code:


fn build_and_publish_package(package_path: &str) {
  // Code for compiling the package and obtaining compiled units
  let instance = MoveVM::new(vec![]).unwrap();
  let myresolver = MyResolver::new();
  let mut new_session = instance.new_session(&myresolver);
  let sender_address = AccountAddress::ONE;
  let _ = new_session
    .publish_module_bundle(modules.clone(), sender_address, &mut UnmeteredGasMeter {})
    .unwrap();
}

stdlibTrong tệp Move.toml của tôi, địa chỉ 0x1được gán. Điều quan trọng là tôi không sử dụng stdlibbất cứ nơi nào trong mã của mình. Mặc dù vậy, tôi liên tục gặp phải lỗi được đề cập ở trên. Ai đó có thể vui lòng giúp tôi hiểu điều gì có thể xảy ra sai hoặc cung cấp thông tin chi tiết về cách khắc phục sự cố này một cách hiệu quả không?

  • Move
  • Move Script
0
2
Chia sẻ
Bình luận
.

Câu trả lời

2
Jackson.
Nov 9 2023, 12:17

Vấn đề bạn đang gặp phải là do biên dịch gói Move trong chế độ kiểm tra di chuyển, bao gồm mô-đun stdlib Move với một địa chỉ khác được gán cho nó. Khi biên dịch gói, hãy đảm bảo rằng bạn không bao gồm mô-đun stdlib Move hoặc bất kỳ mô-đun nào khác có địa chỉ xung đột. Biên dịch gói Move mà không có chế độ kiểm tra để giải quyết vấn đề không khớp địa chỉ. Điều này sẽ giải quyết lỗi bạn gặp phải trong quá trình xuất bản mô-đun.

Nếu bạn có bất kỳ câu hỏi nào, bạn có thể hỏi họ tại đây;

0
Bình luận
.
Steven.
Nov 9 2023, 12:26

Thông báo lỗi bạn đang gặp phải,

VMError {major_status: MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, sub_status: Không có, thông báo: Không có, exec_state: Không, vị trí: Không xác định, chỉ mục: [(AddressiIdentifier, 0)], bù: []}

cho biết địa chỉ của mô-đun bạn đang cố gắng xuất bản không khớp với địa chỉ của người gửi. Trong Move VM, địa chỉ của người gửi được xác định bởi tài khoản khởi tạo giao dịch. Nếu địa chỉ của mô-đun bạn đang cố gắng xuất bản không khớp với địa chỉ của người gửi này, bạn sẽ gặp lỗi này. Trong mã của bạn, bạn đang đặt địa chỉ của người gửi AccountAddress::ONEthành, tương ứng với địa chỉ0x1. 0x1Tuy nhiên, tệp Move.toml của bạn gán địa chỉ stdlib cho. Mặc dù bạn không sử dụng mã stdlibtrong mã của mình, Move VM vẫn kiểm tra địa chỉ này khi xuất bản một mô-đun. Để giải quyết vấn đề này, bạn có thể thử thay đổi địa chỉ người gửi thành một giá trị khác không xung đột với địa chỉ stdlib. Ví dụ:

let sender_address = AccountAddress::new([2u8; AccountAddress::LENGTH]); 

Thao tác này sẽ gán địa chỉ của người gửi cho0x2, địa chỉ này sẽ không xung đột với địa chỉ stdlib. Đối với quá trình tích hợp Move VM vào mạng tùy chỉnh của bạn, nó có thể tương đối đơn giản hoặc nó có thể đòi hỏi một lượng nỗ lực đáng kể, thường được gọi là “nâng”. Điều này phần lớn phụ thuộc vào độ phức tạp của mạng và các chi tiết cụ thể của các ứng dụng của bạn.

0
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ó.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148Bài viết231Câ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 Bảy