Ngôn ngữ lập trình Move ban đầu được sử dụng để xây dựng chuỗi khối Diem. Nó được tạo ra bởi Hiệp hội Diệm, một tập đoàn công nghệ được hỗ trợ bởi Meta. Mặc dù blockchain cuối cùng đã bị loại bỏ nhưng Move vẫn được sử dụng cho đến ngày nay.
Ngôn ngữ lập trình Move là ngôn ngữ mã byte thực thi. Nó thực hiện các hợp đồng thông minh và giao dịch tùy chỉnh. Move nhằm mục đích khắc phục các vấn đề phát sinh từ các ngôn ngữ lập trình blockchain khác, như Solidity. Tuy nhiên, các mục tiêu cơ bản để đạt được sự khan hiếm kỹ thuật số và kiểm soát tài sản kỹ thuật số vẫn giữ nguyên. Đặc biệt, nó cũng nhằm mục đích ngăn chặn chi tiêu gấp đôi và cho phép chủ sở hữu tài sản kỹ thuật số duy trì thông tin quyền sở hữu.
Khi làm như vậy, Move tối đa hóa sự an toàn trong khi vẫn duy trì thiết kế hợp lý và chi phí gas thấp hơn đáng kể so với các chuỗi khối không được xây dựng trên Move.
Ngôn ngữ lập trình Move hoạt động như thế nào?
Move sử dụng logic tuyến tính, nghĩa là tài nguyên chỉ có thể được sử dụng một lần và không bao giờ được sao chép hoặc loại bỏ hoàn toàn. Điều này cho phép các nhà phát triển mã hóa các loại tài nguyên tùy chỉnh không thể bị xóa hoặc sao chép và được xử lý tốt hơn các loại tài nguyên khác.
Hệ thống kiểu tĩnh của Move là nơi các biến phải được xác định là một kiểu (số/từ). Nó bảo vệ các tài nguyên được ưu tiên. Tuy nhiên, chúng có thể được sử dụng như các phần tử thông thường và được lưu trữ trong cấu trúc dữ liệu hoặc được cung cấp dưới dạng giá trị trong phép tính. Tài nguyên cũng minh bạch trong các mô-đun và được ẩn khỏi các nguồn bên ngoài.
Hơn nữa, các mô-đun trong Move rất linh hoạt và an toàn vì mối quan hệ giữa các mô-đun, tài nguyên và thủ tục giống như mối quan hệ giữa các lớp, đối tượng và phương thức trong lập trình hướng đối tượng.
Move cũng có thể xác minh tất cả các đặc điểm an toàn trên chuỗi và hỗ trợ các công cụ xác minh tĩnh ngoài chuỗi. Điều này làm giảm đáng kể sự phức tạp xung quanh việc xác minh trên chuỗi. Thiết kế của nó dựa trên ba quyết định cốt lõi:
—> Việc thiếu công văn động sẽ tránh việc xây dựng biểu đồ cuộc gọi và cho phép xác định tĩnh trang web cuộc gọi. Điều này cho phép Move xác định tác động của lệnh gọi thủ tục dễ dàng hơn và không có thêm sự phức tạp.
—> Nhờ tính mô-đun của nó, các mô-đun có thể được tách biệt để xác minh chức năng và chúng giúp trừu tượng hóa dữ liệu cũng như bản địa hóa các hoạt động quan trọng trên tài nguyên. Sự an toàn được đảm bảo bằng cách đóng gói mô-đun cùng với hệ thống loại của ngôn ngữ, nghĩa là mã bên ngoài mô-đun không thể vi phạm các loại của nó. Ngoài ra, bằng cách kiểm tra các mô-đun bị cô lập, nó sẽ cung cấp xác minh chức năng kỹ lưỡng cho các bất biến quan trọng của mô-đun.
—> Cuối cùng, khả năng thay đổi hạn chế của nó cho phép sử dụng các kiểu tham chiếu tương tự như C++. Các tham chiếu rất quan trọng để thay đổi từng giá trị Di chuyển và thông thường các giá trị tạm thời được tạo và hủy trong tập lệnh phiên âm. Tương tự như Rust, trình xác minh mã byte của Move "mượn kiểm tra" để xác nhận ít nhất một tham chiếu có thể thay đổi.
—> Cuối cùng, Move từ chối các chương trình không tuân theo loại an toàn, an toàn bộ nhớ và an toàn tài nguyên. Thay vào đó, có thể sử dụng ngôn ngữ lập trình cấp cao với trình biên dịch, chịu trách nhiệm kiểm tra các thuộc tính. Giải pháp thay thế là một tổ hợp chưa được định kiểu ở mức độ thấp với các kiểm tra an toàn.