@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.
Solana geliştiricileri için yaygın desenler
- Başsız durum makineleri: Kullanıcı arayüzünüzü destekleyen aynı cüzdan + RPC orkestrasyon mantığını yeniden kullanmak için istemciyi API rotaları, betikler veya çalışanlar içinde çalıştırın.
- Gerçek zamanlı panolar: İzleyicileri (bakiyeler, hesaplar, imzalar) tercih ettiğiniz kullanıcı arayüzü kütüphanesiyle birleştirin; istemci websocket dağıtımını ve önbellek geçersiz kılmayı yönetir.
- Özel depolar: IndexedDB/localStorage'dan hidrate etmek, 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öğesine aktarın. - Test edilebilirlik: Tek istemci arayüzü birim testlerinde taklit edilebilir, bu da tarayıcı cüzdanı olmadan RPC yanıtlarını veya cüzdan oturumlarını simüle etmeyi kolaylaştırır.
Is this page helpful?