Solana Web3.js 2.x Sürümü: Fonksiyon zengini JavaScript Kütüphanesi Büyük Güncelleme
Solana Web3.js, güçlü bir JavaScript kütüphanesi olarak, Kasım ayında 2.x sürümünü resmi olarak yayınladı. Bu yeni sürüm, 1.x'e kıyasla önemli değişiklikler içeriyor, bu makalede ana değişiklikler özetlenecektir.
2.x sürümü yeni çıkmış olmasına rağmen, kullanım oranı henüz yaygınlaşmamıştır ve birçok yüksek kullanım oranına sahip kütüphane de geçiş yapmamıştır. Ancak bu değişiklikleri anlamak, gelecekteki geçiş çalışmaları için oldukça faydalıdır.
Sürüm Karşılaştırması
1.x sürümü kullanımı oldukça basittir, sadece tek bir @solana/web3.js paketini içe aktarmanız yeterlidir. Sınıf tabanlı bir tasarıma dayanır ve birçok yaygın işlemi kapsar. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu hemen hemen tüm işlevleri kapsayan onlarca yöntem sunar.
Ancak, bu tasarım bazı sorunlar da getiriyor. Geliştiriciler genellikle sadece bu işlevlerin küçük bir kısmını kullanmasına rağmen, tüm kod kütüphanesi kullanıcı cihazına indiriliyor ve bu da yükleme sürelerinin uzamasına neden olabilir.
2.x sürümü farklı bir yaklaşım benimsemiştir. Resmi ekip, mevcut kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birden fazla küçük modüle ayırmıştır. Aynı zamanda, sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon kullanma yoluna gitmiştir. Bu değişiklik, JavaScript kodunun derlenmesi sırasında optimizasyonu kolaylaştırmakta, kullanılmayan kodlar silinmekte ve kullanıcı cihazına indirilmemektedir.
Resmi belgelerdeki verilere göre, yeni sürüm DApp'lerin kullanımı genellikle %30 boyut optimizasyonu sağlar. Eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgeleri yazma sürecine yeni zorluklar getirdi; geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmaları anahtar bir sorun haline geldi. Şu anda, paket adlarının iyi bir anlamsallığa sahip olduğu görülüyor; adlarından genel amaçlarını anlayabiliyoruz, bu da geliştiricilerin geçiş zorluklarını bir dereceye kadar azaltıyor.
Yeni sürümün henüz yeni yayınlanmış olması nedeniyle, birçok proje henüz geçiş yapmamıştır. Şu anda, 2.x sürümüne ait örnekler oldukça azdır. Ayrıca, yeni sürümün çalışma zamanı yerleşik işlevlerini (örneğin, anahtar çiftleri oluşturma gibi) kullanma eğiliminde olması nedeniyle, belgelerde ilgili açıklamaların eksik olması 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 çok önemli olmayabilir, ancak bu yıl Aralık ayının başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde meydana gelen tedarik zinciri saldırısını düşündüğümüzde, dış bağımlılıkların azaltılması güvenlik olaylarının meydana gelme olasılığını büyük ölçüde azaltabilir. 2.x sürümünün yayınlanması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 getirilmesini 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 2.x'de, daha fonksiyonel bir yaklaşım benimsenmiştir:
javascript
import { createSolanaRpcApi } from '@solana/web3.js';
// rpc kullanarak işlem gönder
const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);
sendAndConfirmTransaction fonksiyonu çağrıldığında, otomatik olarak HTTPS isteği gönderilir ve işlem durumunu abone olmak için WSS bağlantısı kurar, işlem onaylandıktan sonra işlem hash'ini döndürür.
anahtar çifti
2.x sürümünde, 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, anahtar çiftini await generateKeyPair() kullanarak oluşturabilirsiniz, önceden olduğu gibi Keypair.generate() yerine.
Yeni generateKeyPair, Promise döndürüyor; bu, yeni uygulamanın mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlandığı ve yerel Ed25519 uygulamasını kullandığı içindir. Web Crypto API'sinin birçok yöntemi asynchrondur.
işlem gönder
2.x sürümünde Transaction ve VersionedTransaction sınıfları artık yok. System Program ile ilgili yöntemler de artık mevcut değil, başka yerlerden alınması gerekiyor. Örneğin, transfer komutu @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırması gerekiyor.
Yeni sürüm, fonksiyonel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Aşağıda, pipe fonksiyonu kullanarak 1.x sürümündeki transfer işlevinin nasıl gerçekleştirileceği gösterilmektedir:
javascript
import { pipe } from '@solana/functional';
import { getTransferSolInstruction } from '@solana/system-program';
import {
addSignatureToTransaction,
createTransaction,
sendAndConfirmTransaction,
} from '@solana/web3.js';
1.x sürümüne kıyasla, kod miktarı artmış, ancak özelleştirilebilirlik daha güçlü hale gelmiştir. İşlemler HTTPS RPC üzerinden başlatılır ve ardından işlem sonuçlarını onaylamak için WSS RPC üzerinden abone olunur.
React desteği
@solana/web3.js projesinde @solana/react adında bir kütüphane da bulunmaktadır; bu kütüphane bazı React Hook'ları sunar ve signIn gibi özellikler içerir.
Özet
@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli iyileştirme kararlılığını göstermektedir. Yeni sürüm, geliştiricilere etkili, esnek ve özelleştirilebilir bir Solana ağ etkileşimi sunarak, platformun benimsenmesini ve gelişimini teşvik etmesi beklenmektedir.
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.
13 Likes
Reward
13
6
Share
Comment
0/400
LiquidityHunter
· 2h ago
Modül optimizasyonu... ama performans darboğazı hala %85 eşiğinde.
View OriginalReply0
OnchainFortuneTeller
· 20h ago
BTC'nin yüzüne bakmak dolandırıcıdır.
View OriginalReply0
NoodlesOrTokens
· 20h ago
Sonunda güncellendi, mırıldanarak.
View OriginalReply0
SandwichTrader
· 20h ago
Neden bu kadar hızlı koşuyorsun? Yapı mı panik yaptı?
Solana Web3.js 2.x sürümü: Modüler tasarım performansı optimize eder ve güvenliği artırır
Solana Web3.js 2.x Sürümü: Fonksiyon zengini JavaScript Kütüphanesi Büyük Güncelleme
Solana Web3.js, güçlü bir JavaScript kütüphanesi olarak, Kasım ayında 2.x sürümünü resmi olarak yayınladı. Bu yeni sürüm, 1.x'e kıyasla önemli değişiklikler içeriyor, bu makalede ana değişiklikler özetlenecektir.
2.x sürümü yeni çıkmış olmasına rağmen, kullanım oranı henüz yaygınlaşmamıştır ve birçok yüksek kullanım oranına sahip kütüphane de geçiş yapmamıştır. Ancak bu değişiklikleri anlamak, gelecekteki geçiş çalışmaları için oldukça faydalıdır.
Sürüm Karşılaştırması
1.x sürümü kullanımı oldukça basittir, sadece tek bir @solana/web3.js paketini içe aktarmanız yeterlidir. Sınıf tabanlı bir tasarıma dayanır ve birçok yaygın işlemi kapsar. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu hemen hemen tüm işlevleri kapsayan onlarca yöntem sunar.
Ancak, bu tasarım bazı sorunlar da getiriyor. Geliştiriciler genellikle sadece bu işlevlerin küçük bir kısmını kullanmasına rağmen, tüm kod kütüphanesi kullanıcı cihazına indiriliyor ve bu da yükleme sürelerinin uzamasına neden olabilir.
2.x sürümü farklı bir yaklaşım benimsemiştir. Resmi ekip, mevcut kod kütüphanesini @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions gibi birden fazla küçük modüle ayırmıştır. Aynı zamanda, sınıf tabanlı uygulamayı terk ederek tek bir fonksiyon kullanma yoluna gitmiştir. Bu değişiklik, JavaScript kodunun derlenmesi sırasında optimizasyonu kolaylaştırmakta, kullanılmayan kodlar silinmekte ve kullanıcı cihazına indirilmemektedir.
Resmi belgelerdeki verilere göre, yeni sürüm DApp'lerin kullanımı genellikle %30 boyut optimizasyonu sağlar. Eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha yüksek olabilir.
Bu değişim, Solana ekibinin belgeleri yazma sürecine yeni zorluklar getirdi; geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmaları anahtar bir sorun haline geldi. Şu anda, paket adlarının iyi bir anlamsallığa sahip olduğu görülüyor; adlarından genel amaçlarını anlayabiliyoruz, bu da geliştiricilerin geçiş zorluklarını bir dereceye kadar azaltıyor.
Yeni sürümün henüz yeni yayınlanmış olması nedeniyle, birçok proje henüz geçiş yapmamıştır. Şu anda, 2.x sürümüne ait örnekler oldukça azdır. Ayrıca, yeni sürümün çalışma zamanı yerleşik işlevlerini (örneğin, anahtar çiftleri oluşturma gibi) kullanma eğiliminde olması nedeniyle, belgelerde ilgili açıklamaların eksik olması 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 çok önemli olmayabilir, ancak bu yıl Aralık ayının başında @solana/web3.js 1.95.5 ve 1.95.6 sürümlerinde meydana gelen tedarik zinciri saldırısını düşündüğümüzde, dış bağımlılıkların azaltılması güvenlik olaylarının meydana gelme olasılığını büyük ölçüde azaltabilir. 2.x sürümünün yayınlanması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 getirilmesini 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 2.x'de, daha fonksiyonel bir yaklaşım benimsenmiştir:
javascript import { createSolanaRpcApi } from '@solana/web3.js';
const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });
// rpc kullanarak işlem gönder const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);
sendAndConfirmTransaction fonksiyonu çağrıldığında, otomatik olarak HTTPS isteği gönderilir ve işlem durumunu abone olmak için WSS bağlantısı kurar, işlem onaylandıktan sonra işlem hash'ini döndürür.
anahtar çifti
2.x sürümünde, 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, anahtar çiftini await generateKeyPair() kullanarak oluşturabilirsiniz, önceden olduğu gibi Keypair.generate() yerine.
Yeni generateKeyPair, Promise döndürüyor; bu, yeni uygulamanın mümkün olduğunca JavaScript'in Web Crypto API'sinden yararlandığı ve yerel Ed25519 uygulamasını kullandığı içindir. Web Crypto API'sinin birçok yöntemi asynchrondur.
işlem gönder
2.x sürümünde Transaction ve VersionedTransaction sınıfları artık yok. System Program ile ilgili yöntemler de artık mevcut değil, başka yerlerden alınması gerekiyor. Örneğin, transfer komutu @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırması gerekiyor.
Yeni sürüm, fonksiyonel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Aşağıda, pipe fonksiyonu kullanarak 1.x sürümündeki transfer işlevinin nasıl gerçekleştirileceği gösterilmektedir:
javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { addSignatureToTransaction, createTransaction, sendAndConfirmTransaction, } from '@solana/web3.js';
const transferSol = pipe( // İşlem oluştur (ix) => createTransaction({ instructions: [ix] }), // İmza ekle (tx) => addSignatureToTransaction(tx, signer), // İşlem gönder ve onayla (signedTx) => sendAndConfirmTransaction(rpc, signedTx) );
const signature = await transferSol( getTransferSolInstruction({ from: sender, alıcıya, miktar, }) );
1.x sürümüne kıyasla, kod miktarı artmış, ancak özelleştirilebilirlik daha güçlü hale gelmiştir. İşlemler HTTPS RPC üzerinden başlatılır ve ardından işlem sonuçlarını onaylamak için WSS RPC üzerinden abone olunur.
React desteği
@solana/web3.js projesinde @solana/react adında bir kütüphane da bulunmaktadır; bu kütüphane bazı React Hook'ları sunar ve signIn gibi özellikler içerir.
Özet
@solana/web3.js 2.x sürümünün yayımlanması, Solana ekibinin sürekli iyileştirme kararlılığını göstermektedir. Yeni sürüm, geliştiricilere etkili, esnek ve özelleştirilebilir bir Solana ağ etkileşimi sunarak, platformun benimsenmesini ve gelişimini teşvik etmesi beklenmektedir.