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 →
Bu sayfa başlatma başına hesap grafiğini belgeler: PoolState (bir başlatma için kök durum hesabı), iki kasası, yetki PDA’sı ve başlatma kapandığında kazandığı mezuniyet sonrası referansları.Her başlatmayı sınırlayan protokol düzeyindeki yapılandırma için bkz. products/launchlab/global-config. Platform başına ek katman için bkz. products/launchlab/platform-config. Vesting hesapları (PoolState üzerinde VestingSchedule, yararlanıcı başına VestingRecord) için bkz. products/launchlab/vesting.

Hesap envanteri

SDK bunu raydium.launchpad.getRpcPoolInfo({ poolId }) ile okur; bu çağrı, bağlı GlobalConfig’i configInfo olarak ekleyerek kodu çözülmüş PoolState’i döndürür (toplu biçim için getRpcPoolsInfo({ poolIdList })). getLaunchById diye bir şey yoktur. Havuz kimliğinin kendisi (programId, mintA, mintB) üçlüsünün bir PDA’sıdır — getPdaLaunchpadPoolId.

PoolState

Başlatma başına kök durum. Aşağıdaki alan adları zincir üzerindeki Rust yapısıyla eşleşir (states/pool.rs); bazı değerler okunabilirlik için basitleştirilmiştir — tam bellek düzeni için kaynağa bakın.
PoolStatus değerleri (IDL’deki varyant adları Fund / Migrate / Trade):
Entegratör tarafından kullanılan alanlar:
  • status — üç değer, monoton (Fund → Migrate → Trade). Okumalar her zaman güvenli; yazımlar kapılı. ClaimVestedToken, Trade durumunu gerektirir.
  • real_base, real_quote — mevcut eğri durumu. virtual_base / virtual_quote ile birlikte kasalara dokunmadan spot fiyatı hesaplamak için yeterlidirler. Bkz. bonding-curve.
  • total_base_sell vs real_base — UI’ler için “mezuniyete doğru ilerleme” oranı.
  • migrate_type — yeni başlatma 1 (CPSWAP) gerektirir. Depolanan 0 yalnızca CPMM-only uygulaması öncesinde oluşturulan mevcut bir başlatma için anlamlı kalır.
  • amm_creator_fee_on — mezuniyet sonrası CPMM havuzunda creator_fee_on = OnlyQuoteToken (0) veya BothToken (1) seçer. Göç hedefini seçmez. Bkz. creator-fees.
  • token_program_flag — bir boolean değil, bir bit alanı. Bit0 temel mint, bit1 alıntı mint’tir, her biri SPL Token için 0, Token-2022 için 1’dir, bu nedenle bayt dört değer alır: 0 (her ikisi de eski), 1 (Token-2022 temel), 2 (Token-2022 alıntı), 3 (her ikisi de Token-2022). Bir mint’i (token_program_flag >> bit) & 1 ile okuyun. Tüm baytı 0 ile karşılaştırarak temel mint’i sınıflandırmak 2’yi yanlış programa çözer. Bit1, Token-2022 alıntı mintleri desteklenene kadar sabit 0 idi.
  • quote_protocol_fee / platform_fee / migrate_fee — üç bağımsız ücret sayacı. Her birinin kendi talep talimatı vardır; bkz. instructions.
  • vesting_schedule — her PoolState üzerinde mevcut ancak total_locked_amount == 0 olduğunda etkin değil. Tam yaşam döngüsü için bkz. vesting.

Yetki PDA’sı

LaunchLab, tüm başlatmalar arasında tek bir yetki PDA’sı kullanır, başlatma başına tohum olmadan türetilir:
Bu tek PDA:
  • Her başlatmanın base_vault ve quote_vault üzerinde yetki.
  • base_mint üzerinde hiçbir şey değil — mint yetkilisi InitializeV2 dönmeden önce iptal edilir (aşağıya bakın).
  • CPMM mezuniyet CPI’sinde imzalayan ve mevcut durum için eski AMM v4 mezuniyetinde.
  • ClaimVestedToken transferlerinin temel kasadan dışarı imzalayanı.
  • Token-2022 temel mint’inin TransferFeeConfig üzerinde transfer_fee_config_authority — ve withdraw_withheld_authority da, ancak yalnızca platform PlatformConfig.transfer_fee_extension_auth ayarlamadığında.
mint_authority mezuniyet sırasında değil, başlatma talimatında iptal edilir: InitializeV2 ve InitializeWithToken2022 tam arzı base_vault içine basarlar ve ardından aynı talimatında MintTokens’ı None olarak ayarlarlar. Arz bu nedenle başlatma var olduğu andan itibaren sabitlenir ve göçün mint-authority adımı yoktur. Yan etki: kimse temel mint için imza atamaz, bu nedenle kirasını CollectExcessLamports tarafından geri talep edilemez. İki ek PDA ücret kasalarını kapılar:
Bunlar ClaimCreatorFee ve ClaimPlatformFeeFromVault sırasında ilgili ücret kasasından transferi imzalarlar.

Temel mint

Initialize tarafından satır içi oluşturulur:
  • mint_authority = authority (mezuniyette iptal edilir).
  • freeze_authority = None.
  • supply = supply, tamamen base_vault içine basılır.
  • decimals yaratıcı tarafından Initialize sırasında seçilir (yaygın olarak 6).
Tam arz önceden basıldığından, base_mint.supply başlatmanın ömrü boyunca sabittir. Eğri alımları tokenleri base_vault’tan alıcıya taşır, ancak mint_to çağırmaz. Initialize / InitializeV2 SPL Token temel mintleri oluşturur. Özel InitializeWithToken2022 talimatı temel mint’in Token-2022 mint’i olmasını sağlar (isteğe bağlı TransferFeeConfig ile). Üç başlatma yolu da CPMM mezuniyeti gerektirir. InitializeWithToken2022 bir TransferFeeConfig eklediğinde, mint transfer_fee_config_authority = authority ve withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth ile oluşturulur, platform bu alanı ayarlamadığında authority’ye geri döner. Her iki yetki de mezuniyette platform anahtarına yeniden atanır, çekme tarafı yalnızca PDA hala tutuyorsa. Bkz. platform-config. Alıntı mint, temel mint’ten bağımsızdır ve kendisi Token-2022 mint’i olabilir — InitializeV2 ve InitializeWithToken2022 alıntı-program yuvasında her iki programı da kabul eder. Kullanımdan kaldırılan Initialize yapmaz: alıntı-program hesabı hala SPL Token’a yazılmıştır, bu nedenle alıntı mint’i Token-2022 olan bir yapılandırma yalnızca diğer ikisi aracılığıyla başlatılabilir. Alıntı mint asla LaunchLab tarafından oluşturulmaz; GlobalConfig.quote_mint adlandırdığı şeydir. Bkz. global-config ve reference/token-2022-support.

Kasalar

Hem base_vault hem de quote_vault LaunchLab authority PDA’sına ait token hesaplarıdır, her biri kendi mint’ine sahip olan programa oluşturulur — bu nedenle bir başlatma eski bir temel kasaya ve Token-2022 alıntı kasasına sahip olabilir veya başka herhangi bir kombinasyon. token_program_flag hangisinin hangisi olduğunu kaydeder. Adresler PoolState üzerinde depolanır ve ayrıca türetilebilir:
(Üretimde bir türetmeye güvenmeden önce tam tohum öneklerini kaynağın Initialize hesapları yapısından doğrulayın.)

Ücret kasaları

İki PDA ücretleri başlatmalar arasında toplar:
  • Yaratıcı ücret kasası — [creator, quote_mint] tohumlarında PDA. Aynı alıntı mint’inde aynı yaratıcı ücretlerini kazanan her başlatma aynı kasaya dökülür. Yaratıcı bunu ClaimCreatorFee aracılığıyla temizler.
  • Platform ücret kasası — [platform_config, quote_mint] tohumlarında PDA. Aynı platform aracılığıyla yönlendirilen ve aynı alıntı mint’ini kullanan her başlatma aynı kasaya dökülür. Platformun platform_fee_wallet’ı bunu ClaimPlatformFeeFromVault aracılığıyla temizler. Başlatmanın quote_vault’undan doğrudan çeken ve toplu kasadan geçmeyen başlatma başına bir temizleme varyantı da vardır (ClaimPlatformFee).
Her ikisi de ücret tahakkuk ettiren ilk swap’ta, alıntı mint’ine sahip olan programa tembel olarak oluşturulur. Eski ve Token-2022 alıntı mint’ine karşı başlatmalar çalıştıran bir yaratıcı veya platform, zaten iki farklı eski mint için yaptığı gibi mint başına bir kasa ile sonuçlanır. Toplu kasa deseni, yüksek hacimli bir yaratıcı veya platformun ücret birikiminin kira maliyetini birçok başlatma arasında amortize etmesini sağlar.

Alıntı kasası ↔ real_quote

quote_vault.balance ve PoolState.real_quote senkronize kalmalıdır. Üç bekleyen ücret sayacının toplamı kadar sapabilirler (quote_protocol_fee, platform_fee, migrate_fee), bunlar kasada oturur ancak ücret sayaçlarına ve eğri rezervine değil. Eğri matematik her zaman real_quote kullanır, asla ham kasa bakiyesini değil. Mezuniyet öncesi değişmez:

PlatformCurveRule

(PlatformConfig, GlobalConfig) çifti başına bir hesap, o yapılandırmada platformun izin verdiği başlatma şekillerini tutar. PDA tohumları [b"platform_curve_rule", platform_config, global_config]’tir.
Hesap hiçbir grup tutmadan oluşturulur ve her grup değişikliğinde yeniden boyutlandırılır, bu nedenle uzunluğu 150 + Σ(14 + 18 × constraints)’tir ve kod çözücüler sabit bir boyut varsaymamalıdır. Gruplar OR’lanır: bir grubun kısıtlamalarının tümü tutulur tutulmaz bir başlatmaya izin verilir. Sıfır grup kısıtlama yok anlamına gelir. Yalnızca sahibi PlatformConfig.restrict_curve_param 1 olduğunda okuyun — 0’da program hesabı yok sayar ve eski bir kural orada oturuyor olabilir. Alan kimlikleri, operatörler ve oyun kitapları products/launchlab/curve-rules içindedir.

Yaşam döngüsü hesap geçişleri

Sonraki adım

Kaynaklar:
  • raydium-launch/programs/launchpad/src/states/pool.rs — PoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — PDA tohum sabitleri (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • Raydium SDK v2 launchpad modülü.