Ana içeriğe atla

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 →
Solana’daki her işlem gören varlık — Raydium havuzunun her temel ve teklif varlığı dahil — iki programdan biri tarafından basılan bir tokendır: eski SPL Token programı veya onun halefi olan Token-2022. Bunlar farklı adreslerde bulunan ayrı programlardır ve farklı hesap düzenlerine ve uzantı semantiklerine sahiptir. Raydium her ikisini destekler, ancak her yerde değil: CPMM, CLMM ve Farm v6 Token-2022 mintlerini kabul eder; AMM v4 ise kabul etmez. Herhangi bir havuzla entegrasyondan önce bu ayrımı anlamak çok önemlidir.

İki program

SPL TokenToken-2022
Program IDTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DATokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Piyasaya sürülüş20202022
Hesap boyutu (token hesabı)165 B165 B + uzantılar (değişken)
UzantılarHayırEvet — 17+ resmi uzantı
Eski uyumlulukTamMint başına tercih etmeye bağlı
Her ikisi de Solana Labs ekibi (şu anda Anza) tarafından yönetilir ve solana-program-library deposu altında bulunur.

Neden iki program?

SPL Token, ileri uyumluluk için dondurulmuştur — bytekodu etkili bir şekilde değişmezdir ve tüm ekosistem için temiz bir temel oluşturur. Kullanım alanları büyüdükçe (stablecoin’ler aktarım ücreti istediğinde, kurumsal mintler nüanslı dondurma yetkilerine ihtiyaç duyduğunda, NFT’ler meta veri işaretçilerine ihtiyaç duyduğunda), Solana ekibi SPL Token’ı yükseltmek yerine ayrı bir genişletilebilir program olarak Token-2022’yi tanıttı. Bu, mevcut entegrasyonları korur ve her minti tam ihtiyacı olan uzantılara tercih etmesine izin verir. Token-2022, işlevsellikte kesin bir üst küme olmasına rağmen, adres alanında değildir: iki program bir arada var olur ve belirli bir adresdeki bir mint tam olarak birinin altında bulunur.

Hesap yapısı

Mint hesabı

Bir tokenin kimliğini tanımlar. SPL Token mint (82 bayt):
u32   mint_authority_option
Pubkey mint_authority
u64   supply
u8    decimals
bool  is_initialized
u32   freeze_authority_option
Pubkey freeze_authority
Token-2022 mint: aynı temel düzen, plus tabandan sonra sıfır veya daha fazla uzantı TLV (type-length-value) kaydı eklendi.

Token hesabı

Belirli bir mint’in belirli bir sahip için bakiyesini tutar. SPL Token hesabı (165 bayt):
Pubkey mint
Pubkey owner
u64    amount
u32    delegate_option
Pubkey delegate
u8     state         // initialized, frozen
u32    is_native_option
u64    is_native
u64    delegated_amount
u32    close_authority_option
Pubkey close_authority
Token-2022 hesabı: aynı temel yapı, herhangi bir uzantı aktifse uzantı TLV kayıtları.

Token-2022 uzantıları

Uzantılar, mintlere veya hesaplara eklenebilen modüler özelliklerdir. Her uzantı ayrı bir TLV kaydıdır. Raydium için önemli olanlar:

Aktarım ücreti

Mint, her aktarımda yüzdelik bir ücret talep edebilir. Ücret, yapılandırılmış bir geri çekme otoritesine gider. Raydium CPMM ve CLMM tarafından SwapV2 aracılığıyla desteklenir — program döviz kuru hesaplanırken ücreti hesaba katarak havuz matematiği tutarlı kalır.
let extension = TransferFeeConfig {
    transfer_fee_config_authority,
    withdraw_withheld_authority,
    withheld_amount: 0,
    older_transfer_fee: ...,
    newer_transfer_fee: ...,
};

Aktarım kancası

Mint, çalışma zamanının her aktarımda çağırdığı bir programa işaret eder. Kanca programı aktarımı reddedebilir veya yan etkiler gerçekleştirebilir (uyum durumunu güncelleme, günlüğe kaydetme vb.). Raydium CPMM/CLMM, kancayı SwapV2 aracılığıyla çağırır — işlem, kanca programını ve ihtiyacı olan ek hesapları içerir.

Faiz getiren

Zincir üzerindeki bakiye, yapılandırılmış bir oranda faiz tahakkuk eder. Gerçek mint yerine yalnızca ekranda gösterilir (bakiyeler zaman içinde daha yüksek görünür); temel arz değişmez.

Mint kapatma yetkisi

Arz sıfıra ulaştığında minti kapatmaya izin verir.

Kalıcı temsilci

Belirtilen bir cüzdan, herhangi bir hesaptan koşulsuz olarak token’ları aktarabilir veya yakabilir. Raydium, bu uzantıya sahip mintler için havuz oluşturmayı engeller — havuz rezervlerinin ele geçirilemeyeceği değişmezine uyumsuzdur.

Aktarılamaz

Token’lar basıldıkları hesaptan taşınamaz. Raydium havuz oluşturmayı engeller — işlem göremeyen bir varlık, LP havuzunun temel veya teklif varlığı olamaz.

Varsayılan hesap durumu

Bu mint için yeni token hesapları varsayılan olarak dondurulmuştur ve dondurma otoritesi tarafından çözülmelidir. Kullanılabilir ancak nadirdır.

Gizli aktarım

Bakiye ve aktarım tutarları şifrelenmiş. Raydium, gizli aktarım mintlerini desteklemez (havuz matematiği açık metin bakiyeler gerektirir).

Meta veri işaretçisi + token meta verisi

Token-2022 mintleri için Metaplex meta verilerinin yerini alır. Raydium havuz listeleri için desteklenir.

Grup / Üye işaretçisi

Bir minti bir gruba ait olarak bildirir (ör. NFT koleksiyonu). Bilgilendirici; Raydium bunu görüntüleme için kullanır. Tam liste için resmi Token-2022 uzantıları sayfasına bakın.

Hangi Raydium ürünleri neleri destekler

ÜrünSPL TokenToken-2022Notlar
AMM v4EvetHayırOpenBook entegrasyonu SPL Token gerektirir
CPMMEvetEvetToken-2022 havuzları için SwapV2 gerektirir
CLMMEvetEvetToken-2022 havuzları için SwapV2 gerektirir
Farm v6EvetEvetStake mint ve reward mint’leri için desteklenir
LaunchLabEvetEvetMezun CPMM havuzları Token-2022 desteğini devralır
Raydium havuzları için mint uygunluğu — listelenenler hariç tüm uzantılara izin verilir:
  • Engellenen: aktarılamaz, kalıcı temsilci, gizli aktarım, varsayılan hesap durumu (reddedilen yapılandırmalarda).
  • Uyarı ile izin verilen (LP riski kabul etmelidir): aktarım ücreti, aktarım kancası, dondurma otoritesi etkin.
  • Tamamen izin verilen: faiz getiren, meta veri işaretçisi, grup işaretçisi, mint kapatma yetkisi.
getPoolInfoFromRpc yanıtı, mintin uzantı bayraklarını içerir — istemciler LP yapmadan önce kontrol etmelidir.

Token hesabı standartları

İlişkili Token Hesabı (ATA)

Her iki program da İlişkili Token Hesabı kuralını paylaşır: [owner, programId, mint] üzerinden İlişkili Token Programı (ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL) aracılığıyla türetilen bir PDA. Solana’daki hemen hemen her kullanıcı token hesabı bir ATA’dır.
import { getAssociatedTokenAddressSync } from "@solana/spl-token";

// SPL Token
const ata = getAssociatedTokenAddressSync(mint, owner);

// Token-2022
const ata22 = getAssociatedTokenAddressSync(
  mint,
  owner,
  false,               // allowOwnerOffCurve
  TOKEN_2022_PROGRAM_ID,
);
ATA programı, mintin hangi programa ait olduğuna göre uygun token programına ait hesaplar oluşturur.

ATA olmayan token hesapları

Bir cüzdan, tek bir mint için birden fazla token hesabına sahip olabilir; ATA sadece kuralın adıdır. Havuz hazıneları, örneğin ATA değildir — bunlar havuz programının PDA’ları olup havuzun rezervlerini tutarlar.

Mintin hangi programa ait olduğunu tespit etme

Her mintin hesabının, SPL Token veya Token-2022’yi gösteren bir owner alanı vardır:
const mintInfo = await connection.getAccountInfo(mintPubkey);
if (mintInfo.owner.equals(TOKEN_PROGRAM_ID)) {
  console.log("SPL Token mint");
} else if (mintInfo.owner.equals(TOKEN_2022_PROGRAM_ID)) {
  console.log("Token-2022 mint");
}
Raydium SDK bu tespiti otomatik olarak işler — getPoolInfoFromRpc istemcilerin doğru ATA’lar oluşturabilmesi için token başına uygun programId’yi döndürür.

Program tarafından swap talimatları

Raydium’un CPMM ve CLMM’nin her biri iki swap talimatına sahiptir:
TalimatDesteklenen Mintler
Swap / SwapBaseInput (eski)Sadece SPL Token
SwapV2 / SwapBaseInputV2SPL Token ve Token-2022 her ikisi
SwapV2 ek hesaplar alır: her iki taraf için mint hesapları, her taraf için token programı (farklı olabileceğinden), ve — aktarım kancası mintleri için — kanca programı ve gereken hesapları. İstemciler, en az bir taraf Token-2022 olduğunda SwapV2’yi her zaman kullanmalıdır; SwapV2 SPL-only havuzlar için de çalışır, ancak eski Swap işlem gücünde daha ucuzdur. SDK doğru varyantı otomatik olarak seçer.

SPL Token projesini Token-2022’ye geçirme

Token-2022, mint düzeyinde bir değiştirme değildir — X adresinde bir mint ya SPL ya da Token-2022’dir ve bu oluşturulurken sabittir. “Geçirmek” için şunları yapmalısınız:
  1. İstediğiniz uzantılarla Token-2022 altında yeni bir mint oluşturun.
  2. Eski SPL mint sahiplerine yeni mint için takas/sarmalama mekanizması sağlayın.
  3. Tüm LP havuzları, çiftlikleri ve entegrasyonları yeni minti referans edecek şekilde güncelleyin.
Bu ağırdır. Çoğu proje SPL altında başlar ve belirli bir uzantı ihtiyacı taşımaya zorlamamadığı sürece SPL altında kalır.

Örnek çalışma: Aktarım ücreti ile Token-2022 mint oluşturma

import {
  Connection, Keypair, SystemProgram, Transaction, sendAndConfirmTransaction,
} from "@solana/web3.js";
import {
  TOKEN_2022_PROGRAM_ID, ExtensionType, createInitializeMintInstruction,
  getMintLen, createInitializeTransferFeeConfigInstruction,
} from "@solana/spl-token";

const connection = new Connection("https://api.mainnet-beta.solana.com");
const payer      = Keypair.generate();
const mint       = Keypair.generate();

const extensions    = [ExtensionType.TransferFeeConfig];
const mintLen       = getMintLen(extensions);
const rentLamports  = await connection.getMinimumBalanceForRentExemption(mintLen);

const tx = new Transaction().add(
  SystemProgram.createAccount({
    fromPubkey:       payer.publicKey,
    newAccountPubkey: mint.publicKey,
    space:            mintLen,
    lamports:         rentLamports,
    programId:        TOKEN_2022_PROGRAM_ID,
  }),
  createInitializeTransferFeeConfigInstruction(
    mint.publicKey,
    payer.publicKey,                  // transfer fee authority
    payer.publicKey,                  // withdraw-withheld authority
    50,                               // 50 bps = 0.5%
    BigInt(1_000_000),                // max fee per transfer (smallest units)
    TOKEN_2022_PROGRAM_ID,
  ),
  createInitializeMintInstruction(
    mint.publicKey,
    9,                                // decimals
    payer.publicKey,                  // mint authority
    null,                             // freeze authority
    TOKEN_2022_PROGRAM_ID,
  ),
);

await sendAndConfirmTransaction(connection, tx, [payer, mint]);
Bu mint, Raydium CPMM havuzuna LP olabilir; değiş tokuşçular havuzun swap ücreti üzerine %0.5 aktarım ücreti ödeyecekler.

Güvenlik değerlendirmeleri

Bir Token-2022 minte LP yapmadan veya onun aracılığıyla değiş tokuş yapmadan önce:
  • freeze_authority’yi kontrol edin. Null değilse ve merkezi bir taraf tarafından tutuluyorsa, sizin ATA’nızı (ve tartışmalı şekilde havuz hazinesini) dondurabilirler.
  • transfer_hook’u kontrol edin. Kanca programı aktarımları keyfi olarak engelleyebilir — kanca kaynağı hakkında araştırma yapın.
  • transfer_fee’yi kontrol edin. Beklenen swap çıktısında ücreti hesaba katın.
  • permanent_delegate ve non_transferable’u kontrol edin. Raydium’un programı bunları reddeder, ancak özel entegrasyon oluşturuyorsanız doğrulayın.
Tam risk kabul çerçevesi için security/oracle-and-token-risks’a bakın.

İşaretçiler

Kaynaklar: