Solana Web3.js 2.0 yükseltmesi analizi: Modüler tasarım performansı ve güvenliği artırıyor

Solana Web3.js 2.x Sürümü: Fonksiyon açısından zengin JavaScript kütüphanesi güncellemesi

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 birçok önemli değişiklik getirdi. Bu yazıda, bu ana değişikliklerin bir özet analizi yapılacaktır.

2.x sürümünün yeni yayımlanmasına rağmen, mevcut kullanım oranı düşük; birçok yaygın kullanılan kütüphane henüz geçiş yapmadı, ancak bu değişiklikleri anlamak gelecekteki geçiş çalışmaları için kritik öneme sahiptir.

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

1.x sürümünün kullanımı oldukça basittir. Sadece bir paket içerir: @solana/web3.js, tüm işlevler burada toplanmıştır. Sınıf tabanlı tasarım, Connection sınıfının sunduğu onlarca yöntem gibi yaygın işlemleri kapsayan çok sayıda işlevi kapsüller, bu da geliştiricilerin ihtiyaç duyduğu tüm işlevleri neredeyse karşılar.

Ancak, bu tasarım bazı sorunlar da getirmektedir. Geliştiriciler genellikle yalnızca bu işlevlerin küçük bir kısmını kullanmalarına rağmen, tüm kod kütüphanesi kullanıcı cihazına indirilmektedir. Kütüphanenin kod miktarının büyük olması nedeniyle, bu belirli bir süre alabilir.

2.x sürümü farklı bir 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 edip daha çok tek işlevli bir yaklaşım benimsemiştir. Bu değişiklik, JavaScript kodunun derlenmesi sırasında optimizasyon için faydalıdır, kullanılmayan kodlar silinecek ve kullanıcı cihazına indirilmeyecektir. Resmi belgelerde belirtilene göre, yeni sürümü kullanan DApp'ler genellikle %30 oranında kod boyutu optimizasyonu sağlayabilir, eğer yalnızca az sayıda özellik kullanılıyorsa, optimizasyon oranı daha da yüksek olabilir.

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

Bu değişim, Solana ekibinin belgelerinin kalitesi için daha yüksek talepler ortaya koymaktadır. Geliştiricilerin ihtiyaç duydukları fonksiyonları hızlı bir şekilde bulmalarına yardımcı olmak, kritik bir sorun haline gelmiştir. Şu anda, paket adları iyi bir anlamsallığa sahiptir ve adlarından genel olarak ne amaçla kullanıldıkları hakkında bir fikir edinilebilir, bu da geliştiricilerin geçiş zorluklarını belirli bir ölçüde azaltmaktadır.

Ancak, yeni yayınlandığı için birçok proje henüz taşınmamıştır. Solana Cookbook'taki 2.x sürümüyle ilgili örnekler de oldukça 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 bölümlere dair ayrıntılı bir açıklama eksikliği nedeniyle bazı yönler geliştiricileri kafa karışıklığına sürüklemektedir.

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 en önemli şey 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ısına bakıldığında, daha fazla dış girdi ve bağımlılık, güvenlik olaylarının meydana gelme olasılığını büyük ölçüde artırmaktadır. 2.x sürümünün yayımlanmasıyla birlikte, Web3.js geliştirme ekibi daha fazla yerel işlev kullanmaya karar verdi ve dış bağımlılıkların ve Polyfill'lerin kullanılması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 sınıfı birçok yöntem sunmaktadır. Ana işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmak ve ardından çeşitli istekleri göndermektir.

2.x sürümü bu işlevi gerçekleştirmek için daha işlevsel bir yöntem kullanmıştır:

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

const rpc = createSolanaRpc("");

sendAndConfirmTransaction ile işlem gönderildiğinde, sistem otomatik olarak HTTPS isteği başlatır ve işlem durumunu abone olmak için WSS bağlantısı kurar, işlem onaylandıktan sonra işlem hash'ini döner.

anahtar çifti

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 adlı iki sınıf artık mevcut değil, bunların yerini bazı fonksiyonlar aldı.

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

Dikkate değer olan, yeni generateKeyPair'in 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'sini kullanması ve yerel Ed25519 uygulamasını kullanmasıdır. Web Crypto API'sinin birçok yöntemi asynchrondur. Ancak, bu değişiklik kabul edilemez değil, 2024 yılının sonuna yaklaşırken JavaScript geliştiricileri Promise'lere oldukça aşina.

işlem gönder

1.x sürümünün kullanıcıları Transaction ve VersionedTransaction adlı iki sınıfa 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 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ğırmayı gerektiriyor.

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

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

const transaction = pipe( createTransaction(), addInstruction(getTransferSolInstruction({ fromPubkey: sender.publicKey, toPubkey: alıcı, lamports: miktar, })), setRecentBlockhash(blockhash), addSigners([sender]) );

const imza = await rpc.sendAndConfirmTransaction(transaction);

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 sürümüne kıyasla, kod miktarı biraz arttı, ancak özelleştirme yeteneği daha da güçlendi.

İşlemler HTTPS RPC aracılığıyla 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 çok bağımlı olduğu hissediliyor, gelecekte WSS uygulamalarının daha da yaygınlaşacağına inanıyorum, bu da RPC sağlayıcılarının hizmet istikrarı için daha yüksek gereksinimler getiriyor.

React

İlginçtir ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır. Bu kütüphane, signIn gibi işlevleri içeren bazı React Hook'ları sunmaktadır.

Ö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ğıyla etkileşimde bulunmak için verimli, esnek ve özelleştirilebilir bir yol sunarak, platformun benimsenmesine ve gelişmesine katkıda bulunmaktadır. Şu anda kullanım oranı düşük olsa da, zamanla daha fazla projenin bu yeni sürüme geçeceğine inanılıyor.

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

SOL3.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
  • 4
  • Share
Comment
0/400
BearMarketSurvivorvip
· 23h ago
Saha raporu: Güncelleme, sanki bir boş yuva içinde atılan ilk kurşun gibi başladı.
View OriginalReply0
OPsychologyvip
· 23h ago
Yükseltme henüz stabil değil, acele etmeyin.
View OriginalReply0
RugResistantvip
· 23h ago
hmm potansiyel güvenlik noktaları tespit edildi... aslında kapsamlı bir denetim gerekiyor
View OriginalReply0
mev_me_maybevip
· 23h ago
Ah bu Solana da modülerleşmeye başladı.
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)