Solana Web3.js 2.x sürümünde büyük güncelleme: İşlev ayrımı ve sıfır bağımlılık performansı artırıyor

Solana Web3.js 2.x Sürümü: Fonksiyon zengini JavaScript kütüphanesinde büyük bir güncelleme

Solana Web3.js, güçlü bir JavaScript kütüphanesi olarak, Kasım ayında 2.x sürümünü resmi olarak piyasaya sürdü. 1.x'e kıyasla, yeni sürüm birçok önemli değişiklik getirdi, bu makalede ana güncellemeleri özetleyeceğiz.

2.x sürümünün yeni yayınlanmış olmasına rağmen, kullanım oranı düşük ve birçok yaygın kütüphane henüz taşınmamış olsa da, bu değişiklikleri anlamak gelecekteki taşınma çalışmaları için kritik öneme sahiptir.

Web3 Yeni Başlangıç Serisi: Şimdi @solana/web3.js 2.x'i yükseltin ve fonksiyonel programlamayı başlatın

Versiyon Karşılaştırması

Inkar edilemez ki, eski versiyon kullanım açısından daha basit ve doğrudan. 1.x sürümü yalnızca bir @solana/web3.js paketi içerir ve tüm işlevleri kapsar. Sınıf tabanlı bir tasarıma dayanır ve çok sayıda yaygın işlemi kapsüller. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri neredeyse kapsayan onlarca yöntem sunar. Ayrıca, Solana cookbook'taki zengin örnek kodlar geliştiricilere büyük kolaylık sağlar.

Ancak, bu tasarım bazı sorunlar da getirmektedir. Geliştiricilerin gerçekten kullandığı işlevler yalnızca çok küçük bir kısmı kapsasa da, tüm kod kütüphanesi kullanıcı cihazına indirilecektir; kütüphanenin kod miktarının büyük olması nedeniyle bu belirli bir yükleme gecikmesine yol açabilir.

2.x sürümü farklı bir yaklaşım benimsedi. Resmi ekip, mevcut kod tabanını @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers ve @solana/transactions gibi birden fazla küçük modüle ayırdı. Aynı zamanda, yeni sürüm sınıf tabanlı uygulamayı terk ederek daha çok tekil fonksiyon yaklaşımını benimsedi. Bu değişiklik, JavaScript kodunun derlenmesi sırasında optimizasyon açısından büyük fayda sağladı, kullanılmayan kodlar silinecek ve kullanıcı cihazlarına indirilmeyecek. Resmi belgelerdeki verilere göre, yeni sürümü kullanan DApp'ler genel olarak %30 oranında boyut optimizasyonu elde etti; sadece az sayıda özellik kullanan uygulamalar için bu oran daha da yüksek.

Bu değişiklik, Solana ekibinin dokümantasyon kalitesi için daha yüksek gereksinimler ortaya çıkardı. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarını sağlamak önemli bir sorun haline geldi. Görünüşe göre, yeni sürümdeki paket adları iyi bir anlam taşıyor ve adlarından işlevlerini büyük ölçüde anlayabiliyoruz; bu durum, geliştiricilerin geçiş zorluğunu bir ölçüde azaltıyor.

Ancak, yeni sürümün yeni yayınlanmış olması nedeniyle birçok projenin henüz taşınmamış olması. Solana Cookbook'ta 2.x sürümü ile ilgili örnekler de görece olarak azdır. Ayrıca, yeni sürüm, anahtar çiftleri oluşturma gibi çalışma zamanında yerleşik işlevleri kullanma eğilimindedir, ancak belgelerde bu kısımların açıklaması yetersizdir, bu da geliştiricilerin bazı konularda kafaları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 o kadar önemli olmayabilir, ancak bu yıl 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 bulundurduğumuzda, dış girdi ve bağımlılıkların azaltılması güvenlik olaylarının gerçekleşme olasılığını önemli ölçüde azaltabilir. 2.x sürümünün piyasaya sürülmesiyle birlikte, 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ı ortadan 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.

Ana Değişiklikler

bağlantı yöntemi

1.x sürümünde, Connection sınıfı birçok yöntem sunmaktadır. Ana işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmaktır, ardından çeşitli istekleri göndermek için bunu kullanmaktır.

2.x versiyonu daha fonksiyonel bir yaklaşım benimsemiştir:

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

const rpc = createSolanaRpc("");

sendAndConfirmTransaction çağrıldığında, otomatik olarak HTTPS isteği gönderilir ve işlem durumunu abone etmek için WSS bağlantısı kurulur, işlem onaylandıktan sonra işlem hash'ini döner.

anahtar çifti işlemi

Açık anahtar ve özel anahtar ile ilgili işlemlerde de önemli değişiklikler yaşandı. 1.x sürümünde yaygın olarak kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bir dizi fonksiyon ile değiştirilmiştir.

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

Dikkate değer olan, yeni generateKeyPair'in bir Promise döndürmesidir, doğrudan bir anahtar çifti döndürmek yerine. Bunun nedeni, yeni uygulamanın mümkün olduğunca JavaScript'in Web Crypto API'sini kullanması ve yerel Ed25519 uygulamasını kullanmasıdır. Web Crypto API'sinin birçok yöntemi asynchrondur. Ancak, Promise ile tanıdık olan modern JavaScript geliştiricileri için bu değişiklik zor bir durum değildir.

işlem gönder

1.x sürümünde tanıdık olan Transaction ve VersionedTransaction sınıfları 2.x sürümünde artık mevcut değildir.

Eski sürümde sağlanan System Program ile ilgili yöntemler artık korunmamaktadır, bu nedenle SystemProgram sınıfındaki statik yöntemler başka bir yerden alınmalıdır.

Ö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 1.x sürümündeki transfer işlevselliğini gerçekleştiren bir örnek verilmiştir:

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

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ fromPubkey: sender, toPubkey: alıcı, lamports: miktar })) );

const signature = await rpc.sendTransaction(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 sürümüne kıyasla, kod miktarı biraz arttı, ancak daha güçlü bir özelleştirme imkanı sağladı.

İşlemler HTTPS RPC ile başlatılır ve ardından işlem sonuçlarını doğrulamak için WSS RPC'ye abone olunarak onaylanır. Yeni yöntemin WSS'ye daha fazla bağımlı olduğu hissediliyor, gelecekte WSS uygulamalarının daha yaygın hale geleceğine inanıyorum, bu da RPC sağlayıcılarının hizmet istikrarı için daha yüksek talepler getiriyor.

React destekler

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

Özet

@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli iyileştirme ve gelişim konusundaki kararlılığını tam anlamıyla ortaya koydu. Yeni sürüm, geliştiricilere Solana ağı ile etkileşimde bulunmanın verimli, esnek ve özelleştirilebilir bir yolunu sunarak platformun benimsenmesini ve gelişimini teşvik ediyor. Şu anda erken aşamalarda olmasına rağmen, daha fazla projenin geçişi ve topluluğun adaptasyonu ile birlikte, 2.x sürümünün gelecekte daha büyük bir rol oynamasını bekliyoruz.

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

SOL0.85%
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
  • 5
  • Repost
  • Share
Comment
0/400
GweiWatchervip
· 08-09 18:00
Eski, güncellenmeyen geçiş
View OriginalReply0
TheShibaWhisperervip
· 08-09 18:00
Ne zaman tamamlanacak, çok sinir bozucu.
View OriginalReply0
SchrodingerWalletvip
· 08-09 17:54
Yine bir göç süreciyle uğraşmak zorundayım, tükürdüm.
View OriginalReply0
SorryRugPulledvip
· 08-09 17:50
Yine bir güncelleme ve taşınma, kafam karıştı.
View OriginalReply0
DaoTherapyvip
· 08-09 17:42
Önce yükseltmeyi bekleyelim.
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)