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 →
Các chương trình sản phẩm của Raydium là những cơ sở mã độc lập, nhưng chúng được thiết kế dựa trên một tập hợp các quy ước chung. Trang này là tài liệu tham khảo chính thức cho những quy ước đó. Các chương theo từng sản phẩm mô tả cách các quy ước được thể hiện trong các tài khoản của chúng; trang này mô tả bản thân các quy ước.
”Dùng chung” có nghĩa gì ở đây
Ba kiểu chia sẻ chạy xuyên suốt codebase:- Chia sẻ quy ước. Mọi chương trình đều sử dụng cùng một mẫu dẫn xuất PDA, cùng một hình dạng phân chia phí và cùng một ý tưởng tài khoản quan sát — nhưng mỗi chương trình triển khai chúng trong chương trình riêng của mình với các seed riêng.
- Chia sẻ tài khoản. Một số tài khoản là chính xác cùng một bản ghi trên nhiều pool (PDA quyền toàn cầu trong CPMM, các tài khoản AmmConfig).
- Chia sẻ ngoài chuỗi. Một REST API và một SDK TypeScript phục vụ cả bốn chương trình. Những người tích hợp tương tác với một máy chủ HTTP và một gói NPM bất kể chương trình nào mà họ cuối cùng gọi.
1. PDA quyền
Mỗi chương trình Raydium có chính xác một PDA sở hữu các kho token của nó. Người dùng không bao giờ nắm giữ quyền kho trực tiếp — PDA quyền là người ký duy nhất có thể di chuyển quỹ ra ngoài, và nó chỉ ký khi một lệnh chương trình hợp lệ yêu cầu. Mẫu này giống nhau trên các sản phẩm; các seed khác nhau:
Một vài điều theo sau từ đây:
- Đối với CPMM và CLMM, PDA quyền là một tài khoản toàn cầu — mọi pool loại đó đều sử dụng nó. Nếu bạn đang CPI vào CPMM, bạn cần nó một lần, không phải cho mỗi pool.
- Đối với các quyền cho mỗi pool / mỗi farm, bạn dẫn xuất PDA từ ID pool/farm. SDK làm điều này trong
getPoolKeys/getFarmKeys; nếu bạn đang tích hợp trực tiếp, bạn dẫn xuất vớifindProgramAddressSync. - Quyền sở hữu kho không thể thay đổi. Khi một tài khoản token được tạo với PDA quyền làm chủ sở hữu, chỉ PDA đó — được gọi bởi chương trình — mới có thể chuyển ra. Không có ghi đè quản trị viên.
products/cpmm/accounts, products/clmm/accounts, products/amm-v4/accounts, products/farm-staking/accounts, products/launchlab/accounts.
2. Tài khoản quản trị viên và cấu hình
CPMM và CLMM chia sẻ một mẫu tài khoản cấu hình gọi làAmmConfig: một tài khoản toàn cầu nhỏ, được lập chỉ mục bằng u16, giữ các tỷ lệ phí và điểm đến quản trị viên áp dụng cho toàn bộ tầng phí. Các pool liên kết với một cấu hình khi tạo và không bao giờ liên kết lại.
- Các tầng phí là toàn cầu. Khi một pool nói “đây là một pool 0,25%”, nó có nghĩa là nó liên kết với AmmConfig có
trade_fee_ratelà 0,25% tại thời điểm tạo. Không có ghi đè tỷ lệ cho mỗi pool. - Một cấu hình có thể thay đổi nhưng các pool không theo. Nếu cơ quan cấu hình chỉnh sửa AmmConfig, mọi pool hiện có liên kết với cấu hình đó sẽ nhận tỷ lệ mới ngay lập tức. Đây là một tính năng, không phải một lỗi; đây là cách những thay đổi kinh tế ở cấp độ giao thức lan truyền mà không cần di chuyển cho mỗi pool.
disable_create_poollà đòn bẩy loại bỏ. Khi một tầng phí bị loại bỏ, multisig giao thức đặt cờ này — các pool hiện có tiếp tục hoạt động nhưng không có pool mới nào có thể chọn tầng đó.protocol_owner/fund_ownerlà những người ký cho các lệnh gọi thu phí. Đặt chúng thành multisig là cách để gating rút phí. Chúng KHÔNG phải là địa chỉ đích cho chính các phí; đó làprotocol_fee_destination/fund_fee_destinationtrên cùng tài khoản.
AmmConfig — các tham số phí của nó là cho mỗi pool, được mã hóa cứng tại thời điểm tạo. Farm và LaunchLab có các tương đương riêng của chúng (FarmConfig, LaunchConfig) được đề cập trong các chương tương ứng của chúng.
Một bảng hoàn chỉnh về ai có thể thay đổi cái gì nằm trong security/admin-and-multisig. Phân chia phí hiện tại hướng tới người dùng nằm trong ray/protocol-fees.
3. Phân chia phí giao thức / quỹ / người tạo
Mỗi phí swap CPMM và CLMM được chia thành tối đa bốn điểm đích trên đường đi:- Phí giao dịch tích lũy vào pool. Phí được loại bỏ khỏi phía đầu vào của swap và số tiền sau phí là những gì toán học sản phẩm hằng số thấy. Đây là ý nghĩa của “LP kiếm phí” —
ktăng lên và giá trị token ngụ ý trên mỗi LP cũng vậy. - Các phần giao thức/quỹ/người tạo được khấu trừ từ tích lũy phía LP đó vào các tài khoản bộ đếm cho mỗi pool. Chúng nằm trên trạng thái pool (
protocol_fees_token{0,1},fund_fees_token{0,1}, v.v.) cho đến khi ai đó gọi lệnh thu thập tương ứng. Chúng không rời khỏi các kho của pool cho đến lúc đó; từ quan điểm của swap, chúng vẫn “trong pool”. - Thu thập di chuyển chúng ra. Các đường dẫn giao thức và quỹ yêu cầu người ký
protocol_owner/fund_ownertương ứng từAmmConfig. CPMM sử dụng các phí người tạo hoặc đường dẫnCollectCreatorFeeđược ký bởi người tạo hoặcCollectCreatorFeePermissionless, mà bất kỳ người trả tiền nào cũng có thể kích hoạt nhưng cố định các điểm đích thành ATA chính tắc của người tạo.
- Các phần trăm phân chia là ngoài phí giao dịch, không phải ngoài giao dịch. Phí giao dịch 0,25% với cổ phần giao thức 12% có nghĩa là giao thức nhận
0,25% × 12% = 0,03%của giao dịch — không phải 12% của giao dịch. - Phí người tạo chỉ tồn tại trên các pool đã tốt nghiệp LaunchLab. Các pool CPMM/CLMM tiêu chuẩn có phân chia ba chiều (LP / giao thức / quỹ). LaunchLab thêm một khe thứ tư được định tuyến cho bất kỳ ai đã phát hành token, được cấu hình tại
Initializevà bất biến. - AMM v4 chỉ chia hai chiều, được mã hóa cứng cho mỗi pool: LP và giao thức. Không có khe quỹ, không có khe người tạo.
- Quỹ so với giao thức — cả hai đều là điểm đích kho giao thức, nhưng chúng có những người ký khác nhau và những mục đích sử dụng khác nhau.
protocolvề mặt lịch sử tài trợ hoạt động;fundlà kho dài hạn hơn. Phân chia giữa hai cái này chính nó là có thể điều chỉnh được.
reference/fee-comparison và ray/protocol-fees.
4. Tài khoản quan sát (vòng đệm TWAP)
Cả CPMM và CLMM đều duy trì một tài khoản quan sát cho mỗi pool — một vòng đệm kích thước cố định của các mẫu(timestamp, cumulative_price) mà các hợp đồng khác có thể sử dụng để dẫn xuất TWAP kháng thao tác.
- Mỗi swap gọi
update_observation. Chương trình đọc giá hiện tại, nhân với số giây trôi qua kể từ quan sát trước đó, và thêm nó vào bộ đếm tích lũy. Mục nhập mới ghi đè khe cũ nhất (kiểu vòng đệm). - TWAP trên một cửa sổ =
(cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start]). Người tiêu dùng chọn hai quan sát ngoặc cửa sổ mong muốn và chia. - Raydium chính nó không sử dụng TWAP để định giá. Toán học AMM đọc các dự trữ spot trực tiếp. Quan sát là một tính ngoại tại — Raydium trả chi phí viết chúng để các hợp đồng khác có thể đọc.
- AMM v4 không có tài khoản quan sát. Nó cũ hơn thiết kế ObservationState; những người tích hợp muốn TWAP v4 phải tính toán một cái ngoài chuỗi từ lịch sử nhật ký.
products/cpmm/accounts và products/clmm/accounts.
5. REST API + SDK + IDL
Bề mặt ngoài chuỗi là một bộ ba duy nhất được sử dụng bởi mọi sản phẩm:- REST API —
https://api-v3.raydium.io. Một chế độ xem được lập chỉ mục chủ yếu đọc của tất cả trạng thái trên chuỗi cộng với một công cụ báo giá. Một máy chủ, một lược đồ. - TypeScript SDK —
@raydium-io/raydium-sdk-v2trên NPM. Xây dựng và ký giao dịch cho mọi chương trình. Nói chuyện với API để lấy báo giá/siêu dữ liệu, nói chuyện với Solana RPC để làm mới trạng thái trước ký. - Đăng ký IDL — Anchor IDL cho mọi chương trình được xuất bản nằm trong kho
raydium-idl(một JSON cho mỗi chương trình: CPMM, CLMM, LaunchLab). SDK TypeScript tiêu thụ các IDL này nội bộ; các khách hàng Rust / Python hạ lưu tái tạo từ các tệp tương tự.
Một sai lầm phổ biến là cung cấp đầu ra REST API trực tiếp vào một giao dịch. Đừng — tìm nạp lại trạng thái pool/vị trí liên quan từ Solana RPC trong khe mà bạn đang ký. SDK làm điều này tự động cho các luồng bên thứ nhất; nếu bạn bỏ qua SDK, bạn phải tự làm.
Tài liệu tham khảo đầy đủ nằm trong
sdk-api/, với bề mặt IDL cụ thể trong sdk-api/anchor-idl.
6. Indexer và nguồn cấp giá
REST API được cung cấp bởi indexer của Raydium, nó đăng ký nhật ký chương trình từ một đội Solana RPC và ghi các bản ghi không chuẩn hóa vào một kho SQL. Hai hệ quả cho những người tích hợp:- Indexer là thứ duy nhất “biết về” trạng thái liên chương trình. Ánh xạ một pool CPMM tới đối tác CLMM của nó, tính toán một số khối lượng 24h trên các phiên bản chương trình, nhận một farm liên kết với một mint LP — tất cả đều là công việc indexer. Các chương trình chính nó không làm điều đó.
- Thời gian chết của indexer là thời gian chết của API. Nếu API trả về dữ liệu cũ hoặc trống, indexer là nghi phạm. Trạng thái trên chuỗi không bị ảnh hưởng; những người tích hợp có RPC và SDK riêng của họ có thể tiếp tục giao dịch.
priceUsd trên hầu hết các phản hồi pool; điều này được tính toán ngoài chuỗi từ một ảnh chụp nhanh của chế độ xem indexer về các dự trữ pool và một giá tham chiếu được trích dẫn (các pool USDC làm trục chính chung). Nó đủ tốt cho UI; nó không an toàn để sử dụng làm oracle trên chuỗi. Sử dụng TWAP quan sát cho điều đó.
Cái gì không được chia sẻ
Đáng liệt kê rõ ràng, vì những người đọc mới thường giả định chia sẻ nhiều hơn những gì tồn tại:- Các chương trình không gọi nhau. Một swap CPMM không bao giờ CPI vào CLMM hoặc AMM v4. Chương trình duy nhất soạn nhiều AMM là chương trình AMM Routing — và chương trình đó chính nó là mỏng, chỉ phát ra CPI vào mỗi AMM theo thứ tự.
- Không có cơ quan nâng cấp dùng chung trên các chương trình. Mỗi chương trình trên chuỗi có khóa nâng cấp chương trình riêng của nó (multisig 3/4 cộng với timelock 24h). Chúng không được liên kết.
- Không có trạng thái dùng chung giữa farm và AMM. Một farm không biết LP nào mà nó stake là từ một pool CPMM, một CLMM-position-NFT-mint, hay một token SPL không liên quan. Chương trình farm coi mint staking là mờ.
- Không có phụ thuộc oracle. Định giá là dự trữ trên chuỗi. Không có dự phòng Pyth/Switchboard; AMM không kiểm tra oracle trước khi xóa.
Con trỏ
protocol-overview/architecture— sơ đồ chính tắc cho thấy cách các phần này soạn.protocol-overview/versions-and-migration— cách các quy ước phát triển trên các phiên bản chương trình.security/admin-and-multisig— ai kiểm soát các khóa đằng sau AmmConfigs.reference/fee-comparison— ma trận tỷ lệ phí cho mỗi sản phẩm.reference/program-addresses— ID chương trình chính tắc.
- Raydium SDK v2 — nguồn sự thật cho các seed PDA, bố cục tài khoản và định nghĩa IDL.
- Đăng ký Raydium IDL — Anchor IDL.
- Các trang tài khoản theo từng sản phẩm được trích dẫn nội tuyến ở trên.

