Chuyển tiếp tiêu đề gốc '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana là một nền tảng blockchain hiệu suất cao được thiết kế để hỗ trợ dApps. Nó được biết đến với tốc độ và khả năng mở rộng, đạt được thông qua một cơ chế đồng thuận độc đáo và thiết kế kiến trúc. Bài viết này sử dụng Ethereum như một đối tượng so sánh để giới thiệu ngắn gọn các đặc điểm của mô hình lập trình hợp đồng thông minh Solana.
Các mã thực thi chạy trên Solana được gọi là chương trình on-chain và chúng có thể diễn giải các hướng dẫn được gửi trong mỗi giao dịch. Các chương trình này có thể được triển khai trực tiếp vào lõi mạng dưới dạng chương trình gốc hoặc được xuất bản bởi bất kỳ ai dưới dạng chương trình SPL.
Hướng dẫn: Hướng dẫn là thuật ngữ duy nhất cho các chương trình trên chuỗi Solana. Các chương trình on-chain bao gồm các hướng dẫn. Chúng là những đơn vị nhỏ nhất thực hiện các hoạt động cụ thể: một hoặc nhiều hướng dẫn được bao gồm trong mỗi giao dịch Solana. Hướng dẫn chỉ định các hành động sẽ được thực hiện, bao gồm gọi một chương trình on-chain cụ thể, truyền tài khoản, niêm yết đầu vào và cung cấp mảng byte. Các hướng dẫn có các ràng buộc tính toán, vì vậy các chương trình on-chain nên được tối ưu hóa để sử dụng một số lượng nhỏ các đơn vị tính toán hoặc chia các hoạt động đắt tiền thành nhiều lệnh.

Chương trình gốc: Đây là những chương trình cung cấp các chức năng cần thiết để xác thực các nút. Đáng chú ý nhất là Chương trình hệ thống, chịu trách nhiệm quản lý việc tạo tài khoản mới và chuyển SOL giữa hai tài khoản.- Các chương trình SPL: Chúng xác định một loạt các hoạt động on-chain, bao gồm tạo, sàn giao dịch và cho vay mã thông báo, cũng như tạo ra các nhóm đặt cọc và duy trì các dịch vụ phân giải tên miền on-chain. Trong số này, Chương trình Token SPL được sử dụng cho các hoạt động mã thông báo, trong khi Chương trình tài khoản Token liên kết thường được sử dụng để viết các chương trình tùy chỉnh khác. Bạn gọi chúng là hợp đồng thông minh, tôi gọi chúng là on-chain chương trình. Các thuật ngữ khác nhau, nhưng cả hai đều đề cập đến mã chạy trên blockchain. Cũng giống như Alice, Bob và John đều là những cái tên, và phẩm chất thực tế của họ cần được đánh giá bằng các khía cạnh khác.
Trong Solana, tài khoản có thể lưu thông tin ví và các dữ liệu khác. Các trường do tài khoản xác định bao gồm Lamports (số dư tài khoản), Chủ sở hữu (chủ sở hữu tài khoản), Thực thi (cho dù đó là tài khoản thực thi) và Dữ liệu (dữ liệu được lưu trữ trong tài khoản). Mỗi tài khoản chỉ định một chương trình làm chủ sở hữu của nó để phân biệt chương trình mà tài khoản được sử dụng làm cửa hàng nhà nước. Các chương trình on-chain này chỉ đọc hoặc không trạng thái: tài khoản chương trình (tài khoản thực thi) chỉ lưu trữ bytecode BPF và không lưu trữ bất kỳ trạng thái nào. Chương trình sẽ lưu trữ trạng thái trong các tài khoản độc lập khác (tài khoản không thể thực thi). Đó là, mô hình lập trình của Solana tách mã và dữ liệu.
Các Ethereum tài khoản chủ yếu là một tham chiếu đến trạng thái EVM. Hợp đồng thông minh của nó không chỉ có logic mã mà còn cần lưu trữ dữ liệu người dùng. Đây thường được coi là một lỗ hổng thiết kế còn sót lại từ lịch sử của EVM.

Đừng đánh giá thấp sự khác biệt này! Về cơ bản, Solana hợp đồng thông minh khó tấn công hơn so với các blockchain có mô hình lập trình kết hợp như Ethereum.
Trên Ethereum, "chủ sở hữu" hợp đồng thông minh là một biến toàn cục tương ứng một-một với hợp đồng thông minh. Do đó, gọi một hàm có thể trực tiếp thay đổi hợp đồng "chủ sở hữu".
Tuy nhiên, trên Solana, "chủ sở hữu" của hợp đồng thông minh là dữ liệu được liên kết với một tài khoản chứ không phải là một biến toàn cục. Một tài khoản có thể có nhiều chủ sở hữu, thay vì liên kết một-một. Để kẻ tấn công khai thác lỗ hổng bảo mật trong hợp đồng thông minh, chúng không chỉ cần tìm chức năng có vấn đề mà còn cần chuẩn bị các tài khoản "chính xác" để gọi hàm đó. Bước này không dễ dàng vì Solana hợp đồng thông minh thường liên quan đến nhiều tài khoản đầu vào và quản lý mối quan hệ của chúng thông qua các ràng buộc (chẳng hạn như account1.owner == account2.key). Quá trình từ "chuẩn bị tài khoản chính xác" đến "khởi động một cuộc tấn công" giúp nhân viên giám sát bảo mật có đủ thời gian để chủ động phát hiện các giao dịch đáng ngờ liên quan đến việc tạo tài khoản "giả mạo" liên quan đến hợp đồng thông minh trước khi cuộc tấn công xảy ra.
Ethereum hợp đồng thông minh giống như một kho tiền sử dụng mật khẩu duy nhất; một khi bạn có được mật khẩu này, bạn có toàn quyền sở hữu. Ngược lại, hợp đồng thông minh của Solana giống như một kho tiền với nhiều mật khẩu. Để có quyền truy cập, bạn không chỉ cần lấy mật khẩu mà còn tìm ra mật khẩu nào tương ứng với khóa nào để mở nó.
Vì bản thân ngôn ngữ Rust rất khó bắt đầu và không được tùy chỉnh để phát triển blockchain, nhiều yêu cầu yêu cầu phát minh lại bánh xe và mã dự phòng. (Nhiều dự án trong sản xuất sử dụng khung Anchor được tạo bởi người đồng sáng tạo Backpack Armani để đơn giản hóa việc phát triển) Nhiều ngôn ngữ lập trình mới được tạo ra dành riêng cho phát triển blockchain dựa trên Rust, chẳng hạn như Cairo (Starknet), Move (Sui, Aptos).
Nhiều dự án trong sản xuất sử dụng Anchor framework
Ethereum hợp đồng thông minh chủ yếu được phát triển bằng ngôn ngữ Solidity (cú pháp tương tự như javascript và tệp mã có phần mở rộng .sol). Do cú pháp tương đối đơn giản và các công cụ phát triển trưởng thành hơn (Hardhat framework, Remix IDE...), chúng tôi thường nghĩ rằng trải nghiệm phát triển của Ethereum đơn giản và mới mẻ hơn, trong khi việc phát triển Solana khó bắt đầu hơn. Vì vậy, mặc dù Solana rất phổ biến hiện nay, nhưng trên thực tế số lượng nhà phát triển trên Ethereum vẫn nhiều hơn Solana.
Trong một số điều kiện đường xá nhất định, những chiếc xe đua hàng đầu không nhanh như những chiếc xe được sửa đổi. Rust giống như một chiếc xe đua cấp cao nhất, đảm bảo hiệu quả hiệu quả cho hiệu suất và sự an toàn của Solana. Tuy nhiên, nó không được thiết kế để phát triển đường đua này cho các chương trình on-chain mà thay vào đó gây ra sự gia tăng khó khăn khi lái xe (phát triển). Sử dụng chuỗi công khai dựa trên Rust và phát triển ngôn ngữ tùy chỉnh cho chuỗi tương đương với việc sửa đổi xe đua để phù hợp hơn với điều kiện đường xá. Solana đang gặp bất lợi ở đây.





