Solana Web3.js 2.x'in yayımlanması: Fonksiyonel programlama ve performans optimizasyonunda önemli bir yükseltme

Solana Web3.js 2.x sürümü: Fonksiyonel programlamada yeni bir bölüm

Solana Web3.js, işlevselliği zengin bir JavaScript kütüphanesi olarak, bu yılın Kasım ayında 2.x versiyonunu resmi olarak piyasaya sürdü. 1.x sürümüne kıyasla, yeni versiyon önemli değişiklikler getirdi, bu yazıda ana güncellemeleri özetleyeceğiz.

2.x sürümünün yeni yayınlanmasına ve kullanım oranının henüz düşük olmasına rağmen, birçok yaygın kütüphanenin de henüz geçiş yapmamış olmasına rağmen, bu değişiklikleri anlamak gelecekteki proje yükseltmeleri için büyük fayda sağlayacaktır.

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

Sürüm Karşılaştırması

1.x sürümünün kullanımı oldukça basittir. Tek bir ana paket içerir: @solana/web3.js, tüm işlevleri entegre eder. Bu sürüm, sınıf tabanlı bir tasarıma dayanır ve çok sayıda yaygın işlemi kapsar. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri neredeyse kapsayan onlarca yöntem sunar.

Ancak, bu tasarım bazı sorunlar da getiriyor. Geliştiricilerin gerçek anlamda kullandığı işlevlerin belki de yalnızca küçük bir kısmı olsa da, tüm kütüphanenin kodu kullanıcı cihazına indirilecektir, bu da yükleme sürelerinin uzamasına neden olabilir.

2.x sürümü farklı bir yaklaşım benimsedi. Resmi ekip, mevcut kod deposunu @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birkaç küçük modüle böldü. Yeni sürüm, sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon kullanma yöntemine geçti, bu da JavaScript kodunun derlenmesi sırasında optimizasyon için faydalıdır. Kullanılmayan kodlar silinecek ve gerçekte kullanıcı cihazına indirilmeyecek. Resmi belgelerdeki verilere göre, yeni sürümü kullanan DApp'ler genellikle %30'luk bir boyut optimizasyonu elde edebilir; eğer yalnızca az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.

Bu değişim, Solana ekibinin belgelerinin kalitesi için daha yüksek gereksinimler ortaya koydu. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarını sağlamak kritik bir sorun haline geldi. Görünüşe göre, paket adlarının anlamı oldukça iyi; adından işlevlerini kabaca anlayabiliyoruz, bu da geliştiricilerin geçiş zorluğunu bir nebze azaltıyor.

Yeni yayımlandığı için birçok proje henüz taşınmamıştır. Solana Cookbook'ta 2.x sürümüyle ilgili örnekler de 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 bu kısımlara dair yeterli açıklama bulunmamakta, bu da bazı yerlerde geliştiricilerin kafasının karışmasına neden olabilir.

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

Önemli Değişiklik Noktaları

bağlantı

1.x sürümünde, Connection sınıfı 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 çeşitli istekler göndermektir.

2.x sürümü daha fonksiyonel bir yaklaşım benimsemiştir:

javascript import { createSolanaRpc } from '@solana/web3.js';

const rpc = createSolanaRpc(');

// rpc kullanarak işlem gönder const imza = await rpc.sendAndConfirmTransaction(transaction);

Bu yeni sürümde, sendAndConfirmTransaction çağrıldığında, işlem gönderildiğinde otomatik olarak HTTPS isteği başlatır ve işlem durumunu abone olmak için bir WSS bağlantısı kurar, işlem onaylandıktan sonra işlem hash'ini döndürür.

anahtar çift

Açık anahtar ve özel anahtar ile ilgili kısımda da önemli değişiklikler oldu. 1.x sürümünde yaygın olarak kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bunların yerini bazı fonksiyonlar aldı.

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

Dikkate değer olan, yeni generateKeyPair'ın doğrudan bir anahtar çifti döndürmek yerine bir Promise döndürmesidir. 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 asenkroniktir. Ancak, bu değişiklik kabul edilemez değil; 2024 yılının sona ermek üzere olduğu bu günlerde, JavaScript geliştiricileri artık Promise ile oldukça aşinadır.

işlem gönder

1.x sürümündeki kullanıcılar, Transaction ve VersionedTransaction adlı bu iki sınıfa oldukça aşina olmalıdır, aralarındaki ilişki birçok geliştirici için kafa karıştırıcı olmuştur.

2.x sürümünde, bu iki sınıf artık mevcut değildir.

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

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

Artık sınıf sağlanmadığı için, Web3.js fonksiyonel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Aşağıda, pipe fonksiyonu kullanarak orijinal 1.x versiyonunun transfer işlevselliğini gerçekleştiren bir örnek verilmiştir:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { createSolanaRpc } from '@solana/web3.js';

const rpc = createSolanaRpc(');

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ from: senderPublicKey, alıcıPublicKey'e, miktar: transferAmount, })) );

const signature = await rpc.sendAndConfirmTransaction(transaction);

Görüldüğü gibi, işlemler artık Connection aracılığıyla 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ı artmış olsa da, avantajı daha fazla özelleştirilebilirlik sunmasıdır.

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

React desteği

İlginç bir şekilde, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunuyor ve bu kütüphane, signIn gibi bazı React Hook'ları sağlıyor.

Özet

@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli gelişim ve iyileştirme taahhüdünü tam olarak yansıtmaktadır. Bu, geliştiricilere Solana ağı ile etkileşimde bulunmaları için verimli, esnek ve özelleştirilebilir bir yol sunarak, platformun benimsenmesi ve gelişimini teşvik etmeye yardımcı olmaktadır.

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

SOL5.59%
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
  • Repost
  • Share
Comment
0/400
CommunityJanitorvip
· 08-10 07:13
Bu neden bu kadar yavaş iterasyon yapıyor?
View OriginalReply0
ProposalManiacvip
· 08-09 22:16
Gelişme var, ama hâlâ yeterince radikal değil.
View OriginalReply0
GhostChainLoyalistvip
· 08-09 07:05
2.0 hala yavaş. Ne zaman sürekli güncellemeleri takip etmeyi öğrenilecek?
View OriginalReply0
PanicSeller69vip
· 08-07 19:20
Güncellemenin ne faydası var ki, yine de kütüphane değiştirmek zorundasınız.
View OriginalReply0
MemeCoinSavantvip
· 08-07 07:47
af tabanlı, solana web3 evriminde istatistiksel önemi kanıtlıyor bence
View OriginalReply0
FarmHoppervip
· 08-07 07:46
Hala 1.x kullanıyorsun, tsk tsk.
View OriginalReply0
ThreeHornBlastsvip
· 08-07 07:45
Geliştirici partisi daha neyi bekliyor?
View OriginalReply0
ZkProofPuddingvip
· 08-07 07:43
Gerçekten güzel~ Yarım yıl geç güncellendi.
View OriginalReply0
  • Pin
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)