Solana Web3.js 2.x sürümü: Modüler tasarım ve fonksiyonel programlama için önemli bir yükseltme

robot
Abstract generation in progress

Solana Web3.js 2.x sürümü: Yenilikçi fonksiyonel programlama deneyimi

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ü resmen yayınladı. 1.x'e kıyasla, yeni sürüm bir dizi önemli değişiklik getiriyor, bu yazıda ana değişiklikler özetlenecektir.

2.x sürümünün yeni yayınlanmasına rağmen, kullanım henüz yaygınlaşmamıştır, birçok yaygın kütüphane da henüz taşınmamıştır. Ancak, bu değişiklikleri önceden bilmek, gelecekteki taşınma çalışmalarına büyük katkı sağlayacaktır.

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

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

İnkar edilemez ki, eski sürüm kullanım açısından daha basit ve doğrudan. 1.x sürümü yalnızca bir @solana/web3.js paketi içeriyor ve tüm işlevler burada toplanmış. Sınıf tabanlı bir tasarıma dayalıdı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. Ayrıca, Solana cookbook içindeki zengin örnek kodlar da geliştiricilere büyük kolaylık sağlamaktadır.

Ancak, bu tasarım bazı sorunlar da getirmektedir: Geliştiricilerin gerçekten kullandığı işlevlerin yalnızca çok küçük bir kısmı olsa bile, tüm kod kütüphanesi kullanıcı cihazına indirilecektir. Kütüphanenin kod miktarının büyük olması, belirli bir yükleme süresine neden olabilir.

Karşılaştırıldığında, 2.x sürümü modüler bir tasarım yaklaşımını benimsiyor. Resmi ekip, mevcut kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi bir dizi küçük modüle ayırdı. Aynı zamanda, yeni sürüm sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon kullanma yaklaşımını benimsiyor, bu da JavaScript kodu oluştururken optimizasyon açısından büyük fayda sağlıyor. Kullanılmayan kodlar silinecek ve kullanıcı cihazına indirilmeyecek. Resmi belgeler tarafından yapılan istatistiklere göre, yeni sürümdeki DApp'lerin genel olarak %30 oranında bir boyut optimizasyonu sağladığı bildirilmiştir; eğer yalnızca az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.

Bu değişim, Solana ekibinin belgelerinin kalitesine daha yüksek talepler getirmiştir. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarını sağlamak, kritik bir sorun haline gelmiştir. Görünüşe göre, her bir paketin adlandırması iyi bir anlamsallığa sahiptir, isimlerinden genel olarak kullanım amaçları tahmin edilebilmektedir, bu da geliştiricilerin geçiş zorluklarını bir ölçüde azaltmaktadır.

Ancak, yeni sürümün yeni piyasaya sürülmesi nedeniyle birçok proje henüz geçişi tamamlamadı. Solana Cookbook'ta 2.x sürümü ile ilgili örnekler de oldukça sınırlı. 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ımlar hakkında yeterince ayrıntılı açıklama yoktur, bu da geliştiricileri kafa karışıklığı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 durum sıradan kullanıcılar için çok büyük bir etki yaratmayabilir, ancak bu yılın Aralık ayı başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde gerçekleşen tedarik zinciri saldırısına bakıldığında, aşırı dış girdi ve bağımlılıkların güvenlik olayları riskini önemli ölçüde artırabileceği görülmektedir. 2.x sürümünün piyasaya sürülmesiyle birlikte, Web3.js geliştirme ekibi yerel işlevleri daha fazla kullanmaya ve dış bağımlılıkları ve Polyfills'i azaltmaya karar verdi. 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şiklik Noktaları

bağlantı

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

2.x sürümü bu işlevselliği daha fonksiyonel bir şekilde gerçekleştirmek için tasarlandı:

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

const rpc = createSolanaRpc("");

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öner.

anahtar çifti

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

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

Dikkate değer olan, yeni generateKeyPair'in bir Promise döndürdüğüdür, bu da doğrudan anahtar çiftini döndürmediği anlamına gelir. 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ışık olan JavaScript geliştiricileri için bu değişime alışmak zor olmamalıdır.

işlem gönder

1.x sürümündeki Transaction ve VersionedTransaction sınıfları 2.x sürümünde artık mevcut değil.

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

Ö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 sunar. Aşağıda, pipe fonksiyonu kullanarak 1.x'in 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: gönderici, toPubkey: alıcı, lamports: miktar })) );

const imza = await sendAndConfirmTransaction(rpc, transaction, [senderKeypair]);

Görülebilir ki, 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ı artmış durumda, ancak özelleştirme yeteneği daha güçlü hale geldi.

İşlem, HTTPS RPC üzerinden başlatılır ve ardından işlem sonucunu doğrulamak için WSS RPC'ye abone olunarak onaylanır. Yeni yöntemin WSS'ye çok bağımlı olduğunu hissediyoruz, gelecekte WSS'nin uygulamalarının giderek daha yaygın hale geleceğine inanıyoruz, bu da RPC sağlayıcılarının hizmet stabilitesine yönelik daha yüksek talepler getirmektedir.

React desteği

Önemli bir not olarak, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır. Bu kütüphane, signIn gibi bazı yerleşik işlevlerle birlikte 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ştirmeye olan bağlılığını göstermektedir. Yeni sürüm, geliştiricilere Solana ağıyla etkileşimde bulunmanın verimli, esnek ve özelleştirilebilir bir yolunu sunmakta ve bu platformun benimsenmesi ve gelişimini teşvik etmesi beklenmektedir.

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

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
  • Share
Comment
0/400
RugPullSurvivorvip
· 07-12 23:48
Değiştirmek, boşuna değiştirmekle eşdeğerdir... Hepsini baştan yazmak daha iyidir.
View OriginalReply0
Degen4Breakfastvip
· 07-12 23:48
Sonunda ayağa kalktı.
View OriginalReply0
digital_archaeologistvip
· 07-12 23:40
düşüş bağımlılığı iyi yorum
View OriginalReply0
AirdropHunterWangvip
· 07-12 23:32
Bu mu? Özellikler daha az mı?
View OriginalReply0
metaverse_hermitvip
· 07-12 23:31
Ah, bu göç gerçekten can sıkıcı.
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)