Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Sự phân chia cơ bản: chương trình so với tài khoản
Chương trình
Một chương trình trên Solana là mã thực thi — một tệp nhị phân được biên dịch, được triển khai tới mộtPubkey, và có thể gọi được thông qua các giao dịch. Chương trình không có trạng thái liên quan; chúng chỉ chứa logic.
Các chương trình của Raydium:
- CPMM:
CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F - CLMM:
CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK - AMM v4:
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Tài khoản
Một tài khoản là một hàng dữ liệu trên chuỗi. Mỗi tài khoản có:pubkey— địa chỉ của nó.owner— chương trình sở hữu nó (kiểm soát ghi).data— các byte thô.lamports— số dư SOL (1 SOL = 1.000.000.000 lamports).rent_epoch— trường thu thập rent cũ (bị bỏ qua kể từ khi rent-exemption trở thành bắt buộc).
Quyền sở hữu
Mỗi tài khoản được sở hữu bởi chính xác một chương trình. Chỉ mã của chương trình đó mới có thể sửa đổi trườngdata của tài khoản. Người dùng có thể sửa đổi lamports (gửi/nhận SOL) trên tài khoản mà họ có thể ký, nhưng sửa đổi data yêu cầu chương trình chủ sở hữu phải thực hiện việc này thay mặt họ.
Các ví dụ:
- Ví người dùng của bạn: được sở hữu bởi System Program. Lamports sống ở đây; bạn ký để chuyển.
- Tài khoản token USDC của bạn: được sở hữu bởi SPL Token Program. Lệnh
transfercủa token program cập nhật số dư. - Tài khoản trạng thái pool của Raydium: được sở hữu bởi chương trình CPMM. Chỉ các lệnh của CPMM mới có thể sửa đổi dự trữ, phí, v.v.
PersonalPositionStatecủa NFT vị trí của Raydium: được sở hữu bởi chương trình CLMM.
Rent và rent-exemption
Tạo một tài khoản tiêu tốn không gian lưu trữ. Solana tính phí rent cho không gian đó, nhưng kể từ năm 2020 tất cả các tài khoản mới phải là rent-exempt — nghĩa là chúng giữ đủ lamports để rent mà họ sẽ nợ trong 2 năm được thanh toán trước. Trong thực tế:- Tài khoản rent-exempt sống mãi mãi.
- Đóng tài khoản sẽ hoàn lại lamports cho người ký đóng.
Chi phí rent của Raydium
| Tài khoản | Kích thước | Rent |
|---|---|---|
| CPMM PoolState | ~1.440 B | ~0,011 SOL |
| CLMM PoolState | ~1.500 B | ~0,012 SOL |
| CLMM TickArray | ~9.000 B | ~0,063 SOL |
| CLMM PersonalPositionState | ~280 B | ~0,003 SOL |
| ATA | 165 B | ~0,002 SOL |
| Vault (Token Account) | 165 B | ~0,002 SOL |
Tài khoản dữ liệu so với tài khoản có thể thực thi
Tài khoản có hai loại:Tài khoản dữ liệu
Lưu trữ trạng thái (dự trữ pool, số dư token, vị trí người dùng).executable = false. Đây là phần lớn.
Tài khoản có thể thực thi
Lưu trữ bytecode chương trình.executable = true. Đây là các chương trình (CPMM, CLMM, v.v.). Chương trình không có dữ liệu ngoài bytecode của chúng.
Tài khoản dẫn xuất từ chương trình (PDA)
PDA là một tài khoản dữ liệu có địa chỉ được dẫn xuất một cách xác định từ một chương trình và một số seed — không có khóa riêng tư nào tồn tại cho địa chỉ này. Chỉ chương trình dẫn xuất mới có thể ký thay mặt PDA thông quainvoke_signed.
Raydium sử dụng PDA rộng rãi:
- PDA trạng thái pool: được dẫn xuất từ
[poolTypeDiscriminator, mintA, mintB, ammConfig]. - PDA vault: được dẫn xuất từ
[pool, mint]. - PDA trạng thái quan sát: được dẫn xuất từ
[observationSeed, pool].
solana-fundamentals/pdas-and-cpis.
Giao dịch và tham chiếu tài khoản
Mỗi giao dịch Solana mang theo một danh sách rõ ràng các tài khoản mà nó sẽ đọc/ghi. Thời gian chạy thực thi:- Các tài khoản được liệt kê có thể được đọc hoặc ghi (theo cờ
is_writablecủa chúng). - Các tài khoản chưa được liệt kê không thể bị chạm vào.
Kích thước tài khoản và bố cục dữ liệu
Mỗi tài khoản của Raydium có kích thước cố định hoặc có giới hạn. Bố cục được định nghĩa trong mã (các struct Rust với#[repr(C)]) và được ghi chép trong sdk-api/anchor-idl.
Các chương trình Anchor thêm một discriminator 8 byte vào mỗi tài khoản họ tạo, được dẫn xuất từ hash("account:<StructName>")[0..8]. Điều này cho phép các máy khách xác định loại tài khoản chỉ bằng cách đọc 8 byte đầu tiên — điều quan trọng đối với các quét getProgramAccounts liệt kê tất cả các tài khoản của một loại.
Đọc trạng thái pool của Raydium
Thông qua SDK:src/raydium/cpmm/layout.ts trong mã nguồn SDK.
Ví dụ thực hành: đọc tài khoản token
Hãy đọc số dư USDC của người dùng.Tại sao điều này quan trọng đối với Raydium
Mô hình tài khoản hình thành thiết kế của Raydium:- Trạng thái pool là một tài khoản duy nhất — mọi thứ về một pool (mint, dự trữ, phí, admin) sống trong một tài khoản được sở hữu bởi chương trình pool.
- Token LP là tài khoản token SPL tiêu chuẩn — Raydium ủy quyền tokenization cho SPL Token program.
- Các mảng tick được chia thành các khúc — CLMM không thể có một mảng tick duy nhất có thể phát triển vì các tài khoản có kích thước được cấp phát cố định; thay vào đó, nó sử dụng các PDA
TickArrayđược chia thành các khúc. - Position NFT là Metaplex NFT — các vị trí CLMM là NFT tiêu chuẩn theo Metaplex; trạng thái vị trí là một PDA riêng biệt.
- “Dự trữ pool ở đâu?” → hai tài khoản vault (tài khoản token) được sở hữu bởi SPL Token program, với quyền hạn được ủy quyền cho một PDA của chương trình pool.
- “Dữ liệu tick cho CLMM ở đâu?” → một loạt các PDA TickArray, mỗi cái bao gồm 60 tick liên tiếp.
- “Cổ phần nông trại của tôi ở đâu?” → một PDA
UserLedgerđược dẫn xuất từ[user, farmId], được sở hữu bởi chương trình nông trại.
Con trỏ
solana-fundamentals/programs-and-anchor— cách các chương trình xử lý tài khoản.solana-fundamentals/pdas-and-cpis— dẫn xuất PDA và CPI.solana-fundamentals/transactions-and-fees— cách tài khoản được tham chiếu trong giao dịch.sdk-api/anchor-idl— bố cục tài khoản cho các chương trình của Raydium.
- Tài liệu Solana Account.
- SPL Token program — nơi các tài khoản token sống.


