Ich habe eine vollständig on-chain Python-Umgebung auf Solana bereitgestellt Jetzt kannst du native Python-Skripte und Bytecode auf Solana ausführen Programmadresse: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Frontend hier: Einige Beispiele: print("Hello Solana!") >>> "Hello Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Thu Dec 18 19:26:15 2025"
Solana-Konten werden wie Dateien behandelt was bedeutet, dass Sie auf Solana-Konten lesen/schreiben und Python-Pakete auf Solana-Konten bereitstellen können was Python-Code wie folgt ermöglicht: 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"
Die meisten Built-ins, base58/64, struct, json, time und ein Mathematikpaket sind enthalten. Es gibt ein Solana-Paket mit Unterstützung für PDAs, Cross-Chain-Invocation und die meisten Solana-Syscalls. Das Zeitpaket umschließt die Solana-Uhr. Und das Programm gibt die letzte nicht ausgewertete Anweisung als return_data zurück, sodass andere Programme das Python-Programm aufrufen und das Ergebnis verwenden können.
Das Python-Programm unterstützt das Parsen, Kompilieren und Ausführen von Python-Code. Das Parsen on-chain ist jedoch sehr teuer. Komplizierte rekursive Python-Skripte stoßen schnell an die Grenze von 1,4 Millionen Recheneinheiten. Für kompliziertere Python-Programme können Benutzer das Skript außerhalb der Kette in Python-Bytecode kompilieren. Dies führt zu ~10-100x Gasersparnis und ermöglicht es, viel kompliziertere Python-Programme on-chain auszuführen. Ein einfaches rekursives Skript wie print(1+2+3) verbraucht 1.328.442/1.399.700 Recheneinheiten. In Bytecode kompiliert verbraucht es 13.579/1.339.700 Recheneinheiten (100x günstiger). Das Frontend enthält einen WASM-Python-Compiler, sodass Benutzer einfach in Bytecode kompilieren und das Programm on-chain ausführen können.
Ich habe an diesem Projekt über Thanksgiving mit dem Vibe-Coding begonnen, als ich Zeit totschlug und auf PikaPython stieß: einem C-Python-Interpreter, der mit nur 4 KB RAM und null Abhängigkeiten läuft. Zufälligerweise hat @solana einen 4 KB Stack (RAM), unterstützt C und hat nicht viele der Standard-C-Abhängigkeiten. Das Projekt ist zu 99 % von AI portiert und nur grob von mir getestet, also bitte verwendet das nicht für mission-critical Operationen oder mit wertvollen Wallets. Es ist jedoch ein lustiger Spielplatz, um Solana zu erkunden und zu lernen, wie Solana funktioniert. Schließlich könnte dies mit mehr Paketen und Unterstützung für DeFi-Apps ein nützliches Werkzeug für Datenanalysen und Prototyping auf Solana werden.
Ich musste mehrere Änderungen vornehmen, um das Projekt auf das Solana BPF zu portieren - BPF unterstützt keinen globalen beschreibbaren Zustand, also musste ich alle Globals in den Heap verschieben - BPF unterstützt >5 Funktionsargumente (auf der C-Toolchain), also musste ich Funktionen mit 5+ Argumenten als Zeiger auf Strukturen übergeben - Funktionszeiger, die auf außerhalb des Textsegments zeigen, sind nicht erlaubt, also mussten Arrays von Zeigern und andere "unsichere" Zielaufrufe umgestaltet werden - Standard-libc-Funktionen wie printf mussten neu implementiert werden - Optimierte Stapelnutzung und verschob große Strukturen in den Heap - Implementierte einen benutzerdefinierten Allokator, der mehrere große Puffer vorab allokiert - Implementiere sysout als sol_log und gebe die letzte nicht ausgewertete Anweisung als return_data zurück github-Link unten. Fühlen Sie sich frei, beizutragen:
Derzeit ist die VM auf 1,4 Millionen Recheneinheiten beschränkt. In Zukunft könnte der Python-Interpreter Bundles verwenden, um das CU-Limit auf das Kontolimit von 12 Millionen oder mehr zu erweitern. Dies würde Folgendes erfordern: - Überprüfung der CU-Nutzung innerhalb des Interpreters - Aussetzen des Parsers und der VM-Einheit, wenn das 1,4 Millionen CU-Limit erreicht wird - Persistieren des Parser-/VM-Zustands, der im Heap gespeichert ist, in einem Konto - Laden des Heaps, wenn der Interpreter fortgesetzt wird Weitere zukünftige Erweiterungen wären die Implementierung von Paketen für beliebte DeFi-Apps, damit Benutzer einfacher mit On-Chain-Programmen in Python interagieren können. Die Unterstützung von Pyo3 oder Cython würde es Benutzern ermöglichen, effizient Python-Pakete zu schreiben, die bestehende Solana-Rust-Bibliotheken erweitern. Schließlich wäre das Portieren von NumPy, das von PikaPython unterstützt wird, ein cooles Projekt.
Das Projekt ist kostenlos und Open Source - es gibt kein Token Habe es aus Liebe zum Spiel gemacht Viel Spaß - moonshiesty
138