@solana/kit, eklentilerle genişlettiğiniz küçük bir sunucu olan createClient'ı içerir. Her
eklenti bir yetenek ekler — RPC bağlantısı, imzalayıcı, işlem planlama —
ve oluşturulan istemci; betikleri, sunucu rotalarını ve arayüzleri eşit şekilde destekler.
Bir React uygulaması mı geliştiriyorsunuz? React kılavuzu, bu istemciyi
@solana/react ile sararak bileşenlerin cüzdan durumunu ve RPC verilerini
hook'lar aracılığıyla okumasını sağlar. Oradan başlayın ve daha ince kontrole
ihtiyaç duyduğunuzda buraya dönün.
Kurulum
$npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer
Herhangi bir paket yöneticisi kullanabilirsiniz. Kit v7+ ve @solana/kit-plugin-* paketleri
0.13+ sürümündedir.
İstemci oluşturma
Eklentileri .use(...) ile birleştirin. Önce imzalayıcıyı, ardından RPC bağlantısını ayarlayın.
solanaDevnetRpc(), client.rpc'yi, abonelikleri, işlem
planlayıcı/yürütücüsünü ve client.sendTransaction yardımcısını ekler — bu sayede bir uygulama bu parçaları
neredeyse hiç kendisi bağlamak zorunda kalmaz.
import { createClient, generateKeyPairSigner } from "@solana/kit";import { solanaDevnetRpc } from "@solana/kit-plugin-rpc";import { signer } from "@solana/kit-plugin-signer";const payer = await generateKeyPairSigner();const client = createClient().use(signer(payer)).use(solanaDevnetRpc());const slot = await client.rpc.getSlot().send();console.log("current slot", slot);
signer eklentisi hem ücret ödeyiciyi hem de uygulama kimliğini ayarlar. RPC paketi,
önceden tanımlanmış bir ödeyiciye ihtiyaç duyar; bu yüzden sıralama önem taşır.
İmzalayıcı türleri
@solana/kit-plugin-signer, bir istemcinin yalnızca ihtiyaç duyduğu yetkiyi verebilmesi için üç rol sunar:
signer(x)— hemclient.payer'ı hem declient.identity'yi ayarlar.payer(x)— yalnızca ücret ödeyici.identity(x)— yalnızca uygulama yetkisi.
Her birinin testler ve betikler için *FromFile(path) (Node), generated*(), generated*WithSol(amount)
ve airdrop*() türevleri mevcuttur.
İşlem gönderme
Oluşturulan bir program istemcisiyle talimatlar oluşturun, ardından bunları
client.sendTransaction'a iletin. Planlayıcı blockhash'i çözer, hesaplamayı tahmin eder,
istemcinin ödeyicisiyle imzalar ve gönderir.
import { getTransferSolInstruction } from "@solana-program/system";import { address, lamports } from "@solana/kit";const transfer = getTransferSolInstruction({source: client.payer,destination: address("Fke...address"),amount: lamports(10_000_000n) // 0.01 SOL});const { context } = await client.sendTransaction([transfer]);console.log("submitted", context.signature);
sendTransaction, bir sonuç nesnesine çözümlenir; işlem imzası
result.context.signature konumundadır. Planın tek bir işleme sığdığını doğrular, aksi takdirde
hata fırlatır — bir toplu işlem birden fazla işleme yayılabiliyorsa sendTransactions kullanın.
RPC paketi seçimi
@solana/kit-plugin-rpc, küme ön ayarlarıyla birlikte gelir:
solanaDevnetRpc()— devnet varsayılanları, airdrop etkin (client.airdrop).solanaMainnetRpc()— mainnet; airdrop derleme zamanı hatasıdır.solanaLocalRpc()— yerel validator içinhttp://127.0.0.1:8899.solanaRpc({ rpcUrl })— herhangi bir uç nokta.
import { solanaRpc } from "@solana/kit-plugin-rpc";const client = createClient().use(signer(payer)).use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));
Ayrıntılı düzeyde birleştirme
Ön ayarlar; RPC bağlantısını, planlayıcıyı, yürütücüyü ve gönderme yardımcılarını bir arada sunar, bu nedenle
çoğu uygulama bu parçalara ayrı ayrı ihtiyaç duymaz. Ayrıntılı eklentilere yalnızca birini
özelleştirmek için başvurun — örneğin özel bir planlayıcı veya farklı bir abonelik kanalı.
Bu yol ayrıca @solana/kit-plugin-instruction-plan paketini de gerektirir; ön ayarlar bunu
otomatik olarak dahil eder:
import {solanaRpcConnection,rpcAirdrop,rpcTransactionPlanner,rpcTransactionPlanExecutor} from "@solana/kit-plugin-rpc";import { planAndSendTransactions } from "@solana/kit-plugin-instruction-plan";const client = createClient().use(signer(payer)).use(solanaRpcConnection({ rpcUrl: "https://api.devnet.solana.com" })).use(rpcAirdrop()).use(rpcTransactionPlanner()).use(rpcTransactionPlanExecutor()).use(planAndSendTransactions());
Program istemcileri ekleme
Oluşturulan @solana-program/* paketleri, program çağrılarının istemci üzerinden yapılabilmesi için
istemci eklentileri sunar. İhtiyacınız olan programı yükleyin ve eklentisini .use() ile ekleyin:
import { tokenProgram } from "@solana-program/token";const client = createClient().use(signer(payer)).use(solanaDevnetRpc()).use(tokenProgram()); // adds client.token
Tarayıcı cüzdanı olmadan imzalama
Bir API rotasında, worker'da veya betikte başsız modda mı çalışıyorsunuz? Ham bir keypair yerine bir arka uç anahtar yönetim servisiyle imzalayın. Bkz. Keychain ve Üretimde İmzalama.
Solana geliştiricileri için yaygın desenler
- Paylaşılan kurulum: İstemciyi bir çekirdek modülde bir kez oluşturun ve betiklere, sunucu rotalarına ve arayüzünüze aktarın.
- Sunucu taraflı okumalar: Yalnızca
signer+solanaRpciçeren bir istemci (cüzdan eklentisi olmadan) sunucudan hesapları okur ve işlemleri simüle eder. - Yerel test: Bellek içi bir validator'a karşı çalıştırmak için RPC paketini
@solana/kit-plugin-litesvm'den.use(litesvm())ile değiştirin (yalnızca Node). - Test edilebilirlik: Oluşturulan istemci kolayca taklit edilebilir — tarayıcı cüzdanı olmadan RPC yanıtlarını veya imzalayıcıları taslak olarak oluşturun.
Is this page helpful?