/** code Hien thi Favicon */ /** Ket thuc code Hien thi Favicon */
Ngôn ngữ lập trình Move là gì? - HiddenGem Team

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

Knowledge

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

Knowledge

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

Knowledge

Khái niệm cơ bản

Trước khi tìm hiểu ngôn ngữ lập trình Move là gì thì anh em có thể đọc sơ qua phần khái niệm cơ bản này đến nắm một số thuật ngữ chính và bài viết này sẽ mang màu sắc Tech khá nhiều.

Ngôn ngữ lập trình: “Một tập hợp các lệnh, hướng dẫn và các cú pháp khác được sử dụng để tạo một chương trình phần mềm .” Move là ngôn ngữ lập trình cho phép cả chức năng cơ bản của crypto cũng như xây dựng các ứng dụng.

Blockchain: “Một cơ sở dữ liệu kỹ thuật số chứa thông tin (ví dụ như hồ sơ của các giao dịch tài chính) có thể được sử dụng và chia sẻ đồng thời trong một mạng lưới phân quyền lớn, có thể truy cập công khai.” Blockchains cung cấp năng lượng cho cryptocurrencies, tạo ra các sổ cái bất biến của các giao dịch diễn ra. Phải đạt được sự đồng thuận trước khi các giao dịch được ghi lại trên on-chain.

Blockchain Trilemma: Khó khăn trong việc đạt được tính bảo mật (khả năng chống lại các cuộc tấn công), khả năng mở rộng (khả năng phát triển) và phi tập trung (phân tán / phân quyền theo vùng và người dùng) cho các mạng blockchain. Cho đến nay, các blockchain đã phải vật lộn để đạt được cả ba mục tiêu này. Nhiều blockchain hàng đầu hiện nay, chẳng hạn như Ethereum có được sự bảo mật và phi tập trung. Tuy nhiên, điều này gây ra tốc độ chậm và phí giao dịch cao, ảnh hưởng tiêu cực đến khả năng mở rộng mạng lưới.

Linear Logic: Một hệ thống logic toán học được tạo ra bởi Jean-Yves Girad vào năm 1987, nhấn mạnh các công thức là Resources, thay vì Truths hoàn chỉnh hoặc cần Proof hoàn chỉnh. Thay đổi quan trọng là resources chỉ có thể được sử dụng một lần, thay vì được coi là đúng vĩnh viễn. (nghĩa là “Nếu bạn cho tôi A một lần, tôi sẽ cho bạn B một lần”, thay vì “A có thể đổi lấy B.”) Điều này làm cho linear logic trở nên hữu ích trong khoa học máy tính, nơi giới hạn một công thức cho một tài nguyên thay vì xử lý nó như một chân lý phổ quát cho phép các hệ thống linh hoạt hơn.

Resource: Là đơn vị cơ sở của hệ thống linear logic. Trong Move, “một resource không bao giờ có thể được sao chép hoặc loại bỏ hoàn toàn, chỉ được di chuyển giữa các vị trí lưu trữ chương trình.” Nhu cầu về tokens, ledgers và các yếu tố blockchain khác là vĩnh viễn cũng là lý do tại sao linear logic, đặc biệt là resources, được sử dụng để xây dựng ngôn ngữ Move.

Move là gì?

Move là ngôn ngữ lập trình được thiết kế cho Diem Blockchain. Cả Move và Diem đều được tạo ra bởi Diem Association, một tập đoàn công nghệ do Meta hậu thuẫn. Gần đây, dự án Diem, bao gồm cả ngôn ngữ Move đã được bán cho Silvergate.

Định dạng thực thi của Move là “Bytecode cấp cao hơn so với Assembly nhưng cấp thấp hơn ngôn ngữ Source. Bytecode được check on-chain về độ an toàn của resource, loại và bộ nhớ bởi bytecode verifier và sau đó được thực thi trực tiếp bởi bytecode interpreter.” Cơ chế này được thiết kế để tối đa hóa độ an toàn mà không cần thêm chi phí biên dịch cho các giao dịch, giảm thiểu gas fees so với Ethereum.

Đây là một ví dụ về việc Move đang cố gắng giải quyết vấn đề nan giải thông qua thiết kế của mình.

Resources: Điều gì làm cho Move linh động

Yếu tố chính tạo sự khác biệt giữa Move với các ngôn ngữ lập trình khác là việc sử dụng resources của nó, được rút ra từ ý tưởng toán học của linear logic. Trong linear logic, các công thức được coi là resources cơ bản chỉ có thể được sử dụng một lần. Theo đó, trong Move, “Resources không bao giờ có thể được sao chép hoặc loại bỏ hoàn toàn, chỉ được di chuyển giữa các vị trí lưu trữ chương trình.” Move cho phép các nhà phát triển mã hóa các loại resources tùy chỉnh được coi là “first-class” và không thể sao chép hoặc xóa.

Điều này được kích hoạt bởi hệ thống loại tĩnh (static type) của Move. Có nghĩa là các biến trong ngôn ngữ lập trình phải được định nghĩa là một kiểu nhất định (tức là một số hoặc một từ). Trong Move, hệ thống này bảo vệ bản chất first-class của resources. Tuy nhiên, tài nguyên vẫn có thể được sử dụng tương tự như bất kỳ phần tử nào khác, ít được bảo vệ hơn. Chúng có thể được lưu trữ trong cấu trúc dữ liệu hoặc được truyền dưới dạng đối số cho các thủ tục (được cung cấp dưới dạng các giá trị được sử dụng để tính toán).

Tất cả điều này có nghĩa là các resources trong Move được hưởng mức độ cao về cả tính bảo mật và tính minh bạch. Chúng được bảo vệ trong code, nhưng cũng có thể được sử dụng tự do cho tất cả các loại hoạt động. Sự kết hợp này là hoàn hảo cho lập trình blockchain, vì nó giải quyết cả khía cạnh bảo mật và khả năng mở rộng của bộ ba bất khả thi.

Tham vọng của Move

Move Whitepaper đưa ra một danh sách rõ ràng về các động lực cho ngôn ngữ đã thông báo cho thiết kế của nó. Và cũng lưu ý những thách thức của việc tạo ra các hệ thống public blockchain, không chỉ ảnh hưởng đến Move, mà còn ảnh hưởng đến tất cả các ngôn ngữ lập trình blockchain.

Với sự lưu ý Move phải là một “hệ thống mở”, nơi bất kỳ ai cũng có thể xem trạng thái của blockchain và gửi các giao dịch. Điều này hoàn toàn khác với phần mềm truyền thống để quản lý tài sản, như dịch vụ ngân hàng kỹ thuật số, vì chúng là những hệ thống kín. Chỉ có thể truy cập với các quyền đặc biệt (trong đó có nhiều cấp) và tính minh bạch rất hạn chế đối với những người dùng khác.

Nhưng trong một blockchain, “tất cả những người tham gia đều bình đẳng với nhau”. Điều này dẫn đến một số thách thức. Một vấn đề chính đang ngăn chặn việc gửi các giao dịch không hợp lệ, chẳng hạn như một người dùng cố gắng chuyển tài sản của người khác. Ngoài ra, các blockchains phải nắm bắt được hai khía cạnh của tiền tệ truyền thống khó thực thi trong phần mềm.

  • Đầu tiên là sự khan hiếm: Việc sao chép tài sản phải bị cấm và việc tạo tài sản mới phải được đặc quyền. (Việc thực hiện đặc quyền này trong một hệ thống mở, theo chủ nghĩa bình đẳng là đặc biệt khó khăn và hạn chế rất nhiều sự phân quyền của hệ thống như vậy.)
  • Thứ hai: Là quyền truy cập – khả năng kiểm soát và bảo vệ tài sản của người dùng là điều cực kỳ quan trọng. Việc sử dụng các tài nguyên first-class, được bảo vệ trong Move phần lớn là một nỗ lực để giải quyết các vấn đề về truy cập và khan hiếm này.

Ba vấn đề chính với các ngôn ngữ blockchain hiện có, đặc biệt là Bitcoin Script và Ethereum Virtual Machine (ngôn ngữ lập trình chính cho Bitcoin và Ethereum).

  1. Mã hóa nội dung gián tiếp

Vì lập trình được thực thi theo phương pháp toán học, nhiều phần tử khác nhau được biểu diễn dưới dạng số nguyên. Điều này bao gồm các tài sản blockchain như tiền điện tử ví dụ như trường hợp của Bitcoin và Ethereum. Điều này khiến việc viết các chương trình dựa trên tài sản crypto trở nên “khó xử lý và dễ xảy ra lỗi”.

  1. Sự khan hiếm không thể mở rộng

Ngôn ngữ của Bitcoin và Ethereum làm rất tốt việc bảo vệ sự khan hiếm của loại 2 loại crypto này. Tuy nhiên, các ngôn ngữ không được xây dựng tốt để tạo ra các nội dung mới với chất lượng khan hiếm. Đây là vấn đề cụ thể đối với EVM, cho phép tạo ERC-20 token dựa trên Ethereum blockchain. Trong những trường hợp này, các nhà phát triển phải tự thiết kế sự khan hiếm mà không có sự hỗ trợ từ ngôn ngữ lập trình.

  1. Kiểm soát truy cập không linh hoạt

Giống như sự khan hiếm, Bitcoin và Ethereum giữ chặt quyền truy cập vào các loại crypto, để quyền sở hữu và chuyển nhượng không thể bị giả mạo. Tuy nhiên, điều này không dễ dàng mở rộng sang các yếu tố khác, cũng như không thể tùy chỉnh mức độ hoặc phương tiện truy cập. Giống như sự khan hiếm, Move thực hiện cho các tính năng này có thể mở rộng và tùy chỉnh hơn để làm cho ngôn ngữ trở nên linh hoạt và có thể mở rộng hơn.