Ruka kwenda kwenye maudhui makuu
Change page

Utangulizi wa mikataba-erevu

Ukurasa ulihaririwa mwisho: 25 Februari 2026

Mkataba-erevu ni nini?

"Mkataba-erevu" ni programu tu inayoendeshwa kwenye mnyororo wa bloku wa Ethereum. Ni mkusanyiko wa msimbo (kazi zake) na data (hali yake) unaokaa kwenye anwani maalum kwenye mnyororo wa bloku wa Ethereum.

Mikataba-erevu ni aina ya akaunti ya Ethereum. Hii inamaanisha zina salio na zinaweza kulengwa na miamala. Hata hivyo, hazidhibitiwi na mtumiaji, badala yake hupelekwa kwenye mtandao na huendeshwa kama zilivyopangwa. Akaunti za watumiaji zinaweza kisha kuingiliana na mkataba-erevu kwa kuwasilisha miamala inayotekeleza kazi iliyobainishwa kwenye mkataba-erevu. Mikataba-erevu inaweza kufafanua sheria, kama mkataba wa kawaida, na kuzitekeleza kiotomatiki kupitia msimbo. Mikataba-erevu haiwezi kufutwa kwa chaguo-msingi, na mwingiliano nayo hauwezi kubatilishwa.

Mahitaji ya awali

Ikiwa unaanza sasa hivi au unatafuta utangulizi usio wa kiufundi sana, tunapendekeza utangulizi wetu wa mikataba-erevu.

Hakikisha umesoma kuhusu akaunti, miamala na mashine halisi ya Ethereum kabla ya kuingia katika ulimwengu wa mikataba-erevu.

Mashine ya kuuza ya kidijitali

Labda sitiari bora kwa mkataba-erevu ni mashine ya kuuza, kama ilivyoelezwa na Nick Szaboopens in a new tab. Ukiweka pembejeo sahihi, matokeo fulani yamehakikishwa.

Ili kupata vitafunio kutoka kwa mashine ya kuuza:

1pesa + uteuzi wa vitafunio = vitafunio vimetolewa

Mantiki hii imepangwa ndani ya mashine ya kuuza.

Mkataba-erevu, kama mashine ya kuuza, una mantiki iliyopangwa ndani yake. Huu hapa ni mfano rahisi wa jinsi mashine hii ya kuuza ingeonekana kama ingekuwa mkataba-erevu ulioandikwa kwa Solidity:

1pragma solidity 0.8.7;
2
3contract VendingMachine {
4
5 // Tangaza vigezo vya hali ya mkataba
6 address public owner;
7 mapping (address => uint) public cupcakeBalances;
8
9 // Wakati mkataba wa 'VendingMachine' unaposambazwa:
10 // 1. weka anwani ya usambazaji kama mmiliki wa mkataba
11 // 2. weka salio la cupcake la mkataba-erevu uliosambazwa kuwa 100
12 constructor() {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // Ruhusu mmiliki aongeze salio la cupcake la mkataba-erevu
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Ni mmiliki pekee anayeweza kujaza tena.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // Ruhusu mtu yeyote anunue cupcakes
24 function purchase(uint amount) public payable {
25 require(msg.value >= amount * 1 ether, "Lazima ulipe angalau ETH 1 kwa kila cupcake");
26 require(cupcakeBalances[address(this)] >= amount, "Hakuna cupcakes za kutosha kwenye hifadhi ili kukamilisha ununuzi huu");
27 cupcakeBalances[address(this)] -= amount;
28 cupcakeBalances[msg.sender] += amount;
29 }
30}
Onyesha yote

Kama vile mashine ya kuuza inavyoondoa hitaji la mfanyakazi muuzaji, mikataba-erevu inaweza kuchukua nafasi ya wasuluhishi katika tasnia nyingi.

Bila ruhusa

Mtu yeyote anaweza kuandika mkataba-erevu na kuusambaza kwenye mtandao. Unahitaji tu kujifunza jinsi ya kuandika msimbo katika lugha ya mkataba-erevu, na kuwa na ETH ya kutosha kusambaza mkataba wako. Kusambaza mkataba-erevu kimsingi ni muamala, kwa hivyo unahitaji kulipa gesi kwa njia ile ile unayohitaji kulipa gesi kwa uhamisho rahisi wa ETH. Hata hivyo, gharama za gesi kwa usambazaji wa mkataba ni kubwa zaidi.

Ethereum ina lugha zinazofaa kwa wasanidi programu za kuandikia mikataba-erevu:

  • Solidity
  • Vyper

Zaidi kuhusu lugha

Hata hivyo, ni lazima zikusanywe kabla ya kusambazwa ili mashine halisi ya Ethereum iweze kutafsiri na kuhifadhi mkataba. Zaidi kuhusu ukusanyaji

Uwezo wa kuunganisha

Mikataba-erevu ni ya umma kwenye Ethereum na inaweza kufikiriwa kama API zilizo wazi. Hii inamaanisha unaweza kuita mikataba-erevu mingine ndani ya mkataba wako mwenyewe ili kupanua pakubwa kile kinachowezekana. Mikataba inaweza hata kusambaza mikataba mingine.

Jifunze zaidi kuhusu uwezo wa kuunganisha wa mikataba-erevu.

Vizuizi

Mikataba-erevu peke yake haiwezi kupata taarifa kuhusu matukio ya "ulimwengu halisi" kwa sababu haiwezi kupata data kutoka kwa vyanzo vya nje ya mnyororo. Hii inamaanisha haziwezi kujibu matukio katika ulimwengu halisi. Hii ni kwa makusudi. Kutegemea taarifa za nje kunaweza kuhatarisha makubaliano, ambayo ni muhimu kwa usalama na ugatuaji.

Hata hivyo, ni muhimu kwa mifumo ya mnyororo wa bloku kuweza kutumia data ya nje ya mnyororo. Suluhisho ni oracles ambazo ni zana zinazokusanya data ya nje ya mnyororo na kuifanya ipatikane kwa mikataba-erevu.

Kikomo kingine cha mikataba-erevu ni saizi ya juu ya mkataba. Mkataba-erevu unaweza kuwa na upeo wa 24KB la sivyo utaishiwa na gesi. Hili linaweza kuepukwa kwa kutumia The Diamond Patternopens in a new tab.

Mikataba ya Multisig

Mikataba ya Multisig (saini-nyingi) ni akaunti za mkataba-erevu zinazohitaji saini nyingi halali ili kutekeleza muamala. Hii ni muhimu sana kwa kuepuka sehemu moja ya kutofaulu kwa mikataba inayoshikilia kiasi kikubwa cha ether au tokeni zingine. Multisigs pia hugawanya jukumu la utekelezaji wa mkataba na usimamizi wa ufunguo kati ya pande nyingi na kuzuia upotezaji wa ufunguo mmoja binafsi unaosababisha upotezaji usioweza kurekebishwa wa fedha. Kwa sababu hizi, mikataba ya multisig inaweza kutumika kwa utawala rahisi wa DAO. Multisigs huhitaji saini N kati ya M saini zinazokubalika (ambapo N ≤ M, na M > 1) ili kutekeleza. N = 3, M = 5 na N = 4, M = 7 hutumika sana. Multisig ya 4/7 inahitaji saini nne kati ya saini saba halali zinazowezekana. Hii inamaanisha fedha bado zinaweza kupatikana hata kama saini tatu zimepotea. Katika kesi hii, inamaanisha pia kwamba wamiliki wengi wa funguo lazima wakubaliane na kusaini ili mkataba utekelezwe.

Rasilimali za mkataba-erevu

Mikataba ya OpenZeppelin - Maktaba ya uundaji salama wa mikataba-erevu.

Masomo zaidi

Je! makala haya yamekusaidia?