Solana Web3.js, zengin özelliklere sahip bir JavaScript kütüphanesi olarak, bu yılın Kasım ayında 2.x sürümünü resmi olarak yayımladı. Önceki 1.x sürümüne kıyasla, yeni sürümde önemli değişiklikler yapıldı. Bu makalede, ana değişiklikler özetlenecektir.
2.x sürümü yeni yayımlanmış olmasına rağmen, kullanımı henüz yaygınlaşmamış, birçok yaygın kullanılan kütüphane de geçiş yapmamıştır; ancak bu değişiklikleri anlamak, gelecekteki göç çalışmalarına büyük fayda sağlayacaktır.
Versiyon Karşılaştırması
Inkar edilemez ki, eski sürüm kullanımı 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 dayanıyor ve çok sayıda yaygın işlemi kapsıyor. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri neredeyse kapsayan onlarca yöntem sunuyor.
Ancak, bu tasarım bazı sorunlar da beraberinde getiriyor. Geliştiricilerin gerçekten kullandığı işlevlerin yalnızca çok küçük bir kısmı olabilir, ancak tüm kod kütüphanesi kullanıcı cihazına indirilecektir. Kütüphanenin kod miktarı büyük olduğu için bu biraz zaman alabilir.
Buna karşılık, 2.x sürümü mevcut kod tabanını @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ı uygulamalardan vazgeçerek daha fazla tek fonksiyon kullanımına yönelmiştir, bu da JavaScript kodu derlenirken optimizasyon açısından oldukça faydalıdır. Kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecektir. Resmi belgeye göre, yeni sürümü kullanan DApp'ler genellikle %30 oranında boyut optimizasyonu elde edebilmektedir, eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha da yüksek olabilir.
Bu, Solana ekibinin belgelerinin kalitesine daha yüksek talepler getiriyor ve geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarını sağlamak önemli bir konu haline geldi. Görünüşe göre, paket adları iyi bir anlamsallığa sahip; isimlerinden yola çıkarak işlevlerini kabaca anlayabiliyoruz, bu da bir ölçüde geliştiricilerin geçiş zorluğunu azaltıyor.
Yeni yayınlandığı için birçok projenin henüz göç etmediği görülüyor. Solana Cookbook'ta 2.x sürümü ile ilgili örnekler de nispeten az. Ayrıca, yeni sürüm, anahtar çiftleri oluşturma gibi çalışma zamanı yerleşik işlevlerini kullanma eğiliminde; ancak bu işlevler hakkında belgelerde yeterli açıklama bulunmadığı için, geliştiricilerin bazı konularda kafalarının karışabileceği düşünülüyor.
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ına bakıldığında, daha fazla dış girdi ve bağımlılık güvenlik olaylarının meydana gelme olasılığını önemli ölçüde artırmaktadır. 2.x sürümünün yayımlanmasıyla birlikte, Web3.js geliştirme ekibi daha fazla yerel işlev kullanmaya ve dış bağımlılıkların ve Polyfill'lerin getirilmesini iptal etmeye karar verdi. Gelecekte değişiklikler olabilir, ancak en azından ş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 sunar. Ancak temel işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmak ve ardından çeşitli istekleri göndermektir.
2.x versiyonu, bu işlevi gerçekleştirmek için daha fonksiyonel bir yaklaşım benimsemiştir. Örneğin, sendAndConfirmTransaction ile işlem gönderildiğinde, otomatik olarak HTTPS isteği başlatır ve işlem durumunu abone olmak için WSS bağlantısı kurar, işlem onaylandığında işlem hash'ini döndürür.
anahtar çifti
Açık anahtar ve özel anahtar ile ilgili kısımda da önemli değişiklikler oldu. 1.x sürümünde sıkça kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bunların yerini bazı fonksiyonlar aldı.
Örneğin, artık await generateKeyPair() ile anahtar çiftleri oluşturabilirsiniz, öncekilerin yerine Keypair.generate(). Yeni generateKeyPair'in bir Promise döndürdüğünü belirtmek önemlidir; çünkü yeni uygulama, mümkün olduğunca JavaScript'in Web Crypto API'sini kullanarak, yerel Ed25519 uygulamasını kullanmıştır. Web Crypto API'sinin birçok yöntemi asynchrondur. Ancak, bu değişiklik kabul edilemez değil; 2024'ün sona ermekte olduğu bu günlerde, JavaScript geliştiricileri Promise'lerle oldukça tanıdık.
işlem gönder
1.x sürüm kullanıcılarının aşina olduğu Transaction ve VersionedTransaction iki sınıf 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ğil, bu nedenle SystemProgram sınıfındaki statik yöntemler başka yerlerden dahil edilmelidir. Örneğin, transfer komutu @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmalıdır.
Artık class sağlanmadığı için, Web3.js işlevsel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Geliştiriciler, pipe fonksiyonu aracılığıyla önceki 1.x sürümündeki transfer işlevselliğini gerçekleştirebilir.
Dikkate değer olan, işlemlerin artık Connection üzerinden başlatılmadığı, bunun yerine tanımlı bir RPC Provider aracılığıyla özel bir fonksiyon oluşturulup bu fonksiyonun çağrılmasıyla işlemlerin başlatıldığıdır. 1.x sürümüne göre, kod miktarı artmış olsa da, ö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'ye abone olunarak doğrulanır. Yeni yöntem WSS'ye oldukça bağımlıdır, gelecekte WSS'nin uygulamalarının giderek daha yaygın hale geleceğine inanıyorum; bu da RPC sağlayıcılarının hizmet kararlılığı için daha yüksek talepler getirmektedir.
React
Bahsetmeye değer ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır. Bu kütüphane, signIn gibi özellikleri içeren 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ştirme taahhüdünü tam olarak yansıtmaktadır. Bu, geliştiricilere Solana ağıyla etkileşimde bulunmaları için verimli, esnek ve özelleştirilebilir bir yol sunarak bu platformun benimsenmesi 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.
15 Likes
Reward
15
4
Share
Comment
0/400
MemeCoinSavant
· 07-15 21:50
istatistiksel modellerime göre, bu paradigma kayması af ngl'ye dayanıyor.
View OriginalReply0
MEVHunterZhang
· 07-15 21:45
Sonunda yeniden yapılanmayı bekledim, uzun zaman oldu.
Solana Web3.js 2.x sürümü yayımlandı: Fonksiyonel programlama yeniden yapılandırması önemli iyileştirmeler sağladı
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ın Kasım ayında 2.x sürümünü resmi olarak yayımladı. Önceki 1.x sürümüne kıyasla, yeni sürümde önemli değişiklikler yapıldı. Bu makalede, ana değişiklikler özetlenecektir.
2.x sürümü yeni yayımlanmış olmasına rağmen, kullanımı henüz yaygınlaşmamış, birçok yaygın kullanılan kütüphane de geçiş yapmamıştır; ancak bu değişiklikleri anlamak, gelecekteki göç çalışmalarına büyük fayda sağlayacaktır.
Versiyon Karşılaştırması
Inkar edilemez ki, eski sürüm kullanımı 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 dayanıyor ve çok sayıda yaygın işlemi kapsıyor. Örneğin, Connection sınıfı, geliştiricilerin ihtiyaç duyduğu tüm işlevleri neredeyse kapsayan onlarca yöntem sunuyor.
Ancak, bu tasarım bazı sorunlar da beraberinde getiriyor. Geliştiricilerin gerçekten kullandığı işlevlerin yalnızca çok küçük bir kısmı olabilir, ancak tüm kod kütüphanesi kullanıcı cihazına indirilecektir. Kütüphanenin kod miktarı büyük olduğu için bu biraz zaman alabilir.
Buna karşılık, 2.x sürümü mevcut kod tabanını @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ı uygulamalardan vazgeçerek daha fazla tek fonksiyon kullanımına yönelmiştir, bu da JavaScript kodu derlenirken optimizasyon açısından oldukça faydalıdır. Kullanılmayan kod silinecek ve kullanıcı cihazına indirilmeyecektir. Resmi belgeye göre, yeni sürümü kullanan DApp'ler genellikle %30 oranında boyut optimizasyonu elde edebilmektedir, eğer sadece az sayıda özellik kullanılıyorsa, optimizasyon oranı daha da yüksek olabilir.
Bu, Solana ekibinin belgelerinin kalitesine daha yüksek talepler getiriyor ve geliştiricilerin ihtiyaç duydukları işlevleri hızlı bir şekilde bulmalarını sağlamak önemli bir konu haline geldi. Görünüşe göre, paket adları iyi bir anlamsallığa sahip; isimlerinden yola çıkarak işlevlerini kabaca anlayabiliyoruz, bu da bir ölçüde geliştiricilerin geçiş zorluğunu azaltıyor.
Yeni yayınlandığı için birçok projenin henüz göç etmediği görülüyor. Solana Cookbook'ta 2.x sürümü ile ilgili örnekler de nispeten az. Ayrıca, yeni sürüm, anahtar çiftleri oluşturma gibi çalışma zamanı yerleşik işlevlerini kullanma eğiliminde; ancak bu işlevler hakkında belgelerde yeterli açıklama bulunmadığı için, geliştiricilerin bazı konularda kafalarının karışabileceği düşünülüyor.
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ına bakıldığında, daha fazla dış girdi ve bağımlılık güvenlik olaylarının meydana gelme olasılığını önemli ölçüde artırmaktadır. 2.x sürümünün yayımlanmasıyla birlikte, Web3.js geliştirme ekibi daha fazla yerel işlev kullanmaya ve dış bağımlılıkların ve Polyfill'lerin getirilmesini iptal etmeye karar verdi. Gelecekte değişiklikler olabilir, ancak en azından ş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 sunar. Ancak temel işlevi, RPC istek adresini yapılandırarak bir istek gönderici oluşturmak ve ardından çeşitli istekleri göndermektir.
2.x versiyonu, bu işlevi gerçekleştirmek için daha fonksiyonel bir yaklaşım benimsemiştir. Örneğin, sendAndConfirmTransaction ile işlem gönderildiğinde, otomatik olarak HTTPS isteği başlatır ve işlem durumunu abone olmak için WSS bağlantısı kurar, işlem onaylandığında işlem hash'ini döndürür.
anahtar çifti
Açık anahtar ve özel anahtar ile ilgili kısımda da önemli değişiklikler oldu. 1.x sürümünde sıkça kullanılan Keypair ve PublicKey sınıfları artık mevcut değil, bunların yerini bazı fonksiyonlar aldı.
Örneğin, artık await generateKeyPair() ile anahtar çiftleri oluşturabilirsiniz, öncekilerin yerine Keypair.generate(). Yeni generateKeyPair'in bir Promise döndürdüğünü belirtmek önemlidir; çünkü yeni uygulama, mümkün olduğunca JavaScript'in Web Crypto API'sini kullanarak, yerel Ed25519 uygulamasını kullanmıştır. Web Crypto API'sinin birçok yöntemi asynchrondur. Ancak, bu değişiklik kabul edilemez değil; 2024'ün sona ermekte olduğu bu günlerde, JavaScript geliştiricileri Promise'lerle oldukça tanıdık.
işlem gönder
1.x sürüm kullanıcılarının aşina olduğu Transaction ve VersionedTransaction iki sınıf 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ğil, bu nedenle SystemProgram sınıfındaki statik yöntemler başka yerlerden dahil edilmelidir. Örneğin, transfer komutu @solana-program/system içindeki getTransferSolInstruction fonksiyonunu çağırmalıdır.
Artık class sağlanmadığı için, Web3.js işlevsel programlamada yaygın olarak kullanılan pipe biçimini sunmaktadır. Geliştiriciler, pipe fonksiyonu aracılığıyla önceki 1.x sürümündeki transfer işlevselliğini gerçekleştirebilir.
Dikkate değer olan, işlemlerin artık Connection üzerinden başlatılmadığı, bunun yerine tanımlı bir RPC Provider aracılığıyla özel bir fonksiyon oluşturulup bu fonksiyonun çağrılmasıyla işlemlerin başlatıldığıdır. 1.x sürümüne göre, kod miktarı artmış olsa da, ö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'ye abone olunarak doğrulanır. Yeni yöntem WSS'ye oldukça bağımlıdır, gelecekte WSS'nin uygulamalarının giderek daha yaygın hale geleceğine inanıyorum; bu da RPC sağlayıcılarının hizmet kararlılığı için daha yüksek talepler getirmektedir.
React
Bahsetmeye değer ki, @solana/web3.js projesinde @solana/react adında bir kütüphane de bulunmaktadır. Bu kütüphane, signIn gibi özellikleri içeren 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ştirme taahhüdünü tam olarak yansıtmaktadır. Bu, geliştiricilere Solana ağıyla etkileşimde bulunmaları için verimli, esnek ve özelleştirilebilir bir yol sunarak bu platformun benimsenmesi ve gelişimini desteklemektedir.