İlk Solana Programınızı Dağıtma
Bu bölümde, Anchor framework kullanarak basit bir Solana programı (akıllı sözleşme) oluşturacak, dağıtacak ve test edeceksiniz. Sonunda, ilk programınızı Solana blockchain'ine dağıtmış olacaksınız.
Bu bölümün amacı, sizi Solana Playground ile tanıştırmaya odaklanıyor. Rehber, Program Derived Address (PDA) ve Cross-Program Invocation (CPI) bölümlerinde daha detaylı bir örneği anlatıyor. Daha fazla bilgi için Solana'da Programlar sayfasına bakın.
Anchor Projesi Oluşturma
Önce, yeni bir tarayıcı sekmesinde https://beta.solpg.io adresini açın.
-
Sol panel üzerindeki "Create a new project" (Yeni proje oluştur) düğmesine tıklayın.
-
Bir proje adı girin, framework olarak Anchor'ı seçin ve ardından "Create" (Oluştur) düğmesine tıklayın.
Yeni Proje
Program kodunun src/lib.rs
dosyasında olduğu yeni bir proje oluşturulduğunu
göreceksiniz.
Bu temel Solana programı yeni bir hesap oluşturur ve içine bir sayı kaydeder.
Program bir talimat (initialize
) içerir ve şunları yapar:
- Girdi olarak bir
data: u64
parametresi gerektirir - Yeni bir hesap oluşturur
data: u64
parametresinin değerini hesabın verisine kaydeder- İşlemin program günlüklerine bir mesaj kaydeder
use anchor_lang::prelude::*;// This is your program's public key and it will update// automatically when you build the project.declare_id!("11111111111111111111111111111111");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}}#[derive(Accounts)]pub struct Initialize<'info> {// We must specify the space in order to initialize an account.// First 8 bytes are default account discriminator,// next 8 bytes come from NewAccount.data being type u64.// (u64 = 64 bits unsigned integer = 8 bytes)#[account(init,payer = signer,space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct NewAccount {data: u64}
Programı oluşturma ve dağıtma
Programı oluşturmak için terminalde sadece build
komutunu çalıştırın. build
komutu programı derler. Program bayt kodu daha sonra dağıtıldığında
çalıştırılabilir bir program hesabında saklanır.
$build
Solana Playground, declare_id!()
içindeki adresi günceller. Bu adres,
programınızın zincir üzerindeki adresini (program ID) temsil eder.
Programı oluşturduktan sonra, programı ağa (varsayılan olarak devnet) dağıtmak
için terminalde deploy
komutunu çalıştırın. Program dağıtımı, programı
depolayan zincir üzerindeki hesaba SOL tahsis etmeyi gerektirir.
Dağıtımdan önce, yeterli SOL'unuz olduğundan emin olun. Playground terminalinde
solana airdrop 5
komutunu çalıştırarak veya
Web Faucet kullanarak devnet SOL alabilirsiniz.
$deploy
Ayrıca sol panel üzerindeki Build
ve Deploy
düğmelerini de
kullanabilirsiniz.
Oluştur ve Dağıt
Programı dağıttıktan sonra, talimatlarını çağırabilirsiniz.
Programı test et
Başlangıç kodu, tests/anchor.test.ts
konumunda bir test dosyası içerir. Bu
dosya, istemciden programa initialize
talimatının nasıl
çağrılacağını gösterir.
// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});});
Programı dağıttıktan sonra test dosyasını çalıştırmak için terminalde
test
komutunu çalıştırın.
$test
Testin başarıyla geçtiğini onaylayan çıktıyı arayın.
Ayrıca sol panel üzerindeki Test
düğmesini de kullanabilirsiniz.
Test Çalıştır
Daha sonra solana confirm -v
komutunu çalıştırarak ve test çıktısından işlem
hash'ini (imzasını) belirterek işlem günlüklerini görüntüleyebilirsiniz:
$solana confirm -v [TxHash]
Örneğin:
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
İşlem imzasını (hash) arayarak SolanaFM veya Solana Explorer üzerinde de işlem detaylarını görüntüleyebilirsiniz.
Kullandığınız Explorer'daki küme (ağ) bağlantısını Solana Playground ile eşleşecek şekilde güncellemeyi unutmayın. Solana Playground varsayılan olarak devnet kümesini kullanır.
Programı kapat
Son olarak, programı kapatmak, zincir üzerindeki programa tahsis edilen SOL'un tamamen geri kazanılmasını sağlar.
declare_id!()
içinde bulunan program adresini belirterek aşağıdaki komutu
çalıştırarak bir programı kapatabilirsiniz:
$solana program close [ProgramID]
Örneğin:
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Tebrikler. Anchor framework'ünü kullanarak ilk Solana programınızı oluşturdunuz ve dağıttınız.
Is this page helpful?