@solana/client çalışma zamanı yüzeyini yalın tutar. Tek bir depo, tek bir RPC
yığını ve bir cüzdan kaydı, farklı yardımcılara güç sağlar; böylece aynı örnek
CLI'ları, betikleri veya tam kullanıcı arayüzlerini destekleyebilir. Eylemler,
izleyiciler ve yardımcılar, bu tek istemci aracılığıyla önbelleği, abonelikleri
ve cüzdan oturumlarını paylaşır.
Tamamen React tabanlı bir deneyim oluştururken genellikle
@solana/react-hooks ile başlamak daha
hızlıdır. Hooks paketi aynı istemci çalışma zamanını sarar ve hazır hook'lar
sunar; böylece headless istemciye yalnızca ekstra kontrole ihtiyaç
duyduğunuzda inersiniz.
Kurulum
$npm install @solana/client
Herhangi bir paket yöneticisi kullanabilirsiniz; istemci tarayıcılarda, worker'larda, React'te, Svelte'de veya sunucu tarafı çalışma zamanlarında çalışır.
Bir kez istemci oluşturun
Wallet Standard bağlayıcılarını seçin (otomatik keşif başlamak için en hızlı yoldur), ardından istemciyi oluşturun. Bu tek nesne depoyu, eylemleri, izleyicileri ve yardımcıları ortaya çıkarır.
import { autoDiscover, createClient } from "@solana/client";const client = createClient({endpoint: "https://api.devnet.solana.com",websocketEndpoint: "wss://api.devnet.solana.com",walletConnectors: autoDiscover()});await client.actions.connectWallet("wallet-standard:phantom");const balance = await client.actions.fetchBalance("Fke...address");console.log(balance.lamports?.toString());
İstemci deposu küme yapılandırmasını, abonelikleri, bekleyen işlemleri ve cüzdan oturumlarını takip eder. Kalıcılığa veya çoklu sekme koordinasyonuna ihtiyacınız varsa kendi Zustand deponuzu sağlayabilirsiniz.
Cüzdan orkestrasyon
Bağlayıcılar, Wallet Standard meta verilerini ve bağlanma/bağlantıyı kesme
mantığını kapsüller. Yerleşik phantom(), solflare(), backpack() veya
autoDiscover() yardımcılarını kaydedin ya da özel sağlayıcıları
createWalletStandardConnector ile sarın. Tüm cüzdan eylemleri (bağlanma,
bağlantıyı kesme, imzalama, gönderme) istemci kaydından geçer; böylece her
tüketici senkronize kalır.
Eylemler, izleyiciler ve yardımcılar
- Eylemler depoyu güncellerken yaygın RPC okuma ve yazma işlemlerini sarar
(örn.
fetchAccount,requestAirdrop,setCluster). - İzleyiciler websocket aboneliklerini çoğullar, güncellemeleri depoya akıtır ve temizlik için iptal tutamaçları verir.
- Yardımcılar SOL transferleri, SPL token yardımcıları, imza yoklaması ve işlem havuzları gibi üst düzey akışları ortaya çıkarır.
const abortWatcher = client.watchers.watchBalance({ address: "Fke...address" },(lamports) => {console.log("live balance", lamports.toString());});// Later when the component unmounts or the flow endsabortWatcher.abort();
İşlem yardımcı deseni
İşlem yardımcısı blockhash yenileme, ücret ödeyici çözümlemesi ve imzalamayı yönetir. Tercih ettiğiniz UX ile hazırlayabilir, inceleyebilir ve gönderebilirsiniz.
const prepared = await client.helpers.transaction.prepare({authority: client.store.getState().wallet.session!,instructions: [instructionA, instructionB]});await client.helpers.transaction.simulate(prepared, {commitment: "processed"});const signature = await client.helpers.transaction.send(prepared);console.log("submitted", signature.toString());
Önceden hazırlanmış bir akış (simülasyon artı günlükleme) için prepareAndSend
kullanın veya tel formatını kendiniz aktarmadan önce imzaları manuel olarak
toplamak için sign / toWire çağırın.
Tarayıcı cüzdanı olmayan bir API rotasında, worker'da veya komut dosyasında başsız mı çalışıyorsunuz? Ham bir keypair yerine bir arka uç anahtar yönetim hizmeti ile imzalayın. Bkz. Keychain ve Üretimde İmzalama.
Solana geliştiricileri için yaygın kalıplar
- Başsız durum makineleri: İstemciyi API rotalarında, komut dosyalarında veya worker'larda çalıştırarak kullanıcı arayüzünüzü destekleyen aynı cüzdan + RPC orkestrasyon mantığını yeniden kullanın.
- Gerçek zamanlı gösterge panelleri: İzleyicileri (bakiyeler, hesaplar, imzalar) tercih ettiğiniz UI kütüphanesiyle birleştirin; istemci websocket dağıtımını ve önbellek geçersiz kılmayı yönetir.
- Özel depolar: IndexedDB/localStorage'dan beslemek, durumu sunucu oturumlarına yansıtmak veya tarayıcı sekmeleri arasında koordinasyon sağlamak için kendi Zustand deponuzu enjekte edin.
- React hook'larına köprü: Aynı çalışma zamanının üzerinde ergonomik
hook'lar istediğinizde yapılandırılmış bir istemci örneğini
@solana/react-hooks'e aktarın. - Test edilebilirlik: Tek istemci arayüzü birim testlerinde taklit edilebilir; bu sayede tarayıcı cüzdanı olmadan RPC yanıtlarını veya cüzdan oturumlarını simüle etmek kolaylaşır.
Is this page helpful?