Solana Web3.js 2.x sürümünde büyük güncelleme: Fonksiyonel programlama ve modüler tasarım
Solana Web3.js, zengin özelliklere sahip bir JavaScript kütüphanesi olarak, Kasım ayında 2.x sürümünü resmi olarak yayınladı. Yeni sürüm, 1.x'e kıyasla önemli değişiklikler içeriyor; bu yazıda ana güncellemeleri özetleyeceğiz.
2.x sürümünün yeni yayımlanmasına rağmen, kullanım oranı henüz yüksek değil ve birçok popüler kütüphane henüz geçiş yapmadı, ancak bu değişiklikleri anlamak gelecekteki geçiş çalışmaları için çok faydalı.
Versiyon Karşılaştırması
1.x sürümünü kullanmak oldukça basit. Sadece bir paket var: @solana/web3.js, tüm işlevler burada toplanmış. Sınıf tabanlı tasarım, Connection sınıfının bir dizi yöntem sunarak, geliştiricilerin ihtiyaç duyduğu tüm işlevleri kapsayacak şekilde birçok yaygın işlemi kapsar.
Ancak, bu tasarım bazı sorunları da beraberinde getiriyor: Geliştiriciler sadece çok az bir bölümünü kullansalar bile, tüm kod kütüphanesi kullanıcı cihazına indirilecektir ve kütüphanenin kod miktarı oldukça büyük olduğundan, bu belirli bir süre alabilir.
2.x sürümü farklı bir strateji benimsedi. Resmi ekip, mevcut kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birkaç küçük modüle ayırdı. Aynı zamanda, sınıf tabanlı uygulamadan vazgeçildi ve daha çok tekil fonksiyonlar kullanıldı. Bu tasarım, JavaScript kodu derlenirken optimizasyonu kolaylaştırır; kullanılmayan kodlar silinecek ve kullanıcı cihazına indirilmeyecektir. Resmi istatistiklere göre, yeni sürümü kullanan DApp'ler genellikle %30 boyut optimizasyonu elde ederken, yalnızca az sayıda işlev kullanılıyorsa optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin doküman kalitesi için daha yüksek talepler ortaya koymuştur; geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulabilmesi, kritik bir sorun haline gelmiştir. Görünüşe göre, her bir paket ismi iyi bir anlamsallığa sahiptir ve isimlerinden genel olarak ne amaçla kullanıldıkları anlaşılabilmektedir, bu da geliştiricilerin geçiş zorluğunu bir ölçüde azaltmaktadır.
Ancak, yeni yayınlandığından birçok proje henüz geçiş yapmamıştır. Solana Cookbook'taki 2.x sürümüne ait örnekler de nispeten azdır. Ayrıca, yeni sürüm, anahtarı çiftlerini oluşturma gibi çalışma zamanı yerleşik işlevlerini kullanma eğilimindedir, ancak belgelerde bu kısımlara dair açıklamalar yetersizdir, bu da 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 özellik birçok kullanıcı için çok önemli olmayabilir, ancak 2023 Aralık başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinin maruz kaldığı 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ı büyük ölçüde düşürebilir. 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 ile Polyfill'lerin getirilmesini iptal etti. 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ğlan
1.x sürümünde, Connection sınıfı birçok yöntem sunmaktadır. Ancak 2.x'te daha fonksiyonel bir yaklaşım benimsenmiştir:
"sendAndConfirmTransaction" fonksiyonu çağrıldığında, otomatik olarak HTTPS isteği yapılır ve işlem durumunu abone olmak için WSS bağlantısı kurulur, işlem onaylandığında işlem hash'i döner.
anahtar çifti
Açık anahtar ve özel anahtar ile ilgili kısımda da büyük değişiklikler var. 1.x sürümünde yaygın olarak kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bazı fonksiyonlarla değiştirilmiş.
Örneğin, "await generateKeyPair()" kullanarak anahtar çiftleri oluşturabilirsiniz, önceki "Keypair.generate()" yerine.
Dikkat edilmesi gereken bir nokta, yeni generateKeyPair'in bir Promise döndürmesidir, doğrudan bir anahtar çifti döndürmemesidir. Bunun nedeni, yeni implementasyonun mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlanması ve yerel Ed25519 implementasyonunu kullanmasıdır. Web Crypto API'nin birçok yöntemi asynchrondur. Ancak, Promise ile tanışık olan JavaScript geliştiricileri için bu değişiklik zor bir uyum gerektirmemektedir.
işlem gönder
2.x sürümünde artık "Transaction" ve "VersionedTransaction" adlı iki sınıf bulunmamaktadır.
Eski sürümde sunulan System Program ile ilgili yöntemler artık mevcut değil, "SystemProgram" sınıfındaki statik yöntemlerin başka yerlerden alınması gerekiyor.
Örneğin, "transfer" komutu "@solana-program/system" içindeki "getTransferSolInstruction" fonksiyonunu çağırması gerekir.
Artık class sağlanmadığı için, Web3.js fonksiyonel programlamada yaygın olarak kullanılan "pipe" biçimini sunuyor. Pipe fonksiyonu aracılığıyla 1.x'teki transfer işlevselliğini gerçekleştirebilirsiniz.
Görülüyor ki, işlemler artık Connection üzerinden başlatılmıyor, bunun yerine tanımlanan RPC Provider aracılığıyla özel bir fonksiyon oluşturuluyor ve ardından bu fonksiyon çağrılarak işlem başlatılıyor. 1.x versiyonuna göre kod miktarı artmış, ancak özelleştirilebilirlik daha da güçlenmiştir.
İş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 gerçekleştirilir. Yeni yöntem WSS'ye oldukça bağımlıdır, 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 getirmektedir.
React
Şunu belirtmek gerekir ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır ve 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ınlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan bağlılığını gösteriyor. Bu, geliştiricilere Solana ağıyla etkileşimde bulunmak için verimli, esnek ve özelleştirilebilir bir yol sunuyor ve bu platformun benimsenmesini ve gelişimini teşvik ediyor.
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.
11 Likes
Reward
11
4
Repost
Share
Comment
0/400
OfflineValidator
· 16h ago
js yine güncellendi. 1.x'i kullanan başka kimse var mı?
View OriginalReply0
MoonRocketman
· 16h ago
Yörünge optimizasyonu tamamlandı, motor yükseltmesi başarıyla gerçekleştirildi, ikinci ateşleme Aya doğru hazırlanıyor.
View OriginalReply0
MissedAirdropAgain
· 17h ago
Tırman, aceleyle yükselmek işe yaramaz, önce 2.0 Airdrop'u ısıt.
View OriginalReply0
WalletDivorcer
· 17h ago
1.x'in kollarını bekliyorum, kodu değiştirmek istemiyorum.
Solana Web3.js 2.x versiyonu büyük bir güncelleme: Modüler tasarım performansı artırıyor.
Solana Web3.js 2.x sürümünde büyük güncelleme: Fonksiyonel programlama ve modüler tasarım
Solana Web3.js, zengin özelliklere sahip bir JavaScript kütüphanesi olarak, Kasım ayında 2.x sürümünü resmi olarak yayınladı. Yeni sürüm, 1.x'e kıyasla önemli değişiklikler içeriyor; bu yazıda ana güncellemeleri özetleyeceğiz.
2.x sürümünün yeni yayımlanmasına rağmen, kullanım oranı henüz yüksek değil ve birçok popüler kütüphane henüz geçiş yapmadı, ancak bu değişiklikleri anlamak gelecekteki geçiş çalışmaları için çok faydalı.
Versiyon Karşılaştırması
1.x sürümünü kullanmak oldukça basit. Sadece bir paket var: @solana/web3.js, tüm işlevler burada toplanmış. Sınıf tabanlı tasarım, Connection sınıfının bir dizi yöntem sunarak, geliştiricilerin ihtiyaç duyduğu tüm işlevleri kapsayacak şekilde birçok yaygın işlemi kapsar.
Ancak, bu tasarım bazı sorunları da beraberinde getiriyor: Geliştiriciler sadece çok az bir bölümünü kullansalar bile, tüm kod kütüphanesi kullanıcı cihazına indirilecektir ve kütüphanenin kod miktarı oldukça büyük olduğundan, bu belirli bir süre alabilir.
2.x sürümü farklı bir strateji benimsedi. Resmi ekip, mevcut kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birkaç küçük modüle ayırdı. Aynı zamanda, sınıf tabanlı uygulamadan vazgeçildi ve daha çok tekil fonksiyonlar kullanıldı. Bu tasarım, JavaScript kodu derlenirken optimizasyonu kolaylaştırır; kullanılmayan kodlar silinecek ve kullanıcı cihazına indirilmeyecektir. Resmi istatistiklere göre, yeni sürümü kullanan DApp'ler genellikle %30 boyut optimizasyonu elde ederken, yalnızca az sayıda işlev kullanılıyorsa optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin doküman kalitesi için daha yüksek talepler ortaya koymuştur; geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulabilmesi, kritik bir sorun haline gelmiştir. Görünüşe göre, her bir paket ismi iyi bir anlamsallığa sahiptir ve isimlerinden genel olarak ne amaçla kullanıldıkları anlaşılabilmektedir, bu da geliştiricilerin geçiş zorluğunu bir ölçüde azaltmaktadır.
Ancak, yeni yayınlandığından birçok proje henüz geçiş yapmamıştır. Solana Cookbook'taki 2.x sürümüne ait örnekler de nispeten azdır. Ayrıca, yeni sürüm, anahtarı çiftlerini oluşturma gibi çalışma zamanı yerleşik işlevlerini kullanma eğilimindedir, ancak belgelerde bu kısımlara dair açıklamalar yetersizdir, bu da 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 özellik birçok kullanıcı için çok önemli olmayabilir, ancak 2023 Aralık başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinin maruz kaldığı 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ı büyük ölçüde düşürebilir. 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 ile Polyfill'lerin getirilmesini iptal etti. 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ğlan
1.x sürümünde, Connection sınıfı birçok yöntem sunmaktadır. Ancak 2.x'te daha fonksiyonel bir yaklaşım benimsenmiştir:
"sendAndConfirmTransaction" fonksiyonu çağrıldığında, otomatik olarak HTTPS isteği yapılır ve işlem durumunu abone olmak için WSS bağlantısı kurulur, işlem onaylandığında işlem hash'i döner.
anahtar çifti
Açık anahtar ve özel anahtar ile ilgili kısımda da büyük değişiklikler var. 1.x sürümünde yaygın olarak kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bazı fonksiyonlarla değiştirilmiş.
Örneğin, "await generateKeyPair()" kullanarak anahtar çiftleri oluşturabilirsiniz, önceki "Keypair.generate()" yerine.
Dikkat edilmesi gereken bir nokta, yeni generateKeyPair'in bir Promise döndürmesidir, doğrudan bir anahtar çifti döndürmemesidir. Bunun nedeni, yeni implementasyonun mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlanması ve yerel Ed25519 implementasyonunu kullanmasıdır. Web Crypto API'nin birçok yöntemi asynchrondur. Ancak, Promise ile tanışık olan JavaScript geliştiricileri için bu değişiklik zor bir uyum gerektirmemektedir.
işlem gönder
2.x sürümünde artık "Transaction" ve "VersionedTransaction" adlı iki sınıf bulunmamaktadır.
Eski sürümde sunulan System Program ile ilgili yöntemler artık mevcut değil, "SystemProgram" sınıfındaki statik yöntemlerin başka yerlerden alınması gerekiyor.
Örneğin, "transfer" komutu "@solana-program/system" içindeki "getTransferSolInstruction" fonksiyonunu çağırması gerekir.
Artık class sağlanmadığı için, Web3.js fonksiyonel programlamada yaygın olarak kullanılan "pipe" biçimini sunuyor. Pipe fonksiyonu aracılığıyla 1.x'teki transfer işlevselliğini gerçekleştirebilirsiniz.
Görülüyor ki, işlemler artık Connection üzerinden başlatılmıyor, bunun yerine tanımlanan RPC Provider aracılığıyla özel bir fonksiyon oluşturuluyor ve ardından bu fonksiyon çağrılarak işlem başlatılıyor. 1.x versiyonuna göre kod miktarı artmış, ancak özelleştirilebilirlik daha da güçlenmiştir.
İş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 gerçekleştirilir. Yeni yöntem WSS'ye oldukça bağımlıdır, 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 getirmektedir.
React
Şunu belirtmek gerekir ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır ve 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ınlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan bağlılığını gösteriyor. Bu, geliştiricilere Solana ağıyla etkileşimde bulunmak için verimli, esnek ve özelleştirilebilir bir yol sunuyor ve bu platformun benimsenmesini ve gelişimini teşvik ediyor.