he desplegado un entorno de Python completamente en cadena en Solana ahora puedes ejecutar scripts de Python nativos y bytecode en Solana dirección del programa: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE frontend aquí: pocos ejemplos: print("¡Hola Solana!") >>> "¡Hola Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Jue Dic 18 19:26:15 2025"
las cuentas de solana se tratan como archivos lo que significa que puedes leer/escribir en cuentas de solana y desplegar paquetes de python en cuentas de solana lo que permite código de python como: 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 mayoría de los builtins, base58/64, struct, json, time y un paquete matemático están incluidos hay un paquete de solana con soporte para PDAs, invocación entre cadenas y la mayoría de las syscalls de solana el paquete de tiempo envuelve el reloj de solana y el programa devuelve la última declaración no evaluada como return_data para que otros programas puedan invocar el programa de python y usar el resultado
el programa de python admite el análisis, la compilación y la ejecución de código python sin embargo, el análisis en la cadena es muy costoso. cualquier script de python recursivo complicado rápidamente se encuentra con el límite de 1.4M de unidades de cómputo para programas de python más complicados, los usuarios pueden compilar el script en bytecode de python fuera de la cadena. esto resulta en un ahorro de gas de ~10-100x y permite que programas de python mucho más complicados se ejecuten en la cadena un script recursivo simple como print(1+2+3) consume 1,328,442/1,399,700 unidades de cómputo compilado en bytecode consume 13,579/1,339,700 unidades de cómputo (100x más barato) el frontend contiene un compilador de python wasm para que los usuarios puedan compilar fácilmente a bytecode y ejecutar el programa en la cadena
Comencé a codificar este proyecto durante el Día de Acción de Gracias cuando estaba matando el tiempo y me encontré con PikaPython: un intérprete de C para Python que funciona con solo 4KB de RAM, sin dependencias. Coincidentemente, @solana tiene una pila de 4KB (RAM), soporta C y no tiene muchas de las dependencias estándar de C. El proyecto está 99% portado por AI, y solo ha sido probado de manera laxa por mí, así que por favor no lo uses para operaciones críticas o con billeteras valiosas. Sin embargo, es un divertido campo de juego para explorar Solana y aprender sobre cómo funciona Solana. Eventualmente, con más paquetes y soporte de paquetes para aplicaciones DeFi, esto podría convertirse en una herramienta útil para el análisis de datos y la creación de prototipos en Solana.
tuve que hacer varias modificaciones para portar el proyecto al BPF de Solana - BPF no soporta estado global escribible, así que tuve que mover todas las variables globales al heap - BPF no soporta más de 5 argumentos de función (en la cadena de herramientas C), así que tuve que pasar funciones con más de 5 argumentos como punteros a estructuras - los punteros a funciones que apuntan fuera del segmento de texto no están permitidos, así que se tuvieron que refactorizar los arreglos de punteros y otros objetivos de llamada "inseguros" - funciones estándar de libc como printf tuvieron que ser reimplementadas - optimicé el uso de la pila y moví estructuras grandes al heap - implementé un asignador personalizado que preasigna varios buffers grandes - implementé sysout como sol_log y devolví la última declaración no evaluada como return_data enlace de github a continuación. no dudes en contribuir:
en este momento, la VM está restringida a 1.4M de unidades de computación en el futuro, el intérprete de python podría usar paquetes para extender el límite de CU al límite de cuenta de 12M o más allá esto requeriría: - verificar el uso de CU dentro del intérprete - suspender el analizador y la unidad de VM cuando comience a acercarse al límite de 1.4M de CU - persistir el estado del analizador/VM almacenado en el heap a una cuenta - cargar el heap cuando el intérprete se reanude otras extensiones futuras serían implementar paquetes para aplicaciones DeFi populares para que los usuarios puedan interactuar más fácilmente con programas en cadena en python el soporte para Pyo3 o Cython permitiría a los usuarios escribir fácilmente paquetes de python eficientes que extiendan las bibliotecas rust de solana existentes en última instancia, portar numpy, que es compatible con PikaPython, sería un proyecto interesante
el proyecto es gratuito y de código abierto - no hay token lo hice por amor al juego disfruta - moonshiesty
142