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 →
Biểu ngữ phiên bản.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Cluster: Solana
mainnet-beta - Program ID: xem
reference/program-addresses - Xác minh lần cuối: 2026-09-09 với SDK
0.2.64-alphasource,raydium-sdk-V2-demo/src/launchpad, và source của chương trìnhraydium-launch
package.json của bạn. Giao diện bonding-curve đã phát triển 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 trongraydium-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)
Hầu hết các yếu tố kinh tế của launch không phải là các đối số — chúng đến từ GlobalConfig mà bạn liên kết thông qua configId, và SDK điền phần còn lại từ các tham số mặc định của API. Bạn truyền danh tính của mint, config để liên kết, và (tùy chọn) một lần mua đầu tiên:
- Không có đối số
curveType,graduationFractionBps,initialK,quoteMint,openTime,feeshoặcpostGraduationLpPolicy. Hình dạng curve và quote mint là các thuộc tính củaGlobalConfigmà bạn liên kết; tỷ lệ phí nằm trênGlobalConfigvàPlatformConfig; xử lý LP tại graduation là một cài đặtPlatformConfig. Xemproducts/launchlab/instructionsđể biết chính xácInitializeV2chấp nhận cái gì. symboldài hơn 10 ký tự vàuritrống đều bị từ chối phía client trước bất kỳ RPC nào.- Truyền
transferFeeExtensionParamschuyển builder sangInitializeWithToken2022và buộcmigrateTypethành"cpmm". - Builder trả về một mảng
transactions;createOnly: falsethêm giao dịch mua đầu tiên. Luônexecute({ sequentially: true })— mint phải tồn tại trước khi lần mua được thực hiện.
Lấy trạng thái launch
Nguồn:src/launchpad/poolInfo.ts
Không có getLaunchById. Pool id là một PDA của (programId, mintA, mintB), và getRpcPoolInfo trả về PoolState được giải mã với configInfo được liên kết của nó:
getRpcPoolsInfo({ poolIdList }) là dạng batch và trả về một poolInfoMap được khóa bằng pool id — sử dụng nó cho các chế độ xem danh mục thay vì lặp. Nếu bạn muốn giải mã các tài khoản thô tự mình, LaunchpadPool.decode và LaunchpadConfig.decode được xuất.
Mua — quote chính xác vào
Nguồn:src/launchpad/buy.ts
Trợ giúp quote ngoài chuỗi là Curve.buyExactIn, một phương thức tĩnh trên lớp Curve được xuất — không phải một phương thức trên raydium.launchpad. Builder giao dịch là buyToken. Cả hai đều cần tỷ lệ phí của nền tảng, nằm trên một tài khoản PlatformConfig riêng biệt:
minMintAAmount một cách rõ ràng thay vì slippage; bỏ qua cả hai và SDK sẽ tính toán giới hạn từ dữ liệu RPC trực tiếp. shareFeeRate không được vượt quá poolInfo.configInfo.maxShareFeeRate, và nó chỉ áp dụng khi bạn cũng truyền một shareFeeReceiver.
Mua — base chính xác ra
Builder làbuyTokenExactOut, và các đối số số lượng là outAmount (base bạn muốn) và maxBuyAmount (quote bạn sẽ chi tối đa). Curve.buyExactOut({ poolInfo, amountA, ... }) là xem trước ngoài chuỗi phù hợp.
outAmount bằng không phía client, và chương trình sẽ hoàn nguyên nếu curve đã di chuyển đủ để yêu cầu quote vượt quá maxBuyAmount.
Bán
Nguồn:src/launchpad/sell.ts
Builder là sellToken (sellTokenExactOut cho biến thể exact-quote-out), với sellAmount và một minAmountB tùy chọn. Curve.sellExactIn({ poolInfo, amountA, ... }) xem trước nó.
real_a bằng sellAmount trả về quote_out bằng diện tích tích phân dưới curve giữa real_a − sellAmount và real_a, trừ phí bán. sellAmount phải lớn hơn không — builder từ chối không trước bất kỳ RPC nào.
Graduation
Những ví đó được vận hành bởi crank graduation của Raydium, vì vậy trong thực tế migration sẽ được thực hiện trong vài giây sau khi ngưỡng bị vượt qua bất kể ai thực hiện lần mua cuối cùng. Từ phía integrator, điều duy nhất cần làm là coi sự chuyển đổi trạng thái như một sự kiện nhanh: pollgetRpcPoolInfo (hoặc đăng ký qua gRPC, bên dưới) và chuyển UI của bạn từ curve sang pool CPMM kết quả khi status thay đổi.
Xem products/launchlab/instructions để biết danh sách tài khoản, phí migration, và cách LP được chia tại graduation.
Thu thập phí creator
Nguồn:src/launchpad/claimCreatorFee.ts (mint đơn) và collectAllCreatorFees.ts (batch)
Phương thức là claimCreatorFee (và claimMultipleCreatorFee cho dạng batch). Nó được khóa bằng quote mint, không phải bằng một launch — một cuộc gọi quét phí creator tích lũy của người ký trong mint đó trên tất cả các launch của họ:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.
Theo dõi một 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ư thế này:getRpcPoolInfo trên bộ hẹn giờ 10 giây là tốt cho một launch duy nhất. Đối với một indexer, hãy sử dụng đăng ký gRPC bên dưới thay thế — getRpcPoolsInfo({ poolIdList }) batch, nhưng poll hàng trăm pool vẫn tiêu tốn tín dụng RPC mà không có lợi ích.
Theo dõi configs và pools 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 GlobalConfig và PoolState 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 một launch, điều mà phiên bản 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 lấy mint nào cả. Kiểm tra toàn bộ byte so với0— điều này đã đủ trong khi quote mint chỉ là legacy — sẽ đọc sai 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 đó: một
GlobalConfiglưu trữ địa chỉ quote mint của nó và không có cờ chương trình, vì vậy demo sẽ đọ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.
create so với update được suy ra từ bộ nhớ cache của demo, được gieo hạt khi 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”.
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ỉ là phía TS). Nếu bạn làm:- Crate là
raydium-launchpad(tên libraydium_launchpad), phiên bản0.2.0, và nó có tiếp xúc với tính năngcpi. Không córaydium_launchlab. - Nó không được xuất bản trên crates.io — phụ thuộc vào nó bằng git revision, cách tương tự như các crate chương trình Raydium khác.
- Các điểm vào CPI được đặt tên theo các hướng dẫn trên chuỗi, không phải theo các phương thức TypeScript của SDK:
buy_exact_in,buy_exact_out,sell_exact_in,sell_exact_out,claim_creator_fee,create_vesting_account,claim_vested_token.migrate_to_amm/migrate_to_cpswapđược gated người ký cho các ví migrationGlobalConfigvà không thể gọi từ một chương trình integrator.
sdk-api/rust-cpi để biết các quy tắc ghim crate — đặc biệt là phân tách phiên bản Anchor, quyết định xem một crate có thể CPI vào cả LaunchLab và CLMM hay không.
Những cạm bẫy
- Nhầm lẫn tên hướng dẫn trên chuỗi với tên phương thức SDK. Chương trình có
buy_exact_in/sell_exact_in; SDK cóbuyToken/sellToken.buyExactInvàsellExactInchỉ tồn tại dưới dạng phương thức tĩnh trênCurve, và chúng tính toán một quote — chúng không xây dựng một giao dịch. - Quên
extraSigners.createLaunchpadtạo base mint từ một keypair mà bạn tạo, vì vậy keypair đó phải ký. Bỏ quaextraSigners: [pair]và giao dịch sẽ thất bại xác minh chữ ký. - Không chọn quote mint. Bạn không truyền một. Quote mint là một thuộc tính của
GlobalConfigmà bạn liên kết thông quaconfigId—getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Để launch chống lại một quote mint khác, liên kết một config khác;raydium.api.fetchLaunchConfigs()liệt kê các config có sẵn với các tham số mặc định của chúng. - Kích thước metadata. Các chuỗi
uridài đẩy Metaplex CPI vượt quá ngân sách. Giữuridưới ~200 ký tự — hầu hết metadata JSON được lưu trữ trên CDN phù hợp dễ dàng.symbolbị giới hạn cứng ở 10 ký tự. - Coi graduation như một cuộc đua mà bạn có thể tham gia. Nó không phải — xem cảnh báo ở trên. UI của bạn vẫn nên coi các chuyển đổi
statusnhư các sự kiện nhanh, vì crank của Raydium sẽ thực hiện migration trong vài giây sau khi ngưỡng bị vượt qua.
Tiếp theo đi đâu
products/launchlab/bonding-curve— toán học curve.products/cpmm/code-demos— điều cần làm với pool kết quả.user-flows/launch-token-launchlab— hướng dẫn launch-a-token end-to-end, bao gồm các bước ngoài chuỗi.
- Raydium SDK v2
- Nguồn chương trình Raydium LaunchLab

