Rust ile Lokal olarak Solana programı kurulum, derleme ve dağıtım
Rust, Solana programlarını yazmak için en yaygın kullanılan programlama dilidir. Bu hızlı başlangıç kılavuzu, ilk Rust tabanlı Solana programınızı blockchain'e hızlı bir şekilde kurmayı, derlemeyi ve dağıtmayı gösterecektir.
Bu kılavuz, Solana CLI kullanır ve yerel geliştirme ortamınızı kurduğunuzu varsayar. Hızlı bir şekilde kurulum yapmak için bölgesel geliştirme hızlı başlangıç kılavuzumuzu
buradan kontrol edin.
Ne öğreneceksiniz
- Rust dilini yerel olarak nasıl kurulur
- Yeni bir Solana Rust programını nasıl başlatırsınız
- Rust'ta temel bir Solana programını nasıl kodlarsınız
- Rust programınızı nasıl derler ve dağıtırsınız
Rust ve Cargo'yu Kurun
Rust tabanlı Solana programlarını derleyebilmek için Rust dilini ve Cargo'yu (Rust paket yöneticisi) Rustup kullanarak kurun:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Yerel doğrulayıcınızı çalıştırın
Solana CLI, yerleşik olarak test doğrulayıcısını içerir. Bu komut satırı aracı, makinenizde tam bir blockchain kümesi çalıştırmanıza olanak tanır.
solana-test-validator
Solana test doğrulayıcısını, açık kalacak yeni / ayrı bir terminal penceresinde çalıştırın. Bu komut satırı programı, yerel doğrulayıcınızın çevrimiçi kalması ve harekete hazır olması için çalışır durumda kalmalıdır.
Solana CLI'nizi, gelecekteki tüm terminal komutlarınız ve Solana programı dağıtımınız için yerel doğrulayıcınızı kullanacak şekilde yapılandırın:
solana config set --url localhost
Cargo ile yeni bir Rust kütüphanesi oluşturun
Rust'ta yazılan Solana programları kütüphanelerdir ve BPF bayt koduna
derlenir ve .so
formatında kaydedilir.
Cargo komut satırı aracılığıyla hello_world
adında yeni bir Rust kütüphanesi başlatın:
cargo init hello_world --lib
cd hello_world
Yeni Rust kütüphanenize solana-program
crate'ini ekleyin:
cargo add solana-program
solana-program
ve diğer Solana Rust bağımlılıklarınızı, kurulu olan Solana CLI sürümünüzle uyumlu tutmanız şiddetle önerilir. Örneğin, eğer Solana CLI 2.0.3
sürümünü kullanıyorsanız, bunun yerine:
cargo add solana-program@"=2.0.3"
komutunu çalıştırabilirsiniz. Bu, crate'inizin yalnızca 2.0.3
sürümünü kullanmasını ve başka bir şey kullanmamasını sağlar. Eğer Solana bağımlılıklarıyla ilgili uyumluluk sorunları yaşarsanız, Solana Stack Exchange adresine göz atabilirsiniz.
Cargo.toml
dosyanızı açın ve uygun bir şekilde proje adınızı güncelleyerek gerekli Rust kütüphane yapılandırma ayarlarını ekleyin:
[lib]
name = "hello_world"
crate-type = ["cdylib", "lib"]
İlk Solana programınızı oluşturun
Rust tabanlı Solana programınızın kodu src/lib.rs
dosyanızda yer alacaktır. src/lib.rs
içinde Rust crate'lerinizi içe aktarıp mantığınızı tanımlayabileceksiniz. Favori editörünüzde src/lib.rs
dosyanızı açın.
lib.rs
'nin en üstüne solana-program
crate'ini içe aktarın ve gerekli öğeleri yerel ad alanına getirin:
use solana_program::{
account_info::AccountInfo,
entrypoint,
entrypoint::ProgramResult,
pubkey::Pubkey,
msg,
};
Her Solana programı, Solana runtime'ına onchain kodunuzu çalıştırmaya nereden başlayacağını söyleyen bir entrypoint
tanımlamalıdır. Programınızın entrypoint'ı
, process_instruction
adında bir genel fonksiyon sağlamalıdır:
// programın giriş noktasını tanımlayıp dışa aktar
entrypoint!(process_instruction);
// program giriş noktasının uygulanması
pub fn process_instruction(
_program_id: &Pubkey,
_accounts: &[AccountInfo],
_instruction_data: &[u8]
) -> ProgramResult {
// blockchain'e bir mesaj kaydedin
msg!("Hello, world!");
// programdan nazikçe çık
Ok(())
}
Her onchain programı, Ok
sonuç enum'unu ()
değeri ile döndürmelidir. Bu, Solana runtime'ına programınızın hatasız başarılı bir şekilde çalıştığını söyler.
Yukarıdaki program, basitçe bir mesajı "Hello, world!" olarak blockchain kümesine kaydedecek ve daha sonra Ok(())
ile nazikçe çıkacaktır.
Rust programınızı derleyin
Bir terminal penceresinde, Rust programınızı projenizin kök dizininde (yani, Cargo.toml
dosyanızın bulunduğu dizinde) çalıştırarak derleyebilirsiniz:
cargo build-sbf
Her Rust programınızı derledikten sonra yukarıdaki komut, derlenmiş programınızın
.so
dosyasının build yolunu ve program adresi için kullanılacak varsayılan anahtar dosyasını çıktılayacaktır.cargo build-sbf
, kurulu solana CLI araçlarından araç zincirini yükler. Herhangi bir sürüm uyuşmazlığı yaşarsanız, bu araçları yükseltmeniz gerekebilir. Eğer şu hatayı alırsanız:error while loading shared libraries: librustc_driver-278a6e01e221f788.so
,~/.cache/solana/
dizinine gidip oradaki platform araçlarınırm -rf
komutu ile silmeniz ve ardındancargo build-sbf
komutunu tekrar çalıştırmanız gerekebilir.
Solana programınızı dağıtın
Solana CLI kullanarak, programınızı mevcut seçili kümenize dağıtabilirsiniz:
solana program deploy ./target/deploy/hello_world.so
Solana programınız dağıtıldığında (ve işlem sonuçlandırıldığında), yukarıdaki komut programınızın genel adresini (program id olarak da bilinir) çıktılayacaktır.
# örnek çıktı
Program Id: EFH95fWg49vkFNbAdw9vy75tM7sWZ2hQbTTUmuACGip3
Tebrikler!
Rust dilini kullanarak bir Solana programı başarıyla kurup, derleyip ve dağıttınız.
Yeni dağıttığınız programınızı görmek için Solana Explorer kullanabilirsiniz. Explorer, yerel ağda da çalışıyor, yerel ağda Solana Explorer'ı açabilirsiniz ve sadece programId'nizi arama çubuğuna yapıştırabilirsiniz.
Hello World programını çağırma
Artık program dağıtıldığında, onu çağırmak ve zincir üzerinde gerçek "Hello World" mesajını görmek istiyoruz. Bunun için Javascript ve Solana web3.js
kütüphanesini kullanacağız.
Node.js'i Kurun
Windows'ta WSL2 üzerinde node kullanmak için lütfen bu WSL2 üzerinde node kurulum kılavuzunu takip edin.
sudo apt-get install curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
terminali yeniden açın
nvm install --lts
node --version
macOS için paket yöneticisi aracılığıyla node.js kurabilirsiniz
İstemci dosyasını oluşturun
Solana web3.js kütüphanesini ve Solana yardımcı kütüphanesini yükleyin:
npm install @solana/web3.js@1 @solana-developers/helpers@2
client.mjs
adında yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
import {
Connection,
PublicKey,
Transaction,
TransactionInstruction,
} from "@solana/web3.js";
import { getKeypairFromFile } from "@solana-developers/helpers";
const programId = new PublicKey("YOUR_PROGRAM_ID");
// Bir Solana kümesine bağlanın. Yerel test doğrulayıcınıza ya da devnet'e
const connection = new Connection("http://localhost:8899", "confirmed");
//const connection = new Connection("https://api.devnet.solana.com", "confirmed");
// Önceki adımda oluşturduğumuz anahtar çiftini yüklüyoruz
const keyPair = await getKeypairFromFile("~/.config/solana/id.json");
// Her işlem için bir blockhash gereklidir
const blockhashInfo = await connection.getLatestBlockhash();
// Yeni bir işlem oluştur
const tx = new Transaction({
...blockhashInfo,
});
// Hello World talimatını ekleyin
tx.add(
new TransactionInstruction({
programId: programId,
keys: [],
data: Buffer.from([]),
}),
);
// Daha önce oluşturduğunuz anahtar çifti ile işlemi imzalayın
tx.sign(keyPair);
// İşlemi Solana ağına gönderin
const txHash = await connection.sendRawTransaction(tx.serialize());
console.log("İşlem hash'i ile gönderildi:", txHash);
await connection.confirmTransaction({
blockhash: blockhashInfo.blockhash,
lastValidBlockHeight: blockhashInfo.lastValidBlockHeight,
signature: txHash,
});
console.log(
`Tebrikler! 'Hello World' işleminizi Solana Explorer'da görüntüleyin:
https://explorer.solana.com/tx/${txHash}?cluster=custom`,
);
Dağıtım adımından aldığınız program ID'sini
YOUR_PROGRAM_ID
ile değiştirmeyi unutmayın.
İstemciyi çalıştırın
Artık bu dosyayı çalıştırmak için node
kullanarak zincir üzerindeki "Hello World" mesajını görebiliriz.
node client.mjs
Aşağıdaki çıktıyı görmelisiniz:
Tebrikler! 'Hello World' işleminizi Solana Explorer'da görüntüleyin:
https://explorer.solana.com/tx/2fTcQ74z4DVi8WRuf2oNZ36z7k9tGRThaRPXBMYgjMUNUbUSKLrP6djpRUZ8msuTXvZHFe3UXi31dfgytG2aJZbv?cluster=custom
Bağlantıyı takip ederseniz, Solana Explorer'da 'Hello World' işleminizi görebilirsiniz.
Solana devnet'e dağıtım yapın
Artık programınızı yerel kümenize başarıyla dağıttınız. Programınızı arkadaşlarınıza göstermek için halka açık devnet'e dağıtmak isterseniz, aşağıdaki komutu çalıştırabilirsiniz:
solana program deploy ./target/deploy/hello_world.so --url https://api.devnet.solana.com
Ardından, client.mjs
dosyanızdaki bağlantı URL'sini de https://api.devnet.solana.com
olarak değiştirin ve istemciyi tekrar çalıştırın.
node client.mjs
Önceki gibi aynı çıktıyı göreceksiniz, ancak şimdi halka açık devnet kümesinde. İşlemi tekrar Solana Explorer üzerinde görebilirsiniz. Artık sağ üstte devnet'e geçmeniz yeterli.
Tebrikler, artık herkes sizin "Hello World" işleminizi Solana blockchain'inde görebilir.
Sonraki adımlar
Rust tabanlı Solana programları yazmayı öğrenmek için aşağıdaki bağlantılara göz atın:
Solana programı yazma genel bakış
- Solana Hızlı Başlangıç Kılavuzu
Rust ile Solana programları geliştirmeyi öğrenin
Onchain programları hata ayıklama