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 →
Raydium không xuất bản SDK Python chính thức. Các mẫu ở đây kết hợp ba thư viện cộng đồng được bảo trì tốt:
solders (các nguyên thủy Solana liên kết Rust), solana-py (RPC client), và anchorpy (các trình xây dựng hướng dẫn Anchor từ IDL). Tổ hợp này bao gồm mọi thứ mà SDK TS làm được; nó chỉ là kém hoàn thiện hơn.Môi trường
anchorpy định kỳ chậm hơn phiên bản anchor-lang; với một chương trình Raydium được triển khai gần đây, hãy xác minh IDL biên dịch dưới anchorpy đã khóa của bạn trước khi ghi lại.
Kết nối và keypair
AsyncClient là biến thể async; Client đồng bộ có sẵn cho các script nhanh nhưng async được ưa thích cho bất kỳ thứ gì gửi nhiều yêu cầu.
Đọc trạng thái pool
Hầu hết mục đích sử dụng sản xuất đọc trạng thái pool được giải mã từ REST API của Raydium (xemsdk-api/rest-api) thay vì giải mã dữ liệu trên chuỗi thủ công — nó đơn giản hơn và độ trễ chấp nhận được cho hầu hết các trường hợp sử dụng.
src/raydium/cpmm/layout.ts (nguồn TS); chuyển đổi sang construct khi cần. anchorpy có thể làm điều này tự động với IDL — xem bên dưới.
Xây dựng và gửi swap
Để đơn giản, sử dụng điểm cuối server-built-transaction của Raydium. Server trả về giao dịch sẵn sàng ký; bạn chỉ cần thêm chữ ký của mình:Xây dựng swap phía client (qua anchorpy)
Để độ trễ thấp hơn hoặc khi bạn không thể tiếp cận API của Raydium (các vùng bị cấm, thiết lập không có kết nối mạng):
anchorpy không tự động derivation chúng.
Kiến trúc bot điển hình
Một cấu trúc bot Raydium Python thường gặp:- RPC provider. RPC mainnet công cộng giới hạn tỷ lệ tích cực. Sử dụng nhà cung cấp chuyên dụng (Helius, QuickNode, Triton) cho lưu lượng truy cập liên tục.
- WebSocket cho trạng thái pool.
client.account_subscribe(pool_id)đẩy cập nhật trên mỗi thay đổi trạng thái. Chặt hơn nhiều so với bỏ phiếu. - Nhà cung cấp phí ưu tiên. Helius có điểm cuối
getPriorityFeeEstimate; Triton có của riêng họ. Định kích thước phí của bạn dựa trên phân vị thứ 75 của các phí gần đây trên chương trình mục tiêu. - Gói cho các giao dịch nhạy cảm với MEV. Định tuyến qua công cụ khối của Jito nếu bạn không thể chịu được rủi ro sandwich. Thư viện Python:
jito-sdk-python(của bên thứ ba, chất lượng thay đổi).
Đọc trạng thái farm
.account["X"].decode(bytes) của anchorpy cung cấp một đối tượng Python gốc phù hợp với struct IDL.
Những cạm bẫy
1. Xử lý decimal
float gốc của Python là IEEE-754 double; các số tiền ở mint 9-decimal (1 SOL = 1e9 unit) giữ nguyên chính xác nhưng tỷ lệ và sản phẩm mất độ chính xác. Sử dụng int (solders trả về int cho tất cả các trường số tiền) và định tuyến qua decimal.Decimal cho bất kỳ số học giá nào.
2. Lý luận dựa trên slot so với dựa trên timestamp
Một số phiên bản farm sử dụng bộ đếm slot; LaunchLab sử dụng timestamp.solana-py trả về slot trong các phản hồi RPC, nhưng chuyển đổi slot → timestamp mất mát (thay đổi theo lịch trình leader). Nếu bạn cần thời gian tường thực, gọi get_block_time(slot) một cách rõ ràng.
3. Cạn kiệt connection pool
AsyncClient mở một kết nối HTTP trên mỗi yêu cầu theo mặc định. Dưới tải cao, tái sử dụng các phiên httpx.AsyncClient và đặt limits=httpx.Limits(max_connections=100) thích hợp.
4. Giới hạn kích thước giao dịch
Các giao dịch được xây dựng bằng Python không nhỏ hơn những cái được xây dựng bằng TS — giới hạn 1232 byte áp dụng như nhau. Sử dụng giao dịch V0 (bảng tra cứu địa chỉ) cho bất kỳ thứ gì định tuyến qua hơn ~2 pool.Con trỏ
sdk-api/rest-api— các điểm cuối HTTP được sử dụng ở trên.sdk-api/anchor-idl— nơi lấy IDL choanchorpy.integration-guides/routing-and-mev— các mẫu gói Jito.

