Ruka hadi kwenye maudhui makuu

Kuweka logi za data kutoka kwenye mikataba mahiri kwa kutumia matukio

mikataba mahiri
Remix
Solidity
matukio
Kati
jdourlens
3 Aprili 2020
2 dakika za kusoma

Katika Solidity, matukio ni ishara zinazotumwa ambazo mikataba mahiri inaweza kuzianzisha. Programu tumizi zilizogatuliwa (dapps), au chochote kilichounganishwa kwenye API ya JSON-RPC ya Ethereum, kinaweza kusikiliza matukio haya na kuchukua hatua ipasavyo. Tukio linaweza pia kuwekewa faharasa ili historia ya tukio iweze kutafutwa baadaye.

Matukio

Tukio la kawaida zaidi kwenye mnyororo wa vitalu wa Ethereum wakati wa kuandika makala haya ni tukio la Transfer ambalo hutolewa na tokeni za ERC-20 wakati mtu anafanya hamisho la tokeni.

event Transfer(address indexed from, address indexed to, uint256 value);

Sahihi ya tukio inatangazwa ndani ya msimbo wa mkataba na inaweza kutolewa kwa neno kuu la emit. Kwa mfano, tukio la transfer linaweka logi ya nani aliyetuma hamisho (from), kwa nani (to) na kiasi gani cha tokeni zilihamishwa (value).

Tukirudi kwenye mkataba mahiri wetu wa Counter na kuamua kuweka logi kila wakati thamani inapobadilishwa. Kwa kuwa mkataba huu haukusudiwi kusambazwa bali kutumika kama msingi wa kujenga mkataba mwingine kwa kuupanua: unaitwa mkataba dhahania (abstract contract). Katika mfano wetu wa counter, ingeonekana hivi:

Kumbuka kwamba:

  • Mstari wa 5: tunatangaza tukio letu na kile linachojumuisha, thamani ya zamani na thamani mpya.

  • Mstari wa 13: Tunapoongeza kigezo chetu cha count, tunatoa tukio.

Ikiwa sasa tutasambaza mkataba na kuita kipengele cha increment, tutaona kwamba Remix itaionyesha kiotomatiki ukibofya kwenye muamala mpya ndani ya safu inayoitwa logs.

Remix screenshot

Logi ni muhimu sana kwa kutatua hitilafu kwenye mikataba mahiri yako lakini pia ni muhimu ikiwa unaunda programu zinazotumiwa na watu tofauti na kurahisisha kufanya uchanganuzi ili kufuatilia na kuelewa jinsi mkataba mahiri wako unavyotumika. Logi zinazozalishwa na miamala zinaonyeshwa kwenye vivinjari maarufu vya vitalu na unaweza pia kwa mfano kuzitumia kuunda hati za nje ya mnyororo kwa ajili ya kusikiliza matukio mahususi na kuchukua hatua yanapotokea.