Jag installerade en helt on-chain Python-miljö på Solana Nu kör du native Python-skript och bytekod på Solana programadress: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Frontend här: Några exempel: tryck" ("Hej Solana!") >>> "Hej Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Tor 18 dec 19:26:15 2025"
Solana-konton behandlas som filer Det betyder att du kan läsa/skriva till Solana-konton och distribuera Python-paket till Solana-konton vilket möjliggör pythonkod såsom: f = open("/sol/1", "w") f.write("def greet(name):\n returnera 'Hello ' + name") importera sol_1 som my_package print(my_package.greet("Solana")) >> "Hej Solana"
De flesta inbyggda funktioner, base58/64, struct, json, time och ett matematikpaket ingår det finns ett solana-paket med stöd för PDA:er, cross-chain-anrop och de flesta solana-syscall Tidspaketet slår in Solana-klockan och programmet returnerar det senaste outvärderade satsen som return_data så att andra program kan anropa pythonprogrammet och använda resultatet
Python-programmet stödjer parsing, kompilering och exekvering av Python-kod Men att parsa on-chain är väldigt dyrt. alla komplicerade rekursiva pythonskript stöter snabbt på 1,4 miljoner beräkningsenhetsgränsen För mer komplicerade Python-program kan användare kompilera skriptet till Python bytecode off-chain. Detta resulterar i ~10–100x gasbesparing och gör det möjligt för mycket mer komplicerade Python-program att köras on-chain Ett enkelt rekursivt skript som print(1+2+3) förbrukar 1 328 442/1 399 700 beräkningsenheter kompilerad till bytekod förbrukar den 13 579/1 339 700 beräkningsenheter (100 gånger billigare) Frontend innehåller en WASM Python-kompatibel så att användare enkelt kan kompilera till bytekod och köra programmet on-chain
Jag började vibe-koda det här projektet under Thanksgiving när jag fördrev tiden och stötte på PikaPython: en C python-tolk som körs med bara 4 KB RAM, noll beroenden Av en slump har @solana en 4 KB-stack (RAM), stöder C och har inte många av de vanliga C-beroendena projektet är 99 % portat av AI och endast löst testat av mig, så använd detta inte för några missionkritiska operationer eller värdefulla plånböcker Men det är en rolig lekplats för att utforska Solana och lära sig om hur Solana fungerar så småningom, med fler paket och paketstöd för DeFi-appar, kan detta bli ett användbart verktyg för dataanalys och prototypframställning på Solana
Jag var tvungen att göra flera modifieringar för att porta projektet till Solana BPF - BPF stöder inte globalt skrivbart tillstånd så jag var tvungen att flytta alla globala till heapen - BPF stöder inte >5-funktionsargument (på C-verktygskedjan) så man var tvungen att skicka funktioner med 5+ argument som pekare till strukturer - funktionspekare som pekar utanför textsegmentet är förbjudna så arrayer av pekare och andra "osäkra" anropsmål måste refaktoreras - Standardfunktioner som Printf behövde implementeras om - optimera stackanvändning och flytta stora strukturer in i heapen - implementerat en anpassad allokator som förallokerar flera stora buffertar - implementera sysout som sol_log och returnera sista outvärderade satsen som return_data GitHub-länk nedan. Känn dig fri att bidra:
just nu är VM:n begränsad till 1,4 miljoner beräkningsenheter i framtiden skulle pythontolken kunna använda paket för att utöka CU-gränsen till 12M-kontogränsen eller längre Detta skulle kräva: - kontrollera CU-användning inuti tolken - att pausa parsern och VM-enheten när den börjar närma sig 1,4 M CU-gränsen - behålla parser/VM-tillståndet som lagras i heapen till ett konto - ladda heapen när tolken återupptas andra framtida tillägg skulle implementera paket för populära DeFi-appar så att användare enklare kan interagera med on-chain-program i Python stöd för Pyo3 eller Cython skulle göra det enkelt för användare att skriva effektiva pythonpaket som utökar befintliga solana rust-bibliotek slutligen skulle det vara ett häftigt projekt att porta Numpy, som stöds av PikaPython,
Projektet är gratis och öppen källkod – det finns ingen token Gjorde det för kärleken till spelet Njut - Moonshiesty
144