Solana'da tamamen zincir üzerinde bir python ortamı dağıttım Şimdi Solana'da yerel python betikleri ve bayt kodunu çalıştırıyorsunuz program adresi: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Ön Uç burada: Birkaç örnek: print ("Merhaba Solana!") >>> "Merhaba Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Perşembe 18 Aralık 19:26:15 2025"
Solana hesapları dosya gibi muamele görüyor Bu da Solana hesaplarına okuma/yazma ve Python paketlerini Solana hesaplarına dağıtabileceğiniz anlamına gelir Bu da aşağıdaki gibi python koduna izin verir: f = açık("/sol/1", "w") f.write("def greet(name):\n return 'Hello' + name") sol_1 my_package olarak içe aktar print(my_package.greet("Solana")) >> "Merhaba Solana"
Çoğu yerleşik donanım, base58/64, struct, json, time ve bir matematik paketi dahildir. PDA'lar, çapraz zincir çağrısı ve çoğu Solana sistem çağrısı desteği içeren bir Solana paketi var Zaman paketi Solana saatini sarıyor ve program, diğer programların python programını çağırıp sonucu kullanabilmesi için son değerlendirilmemiş ifadeyi return_data olarak döndürür
Python programı, Python kodunu ayrıştırma, derleme ve çalıştırmayı destekler Ancak zincir üzerinde ayrıştırmak çok pahalıdır. karmaşık özyinelemeli python scriptleri hızla 1.4M hesaplama birimi sınırına girer Daha karmaşık Python programlarında kullanıcılar betiği zincir dışı olarak Python bayt koduna derleyebilir. Bu, ~10-100x gaz tasarrufu sağlar ve çok daha karmaşık Python programlarının zincir üzerinde çalıştırılmasına olanak tanır print(1+2+3) gibi basit bir özyinelemeli betik 1.328.442/1.399.700 hesaplama birimi tüketir Bayt koduna derlendiğinde 13.579/1.339.700 hesaplama birimi (100 kat daha ucuz) tüketiyor. Ön yüz, kullanıcıların bayt koduna derleyip programı zincir üzerinde çalıştırabilmeleri için bir WASM Python Complier'ı içerir
Bu projeyi Şükran Günü'nde zaman kaybederken Vibe kodlamasına başladım ve PikaPython ile karşılaştım: sadece 4KB RAM ile çalışan, sıfır bağımlılık olan bir C Python yorumlayıcısı Tesadüfen @solana 4kb bir yığına (RAM) sahip, C destekliyor ve standart C bağımlılıklarının çoğuna sahip değil projenin %99'u yapay zeka tarafından taşındı ve benim tarafımdan sadece gevşek bir şekilde test edilmiş, bu yüzden lütfen bunu kritik operasyonlar veya değerli cüzdanlar için kullanmayın Ancak, Solana'yı keşfetmek ve Solana'nın nasıl çalıştığını öğrenmek için eğlenceli bir oyun alanı sonunda daha fazla paket ve DeFi uygulamaları için paket desteğiyle, bu durum Solana'da veri analizi ve prototipleme için faydalı bir araç haline gelebilir
Projeyi Solana BPF'ye taşımak için birkaç değişiklik yapmak zorunda kaldım - BPF küresel yazılabilir durumu desteklemiyor, bu yüzden tüm küreselleri yığına taşımak zorunda kaldım - BPF, C araç zincirinde >5 fonksiyon argümanlarını desteklemez, bu yüzden yapılara işaret olarak 5+ argümanlı fonksiyonları vermek zorunda kalmıştır - metin segmentinin dışına işaret eden fonksiyon işaretçileri yasaktır, bu nedenle işaretçi dizileri ve diğer "güvensiz" çağrı hedefleri yeniden düzenlenmek zorunda kalmıştır - Printf gibi standart libc fonksiyonları yeniden uygulanmalıydı - yığın kullanımını optimize etmek ve büyük yapıları yığına taşımak - birkaç büyük tamponu önceden tahsis eden özel bir tahsis cihazı uygulandı - sysout'u sol_log olarak uygulayın ve son değerlendirilmemiş ifadeyi return_data Aşağıdaki gitHub bağlantısı. Katkıda bulunmaktan çekinmeyin:
şu anda VM 1.4M hesaplama birimiyle sınırlıdır gelecekte python yorumlayıcısı, CU sınırını 12M hesap sınırına veya daha fazlasına kadar genişletmek için bundle'lar kullanabilir bunun için şunları gerektirir: - yorumlayıcı içinde CU kullanımını kontrol etmek - ayrıştırıcı ve VM birimi 1.4M CU sınırına yaklaşmaya başladığında askıya alınarak - heap'te depolanan ayrıştırıcı/VM durumunu bir hesaba aktarmak - çevirici devam ettiğinde yığını yüklemek gelecekteki diğer uzantılar ise popüler DeFi uygulamaları için paketler uygulamak olacak, böylece kullanıcılar python'da zincir üzerindeki programlarla daha kolay etkileşime girebilecek Pyo3 veya Cython desteği, kullanıcıların mevcut Solana Rust kütüphanelerini genişleten verimli python paketlerini kolayca yazmalarını sağlar son olarak, PikaPython tarafından desteklenen Numpy'yi taşımak harika bir proje olurdu
Proje ücretsiz ve açık kaynaklıdır - token yoktur Oyuna olan sevgim için yaptım keyfini çıkarın - moonshiesty
136