熱門話題
#
Bonk 生態迷因幣展現強韌勢頭
#
有消息稱 Pump.fun 計劃 40 億估值發幣,引發市場猜測
#
Solana 新代幣發射平臺 Boop.Fun 風頭正勁
我在 Solana 上部署了一個完全的鏈上 Python 環境
現在你可以在 Solana 上運行原生 Python 腳本和字節碼
程序地址:pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE
前端在這裡:
幾個例子:
print("Hello Solana!")
>>> "Hello Solana!"
print(math.sqrt(2.0))
>>> 1.414213
print(time.asctime())
"2025年12月18日 星期四 19:26:15"

Solana 帳戶被視為檔案
這意味著您可以讀取/寫入 Solana 帳戶並將 Python 套件部署到 Solana 帳戶
這允許像這樣的 Python 代碼:
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"

大多數內建函數、base58/64、結構、json、時間和數學套件都已包含
有一個支持PDA、跨鏈調用和大多數solana系統調用的solana套件
時間套件包裝了solana時鐘
程序返回最後未評估的語句作為return_data,以便其他程序可以調用python程序並使用結果

這個 Python 程式支持解析、編譯和執行 Python 代碼
然而,在鏈上解析是非常昂貴的。任何複雜的遞歸 Python 腳本很快就會達到 1.4M 計算單位的限制
對於更複雜的 Python 程式,使用者可以將腳本編譯成鏈下的 Python 字節碼。這樣可以節省約 10-100 倍的燃料費,並允許更複雜的 Python 程式在鏈上執行
像 print(1+2+3) 這樣的簡單遞歸腳本消耗 1,328,442/1,399,700 計算單位
編譯成字節碼後,它消耗 13,579/1,339,700 計算單位(便宜 100 倍)
前端包含一個 wasm Python 編譯器,因此使用者可以輕鬆編譯成字節碼並在鏈上執行程式


我在感恩節時開始為這個項目進行 vibe coding,當時我在打發時間,偶然發現了 PikaPython:一個僅需 4KB RAM 的 C 語言 Python 解釋器,沒有任何依賴。
巧合的是,@solana 擁有 4KB 的堆疊(RAM),支持 C 語言,並且沒有太多標準 C 的依賴。
這個項目有 99% 是由 AI 移植的,只有我進行了粗略測試,所以請不要將其用於任何關鍵任務操作或貴重錢包。
然而,這是一個有趣的遊樂場,可以探索 solana 並了解 solana 的運作方式。
最終,隨著更多的包和 DeFi 應用的包支持,這可能成為一個有用的工具,用於在 solana 上進行數據分析和原型設計。
我必須對專案進行多次修改,以便將其移植到 Solana BPF
- BPF 不支持全局可寫狀態,因此我必須將所有全局變量移到堆中
- BPF 不支持超過 5 個函數參數(在 C 工具鏈上),因此必須將具有 5 個以上參數的函數作為指向結構的指針傳遞
- 指向文本段外部的函數指針是不允許的,因此必須重構指針數組和其他 "不安全" 的調用目標
- 像 printf 這樣的標準 libc 函數必須重新實現
- 優化堆棧使用並將大型結構移到堆中
- 實現了一個自定義分配器,預分配幾個大型緩衝區
- 將 sysout 實現為 sol_log,並將最後一個未評估的語句作為 return_data 返回
下面是 github 連結。隨時歡迎貢獻:

目前虛擬機限制為 1.4M 計算單位
未來 Python 解釋器可以使用捆綁包將 CU 限制擴展到 12M 帳戶限制或更高
這需要:
- 檢查解釋器內的 CU 使用情況
- 當接近 1.4M CU 限制時,暫停解析器和虛擬機單元
- 將存儲在堆中的解析器/虛擬機狀態持久化到帳戶
- 當解釋器恢復時加載堆
其他未來擴展將是為流行的 DeFi 應用實現包,以便用戶可以更輕鬆地在 Python 中與鏈上程序互動
對 Pyo3 或 Cython 的支持將允許用戶輕鬆編寫高效的 Python 包,擴展現有的 Solana Rust 庫
最後,移植由 PikaPython 支持的 numpy 將是一個很酷的項目
這個項目是免費且開源的 - 沒有代幣
是出於對這個遊戲的熱愛而做的
享受吧 - moonshiesty
126
熱門
排行
收藏
