J'ai déployé un environnement Python entièrement sur chaîne sur Solana Maintenant, vous pouvez exécuter des scripts Python natifs et du bytecode sur Solana Adresse du programme : pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Frontend ici : Quelques exemples : print("Hello Solana!") >>> "Hello Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Jeu 18 Déc 19:26:15 2025"
Les comptes Solana sont traités comme des fichiers ce qui signifie que vous pouvez lire/écrire dans les comptes Solana et déployer des packages Python sur les comptes Solana ce qui permet d'utiliser du code Python tel que : 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"
la plupart des builtins, base58/64, struct, json, time et un package mathématique sont inclus il y a un package solana avec support pour les PDA, l'invocation inter-chaînes et la plupart des syscalls solana le package time enveloppe l'horloge solana et le programme renvoie la dernière instruction non évaluée comme return_data afin que d'autres programmes puissent invoquer le programme python et utiliser le résultat
le programme python prend en charge l'analyse, la compilation et l'exécution de code python cependant, l'analyse sur la chaîne est très coûteuse. tout script python récursif compliqué rencontre rapidement la limite de 1,4 M d'unités de calcul pour des programmes python plus compliqués, les utilisateurs peuvent compiler le script en bytecode python hors chaîne. cela permet d'économiser environ 10 à 100 fois en gaz et permet d'exécuter des programmes python beaucoup plus compliqués sur la chaîne un simple script récursif comme print(1+2+3) consomme 1 328 442/1 399 700 unités de calcul compilé en bytecode, il consomme 13 579/1 339 700 unités de calcul (100 fois moins cher) le frontend contient un compilateur python wasm afin que les utilisateurs puissent facilement compiler en bytecode et exécuter le programme sur la chaîne
J'ai commencé à coder ce projet pendant Thanksgiving quand je m'ennuyais et que je suis tombé sur PikaPython : un interpréteur C Python qui fonctionne avec seulement 4 Ko de RAM, sans dépendances. Par coïncidence, @solana a une pile de 4 Ko (RAM), prend en charge C et n'a pas beaucoup des dépendances C standard. Le projet est à 99 % porté par l'IA, et seulement testé de manière lâche par moi, donc s'il vous plaît, ne l'utilisez pas pour des opérations critiques ou avec des portefeuilles de valeur. Cependant, c'est un terrain de jeu amusant pour explorer Solana et apprendre comment Solana fonctionne. Finalement, avec plus de paquets et de support de paquets pour les applications DeFi, cela pourrait devenir un outil utile pour l'analyse de données et le prototypage sur Solana.
j'ai dû apporter plusieurs modifications pour porter le projet sur le BPF de Solana - Le BPF ne prend pas en charge l'état global modifiable, donc j'ai dû déplacer tous les globaux dans le tas - Le BPF ne prend pas en charge >5 arguments de fonction (sur la chaîne d'outils C), donc j'ai dû passer des fonctions avec 5+ arguments comme des pointeurs vers des structures - Les pointeurs de fonction qui pointent en dehors du segment de texte sont interdits, donc des tableaux de pointeurs et d'autres cibles d'appel "non sécurisées" ont dû être refactorisés - Les fonctions standard de la libc comme printf ont dû être réimplémentées - J'ai optimisé l'utilisation de la pile et déplacé de grandes structures dans le tas - J'ai implémenté un allocateur personnalisé qui préalloue plusieurs grands tampons - J'ai implémenté sysout comme sol_log et renvoyé la dernière instruction non évaluée comme return_data lien github ci-dessous. n'hésitez pas à contribuer :
en ce moment, la VM est limitée à 1,4M d'unités de calcul à l'avenir, l'interpréteur Python pourrait utiliser des bundles pour étendre la limite d'UC au plafond de 12M du compte ou au-delà cela nécessiterait : - vérifier l'utilisation des UC à l'intérieur de l'interpréteur - suspendre le parseur et l'unité VM lorsqu'ils commencent à approcher la limite de 1,4M d'UC - persister l'état du parseur/VM stocké dans le tas vers un compte - charger le tas lorsque l'interpréteur reprend d'autres extensions futures consisteraient à mettre en œuvre des packages pour des applications DeFi populaires afin que les utilisateurs puissent interagir plus facilement avec des programmes on-chain en Python le support de Pyo3 ou Cython permettrait aux utilisateurs d'écrire facilement des packages Python efficaces qui étendent les bibliothèques Rust existantes de Solana enfin, porter numpy, qui est supporté par PikaPython, serait un projet intéressant
le projet est gratuit et open-source - il n'y a pas de token fait par amour du jeu profitez-en - moonshiesty
133