Nasadil jsem plně on-chain python prostředí na Solaně Teď spouštíš nativní python skripty a bytecode na Solaně adresa programu: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Frontend zde: Několik příkladů: tisk ("Ahoj Solano!") >>> "Ahoj Solano!" Print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Čt 18. prosince 19:26:15 2025"
Solana účty jsou považovány za soubory To znamená, že můžete číst/zapisovat na Solana účty a nasazovat python balíčky na Solana účty který umožňuje python kód jako: f = otevřené ("/sol/1", "w") f.write("def greet(name):\n return 'Hello ' + name") importovat sol_1 jako my_package print(my_package.greet("Solana")) >> "Ahoj Solano"
Většina integrovaných balíčků, base58/64, struct, json, time a math je zahrnuta Existuje balíček Solana s podporou PDA, cross-chain-invocation a většiny systémových hovorů Solany Časový balíček obaluje Solana hodiny a program vrací poslední nevyhodnocený příkaz jako return_data aby ostatní programy mohly spustit python program a použít výsledek
Program Python podporuje parsování, kompilaci a spouštění python kódu Nicméně on-chain parsování je velmi drahé. Jakékoli složité rekurzivní python skripty rychle narazí na limit 1,4 M výpočetních jednotek U složitějších python programů mohou uživatelé skript zkompilovat do python bytecode mimo řetězec. To vede k ~10-100násobné úsporě plynu a umožňuje mnohem složitějším python programům spouštět on-chain Jednoduchý rekurzivní skript jako Print(1+2+3) spotřebuje 1 328 442/1 399 700 výpočetních jednotek Zkompilovaný do bajtkódu spotřebuje 13 579/1 339 700 výpočetních jednotek (100x levnější) Frontend obsahuje WASM python kompatibilnost, takže uživatelé mohou snadno kompilovat do bytecode a spouštět program on-chain
Začal jsem programovat tento projekt na Den díkůvzdání, když jsem zabíjel čas a narazil jsem na PikaPython: C python interpreter, který běží jen s 4KB RAM, bez jakýchkoli závislostí náhodou @solana má 4kb stack (RAM), podporuje C a nemá mnoho standardních C závislostí Projekt je z 99 % portován AI a jen volně testovaný mnou, takže prosím nepoužívejte tento projekt pro žádné kritické operace nebo s cennými peněženkami Nicméně je to zábavné hřiště pro objevování Solany a poznávání jejích funkcí S více balíčky a podporou DeFi aplikací by se to nakonec mohlo stát užitečným nástrojem pro analýzu dat a prototypování na Solaně
Musel jsem udělat několik úprav, abych projekt portoval na Solana BPF - BPF nepodporuje globální zápisný stav, takže jsem musel přesunout všechny globaly do haldy - BPF nepodporuje >5 funkčních argumentů (v nástrojovém řetězci C), takže musel předávat funkce s 5+ argumenty jako ukazatele na struktury - ukazatele funkcí, které vedou mimo textový segment, jsou zakázány, takže pole ukazatelů a další "nebezpečné" cíle volání musela být refaktorována - standardní funkce libc jako printf musely být znovu implementovány - optimalizované využití zásobníku a přesun velkých struktur do haldy - implementoval vlastní alokátor, který předalokuje několik velkých bufferů - implementovat sysout jako sol_log a vracet poslední nevyhodnocené příkazy jako return_data Odkaz na GitHub níže. Neváhejte přispět:
V tuto chvíli je VM omezen na 1,4 M výpočetních jednotek v budoucnu by interpreter Pythonu mohl použít balíčky k rozšíření limitu CU na limit účtu 12M nebo i nad něj To by vyžadovalo: - kontrola využití CU uvnitř interpretu - pozastavení parseru a VM jednotky, když se začne blížit k limitu 1,4M CU - zachování stavu parseru/VM uloženého v haldě na účet - načtení haldy při obnovení interpretu další budoucí rozšíření budou implementovat balíčky pro populární DeFi aplikace, aby uživatelé mohli snáze komunikovat s on-chain programy v Pythonu podpora pro Pyo3 nebo Cython by uživatelům umožnila snadno psát efektivní python balíčky, které rozšiřují stávající knihovny Solana Rust Nakonec by portování numpy, který podporuje PikaPython, byl skvělý projekt
Projekt je zdarma a open-source – neexistuje žádný token Dělal jsem to z lásky ke hře Užijte si to - Moonshiesty
129