Temel ödeme

Solana, 0,001 doların altında ücretlerle anında, küresel token transferleri sağlar. İster sınır ötesi havale, ister bordro ödemeleri veya hazine operasyonları oluşturuyor olun, temel bir stablecoin ödemesi bir saniyenin altında gerçekleşir ve bir sentin çok küçük bir kısmına mal olur.

Nasıl çalışır

Bir ödeme, gönderenin token hesabından alıcının token hesabına stablecoin'leri taşır. Alıcı bu token'ı ilk kez alıyorsa, token hesabı aynı işlemin bir parçası olarak oluşturulabilir.

Temel ödeme kavramları için Solana'da ödemeler nasıl çalışır bölümüne bakın.

@solana-program/token-2022'dan gelen token2022Program() eklentisi, @solana/kit istemcinizi bir client.token2022 yardımcısıyla genişletir. transferToATA metodu, ATA türetme ve işlem oluşturma süreçlerini otomatik olarak yönetir; bu da tek seferlik ödeme transferleri için idealdir.

Aşağıdaki adımlar temel akışı gösterir. Tam çalıştırılabilir kod için Demo bölümüne bakın.

Token yardımcısını oluşturun

.use(token2022Program()) kullanarak token2022Program() eklentisini istemcinize ekleyin. Bu işlem, yaygın token işlemleri için metotlar sunan instructions'e sahip client.token2022'ı kullanıma açar.

Token-2022 programına ait mintler için token2022Program() kullanın; orijinal Token Program'a ait mintler için ise @solana-program/token'dan gelen tokenProgram()'ı kullanın.

Ödemeyi gönderin

Cüzdanlar arasında token transferi yapmak için transferToATA() kullanın. Metot şunları yönetir:

  • ATA Çözümleme: Gönderici ve alıcı için Associated Token Account'ları (ATA) otomatik olarak türetir. Alıcının associated token account'ı mevcut değilse, hesabı oluşturmak için gereken talimat aynı işleme otomatik olarak eklenir.
  • Kontrollü Miktarlar: Temel birimler cinsinden amount ile birlikte minting'in decimals değerini girin. Transfer, zincir üzerinde minting'in ondalık basamaklarına göre kontrol edilir (ör. 250000 temel birim -> mint 6 ondalık basamağa sahipse 0,25 token)
  • İşlem Oluşturma: sendTransaction() işlemi oluşturur, imzalar ve gönderir; context.signature alanı işlem imzasını içeren bir sonuçla çözümlenir
Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();

Bakiyeleri doğrula

Transfer tamamlandıktan sonra RPC'den token bakiyelerini okuyun. findAssociatedTokenPda() ile her cüzdanın ATA'sını türetin, ardından o hesabın bakiyesini almak için getTokenAccountBalance()'i çağırın.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();

Token yardımcısını oluşturun

.use(token2022Program()) kullanarak token2022Program() eklentisini istemcinize ekleyin. Bu işlem, yaygın token işlemleri için metotlar sunan instructions'e sahip client.token2022'ı kullanıma açar.

Token-2022 programına ait mintler için token2022Program() kullanın; orijinal Token Program'a ait mintler için ise @solana-program/token'dan gelen tokenProgram()'ı kullanın.

Ödemeyi gönderin

Cüzdanlar arasında token transferi yapmak için transferToATA() kullanın. Metot şunları yönetir:

  • ATA Çözümleme: Gönderici ve alıcı için Associated Token Account'ları (ATA) otomatik olarak türetir. Alıcının associated token account'ı mevcut değilse, hesabı oluşturmak için gereken talimat aynı işleme otomatik olarak eklenir.
  • Kontrollü Miktarlar: Temel birimler cinsinden amount ile birlikte minting'in decimals değerini girin. Transfer, zincir üzerinde minting'in ondalık basamaklarına göre kontrol edilir (ör. 250000 temel birim -> mint 6 ondalık basamağa sahipse 0,25 token)
  • İşlem Oluşturma: sendTransaction() işlemi oluşturur, imzalar ve gönderir; context.signature alanı işlem imzasını içeren bir sonuçla çözümlenir

Bakiyeleri doğrula

Transfer tamamlandıktan sonra RPC'den token bakiyelerini okuyun. findAssociatedTokenPda() ile her cüzdanın ATA'sını türetin, ardından o hesabın bakiyesini almak için getTokenAccountBalance()'i çağırın.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());

Demo

Demo
// Generate signers for sender and recipient
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
console.log("Sender Address:", sender.address);
console.log("Recipient Address:", recipient.address);
// Demo Setup: Create client, mint account, and fund the sender with initial tokens
const { client, mint } = await demoSetup(sender);
console.log("\nMint Address:", mint.address);
// =============================================================================
// Basic Token Payment Demo
// =============================================================================
// Transfer tokens from sender to recipient. The source and destination ATAs are
// derived automatically, and the recipient's ATA is created if it does not exist.
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n, // 0.25 tokens (base units for a mint with 6 decimals)
decimals: 6
})
.sendTransaction();
console.log("\n=== Token Payment Complete ===");
console.log("Transaction Signature:", result.context.signature);
// Derive the sender and recipient ATAs to read their balances
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
// Fetch final token account balances via RPC
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();
console.log(
"\nSender Token Account Balance:",
senderBalance.value.uiAmountString
);
console.log(
"Recipient Token Account Balance:",
recipientBalance.value.uiAmountString
);
// =============================================================================
// Demo Setup Helper Function
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

İçindekiler

Sayfayı Düzenle
© 2026 Solana Vakfı. Tüm hakları saklıdır.