İ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 ProjeYeni 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
lib.rs
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 logs
Ok(())
}
}
#[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.

Terminal
$
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.

Terminal
$
deploy

Ayrıca sol panel üzerindeki Build ve Deploy düğmelerini de kullanabilirsiniz.

Oluştur ve DağıtOluş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.

anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const 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 transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const 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.

Terminal
$
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ırTest Ç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:

Terminal
$
solana confirm -v [TxHash]

Örneğin:

Terminal
$
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:

Terminal
$
solana program close [ProgramID]

Örneğin:

Terminal
$
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?

İçindekiler

Sayfayı Düzenle