Rubriques tendance
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
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
Meilleurs
Classement
Favoris
