Chủ đề thịnh hành
#
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.
Tôi đã triển khai một môi trường python hoàn toàn trên chuỗi trên Solana
Bây giờ bạn có thể chạy các script python và bytecode gốc trên Solana
Địa chỉ chương trình: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE
Giao diện người dùng ở đây:
Một vài ví dụ:
print("Hello Solana!")
>>> "Hello Solana!"
print(math.sqrt(2.0))
>>> 1.414213
print(time.asctime())
"Thu Dec 18 19:26:15 2025"

Các tài khoản Solana được coi như các tệp
điều này có nghĩa là bạn có thể đọc/ghi vào các tài khoản Solana và triển khai các gói Python vào các tài khoản Solana
điều này cho phép mã Python như sau:
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"

hầu hết các builtins, base58/64, struct, json, time và một gói toán học đều được bao gồm
có một gói solana với hỗ trợ cho PDAs, gọi chéo chuỗi và hầu hết các syscalls của solana
gói time bọc đồng hồ solana
và chương trình trả về câu lệnh chưa được đánh giá cuối cùng dưới dạng return_data để các chương trình khác có thể gọi chương trình python và sử dụng kết quả

chương trình python hỗ trợ phân tích, biên dịch và thực thi mã python
tuy nhiên, việc phân tích trên chuỗi rất tốn kém. bất kỳ kịch bản python đệ quy phức tạp nào cũng nhanh chóng gặp phải giới hạn 1,4 triệu đơn vị tính toán
đối với các chương trình python phức tạp hơn, người dùng có thể biên dịch kịch bản thành bytecode python ngoài chuỗi. điều này dẫn đến việc tiết kiệm gas khoảng ~10-100 lần và cho phép các chương trình python phức tạp hơn thực thi trên chuỗi
một kịch bản đệ quy đơn giản như print(1+2+3) tiêu tốn 1,328,442/1,399,700 đơn vị tính toán
khi được biên dịch thành bytecode, nó tiêu tốn 13,579/1,339,700 đơn vị tính toán (rẻ hơn 100 lần)
giao diện người dùng chứa một trình biên dịch python wasm để người dùng có thể dễ dàng biên dịch thành bytecode và thực thi chương trình trên chuỗi


Tôi đã bắt đầu lập trình dự án này trong kỳ nghỉ lễ Tạ ơn khi tôi đang giết thời gian và tình cờ phát hiện ra PikaPython: một trình thông dịch C python chỉ chạy với 4KB RAM, không có phụ thuộc nào.
Trùng hợp là @solana có một ngăn xếp 4KB (RAM), hỗ trợ C và không có nhiều phụ thuộc tiêu chuẩn của C.
Dự án này đã được 99% chuyển đổi bởi AI, và chỉ được tôi kiểm tra một cách lỏng lẻo, vì vậy xin đừng sử dụng nó cho bất kỳ hoạt động quan trọng nào hoặc với các ví có giá trị.
Tuy nhiên, đây là một sân chơi thú vị để khám phá solana và tìm hiểu về cách solana hoạt động.
Cuối cùng, với nhiều gói và hỗ trợ gói cho các ứng dụng DeFi, điều này có thể trở thành một công cụ hữu ích cho phân tích dữ liệu và tạo mẫu trên solana.
Tôi đã phải thực hiện một số sửa đổi để chuyển dự án sang BPF của Solana
- BPF không hỗ trợ trạng thái có thể ghi toàn cục nên tôi đã phải di chuyển tất cả các biến toàn cục vào heap
- BPF không hỗ trợ >5 tham số hàm (trên công cụ C) nên tôi đã phải truyền các hàm có 5+ tham số dưới dạng con trỏ đến các struct
- Các con trỏ hàm trỏ ra ngoài đoạn văn bản bị cấm nên các mảng con trỏ và các mục gọi "không an toàn" khác đã phải được tái cấu trúc
- Các hàm libc tiêu chuẩn như printf đã phải được triển khai lại
- Tối ưu hóa việc sử dụng stack và di chuyển các struct lớn vào heap
- Triển khai một bộ cấp phát tùy chỉnh mà tiền cấp phát một số bộ đệm lớn
- Triển khai sysout như sol_log và trả về câu lệnh chưa được đánh giá cuối cùng như return_data
Liên kết github bên dưới. Hãy thoải mái đóng góp:

hiện tại VM bị giới hạn ở 1,4 triệu đơn vị tính toán
trong tương lai, trình thông dịch python có thể sử dụng các gói để mở rộng giới hạn CU lên đến giới hạn tài khoản 12 triệu hoặc hơn
điều này sẽ yêu cầu:
- kiểm tra việc sử dụng CU bên trong trình thông dịch
- tạm dừng phân tích cú pháp và đơn vị VM khi nó bắt đầu tiếp cận giới hạn 1,4 triệu CU
- lưu trạng thái phân tích cú pháp/VM được lưu trữ trong heap vào một tài khoản
- tải lại heap khi trình thông dịch tiếp tục
các mở rộng trong tương lai khác sẽ là triển khai các gói cho các ứng dụng DeFi phổ biến để người dùng có thể dễ dàng tương tác với các chương trình trên chuỗi bằng python
hỗ trợ cho Pyo3 hoặc Cython sẽ cho phép người dùng dễ dàng viết các gói python hiệu quả mở rộng các thư viện rust solana hiện có
cuối cùng, việc chuyển numpy được hỗ trợ bởi PikaPython sẽ là một dự án thú vị
dự án là miễn phí và mã nguồn mở - không có token
làm điều này vì tình yêu với trò chơi
thưởng thức - moonshiesty
131
Hàng đầu
Thứ hạng
Yêu thích
