Solana'da ödemeler nasıl çalışır

Solana'da ödeme akışları oluşturmadan önce beş temel kavramı anlamanız gerekir: cüzdanlar, stablecoin'ler, token hesapları, ücretler ve işlemler. Solana ödemeleri, çok para birimli ödeme sistemlerine net bir şekilde eşlenir:

Geleneksel ödeme modeliSolanaAçıklama
Müşteri kimliği / Hesap numarasıCüzdan adresiHesap sahibi için benzersiz tanımlayıcı
Para birimi (USD, EUR)Token mint (USDG, USDC)Transfer edilen varlık türü
Para birimine göre bakiyeToken hesabı (ATA)Belirli bir para birimi/mint bakiyesi tutar

Bir banka müşterisinin tek bir kimliği olup her para birimi için ayrı bakiyeleri olduğu gibi, bir Solana cüzdanının da tek bir adresi vardır ancak sahip olduğu her varlık için ayrı bir token hesabı bulunur. Her bileşeni inceleyelim.

Cüzdanlar: gönderenler ve alıcılar

Her ödeme, her biri bir cüzdan adresi ile tanımlanan iki tarafı içerir—benzersiz bir 32 baytlık genel anahtar (örneğin, 7EcDhS...).

  • Gönderen: Ödemeyi başlatan cüzdan. Yeterli stablecoin hesap bakiyesine sahip olmalı ve işlemi imzalamalıdır.
  • Alıcı: Hedef cüzdan. İmzalaması veya mevcut bir bakiyeye sahip olması gerekmez.
  • Ücret ödeyen: İsteğe bağlı ücret ödeyen cüzdan. Kullanıcılar arasında sübvanse edilmiş veya yalnızca stablecoin işlemlerini etkinleştirmek için kullanılabilir.

Cüzdan adreslerini banka hesap numaraları gibi düşünün: herkese açık, paylaşılması güvenli ve para göndermek veya almak için gerekli.

Stablecoin'ler

Stablecoin'ler Solana'da "token" olarak adlandırılır. Token'lar ağ üzerinde bir varlık türünü temsil eder. Her token'ın "mint adresi" adı verilen benzersiz bir tanımlayıcısı vardır. Ödeme sistemleri oluştururken, etkileşimde bulunduğunuz varlığı tanımlamak için bu mint adreslerine başvuracaksınız. Mainnet'te yaygın olarak kullanılan bazı stablecoin mint'leri şunlardır:

TokenYayıncıMint Adresi
USDCCircleEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTTetherEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
PYUSDPayPal2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
USDGPaxos2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH

Solana üzerindeki stablecoin'ler hakkında daha fazla bilgi için Stablecoin'ler çözüm sayfasına bakın.

Ödeme kabul ederken, her zaman mint adresini ve Token Program'ı doğrulayın. Token'lar aynı isimleri paylaşabilir ancak farklı yayıncılara ve dayanak varlıklara sahip olabilir.

Token hesapları

Cüzdanlar token'ları doğrudan tutmaz. Bunun yerine, her cüzdan sahip olduğu her token türü için bir token hesabı üzerinde yetkiye sahiptir. Ödemeler, gönderenin token hesabından alıcının aynı mint'e ait token hesabına token transfer edilerek yapılır:

Token hesaplarıToken hesapları

Bir Associated Token Account (ilişkili token hesabı), belirli bir cüzdana ve mint'e bağlı deterministik bir token hesabıdır. Bir cüzdan adresi ve mint verildiğinde, ATA adresi her zaman aynıdır.

  1. Her mint için bir ATA. Bir cüzdanın USDC için tam olarak bir ATA'sı, USDT için bir ATA'sı vb. vardır.
  2. Almadan önce var olmalıdır. Var olmayan bir ATA'ya token gönderemezsiniz.
  3. Genellikle gönderen oluşturur. Alıcının ATA'sı yoksa, gönderen ödeme işleminin bir parçası olarak onu oluşturabilir.
import { findAssociatedTokenPda } from "@solana-program/token";
const [receiverATA] = await findAssociatedTokenPda({
mint: USDG_MINT_ADDRESS,
owner: receiverWallet.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS
});

Token Program'lar

Solana'da programlar, hesap durumunu yöneten çalıştırılabilir mantıktır. Token hesapları bir Token Program tarafından yönetilir—transferleri doğrulayan ve bakiyeleri atomik olarak güncelleyen zincir üstü koddur.

Solana'nın iki Token Program'ı vardır:

ProgramAdresBu programı
kullanan örnek token'lar
Token ProgramTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAUSDC, USDT
Token-2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbPYUSD, USDG

Token-2022 (ayrıca "Token Extensions" olarak da bilinir), transfer hook'ları, transfer ücretleri ve gizli transferler gibi özellikler ekler. Her iki program da temel transferler için benzer şekilde çalışır, ancak ATA'ları türetirken doğru programı kullanmalısınız.

Bunun önemi

Bir token oluşturmak için kullanılan Token Program, token için talimatları ve hesap durumunu yönetir. Yanlış programı kullanırsanız, token'ı transfer edemezsiniz.

ATA'lar üç girdiden türetilir: wallet + mint + token_program. Yanlış programı kullanmak tamamen farklı bir adres üretir:

import {
findAssociatedTokenPda,
TOKEN_PROGRAM_ADDRESS
} from "@solana-program/token";
import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
// USDC uses Token Program
const [usdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_PROGRAM_ADDRESS // ✓ Correct
});
// ❌ This will produce a different address because it uses the wrong program
const [wrongUsdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ❌ Wrong program
});
// PYUSD uses Token-2022
const [pyusdAta] = await findAssociatedTokenPda({
mint: PYUSD_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ✓ Correct
});

Yanlış programla bir ATA türetmek geçersiz bir adres üretecektir. Programı her zaman token'ın mint'iyle eşleştirin.

Aynı ilke transfer talimatları için de geçerlidir. Her token programının kendi transfer talimatı vardır ve doğru olanı çağırmalısınız:

import { getTransferInstruction } from "@solana-program/token";
import { getTransferInstruction as getTransferInstruction22 } from "@solana-program/token-2022";
// For USDC (Token Program)
const usdcTransferIx = getTransferInstruction({
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
});
// For PYUSD (Token-2022)
const pyusdTransferIx = getTransferInstruction22({
source: senderPyusdAta,
destination: receiverPyusdAta,
authority: senderWallet,
amount: 1_000_000n // 1 PYUSD (6 decimals)
});
// *Note*: Most token program JS Client functions include the ability
// to specify the token program address. Generally, defining it is a
// good practice to ensure you are fully aware of the program you are using
const usdcTransferIx2 = getTransferInstruction(
{
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
},
{ tokenProgram: TOKEN_PROGRAM_ADDRESS }
);

Yanlış programa bir transfer talimatı göndermek başarısız olacaktır. Program, ilgili token hesaplarına sahip olduğunu doğrular—Token Program tarafından oluşturulan hesaplar Token-2022 aracılığıyla transfer edilemez ve bunun tersi de geçerlidir.

Bir token'ın veya token hesabının hangi programı kullandığını doğrulamak için, mint veya token hesabını getirin ve owner alanını kontrol edin:

import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const accountInfo = await rpc.getAccountInfo(address(mintAddress)).send();
// The owner field tells you which program manages this token
const tokenProgram = accountInfo.value?.owner;
// Returns: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA (Token Program)
// or: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb (Token-2022)

Ödeme uygulamaları için, desteklenen her token'ın yanında doğru program adresini saklayın:

const SUPPORTED_TOKENS = {
USDC: {
mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
program: TOKEN_PROGRAM_ADDRESS,
decimals: 6
},
PYUSD: {
mint: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
program: TOKEN_2022_PROGRAM_ADDRESS,
decimals: 6
}
};

Token Extensions

Token Extensions Program (Token 2022), extensions olarak adlandırılan ekstra talimatlar aracılığıyla daha fazla özellik sağlar. Extensions, bir token mint veya token account'a ekleyebileceğiniz isteğe bağlı özelliklerdir.

Token Extensions hakkında daha fazla bilgi için Token Extensions belgelerine bakın.

Ücretler

Solana ödemeleri üç adede kadar maliyet bileşeni içerir:

Ücret türüSOLUSD (tahmini)Ne zaman
Temel işlem ücreti5.000 lamport*~$0,0007Her işlemde (amorti etmek için birden fazla ödemeyi paketleyin)
Öncelik ücretiDeğişkenDeğişkenİsteğe bağlı; yoğunluk sırasında daha hızlı dahil edilme
Hesap oluşturma (rent)~0,0029 SOL~$0,40Yalnızca yeni bir token account oluştururken

Ödeme başına toplam maliyet: Çoğu transfer için 1 doların altında. Yeni bir token account oluşturuyorsanız, toplam ~$0,40 bekleyin.

Solana yerel ücret piyasaları kullanır—her programın işlemleri yalnızca aynı durumu hedefleyen diğer işlemlerle rekabet eder. Bu, ağın başka yerlerinde yüksek aktivite dönemlerinde bile ödeme ücretlerinin düşük ve öngörülebilir kalması anlamına gelir. Rent maliyetlerinin de yakın gelecekte %50 azaltılması planlanmaktadır.

Kullanıcıların SOL ile hiç etkileşime girmemesi için ücretleri tamamen soyutlayabilirsiniz. Uygulama kalıpları için Fee Abstraction bölümüne bakın.

İşlemler ve talimatlar

Bir işlem, Solana'da atomik yürütme birimidir—ya her operasyon başarılı olur, ya da hiçbiri olmaz. Her işlem bir veya daha fazla talimat içerir; bunlar bireysel komutlardır (örneğin, "10 USDC transfer et," "token account oluştur").

Tipik bir ödeme işlemi iki talimat içerebilir: alıcının token account'ını oluştur (gerekirse), ardından token'ları transfer et. Her ikisi de atomik olarak yürütülür—kısmi durumlar yoktur. Payment Processing bölümünde göreceğiniz gibi, maliyetleri azaltmak ve verimi artırmak için birden fazla ödemeyi tek bir işlemde paketleyebilirsiniz.

Hepsini bir araya getirmek

Tipik bir ödeme akışı:

  1. Girdi toplama. Gönderen ve alıcı cüzdan adreslerini ve transfer edilecek token'ın mint adresini alın.
  2. ATA'ları türetme. Her iki taraf için token hesaplarını belirleyin.
  3. Oluşturma ve imzalama. Gerekli transfer talimatlarıyla işlemi oluşturun, gönderenin anahtarıyla imzalayın.
  4. Gönderme ve onaylama. İşlem bir saniyeden kısa sürede sonuçlanır.

Sonraki adımlar


* lamport, SOL'un en küçük birimidir ve 0.000000001 SOL'a eşittir

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

© 2026 Solana Vakfı.
Tüm hakları saklıdır.
Bağlanın