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 işlem artı bir avuç yönetici ilkel işlemi. 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.

Talimat envanteri

“ExactIn/ExactOut” bölünmesi CPMM’nin SwapBaseInput / SwapBaseOutput yöntemini yansıtır — zincir üzerinde bunlar biraz farklı yuvarlama ile ayrı talimat ayırıcılarıdır. Mezuniyet yolu seçimi. Her yeni Initialize, 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 quote token’ına mı yoksa her iki token’a mı uygulanacağını seçer; hedef programı seçmez. 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. Quote tarafı token programı. Quote mint, SPL Token programı veya Token-2022 tarafından sahip olunabilir. Buna dokunan her talimat — CreateConfig, InitializeV2, InitializeWithToken2022, dört işlem talimatının tümü, CollectFee, CollectMigrateFee, ClaimCreatorFee, ClaimPlatformFee ve ClaimPlatformFeeFromVault — sahip olan programı quote-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 okuyabilir (bkz. accounts) veya aksi takdirde mint hesabının sahibinden. Kullanımdan kaldırılan Initialize istisnadır: quote-program hesabı hala SPL Token’a yazılmıştır, bu nedenle quote mint’i Token-2022 olan bir yapılandırma InitializeV2 veya InitializeWithToken2022 aracılığıyla başlatılmalıdır. MigrateToCpswap diğer istisnadır, ters yönde — mint başına bir yerine her iki programı da koşulsuz olarak alır. Bkz. aşağıdaki geçiş hesapları.

Initialize

Yeni bir başlatma oluştur. Argümanlar
Hesaplar (kısaltılmış) Ö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 tarihlendirmeyi tolere eder).
  • curve_type tanınır.
Son koşullar
  • base_mint supply = base_supply_max ile, tümü base_vault içinde.
  • base_mint.mint_authority = launch_authority, freeze_authority = None.
  • LaunchState status = Active, base_sold = 0, quote_reserve_real = 0 ile başlatılır.
  • quote_reserve_target eğri parametreleri + base_supply_graduation + buy_numerator (yaklaşık olarak) hesaplanır.
  • InitializeWithToken2022 için TransferFeeConfig ekli: transfer_fee_config_authority = launch_authority ve withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth bu alan ayarlandığında, aksi takdirde launch_authority. Çekme tarafı, platform mezuniyetten önce kesilen ücretleri temizleyebilmesi için tam olarak mint oluşturmada yazılır. Bkz. platform-config.
Yaygın hatalarInvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.

Buy (kanonik varyant: BuyExactIn)

Kullanıcı sabit quote_in sağlar; eğri base_out hesaplar. Argümanlar
Hesaplar Ö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 quote verilen base_out için eğriyi Newton-çöz.
  3. require(base_out ≥ minimum_base_out) aksi takdirde ExceededSlippage ile geri dön.
  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 olarak mezun olmaz — sonraki bir Graduate gereklidir.

BuyExactOut

Kullanıcı tam base_out belirtir; program quote_in hesaplar. Argümanlar
BuyExactIn ile aynı hesaplar. 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.
EtkiBuy ile simetrik. base_sold azalır, quote_reserve_real azalır. Ücretler yine de tahakkuk eder.

Quote tarafı transfer ücretleri

Quote mint bir TransferFeeConfig taşıdığında, kasanın hareket ettiği miktar ile ödeyenin borçlandırıldığı veya alacaklandırıldığı miktar farklıdır ve slippage sınırı ödeyenin tarafına karşı kontrol edilir. TransferFeeConfig olmayan quote mint’te aşağıdaki her durum düz eski mint ile aynıdır. Alıntı için iki sonuç:
  • Mint ücretsiz olsaydı hesaplanan bir sınır reddedilir. Ücretsiz maliyeti maximum_amount_in olarak veya ücretsiz gelirleri minimum_amount_out olarak geçmek ExceededSlippage ile geri döner.
  • real_quote yalnızca kasaya ulaşan tarafından ilerler. amount_in öğesinde BuyExactIn %5 quote mint’te real_quote öğesini amount_in × 0.95 tarafından hareket ettirir.
%100 ücretli quote mint (10000 baz puan) ters çevrilemez ve tam çıkış yollarında CalculateOverflow ile geri döner. 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.

MigrateToAmm / MigrateToCpswap

Eğri total_quote_fund_raising öğesine ulaştığında bir başlatmayı işlem yapılabilir bir havuza mezun et. Yeni başlatmalar yalnızca CPMM’dir. MigrateToAmm depolanan migrate_type öğesi 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 sonra saniyeler içinde iner, son satın almayı kim tetiklerse tetiklesin. Argümanlar MigrateToAmm üç tane alır (esas olarak programın AMM v4’e ileteceği OpenBook pazar parametreleri):
MigrateToCpswap hiçbirini almaz. Etki (her ikisine de 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 dön.
  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 dön.
  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 Fee Key NFT’yi platform_nft_wallet öğesine bas. burn_scale kalanını yak. Yükseltmeden önce, creator_scale ayrı olarak kilitliydi ve Fee Key’i 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ı izler.
  6. base_mint.mint_authority öğesini iptal et (ayarla None).
  7. pool_state.status = Migrated çevir, vesting_schedule.start_time = block_time + cliff_period ayarla.
Token-2022 transfer-ücret yetkilisi devri — temel mint bir Token-2022 mint taşıdığında TransferFeeConfig ve PlatformConfig.transfer_fee_extension_auth varsayılan olmayan olduğunda, geçiş ayrıca bu uzantının yetkililerini platform anahtarına yeniden atar:
  • transfer_fee_config_authority her zaman yeniden atanır. Başlatma authority PDA tüm ön mezuniyet aşaması boyunca tuttuğu için, her zaman taşınacak bir şey vardır.
  • WithheldWithdraw yalnızca authority PDA hala tuttuğunda yeniden atanır. 2026-08-27 ve sonrasında oluşturulan başlatmalar zaten mint oluşturmadan bu yetkiliye transfer_fee_extension_auth taşır, bu nedenle adım atlanır. Koruma, geçişin bu mint’lerde geri dönmesini engeller — PDA artık tutmadığı bir yetkiliye imza atamaz.
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. Son koşullarBuyExactIn, BuyExactOut, SellExactIn, SellExactOut bu noktadan itibaren PoolMigrated ile reddedecektir. Ortaya çıkan AMM havuzu kanonik ve diğer herhangi bir AMM v4 / CPMM havuzu gibi işlem yapar. Yaygın hatalarPoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

CPMM geçişi kalan hesaplar

MigrateToCpswap oluşturan istemciler bu sabit remaining_accounts dizinlerini kullanmalıdır: Talimat, yükseltilmiş yolda en az on kalan hesap gerektirir. Destek-mint hesapları salt okunur CPI girdileridir. Her iki adresi de mint’in başlatılmış bir destek kaydı olmasa bile türet. Hala yaratıcı-kilit hesapları ekleyen veya dizinleri 8–9 atlayan eski oluşturucular güncellenmeli.

CPMM geçişi token programları

MigrateToCpswap her iki token programını da koşulsuz olarak alır ve hangi programın her mint’e sahip olduğunu kendisi çözer. İki token-program hesabı buna göre yeniden adlandırıldı: Bunlar eski base_token_program (hangi program temel mint’e sahipse) ve quote_token_program (her zaman eski) yerine geçer. Konumlar değişmedi, bu nedenle bu bir düzen değişikliği yerine bir değer değişikliğidir — ancak iki değer neredeyse ters çevrilir ve eski çiftini geçirmeye devam eden bir oluşturucu, her iki mint de Token-2022 mint olur olmaz Token-2022’yi eski programın gerekli olduğu yere sağlayacaktır. Eski program, hiçbir mint bunu kullanmasa bile gereklidir, çünkü CPMM LP mint’i ve kilitli likidite Fee Key NFT’si her zaman üzerinde 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, imzalayanı PlatformConfig PDA’sından yeniden türeterek yöneticiyi kabul eder, bu nedenle ayrı bir hesap bunu kanıtlamaz. Ne de olmayan bir imzalayan 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ı ayırır. 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 imzalayan 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; dört TotalSellA türetilmiş alan sabit olmayan ürün yapılandırmasında CurveRuleFieldNotSupportedByCurve döndürür.
  • Remove bir grubu kimliğe göre bırakır, hesabı küçültür ve farkı geri öder. Bilinmeyen kimlik CurveRuleGroupNotExist döndürür.
  • Close tüm kirayı imzalayana döndürür. Yapılandırma daha sonra restrict_curve_param 1 kalsa bile sınırsız olur.
Dördü de kuralların uygulanıp uygulanmadığını değiştirmez. Bu UpdatePlatformConfig::RestrictCurveParam(0 | 1) olup, 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 olmadığında bile, bunu atlayamayacak şekilde. Eksik hesap NotEnoughRemainingAccounts olur; hiçbir grubu karşılamayan başlatma CurveParamNotMatchPlatformRule olur. Kontrol GlobalConfig kendi sınırlarından önce çalışır ve yalnızca onları 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 et.

CollectFee

Yönetici, tek bir başlatmada protokolün birikmiş işlem ücretlerini temizler. Argümanlar — hiçbiri. Hesaplar Etkiquote_protocol_fee öğesini quote_vault öğesinden recipient_token_account öğesine aktar, sonra sayacı sıfırla. İlk satın almadan sonra herhangi bir zamanda çağrılabilir.

CollectMigrateFee

Yönetici, mezuniyette birikmiş geçiş ücretini temizler. CollectFee ile aynı hesap şekli, imzalayan olarak migrate_fee_owner (protocol_fee_owner yerine) ve drenaj sayacı olarak pool_state.migrate_fee.

ClaimCreatorFee

Yaratıcı başına, yaratıcının sahip olduğu her başlatmada birikmiş yaratıcı ücretlerinin taraması, aynı quote mint’i kullanan. Per-pool olanı değil, per-yaratıcı ücret kasasını drains. Argümanlar — hiçbiri. Hesaplar Etkicreator_fee_vault öğesinin tüm bakiyesini recipient_token_account öğesine aktar. Kasa boşsa sıfırdan büyük bir kontrol ile geri döner.

ClaimPlatformFee

Platform başına, bir başlatmanın quote kasasını doğrudan drains. Bunu, bir platform toplam platform kasasından geçmeden belirli bir başlatma için dilimini talep etmek istediğinde kullanın. Argümanlar — hiçbiri. Hesaplar Etkipool_state.platform_fee öğesini quote_vault öğesinden recipient_token_account öğesine aktar, sayacı sıfırla.

ClaimPlatformFeeFromVault

Platform başına toplam tarama. Platform’un her başlatmadan yönlendirilen ücretleri biriktiren per-quote-mint ücret kasasını drains. Argümanlar — hiçbiri. Hesaplar Etkiplatform_fee_vault öğesinin tam bakiyesini recipient_token_account öğesine aktar. Kasa boşsa geri döner.

Vesting ve platform-config talimatları

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

Durum değişikliği matrisi

Sonraki adım

Kaynaklar: