ho implementato un ambiente Python completamente on-chain su Solana ora puoi eseguire script Python nativi e bytecode su Solana indirizzo del programma: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE frontend qui: alcuni esempi: print("Hello Solana!") >>> "Hello Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Gio 18 Dic 2025 19:26:15"
Gli account di Solana sono trattati come file il che significa che puoi leggere/scrivere negli account di Solana e distribuire pacchetti Python negli account di Solana il che consente codice Python come: 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"
la maggior parte delle funzioni integrate, base58/64, struct, json, time e un pacchetto matematico sono inclusi c'è un pacchetto solana con supporto per PDAs, invocazione cross-chain e la maggior parte delle syscalls di solana il pacchetto time avvolge l'orologio di solana e il programma restituisce l'ultima istruzione non valutata come return_data in modo che altri programmi possano invocare il programma python e utilizzare il risultato
il programma python supporta l'analisi, la compilazione e l'esecuzione di codice python tuttavia, l'analisi on-chain è molto costosa. qualsiasi script python ricorsivo complicato incontra rapidamente il limite di 1,4 milioni di unità di calcolo per programmi python più complicati, gli utenti possono compilare lo script in bytecode python off-chain. questo comporta un risparmio di gas di ~10-100x e consente l'esecuzione di programmi python molto più complicati on-chain uno script ricorsivo semplice come print(1+2+3) consuma 1.328.442/1.399.700 unità di calcolo compilato in bytecode consuma 13.579/1.339.700 unità di calcolo (100x più economico) il frontend contiene un compilatore python wasm in modo che gli utenti possano facilmente compilare in bytecode ed eseguire il programma on-chain
Ho iniziato a codificare questo progetto durante il giorno del Ringraziamento mentre passavo il tempo e mi sono imbattuto in PikaPython: un interprete C per Python che funziona con solo 4KB di RAM, senza dipendenze. Coincidentalmente, @solana ha uno stack da 4KB (RAM), supporta C e non ha molte delle dipendenze standard di C. Il progetto è stato portato al 99% da AI e solo vagamente testato da me, quindi per favore non utilizzarlo per operazioni critiche o con portafogli di valore. Tuttavia, è un divertente campo di gioco per esplorare Solana e imparare come funziona Solana. Alla fine, con più pacchetti e supporto per pacchetti per app DeFi, questo potrebbe diventare uno strumento utile per l'analisi dei dati e il prototipaggio su Solana.
ho dovuto apportare diverse modifiche per portare il progetto al BPF di Solana - Il BPF non supporta lo stato globale scrivibile, quindi ho dovuto spostare tutte le variabili globali nell'heap - Il BPF non supporta più di 5 argomenti per funzione (sulla toolchain C), quindi ho dovuto passare le funzioni con più di 5 argomenti come puntatori a strutture - I puntatori a funzione che puntano al di fuori del segmento di testo non sono consentiti, quindi gli array di puntatori e altri obiettivi di chiamata "non sicuri" hanno dovuto essere rifattorizzati - Funzioni standard della libc come printf hanno dovuto essere reimplementate - Ottimizzato l'uso dello stack e spostato grandi strutture nell'heap - Implementato un allocatore personalizzato che prealloca diversi grandi buffer - Implementare sysout come sol_log e restituire l'ultima istruzione non valutata come return_data link github qui sotto. Sentiti libero di contribuire:
in questo momento la VM è limitata a 1,4 milioni di unità di calcolo in futuro l'interprete python potrebbe utilizzare pacchetti per estendere il limite delle unità di calcolo fino al limite dell'account di 12 milioni o oltre questo richiederebbe: - controllare l'uso delle unità di calcolo all'interno dell'interprete - sospendere il parser e l'unità VM quando inizia ad avvicinarsi al limite di 1,4 milioni di unità di calcolo - persistere lo stato del parser/VM memorizzato nell'heap in un account - caricare l'heap quando l'interprete riprende altre estensioni future consisterebbero nell'implementare pacchetti per le app DeFi più popolari in modo che gli utenti possano interagire più facilmente con i programmi on-chain in python il supporto per Pyo3 o Cython consentirebbe agli utenti di scrivere facilmente pacchetti python efficienti che estendono le librerie rust esistenti di solana infine, portare numpy, che è supportato da PikaPython, sarebbe un progetto interessante
il progetto è gratuito e open-source - non c'è alcun token l'ho fatto per amore del gioco divertiti - moonshiesty
126