Sự tự rèn luyện của nhà phát triển Web3 — ngôn ngữ hợp đồng thông minh
Giới thiệu cơ bản
Hợp đồng thông minh là một loại giao thức thực thi tự động chạy trên nền tảng blockchain, cho phép hai bên hợp đồng thực hiện giao dịch đáng tin cậy mà không cần trung gian hoặc bên thứ ba đáng tin cậy, các giao dịch này có thể theo dõi và không thể đảo ngược. Trong hợp đồng thông minh chứa mã chức năng, nó cũng có thể tương tác với các hợp đồng khác, khi các điều kiện đã được định nghĩa trước được đáp ứng, hợp đồng thông minh sẽ tự động thực thi các mã chức năng được chỉ định trong hợp đồng.
Khái niệm hợp đồng thông minh lần đầu tiên được nhà khoa học máy tính Nick Szabo đưa ra vào những năm 90 của thế kỷ trước, nhưng chỉ đến khi blockchain Ethereum xuất hiện, hợp đồng thông minh mới bắt đầu được áp dụng rộng rãi. Ethereum được ra mắt vào năm 2015, hỗ trợ việc triển khai và thực thi hợp đồng thông minh. Khác với Bitcoin chủ yếu được sử dụng cho các giao dịch tiền điện tử đơn giản, Ethereum có thể xây dựng các ứng dụng phi tập trung trên nền tảng Ethereum bằng ngôn ngữ lập trình Turing hoàn chỉnh của nó, do đó được mệnh danh là blockchain thế hệ thứ hai.
Ngôn ngữ hợp đồng thông minh là ngôn ngữ lập trình được sử dụng để viết hợp đồng thông minh, sau khi biên dịch thành mã byte sẽ được thực thi trên máy ảo của nền tảng hợp đồng thông minh blockchain, thực hiện mã logic đã định. Một ngôn ngữ hợp đồng thông minh cần có khả năng cho phép các nhà phát triển diễn đạt các quy tắc của hợp đồng một cách an toàn và hiệu quả, và thường cung cấp một loạt công cụ và sự trừu tượng để xử lý các giao dịch và trạng thái blockchain.
hợp đồng thông minh ngôn ngữ
Phần lớn các nhà phát triển hợp đồng thông minh đang phát triển trên Ethereum và các blockchain tương thích EVM, trong khi Solana là blockchain không tương thích EVM có số lượng nhà phát triển nhiều nhất, Move được xây dựng đặc biệt để phát triển hợp đồng thông minh blockchain một cách an toàn.
Mặc dù còn nhiều chuỗi công khai khác có ngôn ngữ hợp đồng thông minh chuyên dụng, chẳng hạn như TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo, nhưng quá phân mảnh.
Vì vậy, bài viết này sẽ phân loại và giới thiệu ngôn ngữ hợp đồng thông minh theo các hệ EVM, Solana và Move.
EVM系
EVM là lõi của Ethereum, chịu trách nhiệm thực thi hợp đồng thông minh và xử lý giao dịch. Giao thức Ethereum quy định một loại bytecode chạy trên EVM, và xây dựng ngôn ngữ trung gian Yul và Yul+ trên đó, trên ngôn ngữ trung gian lại xây dựng các ngôn ngữ cao cấp như Solidity/Vyper/Fe, ngôn ngữ cao cấp giúp người dùng ở phía trước giảm độ khó trong việc phát triển hợp đồng thông minh. Lợi ích của việc áp dụng đa cấp phân tầng là ngôn ngữ trung gian vừa phù hợp để dịch sang ngôn ngữ máy, vừa phù hợp cho tối ưu hóa toàn bộ chương trình, dễ dàng kiểm tra thủ công, thực hiện xác minh hình thức và các kiểm tra khác, nhưng càng nhiều tầng phân lớp thì chi phí đảm bảo tính có thể chứng minh và đáng tin cậy càng cao, mỗi tầng đều cần thực hiện xác minh tương ứng, tất nhiên ngôn ngữ ở tầng thấp hơn do đơn giản hơn nên chi phí xác minh cũng thấp hơn.
Trên Ethereum và các blockchain tương thích EVM, các nhà phát triển có thể sử dụng các ngôn ngữ lập trình bậc cao khác nhau, hiện tại ngôn ngữ phổ biến nhất và được duy trì tốt nhất là Solidity và Vyper, ngoài ra còn có thể chọn Yul, Yul+, Fe và Huff.
Solidity được đề xuất lần đầu bởi CTO Ethereum Gavin Wood vào năm 2014, sau đó được đội ngũ Ethereum do Christian Reitwiessner dẫn dắt tiếp quản phát triển. Solidity là một ngôn ngữ lập trình hướng đối tượng, chịu ảnh hưởng sâu sắc từ C++, Python và JavaScript, và được thiết kế đặc biệt cho EVM. Để tái sử dụng mã, hợp đồng thông minh được coi là đối tượng lớp, tận dụng tính kế thừa đa hình. Đặc biệt, Solidity quy định một tiêu chuẩn giao diện nhị phân ứng dụng (ABI) để tương tác với các hợp đồng của nó. Hiện tại, ABI của Solidity được coi là tiêu chuẩn thực tế cho EVM DSL.
Vyper được phát triển bởi đội ngũ của Vitalik Buterin, một trong những người sáng lập Ethereum, nhằm làm sự lựa chọn thay thế cho Solidity, ra mắt vào năm 2017. Vyper là một ngôn ngữ lập trình tương tự như Python, hướng đến hợp đồng và được thiết kế cho EVM. Vyper được tối ưu hóa cho tính bảo mật, khả năng đọc, khả năng kiểm toán và hiệu suất Gas. Vyper không sử dụng mô hình hướng đối tượng và không thể sử dụng lắp ghép nội tuyến.
Yul là một ngôn ngữ hợp ngữ có điều khiển luồng nâng cao và nhiều trừu tượng, là một phần của chuỗi công cụ Solidity. Hầu hết các chức năng trong Yul được công khai qua các khối hợp ngữ nội tuyến trong Solidity, cho phép tận dụng các chức năng mà Solidity không hỗ trợ, và tùy chỉnh lưu trữ, bộ nhớ và calldata. Yul+ là một phần mở rộng của Yul, có thể được coi là một bản nâng cấp thử nghiệm cho Yul.
Fe là một ngôn ngữ cấp cao tương tự như Rust, được phát hành vào tháng 1 năm 2021. Fe không sử dụng mô hình hướng đối tượng, mà thay vào đó tái sử dụng mã thông qua hệ thống dựa trên mô-đun, cho phép khai báo biến, kiểu và hàm trong mô-đun, có thể được nhập khẩu theo cách tương tự như Rust.
Huff là một ngôn ngữ lắp ráp, có khả năng kiểm soát ngăn xếp thủ công và trừu tượng hóa tối thiểu đối với bộ lệnh EVM. Thông qua lệnh 「#include」, bất kỳ tệp Huff nào được bao gồm đều có thể được phân tích trong quá trình biên dịch, từ đó thực hiện việc tái sử dụng mã.
Trên Ethereum, hợp đồng thông minh phát triển dựa trên Solidity chiếm đa số, khoảng 90%, gấp mười lần so với Vyper, trong khi Fee do khởi đầu muộn hơn, ít nhà phát triển sử dụng. Yul và Yul+ thường được sử dụng như các khối lắp ghép nội tuyến của Solidity, cho phép truy cập cấp thấp vào tập lệnh EVM, thường được dùng để tối ưu hóa Gas. Huff hoạt động ở cấp độ thấp hơn Yul/Yul+, cho phép thao tác thủ công trên ngăn xếp và gọi lệnh EVM, thường được sử dụng để tối ưu hóa giới hạn Gas.
hệ thống Solana
Solana nổi tiếng với cơ chế PoH (Proof of History) và độ trễ thấp, băng thông cao, là một trong những "kẻ giết Ethereum" nổi tiếng nhất. Solana cũng là một trong những chuỗi công khai có giá trị thị trường và phát triển hệ sinh thái nhanh nhất trong năm qua, đã thúc đẩy sự tăng trưởng đáng kể của cộng đồng nhà phát triển của nó.
Solana gọi hợp đồng thông minh là chương trình trên chuỗi (Program), chủ yếu được viết bằng ngôn ngữ Rust, nhưng khác với các chuỗi công khai khác sử dụng ngôn ngữ Rust, Solana không sử dụng WASM runtime, Solana có máy ảo riêng SVM và mã byte SBF.
SVM là runtime chạy hợp đồng thông minh và xử lý giao dịch trên mạng Solana, thành phần then chốt là Sealevel. Sealevel cho phép nhiều hợp đồng thông minh hoạt động đồng thời mà không ảnh hưởng đến hiệu suất của nhau, từ đó thực hiện xử lý song song trong runtime của Solana. Hợp đồng thông minh của Solana xác định trạng thái (tài khoản) nào sẽ được đọc hoặc ghi trong khi chạy, điều này cho phép các giao dịch không xung đột được thực thi đồng thời, đồng thời đảm bảo tính nhất quán của dữ liệu.
SBF dựa trên eBPF, trước đây là BPF (Berkeley Packet Filter, bộ lọc gói Berkeley), nguyên bản được sử dụng để lọc gói dữ liệu mạng một cách hiệu quả, eBPF cung cấp một tập lệnh phong phú hơn, cho phép can thiệp và chỉnh sửa hành vi của kernel hệ điều hành một cách động mà không cần thay đổi mã nguồn, có hiệu suất cao, an toàn và khả năng di động. SBF so với eBPF, sử dụng một trình xác thực tùy chỉnh, không chỉ xác minh chương trình cần phải đảm bảo chương trình dừng lại trong một số lượng nhất định các lệnh (còn gọi là vấn đề dừng nổi tiếng), mà còn kiểm tra các lệnh có đúng không và có vượt quá giới hạn không. Ngoài trình xác thực, nó còn giải quyết một số chi tiết của eBPF mà có chút vấn đề trong việc biên dịch hợp đồng thông minh.
LLVM (Low Level Virtual Machine) là kiến trúc biên dịch hiện đại và chuỗi công cụ, trình biên dịch có thể dịch Rust thành ngôn ngữ trung gian LLVM IR, sau đó LLVM IR sẽ được sử dụng bởi backend để dịch thành eBPF của nền tảng mục tiêu. Về lý thuyết, bất kỳ ngôn ngữ lập trình nào hỗ trợ biên dịch thành LLVM IR đều có thể viết hợp đồng thông minh Solana, nhưng thực tế Solana Labs đã thực hiện nhiều thay đổi đối với Rust và backend eBPF LLVM, trong đó một số thay đổi về cơ bản không có sẵn trên upstream (Rust và LLVM). Hiện tại, phát triển hợp đồng Solana chỉ hỗ trợ Rust và Solang.
Rust được phát triển bởi Mozilla, ra mắt vào năm 2011, có cú pháp tương tự như C++, là một ngôn ngữ lập trình tĩnh tổng quát được thiết kế cho hiệu suất và an toàn, đặc biệt là an toàn, không chỉ giới hạn trong các chương trình hợp đồng thông minh. So với Solidity, Rust là một ngôn ngữ lập trình cấp thấp, đa mô hình, có hiệu suất cao và an toàn bộ nhớ. Trình biên dịch chính thức của Rust là rustc, rustc thực hiện phân tích từ vựng, phân tích cú pháp và phân tích ngữ nghĩa cho mã nguồn Rust, cuối cùng biên dịch mã thành LLVM IR.
Solang được phát triển dưới sự dẫn dắt của Hyperlege Labs, ra mắt vào năm 2023, là trình biên dịch Solidity dựa trên kiến trúc LLVM cho Solana và Polkadot, hỗ trợ việc viết hợp đồng thông minh bằng Solidity, nhưng cú pháp thực tế đã được điều chỉnh một số để phù hợp với kiến trúc của Solana và Polkadot. Mục tiêu của Solang là đơn giản hóa quá trình chuyển giao của các nhà phát triển sang Solana hoặc Polkadot, và mở rộng phạm vi phát triển của Solidity.
Rust là ngôn ngữ chính được Solana hỗ trợ, có độ ổn định cao hơn; lợi thế chính của Solang là khả năng tương thích với ngôn ngữ Solidity.
Hệ Move
Move là một ngôn ngữ lập trình hợp đồng thông minh mới, được ra mắt vào năm 2019, ban đầu được phát triển cho dự án blockchain Diem của Meta. Move nhằm giải quyết các vấn đề về bảo mật trong tài sản và giao dịch, giúp tài sản và giao dịch được định nghĩa và kiểm soát một cách chặt chẽ, với các đặc điểm ngôn ngữ như:
Bảo vệ loại tài nguyên hạng nhất (Frist Class Resources): Loại tài nguyên hạng nhất trước tiên là một loại biến, sau đó quy định rằng biến của loại này: không thể bị sao chép; không thể bị hủy một cách ngầm; chỉ có thể "Move" trên các địa chỉ chương trình khác nhau;
Tính linh hoạt: Mã byte Move có thể được thực thi trực tiếp, cũng có thể gọi mã của các Module đã được phát hành khác, có thể gọi nhiều chương trình trong một giao dịch, có khả năng linh hoạt thực hiện chuyển tiền cho nhiều người trong một giao dịch.
An toàn, khả năng kiểm chứng: Hệ thống mã Move cung cấp sự bảo vệ an toàn đặc thù cho tài nguyên. Tài nguyên Move không thể sao chép, sử dụng lại hoặc tiêu hủy. Một loại tài nguyên chỉ có thể được tạo ra hoặc tiêu hủy bởi mô-đun định nghĩa loại của nó. Máy ảo Move sẽ xác minh thông qua mã byte tĩnh và từ chối thực thi các chương trình không qua xác minh mã byte, qua đó đảm bảo tính an toàn.
Sau khi dự án Diem bị giải thể, nhóm sáng lập của nó đã rời đi và thành lập Aptos và Sui, cũng đã chọn Move làm ngôn ngữ hợp đồng thông minh cốt lõi. Aptos kế thừa Diem Move (Core Move), trong khi Sui viết hợp đồng thông minh của mình thông qua phiên bản tùy chỉnh Sui Move.
Trong Move, mỗi hợp đồng thông minh là một mô-đun, được định nghĩa bởi các hàm và cấu trúc, trong đó cấu trúc được khởi tạo trong các hàm và có thể được truyền cho các mô-đun khác thông qua các cuộc gọi hàm. Sui Move so với Core Move, áp dụng một mô hình dữ liệu dựa trên đối tượng, trong Sui có ba loại đối tượng khác nhau, bao gồm đối tượng sở hữu, đối tượng chia sẻ và đối tượng không thể thay đổi. Chiến lược phân tán của Sui tương tự như Solana, giao dịch cũng cần chỉ định các đối tượng nào sẽ được thao tác, thiết kế này cho phép Sui xử lý giao dịch đồng thời một cách hiệu quả, đạt được khả năng xử lý song song mà không cần đến sắp xếp toàn cầu như trong blockchain truyền thống.
Bộ biên dịch, bộ xác minh và máy ảo của Move đều được thiết kế từ đầu. Trong đó, bộ xác minh là một trong những cơ chế an toàn cốt lõi của Move, được sử dụng để duy trì mô hình lập trình dựa trên tài nguyên của Move. Bộ xác minh của Move là một công cụ phân tích tĩnh, phân tích bytecode của Move và xác định xem có tuân thủ các quy tắc an toàn về kiểu, bộ nhớ và tài nguyên cần thiết hay không, tất cả các mô-đun được tải lên chuỗi đều cần phải qua bộ xác minh.
So với các ngôn ngữ như Solidity, Move là một ngôn ngữ thân thiện với việc xác minh hình thức, chẳng hạn như không hỗ trợ các đặc điểm như phân bổ động (dynamic dispatch), tất cả các đường dẫn hợp đồng đều có thể được xác định ngay trong thời gian biên dịch, mà không cần phải xác định các hàm cần thực thi tại thời điểm thực thi hợp đồng, từ đó có thể phân tích và xác minh một cách triệt để.
Move còn có một công cụ xác minh hình thức cho hợp đồng thông minh, được gọi là Move Prover. Các nhà phát triển cần viết các điều kiện xác minh cho hợp đồng thông minh (dưới dạng các câu khẳng định), Move Prover sẽ chuyển đổi các điều kiện xác minh này thành công thức SMT trong nền tảng, sau đó sử dụng bộ giải SMT để kiểm tra.
hợp đồng thông minh phát triển công cụ
Đối với những ai muốn bắt đầu với Web3 hoặc muốn học phát triển hợp đồng trên Ethereum và các blockchain tương thích EVM khác, Solidity là lựa chọn hàng đầu. Hơn nữa, nhờ sự phổ biến của Solidity, các công cụ phát triển cũng trở nên trưởng thành hơn, đại diện có:
Hardhat là một môi trường phát triển để biên dịch, triển khai, kiểm tra và gỡ lỗi ứng dụng Ethereum. Giúp các nhà phát triển quản lý và tự động hóa các nhiệm vụ lặp đi lặp lại vốn có trong quá trình xây dựng hợp đồng thông minh và DApps, và dễ dàng giới thiệu thêm các chức năng xung quanh quy trình công việc này;
OpenZeppelin cung cấp OpenZeppelin Contracts mã nguồn mở, được viết bằng Solidity, để xây dựng các hợp đồng thông minh an toàn. OpenZeppelin Contracts làm
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
13 thích
Phần thưởng
13
3
Chia sẻ
Bình luận
0/400
ApeWithNoFear
· 21giờ trước
hợp đồng thông minh搞不定 这可咋混!
Xem bản gốcTrả lời0
ImpermanentLossFan
· 21giờ trước
hợp đồng thông minh bullp cái lông...thực ra chỉ là một khối mã
Xem bản gốcTrả lời0
0xOverleveraged
· 21giờ trước
Không chơi tiền ảo chỉ giao dịch hợp đồng tương lai, đòn bẩy cao mới thú vị.
Khóa học bắt buộc cho lập trình viên Web3: Phân tích toàn diện ngôn ngữ hợp đồng thông minh
Sự tự rèn luyện của nhà phát triển Web3 — ngôn ngữ hợp đồng thông minh
Giới thiệu cơ bản
Hợp đồng thông minh là một loại giao thức thực thi tự động chạy trên nền tảng blockchain, cho phép hai bên hợp đồng thực hiện giao dịch đáng tin cậy mà không cần trung gian hoặc bên thứ ba đáng tin cậy, các giao dịch này có thể theo dõi và không thể đảo ngược. Trong hợp đồng thông minh chứa mã chức năng, nó cũng có thể tương tác với các hợp đồng khác, khi các điều kiện đã được định nghĩa trước được đáp ứng, hợp đồng thông minh sẽ tự động thực thi các mã chức năng được chỉ định trong hợp đồng.
Khái niệm hợp đồng thông minh lần đầu tiên được nhà khoa học máy tính Nick Szabo đưa ra vào những năm 90 của thế kỷ trước, nhưng chỉ đến khi blockchain Ethereum xuất hiện, hợp đồng thông minh mới bắt đầu được áp dụng rộng rãi. Ethereum được ra mắt vào năm 2015, hỗ trợ việc triển khai và thực thi hợp đồng thông minh. Khác với Bitcoin chủ yếu được sử dụng cho các giao dịch tiền điện tử đơn giản, Ethereum có thể xây dựng các ứng dụng phi tập trung trên nền tảng Ethereum bằng ngôn ngữ lập trình Turing hoàn chỉnh của nó, do đó được mệnh danh là blockchain thế hệ thứ hai.
Ngôn ngữ hợp đồng thông minh là ngôn ngữ lập trình được sử dụng để viết hợp đồng thông minh, sau khi biên dịch thành mã byte sẽ được thực thi trên máy ảo của nền tảng hợp đồng thông minh blockchain, thực hiện mã logic đã định. Một ngôn ngữ hợp đồng thông minh cần có khả năng cho phép các nhà phát triển diễn đạt các quy tắc của hợp đồng một cách an toàn và hiệu quả, và thường cung cấp một loạt công cụ và sự trừu tượng để xử lý các giao dịch và trạng thái blockchain.
hợp đồng thông minh ngôn ngữ
Phần lớn các nhà phát triển hợp đồng thông minh đang phát triển trên Ethereum và các blockchain tương thích EVM, trong khi Solana là blockchain không tương thích EVM có số lượng nhà phát triển nhiều nhất, Move được xây dựng đặc biệt để phát triển hợp đồng thông minh blockchain một cách an toàn.
Mặc dù còn nhiều chuỗi công khai khác có ngôn ngữ hợp đồng thông minh chuyên dụng, chẳng hạn như TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo, nhưng quá phân mảnh.
Vì vậy, bài viết này sẽ phân loại và giới thiệu ngôn ngữ hợp đồng thông minh theo các hệ EVM, Solana và Move.
EVM系
EVM là lõi của Ethereum, chịu trách nhiệm thực thi hợp đồng thông minh và xử lý giao dịch. Giao thức Ethereum quy định một loại bytecode chạy trên EVM, và xây dựng ngôn ngữ trung gian Yul và Yul+ trên đó, trên ngôn ngữ trung gian lại xây dựng các ngôn ngữ cao cấp như Solidity/Vyper/Fe, ngôn ngữ cao cấp giúp người dùng ở phía trước giảm độ khó trong việc phát triển hợp đồng thông minh. Lợi ích của việc áp dụng đa cấp phân tầng là ngôn ngữ trung gian vừa phù hợp để dịch sang ngôn ngữ máy, vừa phù hợp cho tối ưu hóa toàn bộ chương trình, dễ dàng kiểm tra thủ công, thực hiện xác minh hình thức và các kiểm tra khác, nhưng càng nhiều tầng phân lớp thì chi phí đảm bảo tính có thể chứng minh và đáng tin cậy càng cao, mỗi tầng đều cần thực hiện xác minh tương ứng, tất nhiên ngôn ngữ ở tầng thấp hơn do đơn giản hơn nên chi phí xác minh cũng thấp hơn.
Trên Ethereum và các blockchain tương thích EVM, các nhà phát triển có thể sử dụng các ngôn ngữ lập trình bậc cao khác nhau, hiện tại ngôn ngữ phổ biến nhất và được duy trì tốt nhất là Solidity và Vyper, ngoài ra còn có thể chọn Yul, Yul+, Fe và Huff.
Solidity được đề xuất lần đầu bởi CTO Ethereum Gavin Wood vào năm 2014, sau đó được đội ngũ Ethereum do Christian Reitwiessner dẫn dắt tiếp quản phát triển. Solidity là một ngôn ngữ lập trình hướng đối tượng, chịu ảnh hưởng sâu sắc từ C++, Python và JavaScript, và được thiết kế đặc biệt cho EVM. Để tái sử dụng mã, hợp đồng thông minh được coi là đối tượng lớp, tận dụng tính kế thừa đa hình. Đặc biệt, Solidity quy định một tiêu chuẩn giao diện nhị phân ứng dụng (ABI) để tương tác với các hợp đồng của nó. Hiện tại, ABI của Solidity được coi là tiêu chuẩn thực tế cho EVM DSL.
Vyper được phát triển bởi đội ngũ của Vitalik Buterin, một trong những người sáng lập Ethereum, nhằm làm sự lựa chọn thay thế cho Solidity, ra mắt vào năm 2017. Vyper là một ngôn ngữ lập trình tương tự như Python, hướng đến hợp đồng và được thiết kế cho EVM. Vyper được tối ưu hóa cho tính bảo mật, khả năng đọc, khả năng kiểm toán và hiệu suất Gas. Vyper không sử dụng mô hình hướng đối tượng và không thể sử dụng lắp ghép nội tuyến.
Yul là một ngôn ngữ hợp ngữ có điều khiển luồng nâng cao và nhiều trừu tượng, là một phần của chuỗi công cụ Solidity. Hầu hết các chức năng trong Yul được công khai qua các khối hợp ngữ nội tuyến trong Solidity, cho phép tận dụng các chức năng mà Solidity không hỗ trợ, và tùy chỉnh lưu trữ, bộ nhớ và calldata. Yul+ là một phần mở rộng của Yul, có thể được coi là một bản nâng cấp thử nghiệm cho Yul.
Fe là một ngôn ngữ cấp cao tương tự như Rust, được phát hành vào tháng 1 năm 2021. Fe không sử dụng mô hình hướng đối tượng, mà thay vào đó tái sử dụng mã thông qua hệ thống dựa trên mô-đun, cho phép khai báo biến, kiểu và hàm trong mô-đun, có thể được nhập khẩu theo cách tương tự như Rust.
Huff là một ngôn ngữ lắp ráp, có khả năng kiểm soát ngăn xếp thủ công và trừu tượng hóa tối thiểu đối với bộ lệnh EVM. Thông qua lệnh 「#include」, bất kỳ tệp Huff nào được bao gồm đều có thể được phân tích trong quá trình biên dịch, từ đó thực hiện việc tái sử dụng mã.
Trên Ethereum, hợp đồng thông minh phát triển dựa trên Solidity chiếm đa số, khoảng 90%, gấp mười lần so với Vyper, trong khi Fee do khởi đầu muộn hơn, ít nhà phát triển sử dụng. Yul và Yul+ thường được sử dụng như các khối lắp ghép nội tuyến của Solidity, cho phép truy cập cấp thấp vào tập lệnh EVM, thường được dùng để tối ưu hóa Gas. Huff hoạt động ở cấp độ thấp hơn Yul/Yul+, cho phép thao tác thủ công trên ngăn xếp và gọi lệnh EVM, thường được sử dụng để tối ưu hóa giới hạn Gas.
hệ thống Solana
Solana nổi tiếng với cơ chế PoH (Proof of History) và độ trễ thấp, băng thông cao, là một trong những "kẻ giết Ethereum" nổi tiếng nhất. Solana cũng là một trong những chuỗi công khai có giá trị thị trường và phát triển hệ sinh thái nhanh nhất trong năm qua, đã thúc đẩy sự tăng trưởng đáng kể của cộng đồng nhà phát triển của nó.
Solana gọi hợp đồng thông minh là chương trình trên chuỗi (Program), chủ yếu được viết bằng ngôn ngữ Rust, nhưng khác với các chuỗi công khai khác sử dụng ngôn ngữ Rust, Solana không sử dụng WASM runtime, Solana có máy ảo riêng SVM và mã byte SBF.
SVM là runtime chạy hợp đồng thông minh và xử lý giao dịch trên mạng Solana, thành phần then chốt là Sealevel. Sealevel cho phép nhiều hợp đồng thông minh hoạt động đồng thời mà không ảnh hưởng đến hiệu suất của nhau, từ đó thực hiện xử lý song song trong runtime của Solana. Hợp đồng thông minh của Solana xác định trạng thái (tài khoản) nào sẽ được đọc hoặc ghi trong khi chạy, điều này cho phép các giao dịch không xung đột được thực thi đồng thời, đồng thời đảm bảo tính nhất quán của dữ liệu.
SBF dựa trên eBPF, trước đây là BPF (Berkeley Packet Filter, bộ lọc gói Berkeley), nguyên bản được sử dụng để lọc gói dữ liệu mạng một cách hiệu quả, eBPF cung cấp một tập lệnh phong phú hơn, cho phép can thiệp và chỉnh sửa hành vi của kernel hệ điều hành một cách động mà không cần thay đổi mã nguồn, có hiệu suất cao, an toàn và khả năng di động. SBF so với eBPF, sử dụng một trình xác thực tùy chỉnh, không chỉ xác minh chương trình cần phải đảm bảo chương trình dừng lại trong một số lượng nhất định các lệnh (còn gọi là vấn đề dừng nổi tiếng), mà còn kiểm tra các lệnh có đúng không và có vượt quá giới hạn không. Ngoài trình xác thực, nó còn giải quyết một số chi tiết của eBPF mà có chút vấn đề trong việc biên dịch hợp đồng thông minh.
LLVM (Low Level Virtual Machine) là kiến trúc biên dịch hiện đại và chuỗi công cụ, trình biên dịch có thể dịch Rust thành ngôn ngữ trung gian LLVM IR, sau đó LLVM IR sẽ được sử dụng bởi backend để dịch thành eBPF của nền tảng mục tiêu. Về lý thuyết, bất kỳ ngôn ngữ lập trình nào hỗ trợ biên dịch thành LLVM IR đều có thể viết hợp đồng thông minh Solana, nhưng thực tế Solana Labs đã thực hiện nhiều thay đổi đối với Rust và backend eBPF LLVM, trong đó một số thay đổi về cơ bản không có sẵn trên upstream (Rust và LLVM). Hiện tại, phát triển hợp đồng Solana chỉ hỗ trợ Rust và Solang.
Rust được phát triển bởi Mozilla, ra mắt vào năm 2011, có cú pháp tương tự như C++, là một ngôn ngữ lập trình tĩnh tổng quát được thiết kế cho hiệu suất và an toàn, đặc biệt là an toàn, không chỉ giới hạn trong các chương trình hợp đồng thông minh. So với Solidity, Rust là một ngôn ngữ lập trình cấp thấp, đa mô hình, có hiệu suất cao và an toàn bộ nhớ. Trình biên dịch chính thức của Rust là rustc, rustc thực hiện phân tích từ vựng, phân tích cú pháp và phân tích ngữ nghĩa cho mã nguồn Rust, cuối cùng biên dịch mã thành LLVM IR.
Solang được phát triển dưới sự dẫn dắt của Hyperlege Labs, ra mắt vào năm 2023, là trình biên dịch Solidity dựa trên kiến trúc LLVM cho Solana và Polkadot, hỗ trợ việc viết hợp đồng thông minh bằng Solidity, nhưng cú pháp thực tế đã được điều chỉnh một số để phù hợp với kiến trúc của Solana và Polkadot. Mục tiêu của Solang là đơn giản hóa quá trình chuyển giao của các nhà phát triển sang Solana hoặc Polkadot, và mở rộng phạm vi phát triển của Solidity.
Rust là ngôn ngữ chính được Solana hỗ trợ, có độ ổn định cao hơn; lợi thế chính của Solang là khả năng tương thích với ngôn ngữ Solidity.
Hệ Move
Move là một ngôn ngữ lập trình hợp đồng thông minh mới, được ra mắt vào năm 2019, ban đầu được phát triển cho dự án blockchain Diem của Meta. Move nhằm giải quyết các vấn đề về bảo mật trong tài sản và giao dịch, giúp tài sản và giao dịch được định nghĩa và kiểm soát một cách chặt chẽ, với các đặc điểm ngôn ngữ như:
Bảo vệ loại tài nguyên hạng nhất (Frist Class Resources): Loại tài nguyên hạng nhất trước tiên là một loại biến, sau đó quy định rằng biến của loại này: không thể bị sao chép; không thể bị hủy một cách ngầm; chỉ có thể "Move" trên các địa chỉ chương trình khác nhau;
Tính linh hoạt: Mã byte Move có thể được thực thi trực tiếp, cũng có thể gọi mã của các Module đã được phát hành khác, có thể gọi nhiều chương trình trong một giao dịch, có khả năng linh hoạt thực hiện chuyển tiền cho nhiều người trong một giao dịch.
An toàn, khả năng kiểm chứng: Hệ thống mã Move cung cấp sự bảo vệ an toàn đặc thù cho tài nguyên. Tài nguyên Move không thể sao chép, sử dụng lại hoặc tiêu hủy. Một loại tài nguyên chỉ có thể được tạo ra hoặc tiêu hủy bởi mô-đun định nghĩa loại của nó. Máy ảo Move sẽ xác minh thông qua mã byte tĩnh và từ chối thực thi các chương trình không qua xác minh mã byte, qua đó đảm bảo tính an toàn.
Sau khi dự án Diem bị giải thể, nhóm sáng lập của nó đã rời đi và thành lập Aptos và Sui, cũng đã chọn Move làm ngôn ngữ hợp đồng thông minh cốt lõi. Aptos kế thừa Diem Move (Core Move), trong khi Sui viết hợp đồng thông minh của mình thông qua phiên bản tùy chỉnh Sui Move.
Trong Move, mỗi hợp đồng thông minh là một mô-đun, được định nghĩa bởi các hàm và cấu trúc, trong đó cấu trúc được khởi tạo trong các hàm và có thể được truyền cho các mô-đun khác thông qua các cuộc gọi hàm. Sui Move so với Core Move, áp dụng một mô hình dữ liệu dựa trên đối tượng, trong Sui có ba loại đối tượng khác nhau, bao gồm đối tượng sở hữu, đối tượng chia sẻ và đối tượng không thể thay đổi. Chiến lược phân tán của Sui tương tự như Solana, giao dịch cũng cần chỉ định các đối tượng nào sẽ được thao tác, thiết kế này cho phép Sui xử lý giao dịch đồng thời một cách hiệu quả, đạt được khả năng xử lý song song mà không cần đến sắp xếp toàn cầu như trong blockchain truyền thống.
Bộ biên dịch, bộ xác minh và máy ảo của Move đều được thiết kế từ đầu. Trong đó, bộ xác minh là một trong những cơ chế an toàn cốt lõi của Move, được sử dụng để duy trì mô hình lập trình dựa trên tài nguyên của Move. Bộ xác minh của Move là một công cụ phân tích tĩnh, phân tích bytecode của Move và xác định xem có tuân thủ các quy tắc an toàn về kiểu, bộ nhớ và tài nguyên cần thiết hay không, tất cả các mô-đun được tải lên chuỗi đều cần phải qua bộ xác minh.
So với các ngôn ngữ như Solidity, Move là một ngôn ngữ thân thiện với việc xác minh hình thức, chẳng hạn như không hỗ trợ các đặc điểm như phân bổ động (dynamic dispatch), tất cả các đường dẫn hợp đồng đều có thể được xác định ngay trong thời gian biên dịch, mà không cần phải xác định các hàm cần thực thi tại thời điểm thực thi hợp đồng, từ đó có thể phân tích và xác minh một cách triệt để.
Move còn có một công cụ xác minh hình thức cho hợp đồng thông minh, được gọi là Move Prover. Các nhà phát triển cần viết các điều kiện xác minh cho hợp đồng thông minh (dưới dạng các câu khẳng định), Move Prover sẽ chuyển đổi các điều kiện xác minh này thành công thức SMT trong nền tảng, sau đó sử dụng bộ giải SMT để kiểm tra.
hợp đồng thông minh phát triển công cụ
Đối với những ai muốn bắt đầu với Web3 hoặc muốn học phát triển hợp đồng trên Ethereum và các blockchain tương thích EVM khác, Solidity là lựa chọn hàng đầu. Hơn nữa, nhờ sự phổ biến của Solidity, các công cụ phát triển cũng trở nên trưởng thành hơn, đại diện có:
Hardhat là một môi trường phát triển để biên dịch, triển khai, kiểm tra và gỡ lỗi ứng dụng Ethereum. Giúp các nhà phát triển quản lý và tự động hóa các nhiệm vụ lặp đi lặp lại vốn có trong quá trình xây dựng hợp đồng thông minh và DApps, và dễ dàng giới thiệu thêm các chức năng xung quanh quy trình công việc này;
OpenZeppelin cung cấp OpenZeppelin Contracts mã nguồn mở, được viết bằng Solidity, để xây dựng các hợp đồng thông minh an toàn. OpenZeppelin Contracts làm