Ruka hadi kwenye maudhui makuu
Change page

Lugha za mikataba mahiri

Jambo zuri kuhusu Ethereum ni kwamba mikataba mahiri inaweza kupangwa kwa kutumia lugha ambazo ni rafiki kwa wasanidi programu. Ikiwa una uzoefu na Python au lugha yoyote ya mabano yaliyopinda (opens in a new tab), unaweza kupata lugha yenye sintaksia unayoifahamu.

Lugha mbili zinazotumika sana na kudumishwa ni:

  • Solidity
  • Vyper

Remix IDE hutoa mazingira kamili ya usanidi kwa ajili ya kuunda na kujaribu mikataba katika Solidity na Vyper. Jaribu Remix IDE iliyo kwenye kivinjari (opens in a new tab) ili kuanza kuandika msimbo.

Wasanidi programu wenye uzoefu zaidi wanaweza pia kutaka kutumia Yul, lugha ya kati kwa ajili ya Mashine Pepe ya Ethereum (EVM), au Yul+, kiendelezi cha Yul.

Ikiwa una hamu na ungependa kusaidia kujaribu lugha mpya ambazo bado zinatengenezwa kwa kiasi kikubwa unaweza kufanya majaribio na Fe, lugha inayoibuka ya mikataba mahiri ambayo kwa sasa bado iko katika hatua zake za awali.

Mahitaji ya awali

Ujuzi wa awali wa lugha za programu, hasa JavaScript au Python, unaweza kukusaidia kuelewa tofauti katika lugha za mikataba mahiri. Tunapendekeza pia uelewe mikataba mahiri kama dhana kabla ya kuchimba kwa kina katika ulinganisho wa lugha. Utangulizi wa mikataba mahiri.

Solidity

  • Lugha ya kiwango cha juu, inayolenga vitu (object-oriented) kwa ajili ya kutekeleza mikataba mahiri.
  • Lugha ya mabano yaliyopinda ambayo imeathiriwa sana na C++.
  • Ina aina tuli (statically typed) (aina ya kigezo inajulikana wakati wa kukusanya msimbo).
  • Inasaidia:
    • Urithi (unaweza kupanua mikataba mingine).
    • Maktaba (unaweza kuunda msimbo unaoweza kutumika tena ambao unaweza kuuita kutoka kwa mikataba tofauti – kama vile vitendaji tuli katika darasa tuli katika lugha zingine za programu zinazolenga vitu).
    • Aina changamano zilizofafanuliwa na mtumiaji.

Mfano wa mkataba

Mfano huu unapaswa kukupa wazo la jinsi sintaksia ya mkataba wa Solidity ilivyo. Kwa maelezo ya kina zaidi ya vitendaji na vigezo, tazama nyaraka (opens in a new tab).

Vyper

  • Lugha ya programu inayofanana na Python
  • Uwekaji aina thabiti (Strong typing)
  • Msimbo mdogo na unaoeleweka wa kikusanyaji (compiler)
  • Uzalishaji mzuri wa msimbo wa baiti
  • Kwa makusudi ina vipengele vichache kuliko Solidity kwa lengo la kufanya mikataba kuwa salama zaidi na rahisi kukagua. Vyper haisaidii:
    • Virekebishaji (Modifiers)
    • Urithi (Inheritance)
    • Mkusanyiko wa ndani (Inline assembly)
    • Upakiaji kupita kiasi wa vitendaji (Function overloading)
    • Upakiaji kupita kiasi wa waendeshaji (Operator overloading)
    • Wito wa kujirudia (Recursive calling)
    • Vitanzi vya urefu usio na kikomo (Infinite-length loops)
    • Nambari zisizobadilika za mfumo wa jozi (Binary fixed points)

Kwa maelezo zaidi, soma mantiki ya Vyper (opens in a new tab).

Mfano

Mfano huu unapaswa kukupa wazo la jinsi sintaksia ya mkataba wa Vyper ilivyo. Kwa maelezo ya kina zaidi ya vitendaji na vigezo, tazama nyaraka (opens in a new tab).

Yul na Yul+

Ikiwa wewe ni mgeni kwenye Ethereum na bado hujaandika msimbo wowote kwa kutumia lugha za mikataba mahiri, tunapendekeza uanze na Solidity au Vyper. Angalia tu Yul au Yul+ mara tu unapofahamu mbinu bora za usalama wa mikataba mahiri na maelezo mahususi ya kufanya kazi na EVM.

Yul

  • Lugha ya kati kwa ajili ya Ethereum.
  • Inasaidia EVM na Ewasm (opens in a new tab), WebAssembly yenye ladha ya Ethereum, na imeundwa kuwa kigawanyo cha kawaida kinachoweza kutumika kwa majukwaa yote mawili.
  • Lengo zuri kwa hatua za uboreshaji wa kiwango cha juu ambazo zinaweza kunufaisha majukwaa ya EVM na Ewasm kwa usawa.

Yul+

  • Kiendelezi cha kiwango cha chini, chenye ufanisi mkubwa kwa Yul.
  • Hapo awali kiliundwa kwa ajili ya mkataba wa rollup ya optimistic.
  • Yul+ inaweza kutazamwa kama pendekezo la uboreshaji wa majaribio kwa Yul, na kuongeza vipengele vipya kwake.

Mfano wa mkataba

Mfano rahisi ufuatao unatekeleza kitendaji cha nguvu (power function). Inaweza kukusanywa kwa kutumia solc --strict-assembly --bin input.yul. Mfano unapaswa kuhifadhiwa katika faili la input.yul.

Ikiwa tayari una uzoefu mzuri na mikataba mahiri, utekelezaji kamili wa ERC-20 katika Yul unaweza kupatikana hapa (opens in a new tab).

Fe

  • Lugha yenye aina tuli (statically typed) kwa ajili ya Mashine Pepe ya Ethereum (EVM).
  • Imehamasishwa na Python na Rust.
  • Inalenga kuwa rahisi kujifunza -- hata kwa wasanidi programu ambao ni wageni kwenye mfumo wa ikolojia wa Ethereum.
  • Usanidi wa Fe bado uko katika hatua zake za awali, lugha ilikuwa na toleo lake la alpha mnamo Januari 2021.

Mfano wa mkataba

Ufuatao ni mkataba rahisi uliotekelezwa katika Fe.

Jinsi ya kuchagua

Kama ilivyo kwa lugha nyingine yoyote ya programu, mara nyingi inahusu kuchagua zana sahihi kwa kazi sahihi pamoja na mapendeleo ya kibinafsi.

Hapa kuna mambo machache ya kuzingatia ikiwa bado hujajaribu lugha yoyote:

Nini kizuri kuhusu Solidity?

  • Ikiwa wewe ni mwanzilishi, kuna mafunzo na zana nyingi za kujifunzia huko nje. Tazama zaidi kuhusu hilo katika sehemu ya Jifunze kwa Kuandika Msimbo.
  • Zana nzuri za wasanidi programu zinapatikana.
  • Solidity ina jamii kubwa ya wasanidi programu, ambayo inamaanisha kuna uwezekano mkubwa wa kupata majibu ya maswali yako haraka sana.

Nini kizuri kuhusu Vyper?

  • Njia nzuri ya kuanza kwa wasanidi programu wa Python wanaotaka kuandika mikataba mahiri.
  • Vyper ina idadi ndogo ya vipengele ambayo inafanya iwe nzuri kwa uundaji wa haraka wa mifano ya mawazo.
  • Vyper inalenga kuwa rahisi kukagua na kusomeka kwa urahisi na binadamu.

Nini kizuri kuhusu Yul na Yul+?

  • Lugha rahisi na inayofanya kazi ya kiwango cha chini.
  • Inaruhusu kukaribia zaidi EVM ghafi, ambayo inaweza kusaidia kuboresha matumizi ya gesi ya mikataba yako.

Ulinganisho wa lugha

Kwa ulinganisho wa sintaksia ya msingi, mzunguko wa maisha wa mkataba, miingiliano, waendeshaji, miundo ya data, vitendaji, mtiririko wa udhibiti, na zaidi angalia karatasi hii ya kudanganya (cheatsheet) na Auditless (opens in a new tab)

Usomaji zaidi