Popularne tematy
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
wdrożyłem w pełni on-chain środowisko Pythona na Solanie
teraz możesz uruchamiać natywne skrypty Pythona i bajtkod na Solanie
adres programu: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE
frontend tutaj:
kilka przykładów:
print("Hello Solana!")
>>> "Hello Solana!"
print(math.sqrt(2.0))
>>> 1.414213
print(time.asctime())
"Czw Gru 18 19:26:15 2025"

Konta Solana są traktowane jak pliki
co oznacza, że możesz czytać/zapisywać do kont Solana i wdrażać pakiety Pythona na kontach Solana
co pozwala na użycie kodu Pythona, takiego jak:
f = open("/sol/1", "w")
f.write("def greet(name):\n return 'Hello ' + name")
import sol_1 as my_package
print(my_package.greet("Solana"))
>> "Hello Solana"

większość wbudowanych funkcji, base58/64, struktura, json, czas oraz pakiet matematyczny są dołączone
istnieje pakiet solana z obsługą PDA, wywołań międzyłańcuchowych oraz większości wywołań systemowych solana
pakiet czasu opakowuje zegar solana
a program zwraca ostatnie niewykonane wyrażenie jako return_data, aby inne programy mogły wywołać program python i użyć wyniku

program w Pythonie obsługuje analizowanie, kompilowanie i wykonywanie kodu Python
jednak analizowanie na łańcuchu jest bardzo kosztowne. wszelkie skomplikowane rekurencyjne skrypty Python szybko napotykają na limit 1,4M jednostek obliczeniowych
dla bardziej skomplikowanych programów Python użytkownicy mogą skompilować skrypt do bajtowego kodu Python poza łańcuchem. skutkuje to oszczędnością gazu na poziomie ~10-100x i pozwala na wykonywanie znacznie bardziej skomplikowanych programów Python na łańcuchu
prosty skrypt rekurencyjny, taki jak print(1+2+3), zużywa 1,328,442/1,399,700 jednostek obliczeniowych
skompilowany do bajtowego kodu zużywa 13,579/1,339,700 jednostek obliczeniowych (100x taniej)
frontend zawiera kompilator Python w wasm, więc użytkownicy mogą łatwo skompilować do bajtowego kodu i wykonać program na łańcuchu


Zacząłem kodować ten projekt podczas Święta Dziękczynienia, gdy zabijałem czas i natknąłem się na PikaPython: interpreter C w Pythonie, który działa tylko z 4KB RAM, bez żadnych zależności.
Przypadkiem @solana ma stos 4KB (RAM), wspiera C i nie ma wielu standardowych zależności C.
Projekt jest w 99% przeniesiony przez AI i tylko luźno testowany przeze mnie, więc proszę, nie używaj tego do żadnych operacji krytycznych ani z cennymi portfelami.
Jednakże, to jest fajny plac zabaw do eksploracji Solany i nauki o tym, jak działa Solana.
Ostatecznie, z większą liczbą pakietów i wsparciem dla aplikacji DeFi, to może stać się przydatnym narzędziem do analizy danych i prototypowania na Solanie.
musiałem wprowadzić kilka modyfikacji, aby przenieść projekt do Solana BPF
- BPF nie obsługuje globalnego stanu zapisywalnego, więc musiałem przenieść wszystkie zmienne globalne do sterty
- BPF nie obsługuje >5 argumentów funkcji (w narzędziu C), więc musiałem przekazywać funkcje z 5+ argumentami jako wskaźniki do struktur
- wskaźniki do funkcji, które wskazują poza segment tekstowy, są zabronione, więc tablice wskaźników i inne "niebezpieczne" cele wywołań musiały zostać przekształcone
- standardowe funkcje libc, takie jak printf, musiały zostać zaimplementowane na nowo
- zoptymalizowano użycie stosu i przeniesiono duże struktury do sterty
- zaimplementowano niestandardowy alokator, który wstępnie alokuje kilka dużych buforów
- zaimplementowano sysout jako sol_log i zwrócono ostatnie niewykonane wyrażenie jako return_data
o link do githuba poniżej. zachęcam do współpracy:

w tej chwili VM jest ograniczone do 1,4M jednostek obliczeniowych
w przyszłości interpreter Pythona mógłby używać pakietów, aby zwiększyć limit CU do 12M limitu konta lub więcej
wymagałoby to:
- sprawdzenia zużycia CU wewnątrz interpretera
- wstrzymania parsera i jednostki VM, gdy zaczyna zbliżać się do limitu 1,4M CU
- zapisania stanu parsera/VM przechowywanego w stercie do konta
- załadowania sterty, gdy interpreter wznowi działanie
inne przyszłe rozszerzenia obejmowałyby implementację pakietów dla popularnych aplikacji DeFi, aby użytkownicy mogli łatwiej interagować z programami on-chain w Pythonie
wsparcie dla Pyo3 lub Cython umożliwiłoby użytkownikom łatwe pisanie wydajnych pakietów Pythona, które rozszerzają istniejące biblioteki rust Solana
na koniec, przeniesienie numpy, które jest wspierane przez PikaPython, byłoby fajnym projektem
projekt jest darmowy i open-source - nie ma tokena
zrobiliśmy to z miłości do gry
ciesz się - moonshiesty
134
Najlepsze
Ranking
Ulubione
