Solana Web3.js 2.x Sürümü: Fonksiyon Ayrımı ve Performans Optimizasyonu
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ü piyasaya sürdü. Yeni sürüm 1.x'e kıyasla önemli değişiklikler içeriyor ve bu yazıda ana değişiklikler özetlenecektir.
2.x sürümünün henüz yeni yayımlanmış olmasına ve kullanım oranının düşük olmasına rağmen, birçok yaygın kütüphanenin hâlâ geçiş yapmamış olması, bu değişiklikleri anlamanın gelecekteki geçiş çalışmaları için çok faydalı olacağını göstermektedir.
Versiyon Karşılaştırması
Eski sürümün kullanımı oldukça basitti, sadece tek bir @solana/web3.js paketi tüm içeriği kapsıyordu. Sınıf tabanlı bir tasarıma dayanıyordu ve birçok yaygın işlemi kapsıyordu. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri kapsayan onlarca yöntem sunmaktadır.
Ancak, bu tasarım bazı sorunları da beraberinde getiriyor. Geliştiriciler yalnızca bu işlevlerin küçük bir kısmını kullansalar bile, tüm kod kütüphanesi kullanıcı cihazına indirilecektir ve kütüphanenin kod miktarı fazla olduğu için belirli bir yükleme süresi oluşabilir.
2.x sürümü farklı bir strateji benimsedi. Resmi ekip mevcut kod tabanını @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birden fazla küçük modüle böldü. Aynı zamanda, yeni sürüm sınıf tabanlı uygulamayı terk ederek daha çok tekil fonksiyon yöntemini kullanıyor. Bu tasarım, JavaScript kod yapımında optimizasyonu destekler, kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecek. Resmi belgelerdeki verilere göre, yeni sürümü kullanan DApp'ler genellikle yaklaşık %30 boyut optimizasyonu sağlayabiliyor; eğer sadece çok az bir kısmı kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgelerinin hazırlanmasında zorluklar getirdi; geliştiricilerin ihtiyaç duydukları özellikleri hızla bulabilmesi önemli bir sorun haline geldi. Şu anda, paket adları iyi bir anlam taşıyor ve isimlerinden büyük ölçüde amaçlarını anlayabiliyoruz, bu da geliştiricilerin geçiş zorluklarını bir ölçüde azaltıyor.
Ancak, yeni yayınlandığı için birçok proje henüz geçiş yapmamıştır. Solana Cookbook'ta 2.x sürümüne dair örnekler de oldukça azdır. 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 açıklamalar yetersizdir ve bu durum geliştiricileri yanıltabilir.
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ı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ı göz önüne alındığında, daha fazla dış girdi ve bağımlılık, güvenlik olaylarının gerçekleşme olasılığını önemli ölçüde artıracaktır. 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ı 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. Ancak ana işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmaktır ve ardından bu gönderici aracılığıyla çeşitli istekler göndermektir.
2.x versiyonu, bu işlevi daha fonksiyonel bir şekilde gerçekleştirmektedir. Örneğin, sendAndConfirmTransaction çağrıldığında, otomatik olarak HTTPS isteği başlatılır ve bir WSS bağlantısı kurulur, işlem durumu için abonelik yapılır ve işlem onaylandığında işlem hash'ini 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, bunların yerini bazı fonksiyonlar almıştır.
Örneğin, await generateKeyPair() kullanarak anahtar çifti oluşturabilirsiniz, önceden kullanılan Keypair.generate() yerine. Yeni generateKeyPair'in bir Promise döndürdüğünü, doğrudan anahtar çiftini döndürmediğini belirtmek önemlidir. 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 edilmesi zor değil, 2024'ün sonuna yaklaşırken, JavaScript geliştiricileri Promise ile oldukça aşina.
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ğildir.
Eski sürümde sunulan System Program ile ilgili yöntemler artık mevcut değildir, bu nedenle SystemProgram sınıfındaki statik yöntemler başka yerlerden getirilmelidir. Örneğin, transfer talimatı @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmalıdır.
Artık sınıf sağlanmadığı için, Web3.js fonksiyonel programlama ile yaygın olarak kullanılan pipe biçimini sunmaktadır. Geliştiriciler, pipe fonksiyonu aracılığıyla 1.x sürümündeki transfer işlevini gerçekleştirebilirler.
Dikkate değer bir nokta, işlemlerin artık Connection üzerinden başlatılmaması, bunun yerine geliştiricinin tanımladığı RPC Provider aracılığıyla özel bir fonksiyon oluşturulması ve ardından bu fonksiyonun çağrılarak işlemin başlatılmasıdır. 1.x versiyonuna göre, kod miktarı artmış olsa da, özelleştirilebilirlik daha da güçlenmiştir.
İşlemler HTTPS RPC aracılığıyla başlatılır ve ardından işlem sonuçlarını doğrulamak için WSS RPC üzerinden abone olunarak takip edilir. Yeni yöntemin WSS'ye oldukça bağımlı olduğu hissediliyor ve gelecekte WSS uygulamalarının giderek daha yaygın hale geleceğine inanılıyor. Bu durum, RPC sağlayıcılarının hizmet istikrarı için daha yüksek talepler getirmektedir.
React
Önemli bir nokta, @solana/web3.js projesinde @solana/react adında bir kütüphane bulunmasıdır; bu kütüphane bazı React Hook'ları sağlamaktadır ve signIn gibi işlevleri içinde barındırmaktadır.
Özet
@solana/web3.js 2.x sürümünün yayınlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan taahhüdünü göstermektedir. Bu, geliştiricilere Solana ağı ile etkileşim kurmanın verimli, esnek ve özelleştirilebilir bir yolunu sunarak platformun benimsenmesini ve gelişimini desteklemektedir.
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.
8 Likes
Reward
8
4
Share
Comment
0/400
SignatureVerifier
· 12h ago
smh... başka bir aceleye getirilmiş sürüm, kapsamlı bir güvenlik denetimi gerektiriyor
View OriginalReply0
BearMarketSurvivor
· 12h ago
Performans ne kadar optimize olursa, enayiler o kadar artar.
View OriginalReply0
AlwaysAnon
· 12h ago
Oh, sonunda güncellendi.
View OriginalReply0
DefiPlaybook
· 13h ago
TVL yükseliş eğrisi tahminlerine göre, 2.x modüler mimari optimizasyonu sonrası performans artışı %27.8'e ulaşıyor.
Solana Web3.js 2.x sürümü büyük güncelleme, işlev ayrımı ve performans optimizasyonu
Solana Web3.js 2.x Sürümü: Fonksiyon Ayrımı ve Performans Optimizasyonu
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ü piyasaya sürdü. Yeni sürüm 1.x'e kıyasla önemli değişiklikler içeriyor ve bu yazıda ana değişiklikler özetlenecektir.
2.x sürümünün henüz yeni yayımlanmış olmasına ve kullanım oranının düşük olmasına rağmen, birçok yaygın kütüphanenin hâlâ geçiş yapmamış olması, bu değişiklikleri anlamanın gelecekteki geçiş çalışmaları için çok faydalı olacağını göstermektedir.
Versiyon Karşılaştırması
Eski sürümün kullanımı oldukça basitti, sadece tek bir @solana/web3.js paketi tüm içeriği kapsıyordu. Sınıf tabanlı bir tasarıma dayanıyordu ve birçok yaygın işlemi kapsıyordu. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri kapsayan onlarca yöntem sunmaktadır.
Ancak, bu tasarım bazı sorunları da beraberinde getiriyor. Geliştiriciler yalnızca bu işlevlerin küçük bir kısmını kullansalar bile, tüm kod kütüphanesi kullanıcı cihazına indirilecektir ve kütüphanenin kod miktarı fazla olduğu için belirli bir yükleme süresi oluşabilir.
2.x sürümü farklı bir strateji benimsedi. Resmi ekip mevcut kod tabanını @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birden fazla küçük modüle böldü. Aynı zamanda, yeni sürüm sınıf tabanlı uygulamayı terk ederek daha çok tekil fonksiyon yöntemini kullanıyor. Bu tasarım, JavaScript kod yapımında optimizasyonu destekler, kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecek. Resmi belgelerdeki verilere göre, yeni sürümü kullanan DApp'ler genellikle yaklaşık %30 boyut optimizasyonu sağlayabiliyor; eğer sadece çok az bir kısmı kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgelerinin hazırlanmasında zorluklar getirdi; geliştiricilerin ihtiyaç duydukları özellikleri hızla bulabilmesi önemli bir sorun haline geldi. Şu anda, paket adları iyi bir anlam taşıyor ve isimlerinden büyük ölçüde amaçlarını anlayabiliyoruz, bu da geliştiricilerin geçiş zorluklarını bir ölçüde azaltıyor.
Ancak, yeni yayınlandığı için birçok proje henüz geçiş yapmamıştır. Solana Cookbook'ta 2.x sürümüne dair örnekler de oldukça azdır. 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 açıklamalar yetersizdir ve bu durum geliştiricileri yanıltabilir.
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ı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ı göz önüne alındığında, daha fazla dış girdi ve bağımlılık, güvenlik olaylarının gerçekleşme olasılığını önemli ölçüde artıracaktır. 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ı 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. Ancak ana işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmaktır ve ardından bu gönderici aracılığıyla çeşitli istekler göndermektir.
2.x versiyonu, bu işlevi daha fonksiyonel bir şekilde gerçekleştirmektedir. Örneğin, sendAndConfirmTransaction çağrıldığında, otomatik olarak HTTPS isteği başlatılır ve bir WSS bağlantısı kurulur, işlem durumu için abonelik yapılır ve işlem onaylandığında işlem hash'ini 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, bunların yerini bazı fonksiyonlar almıştır.
Örneğin, await generateKeyPair() kullanarak anahtar çifti oluşturabilirsiniz, önceden kullanılan Keypair.generate() yerine. Yeni generateKeyPair'in bir Promise döndürdüğünü, doğrudan anahtar çiftini döndürmediğini belirtmek önemlidir. 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 edilmesi zor değil, 2024'ün sonuna yaklaşırken, JavaScript geliştiricileri Promise ile oldukça aşina.
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ğildir.
Eski sürümde sunulan System Program ile ilgili yöntemler artık mevcut değildir, bu nedenle SystemProgram sınıfındaki statik yöntemler başka yerlerden getirilmelidir. Örneğin, transfer talimatı @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmalıdır.
Artık sınıf sağlanmadığı için, Web3.js fonksiyonel programlama ile yaygın olarak kullanılan pipe biçimini sunmaktadır. Geliştiriciler, pipe fonksiyonu aracılığıyla 1.x sürümündeki transfer işlevini gerçekleştirebilirler.
Dikkate değer bir nokta, işlemlerin artık Connection üzerinden başlatılmaması, bunun yerine geliştiricinin tanımladığı RPC Provider aracılığıyla özel bir fonksiyon oluşturulması ve ardından bu fonksiyonun çağrılarak işlemin başlatılmasıdır. 1.x versiyonuna göre, kod miktarı artmış olsa da, özelleştirilebilirlik daha da güçlenmiştir.
İşlemler HTTPS RPC aracılığıyla başlatılır ve ardından işlem sonuçlarını doğrulamak için WSS RPC üzerinden abone olunarak takip edilir. Yeni yöntemin WSS'ye oldukça bağımlı olduğu hissediliyor ve gelecekte WSS uygulamalarının giderek daha yaygın hale geleceğine inanılıyor. Bu durum, RPC sağlayıcılarının hizmet istikrarı için daha yüksek talepler getirmektedir.
React
Önemli bir nokta, @solana/web3.js projesinde @solana/react adında bir kütüphane bulunmasıdır; bu kütüphane bazı React Hook'ları sağlamaktadır ve signIn gibi işlevleri içinde barındırmaktadır.
Özet
@solana/web3.js 2.x sürümünün yayınlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan taahhüdünü göstermektedir. Bu, geliştiricilere Solana ağı ile etkileşim kurmanın verimli, esnek ve özelleştirilebilir bir yolunu sunarak platformun benimsenmesini ve gelişimini desteklemektedir.