Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
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 →
Hak kazanım (vesting) bir LaunchLab başlatmasında isteğe bağlıdır.
Initialize sırasında vesting_param.total_locked_amount = 0 ayarlayın ve aşağıdaki bölüm geçerli olmaz. Etkinleştirildikten sonra, takvim başlatmanın ömrü boyunca sabittir; cliff ve açılış dönemleri geriye dönük olarak değiştirilemez.Neden hak kazanım
Bonding curve, fundraising sırasındabase_supply_graduation tokolar satar ve kalanını mezuniyet sonrası havuza katar. Hak kazanım, arzdan ek bir pay ayırır, bunu yapılandırılabilir bir cliff için kilitler ve ardından bunu doğrusal olarak bir veya daha fazla benefisiyere serbest bırakır — genellikle yaratıcının ekibi, danışmanları veya platform ortakları.
Pratik kullanım durumları:
- Takım ayırması. Bir yaratıcı, örneğin, arzın %5’ini kurucu ekip için ayrılır, 6 ay boyunca kilitlenir ve takip eden 12 ay boyunca doğrusal olarak açılır.
- Platform ayırması. Bir başlatma platformu, listelediği her tokenin bir dilimini aynı takvim üzerinde
CreatePlatformVestingAccountaracılığıyla alır. - Danışman / katkıda bulunan hibe verileri. Kendi
VestingRecordhesaplarına sahip birden fazla benefisiyeri, her biri talep edilen miktarını bağımsız olarak takip eder.
ClaimVestedToken çağrırana kadar havuzun base_vault’unda uyur durmda kalırlar.
Takvim şekli
Bir başlatma için hak kazanım,Initialize zamanında kaydedilen üç sayı tarafından tanımlanır:
| Alan | Tür | Anlam |
|---|---|---|
total_locked_amount | u64 | Tüm benefisiyenler genelinde kilitli tüm temel tokolar toplamı (yaratıcı + platform). Bağlayıcı GlobalConfig’ten total_locked_amount <= supply * max_lock_rate / 1_000_000 koşulunu sağlamalıdır. |
cliff_period | u64 (saniye) | Fundraising bitip herhangi bir token açılmadan önce bekleme süresi. |
unlock_period | u64 (saniye) | Cliff sonrasında doğrusal açılış penceresinin süresi. 0 cliff’in sonunda her şeyin anında açılması anlamına gelir. |
PoolState.vesting_schedule üzerinde (VestingSchedule yapısı) ve zincir üstü start_time ile birlikte yaşar; program bunu fundraising başarıyla bittiğinde (mezuniyet koşulları ilk karşılandığında) block_time + cliff_period olarak kaydeder.
allocated_share_amount, CreateVestingAccount / CreatePlatformVestingAccount aracılığıyla VestingRecord hesaplarına zaten atanan toplam tutardır. Asla total_locked_amount’ı aşmamalıdır. Bir yaratıcı aşırı tahsis ederse, sonraki CreateVestingAccount çağrısı InvalidTotalLockedAmount ile geri döner.
Doğrusal açılış formülü
Fundraising bittikten sonra, program herVestingRecord için kümülatif açılan tutarı şu şekilde hesaplar:
unlock_period == 0 ise, tüm token_share_amount start_time de tek adımda talep edilebilir hale gelir. Aksi takdirde curve, start_time de 0’dan start_time + unlock_period de token_share_amount’a kadar düz bir çizgidir ve bundan sonra token_share_amount ile sınırlandırılır.
Her ClaimVestedToken çağrısında aktarılan tutar, yeni hesaplanan kümülatif açılan tutar ile kayıttaki çalışan claimed_amount alanı arasındaki deltadır.
start_time öncesinde bir talep VestingNotStarted ile geri döner. start_time + unlock_period sonrasında bir talep tam kalanını kapatır.
Hesap düzenleri
VestingSchedule
PoolState üzerinde satır içi yaşar. Bkz. accounts.
VestingRecord
Benefisiyerin başına düşen kayıt. PDA şu şekilde türetilir:
VestingRecord’si olabilir. Aynı benefisiyeye aynı başlatmada tekrar tahsis etmek, PDA zaten var olduğu için geri döner.
Komutlar
CreateVestingAccount
Yalnızca yaratıcı. Havuzun total_locked_amount’ının bir dilimini yeni bir benefisiyeye tahsis eder, yeni bir VestingRecord PDA’sı başlatarak.
Argümanlar
| # | Ad | W | S | Notlar |
|---|---|---|---|---|
| 1 | creator | W | S | pool_state.creator’a eşit olmalıdır; yeni hesap için kirayı öder. |
| 2 | beneficiary | W | Daha sonra açılan tokolar alır. Pubkey burada kilitlenir — değiştirilemez. | |
| 3 | pool_state | W | vesting_schedule.allocated_share_amount’ı artırmak için mutate edilir. | |
| 4 | vesting_record | W | init; PDA [b"pool_vesting", pool_state, beneficiary]. | |
| 5 | system_program | Hesap oluşturma için gereklidir. |
share_amount > 0.pool_state.vesting_schedule.allocated_share_amount + share_amount <= total_locked_amount.beneficiarypubkey’i bu havuz için mevcutVestingRecord’si yok.
vesting_recordtoken_share_amount = share_amount,claimed_amount = 0ile başlatılır.pool_state.vesting_schedule.allocated_share_amount += share_amount.
InvalidTotalLockedAmount, InvalidInput.
CreatePlatformVestingAccount
CreateVestingAccount’un platform-yöneticisi varyantı. Platformun hak kazanım cüzdanı (PlatformConfig.platform_vesting_wallet’da depolanır) benefisiyeridir ve pay PlatformConfig.platform_vesting_scale ile sınırlandırılır.
İmzalayan platform_config.platform_vesting_wallet eşit olmalıdır. Diğer hesaplar CreateVestingAccount aynıdır. Platform, listelediği her başlatmada sabit bir hak kazanım payı almak için sözleşme yaptığında bunu kullanın.
ClaimVestedToken
Yalnızca benefisiyeri. Havuzun base_vault’ından benefisiyerin ATA’sına yeni açılan tokolar aktarır.
Argümanlar
Hiçbiri (program talep tutarını tablosundan hesaplar).
Hesaplar
| # | Ad | W | S | Notlar |
|---|---|---|---|---|
| 1 | beneficiary | W | S | vesting_record.beneficiary’e eşit olmalıdır. |
| 2 | authority | PDA [b"vault_auth_seed"]; kasaiyetini imzalar. | ||
| 3 | pool_state | W | Yalnızca takvim yeniden doğrulanması gerekiyorsa mutate edilir. | |
| 4 | vesting_record | W | claimed_amount güncellenir. | |
| 5 | base_vault | W | Havuzun temel-token kasası; borçlandırılır. | |
| 6 | beneficiary_ata | W | Açılan tokolar alır; init_if_needed. | |
| 7 | base_mint | Havuzun temel madeni. | ||
| 8 | token_program | SPL Token veya Token-2022 programı. | ||
| 9 | associated_token_program | Gerekirse ATA oluşturma için. | ||
| 10 | system_program | Hesap oluşturma için gereklidir. |
block_time >= pool_state.vesting_schedule.start_time(aksi takdirdeVestingNotStarted).pool_state.status == PoolStatus::Migrated— mezuniyet zaten yapılmış olmalıdır. Mezuniyetten önce çağrı yapmak geri döner.- Açılan tutar deltası sıfırdan büyüktür. No-op çağrısı (hesaplanan delta 0) geri döner.
vesting_record.claimed_amountyeni kümülatif açılan tutara ilerler.- Temel tokenın
delta_amount’ıbeneficiary_ata’ya aktarılır.
VestingNotStarted, NoAssetsToCollect, MathOverflow.
Çalışılan örnek
Bir başlatma ayarları:supply = 1_000_000_000total_locked_amount = 100_000_000(arzın %10’u)cliff_period = 180 * 86400(180 gün)unlock_period = 365 * 86400(cliff’ten sonra 1 yıl doğrusal)
Initialize sonrası hemen iki VestingRecord hesabını ayırır:
- Benefisiyeri A (takım):
share_amount = 70_000_000 - Benefisiyeri B (danışman):
share_amount = 30_000_000
allocated_share_amount = 100_000_000, total_locked_amount’a eşit — başka tahsisler mümkün değil.
Fundraising 2027-01-01T00:00Z de tamamlanır. Program start_time = 2027-01-01 + 180 gün = 2027-06-30 ayarlar.
2027-09-30 de (start_time sonrası 90 gün), Benefisiyeri A ClaimVestedToken çağırır:
vesting_record.claimed_amount 17_260_274’e ilerler.
Altı ay sonra (2028-03-31, start_time sonrası 270 gün), A tekrar talep eder:
2028-06-30 sonrasında (unlock_period sonu), sonraki talep kalan ~18.22M’ı aktarır ve claimed_amount == token_share_amount bırakır.
Uç durumlar
- Benefisiyeri anahtarını kaybeder.
VestingRecord.beneficiary’deki pubkey,ClaimVestedTokençağırabilen tek imzalayıcıdır. Kurtarma yolu yoktur. Kurtarma önemliyse benefisiyeri multisig’e ayarlayın. - Token-2022 aktarım ücretleri. Temel madeni bir transfer-fee uzantısına sahip Token-2022 madeni ise, benefisiyeri tam delta değil
delta_amount − transfer_feealır. Havuzun kasası, aktarılan tutarı brüt olarak kaydeder — fark madeni’nin alıkoyulan-ücret hesabına tahakkuk eder. - Havuz mezuniyet almadı. Mezuniyet öncesi
ClaimVestedTokençağrısı yapmak geri döner. Hak kazanım saati yalnızca fundraising gerçekten tamamlandığında başlar; durdurulan başlatma (start_time’ı asla ayarlamaz) kilitli tokolar kasada ulaşılamaz bırakır. - Aşırı tahsis denemesi. Program
allocated_share_amount <= total_locked_amountöğesini herCreateVestingAccount’da uygular.total_locked_amount’ın kalan kısmı (varsa) tahsis edilmemiş kaybolur — başlatma mezuniyete ulaştıktan sonra bu tokolar kasada sonsuza kadar kalır. Tam tutarı tahsis edin, böyle bir niyetiniz yoksa.
İşaretçiler
products/launchlab/accounts—VestingScheduledahil tamPoolStatedüzeni.products/launchlab/instructions— mezuniyet yaşam döngüsü.products/launchlab/platform-config— platform tahsisleri içinplatform_vesting_scaleanlamı.products/launchlab/global-config—total_locked_amount’ı sınırlandıranmax_lock_ratetavanı.
raydium-launch/programs/launchpad/src/states/vesting.rs—VestingRecord.raydium-launch/programs/launchpad/src/states/pool.rs—VestingSchedule,VestingParams,is_vesting_started,vesting_end_time.raydium-launch/programs/launchpad/src/instructions/create_vesting_account.rs.raydium-launch/programs/launchpad/src/instructions/claim_vested_token.rs.


