Skip to main content
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 →
Thông tin phiên bản.
  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • Cluster: Solana mainnet-beta
  • Program ID: xem reference/program-addresses
  • Xác minh lần cuối: 2026-04
Ghim phiên bản SDK trong package.json của bạn. Giao diện bonding-curve đã thay đổi giữa các bản phát hành nhỏ.

Thiết lập

Các demo ở đây phản ánh các tệp trong raydium-sdk-V2-demo/src/launchpad. Bootstrap tuân theo config.ts.template của repo demo:

Tạo một launch

Nguồn: src/launchpad/createMint.ts (và createBonkMintApi.ts cho biến thể Bonk do API điều khiển)
Ghi chú:
  • initialK là hệ số tỷ lệ cho đường cong bậc hai. Điều chỉnh nó để nhắm mục tiêu một giá CPMM mở cụ thể tại graduation. Xem products/launchlab/bonding-curve để xem cách dẫn xuất.
  • SDK xử lý việc tạo base mint, metadata PDA và cả hai vault trong một giao dịch duy nhất. Nó có thể vượt quá 1232 byte nếu URI metadata dài; trong trường hợp đó, SDK chia thành hai giao dịch.
  • Sau Initialize, launch không thể giao dịch cho đến openTime. Đặt openTime trước một hoặc hai phút để giảm cơ hội cho những người front-run nắm bắt lần mua đầu tiên.

Lấy trạng thái launch

getLaunchById trả về LaunchState được giải mã cộng với phân số “tiến độ hướng tới graduation” được tính toán dưới dạng Decimal.

Mua — quote chính xác vào

Nguồn: src/launchpad/buy.ts
computeBuyBase phản ánh bộ giải Newton on-chain (đường cong bậc hai) hoặc CPMM-inverse dạng đóng (curve_type 1). Sử dụng nó để điền trường UI “Bạn nhận được”.

Mua — base chính xác ra

Hữu ích cho UI “mua chính xác X token”. Từ chối với ExceededSlippage nếu đường cong đã di chuyển đủ để yêu cầu quote hiện tại vượt quá maximumQuoteIn.

Bán

Nguồn: src/launchpad/sell.ts
Đường bán của đường cong đối xứng với đường mua: giảm base_sold bằng baseIn trả về quote_out bằng diện tích tích phân dưới đường cong giữa base_sold − baseInbase_sold, trừ phí bán.

Tự động graduation khi lần mua vượt ngưỡng

SDK xâu chuỗi một hướng dẫn Graduate bên trong giao dịch buy* khi nó phát hiện trạng thái sau mua sẽ vượt qua ngưỡng:
Graduate không cần phép, bất kỳ ai (bao gồm cả bot MEV) đều có thể cạnh tranh để đặt Graduate đầu tiên sau khi ngưỡng bị vượt qua — thường là vài giây sau, không phải vài phút. Người đầu tiên chỉ trả tiền thuê cho các tài khoản pool CPMM; họ không nhận được lợi ích nào khác.

Graduate thủ công

Nếu autoGraduate bị tắt hoặc giao dịch vượt ngưỡng thất bại, bạn có thể kích hoạt graduation riêng biệt:
Hoàn nguyên với NotAtThreshold nếu quote_reserve_real < quote_reserve_target tại thời điểm gửi. An toàn để thử lại — nỗ lực Graduate thứ hai sau khi thành công hoàn nguyên với NotActive.

Thu thập phí creator

Nguồn: src/launchpad/claimCreatorFee.ts (mint đơn) và collectAllCreatorFees.ts (hàng loạt)
Chuyển số tiền bộ đếm phí creator được tích lũy đến ATA của creator trên quote mint. Có thể gọi trước hoặc sau graduation; sử dụng nó định kỳ thay vì chờ một số dư khổng lồ tích lũy.

Theo dõi launch qua vòng đời của nó

Kết hợp lại, một script giám sát có thể trông như:

Theo dõi cấu hình và pool qua gRPC

Nguồn: src/grpc/launchpadPoolInfo.ts Đăng ký chương trình LaunchLab qua Yellowstone gRPC và ghi nhật ký mọi cập nhật GlobalConfigPoolState với chương trình token của mỗi mint. Hai bộ lọc datasize trên một đăng ký accounts tách hai loại tài khoản, vì vậy một luồng duy nhất bao gồm cả hai. Demo là tài liệu tham khảo chính xác ngắn nhất để phân loại mint của launch, mà bản phát hành quote-mint Token-2022 làm cần thiết:
  • Pools được phân loại trực tiếp từ PoolState.token_program_flag, giải mã bit0 cho base mint và bit1 cho quote mint mà không cần tìm nạp mint nào cả. Kiểm tra toàn bộ byte so với 0 — điều này đủ trong khi quote mint chỉ là legacy — sai lầm một base mint legacy là Token-2022 bất cứ khi nào quote mint là Token-2022.
  • Configs không thể được phân loại theo cách đó: GlobalConfig lưu trữ địa chỉ quote mint của nó và không có cờ chương trình, vì vậy demo đọc chủ sở hữu tài khoản mint một lần và lưu vào bộ nhớ cache cho mỗi mint.
Nó cũng kiểm tra chéo hai cái với nhau, đây là một khẳng định hữu ích để giữ trong indexer của riêng bạn. Lưu ý rằng create so với update được suy ra từ bộ nhớ cache của demo, được gieo hạt tại khởi động từ getProgramAccounts; với việc gieo hạt đó bị vô hiệu hóa, hãy đọc “create” là “lần đầu tiên được nhìn thấy trên luồng này”. Quyền truy cập gRPC không phải là một phần của bề mặt RPC công khai — xem src/grpc/README.md của repo demo.

Rust CPI

Gọi LaunchLab từ chương trình Anchor của riêng bạn là hiếm (hầu hết các tích hợp launch chỉ ở phía TS). Nếu bạn làm, chương trình vận chuyển một crate Anchor raydium_launchlab với cpi::accounts::Buy, cpi::accounts::Sell, v.v. — mẫu phản ánh các ví dụ CPI CPMM / CLMM. Xem sdk-api/rust-cpi để xem mẫu tổng quát sau khi trang này được điền đầy đủ.

Những cạm bẫy

  • Số học chia phí sai lệch một. Nếu total_share không chính xác bằng lp_share + creator_share + protocol_share, Initialize hoàn nguyên với InvalidFeeShares. Đặt totalShare bằng tổng.
  • Sử dụng quote mint không được phép. launch_config.allowed_quote_mints là một danh sách cố định; truyền bất kỳ mint nào khác hoàn nguyên. Kiểm tra với raydium.launchpad.getConfig() trước.
  • Kích thước metadata. Các chuỗi uri dài đẩy CPI Metaplex vượt quá ngân sách. Giữ uri dưới ~200 ký tự — hầu hết metadata JSON được lưu trữ trên CDN phù hợp dễ dàng.
  • Cuộc đua graduation. Các bot tự động giám sát quote_reserve_real và front-run Graduate trong một hoặc hai slot sau khi ngưỡng bị vượt qua. Điều này là lành tính — nó chỉ tốn tiền thuê của họ — nhưng điều đó có nghĩa là UI của bạn nên coi các chuyển đổi status là các sự kiện nhanh.

Tiếp theo đi đâu

Nguồn: