Solana Web3.js 2.x versiyonu büyük bir lansman ile geldi. Modüler tasarım performansı önemli ölçüde artırıyor.

Solana Web3.js 2.x Sürümü: Güçlü JavaScript Kütüphanesi Büyük Güncelleme

Solana Web3.js, zengin özelliklere sahip bir JavaScript kütüphanesi olarak, bu yıl Kasım ayında 2.x sürümünü resmi olarak yayınladı. 1.x sürümüne kıyasla, yeni sürüm önemli değişiklikler getirdi. Bu makalede, ana değişikliklerin özet bir tanıtımı yapılacaktır.

Her ne kadar 2.x sürümü yeni piyasaya sürülmüş olsa da, kullanım oranı henüz yaygınlaşmamış ve birçok yaygın kütüphane henüz geçiş yapmamış olsa da, bu değişiklikleri önceden bilmek gelecekteki güncellemeler için hazırlık açısından kesinlikle faydalıdır.

Web3 Yeni Başlayanlar Serisi: Şimdi @solana/web3.js 2.x'i güncelleyerek fonksiyonel programlamaya başlayın

Versiyon Karşılaştırması

Inkâr edilemez ki, eski versiyon kullanımı açısından daha basit ve doğrudan. 1.x versiyonu sadece bir paket @solana/web3.js ile tüm işlevleri içeriyor ve sınıf tabanlı tasarım birçok yaygın işlemi kapsıyor. Örneğin, Connection sınıfı onlarca yöntem sunuyor ve neredeyse geliştiricilerin ihtiyaç duyduğu tüm işlevleri kapsıyor.

Ancak, bu tasarım bazı sorunları da beraberinde getiriyor. Geliştiricilerin gerçekten kullandığı özellikler belki de sadece bir kısmı olmasına rağmen, tüm kod kütüphanesi kullanıcı cihazına indirilecektir, bu da yükleme süresinin uzamasına neden olabilir.

Buna karşın, 2.x sürümü modüler bir tasarım yaklaşımı benimsemiştir. Resmi ekip, mevcut kod deposunu @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birçok küçük modüle ayırmıştır. Aynı zamanda, yeni sürüm sınıf tabanlı uygulamayı terk ederek tek fonksiyon yöntemi kullanmaya geçmiştir; bu, JavaScript kodu derlenirken optimizasyonu kolaylaştırmaktadır. Kullanılmayan kodlar silinecek ve kullanıcı cihazlarına indirilmeyecektir.

Resmi belgelerdeki istatistiklere göre, yeni versiyon DApp'lerin kullanımı genellikle yaklaşık %30 oranında kod boyutu optimizasyonu sağlamaktadır. Eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha da yüksek olabilir.

Bu değişiklik, Solana ekibinin belgelerinin kalitesi için daha yüksek gereksinimler ortaya koymuştur. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarına yardımcı olmak, önemli bir sorun haline geldi. Şu anda, paket adlarının anlamı oldukça iyidir; adlarından genel olarak kullanım amaçlarını anlayabiliyoruz, bu da geliştiricilerin geçiş zorluklarını bir ölçüde azaltmaktadır.

Ancak, yeni sürümün henüz yeni yayımlanmış olması nedeniyle, birçok proje henüz geçiş yapmamıştır. Solana Cookbook'ta 2.x sürümüne ait örnekler de nispeten azdır. Ayrıca, yeni sürüm, anahtar çiftleri oluşturma gibi çalışma zamanı yerleşik işlevlerini kullanma eğilimindedir, ancak belgelerde ilgili açıklamaların eksik olması, bazı geliştiricilerin kafasını karıştırabilir.

2.x sürümünün bir diğer önemli özelliği sıfır bağımlılıktır. Bu durum birçok kullanıcı için önemli olmayabilir, ancak bu yılın Aralık ayı başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde meydana gelen tedarik zinciri saldırıları göz önüne alındığında, daha fazla dış girdi ve bağımlılık, güvenlik olaylarının meydana gelme olasılığını önemli ölçüde artırmaktadır. 2.x sürümünün piyasaya sürülmesiyle birlikte, Web3.js geliştirme ekibi daha fazla yerel işlev kullanmaya karar verdi ve dış bağımlılıkların ve Polyfills'in kullanımını kaldırdı. Gelecekte değişiklikler olabilir, ancak şu anda 2.x sürümü tüm dış bağımlılıkları ortadan kaldırmıştır.

Önemli Değişiklikler

bağlantı

1.x sürümünde, Connection birçok yöntem sunmaktadır. Ancak, temel işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmak ve ardından bunu kullanarak çeşitli istekler göndermektir.

2.x sürümü bu işlevselliği sağlamak için daha fonksiyonel bir yaklaşım benimsemiştir:

javascript import { createSolanaRpcApi, createSolanaRpcSubscriptionsApi } from '@solana/web3.js';

const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

const { sendAndConfirmTransaction } = rpc;

Bu kodda, sendAndConfirmTransaction ile işlem gönderdiğimizde, otomatik olarak bir HTTPS isteği başlatılır ve bir WSS bağlantısı kurulur, işlem durumu abone olunur, işlem onaylandığında işlem hash'i döndürülür.

anahtar çifti

Açık anahtar ve özel anahtar ile ilgili kısımda da önemli değişiklikler var. 1.x versiyonunda yaygın olarak kullanılan Keypair ve PublicKey adlı iki sınıf artık mevcut değil, bunların yerini bazı fonksiyonlar almıştır.

Örneğin, await generateKeyPair() kullanarak anahtar çiftleri oluşturabilirsiniz, önceki Keypair.generate() yerine.

Dikkate değer bir nokta, yeni generateKeyPair'in bir Promise döndürdüğüdür, doğrudan bir anahtar çifti döndürmek yerine. Bunun nedeni, yeni uygulamanın mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlanması ve yerel Ed25519 uygulamasını kullanmasıdır. Web Crypto API'sinin birçok yöntemi asenkron olarak çalışır. Ancak, bu değişiklik zor bir şekilde karşılanmıyor; 2023 yılının sona ermekte olduğu bu günlerde, JavaScript geliştiricileri Promise'lere oldukça aşina.

işlem gönder

1.x sürümündeki kullanıcılar Transaction ve VersionedTransaction iki sınıfına aşina olmalıdır. 2.x sürümünde, bu iki sınıf artık mevcut değildir.

Eski sürümde sunulan System Program ile ilgili yöntemler artık mevcut değil, bu nedenle SystemProgram sınıfındaki statik yöntemlerin başka yerlerden alınması gerekiyor.

Örneğin, transfer komutu artık @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırması gerekiyor.

Artık sınıf sağlamadığından, Web3.js fonksiyonel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Aşağıda, pipe fonksiyonu kullanarak 1.x sürümündeki transfer işlevini gerçekleştiren bir örnek verilmiştir:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { addSignatureToTransaction, createTransaction, getBase58SignerFromPrivateKey, getSignatureFromSignedTransaction, getTransactionMessage, signTransaction, } from '@solana/transactions';

const transaction = pipe( createTransaction(), addSignatureToTransaction(getTransferSolInstruction({})), );

const signedTransaction = signTransaction(transaction, [signer]); const signature = getSignatureFromSignedTransaction(signedTransaction); const message = getTransactionMessage(signedTransaction);

const txid = await sendAndConfirmTransaction({ signedTransaction });

Görüldüğü gibi, işlemler artık Connection üzerinden başlatılmıyor, bunun yerine tanımladığımız RPC Provider aracılığıyla belirli bir fonksiyon oluşturuluyor ve ardından bu fonksiyon çağrılarak işlem başlatılıyor. 1.x versiyonuna kıyasla kod miktarında bir artış var, ancak özelleştirilebilirlik daha da güçlendi.

İşlemler HTTPS RPC üzerinden başlatılır ve ardından işlem sonuçlarını doğrulamak için WSS RPC'ye abone olunarak takip edilir. Yeni yöntemin WSS'ye oldukça bağımlı olduğu hissediliyor, gelecekte WSS uygulamalarının giderek daha yaygın hale geleceğine inanıyorum, bu da RPC sağlayıcılarının hizmet kararlılığı için daha yüksek gereksinimler ortaya koyuyor.

React

Şunu belirtmek gerekir ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır; bu kütüphane bazı React Hook'ları sunmakta ve signIn gibi işlevleri içermektedir.

Özet

@solana/web3.js 2.x sürümünün yayınlanması, Solana ekibinin sürekli gelişim ve iyileştirme taahhüdünü tam olarak yansıtmaktadır. Bu, geliştiricilere Solana ağıyla etkileşimde bulunmak için verimli, esnek ve özelleştirilebilir bir yol sunarak bu platformun benimsenmesini ve gelişimini desteklemektedir.

Web3 Yeni Başlayanlar Serisi: Şimdi @solana/web3.js 2.x ile Fonksiyonel Programlamayı Başlatın

SOL4.97%
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 8
  • Share
Comment
0/400
SchrodingerWalletvip
· 2h ago
Bekleyin, pro'lar önce tuzaklara düşsün.
View OriginalReply0
AirdropFatiguevip
· 11h ago
Ha, taşınmanın etkisi büyük değil.
View OriginalReply0
DegenGamblervip
· 08-06 03:11
Sonunda 2.0'a yükseldi~sadece izliyorum.
View OriginalReply0
ser_we_are_ngmivip
· 08-06 01:10
Güncellemenin ne faydası var, 1.x yeter.
View OriginalReply0
LayerHoppervip
· 08-06 01:10
Zaten güncellenmesi gerekiyordu.
View OriginalReply0
PumpAnalystvip
· 08-06 00:55
Teknik açıdan bu güncellemenin garip olduğunu düşünüyorum, eski enayiler aceleyle güncelleme yapmamalarını öneriyor.
View OriginalReply0
NotAFinancialAdvicevip
· 08-06 00:52
Bu güncelleme tamamen bir eziyet.
View OriginalReply0
BearMarketBardvip
· 08-06 00:42
Görünüşe göre oraya biçilmek için gelmişler.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)