Tópicos populares
#
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.
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
Top
Classificação
Favoritos
