implantei um ambiente python totalmente on-chain na solana agora você executa scripts python nativos e bytecode na solana endereço do programa: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE frontend aqui: alguns exemplos: print("Hello Solana!") >>> "Hello Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "Qui Dez 18 19:26:15 2025"
as contas do solana são tratadas como arquivos o que significa que você pode ler/escrever nas contas do solana e implantar pacotes python nas contas do solana o que permite código 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"
a maioria dos builtins, base58/64, struct, json, time e um pacote matemático estão incluídos existe um pacote solana com suporte para PDAs, invocação entre cadeias e a maioria das syscalls do solana o pacote time envolve o relógio do 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, compilação e execução de código python no entanto, a análise em cadeia é muito cara. quaisquer scripts python recursivos complicados rapidamente atingem o limite de 1,4M de unidades de computação para programas python mais complicados, os usuários podem compilar o script em bytecode python fora da cadeia. isso resulta em uma economia de gás de ~10-100x e permite que programas python muito mais complicados sejam executados em cadeia 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 computação (100x mais barato) a interface contém um compilador python wasm, para que os usuários possam facilmente compilar para bytecode e executar o programa em cadeia
comecei a codificar este projeto durante o Dia de Ação de Graças, quando estava a passar o tempo e encontrei o PikaPython: um interpretador C Python que funciona com apenas 4KB de RAM, sem dependências coincidentemente, a @solana tem uma pilha de 4KB (RAM), suporta C e não tem muitas das dependências padrão do C o projeto está 99% portado por AI, e apenas vagamente testado 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 a solana e aprender sobre como a solana funciona eventualmente, com mais pacotes e suporte a pacotes para aplicativos DeFi, isso pode se tornar uma ferramenta útil para análise de dados e prototipagem na solana
tive que fazer várias modificações para portar o projeto para o Solana BPF - O BPF não suporta estado global gravável, então tive que mover todas as variáveis globais para o heap - O BPF não suporta mais de 5 argumentos de função (na ferramenta C), então tive 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 chamada "inseguros" tiveram que ser refatorados - Funções padrão da libc como printf tiveram que ser reimplementadas - Otimizei o uso da pilha e movi grandes structs para o heap - Implementei um alocador personalizado que pré-aloca vários buffers grandes - Implementei sysout como sol_log e retorno a última instrução não avaliada como return_data link do github abaixo. sinta-se à vontade para contribuir:
neste momento, a VM está restrita a 1.4M de unidades de computação no futuro, o interpretador python poderá usar pacotes para estender o limite de CU para o limite de 12M da conta ou além isso exigiria: - verificar o uso de CU dentro do interpretador - suspender o analisador e a unidade da VM quando começar a se aproximar do limite de 1.4M de CU - persistir o estado do analisador/VM armazenado na heap para uma conta - carregar a heap quando o interpretador retomar outras extensões futuras seriam implementar 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 que os usuários escrevessem facilmente pacotes python eficientes que estendem as bibliotecas rust existentes do solana finalmente, portar numpy, que é suportado pelo PikaPython, seria um projeto interessante
o projeto é gratuito e de código aberto - não há token efiz isso pelo amor ao jogo aprecie - moonshiesty
146