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.
Mỗi chương trình Raydium đều có ít nhất một vai trò đặc quyền — một khóa có thể nâng cấp chương trình, tạo config mới hoặc rút phí giao thức. Hạn chế tối đa phạm vi tác động của các vai trò này (và bảo vệ chúng bằng multisig có thời gian khóa) là biện pháp phòng thủ chính khi một admin bị xâm phạm. Trang này liệt kê đầy đủ các vai trò và cách chúng được bảo mật trong thực tế.
Vai trò theo từng chương trình
AMM v4
| Vai trò | Địa chỉ quyền hạn | Có thể làm gì |
|---|
| Nâng cấp chương trình | Squads multisig (3/4) | Triển khai bytecode chương trình mới |
| Pool admin | Treasury multisig (3/5) | Bật/tắt trạng thái pool, cập nhật phí trên các pool hiện có |
CPMM
| Vai trò | Địa chỉ quyền hạn | Có thể làm gì |
|---|
| Nâng cấp chương trình | Squads multisig (3/4) | Triển khai bytecode chương trình mới |
| AmmConfig admin | Treasury multisig (3/5) | Tạo AmmConfig mới (các mức phí); bật/tắt config hiện có |
| Người nhận phí tạo pool | Treasury multisig (3/5) | Nhận khoản phí một lần khi tạo pool |
CLMM
| Vai trò | Địa chỉ quyền hạn | Có thể làm gì |
|---|
| Nâng cấp chương trình | Squads multisig (3/4) | Triển khai bytecode chương trình mới |
| AmmConfig admin | Treasury multisig (3/5) | Tạo/chỉnh sửa AmmConfig |
| DynamicFeeConfig admin | Treasury multisig (3/5) | CreateDynamicFeeConfig / UpdateDynamicFeeConfig — hiệu chỉnh các mức phí động mà lệnh gọi CreateCustomizablePool có thể chọn sử dụng |
limit_order_admin (toàn chương trình) | Ví hot vận hành off-chain, không phải multisig | Xử lý và đóng các lệnh giới hạn thay mặt chủ sở hữu. Khóa keeper là một hằng số duy nhất áp dụng toàn chương trình (giá trị khác nhau trên mainnet và devnet), được kiểm tra qua signer == limit_order.owner || signer == limit_order_admin::ID khi thực thi SettleLimitOrder / CloseLimitOrder. Đầu ra luôn về ATA của chủ sở hữu gốc; keeper không thể chuyển hướng quỹ, chỉnh sửa hoặc mở lệnh mới. |
limit_order_admin là một vai trò vận hành được giới hạn phạm vi một cách có chủ ý. Vai trò này tồn tại để một keeper off-chain có thể xử lý các lệnh đã khớp mà không cần chủ sở hữu phải trực tuyến. Khóa keeper là khóa hot (lưu trên VM của keeper) và được thay thế độc lập với các multisig bên trên. Cụ thể, quyền hạn của keeper chỉ giới hạn ở:
SettleLimitOrder — chuyển đầu ra đã khớp của một lệnh vào ATA của chủ sở hữu theo giá giới hạn của lệnh.
CloseLimitOrder — đóng tài khoản của lệnh đã xử lý xong để thu hồi rent (rent về tay chủ sở hữu lệnh).
Keeper không thể gọi OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder, chỉnh sửa bất kỳ trường nào của pool, hay ký cho bất kỳ lệnh nào khác — các kiểm tra này được thực thi on-chain thông qua ràng buộc seed và has_one trong struct Accounts của lệnh. Trong trường hợp xấu nhất, một keeper bị xâm phạm chỉ có thể không hoạt động (các lệnh sẽ nằm chờ đến khi chủ sở hữu tự xử lý) hoặc xử lý/đóng các lệnh có thể khớp theo thứ tự không như mong muốn; nó không thể chuyển quỹ của người dùng đi đâu khác ngoài nơi mà chủ sở hữu đã ủy quyền.
Farm v6
| Vai trò | Địa chỉ quyền hạn | Có thể làm gì |
|---|
| Nâng cấp chương trình | Squads multisig (3/4) | Triển khai bytecode chương trình mới |
| Người tạo farm (theo từng farm) | Ví của người tạo farm | Nạp tiền vào vault phần thưởng, gia hạn lịch phát thưởng, thu hồi phần thưởng chưa dùng |
Từng farm không có admin giao thức — người tạo farm chỉ kiểm soát farm của họ, và quyền hạn của người tạo có giới hạn (không thể tịch thu LP đang stake của người dùng, không thể thay đổi mint staking).
LaunchLab
| Vai trò | Địa chỉ quyền hạn | Có thể làm gì |
|---|
| Nâng cấp chương trình | Squads multisig (3/4) | Triển khai bytecode chương trình mới |
| Người tạo launch (theo từng launch) | Ví của người tạo launch | Thu phí người tạo sau khi tốt nghiệp; rút phần dư còn lại của đường cong chưa tốt nghiệp |
Các launch không có admin giao thức có thể thay đổi đường cong hay tịch thu quỹ đã huy động.
Quyền nâng cấp chương trình
Các chương trình của Raydium sử dụng cơ chế nâng cấp BPF Loader v3 tiêu chuẩn của Solana. Quyền nâng cấp cho tất cả các chương trình thuộc về Squads multisig 3/4.
Lý do chọn 3/4: đủ người ký để một lần xâm phạm duy nhất là không đủ, nhưng vẫn đủ ít để việc phối hợp nâng cấp hợp lệ là khả thi. Bốn quyền hạn là các thiết bị lạnh air-gap độc lập do các thành viên cốt lõi của nhóm nắm giữ. Việc ký tuần tự ngăn chặn các phê duyệt song song trên cùng một giao dịch; các giao dịch có thời hạn hết hạn cố định. Các hoạt động multisig được xem xét định kỳ cùng với Chương trình STRIDE của Solana (Asymmetric Research).
Xóa quyền nâng cấp
Raydium chưa đặt quyền nâng cấp của bất kỳ chương trình nào về null. Giao thức hoạt động theo nguyên tắc rằng các chương trình cần có khả năng nâng cấp (để vá lỗi, bổ sung tiện ích như Token-2022, khắc phục lỗi tích hợp). Đánh đổi: người dùng tin tưởng rằng multisig 3/4 chỉ triển khai các bản nâng cấp đã được kiểm duyệt kỹ lưỡng.
Với những người dùng muốn có lựa chọn bất biến, chương trình AMM v4 cũ đã ổn định từ lần audit cuối cùng; không có bản nâng cấp nào trong 18 tháng. Luồng code này thực tế đã bị đóng băng dù quyền hạn vẫn còn tồn tại.
Quyền AmmConfig
Mỗi lần tạo AmmConfig mới đều cần được phép — multisig treasury 3/5 phê duyệt các mức phí và tick spacing mới. Các pool hiện có tham chiếu AmmConfig của chúng theo PDA; mức phí của pool là bất kỳ giá trị nào mà AmmConfig quy định.
Admin có thể thay đổi AmmConfig hiện có không? Có, về mặt kỹ thuật. updateAmmConfig có thể được gọi bởi admin. Trong thực tế, việc sửa đổi các AmmConfig đã triển khai được tránh vì điều này sẽ thay đổi kinh tế học của tất cả các pool đang dùng config đó một cách âm thầm. Chính sách của giao thức là tạo AmmConfig mới cho mọi thay đổi và tiến hành migration.
Admin có thể đánh cắp phí giao thức thông qua config không? Không — AmmConfig chứa các tham số phí nhưng không chứa địa chỉ nhận phí giao thức; đó là một địa chỉ bất biến riêng biệt theo từng pool.
Thu phí giao thức
Một phần phí swap (thường là 3–12 bps trong tổng phí swap 25 bps, tùy theo config) được tích lũy vào vault phí giao thức. Multisig có thể rút các khoản phí đã tích lũy này. Người dùng sẽ không thấy số dư LP của mình thay đổi vì điều này — đây là phần được phân bổ trước cho giao thức, không phải tiền của LP.
Quyền người tạo farm
Farm v6 trao cho người tạo khả năng:
- Nạp tiền vào vault phần thưởng (thêm token).
- Gia hạn lịch phát thưởng (đẩy thời gian kết thúc về sau).
- Gọi
withdrawReward sau thời gian kết thúc để thu hồi số dư vault chưa dùng.
Người tạo farm không thể:
- Rút LP đang stake của người dùng.
- Thay đổi mint staking.
- Thay đổi tỷ lệ phát thưởng hồi tố (chỉ áp dụng cho tương lai thông qua
setRewards).
- Đóng băng việc thu hoạch của người dùng.
Trong trường hợp xấu nhất, một người tạo farm có ý đồ xấu chỉ có thể không nạp đủ tiền vào vault khiến farm cạn kiệt; vốn gốc đang stake của người dùng luôn được bảo toàn.
Cấu hình Squads multisig
Raydium vận hành hai Squads multisig riêng biệt cho các bề mặt rủi ro khác nhau. Cả hai đều có thể được kiểm tra on-chain qua giao diện Squads Protocol.
| Multisig | Ngưỡng | Timelock | Phạm vi |
|---|
| Nâng cấp chương trình | 3/4 | 24 giờ | Quyền hạn duy nhất để triển khai bytecode chương trình mới cho AMM v4, CPMM, CLMM, LaunchLab, Lock, AMM Routing, Stable Swap và các chương trình Farm/Staking cũ. Xem tại app.squads.so/.../FytDr…ceZQK. |
| Treasury | 3/5 | không có | Tài sản treasury, doanh thu giao thức, chi phí vận hành. Cũng nắm giữ quyền admin chương trình hạn chế của Raydium (tạo AmmConfig, thu phí giao thức, cấu hình tham số pool) trong thời điểm hiện tại. Xem tại v3.squads.so/dashboard/RVha…dHdtYz09. |
Các đặc tính vận hành của multisig nâng cấp:
- Timelock 24 giờ trên mọi giao dịch. Một bản nâng cấp được phê duyệt hôm nay sẽ chỉ thực thi sớm nhất 24 giờ sau, cho người dùng thời gian để phản ứng.
- Ký bằng thiết bị lạnh air-gap. Các thiết bị lạnh đã bị tháo card mạng vật lý; chúng chỉ kết nối với ví phần cứng và đọc dữ liệu giao dịch qua mã QR từ một thiết bị hot riêng biệt.
- Ký tuần tự. Chỉ sau khi một thiết bị lạnh tạo và ký xong giao dịch thì thiết bị lạnh tiếp theo mới bắt đầu quy trình ký của mình — ngăn chặn các chữ ký xung đột hoặc song song trên cùng một giao dịch.
- Thời hạn giao dịch. Mọi giao dịch đều có cửa sổ hết hạn cố định, vì vậy các giao dịch cũ sẽ tự động bị vô hiệu.
- TOTP + xác thực khóa vật lý trên các thiết bị hot dùng để khởi tạo giao dịch và phát sóng on-chain.
- Hàng đợi giao dịch công khai. Bất kỳ ai cũng có thể theo dõi các bản nâng cấp đang chờ xử lý trên giao diện Squads.
Multisig treasury không có timelock — phạm vi của nó hẹp hơn và các hoạt động thường ngày (tạo AmmConfig, thu phí) cần thực hiện trong ngày. Multisig treasury cũng nắm giữ quyền admin chương trình hạn chế được liệt kê trong các bảng theo từng chương trình ở trên; đây là sắp xếp tạm thời và được xem xét định kỳ cùng với các đối tác bảo mật của dự án.
Xác minh quyền hạn on-chain
Cách đơn giản nhất để xác minh quyền nâng cấp hiện tại của một chương trình:
solana program show <PROGRAM_ID>
Đầu ra bao gồm:
Program Id: CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: <ProgramDataPDA>
Authority: <EXPECTED_MULTISIG_ADDRESS>
Last Deployed In Slot: <slot>
Data Length: <n> bytes
Nếu Authority không phải là địa chỉ Squads multisig dự kiến, có điều gì đó không ổn. Raydium công bố các địa chỉ quyền hạn dự kiến tại reference/program-addresses.
Để lấy vai trò AmmConfig / pool admin, hãy tải tài khoản on-chain và giải mã:
const config = await raydium.cpmm.getAmmConfig(configPda);
console.log("AmmConfig admin:", config.admin.toBase58());
// Expected: 3/5 treasury multisig.
Lịch sử thay đổi quyền hạn
| Ngày | Chương trình | Thay đổi |
|---|
| 2022-12 | AMM v4 | Quyền nâng cấp được chuyển từ single-sig sang multisig 3/4 sau sự cố |
| 2023-02 | Tất cả chương trình | Tất cả vai trò vận hành được hợp nhất dưới multisig treasury 3/5 |
| 2023-11 | CLMM | Thêm multisig thứ hai cho các thao tác chỉ liên quan đến phần thưởng để giảm thiểu rủi ro |
| 2024-05 | CPMM | Triển khai ban đầu với quyền multisig từ ngày đầu tiên |
Lưu ý dành cho người dùng
Bạn nên làm gì với tư cách là người dùng/LP/tích hợp viên?
- Kiểm tra quyền nâng cấp trước khi phân bổ số tiền lớn. Xác nhận rằng nó khớp với multisig đã được ghi lại.
- Theo dõi hoạt động multisig. Giao diện Squads hiển thị các giao dịch đang chờ; một bản nâng cấp được lên lịch cho bạn 24 giờ để rút ra nếu bạn không đồng ý với thay đổi.
- Chiến lược hoàn trả có tính đến timelock. Nếu bạn đang chạy một auto-compounder, hãy đảm bảo đường rút khỏi vị thế của bạn không yêu cầu một lệnh đang được thay đổi.
- Đừng giả định chương trình là bất biến. Mọi chương trình Raydium đều có thể được nâng cấp; hãy lên kế hoạch trước cho điều này.
Các bẫy thường gặp cho tích hợp viên
1. Cache địa chỉ quyền hạn
Nếu bạn hardcode địa chỉ quyền nâng cấp hoặc multisig admin trong code và nó sau đó được thay đổi, việc xác minh của bạn sẽ thất bại. Hãy lấy từ reference/program-addresses lúc runtime hoặc làm mới định kỳ.
2. Giả định AmmConfig là ổn định
Một AmmConfig mới có thể được tạo bất cứ lúc nào. Aggregator/router của bạn nên tải lại danh sách config đầy đủ định kỳ (mỗi giờ là đủ).
3. Rủi ro từ người tạo farm có ý đồ xấu
Nếu bạn đang gửi tiền vào một farm có uy tín thấp, người tạo có thể kết thúc farm sớm và thu hồi vault phần thưởng (giả sử chưa có người dùng nào stake). Khi người dùng đã stake, quyền lợi tỷ lệ sẽ được chương trình thực thi; việc thu hồi chỉ lấy được phần còn lại sau khi đã phân phối hợp lý.
Tài liệu tham khảo
Nguồn tham khảo: