Skip to main content
Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.İngilizce sürümü görüntüle →
LaunchLab, sıkı bir talimat seti sunar: altı kullanıcı tarafından çağrılabilen çağrı artı bir avuç yönetici ilkel. SDK bunların tümünü sarmalamaktadır; bu sayfa, toplayıcılar, izleme araçları ve CPI gerektiren programlar için ham yüzeyi belgeler.2026-09 program yükseltmesi LaunchLab’ı Anchor 1.0.2 / Solana 3.1.10 üzerine yeniden inşa etti ve üç geçiş mekanizmasını temizledi: kullanımdan kaldırılan Initialize artık her zaman başarısız olur, MigrateToAmm üç argümanını ve her OpenBook hesabını kaybetti ve get_upgrade_timestamp kapısı birkaç kontrolü saate bağlı hale getirmiştir ve artık yoktur. Ayrıca bir yönetici talimatı olan CollectExcessLamports ekler. 2026-09-09 değişiklik günlüğü girişine bakın.

Talimat envanteri

“ExactIn/ExactOut” bölünmesi CPMM’nin SwapBaseInput / SwapBaseOutput yansıtır — zincir üzerinde bunlar biraz farklı yuvarlama ile ayrı talimat ayırıcılarıdır. Mezuniyet yolu seçimi. Her yeni InitializeV2 ve InitializeWithToken2022 çağrısı migrate_type = 1 (CPSWAP) ayarlamalıdır. Yeni bir AMM v4 bağlı havuzu başlatmaya yönelik herhangi bir girişim MigrateTypeNotMatch döndürür. amm_creator_fee_on yalnızca ortaya çıkan CPMM yaratıcı ücretinin alıntı token’ına mı yoksa her iki token’a mı uygulanacağını seçer; hedef programı seçmez. Eski Initialize artık hiçbir şekilde başlatma oluşturamaz (aşağıya bakın). MigrateToAmm bu kısıtlamadan önce migrate_type = 0 ile başlatılan mevcut bir PoolState için çağrılabilir kalır. Sürüm mevcut havuz durumunu yeniden yazmaz veya eski talimatı kaldırmaz. Alıntı tarafı token programı. Alıntı mint’i SPL Token programı veya Token-2022 tarafından sahip olunabilir. Bunu dokunuşlayan her talimat — CreateConfig, InitializeV2, InitializeWithToken2022, dört işlem talimatının tümü, CollectFee, CollectMigrateFee, ClaimCreatorFee, ClaimPlatformFee ve ClaimPlatformFeeFromVault — sahip olan programı alıntı programı hesap yuvasında alır. Hesap konumları değişmedi; yalnızca kabul edilen değer değişti. GlobalConfig.quote_mint sahibi olan programı geçin, bunu mevcut bir başlatma için PoolState.token_program_flag bit1’den okuyabilirsiniz (bkz. accounts) veya aksi takdirde mint hesabının sahibinden. Kullanımdan kaldırılan Initialize burada alakasız: alıntı programı hesabı hala SPL Token’a yazılmıştır ve 2026-09 yükseltmesinden beri talimat herhangi bir hesabı okumadan önce başarısız olur. InitializeV2 veya InitializeWithToken2022 aracılığıyla başlatın. MigrateToCpswap diğer istisnadır, ters yönde — bir mint başına bir yerine her zaman her iki programı alır. Bkz. aşağıdaki geçiş hesapları.

Initialize

2026-09 yükseltmesinden itibaren etkili olarak kaldırıldı — bu talimat her zaman başarısız olur. initialize’ın işleyicisi artık Not supported. Please use initialize_v2 instruction ve NotApproved (6000) günlüğünden başka bir şey değildir. Yalnızca ayırıcısı işgal etsin ve IDL istikrarlı bir şekil kalsın diye tutulur. (Accounts yapısı değişmemiştir, bu nedenle Anchor’ın oluşturulan doğrulaması yine de ilk olarak çalışır; işlem yine de geri alınır.)Daha önce saate bağlıydı: get_upgrade_timestamp kesintisinden üç gün sonrasına kadar çalıştı ve sonrasında başarısız oldu. Bu zaman damgası yardımcısı artık yoktur, bu nedenle başarısızlık artık koşulsuz olur. Bununla oluşturulan mevcut başlatmalar etkilenmez — MigrateToAmm veya MigrateToCpswap aracılığıyla normal şekilde işlem görür ve mezun olur, depolanan migrate_type bağlı olarak.Aşağıdaki argümanlar ve hesap listesi InitializeV2’ye aittir. Kullanımdan kaldırılan Initialize aynı 18 hesabı aynı sırada ve yalnızca ilk üç argümanı alır — onda amm_fee_on yoktur — ve quote_token_program yuvası Interface<TokenInterface> değil, SPL Token olarak tiplenmiştir.
Yeni bir başlatma oluşturun. InitializeV2, kullanımdan kaldırılan Initialize’a göre yalnızca amm_fee_on argümanını ekler; hesap sayısı ve sırası özdeştir ve tek hesap düzeyi fark, quote_token_program’ın Interface<TokenInterface> olarak tiplenmesidir; böylece Token-2022 bir quote mint kabul edilir. Argümanlar Tek bir yapı değil, dört konumsal argüman. (InitializeWithToken2022 beşinci bir argüman ekler: transfer_fee_extension_param: Option<TransferFeeExtensionParams>; kullanımdan kaldırılan Initialize ise amm_fee_on’u atar.)
Varyant, global_config.curve_type ile eşleşmelidir; aksi hâlde talimat InputNotMatchCurveConfig (6003) ile geri döner. open_time yoktur, quote_mint argümanı yoktur (bu değer global_config’ten gelir), fees yapısı yoktur ve post_graduation_lp_policy de yoktur — mezuniyette LP’nin elden çıkarılması başlatma başına değil, PlatformConfig üzerinde ayarlanır. Hesaplar — toplam 18 (bildirilen 16 artı iki #[event_cpi] eklemesi) Ön koşullar
  • quote_mint ∈ launch_config.allowed_quote_mints.
  • base_supply_graduation ≤ base_supply_max.
  • Ücret parametreleri launch_config.max_*_fee_rate kontrollerini geçer.
  • open_time ≥ now − slop (SDK ≥ now uygular; program hafif geriye dönük tarihlemeyi tolere eder).
  • curve_type tanınır.
Son koşullar
  • base_mint supply = curve_param.supply ile, tümü base_vault içinde.
  • Mint yetkisi, arz basıldıktan hemen sonra bu aynı talimat içinde iptal edilir (set_authority(MintTokens, None)) — mezuniyette değil. Bu nedenle base mint kalıcı olarak sabit arzlıdır ve daha sonraki hiçbir talimat daha fazlasını basamaz.
  • PoolState, status = Fund (0), real_a = 0, real_b = 0 ile başlatılır.
  • total_fund_raising_b doğrudan curve_param.total_quote_fund_raising değerinden gelir.
  • InitializeWithToken2022 için ekli TransferFeeConfig ile: transfer_fee_config_authority = launch_authority ve bu alan ayarlandığında withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth, aksi takdirde launch_authority. Çekme tarafı mint oluşturmada yazılır, tam olarak platform mezuniyetten önce alıkonulan ücretleri temizleyebilsin diye. Bkz. platform-config.
Yaygın hatalar — NotApproved (6000, kullanımdan kaldırılan Initialize için koşulsuz olarak), InvalidInput (6002, GlobalConfig’ten gelen bir arz / oran / fon toplama tabanı ihlal edildi), InputNotMatchCurveConfig (6003, curve_param varyantı global_config.curve_type ile eşleşmiyor), MigrateTypeNotMatch (6007, migrate_type != 1), MathOverflow (6008), VestingRatioTooHigh (6010), NoSupportExtension (6017), NotEnoughRemainingAccounts (6018), InvalidPlatformAllowConfig (6022), CurveParamNotMatchPlatformRule (6025). Başarısız bir Anchor address = / constraint = kontrolü bunlardan biri olarak değil 2xxx kodu olarak görünür — programın hata enum’unda InvalidQuoteMint, FeeRateTooHigh veya InvalidCurveParams diye bir şey yoktur.

Buy (kanonik varyant: BuyExactIn)

Kullanıcı sabit bir giriş tutarı sağlar; eğri çıkışı hesaplar. Argümanlar
Hesaplar Kalan hesaplar — ücret tesisatı; tam olarak şu sırada okunur:
  1. share_fee_receiver — yalnızca share_fee_rate > 0 olduğunda.
  2. system_program — her zaman; == System::id() olduğu kontrol edilir, aksi hâlde InvalidInput.
  3. platform_fee_vault — PDA [platform_config, quote_token_mint]; ilk kullanımda oluşturulur.
  4. creator_fee_vault — PDA [creator, quote_token_mint]; ilk kullanımda oluşturulur.
Eksik kalmak NotEnoughRemainingAccounts (6018) döndürür. associated_token_program diye bir yuva yoktur ve system_program bildirilmiş bir hesap değil, kalan bir hesaptır. Ön koşullar
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
Etki
  1. quote_in öğesini quote_in_after_fee ve ücret kısımlarına böl.
  2. Post-ücret alıntısı verilen base_out için eğriyi Newton-çöz.
  3. require(base_out ≥ minimum_base_out) aksi takdirde ExceededSlippage ile geri al.
  4. quote_in kullanıcı → kasa taşı. base_out kasa → kullanıcı taşı.
  5. base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share) güncelle.
  6. Ücret sayaçlarını güncelle (protocol_fees_quote, creator_fees_quote).
  7. state_data.num_buys += 1.
  8. Güncelleme sonrası quote_reserve_real ≥ quote_reserve_target ise, SDK tipik olarak aynı işlemde bir Graduate ix zincirler. Program Buy içinde otomatik mezun olmaz — sonraki bir Graduate gereklidir.

BuyExactOut

Kullanıcı tam base_out belirtir; program quote_in hesaplar. Argümanlar
BuyExactIn ile aynı hesaplar ve aynı kalan-hesap sözleşmesi. Newton yinelemesi yerine kapalı form ikinci dereceden integral (veya curve_type 1 için CPMM tersi) kullanır.

Sell / SellExactIn / SellExactOut

Buy yansıması. Kullanıcı base_in eğriye döndürür ve quote_out alır. Ücret quote_out öğesinden düşülür, bu nedenle kullanıcı ham entegre gelirlerin daha azını alır. Ön koşullar —
  • user_base_ata.balance ≥ base_in.
  • Satış base_sold öğesini 0’ın altına itemiyor (muhasebe tutarlı olduğu göz önüne alındığında yukarıdakiyle gereksiz).
  • Başlatma Active olur.
Etki — Buy ile simetrik. base_sold azalır, quote_reserve_real azalır. Ücretler yine de tahakkuk eder.

Alıntı tarafı transfer ücretleri

Alıntı mint’i TransferFeeConfig taşıdığında, kasanın hareket ettiği miktar ve ödeyicinin borçlandırıldığı veya alacaklandırıldığı miktar farklıdır ve kayma sınırı ödeyicinin tarafına karşı kontrol edilir. Uzantı olmayan alıntı mint’inde aşağıdaki her durum düz eski mint ile aynıdır. Alıntı için iki sonuç:
  • Mint ücretsiz olsaydı hesaplanan sınır reddedilir. Ücretsiz maliyeti maximum_amount_in olarak veya ücretsiz gelirleri minimum_amount_out olarak geçmek ExceededSlippage ile geri alınır.
  • real_quote yalnızca kasaya ulaşan şey kadar ilerler. %5 alıntı mint’inde amount_in BuyExactIn real_quote öğesini amount_in × 0.95 kadar hareket ettirir.
%100 ücretli alıntı mint’i (10000 baz puan) ters çevrilemez ve tam çıkış yollarında CalculateOverflow ile geri alınır. Her iki işlem tarafı mint’i de eşleşen yuvasında geçirilen programa kısıtlanır, bu nedenle uyumsuz base_token_program artık yoksayılmak yerine başarısız olur. Bkz. algorithms/token-2022-transfer-fees temel ücret matematiği için.

İşlem kalan hesapları

Dört işlem talimatının tümü ücret tesisatlarını remaining_accounts aracılığıyla bu sırada alır:
2026-09’da değişti: son üçü artık koşulsuz ve system_program doğrulanır. Bu sürümden önce program yalnızca unix_timestamp >= get_upgrade_timestamp() olduğunda bunları okudu ve kesintiden önce platform/yaratıcı ücret bölünmesini tamamen atladı. Zaman damgası uzun geçmiştir, bu nedenle mainnet’teki davranış pratikte değişmemiştir — ancak dal koddan gitti ve üç hesabı hala atlayan bir oluşturucu artık her zaman kesintiden sonra yerine NotEnoughRemainingAccounts (6018) ile başarısız olur. system_program yuvası ek olarak System::id() karşısında kontrol edilir ve başka bir şey tutarsa InvalidInput (6002) döndürür, daha önce herhangi bir hesap bu konumda kabul edilirdi.

MigrateToAmm / MigrateToCpswap

Eğri total_quote_fund_raising öğesine ulaştığında bir başlatmayı işlem gören havuza mezun edin. Yeni başlatmalar yalnızca CPMM’dir. MigrateToAmm depolanan migrate_type 0 olan mevcut havuzlar için tutulur. Kim imzalar
  • MigrateToAmm — bağlama GlobalConfig üzerinde kaydedilen migrate_to_amm_wallet.
  • MigrateToCpswap — bağlama GlobalConfig üzerinde kaydedilen migrate_to_cpswap_wallet.
Bu cüzdanlar tipik olarak Raydium tarafından işletilen mezuniyet krankı tarafından tutulur; pratikte mezuniyet eşik geçildikten saniyeler sonra iner, son satın almayı kim tetiklerse tetiklesin. Argümanlar Hiçbiri almaz.
Kırıcı değişiklik (yalnızca geçiş cüzdanı, 2026-09). MigrateToAmm üç argümanın tümünü — base_lot_size, quote_lot_size, market_vault_signer_nonce — ve dokuz hesabı bıraktı. Talimat verisi artık çıplak ayırıcıdır, bu nedenle eski bir oluşturucu hem 17 beklenmeyen argüman baytı gönderir hem de artık hizalanmayan bir hesap listesi sağlar.Bu AMM v4’ün kendi OpenBook kaldırılmasını takip eder: AMM v4’ün Initialize2 artık market_program veya amm_open_orders almaz, bu nedenle LaunchLab’ın iletecek bir şeyi kalmadı. Program ayrıca initialize_openbook_market CPI’ını yapmayı bıraktı, üç argümanın yapılandırdığı şey.Kaldırılan hesaplar: openbook_program, request_queue, event_queue, bids, asks, market_vault_signer, market_base_vault, market_quote_vault ve amm_open_orders. market hesabı kalır konumunda — AMM v4 hala bunu referans alanı olarak kaydeder — ancak artık çıplak #[account(mut)] olarak bildirilir: sahip, adres veya tohum kısıtlaması yok. Tamamen doğrulanmamıştır, doğrudan AMM v4’ün Initialize2 CPI’ına iletilir ve program artık bunu başlatmaz. Pazar hesabının gerçek başlatılmış bir pazar olmasını isteyen bir çağrıcı bunu kendisi önceden oluşturmalıdır.Kalan 23 hesap listesi sırasıyla: payer, base_mint, quote_mint, market, amm_program, amm_pool, amm_authority, amm_lp_mint, amm_base_vault, amm_quote_vault, amm_target_orders, amm_config, amm_create_fee_destination, authority, pool_state, global_config, base_vault, quote_vault, pool_lp_token, spl_token_program, associated_token_program, system_program, rent_program.MigrateToCpswap etkilenmez — hiçbir zaman argüman almadı.
Etki (her ikisine ortak)
  1. pool_state.status == Migrate doğrula (yani, quote_reserve_target ulaşıldı). Aksi takdirde PoolMigrated (durum zaten Migrated idi) veya PoolFunding (hala finansman) ile geri al.
  2. pool_state.migrate_type talimatla eşleştiğini doğrula (0 AMM için, 1 CPMM için). Aksi takdirde MigrateTypeNotMatch ile geri al.
  3. Mezuniyet sonrası rezervleri hesapla:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. Hedef programa CPI (AMM v4 Initialize2 veya CPMM InitializeWithPermission) bu rezervlerle mezuniyet sonrası havuzu oluşturmak için.
  5. 2026-08-17 yükseltmesinden sonra yürütülen CPMM geçişleri için platform_scale + creator_scale öğesini bir platform tarafından sahip olunan kilitli LP payına birleştir ve en fazla bir Ücret Anahtarı NFT’si platform_nft_wallet öğesine bas. burn_scale kalanını yak. Yükseltmeden önce, creator_scale ayrı olarak kilitliydi ve Ücret Anahtarı token yaratıcısına gitti. Tamamlanan tarihsel geçişler değiştirilmez. Eski AMM v4 mezuniyeti için LP dağılımı bu talimatın mevcut akışını takip eder.
  6. (Mint yetki adımı yok. base_mint.mint_authority başlatma oluşturmada zaten None olarak ayarlandı — aşağıdaki nota bakın.)
  7. pool_state.status = Migrated çevir, vesting_schedule.start_time = block_time + cliff_period ayarla.
Token-2022 transfer ücreti yetki devri — temel mint Token-2022 mint’i olduğunda TransferFeeConfig taşıyıp ve PlatformConfig.transfer_fee_extension_auth varsayılan olmadığında, geçiş ayrıca bu uzantının yetkilerini platform anahtarına yeniden atar:
  • transfer_fee_config_authority her zaman yeniden atanır. Başlatma authority PDA bunu tüm ön mezuniyet aşaması boyunca tutar, bu nedenle her zaman taşınacak bir şey vardır.
  • WithheldWithdraw yeniden atanır yalnızca authority PDA hala tuttuğunda. 2026-08-27’den itibaren oluşturulan başlatmalar zaten mint oluşturmada bu yetkiye transfer_fee_extension_auth taşır, bu nedenle adım atlanır. Koruma, geçişin bu mint’lerde geri alınmasını engeller — PDA artık tutmadığı bir yetki imzalayamaz.
transfer_fee_extension_auth geçiş zamanında Pubkey::default() ise, hiçbir yetki hareket etmez ve her ikisi de authority PDA’da kalıcı olarak kalır. Bkz. platform-config.
Temel mint’in arzı oluşturmadan değil, mezuniyetten ayarlanır. InitializeV2 ve InitializeWithToken2022 tüm arzı temel kasaya basarlar ve ardından aynı talimatında hemen MintTokens öğesini iptal ederler, bu nedenle base_mint.mint_authority başlatmanın tüm yaşamı boyunca None olur. Geçiş buna dokunmaz. (Bu sayfanın önceki revizyonları iptalı mezuniyete yerleştirdi; bu yanlıştı.) Geçişin hareket ettirebileceği tek yetki aşağıda açıklanan Token-2022 transfer ücreti olanlarıdır.
Son koşullar — BuyExactIn, BuyExactOut, SellExactIn, SellExactOut bu noktadan itibaren PoolMigrated ile reddedecektir. Ortaya çıkan AMM havuzu kanonik olur ve diğer herhangi bir AMM v4 / CPMM havuzu gibi işlem görür. Yaygın hatalar — PoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

CPMM geçiş kalan hesapları

MigrateToCpswap oluşturan istemciler bu sabit remaining_accounts indekslerini kullanmalıdır: Talimat en az on kalan hesap gerektirir. Destek mint hesapları salt okunur CPI girdileridir. Her iki adresi de mint başlatılmış destek kaydı olmasa bile türet. Hala yaratıcı kilit hesapları ekleyen veya indeks 8–9 atlayan eski oluşturucular güncellenmeli.
2026-09’da değişti. İki temizlik, hiçbiri doğru bir oluşturucuyu değiştirmez:
  • İzinli CPMM yolu artık tek yoldur. MigrateToCpswap unix_timestamp >= get_upgrade_timestamp() temelinde InitializeCpSwap ve InitializeCpSwapWithPermission arasında seçim yapmak için kullanılırdı. Zaman damgası yardımcısı ve eski CPI her ikisi de gitti, bu nedenle izinli yol — ve bu nedenle on hesap minimum — koşulsuz olarak uygulanır.
  • Üç adres kısıtlaması hesap yapısından talimat gövdesine taşındı. platform_config, base_vault ve quote_vault hala PoolState üzerinde depolanan değerlerle eşleşmesi gerekir, ancak uyumsuzluk artık Anchor’ın address = kısıtlaması yerine require_keys_eq! tarafından yükseltilir. Kontrol eşdeğerdir; yalnızca hata yüzeyi farklıdır — bu üç hesap için Anchor’ın genel RequireKeysEqViolated (2502) yerine ConstraintAddress (2012) alırsınız ve hesap adı olmadan raporlanır. Bu üç hesap için 2012 ile eşleşen hata işlemesini güncelleyin.

CPMM geçiş token programları

MigrateToCpswap her iki token programını koşulsuz olarak alır ve hangi programın her mint’i sahip olduğunu kendisi çalışır. İki token programı hesabı buna göre yeniden adlandırıldı: Bunlar eski base_token_program (temel mint’i sahip olan program) ve quote_token_program (her zaman eski) yerine geçer. Konumlar değişmemiştir, bu nedenle bu bir değer değişikliği yerine bir düzen değişikliğidir — ancak iki değer neredeyse ters çevrilmiştir ve eski çiftini geçirmeye devam eden bir oluşturucu, her iki mint de Token-2022 mint’i olur olmaz eski programın gerekli olduğu yere Token-2022 sağlayacaktır. Eski program hiçbir mint kullanmasa bile gereklidir, çünkü CPMM LP mint’i ve kilitli likidite Ücret Anahtarı NFT’si her zaman bunda yaşar.

Platform GlobalConfig izin listesi

PlatformConfig.restrict_global_config kontrolü:
  • 0: platform herhangi bir başka şekilde geçerli GlobalConfig kabul eder; izin hesabı gerekli değildir.
  • 1: Initialize, InitializeV2 ve InitializeWithToken2022 eşleşen PlatformAllowConfig öğesini remaining_accounts içinde herhangi bir yere dahil etmelidir.
Platform yöneticisi CreatePlatformAllowConfig ve ClosePlatformAllowConfig ile PDA’yı oluşturur veya kapatır. Tohumları [b"platform_allow_config", platform_config, global_config] olur. Eski yönetici tarafından yönetilen PlatformGlobalAccess talimatları ve PDA’sı emekli olmuştur.

Platform başlatma parametresi kuralları

Dört talimat bir PlatformCurveRule hesabını yönetir. Dördü de PlatformConfig.curve_rule_manager veya platform yöneticisi tarafından imzalanır — program yöneticiyi imzalayıcıdan PlatformConfig PDA’sını yeniden türeterek kabul eder, bu nedenle ayrı bir hesap bunu kanıtlamaz. Ne de ne de olmayan bir imzalayıcı InvalidCurveRuleAuthority döndürür. platform_curve_rule [b"platform_curve_rule", platform_config, global_config] adresindeki PDA’dır.
  • Create hiçbir grup tutmayan hesabı tahsis eder. Bu durum hiçbir şeyi kısıtlamaz.
  • Update bu group_id ile grubu upsert eder, varsa tamamen değiştirir. Hesabı sığdırmak için yeniden boyutlandırır, bu nedenle imzalayıcı büyüdüğü kirayı toplar ve küçüldüğü kirayı geri alır. Onuncu ötesinde yeni bir grup CurveRuleGroupsExceeded döndürür; 25’ten fazla kısıtlama, bilinmeyen alan veya operatör veya bir grupta aynı (field, op) çifti iki kez InvalidCurveRuleConstraint döndürür; sabit olmayan ürün yapılandırmasında dört TotalSellA türetilmiş alan CurveRuleFieldNotSupportedByCurve döndürür.
  • Remove bir grubu id’ye göre bırakır, hesabı küçültür ve farkı geri öder. Bilinmeyen id CurveRuleGroupNotExist döndürür.
  • Close tüm kirayı imzalayıcıya döndürür. Yapılandırma daha sonra restrict_curve_param 1 kalsa bile sınırlanmamış olur.
Dördü de kuralların uygulanıp uygulanmadığını değiştirmez. Bu UpdatePlatformConfig::RestrictCurveParam(0 | 1) olur, yalnızca platform yöneticisi çağırabilir. Başlatma yolunda. restrict_curve_param 1 iken, InitializeV2 ve InitializeWithToken2022 kural PDA’sını remaining_accounts içinde gerektirir — var olmasa bile, bunu atlayamayacak şekilde. Eksik hesap NotEnoughRemainingAccounts olur; hiçbir grubu karşılamayan başlatma CurveParamNotMatchPlatformRule olur. Kontrol GlobalConfig’ün kendi sınırlarından önce çalışır ve yalnızca bunları daraltabilir. Model ve oyun kitapları: products/launchlab/curve-rules. Her iki hata da istemci tarafında kaçınılabilir — SDK bu kontrolü saf bir işlev olarak yansıtır, bkz. Göndermeden önce kontrol edin.

CollectFee

Tek bir başlatmada protokolün birikmiş işlem ücretlerinin yönetici taraması. Argümanlar — hiçbiri. Hesaplar
Burada quote_mint, recipient_token_account’tan önce gelir — alıcıyı öne koyan ClaimCreatorFee, ClaimPlatformFee ve ClaimPlatformFeeFromVault’un tersi. İki yuvanın Anchor tipleri farklıdır (Mint ve TokenAccount), bu nedenle bunları takas etmek çalışma zamanında seri açımını başarısız kılar ve yanlış-hesap hatası gibi görünür. CollectMigrateFee, CollectFee ile aynı sıraya sahiptir.
Etki — quote_vault öğesinden quote_protocol_fee öğesini recipient_token_account öğesine aktar, ardından sayacı sıfırla. İlk satın almadan sonra herhangi bir zamanda çağrılabilir.

CollectMigrateFee

Mezuniyette birikmiş geçiş ücretinin yönetici taraması. CollectFee ile aynı hesap şekli, protocol_fee_owner yerine migrate_fee_owner imzalayıcı olarak ve pool_state.migrate_fee boşaltılan sayaç olarak.

ClaimCreatorFee

Yaratıcının sahip olduğu her başlatmada aynı alıntı mint’ini kullanan birikmiş yaratıcı ücretlerinin yaratıcı başına taraması. Per-havuz olanı değil, per-yaratıcı ücret kasasını boşaltır. Argümanlar — hiçbiri. Hesaplar Etki — creator_fee_vault öğesinin tüm bakiyesini recipient_token_account öğesine aktar. Kasa boşsa sıfırdan büyük bir kontrol gerektirir ile geri alınır.

ClaimPlatformFee

Bir başlatmanın alıntı kasasını doğrudan boşaltan platform başına tarama. Bunu, bir platform toplanmış platform kasasından geçmeden belirli bir başlatma için dilimini talep etmek istediğinde kullanın. Argümanlar — hiçbiri. Hesaplar Etki — pool_state.platform_fee öğesini quote_vault öğesinden recipient_token_account öğesine aktar, sayacı sıfırla.

ClaimPlatformFeeFromVault

Platform başına toplanmış tarama. Her başlatmadan platformdan yönlendirilen ücretleri biriktiren platform’un per alıntı mint ücret kasasını boşaltır. Argümanlar — hiçbiri. Hesaplar Etki — platform_fee_vault öğesinin tam bakiyesini recipient_token_account öğesine aktar. Kasa boşsa geri alınır.

CollectExcessLamports

LaunchLab’ın kontrol ettiği hesaplarda kira muafiyeti minimumunun üzerinde oturan lamport’ların yönetici taraması. 2026-09 yükseltmesinde eklendi, böylece protokol SIMD-0437 kira azaltmasının her adımdan sonra hesaplarda bıraktığı aşırı finansmanı geri alabilir. Yalnızca fazlalık hareket eder. Token bakiyeleri, hesap verileri, sahipleri, eğri durumu ve hak kazanma dokunulmaz ve talimat zaten minimumda olan bir hesaba karşı bir no-op olur — bu nedenle her dağıtım adımından sonra yeniden çalıştırmak güvenlidir. Argümanlar — hiçbiri. Hesaplar authority seçme Hesap işaretlenmemiş olarak geçirilir ve program tarafından çözülür, bu da LaunchLab’ın üç yetki PDA’sını yeniden türetir ve eşleştirir: Üçünün hiçbiriyle eşleşmeyen bir anahtar tüm talimatı InvalidOwner (6001) ile başarısız kılar.
Kaynak hesaplarınızı yetki tarafından gruplandırın. Bir çağrı bir authority taşır ve token programı hesabın gerçek sahibinin imzalamasını gerektirir. Geçirdiğiniz authority öğesinden farklı üçünden biri tarafından sahip olunan bir token hesabı CPI’ı başarısız kılar ve tüm işlemi onunla birlikte alır. Havuz kasalarını, platform ücret kasalarını ve yaratıcı ücret kasalarını ayrı işlemlerde tarayın.Program tarafından sahip olunan PDA’lar istisnadır — doğrudan borçlandırılırlar, bu nedenle herhangi bir yetki ile birlikte gidebilirler.
Her kaynak hesabı nasıl işlenir Temel mint’ler taranamaz. InitializeV2 ve InitializeWithToken2022 temel mint’i oluşturan aynı talimatında MintTokens öğesini iptal eder, bu nedenle hiçbir anahtar bunu imzalayamaz — temel mint’in kirayı kalıcı olarak kalır. Yaygın hatalar — InvalidOwner (6001, yanlış imzalayıcı veya üçünün hiçbiri olmayan bir authority), LamportsCalculateError (6031, wSOL gidiş dönüş sıfıra net olmadı) ve program tarafından sahip olunan yoldan bir hesap kendi kira minimumundan daha az tuttuğunda InsufficientFunds. SDK oluşturucu yok. @raydium-io/raydium-sdk-v2 bu talimat için bir oluşturucu göndermez ve raydium-sdk-V2-demo deposu da göndermez — bu bir yönetici yoludur. Bunu elle kodlayın, solana-fundamentals/rent-and-reclaimable-rent içindeki cüzdan tarafı taramasının token programı talimatı için yaptığı şekilde.

Hak kazanma ve platform yapılandırması talimatları

Bunlar ayrılmış sayfalarda belgelenmiştir çünkü her birinin kendi durum modeli vardır:

Durum değişikliği matrisi

Sonra nereye gidilir

Kaynaklar: