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 chương trình chạy trên Ethereum được gọi là hợp đồng thông minh, một loạt các mã (hàm) nằm ở một địa chỉ cụ thể trên Ethereum và dữ liệu (trạng thái). (Ồ, mã và dữ liệu được ghép nối) Hợp đồng thông minh cũng được Ethereum tài khoản, được gọi là tài khoản hợp đồng. Chúng có số dư và có thể trở thành đối tượng giao dịch, nhưng chúng không thể được điều khiển bởi con người và được triển khai trên mạng để chạy dưới dạng chương trình.
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.
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.
Tương tự như Ethereum, Solana cũng là một blockchain dựa trên mô hình tài khoản, nhưng Solana cung cấp một mô hình tài khoản khác với Ethereum và lưu trữ dữ liệu theo những cách khác nhau.
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ó.
Rust là ngôn ngữ lập trình chính để phát triển hợp đồng thông minh trên Solana. Do tính năng hiệu suất và bảo mật của nó, nó phù hợp với môi trường rủi ro cao của blockchain và hợp đồng thông minh. Solana cũng hỗ trợ C, C ++ và (rất bất thường) các ngôn ngữ khác. SDK chính thức cho Rust và C được cung cấp để hỗ trợ phát triển các chương trình on-chain. Các nhà phát triển có thể sử dụng các công cụ để biên dịch chương trình thành Berkley Packet Filter (BPF) bytecode (tệp có phần mở rộng .so), sau đó triển khai nó vào chuỗi Solana và thực hiện logic của hợp đồng thông minh thông qua thời gian chạy hợp đồng thông minh song song Sealevel.
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.
Mô hình lập trình hợp đồng thông minh của Solana rất sáng tạo. Nó cung cấp một cách tiếp cận không trạng thái để phát triển hợp đồng thông minh, sử dụng Rust làm ngôn ngữ lập trình chính và kiến trúc tách logic khỏi trạng thái. Điều này cung cấp cho các nhà phát triển một môi trường mạnh mẽ để xây dựng và triển khai hợp đồng thông minh, đảm bảo an ninh và hiệu suất, mặc dù nó đặt ra khó khăn phát triển cao hơn. Solana tập trung vào thông lượng cao, chi phí thấp và khả năng mở rộng, làm cho nó trở thành lựa chọn lý tưởng cho các nhà phát triển hiện đang tìm cách tạo ra các dApp hiệu suất cao.
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 chương trình chạy trên Ethereum được gọi là hợp đồng thông minh, một loạt các mã (hàm) nằm ở một địa chỉ cụ thể trên Ethereum và dữ liệu (trạng thái). (Ồ, mã và dữ liệu được ghép nối) Hợp đồng thông minh cũng được Ethereum tài khoản, được gọi là tài khoản hợp đồng. Chúng có số dư và có thể trở thành đối tượng giao dịch, nhưng chúng không thể được điều khiển bởi con người và được triển khai trên mạng để chạy dưới dạng chương trình.
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.
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.
Tương tự như Ethereum, Solana cũng là một blockchain dựa trên mô hình tài khoản, nhưng Solana cung cấp một mô hình tài khoản khác với Ethereum và lưu trữ dữ liệu theo những cách khác nhau.
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ó.
Rust là ngôn ngữ lập trình chính để phát triển hợp đồng thông minh trên Solana. Do tính năng hiệu suất và bảo mật của nó, nó phù hợp với môi trường rủi ro cao của blockchain và hợp đồng thông minh. Solana cũng hỗ trợ C, C ++ và (rất bất thường) các ngôn ngữ khác. SDK chính thức cho Rust và C được cung cấp để hỗ trợ phát triển các chương trình on-chain. Các nhà phát triển có thể sử dụng các công cụ để biên dịch chương trình thành Berkley Packet Filter (BPF) bytecode (tệp có phần mở rộng .so), sau đó triển khai nó vào chuỗi Solana và thực hiện logic của hợp đồng thông minh thông qua thời gian chạy hợp đồng thông minh song song Sealevel.
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.
Mô hình lập trình hợp đồng thông minh của Solana rất sáng tạo. Nó cung cấp một cách tiếp cận không trạng thái để phát triển hợp đồng thông minh, sử dụng Rust làm ngôn ngữ lập trình chính và kiến trúc tách logic khỏi trạng thái. Điều này cung cấp cho các nhà phát triển một môi trường mạnh mẽ để xây dựng và triển khai hợp đồng thông minh, đảm bảo an ninh và hiệu suất, mặc dù nó đặt ra khó khăn phát triển cao hơn. Solana tập trung vào thông lượng cao, chi phí thấp và khả năng mở rộng, làm cho nó trở thành lựa chọn lý tưởng cho các nhà phát triển hiện đang tìm cách tạo ra các dApp hiệu suất cao.