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 giriş, yaklaşan bir LaunchLab program güncellemesini kapsamaktadır. Dağıtımdan önce yerel yayın dalına karşı doğrulanmıştır. Yeni talimatı veya değiştirilmiş MigrateToAmm düzenini kullanmadan önce dağıtılan programı doğrulayın.
Bu, LaunchLab’ın geçiş iskeletini taşımayı bıraktığı yayındır. Önceki yükseltmelerin yumuşak bir şekilde iniş yapmasını sağlamak için üç ayrı mekanizma vardı: get_upgrade_timestamp, birkaç kontrolün saati karşılaştırdığı sabit kodlanmış bir kesme tarihi; bu tarihten üç gün sonra çalışmaya devam eden kullanımdan kaldırılan bir Initialize; ve MigrateToAmm’nin OpenBook tesisatı, AMM v4 kendi OpenBook bağımlılığını kaldırdıktan sonra Temmuz ayında konuşacak hiçbir şeyi yoktu. Üçü de gitti. Mainnet’te kesme tarihi aylar geçmiş durumda, bu nedenle davranışsal etki sıfırdır — ancak hata modları değişti ve bir hesap listesi sert bir şekilde değişti. Çerçeve aynı zamanda hareket etti: Anchor 0.32.1’den =1.0.2’ye, Agave 2.3.0’dan 3.1.10’a. Ve AMM v4 ve CPMM’de olduğu gibi, kira geri almak için yeni bir admin talimatı vardır. İşlem, ücretler, vesting, eğri kuralları ve platform yapılandırması değişmemiştir.

Entegratörler için TL;DR

  • Hiçbir işlem talimatı hesaplarını, argümanlarını veya matematiklerini değiştirmedi. BuyExactIn, BuyExactOut, SellExactIn, SellExactOut bayt-özdeştir. Hiçbir hesap düzeni değişmedi.
  • Initialize (kullanımdan kaldırılan) artık her zaman NotApproved (6000) ile başarısız oluyor, herhangi bir hesabı okumadan önce. InitializeV2 kullanın. Bunun aracılığıyla oluşturulan başlatmalar normal şekilde işlem yapar ve mezun olur.
  • MigrateToAmm, geçiş cüzdanı için sert bir kırılmadır. Üç argümanı (base_lot_size, quote_lot_size, market_vault_signer_nonce) ve dokuz hesabı kaybetti. Aşağıya bakın.
  • Üç işlem remaining_accounts artık koşulsuz olarak gereklidir, ve system_program yuvası doğrulanır. Bunları atlayan bir oluşturucu artık her zaman NotEnoughRemainingAccounts (6018) ile başarısız olur, sadece kesme sonrasında değil.
  • Bir talimat eklendi: CollectExcessLamports. Yalnızca admin. Bkz. products/launchlab/instructions.
  • Bir hata kodu eklendi: 6031 LamportsCalculateError. Kodlar 60006030 değişmemiştir.
  • Üç MigrateToCpswap adres kısıtlaması talimat gövdesine taşındı, hatasını ConstraintAddress (2012) yerine RequireKeysEqViolated (2502) olarak değiştirdi.
  • Bir IDL yenilemesi gereklidir. Bir yeni talimat, bir kaldırılan argüman seti, dokuz kaldırılan hesap, bir yeni hata varyantı.

MigrateToAmm OpenBook yarısını kaybetti

Bu, bir şeyi kırma olasılığı en yüksek olan değişikliktir. Eski talimat verileri ayırıcıdan sonra 17 bayt argüman taşıyordu; yeni veriler çıplak ayırıcıdır. Eski hesap listeleri artık yapıda bulunmayan dokuz hesabı taşıyordu, bu nedenle ilk kaldırımdan sonraki her şey yanlış hizalanmıştır. Kaldırılan argümanlar: base_lot_size: u64, quote_lot_size: u64, market_vault_signer_nonce: u8. Üçü de program tarafından CPI aracılığıyla başlatılan OpenBook pazarını yapılandırmak için vardı. Bu CPI — initialize_openbook_market — nonce’u doğrulayan gen_vault_signer_key kontrolü ile birlikte gitti. 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. Son biri AMM v4’ün Initialize2 artık almadığı için gitti. market hesabı kalır, orijinal konumunda. AMM v4 hala pazarı AmmInfo üzerinde bir referans alanı olarak kaydeder, bu nedenle LaunchLab hala onu iletir. Bunun hakkında iki şey değişti: program artık onu başlatmıyor ve artık tamamen doğrulanmamış — bildirimi, openbook_program hesabı ile birlikte gelen owner = openbook_program.key() olmayan çıplak bir #[account(mut)] ve onu değiştiren hiçbir şey yoktur. Geçiş cüzdanının oraya geçirdiği her şey doğrudan AMM v4’ün Initialize2 CPI’sine iletilir ve yeni havuzda kaydedilir. Bu alanın arkasında gerçek bir başlatılmış pazarı isteyenin bunu önceden oluşturması gerekir ve program bunu söylemeyecektir. Ortaya çıkan 23 hesaplı liste products/launchlab/instructions üzerinde tam olarak belgelenmiştir. MigrateToCpswap etkilenmez — hiçbir zaman argümanı yoktu ve hesap listesi değişmemiştir.

Kullanımdan kaldırılan Initialize her zaman başarısız olur

initialize daha önce yumuşak bir kullanımdan kaldırma çalıştırıyordu: get_upgrade_timestamp() + 3 days kadar çalışıyordu, sonra NotApproved döndürüyordu. Zaman damgası yardımcısı silindiğinde, hata koşulsuz — işleyici artık bir msg! ve err!(NotApproved) ve başka hiçbir şey değildir. Günlükleri okuyorsanız bir ayrıntı: Accounts yapısı değişmemiş ve hala dört init kısıtlaması taşıyor, bu nedenle Anchor’ın oluşturulan hesap doğrulama prologu çalışıyor — ve işleyici dönmeden önce bu hesapları oluşturuyor. İşlem her iki şekilde de geri alınır, bu nedenle hiçbir şey gerçekten oluşturulmaz, ancak hata hesap doğrulamasından sonra ortaya çıkar. Talimat kaldırılmak yerine tutulur, böylece ayırıcısı işgal edilmiş kalır ve IDL istikrarlı bir şekil tutar. Argüman ve hesap tanımları hala tarihsel işlemleri çözmek için belgelenmeye değerdir ve sayfa bunları bir uyarının arkasında tutar.

get_upgrade_timestamp kapısı gitti

Yardımcı local ve devnet özellikleri altında 0 döndürdü ve aksi takdirde sabit kodlanmış mainnet zaman damgası 1755522000 (2025-08-18 13:00 UTC). Dört talimat saati buna karşı karşılaştırdı, kaynakta beş referans arasında. Her biri koşulsuz olarak kesme sonrası dalı haline gelir: Mainnet zaman damgası bir yıldan fazla geçmiş durumda, bu nedenle doğru, güncel bir oluşturucu hiçbir davranış değişikliği görmez. Değişen şey, eski bir oluşturucunun artık devnet derlemesine karşı çalışıyor gibi görünmek yerine belirleyici bir şekilde başarısız olmasıdır. Yeni system_program doğrulaması gerçekten yenidir: bu yuva daha önce herhangi bir hesabı kabul ediyordu.

CollectExcessLamports

SIMD-0437 Adım 1, 3 Eylül 2026’da mainnet’e indi ve kira-muaf minimumu %9 oranında kesiyor ve dört adım daha geliyor. Bir adımdan önce oluşturulan her LaunchLab havuz kasası, ücret kasası ve programa ait PDA artık aşırı finanse edilmiştir. Talimat dört sabit hesabı alır — imzalayan/hedef cüzdan, bir kasa yetkilisi PDA ve her iki token programı — sonra remaining_accounts içinde herhangi sayıda kaynak hesabı. authority yuvası dikkatle okumaya değer kısımdır. LaunchLab’ın üç kasa yetkilisi PDA’sı vardır (vault_auth_seed, platform_fee_vault_auth_seed, creator_fee_vault_auth_seed) ve talimat geçirdiğiniz olanı üçünü de yeniden türeterek ve eşleştirerek çözer; hiçbiriyle eşleşmeyen bir anahtar InvalidOwner (6001) ile başarısız olur. Bir çağrı bir yetkilisi taşıdığından ve token programı her hesabın gerçek sahibinin imzalamasını gerektirdiğinden, kaynak hesaplar yetkiliye göre gruplandırılmalıdır — havuz kasaları, platform ücret kasaları ve yaratıcı ücret kasaları ayrı işlemlerde temizlenir. Programa ait PDA’lar doğrudan borçlandırılır ve herhangi bir yetkiliye eşlik edebilir. Sarılı SOL, CPMM ve AMM v4’ün kullandığı aynı SyncNative → delta boyutlu UnwrapLamports → değişmemiş olduğunu doğrula dizisini izler, gidiş-dönüş sıfıra net değilse LamportsCalculateError (6031) ile. SOL-alıntılı bir başlatma tam alıntı rezervini tutar. Temel mintler temizlenemez. InitializeV2 ve InitializeWithToken2022, temel bir mint için WithdrawExcessLamports imzalayabilen hiçbir anahtarın olmadığı aynı talimatında MintTokens öğesini iptal eder. Kira tasarım gereği mahsur kalır. İmzalayan, paylaşılan program yöneticisi veya özel bir lamport toplama cüzdanı olabilir; adresler reference/program-addresses içindedir.

MigrateToCpswap kısıtlama yeniden konumlandırması

Üç hesap kısıtlaması Accounts yapısından çıkıp talimat gövdesine taşındı:
Gereksinim aynıdır — üçü de PoolState üzerinde depolanan değerlerle eşleşmelidir. Yalnızca hata yüzeyi farklıdır: Anchor’ın genel RequireKeysEqViolated (2502), bir hesap adı olmadan raporlanan, ConstraintAddress (2012) yerine suçlu hesabı adlandırır. Bu üç hesap için 2012 ile eşleşen herhangi bir hata işlemesini güncelleyin.

Araç zinciri ve bağımlılık değişiklikleri

Anchor 1.0’ın iki çağrı yeri değişikliği burada da geçerlidir: Context dört yaşam süresi parametresinden bire çöker ve CpiContext::new programın AccountInfo yerine Pubkey öğesini alır. Bkz. sdk-api/rust-cpi. Zincir üzerinde hiçbir etkisi olmayan iki derleme sistemi ayrıntısı: local özelliği localnet ile değiştirildi, bu da yerel cüzdanı LAUNCHPAD_LOCALNET_ADMIN ortam değişkeninden admin olarak derler (yarn test:local-admin bunu bağlar) ve programs/launchpad/Cargo.toml içindeki yinelenen [profile.release] bloğu silindi — Cargo, çalışma alanı kökü dışında [profile] öğesini yok sayar, bu nedenle kök bloğu zaten yürürlükteydi, program düzeyindeki bloğun panic = "abort" öğesinin hiçbir zaman uygulanmadığı gerçeği de dahil olmak üzere.

Değişmeyen şeyler

  • Her hesap düzeni. PoolState, GlobalConfig, PlatformConfig, PlatformCurveRule, PlatformAllowConfig, vesting kayıtları — aynı boyutlar, aynı ofsetler.
  • Hata kodları 60006030, kasıtlı olarak tutulan 6020 dahil.
  • Eğri matematik, ücret oranları, ücret tahakkuku, vesting zamanlamaları ve mezuniyet LP bölünmesi.
  • Platform eğri kuralları ve GlobalConfig izin listesi. Aynı talimatlar, aynı hesaplar, aynı anlambilim; yalnızca eğri kuralı kontrolü etrafındaki saat kapısı gitti.
  • MigrateToCpswap’ın hesap listesi ve remaining_accounts endeksleri.
  • Token-2022 transfer-fee yetkilisi mezuniyet sırasında devri.
  • Program ID’si. Değişmemiş.

Güncellenen sayfalar

  • products/launchlab/instructionsCollectExcessLamports hesap listesi, yetkilisi çözümleme tablosu ve gruplandırma uyarısı ile eklendi; MigrateToAmm’nin argüman ve hesap kaldırmaları tam yeni liste ile belgelenmiştir; Initialize her zaman başarısız uyarısı ile ön yüzlenmiştir; yeni “İşlem kalan hesapları” bölümü artık koşulsuz üç hesabı ve system_program kontrolünü kapsamaktadır; MigrateToCpswap izin-yalnızca yolu ve yeniden konumlandırılan kısıtlamalar hakkında not; envanter ve durum değişikliği matris satırları.
  • products/launchlab/overview — yayın başlığı; “Yalnızca CPMM” ve temel mint değişmezleri düzeltilmiştir.
  • products/launchlab/accounts — mint-yetkilisi iptal etme zamanlaması başlatma oluşturmaya düzeltilmiştir (mezuniyet sırasında belgelenmiştir); CollectExcessLamports satırı eklendi.
  • reference/error-codes6031 belgelenmiştir.
  • reference/program-addresses — yeni “Excess-lamports toplama cüzdanları” bölümü.
  • solana-fundamentals/rent-and-reclaimable-rent — yeni “Raydium programlarının kendi tarafında temizledikleri şeyler” bölümü.
  • sdk-api/rust-cpi, solana-fundamentals/toolchain — Anchor 1.0 pinleri ve CPI geçiş notları.