トレンドトピック
#
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.
私はSolana上で完全にオンチェーンのPython環境を展開しました
今はSolana上でネイティブのPythonスクリプトとバイトコードを実行します
program address: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE
フロントエンドはこちら:
いくつかの例を挙げます:
印刷(「こんにちはソラナ!」)
>>>「こんにちは、ソラナ!」
Print(Math.sqrt(2.0))
>>> 1.414213
print(time.asctime())
「2025年12月18日(木)19:26:15」

Solanaのアカウントはファイルとして扱われます
つまり、Solanaアカウントに読み書きしたり、PythonパッケージをSolanaアカウントにデプロイしたりできるということです
これにより、以下のようなPythonコードが可能になります。
f = 開いています(「/sol/1」、「w」)
f.write("def greet(name):\n 'Hello '+ name"を返してください
sol_1をmy_packageとしてインポートしてください
print(my_package.greet("Solana"))
>> 「こんにちは、ソラナ」

ほとんどの組み込み文、base58/64、struct、json、time、そして数学パッケージが含まれています
PDA、クロスチェーン呼び出し、ほとんどのSolanaシステムコールをサポートするSolanaパッケージがあります
タイムパッケージがソラナ時計を包む
そしてプログラムは最後の未評価文をreturn_dataとして返すため、他のプログラムがPythonプログラムを呼び出して結果を利用できます

PythonプログラムはPythonコードの解析、コンパイル、実行をサポートしています
しかし、オンチェーン解析は非常にコストがかかります。複雑な再帰的Pythonスクリプトはすぐに140万計算単位の制限に到達します
より複雑なPythonプログラムの場合は、ユーザーがオフチェーンでスクリプトをPythonバイトコードにコンパイルできます。これにより、約10〜100倍のガス節約が可能となり、より複雑なPythonプログラムもオンチェーンで実行可能になりました
print(1+2+3)のような単純な再帰スクリプトは、1,328,442/1,399,700計算単位を消費します
バイトコードにコンパイルすると、13,579/1,339,700計算単位を消費します(100倍安価)
フロントエンドにはWASM Pythonコンプリャが搭載されており、ユーザーは簡単にバイトコードにコンパイルしてオンチェーンでプログラムを実行できます


感謝祭の頃、暇つぶしにこのプロジェクトをVibeでコーディングし始めたところ、PikaPythonというCのPythonインタプリタに出会いました。これはわずか4KBのRAMで動作し、依存関係ゼロの環境です
偶然にも、@solanaは4KBのRAMスタックを持ち、C言語をサポートし、標準的なC依存関係を多く持っていません
このプロジェクトは99%AIによって移植されており、私自身も緩やかにテストしているだけなので、ミッションクリティカルな運用や貴重な財布に使わないでください
しかし、ソラナを探索し、ソラナの仕組みを学ぶのに楽しい遊び場です
最終的には、DeFiアプリ向けのパッケージやサポートが増えれば、これはSolanaでのデータ分析やプロトタイピングに役立つツールになるかもしれません
プロジェクトをSolana BPFに移植するためにいくつかの修正を加えなければなりませんでした
- BPFはグローバル書き込み可能な状態をサポートしていないため、すべてのグローバルファイルをヒープに移さなければなりませんでした
- BPFはCツールチェーン上で>5個の関数引数をサポートしていないため、5+引数の関数を構造体へのポインタとして渡す必要がありました
- テキストセグメントの外を指す関数ポインタは禁止されるため、ポインタの配列やその他の「安全でない」呼び出しターゲットのリファクタリングが必要でした
- PrintFのような標準的なLIBC関数の再実装が必要でした
- スタック利用の最適化と大きな構造体をヒープに移動させること
- 複数の大きなバッファを事前割り当てするカスタムアロケータを実装しました
- sysoutをsol_logとして実装し、最後に未評価の文をreturn_dataとして返します
下記にGitHubリンクがあります。ぜひご意見をお寄せください:

現在、VMは140万個のコンピュートユニットに制限されています
将来的には、Pythonインタプリタがバンドルを使って12Mアカウントの上限以上まで拡張する可能性もあります
これには以下が必要です:
- インタプリタ内でのCU使用状況のチェック
- パーサとVMユニットが1.4M CUの上限に近づき始めた時点で一時停止
- ヒープに保存されたパーサー/VMの状態をアカウントに永続化する
- インタプリタが再開した際のヒープの読み込み
今後の拡張としては、人気のDeFiアプリのパッケージを実装し、ユーザーがPythonのオンチェーンプログラムとより簡単にやり取りできるようになる予定です
Pyo3やCythonのサポートにより、既存のSolana Rustライブラリを拡張する効率的なPythonパッケージを簡単に作成できるようになります
最後に、PikaPythonがサポートしているnumpyの移植も面白いプロジェクトになるでしょう
プロジェクトは無料でオープンソースで、トークンはありません
ゲームへの愛情のためにやったのです
楽しんでください - moonshiesty
123
トップ
ランキング
お気に入り
