Am implementat un mediu Python complet on-chain pe Solana Acum rulezi scripturi native Python și bytecode pe Solana program address: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Partea frontală aici: Câteva exemple: print("Hello Solana!") >>> "Salut, Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Joi 18 Dec 19:26:15 2025"
Conturile Solana sunt tratate ca fișiere Ceea ce înseamnă că poți citi/scrie pe conturi Solana și să implementezi pachete Python pe conturi Solana care permite codul Python precum: f = deschis("/sol/1", "w") f.write("def greet(name):\n return 'Hello' + name") import sol_1 ca my_package print(my_package.greet("Solana")) >> "Hello Solana"
Majoritatea pachetelor încorporate, base58/64, struct, json, time și un pachet de matematică sunt incluse Există un pachet Solana cu suport pentru PDA-uri, invocări cross-chain și majoritatea apelurilor de sistem Solana Pachetul de timp înfășoară ceasul Solana iar programul returnează ultima afirmație neevaluată ca return_data astfel încât alte programe să poată invoca programul Python și să folosească rezultatul
Programul Python suportă analizarea, compilarea și executarea codului Python Totuși, parsarea on-chain este foarte costisitoare. orice scripturi recursive Python complicate ajung rapid la limita de 1,4M unități de calcul Pentru programe Python mai complicate, utilizatorii pot compila scriptul în bytecode Python off-chain. Acest lucru duce la o economisire de gaz de ~10-100x și permite executarea on-chain a programelor Python mult mai complicate Un script recursiv simplu precum print(1+2+3) consumă 1.328.442/1.399.700 unități de calcul Compilat în bytecode, consumă 13.579/1.339.700 de unități de calcul (de 100 de ori mai ieftin) Frontend-ul conține un WASM Python complier, astfel încât utilizatorii să poată compila ușor în bytecode și să execute programul on-chain
Am început să programez acest proiect de Ziua Recunoștinței, când îmi omor timpul și am dat peste PikaPython: un interpret C Python care rulează cu doar 4KB RAM, fără dependențe coincidență, @solana are un stack (RAM) de 4KB, suportă C și nu are multe dintre dependențele standard de C proiectul este portat în proporție de 99% de AI și testat doar vag de mine, așa că vă rog să nu folosiți acest proiect pentru operațiuni critice sau cu portofele valoroase Totuși, este un loc de joacă distractiv pentru a explora Solana și a învăța cum funcționează Solana în cele din urmă, cu mai multe pachete și suport pentru aplicații DeFi, acest lucru ar putea deveni un instrument util pentru analiza datelor și prototipare pe Solana
A trebuit să fac mai multe modificări pentru a porta proiectul pe Solana BPF - BPF nu suportă starea scriibilă globală, așa că a trebuit să mut toate globalele în heap - BPF nu suportă argumente cu >5 funcții (pe lanțul de unelte C), așa că a trebuit să trec funcții cu 5+ argumente ca pointere către structuri - pointerii de funcție care indică în afara segmentului de text sunt interziși, astfel că tablourile de pointeri și alte ținte de apel "nesigure" au trebuit refactorizate - Funcțiile standard libc precum printf au trebuit reimplementate - optimizarea utilizării stack-ului și mutarea struct-urilor mari în heap - implementat un alocător personalizat care prealocă mai multe buffere mari - implementează sysout ca sol_log și returnează ultima instrucțiune neevaluată ca return_data Link GitHub mai jos. Nu ezitați să contribuiți:
în prezent, mașina virtuală este restricționată la 1,4M unități de calcul În viitor, interpretul Python ar putea folosi pachete pentru a extinde limita CU până la limita de cont de 12M sau mai mult Aceasta ar necesita: - verificarea utilizării CU în interiorul interpretului - suspendarea parserului și a unității VM atunci când aceasta începe să se apropie de limita de 1,4M CU - să persiste starea parserului/VM stocată în heap către un cont - încărcarea heap-ului când interpretul reia alte extensii viitoare ar fi implementarea pachetelor pentru aplicații DeFi populare, astfel încât utilizatorii să poată interacționa mai ușor cu programe on-chain în Python suportul pentru Pyo3 sau Cython ar permite utilizatorilor să scrie cu ușurință pachete python eficiente care extind bibliotecile Solana Rust existente În final, portarea numpy, care este suportată de PikaPython, ar fi un proiect interesant
Proiectul este gratuit și open-source - nu există niciun token Am făcut-o din dragoste pentru joc Bucurați-vă - Moonshiesty
150