ik heb een volledig on-chain python omgeving op solana gedeployed nu kun je native python scripts en bytecode op solana uitvoeren programmadres: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE frontend hier: weinig voorbeelden: print("Hallo Solana!") >>> "Hallo Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Do Dec 18 19:26:15 2025"
solana-accounts worden behandeld als bestanden wat betekent dat je kunt lezen/schrijven naar solana-accounts en python-pakketten kunt implementeren naar solana-accounts wat python-code mogelijk maakt zoals: 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"
de meeste ingebouwde functies, base58/64, struct, json, tijd en een wiskundepakket zijn inbegrepen er is een solana-pakket met ondersteuning voor PDA's, cross-chain-aanroepen en de meeste solana-syscalls de tijdsfunctie omhult de solana-klok en het programma retourneert de laatste niet-evalueerde verklaring als return_data, zodat andere programma's het python-programma kunnen aanroepen en het resultaat kunnen gebruiken
het pythonprogramma ondersteunt het parseren, compileren en uitvoeren van pythoncode echter is het parseren op-chain erg duur. ingewikkelde recursieve python-scripts stuiten snel op de limiet van 1,4 miljoen rekeneenheden voor meer gecompliceerde pythonprogramma's kunnen gebruikers het script compileren naar python-bytecode off-chain. dit resulteert in ~10-100x gasbesparing en stelt veel complexere pythonprogramma's in staat om on-chain uitgevoerd te worden een eenvoudig recursief script zoals print(1+2+3) verbruikt 1.328.442/1.399.700 rekeneenheden gecompileerd naar bytecode verbruikt het 13.579/1.339.700 rekeneenheden (100x goedkoper) de frontend bevat een wasm python-compiler zodat gebruikers eenvoudig naar bytecode kunnen compileren en het programma on-chain kunnen uitvoeren
Ik ben begonnen met het coderen van dit project tijdens Thanksgiving toen ik tijd aan het doden was en stuitte op PikaPython: een C Python-interpreter die draait met slechts 4KB RAM, zonder afhankelijkheden. Toevallig heeft @solana een 4KB stack (RAM), ondersteunt C en heeft niet veel van de standaard C-afhankelijkheden. Het project is voor 99% geport door AI, en slechts losjes getest door mij, dus gebruik dit alsjeblieft niet voor kritieke operaties of met waardevolle wallets. Het is echter een leuk speelveld om Solana te verkennen en te leren hoe Solana werkt. Uiteindelijk, met meer pakketten en pakketondersteuning voor DeFi-apps, zou dit een nuttig hulpmiddel kunnen worden voor data-analyse en prototyping op Solana.
ik moest verschillende aanpassingen maken om het project naar de Solana BPF te porten - BPF ondersteunt geen globale schrijfbare status, dus moest ik alle globale variabelen naar de heap verplaatsen - BPF ondersteunt geen >5 functieargumenten (op de C-toolchain), dus moest ik functies met 5+ argumenten doorgeven als pointers naar structs - functie-pointers die buiten het tekstsegment wijzen zijn niet toegestaan, dus moesten arrays van pointers en andere "onveilige" aanroepdoelen worden herzien - standaard libc-functies zoals printf moesten opnieuw worden geïmplementeerd - geoptimaliseerd stackgebruik en grote structs naar de heap verplaatst - een aangepaste allocator geïmplementeerd die verschillende grote buffers vooraf toewijst - sysout geïmplementeerd als sol_log en de laatste niet-evaluated statement als return_data teruggeven github-link hieronder. voel je vrij om bij te dragen:
op dit moment is de VM beperkt tot 1,4M rekenunits in de toekomst zou de python-interpreter bundels kunnen gebruiken om de CU-limiet uit te breiden naar de 12M accountlimiet of daarboven dit zou vereisen: - controleren van het CU-gebruik binnen de interpreter - de parser en VM-eenheid opschorten wanneer deze de 1,4M CU-limiet begint te benaderen - de parser/VM-status die in de heap is opgeslagen naar een account persistent maken - de heap laden wanneer de interpreter hervat andere toekomstige uitbreidingen zouden het implementeren van pakketten voor populaire DeFi-apps zijn, zodat gebruikers gemakkelijker kunnen interageren met on-chain programma's in python ondersteuning voor Pyo3 of Cython zou gebruikers in staat stellen om eenvoudig efficiënte python-pakketten te schrijven die bestaande solana rustbibliotheken uitbreiden ten slotte zou het porteren van numpy, dat wordt ondersteund door PikaPython, een leuk project zijn
project is gratis en open-source - er is geen token dit gedaan uit liefde voor het spel geniet - moonshiesty
130