Phân tích tính an toàn của ngôn ngữ Move: một hình thức mới của hợp đồng thông minh

robot
Đang tạo bản tóm tắt

Phân tích an toàn ngôn ngữ Move: Người cách mạng của ngôn ngữ hợp đồng thông minh

Lời giới thiệu

Ngôn ngữ Move là một ngôn ngữ hợp đồng thông minh có thể chạy trong môi trường blockchain thực hiện MoveVM. Thiết kế của nó cân nhắc nhiều vấn đề an ninh liên quan đến blockchain và hợp đồng thông minh, và đã tham khảo một số nguyên tắc thiết kế an toàn của ngôn ngữ Rust. Là một ngôn ngữ hợp đồng thông minh thế hệ mới với đặc điểm chính là an toàn, tính an toàn của Move như thế nào? Nó có thể tránh được các mối đe dọa an ninh phổ biến của EVM, WASM và các máy ảo hợp đồng khác ở cấp độ ngôn ngữ hoặc các cơ chế liên quan không? Liệu Move có tồn tại các vấn đề an ninh đặc thù riêng không?

Bài viết này sẽ thảo luận về vấn đề an toàn của ngôn ngữ Move từ ba khía cạnh: đặc điểm ngôn ngữ, cơ chế hoạt động và công cụ xác minh.

Phân tích an toàn Move: Người thay đổi cuộc chơi ngôn ngữ hợp đồng thông minh

1. Các tính năng an toàn của ngôn ngữ Move

Khác với nhiều ngôn ngữ lập trình hiện có, ngôn ngữ Move được thiết kế để vừa hỗ trợ tương tác an toàn với mã không tin cậy, vừa hỗ trợ xác minh tĩnh. Move loại bỏ logic phi tuyến tính dựa trên tính linh hoạt, không hỗ trợ gọi động và gọi lại đệ quy bên ngoài, mà sử dụng các khái niệm như kiểu tổng quát, lưu trữ toàn cầu, tài nguyên, v.v. để thực hiện các mô hình lập trình thay thế. Ví dụ, Move loại bỏ các tính năng gọi động và gọi lại đệ quy có thể dẫn đến lỗ hổng tái nhập.

Các đặc điểm bảo mật chính của Move bao gồm:

  1. Mô-đun: Mỗi mô-đun Move được cấu thành từ một loạt các kiểu cấu trúc và định nghĩa quy trình. Mô-đun có thể nhập các định nghĩa kiểu và gọi các quy trình được khai báo trong mô-đun khác.

  2. Cấu trúc: có thể được định nghĩa là loại tài nguyên, biểu thị cho những gì có thể được lưu trữ trong bộ nhớ khóa/giá trị toàn cầu bền vững.

  3. Quá trình: định nghĩa khởi tạo, quy trình an toàn và quy trình không an toàn.

  4. Lưu trữ toàn cầu: cho phép chương trình Move lưu trữ dữ liệu bền vững, dữ liệu này chỉ có thể được đọc và ghi bằng cách lập trình bởi mô-đun sở hữu nó.

  5. Kiểm tra bất biến: hỗ trợ kiểm tra tĩnh các bất biến, đảm bảo tính toàn vẹn của tài nguyên trong hệ thống.

  6. Trình xác thực bytecode: Thi hành hệ thống kiểu ở cấp độ bytecode, ngăn chặn các hoạt động bất hợp pháp của các mô-đun máy khách độc hại.

Thông qua hai cơ chế kiểm tra bất biến và trình xác thực bytecode, Move đã thực hiện đảm bảo an toàn mã hai lớp trong quá trình biên dịch.

Phân tích an toàn Move: Thay đổi cuộc chơi trong ngôn ngữ hợp đồng thông minh

2. Cơ chế hoạt động của Move

Chương trình Move chạy trong máy ảo, không thể truy cập bộ nhớ hệ thống trong quá trình thực thi. Điều này cho phép Move chạy an toàn trong môi trường không tin cậy, không bị phá hoại hoặc lạm dụng.

Chương trình Move thực hiện trên ngăn xếp, bộ nhớ toàn cục được chia thành hai phần: bộ nhớ (, ngăn xếp ) và biến toàn cục (. Bộ nhớ là bộ lưu trữ bậc một, các đơn vị của nó không thể lưu trữ con trỏ trỏ đến các đơn vị bộ nhớ. Biến toàn cục được sử dụng để lưu trữ con trỏ trỏ đến các đơn vị bộ nhớ, nhưng phương thức chỉ mục khác với bộ nhớ.

Các chỉ thị bytecode của Move được thực thi trong trình thông dịch dựa trên ngăn xếp. Máy ảo dựa trên ngăn xếp dễ dàng triển khai và kiểm soát, yêu cầu phần cứng thấp hơn, phù hợp với các tình huống blockchain. So với trình thông dịch dựa trên thanh ghi, trình thông dịch dựa trên ngăn xếp dễ kiểm soát và phát hiện hơn trong các thao tác sao chép và di chuyển giữa các biến.

Trạng thái khi chương trình Move chạy là bốn tupla ⟨C, M, G, S⟩, bao gồm ngăn xếp gọi )C(, bộ nhớ )M(, biến toàn cục )G( và toán hạng )S(. Ngăn xếp cũng duy trì bảng hàm để phân giải các lệnh chứa thân hàm.

MoveVM tách biệt việc lưu trữ dữ liệu và logic quy trình gọi ngăn xếp ), đây là sự khác biệt lớn nhất so với EVM. Trong MoveVM, tài nguyên dưới địa chỉ tài khoản trạng thái người dùng ( được lưu trữ độc lập, việc gọi chương trình phải tuân thủ các quy tắc bắt buộc liên quan đến quyền hạn và tài nguyên. Thiết kế này hy sinh một phần tính linh hoạt, nhưng trong việc cải thiện tính an toàn và hiệu suất thực thi ) có thể đạt được sự tăng cường lớn trong khía cạnh thực hiện đồng thời (.

![Phân tích an toàn Move: Thay đổi cuộc chơi của ngôn ngữ hợp đồng thông minh])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(

3. Di chuyển Prover

Move Prover là một công cụ xác minh hình thức dựa trên suy diễn. Nó sử dụng ngôn ngữ hình thức để mô tả hành vi của chương trình và sử dụng các thuật toán suy diễn để xác minh xem chương trình có đáp ứng được mong đợi hay không, giúp các nhà phát triển đảm bảo tính chính xác của hợp đồng thông minh, giảm thiểu rủi ro giao dịch.

Move Prover sử dụng thuật toán xác minh suy diễn để xác minh chương trình có phù hợp với mong đợi hay không. Điều này có nghĩa là nó có thể suy ra hành vi của chương trình dựa trên thông tin đã biết, đảm bảo sự phù hợp với hành vi mong đợi. Điều này giúp đảm bảo độ chính xác của chương trình, giảm bớt khối lượng công việc kiểm tra thủ công.

Quy trình làm việc của Move Prover như sau:

  1. Nhận tệp nguồn Move làm đầu vào, tệp này cần đặt quy định đầu vào cho chương trình.
  2. Move Parser từ mã nguồn trích xuất quy chuẩn.
  3. Trình biên dịch Move biên dịch tệp nguồn thành mã byte, cùng với hệ thống tiêu chuẩn chuyển đổi thành mô hình đối tượng xác thực.
  4. Mô hình này được dịch sang ngôn ngữ trung gian Boogie.
  5. Mã Boogie được truyền vào hệ thống xác minh Boogie, tạo ra điều kiện xác minh.
  6. Điều kiện xác minh được truyền vào bộ giải Z3 ) bộ giải SMT do Microsoft phát triển (.
  7. Z3 kiểm tra xem công thức SMT có không thỏa mãn hay không. Nếu có, điều đó có nghĩa là quy chuẩn đã được thành lập; nếu không, tạo ra mô hình thỏa mãn điều kiện.
  8. Khôi phục báo cáo chẩn đoán về lỗi cấp mã nguồn.

Move sử dụng Ngôn ngữ Đặc tả Move để mô tả hệ thống quy định. Nó là một tập con của ngôn ngữ Move, hỗ trợ mô tả tĩnh hành vi đúng đắn của chương trình mà không ảnh hưởng đến sản xuất. Có thể được viết độc lập thành tài liệu quy định chuyên biệt, tách biệt mã nghiệp vụ và mã xác minh hình thức.

Move Prover là một công cụ hữu ích, giúp các nhà phát triển đảm bảo tính chính xác của hợp đồng thông minh. Nó sử dụng ngôn ngữ hình thức để mô tả hành vi của chương trình và sử dụng thuật toán suy diễn để xác minh chương trình có đúng như mong đợi hay không, giúp giảm rủi ro giao dịch, cho phép các nhà phát triển tự tin hơn khi triển khai hợp đồng thông minh vào môi trường sản xuất.

![Phân tích an toàn Move: Thay đổi cuộc chơi của ngôn ngữ hợp đồng thông minh])https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(

4. Tóm tắt

Ngôn ngữ Move có thiết kế an toàn rất xuất sắc, đã đưa ra những cân nhắc toàn diện ở các cấp độ đặc tính ngôn ngữ, thực thi máy ảo và công cụ an ninh. Các đặc tính của ngôn ngữ đã hy sinh một phần tính linh hoạt, kiểm tra kiểu bắt buộc và logic tuyến tính, thuận tiện cho việc kiểm tra biên dịch và tự động hóa xác minh hình thức cùng với khả năng xác minh an toàn. Thiết kế MoveVM tách biệt trạng thái và logic, phù hợp hơn với nhu cầu quản lý an toàn tài sản trên blockchain.

Về mặt ngôn ngữ, Move có thể hiệu quả trong việc tránh các lỗ hổng thường gặp của EVM như tấn công tái nhập, tràn số, tiêm Call/DeleGateCall. Tuy nhiên, các vấn đề như xác thực, logic mã và tràn số nguyên lớn vẫn cần được các nhà phát triển chú ý. Move Prover có thể không hoạt động khi bỏ qua các ý chính.

Mặc dù ngôn ngữ Move đã xem xét nhiều vấn đề an toàn cho lập trình viên, nhưng không có ngôn ngữ và chương trình nào hoàn toàn an toàn. Đề nghị các nhà phát triển hợp đồng thông minh Move sử dụng dịch vụ kiểm toán của công ty an ninh bên thứ ba, và giao phần mã viết và xác minh specification cho công ty an ninh bên thứ ba thực hiện.

MOVE2.53%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 4
  • Chia sẻ
Bình luận
0/400
DegenRecoveryGroupvip
· 08-06 15:36
Có chút gì đó, mùi rust quá nặng.
Xem bản gốcTrả lời0
AlwaysAnonvip
· 08-06 01:22
Bảo mật tuyệt vời nhưng hệ sinh thái quá yếu
Xem bản gốcTrả lời0
GasGrillMastervip
· 08-06 01:15
move đã bắt đầu! chỉ chờ bùng nổ
Xem bản gốcTrả lời0
HashRatePhilosophervip
· 08-06 01:06
move bull vẫn thơm rust nhỉ
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)