Solana Web3.js 2.x: Fonksiyonel Programlama Yeni Bir Bölümü
Solana Web3.js kütüphanesi bu yıl Kasım ayında 2.x sürümünü resmi olarak yayımladı. 1.x sürümüne kıyasla, yeni sürüm yapısında ve kullanım şeklinde önemli değişiklikler olmuştur. Bu makale, geliştiricilerin gelecekte olası bir geçişe hazırlanmalarına yardımcı olmak için bu ana değişiklikleri özetleyecektir.
Sürüm Karşılaştırması
1.x sürümünün kullanımı oldukça basit olup, tüm işlevleri kapsamak için yalnızca bir @solana/web3.js paketi gereklidir. Sınıf tabanlı bir tasarıma dayanmakta olup, Connection sınıfı gibi onlarca yöntem sunarak geliştiricilerin ihtiyaç duyduğu tüm işlevleri hemen hemen kapsar. Ancak, bu tasarım bazı sorunlar da beraberinde getirmekte; örneğin, kod kütüphanesinin boyutunun çok büyük olması, geliştiriciler yalnızca birkaç işlev kullandığında bile tüm kütüphanenin kullanıcı cihazına indirilmesine neden olur.
2.x sürümü farklı bir yaklaşım benimsiyor. Resmi ekip, kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc gibi birden fazla küçük modüle ayırdı. Yeni sürüm, sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon yöntemi kullanıyor; bu, JavaScript kodunun derlenmesi sırasında optimizasyonu kolaylaştırıyor. Kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecek. Resmi istatistiklere göre, yeni sürümdeki DApp'ler genellikle %30 boyut optimizasyonu sağlayabilir; eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgelerinin kalitesi için daha yüksek talepler ortaya koydu. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarına yardımcı olmak, kritik bir sorun haline geldi. Şu anda, her bir paketin isimlendirmesi iyi bir anlam taşımakta ve isimlerinden genel olarak kullanım amaçları tahmin edilebilmektedir, bu da geliştiricilerin geçiş zorluğunu bir ölçüde azaltmaktadır.
Ancak, 2.x sürümünün yeni yayınlandığı için birçok proje henüz geçiş yapmamıştır. Solana Cookbook'ta 2.x sürümüyle ilgili örnekler de görece oldukça azdır. Yeni sürüm, anahtar çiftleri oluşturmak gibi çalışma zamanı yerleşik işlevlerini kullanma eğilimindedir, ancak belgelerde bu konu hakkında yeterli açıklama yoktur, bu da bazı 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, birçok kullanıcı için önemli olmayabilir, ancak 2023 Aralık başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde meydana gelen tedarik zinciri saldırıları 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ı büyük ölçüde artırmaktadır. 2.x sürümünün piyasaya sürülmesiyle birlikte, geliştirme ekibi daha fazla yerel işlevsellik kullanmaya karar verdi ve dış bağımlılıkların ve Polyfill'lerin kullanımını kaldırdı. Ş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ı
2.x sürümünde, bağlantı uygulaması daha işlevsel bir şekilde gerçekleştirilmiştir:
javascript
import { createSolanaRpc } from '@solana/web3.js';
const rpc = createSolanaRpc(');
sendAndConfirmTransaction çağrıldığında, otomatik olarak HTTPS isteği başlatılır ve işlem durumunu abone olmak için WSS bağlantısı kurulur; işlem onaylandıktan sonra işlem hash'i döner.
anahtar çift
2.x sürümünde, mevcut Keypair ve PublicKey sınıfları bazı fonksiyonlarla değiştirilmiştir. Örneğin, artık await generateKeyPair() ile anahtar çiftleri oluşturabilirsiniz, önceden kullanılan Keypair.generate() yerine.
Yeni generateKeyPair, Promise döndürür, çünkü yeni uygulama mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlanarak yerel Ed25519 uygulamasını kullanmıştır. Web Crypto API'nin birçok yöntemi asynchrondur.
işlem gönder
2.x sürümü artık Transaction ve VersionedTransaction sınıflarını kullanmıyor. System Program ile ilgili yöntemler de artık mevcut değil, başka yerlerden getirilmesi gerekiyor. Örneğin, transfer talimatı artık @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmayı gerektiriyor.
Yeni sürüm, fonksiyonel programlamada sıkça kullanılan pipe biçimini sunuyor. Aşağıda pipe fonksiyonu kullanarak para transferi işlevinin nasıl gerçekleştirileceğine dair bir örnek bulabilirsiniz:
javascript
import { pipe } from '@solana/functional';
import { getTransferSolInstruction } from '@solana/programs';
1.x sürümüne kıyasla, kod miktarı biraz arttı, ancak daha güçlü bir özelleştirme sunuyor.
React destekli
@solana/web3.js projesinde ayrıca signIn gibi işlevler sunan bazı React Hook'ları sağlayan @solana/react adında bir kütüphane bulunmaktadır.
Özet
@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan taahhüdünü gösteriyor. Yeni sürüm, geliştiricilere Solana ağı ile etkileşimde bulunmanın verimli, esnek ve özelleştirilebilir bir yolunu sunuyor ve bu platformun benimsenmesini ve gelişimini teşvik etmesi bekleniyor.
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
7
Share
Comment
0/400
GweiObserver
· 22h ago
Performans artışı yyds
View OriginalReply0
OPsychology
· 07-06 03:28
Çok hızlı bir şekilde sarılıyor, kim birkaç satır kod yazmadı ki?
View OriginalReply0
ShibaSunglasses
· 07-05 16:48
Sonunda eski Loco'nun işe yaramaz olduğunu optimize ettim.
Solana Web3.js 2.x yayımlandı: Fonksiyonel programlama yeniden yapılandırması performans artışı sağlıyor
Solana Web3.js 2.x: Fonksiyonel Programlama Yeni Bir Bölümü
Solana Web3.js kütüphanesi bu yıl Kasım ayında 2.x sürümünü resmi olarak yayımladı. 1.x sürümüne kıyasla, yeni sürüm yapısında ve kullanım şeklinde önemli değişiklikler olmuştur. Bu makale, geliştiricilerin gelecekte olası bir geçişe hazırlanmalarına yardımcı olmak için bu ana değişiklikleri özetleyecektir.
Sürüm Karşılaştırması
1.x sürümünün kullanımı oldukça basit olup, tüm işlevleri kapsamak için yalnızca bir @solana/web3.js paketi gereklidir. Sınıf tabanlı bir tasarıma dayanmakta olup, Connection sınıfı gibi onlarca yöntem sunarak geliştiricilerin ihtiyaç duyduğu tüm işlevleri hemen hemen kapsar. Ancak, bu tasarım bazı sorunlar da beraberinde getirmekte; örneğin, kod kütüphanesinin boyutunun çok büyük olması, geliştiriciler yalnızca birkaç işlev kullandığında bile tüm kütüphanenin kullanıcı cihazına indirilmesine neden olur.
2.x sürümü farklı bir yaklaşım benimsiyor. Resmi ekip, kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc gibi birden fazla küçük modüle ayırdı. Yeni sürüm, sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon yöntemi kullanıyor; bu, JavaScript kodunun derlenmesi sırasında optimizasyonu kolaylaştırıyor. Kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecek. Resmi istatistiklere göre, yeni sürümdeki DApp'ler genellikle %30 boyut optimizasyonu sağlayabilir; eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgelerinin kalitesi için daha yüksek talepler ortaya koydu. Geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarına yardımcı olmak, kritik bir sorun haline geldi. Şu anda, her bir paketin isimlendirmesi iyi bir anlam taşımakta ve isimlerinden genel olarak kullanım amaçları tahmin edilebilmektedir, bu da geliştiricilerin geçiş zorluğunu bir ölçüde azaltmaktadır.
Ancak, 2.x sürümünün yeni yayınlandığı için birçok proje henüz geçiş yapmamıştır. Solana Cookbook'ta 2.x sürümüyle ilgili örnekler de görece oldukça azdır. Yeni sürüm, anahtar çiftleri oluşturmak gibi çalışma zamanı yerleşik işlevlerini kullanma eğilimindedir, ancak belgelerde bu konu hakkında yeterli açıklama yoktur, bu da bazı 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, birçok kullanıcı için önemli olmayabilir, ancak 2023 Aralık başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde meydana gelen tedarik zinciri saldırıları 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ı büyük ölçüde artırmaktadır. 2.x sürümünün piyasaya sürülmesiyle birlikte, geliştirme ekibi daha fazla yerel işlevsellik kullanmaya karar verdi ve dış bağımlılıkların ve Polyfill'lerin kullanımını kaldırdı. Ş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ı
2.x sürümünde, bağlantı uygulaması daha işlevsel bir şekilde gerçekleştirilmiştir:
javascript import { createSolanaRpc } from '@solana/web3.js';
const rpc = createSolanaRpc(');
sendAndConfirmTransaction çağrıldığında, otomatik olarak HTTPS isteği başlatılır ve işlem durumunu abone olmak için WSS bağlantısı kurulur; işlem onaylandıktan sonra işlem hash'i döner.
anahtar çift
2.x sürümünde, mevcut Keypair ve PublicKey sınıfları bazı fonksiyonlarla değiştirilmiştir. Örneğin, artık await generateKeyPair() ile anahtar çiftleri oluşturabilirsiniz, önceden kullanılan Keypair.generate() yerine.
Yeni generateKeyPair, Promise döndürür, çünkü yeni uygulama mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlanarak yerel Ed25519 uygulamasını kullanmıştır. Web Crypto API'nin birçok yöntemi asynchrondur.
işlem gönder
2.x sürümü artık Transaction ve VersionedTransaction sınıflarını kullanmıyor. System Program ile ilgili yöntemler de artık mevcut değil, başka yerlerden getirilmesi gerekiyor. Örneğin, transfer talimatı artık @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmayı gerektiriyor.
Yeni sürüm, fonksiyonel programlamada sıkça kullanılan pipe biçimini sunuyor. Aşağıda pipe fonksiyonu kullanarak para transferi işlevinin nasıl gerçekleştirileceğine dair bir örnek bulabilirsiniz:
javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/programs';
const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ from: senderPublicKey, alıcıAçıkAnahtar, miktar: lamports, })) );
const signature = await sendAndConfirmTransaction(rpc, transaction, signers);
1.x sürümüne kıyasla, kod miktarı biraz arttı, ancak daha güçlü bir özelleştirme sunuyor.
React destekli
@solana/web3.js projesinde ayrıca signIn gibi işlevler sunan bazı React Hook'ları sağlayan @solana/react adında bir kütüphane bulunmaktadır.
Özet
@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli gelişim ve iyileştirmeye olan taahhüdünü gösteriyor. Yeni sürüm, geliştiricilere Solana ağı ile etkileşimde bulunmanın verimli, esnek ve özelleştirilebilir bir yolunu sunuyor ve bu platformun benimsenmesini ve gelişimini teşvik etmesi bekleniyor.