Việc chuyển từ EVM sang SVM (Solana) đòi hỏi phải hiểu một số điểm khác biệt chính giữa các máy ảo. Bài viết này sẽ tìm hiểu một số khác biệt đó, bao gồm tài khoản, phí, giao dịch, hợp đồng thông minh (chương trình), v.v. Nó cũng sẽ khám phá quá trình thiết lập của nhà phát triển bao gồm công cụ và SDK.
Cuối cùng, các nhà phát triển sẽ có kiến thức cần thiết để bắt đầu hành trình Solana của mình.
Hiểu sự khác biệt cốt lõi
Để bắt đầu, hãy xem sự khác biệt đáng kể nhất giữa EVM và SVM—thiết kế mô hình tài khoản.
Mẫu tài khoản
Không giống như Ethereum, Solana được thiết kế để tận dụng nhiều lõi và hỗ trợ các giao dịch song song. Để đạt được điều này, Solana sử dụng mô hình tài khoản.
Tài khoản trên Solana là một bản ghi trong sổ cái Solana chứa dữ liệu (tài khoản dữ liệu) hoặc là một chương trình thực thi (hợp đồng thông minh hoặc chương trình trên Solana).
Giống như Ethereum, mỗi tài khoản có một mã định danh địa chỉ. Tuy nhiên, không giống như Ethereum – nơi mỗi hợp đồng thông minh là một tài khoản có logic thực thi và lưu trữ gắn liền với nhau – các hợp đồng thông minh của Solana hoàn toàn không có trạng thái. Trạng thái phải được chuyển đến các tài khoản để chúng thực thi.
Hãy xem một ví dụ về mã. Trong mã Solidity bên dưới, trạng thái được gắn với hợp đồng thông minh với dòng int Private count = 0.
Với Rust (Solana) có một cấu trúc trong hợp đồng thông minh nêu rõ khởi tạo_counter. Bộ đếm ban đầu này tạo một tài khoản có số lượng bằng 0. Tài khoản được chuyển đến bộ đếm này để tăng số lượng. Điều này giúp trạng thái không bị giữ trong chính hợp đồng thông minh.
Với Solana, dữ liệu được lưu trữ trong các tài khoản riêng biệt bên ngoài chương trình. Để thực thi logic trong một chương trình, hãy chuyển tài khoản cần thực hiện.
Trong trường hợp chương trình bộ đếm này, chuyển một tài khoản bộ đếm cho chương trình khi gọi hàm tăng và sau đó chương trình sẽ tăng giá trị trong tài khoản bộ đếm.
Lợi ích của việc thiết kế mô hình tài khoản
Một trong những lợi ích chính của mô hình tài khoản này là khả năng sử dụng lại chương trình.
Với giao diện ERC20 trên Ethereum, mỗi khi nhà phát triển tạo mã thông báo mới, họ phải triển khai lại hợp đồng thông minh ERC20 sang Ethereum với các giá trị được chỉ định. Việc tái triển khai này phải chịu chi phí cao.
Nhưng với Solana, không cần thiết phải tạo và triển khai hợp đồng thông minh mới để tạo mã thông báo mới. Thay vào đó, hãy tạo một tài khoản mới, được gọi là tài khoản đúc tiền, sử dụng Chương trình mã thông báo Solana, chuyển các thông tin chi tiết như số lượng mã thông báo, điểm thập phân, ai có thể đúc tiền, v.v.
Và điều này có thể được thực hiện bằng cách gửi giao dịch đến Chương trình Token. Ví dụ: sử dụng Thư viện chương trình Solana CLI, đó chỉ là một lệnh duy nhất:
Thị trường phí địa phương
Một lợi ích khác của mô hình tài khoản là thị trường phí mang tính cục bộ cho mỗi tài khoản.
Trên Ethereum, thị trường phí mang tính toàn cầu. Nếu một bộ sưu tập NFT được lan truyền rộng rãi và mọi người đều đang đúc tiền—phí sẽ tăng lên đối với tất cả mọi người. Nhưng trên Solana, vì thị trường phí mang tính địa phương cho mỗi tài khoản, nên chỉ những người đúc tiền NFT đó mới phải trả các khoản phí cao. Người dùng không tham gia sẽ không bị ảnh hưởng.
Phí
Hãy đi sâu hơn vào phí. Trên Solana, phí được chia thành ba loại: phí cơ bản, phí ưu tiên và tiền thuê. Chúng ta hãy nhìn vào từng cái.
Phí cơ bản được tính dựa trên số lượng chữ ký trong một giao dịch. Mỗi chữ ký có giá 5000 lamport (0,000000001 sol = 1 lamport). Nếu giao dịch có 5 chữ ký, phí cơ bản là 25000 lamport.
Phí ưu tiên là phí tùy chọn có thể được thêm vào giao dịch để ưu tiên giao dịch đó. Khoản phí này dựa trên số lượng đơn vị điện toán được sử dụng trong giao dịch. Tương tự như khí Ethereum, khoản phí này là thước đo đơn giản về tài nguyên máy tính cần thiết cho giao dịch.
Khoản phí cuối cùng, tiền thuê nhà, giống như một khoản đặt cọc hơn. Khi nhà phát triển tạo tài khoản hoặc phân bổ dung lượng trên mạng, họ phải ký gửi SOL cho mạng để giữ tài khoản của mình. Giá thuê được tính dựa trên số byte được lưu trữ trên mạng và một khoản phí cơ bản bổ sung sẽ được tính cho việc phân bổ không gian.
Giao dịch
Trên Solana, việc thực thi chương trình bắt đầu bằng việc gửi một giao dịch đến cụm. Mỗi giao dịch trên Solana bao gồm bốn phần:
Một hoặc nhiều hướng dẫn. Hướng dẫn là logic thực thi nhỏ nhất trên Solana. Chúng có thể được coi giống như các lệnh gọi hàm trong hợp đồng thông minh Ethereum. Chúng gọi các chương trình thực hiện lệnh gọi đến thời gian chạy Solana để cập nhật trạng thái (ví dụ: gọi chương trình mã thông báo để chuyển mã thông báo từ tài khoản này sang tài khoản khác).
Một loạt các tài khoản để đọc hoặc viết từ
Một hoặc nhiều chữ ký
Một blockhash gần đây hoặc nonce. Thay vì sử dụng nonce gia tăng như trên Ethereum, trên Solana, một blockhash gần đây được lấy từ cụm. Với blockhash này, giao dịch chỉ có hiệu lực trong 150 khối, ngăn không cho các chữ ký giao dịch tồn tại lâu dài được thực thi vào một ngày sau đó.
Một điểm khác biệt đáng kể khác giữa Ethereum và Solana là với Solana, các giao dịch có thể có nhiều hướng dẫn (lời gọi hàm trên Ethereum). Điều này có nghĩa là không cần thiết phải tạo các hợp đồng thông minh tùy chỉnh để xâu chuỗi các chức năng trong một giao dịch. Mỗi lệnh có thể là một lệnh gọi hàm riêng biệt, được thực hiện theo thứ tự trong giao dịch. Các giao dịch cũng mang tính nguyên tử: nếu một lệnh thất bại thì toàn bộ giao dịch sẽ thất bại.
Hạn chế giao dịch
Giống như các giới hạn về gas của Ethereum, có những giới hạn về đơn vị tính toán đối với các giao dịch Solana.
Những hạn chế khác bao gồm:
Mỗi tài khoản được tham chiếu có thể sử dụng tối đa 12.000.000 đơn vị tính toán cho mỗi khối.
Chỉ có thể gọi hướng dẫn ở độ sâu 4 trước khi giao dịch hoàn nguyên.
Mempool
Không giống như Ethereum, Solana không có mempool. Thay vào đó, người xác thực Solana chuyển tiếp tất cả các giao dịch tới tối đa bốn người đứng đầu trong lịch trình của người đứng đầu. Việc không có mempool buộc các giao dịch phải chuyển từ nhà lãnh đạo này sang nhà lãnh đạo khác cho đến khi hết hạn blockhash, nhưng nó cũng làm giảm chi phí của tin đồn trên toàn cụm.
Môi trường nhà phát triển Solana
Bây giờ chúng ta hãy xem một số công cụ dành cho nhà phát triển trên Solana.
Ngôn ngữ lập trình
Trong khi Ethereum chủ yếu sử dụng Solidity để viết hợp đồng thông minh thì Solana sử dụng Rust. Nếu chuyển từ Ethereum, hãy xem xét Anchor framework hoặc Neon, cả hai đều có thể giúp các nhà phát triển bắt đầu nhanh hơn bằng cách cho phép họ xây dựng trong Solana bằng các công cụ EVM quen thuộc.
Giống như Ethereum, có các SDK phía máy khách dành cho nhiều ngôn ngữ lập trình phổ biến nhất, bao gồm JavaScript, Python và Java.
Công cụ dành cho nhà phát triển
Solana hiện không có công cụ tương đương với Foundry, nhưng nó có một bộ công cụ rộng tương đương với những công cụ được sử dụng cho Solidity.
Để tìm hiểu sâu hơn, đây là danh sách tài nguyên dành cho nhà phát triển rộng hơn.
Tạo hợp đồng thông minh
Khi tạo chương trình trên Solana (hoặc khi di chuyển các hợp đồng thông minh Ethereum hiện có), có một số điểm khác biệt cốt lõi—có quá nhiều điểm khác biệt để đề cập ở đây. Nhưng hãy xem xét một số điều phổ biến nhất:
Bản đồ không tồn tại trực tiếp trên Solana. Thay vào đó, hãy sử dụng các địa chỉ có nguồn gốc từ chương trình. Giống như ánh xạ, các địa chỉ bắt nguồn từ chương trình cung cấp khả năng tạo bản đồ từ khóa hoặc tài khoản đến giá trị được lưu trữ trên chuỗi.
Trên Solana, các chương trình được mặc định có thể nâng cấp. Hợp đồng thông minh có thể được nâng cấp bằng lệnh CLI đơn giản solana chương trình triển khai <program_filepath>.
Khi viết một hợp đồng thông minh vững chắc, người ta thường kiểm tra msg.sender hoặc tx.origin. Không có tương đương với điều này trên Solana. Mỗi giao dịch có thể có nhiều người ký và người gửi giao dịch không nhất thiết phải là người ký giao dịch.
Để biết thêm thông tin về các chương trình và cách triển khai, hãy xem hướng dẫn này.
Tìm hiểu thêm
Đó là một số khác biệt quan trọng nhất giữa việc phát triển trên Ethereum và Solana. Tất nhiên còn nhiều điều để học hỏi. Và cách tốt nhất để bắt đầu là bắt đầu ngay! Dưới đây là một số tài nguyên cho các bước tiếp theo:
Sân chơi Solana nơi các nhà phát triển có thể viết, xây dựng và triển khai các chương trình Solana từ trình duyệt
Giới thiệu về quá trình phát triển Solana bằng Solana Playground
Cái nhìn chi tiết hơn về sự khác biệt giữa phát triển trên Ethereum và Solana
Chương trình đào tạo Solana
