Implantei um ambiente Python totalmente on-chain no Solana Agora você executa scripts nativos em Python e bytecode no Solana program address: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Interface aqui: Alguns exemplos: print ("Olá Solana!") >>> "Olá, Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Qui 18 Dez 19:26:15 2025"
Contas Solana são tratadas como arquivos O que significa que você pode ler/escrever em contas Solana e implantar pacotes Python em contas Solana que permite código em Python como: f = aberto("/sol/1", "w") f.write ("def greet(name):\n return 'Hello' + nome") importação sol_1 como my_package print(my_package.greet("Solana")) >> "Olá Solana"
A maioria dos builtins, base58/64, struct, json, time e um pacote de matemática estão incluídos Existe um pacote Solana com suporte para PDAs, invocação cross-chain e a maioria das chamadas de sistema Solana O pacote do tempo envolve o relógio Solana e o programa retorna a última instrução não avaliada como return_data para que outros programas possam invocar o programa Python e usar o resultado
O programa Python suporta análise sintática, compilação e execução de código Python No entanto, fazer parsing on-chain é muito caro. quaisquer scripts recursivos Python complicados rapidamente atingem o limite de unidades de computação de 1,4M Para programas Python mais complexos, os usuários podem compilar o script em bytecode em Python fora da cadeia. Isso resulta em economia de gases de ~10 a 100 vezes maior e permite que programas em Python muito mais complexos sejam executados on-chain Um script recursivo simples como Print(1+2+3) consome 1.328.442/1.399.700 unidades de computação Compilado em bytecode, consome 13.579/1.339.700 unidades de cálculo (100 vezes mais barato) A interface contém um compatível WASM Python para que os usuários possam facilmente compilar para bytecode e executar o programa on-chain
Comecei a programar esse projeto no Vibe Giving de Graças, quando estava matando o tempo, e encontrei o PikaPython: um interpretador de C Python que roda com apenas 4KB de RAM, zero dependências coincidentemente, @solana tem uma pilha de 4KB (RAM), suporta C e não possui muitas das dependências padrão de C o projeto é 99% portado por IA, e só testado de forma vaga por mim, então, por favor, não use isso para operações críticas ou com carteiras valiosas No entanto, é um playground divertido para explorar Solana e aprender como Solana funciona eventualmente, com mais pacotes e suporte a pacotes para aplicativos DeFi, isso poderia se tornar uma ferramenta útil para análise de dados e prototipagem no Solana
Tive que fazer várias modificações para portar o projeto para o Solana BPF - BPF não suporta estado gravável global, então tive que mover todos os globais para o heap - O BPF não suporta > 5 argumentos de função (na cadeia de ferramentas C), então teve que passar funções com 5+ argumentos como ponteiros para structs - Ponteiros de função que apontam para fora do segmento de texto são proibidos, então arrays de ponteiros e outros alvos de chamadas "inseguros" tiveram que ser refatorados - Funções padrão do libc como o Printf precisavam ser reimplementadas - otimizar o uso da pilha e mover grandes estruturas para o heap - implementou um alocador personalizado que pré-aloca vários buffers grandes - implementar sysout como sol_log e retornar a última instrução não avaliada como return_data Link do github abaixo. Sinta-se à vontade para contribuir:
no momento, a VM está restrita a 1,4M de unidades de computação No futuro, o interpretador Python poderia usar bundles para estender o limite de até o limite de conta de 12M ou além Isso exigiria: - verificação do uso de dentro do interpretador - suspender o parser e a unidade VM quando ela começa a se aproximar do limite de 1,4M - persistir o estado do parser/VM armazenado no heap para uma conta - carregar o heap quando o interpretador retoma outras extensões futuras seriam a implementação de pacotes para aplicativos DeFi populares, para que os usuários possam interagir mais facilmente com programas on-chain em Python o suporte para Pyo3 ou Cython permitiria aos usuários escrever facilmente pacotes Python eficientes que estendem as bibliotecas existentes de Solana Rust Por fim, portar o numpy, que é suportado pelo PikaPython, seria um projeto legal
O projeto é gratuito e de código aberto - não há token Fiz isso por amor ao jogo Aproveite - Moonshiesty
143