1. Ngôn ngữ lập trình là gì?
Ngôn ngữ lập trình là tập hợp nhiều câu lệnh để hướng dẫn máy tính thực hiện chức năng nào đó. Hiểu đơn giản hơn thì ngôn ngữ lập trình chỉ là một công cụ giúp chúng ta ra lệnh cho máy tính làm việc theo ý muốn.
Hiện tại có rất nhiều ngôn ngữ lập trình được sử dụng và dưới đây là bảng xếp hạng về độ phổ biến của các loại ngôn ngữ lập trình hiện có:
Trong blockchain cũng vậy, để giao tiếp với các blockchain thì sẽ cần các loại ngôn ngữ lập trình sử dụng để viết các Smart Contract và giao tiếp trên mạng lưới. Hiện nay, ta có thể được trong Blockchain có 2 loại ngôn ngữ lập trình Smart Contract phổ biến nhất có thể thấy đó là Solidity được sử dụng nhiều trên hệ sinh thái Ethereum và Rust được sử dụng trên Solana. Tuy nhiên, cả 2 loại ngôn ngữ lập trình này đều có sự giới hạn về khả năng tối ưu đối với các loại hình dự án đặc biệt liên quan đến NFT/Gaming, nhằm đem đến sự tối ưu vượt bậc cũng như đáp ứng đầy đủ khả năng cho những nhà phát triển trong không gian NFT/Gaming thì Sui đã nghiên cứu và cho ra mắt Move Language.
2. Move Language là gì?
Move language là một ngôn ngữ lập trình với mục đích hướng đến việc tạo ra các Smartcontract an toàn. Ban đầu move được phát triển tại Facebook và cung cấp cho Libra blockchain, tuy nhiên dự án này không đạt được kỳ vọng trong quá khứ nên dự án đã chấm dứt vào đầu năm 2022.
Không dừng lại ở việc bị tạm ngưng dự án thì Mysten Labs cùng đội ngũ của mình tiếp tục phát triển Move Language và tạo ra phiên bản mới là Sui Move với mục đích hướng đến việc phát triển cho hệ sinh thái Sui Blockchain.
Sui Move được thiết kế để trở thành một ngôn ngữ bất khả tri nền tảng để cho phép các thư viện, công cụ và cộng đồng nhà phát triển chung trên các blockchains đa dạng với dữ liệu và mô hình thực thi rất khác nhau (có thể hiểu là sẽ cho phép các nhà phát triển tự do định nghĩa các kiểu dữ liệu phục vụ cho dự án của mình). Tham vọng của Sui Move là trở thành 'JavaScript của web3' về sự phổ biến.
Hiện nay, các dự án sử dụng ngôn ngữ lập trình Move bao gồm:
- SUI
- Aptos
- starcoin
- 0L blockchain
- Pontem
- Diem
- Celo
Xem thêm tại đây
3. Điểm khác biệt của Move Language là gì?
Trong blockchain thì mỗi ngôn ngữ lập trình luôn cần đáp ứng 2 điều kiện:
- Scarcity: đối với blockchain là việc tránh double-spending attacks và giới hạn tạo ra thêm tài sản mới.
- Access Control: Chủ sở hữu tài sản nắm thông tin và quyền đối với tài sản số của mình. Ví crypto: ai nắm giữ private key thì đó là chủ sở hữu.
Để đáp ứng 2 điều kiện trên thì Move áp đặt 2 đặc tính này bằng cách xây dựng hệ thống kiểu dữ liệu cho tất cả các tài nguyên trong hệ thống. Cùng với đó là các tài nguyên được tự động đi kèm với Access Control. Ngoài ra thì giúp tăng hiệu năng của mạng lưới thì Sui sử dụng Horizontal scaling (mở rộng theo chiều ngang) điều này sẽ giúp tăng thêm validator và giúp mạng lưới tăng hiệu năng.
3.1. Điểm khác biệt so với các ngôn ngữ lập trình blockchain khác
- Move không có kiểu dữ liệu mặc định dành cho các tài sản số.
- Access control policies được tích hợp vào trong ngôn ngữ lập trình. Khi một smart contract được viết bằng Move thì rất khó để bên ngoài mở rộng thêm quyền truy cập từ đó tăng thêm tính an toàn.
3.2. So sánh với Solana
Smart Contracts (the programs) không thể tự sở hữu bất kỳ state (dữ liệu) nào mà phải thông qua accounts (program có thể chứa nhiều accounts và có thể đọc dữ liệu từ account nhưng không thể viết). Mỗi account sẽ có một địa chỉ (duy nhất) và có thể lưu bất kỳ dạng dữ liệu nào. Một Smart Contract có thể tương tác cùng lúc với nhiều Accounts (giống như nhiều khách hàng có thể ký lên một hợp đồng bảo hiểm chứ không phải mỗi khách ký vào một bản khác nhau như Move, Solidity)
- Solana có TPS cao tuy nhiên bị giới hạn về TPS.
- Vì việc một Smart Contract có thể tương tác cùng lúc nhiều Accounts nên có thể bị tạo nhiều bots và hack.
4. Thuật toán đồng thuận trên SUI sử dụng là gì?
Quá trình validator tạo một block ở phần lớn các hệ thống blockchain:
Về cơ bản thì các Tnx sau khi được tạo sẽ đưa vào các mempool sau đó các validator/miner sẽ tiến hành sắp xếp và xác thực sau đó ghi lên sổ cái.
Tuy nhiên điều này xảy ra nhược điểm lớn trong các Mempool đó là:
- Xảy ra tình trạng MEV - Miner Extractable Value
- Hiệu năng thấp do validators thực hiện tuần tự từng transaction trong mempool
Có thể hiểu Mempool là một phòng chờ ảo cho các giao dịch chưa được đưa vào block. Các giao dịch chờ cho đến khi các Miner Node sắp xếp chúng vào block tiếp theo (hay còn gọi là hoạt động mining). Khi một giao dịch được xử lý, nó sẽ bị xóa khỏi Mempool, các Node trên mạng chia sẻ dữ liệu Mempool với nhau và khi Mempool đã đầy, các Node sẽ ưu tiên các giao dịch dựa trên phí giao dịch, các giao dịch có phí cao hơn sẽ được xử lý trước tiên. Đây là lý do nhiều khi ta phải tăng gas fee (vd speed up trên Metamask) để transaction được xử lý nhanh hơn.
Tầm quan trọng và hạn chế của kiến trúc Mempool:
Trong kiến trúc của Bitcoin và các blockchain tương tự, mọi giao dịch đều phải đi qua Mempool trước khi được thêm vào các block mới trên blockchain. Trong thời gian lưu lượng truy cập cao và tắc nghẽn, Mempool thu thập và lưu trữ các giao dịch cho đến khi các Miner Node có thể thêm chúng vào các block mới.
Vì vậy nên các miner sẽ lợi dụng điều đò thông qua việc các Miner Node không cần xử lý giao dịch theo thời gian người dùng đưa lệnh on-chain mà họ có thể ưu tiên những giao dịch trả mức phí cao hơn hoặc các lệnh có lợi cho mình (MEV - Miner Extractable Value). Hai tác hại phổ biến của MEV là:
- Bot giao dịch ăn mức chênh lệch giá của những bên thứ ba.
- Exchange front-running bot, các bot này có thể giám sát những giao dịch lớn đang chờ được xử lý trên mempool và tận dụng chúng để kiếm lời.
(vậy nên làm sàn giao dịch thường giàu vì: thu phí từ người dùng + đầu tư + dùng tiền của người dùng đi gửi tiết kiệm + tạo bot ăn chênh lệch giá giữa sàn của mình và hệ thống mạng blockchain).
Đối với vấn đề về Mempool thì Sui sử dụng cơ chế đồng thuận Narwhal and Bullshark/Tusk giúp loại bỏ vấn đề MEW liên quan đến Mempool, từ đó tăng sự công bằng trong hệ thống mạng lưới Sui Blockchain.
Ngoài ra có một số vấn đề khác liên qua đến nút thắt cổ chai của nhiều blockchains: cần đạt sự đồng thuận trên danh sách giao dịch có thứ tự (hay Total Ordering. Tuy nhiên thực tế nhiều Tnx thao tác lên các nguồn khác nhau, nhưng lại bị block bởi nhau.
Để giải quyết vấn đề này thì Sui validator thực thi transactions bằng thuật toán đồng thuận Byzantine Consistent Broadcast không dựa vào thứ tự của các transactions (hay Causal Ordering).
SUI tận dụng ngôn ngữ Move để đạt được Parallel agreement, về cơ bản thì Sui sẽ chia các giao dịch thành Object Ownership với 2 kiểu ownership chính trong SUI với cơ chế xử lý giao dịch khác nhau đó là:
- Owned object (đối tượng được sở hữu): Sở hữu một loại tài sản cụ thể và chỉ có thể được thay đổi bởi chủ sở hữu đó.
- Shared object (đối tượng dùng chung): không có chủ sở hữu cụ thể và có thể được đưa vào các giao dịch mà không có sự cho phép của các bên khác nhau được tham gia.
Thứ nhất là đối tượng sở hữu (owned object): thì được xem là những giao dịch đơn giản. Chẳng hạn như chuyển tiền, đúc NFT, chuyển NFT, di chuyển token… Sui sẽ tối ưu hoá các trường hợp sử dụng đó. Sui thiết kế hệ thống cho phép bỏ qua sự đồng thuận cho các giao dịch đơn giản này. Loại bỏ khái niệm thời gian đóng khối. Điều này đạt được thông qua xử lý đa làn. Giao dịch đi sau không phải chờ sự hoàn thành của giao dịch trước đó. Tuy nhiên, điều này cũng có nghĩa là người gửi chỉ có thể gửi một giao dịch tại một thời điểm. Từ đó khiến các giao dịch hoàn tất ngay tức thì với độ trễ cực kỳ thấp.
Thứ hai là đối tượng dùng chung (shared object): thì được xem là các giao dịch phức tạp hơn. Các giao dịch phức tạp hơn ảnh hưởng đến các đối tượng được chia sẻ hoặc sở hữu bởi nhiều địa chỉ, chẳng hạn như quản lý tài sản và các trường hợp sử dụng DeFi. Những giao dịch này thì phải cần có sự đồng thuận. Chúng cần đi qua mempool dựa trên Narwhal và Bullshark và đồng thuận Byzantine Fault Tolerant (BFT). Lúc này các giao dịch mất nhiều thời gian hơn để được xử lý (khoảng 2-3 giây).
Bằng cách này thì Sui thực hiện một bước đi triệt để, loại bỏ hoàn toàn sự đồng thuận cho nhiều giao dịch. Việc chuyển token đơn giản của chủ sở hữu đến một địa chỉ khác mà không có bất kỳ giao dịch nào khác phụ thuộc vào chúng và được xác nhận gần như ngay lập tức. Người gửi cần truyền thông tin giao dịch, thu thập phiếu bầu của validator để nhận được chứng chỉ hợp lệ. Cách tiếp cận này làm cho Sui trở thành blockchain Layer 1 dành cho các trường hợp sử dụng cụ thể mà trong đó Dapp tạo ra số lượng lớn các giao dịch đơn giản, được xác thực với độ trễ thấp và ít quan tâm đến phân quyền.
5. Kết luận
Move language là ngôn ngữ lập trình smart contract trên Sui Blockchain, được cải tiến với tên gọi mới là Sui Move. Sui Move được thiết kế để trở thành một ngôn ngữ bất khả tri nền tảng để cho phép các thư viện, công cụ và cộng đồng nhà phát triển chung trên các blockchains đa dạng với dữ liệu và mô hình thực thi khác nhau (có thể hiểu là sẽ cho phép các nhà phát triển tự do định nghĩa các kiểu dữ liệu phục vụ cho dự án của mình) cùng với tham vọng của Sui Move là trở thành 'JavaScript của web3'.
Sui Move chia các giao dịch theo hướng đối tượng là các Đối tượng sở hữu (Owner object) và Đối tượng dùng chung (Share object) giúp cho các giao dịch đơn giản của các Owner Object được thực hiện dễ dàng và nhanh chóng mà không cần đến sự đồng thuận của toàn bộ mạng lưới.
Ngoài ra Sui Blockchain phát triển theo chiều ngang giúp tăng sự phát triển bền vững về lâu dài cũng như tổng thông lượng chung của toàn hệ thống mà vẫn giữ được sự ổn định của mạng lưới cũng như duy trì được chi phí gas thấp.Với hướng phát triển này sẽ giúp cho Sui Blockchain thân thiện hơn về mặt phát triển cũng như tăng khả năng trải nghiệm của người dùng.
Hiện tại, dự án vẫn đang trong giai đoạn phát triển và cần có nhiều thời gian hơn để đạt được sự hoàn thiện nhưng Sui Blockchain đang đem lại những sự cải tiến mới trong không gian Blockchain điều này sẽ rất hứa hẹn cho sự phát triển tốt trong tương lai sắp đến.
Đọc thêm


English

