Bảy khái niệm tạo nên nền tảng cho phát triển Solana. Hãy đọc Tài khoản, Chương trình, Lệnh, Giao dịch và Phí theo thứ tự đó, vì mỗi phần xây dựng dựa trên phần trước đó. Đọc Tài khoản và Chương trình trước khi đọc PDA. Đọc Chương trình, Lệnh và PDA trước khi đọc CPI.
Tài khoản
Solana lưu trữ toàn bộ trạng thái trong các tài khoản, một kho lưu trữ key-value được đánh chỉ mục bằng địa chỉ 32 byte. Mỗi tài khoản có năm trường: lamports, data, owner, executable và rent_epoch.
Chương trình
Các smart contract của Solana, được biên dịch thành sBPF. Chương trình không có trạng thái và tất cả trạng thái có thể thay đổi nằm trong các tài khoản dữ liệu riêng biệt được truyền qua lệnh.
Lệnh
Một yêu cầu thực thi một chương trình, chứa program ID, danh sách tài khoản và các byte dữ liệu không rõ ràng. Nhiều lệnh được kết hợp thành một giao dịch duy nhất.
Giao dịch
Đơn vị thực thi nguyên tử trên Solana. Chứa chữ ký và một thông điệp (địa chỉ tài khoản, blockhash gần đây và các lệnh đã biên dịch). Tối đa 1232 byte.
Phí
Phí cơ bản là 5.000 lamports cho mỗi chữ ký, cộng với phí ưu tiên tùy chọn dựa trên số compute unit được yêu cầu. Tối đa 1,4 triệu compute unit cho mỗi giao dịch.
Địa chỉ dẫn xuất từ chương trình (PDA)
Các địa chỉ xác định được dẫn xuất từ program ID và seed. Chỉ chương trình sở hữu mới có thể ký thay mặt cho PDA thông qua invoke_signed.
Lời gọi xuyên chương trình (CPI)
Một chương trình gọi chương trình khác thông qua invoke hoặc invoke_signed. Quyền signer và writable được mở rộng cho callee. Độ sâu ngăn xếp lệnh tối đa là 5 (cấp cao nhất cộng với CPI).
Các chủ đề bổ sung
Token
Tài sản số có thể thay thế và không thể thay thế trên Solana (SPL Token, Token-2022).
Cluster và endpoint
Mainnet, Devnet và Testnet: các nhóm validator phục vụ yêu cầu JSON-RPC.
| Cluster | Endpoint RPC công khai | Mục đích sử dụng |
|---|---|---|
| Mainnet | https://api.mainnet.solana.com | Sản xuất |
| Devnet | https://api.devnet.solana.com | Thử nghiệm cho nhà phát triển |
| Testnet | https://api.testnet.solana.com | Kiểm thử validator |
Is this page helpful?