Tìm hiểu về Ngôn ngữ lập trình Move trong blockchain Diem

Tìm hiểu về Ngôn ngữ lập trình Move trong blockchain Diem

Gần đây bạn có nghe nói về ngôn ngữ lập trình Move không? Bạn có muốn tìm hiểu thêm về ngôn ngữ lập trình Move không? Nếu có, bạn đã đến đúng nơi. Hãy tiếp tục đọc bài viết này để đi sâu vào chi tiết.

Sự ra đời của internet và băng thông rộng di động đã có thể kết nối hàng tỷ người trên khắp thế giới. Mọi người có thể tiếp cận kiến ​​thức, giao tiếp miễn phí và nhiều dịch vụ khác với sự tiện lợi và tiết kiệm chi phí hơn.

Do đó, kết nối đã trao quyền cho nhiều người hơn trong việc tiếp cận hệ sinh thái tài chính. Tuy nhiên, phạm vi tiếp cận các dịch vụ tài chính không nên chỉ giới hạn ở một nhóm người nhất định.

Hiệp hội Diem (Diem Association), một sáng kiến ​​mới nhằm giới thiệu sự toàn diện về tài chính cho tất cả mọi người trên thế giới này, đã thu hút sự chú ý của nhiều nhà lãnh đạo tư tưởng và các chuyên gia trên toàn thế giới.

Vậy, vai trò của ngôn ngữ lập trình Move trong các ứng dụng mới nổi của blockchain như Diem là gì? Cuộc thảo luận sau đây cung cấp tổng quan chi tiết về tất cả các nguyên tắc cơ bản liên quan đến Move, cùng với một số hướng dẫn hữu ích.

Ngôn ngữ lập trình Move là gì?

Điều đầu tiên xuất hiện trong các cuộc thảo luận liên quan đến ngôn ngữ lập trình Move cho blockchain Diem là định nghĩa của nó. Về cơ bản ngôn ngữ lập trình Move là một ngôn ngữ bytecode có thể thực thi được, phục vụ chức năng thực hiện các hợp đồng thông minh và các giao dịch tùy chỉnh. Nguồn gốc của Move phần lớn bắt nguồn từ các vấn đề nổi tiếng trong các ngôn ngữ lập trình blockchain hiện có như Solidity.

Move đóng vai trò là một giải pháp thay thế an toàn và linh hoạt để giải quyết các vấn đề về thực thi hai thuộc tính riêng biệt trong quản lý tài sản kỹ thuật số, chẳng hạn như sự khan hiếm và kiểm soát truy cập.

  • Sự khan hiếm đề cập đến việc ngăn chặn chi tiêu kép cùng với việc áp đặt các hạn chế đối với việc tạo ra tài sản.
  • Kiểm soát nội dung tập trung vào việc duy trì thông tin quyền sở hữu cùng với các đặc quyền liên quan về quyền sở hữu tài sản kỹ thuật số.

Khi bạn muốn học ngôn ngữ lập trình Move, bạn phải bắt đầu với hai thuộc tính này. Move cung cấp sự đảm bảo của các thuộc tính này thông qua việc đưa vào một hệ thống kiểu cho các tài nguyên khác nhau trong hệ thống. Ngoài ra, Move cũng đảm bảo tự động bao bọc các tài nguyên với các đặc quyền kiểm soát truy cập.

Move khác với các ngôn ngữ hiện có như thế nào?

Một trong những yếu tố quan trọng trong hướng dẫn ngôn ngữ lập trình Move sẽ đề cập đến sự khác biệt của nó với các ngôn ngữ blockchain hiện có. Điều gì khiến Move trở thành lựa chọn tốt hơn các lựa chọn thay thế hiện có cho các ứng dụng blockchain trong tương lai?

Dưới đây là một số cách đáng chú ý mà Move nổi bật so với phần còn lại của các ngôn ngữ lập trình blockchain.

  • Move không có hệ thống loại mặc định được thực thi cho các tài sản kỹ thuật số như Ether hoặc Bitcoin.
  • Ngôn ngữ lập trình Move cũng bao gồm các chính sách kiểm soát truy cập được nhúng trong ngữ nghĩa ngôn ngữ.
  • Bạn có thể tìm thấy một bản trình bày tìm kiếm nội dung duy nhất bằng toàn bộ ngôn ngữ. Bất kỳ loại tài sản tùy chỉnh nào như mã thông báo ERC20 đều phải được xem xét về các đặc tính an toàn do lập trình viên phát triển mã thông báo phác thảo.
  • Không phải lo lắng về các giới hạn của Move trong việc xác định các loại dữ liệu tùy chỉnh của các thủ tục.
  Atomic Swap là gì? Tìm hiểu 'Hoán đổi nguyên tử' trong blockchain

Mục đích của ngôn ngữ Move

Nhiệm vụ của Diem tập trung vào việc đảm bảo một cơ sở hạ tầng tài chính toàn cầu và tiền tệ tiếp cận với hàng tỷ người trên toàn thế giới. Ngôn ngữ lập trình Move cho blockchain Diem chủ yếu nhấn mạnh vào việc cung cấp một nền tảng an toàn và có thể lập trình được.

Do đó, điều quan trọng là Move phải thể hiện tiền tệ Diem và các quy tắc quản trị một cách hiệu quả theo cách có thể kiểm chứng, chính xác và dễ hiểu.

Khi bạn tiến bộ, Move có thể phát triển các khả năng bao gồm nhiều tài sản khác và logic kinh doanh liên quan cho cơ sở hạ tầng tài chính. Do đó, ngôn ngữ Move phải tập trung vào các mục tiêu thiết kế quan trọng có thể hỗ trợ sự phát triển của nó trong tương lai.

Mục đích của ngôn ngữ Move
Mục đích của ngôn ngữ Move

Dưới đây là các mục tiêu thiết kế quan trọng được xem xét cho ngôn ngữ lập trình Move

1. Tài nguyên hạng nhất

Điểm khác biệt quan trọng nhất đối với Move là cơ sở vật chất của các nguồn lực hạng nhất. Hệ thống chuỗi khối cho phép người dùng viết các chương trình có khả năng tương tác trực tiếp với tài sản kỹ thuật số. Nội dung kỹ thuật số có những đặc điểm riêng biệt giúp phân biệt chúng với các giá trị lập trình truyền thống.

Bạn có thể khám phá các khả năng khai báo nội dung tùy chỉnh dưới dạng một loại tài nguyên cụ thể, do đó cho phép bảo mật tốt hơn. Ngoài ra, các tài nguyên hạng nhất (First-class Resources) cũng đi kèm với lợi thế là được kiểm soát truy cập.

Hơn nữa, các tài nguyên cũng có tính minh bạch đặc biệt trong các mô-đun trong khi hoàn toàn không rõ ràng đối với các lệnh gọi từ các nguồn bên ngoài. Một trong những điểm nổi bật đáng chú ý trong hướng dẫn ngôn ngữ lập trình di chuyển đề cập đến khả năng của ngôn ngữ trong việc xác định các loại tài nguyên tùy chỉnh với ngữ nghĩa. Các tài nguyên hạng nhất không chỉ có thể giúp các lập trình viên trong việc triển khai các tài sản kỹ thuật số an toàn mà còn trong việc phát triển logic nghiệp vụ phù hợp.

2. Tính linh hoạt

Rõ ràng là mỗi giao dịch của Diem phụ thuộc vào một kịch bản giao dịch. Các kịch bản giao dịch thường hữu ích cho việc thực hiện các cuộc gọi cùng với các thủ tục gọi trong một mô-đun cụ thể. Nó thực sự là một thủ tục chính duy nhất với mã tùy ý và các giao dịch có thể tùy chỉnh. Ngoài ra, một tập lệnh giao dịch cụ thể cũng có thể có khả năng gọi nhiều thủ tục.

Các mô-đun trong Move cho phép sự linh hoạt với phạm vi để thành phần mã an toàn. Bạn có thể coi mối quan hệ giữa các mô-đun, thủ tục và tài nguyên giống nhau giữa các lớp, phương thức và đối tượng trong lập trình hướng đối tượng.

Tuy nhiên, mô-đun Move có khả năng khai báo nhiều loại tài nguyên mà không có bất kỳ dấu hiệu nào của giá trị ‘self’ hoặc ‘this’ trong các thủ tục Move.

3. Khả năng xác minh

Khi bạn học ngôn ngữ lập trình Move, bạn có nhiều khả năng bắt gặp tính năng xác minh. Move có khả năng đảm bảo xác minh trên dây chuyền cho tất cả các đặc điểm an toàn. Tuy nhiên, điều này không hữu ích trong trường hợp blockchain, được sử dụng thường xuyên.

Do đó, Move cũng đã bao gồm hỗ trợ cho các công cụ xác minh tĩnh ngoài chuỗi (off-chain). Do đó, nó có thể làm giảm sự phức tạp liên quan đến xác minh trên chuỗi (on-chain) một cách dễ dàng. Với giả định này, ngôn ngữ lập trình Move sẽ tập trung vào ba quyết định thiết kế. Ba thiết kế cụ thể là:

  • Thiếu điều phối động

Thiếu điều phối động (Lack of Dynamic Dispatch) để tránh xây dựng biểu đồ cuộc gọi phức tạp cùng với việc cho phép xác định tĩnh của địa chỉ cuộc gọi. Không cần điều phối động, Move cho phép xác định dễ dàng hơn các tác động của một lệnh gọi thủ tục mà không cần đi sâu vào các phức tạp.

  • Môđun

Mô-đun có thể cho phép cô lập các mô-đun để xác minh chức năng. Mô-đun Move sẽ giúp trừu tượng hóa dữ liệu cùng với bản địa hóa các hoạt động quan trọng trên tài nguyên. Việc đóng gói bởi mô-đun cùng với các biện pháp bảo vệ của hệ thống loại Move đảm bảo sự an toàn của các thuộc tính cho các loại mô-đun.

  Ở Texas, những người khai thác tiền điện tử chuyển sang sử dụng năng lượng mặt trời

Do đó, mã bên ngoài mô-đun không thể vi phạm các loại mô-đun. Về lâu dài, thiết kế mô-đun cũng có thể cho phép xác minh chức năng toàn diện cho các bất biến mô-đun quan trọng bằng cách xem xét các mô-đun bị cô lập.

  • Khả năng đột biến hạn chế

Khả năng thay đổi hạn chế (Limited Mutability) là lý tưởng cho các trường hợp tập trung vào việc sử dụng các kiểu tham chiếu tương tự như C++, cho phép tối đa một tham chiếu có thể thay đổi tại một trường hợp cụ thể. Một cuốn sách ngôn ngữ Move sẽ giúp bạn hiểu rằng tham chiếu là cần thiết cho mọi đột biến thành giá trị Move.

Tham chiếu thường là các giá trị tạm thời mà bạn nên tạo và hủy trong một tập lệnh giao dịch cụ thể. Trình xác minh bytecode của Move sử dụng lược đồ ‘borrow checking – kiểm tra mượn’ giống như Rust để đảm bảo ít nhất một tham chiếu có thể thay đổi.

4. An toàn

Mục tiêu thiết kế cuối cùng được xem xét cho một hướng dẫn ngôn ngữ lập trình Move là sự an toàn. Move nên từ chối các chương trình không tuân theo các thuộc tính quan trọng như an toàn kiểu, an toàn bộ nhớ và an toàn tài nguyên. Cách tiếp cận đầu tiên có thể, trong trường hợp này, sẽ đề cập đến việc 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.

Cách tiếp cận thứ hai có thể xảy ra cho trường hợp này là sử dụng một cụm không định dạng cấp thấp, sau đó là kiểm tra an toàn. Cuốn sách ngôn ngữ Move đi đường vòng từ hai cách tiếp cận và dựa trên định dạng có thể thực thi của nó. Định dạng thực thi thực sự là một mã bytec đã nhập ở cấp cao hơn so với mã bytecode và cấp thấp hơn so với ngôn ngữ nguồn.

Ngôn ngữ Move tập trung vào việc kiểm tra trên chuỗi của mã bytecode để đảm bảo an toàn cho bộ nhớ, tài nguyên và kiểu (type). Sau quá trình kiểm tra, mã bytecode sẽ được thực thi trực tiếp thông qua trình thông dịch bytecode.

Do đó, Move có thể kích hoạt các đặc quyền an toàn thường liên quan đến một ngôn ngữ nguồn cụ thể. Tuy nhiên, Move không áp đặt sự phức tạp của việc thêm trình biên dịch nguồn vào một cơ sở tính toán đáng tin cậy cụ thể. Ngoài ra, ngôn ngữ lập trình Move cũng không tốn chi phí biên dịch thành một đường dẫn quan trọng để thực hiện các giao dịch.

Các thành phần trong ngôn ngữ Move

Mối quan tâm quan trọng tiếp theo liên quan đến phần giới thiệu về Move đề cập đến các thành phần của ngôn ngữ Move. Ấn tượng chi tiết về các thành phần giúp xác định cơ sở của các tính năng mà người dùng có thể tìm thấy trong Move.

  1. Kiểu (type)

Các kiểu trong Move đề cập đến các kiểu dữ liệu nguyên thủy được hỗ trợ như Boolean, số nguyên không dấu (64-bit), mảng byte kích thước cố định và kiểu dữ liệu địa chỉ (256-bit).

  1. Cấu trúc (Struct)

Struct cũng là một trong những bổ sung quan trọng mà bạn sẽ phải tập trung vào để học ngôn ngữ lập trình Move. Hai loại Cấu trúc cụ thể là kind và unrestricted (không hạn chế). Kind đề cập đến các cấu trúc tài nguyên, trong khi unrestricted chỉ ra các cấu trúc chung.

  1. Thủ tục (Procedures)

Điều quan trọng cần lưu ý là các thủ tục trong Move chỉ là các phương thức có thể được phân loại thành công khai (public) hoặc nội bộ (internal). Nói chung, sự phụ thuộc của mô-đun xoay vòng giúp ngăn chặn bất kỳ cuộc tấn công truy cập lại nào (Re-entrance attack).

  1. Trình xác minh Bytecode

Bytecode Verifier cũng là một mục nhập quan trọng khác trong số các thành phần của ngôn ngữ Move. Nó tập trung vào việc kiểm tra các đặc điểm an toàn trước khi công bố các mô-đun. Tất cả các chương trình Move phải thông qua trình xác minh trước khi triển khai trên mạng. Ngoài ra, bạn có thể tìm thấy các giai đoạn khác nhau trong quá trình xác minh. Các giai đoạn bao gồm,

  • Kiểm tra số dư ngăn xếp (stack) để đảm bảo rằng kích thước của ngăn xếp không bị sửa đổi sau tất cả các hoạt động
  • Kiểu (type) kiểm tra
  • Kiểm soát sự phát triển đồ thị
  • Kiểm tra tài liệu tham khảo
  • Liên kết các tham chiếu với trạng thái toàn cục để kiểm tra sự phù hợp giữa các khai báo và việc sử dụng chúng
  • Kiểm tra tài nguyên
  1. Trình thông dịch Bytecode

Sau quá trình xác minh, tất cả các chương trình phải thông qua một thông dịch viên. Luồng chương trình thông qua trình thông dịch tương tự như luồng của JVM và CLR. Các lập trình viên thông thường có thể tìm thấy những điểm tương đồng đáng tin cậy trong quá trình này.

  TRON Grand Hackathon 2022 mùa 2 công bố Người chiến thắng dự án

Ví dụ: việc thực hiện các chương trình được coi là ngang bằng với việc sử dụng Ethereum bằng cách tận dụng tham số ‘gas’. Kết quả là, nó có thể đảm bảo thực thi vòng lặp vô hạn.

  1. Máy ảo Move

Máy ảo Move không thể hiện bất kỳ sự khác biệt nào khi so sánh với một blockchain khác. Các khối trong blockchain bao gồm nhiều giao dịch, với việc thực hiện mỗi giao dịch dẫn đến hiệu ứng giao dịch. Hiệu ứng giao dịch có thể giúp tạo ra một trạng thái toàn cầu được cập nhật.

Do đó, nó có thể đảm bảo sự khác biệt tốt hơn giữa các hiệu ứng và chuyển đổi trạng thái.

Lệnh trong ngôn ngữ Move

Khi bạn muốn học ngôn ngữ lập trình Move, bạn cũng phải hiểu các hướng dẫn hoặc lệnh cơ bản (command) và chức năng của chúng. Bạn có thể tìm thấy hướng dẫn cục bộ, hướng dẫn tham khảo, hướng dẫn đặc biệt, hướng dẫn liên tục và hướng dẫn tích hợp trong một mô-đun.

Dưới đây là một số ví dụ về các lệnh trong sách Ngôn ngữ Move, cùng với các chức năng của chúng.

  • MoveLoc<x>: Lệnh này giúp đẩy giá trị được lưu trữ bằng ‘x’ lên ngăn xếp với ‘x’ hiện không khả dụng.
  • ReadRef: Lệnh này giúp bật ‘r’ và đẩy ‘r’ trên ngăn xếp.
  • Call<p>: Lệnh này giúp xuất hiện các đối số ‘r’, sau đó tải chúng vào các công thức của p là x* và sau đó chuyển giao thức sang ‘p’.
  • PopUnrestricted: Lệnh hoặc hướng dẫn này giúp hiển thị một giá trị không phải tài nguyên.
  • Not: Đây là một lệnh ngăn xếp trong ngôn ngữ lập trình Move, giúp tạo Boolean ‘b’ cùng với việc đẩy ‘-b’.

Kết luận về ngôn ngữ lập trình Move

Quan sát những điều cơ bản trong hướng dẫn ngôn ngữ lập trình Move cho thấy rằng có nhiều điều để khám phá trong ngôn ngữ này. Nó là một ngôn ngữ lập trình chính thức được thiết kế riêng cho lập trình dựa trên blockchain. Quan trọng nhất, Move thực sự là một ngôn ngữ bytecode phù hợp hoàn hảo với mô hình có thể lập trình của các ứng dụng blockchain.

Hệ thống mô-đun trong ngôn ngữ Move cũng là một trong những tính năng đầy hứa hẹn cho việc triển khai các thư viện với khả năng kiểm soát truy cập và trừu tượng hóa dữ liệu tốt hơn. Ngoài ra, ngôn ngữ Move cũng cung cấp các lợi ích của các thành phần chức năng cao như bộ tuần tự hoặc bộ giải mã, trình thông dịch bytecode và trình xác minh bytecode.

Mặc dù ngôn ngữ lập trình Move đã chứng minh được giá trị của nó như một ngôn ngữ lập trình blockchain, nhưng nó vẫn cần được cải tiến. Một số cải tiến đáng chú ý có thể đề cập đến việc bổ sung các tính năng mới như đa hình tham số, sự kiện và bộ sưu tập.

Ngoài ra, chúng ta cũng có thể xem xét các khả năng hỗ trợ mở rộng cho các mô-đun Move của bên thứ ba. Bạn có thể bắt đầu tìm hiểu thêm về ngôn ngữ Move và sử dụng nó để phát triển các ứng dụng dựa trên blockchain độc đáo. Chuyên môn hóa các kỹ năng của bạn với tư cách là một nhà phát triển blockchain với sự thông thạo trong lập trình Move ngay bây giờ!

Theo: 101blockchains

Khuyến cáo: Thông tin trên bài viết này chỉ mang tính tham khảo, không có bất kỳ lời khuyên nào về mua bán, đầu tư. Bạn hãy tự nghiên cứu trước khi thực hiện bất kỳ hình thức đầu tư nào.

Nội dung đề xuất