Otin Solanalla käyttöön täysin ketjussa olevan Python-ympäristön Nyt ajat natiivisti Python-skriptejä ja tavukoodia Solanassa ohjelman osoite: pythonKBk7JcXsbwYzMRy2tL8L9tZqUbgekxRfT1bTE Frontend täällä: Muutama esimerkki: print("Hei Solana!") >>> "Hei Solana!" print(math.sqrt(2.0)) >>> 1.414213 print(time.asctime()) "To 18. joulukuuta 19:26:15 2025"
Solana-tilejä käsitellään kuin tiedostoja Tämä tarkoittaa, että voit lukea/kirjoittaa Solana-tileille ja ottaa Python-paketteja käyttöön joka sallii python-koodin, kuten: f = avoin ("/sol/1", "w") f.write("def greet(name):\n return 'Hello' + name") Tuo sol_1 muodossa my_package print(my_package.greet("Solana")) >> "Hei Solana"
Suurin osa sisäänrakennetuista laitteista, Base58/64, Struct, JSON, Time ja A Math Package sisältyvät On olemassa Solana-paketti, joka tukee PDA:ita, ristiinketjukutsua ja useimpia Solanan syscalleja Aikapaketti käärii Solanan kellon ja ohjelma palauttaa viimeisen arvioimattoman lauseen muodossa return_data, jotta muut ohjelmat voivat kutsua python-ohjelman ja käyttää tulosta
Python-ohjelma tukee Python-koodin jäsentämistä, kääntämistä ja suorittamista kuitenkin ketjun sisäinen jäsentäminen on hyvin kallista. monimutkaiset rekursiiviset Python-skriptit ajautuvat nopeasti 1,4 miljoonan laskentayksikön rajaan Monimutkaisemmissa Python-ohjelmissa käyttäjät voivat kääntää skriptin Python-tavukoodiksi off-chain. Tämä johtaa ~10–100-kertaiseen polttoainesäästöön ja mahdollistaa paljon monimutkaisempien Python-ohjelmien suorittamisen ketjussa yksinkertainen rekursiivinen skripti, kuten print(1+2+3), kuluttaa 1 328 442/1 399 700 laskentayksikköä Käännettynä tavukoodiin se kuluttaa 13 579/1 339 700 laskentayksikköä (100 kertaa halvempi) Frontendissä on WASM Python -yhteensopivuus, joten käyttäjät voivat helposti kääntää tavukoodiksi ja suorittaa ohjelman ketjussa
Aloitin vibe-koodauksen tämän projektin kiitospäivän aikaan, kun tapoin aikaa ja törmäsin PikaPythoniin: C python -tulkkiin, joka toimii vain 4 KB RAM-muistilla, ilman riippuvuuksia sattumalta @solana:llä on 4kb pino (RAM), se tukee C:tä eikä siinä ole montaa tavallista C-riippuvuutta projekti on 99 % tekoälyn porttaama ja testattu vain löyhästi minun toimestani, joten älä käytä tätä kriittisiin operaatioihin tai arvokkaiden lompakoiden kanssa Kuitenkin se on hauska leikkikenttä tutkia Solanan ja oppia, miten Solana toimii Lopulta, kun DeFi-sovelluksille tulee lisää paketteja ja pakettitukea, tästä voisi tulla hyödyllinen työkalu datan analysointiin ja prototyyppien valmistamiseen Solanalla
Minun piti tehdä useita muutoksia projektin siirtämiseksi Solanan BPF:lle - BPF ei tue globaalia kirjoitettavaa tilaa, joten jouduin siirtämään kaikki globaalit pinoon - BPF ei tue >5-funktioargumentteja (C-työkaluketjussa), joten piti välittää 5+ argumentin funktiot rakenteiden osoitteina - funktioosoittimet, jotka osoittavat tekstisegmentin ulkopuolelle, eivät ole sallittuja, joten osoitintaulukot ja muut "turvattomat" kutsukohteet jouduttiin refaktoroimaan - Tavalliset libc-funktiot, kuten printf, jouduttiin toteuttamaan uudelleen - optimoida pinon käyttöä ja siirtää suuria rakenteita pinoon - toteutti mukautetun allokaattorin, joka ennakkovaraa useita suuria puskureita - toteuttaa sysout sol_log ja palauttaa viimeinen arvioimaton lause return_data GitHub-linkki alla. Voit vapaasti osallistua:
tällä hetkellä virtuaalikone on rajoitettu 1,4 miljoonaan laskentayksikköön tulevaisuudessa python-tulkki voisi käyttää nipupaketteja laajentaakseen CU-rajaa 12 miljoonan tilin rajaan tai sitä pidemmälle Tämä vaatisi: - CU:n käytön tarkistaminen tulkin sisällä - jäsentimen ja VM-yksikön keskeyttäminen, kun se alkaa lähestyä 1,4M CU-rajaa - säilyttää jäsentäjä/virtuaalikoneen tila, joka on tallennettu kekoon tilille - keon lataaminen, kun tulkki jatkaa toimintaansa muita tulevia laajennuksia ovat suosittujen DeFi-sovellusten pakettien toteuttaminen, jotta käyttäjät voivat helpommin olla vuorovaikutuksessa ketjun sisäisten ohjelmien kanssa Pythonissa tuki Pyo3:lle tai Cythonille mahdollistaisi käyttäjille tehokkaiden python-pakettien helpon kirjoittamisen, jotka laajentavat olemassa olevia Solana Rust -kirjastoja lopuksi, Numpyn porttaus, jota PikaPython tukee, olisi siisti projekti
Projekti on ilmainen ja avoimen lähdekoodin – tokenia ei ole Tein sen pelin rakkaudesta Nauti – Moonshiesty
144