Utangulizi wa Mikataba Mahiri

Katika makala haya, tutaangalia mikataba ya smart ni nini, ni nini, tutafahamiana na majukwaa tofauti ya mikataba ya smart, vipengele vyao, na pia kujadili jinsi inavyofanya kazi na faida gani wanaweza kuleta. Nyenzo hii itakuwa muhimu sana kwa wasomaji ambao hawajui vizuri mada ya mikataba ya smart, lakini wanataka kupata karibu kuielewa.

Mkataba wa kawaida dhidi ya mkataba wa busara

Kabla ya kutafakari kwa kina, hebu tuchukue mfano wa tofauti kati ya mkataba wa kawaida, ambao umeainishwa kwenye karatasi, na mkataba wa busara, ambao unawakilishwa kidijitali.

Utangulizi wa Mikataba Mahiri

Je, hii ilifanya kazi vipi kabla ya ujio wa mikataba ya busara? Hebu fikiria kundi la watu ambao wanataka kuanzisha sheria na masharti fulani ya usambazaji wa maadili, pamoja na utaratibu fulani wa kuhakikisha utekelezaji wa usambazaji huu kulingana na sheria na masharti yaliyotolewa. Kisha wangekusanyika, kuchora karatasi ambayo waliandika maelezo yao ya kitambulisho, masharti, maadili yanayohusika, tarehe na kutia saini. Mkataba huu pia uliidhinishwa na mtu anayeaminika, kama vile mthibitishaji. Zaidi ya hayo, watu hawa walikwenda pande tofauti na nakala yao ya karatasi ya mkataba kama huo na wakaanza kufanya vitendo ambavyo vinaweza kutolingana na mkataba wenyewe, ambayo ni, walifanya jambo moja, lakini kwenye karatasi ilithibitishwa kwamba wanapaswa kufanya kitu. tofauti kabisa. Na jinsi ya kutoka katika hali hii? Kwa kweli, mmoja wa wanakikundi anahitaji kuchukua karatasi hii, kuchukua ushahidi, kuupeleka mahakamani na kufikia utiifu kati ya mkataba na hatua halisi. Mara nyingi, ni vigumu kufikia utekelezaji wa haki wa mkataba huu, ambayo husababisha matokeo mabaya.

Je, tunaweza kusema nini kuhusu mikataba ya busara? Wanachanganya uwezekano wote wa kuandika masharti ya mkataba na utaratibu wa utekelezaji wao mkali. Ikiwa masharti yamewekwa na shughuli inayolingana au ombi imesainiwa, basi mara tu ombi au shughuli hiyo imekubaliwa, haiwezekani tena kubadili hali au kuathiri utekelezaji wao.

Kuna kithibitishaji kimoja au mtandao mzima, pamoja na hifadhidata inayohifadhi kandarasi zote mahiri ambazo ziliwasilishwa ili kutekelezwa kwa mpangilio madhubuti wa mpangilio wa matukio. Ni muhimu pia kwamba hifadhidata hii lazima iwe na masharti yote ya vichochezi vya kutekeleza mkataba mahiri. Kwa kuongeza, ni lazima kuzingatia thamani sana ambayo usambazaji wake umeelezwa katika mkataba. Ikiwa hii inatumika kwa sarafu fulani ya dijiti, basi hifadhidata hii inapaswa kuzingatiwa.

Kwa maneno mengine, waidhinishaji mahiri wa kandarasi lazima wapate ufikiaji wa data yote ambayo mkataba mahiri hufanya kazi. Kwa mfano, hifadhidata moja inapaswa kutumiwa kuhesabu kwa wakati mmoja sarafu za kidijitali, salio la watumiaji, miamala ya watumiaji na muhuri wa muda. Kisha, katika mkataba wa smart, hali inaweza kuwa usawa wa mtumiaji katika sarafu fulani, kuwasili kwa wakati fulani, au ukweli kwamba shughuli fulani imefanywa, lakini hakuna zaidi.

Ufafanuzi wa mkataba wa busara

Kwa ujumla, istilahi yenyewe iliundwa na mtafiti Nick Szabo na kutumika kwa mara ya kwanza mnamo 1994, na iliandikwa mnamo 1997 katika nakala inayoelezea wazo la mikataba ya busara.

Mikataba ya busara inaashiria kuwa otomatiki fulani ya usambazaji wa thamani hufanywa, ambayo inaweza tu kutegemea masharti ambayo yamepangwa mapema. Kwa fomu yake rahisi, inaonekana kama mkataba na masharti madhubuti yaliyofafanuliwa, ambayo yamesainiwa na vyama fulani.

Mikataba mahiri imeundwa ili kupunguza uaminifu kwa wahusika wengine. Wakati mwingine kituo cha kufanya maamuzi ambacho kila kitu kinategemea kinatengwa kabisa. Aidha, mikataba hiyo ni rahisi kukagua. Haya ni matokeo ya baadhi ya vipengele vya muundo wa mfumo kama huo, lakini mara nyingi tunaelewa kwa mkataba mzuri mazingira ya ugatuzi na uwepo wa kazi ambazo huruhusu mtu yeyote kuchambua hifadhidata na kufanya ukaguzi kamili wa utekelezaji wa mikataba. Hii inahakikisha ulinzi dhidi ya mabadiliko ya data yanayorejea ambayo yatajumuisha mabadiliko katika utendakazi wa mkataba wenyewe. Uwekaji dijiti wa michakato mingi wakati wa kuunda na kuzindua kandarasi mahiri mara nyingi hurahisisha teknolojia na gharama ya utekelezaji wake.

Mfano rahisi - Huduma ya Escrow

Hebu tuangalie mfano rahisi sana. Itakusaidia kukaribia kuelewa utendakazi wa mikataba mahiri, na pia kuelewa vyema ni katika hali zipi zinafaa kutumika.

Utangulizi wa Mikataba Mahiri

Inaweza pia kutekelezwa kwa kutumia Bitcoin, ingawa hivi sasa Bitcoin bado haiwezi kuitwa jukwaa kamili la mikataba mahiri. Kwa hiyo, tuna mnunuzi fulani na tuna duka la mtandaoni. Mteja anataka kununua kifuatilizi kutoka kwa duka hili. Katika hali rahisi, mnunuzi anakamilisha na kutuma malipo, na duka la mtandaoni linakubali, linathibitisha, na kisha husafirisha bidhaa. Hata hivyo, katika hali hii kuna haja ya uaminifu mkubwa - mnunuzi lazima aamini duka la mtandaoni kwa gharama nzima ya kufuatilia. Kwa kuwa duka la mtandaoni linaweza kuwa na sifa ya chini machoni pa mnunuzi, kuna hatari kwamba kwa sababu fulani, baada ya kukubali malipo, duka litakataa huduma na haitatuma bidhaa kwa mnunuzi. Kwa hiyo, mnunuzi anauliza swali (na, ipasavyo, duka la mtandaoni linauliza swali hili) ni nini kinachoweza kutumika katika kesi hii ili kupunguza hatari hizo na kufanya shughuli hizo kuwa za kuaminika zaidi.

Katika kesi ya Bitcoin, inawezekana kuruhusu mnunuzi na muuzaji kujitegemea kuchagua mpatanishi. Kuna watu wengi wanaohusika katika kutatua masuala yenye utata. Na washiriki wetu wanaweza kuchagua kutoka kwa orodha ya jumla ya wapatanishi yule watakayemwamini. Kwa pamoja huunda anwani 2 kati ya 3 za saini nyingi ambapo kuna funguo tatu na sahihi mbili zilizo na funguo zozote mbili zinahitajika ili kutumia sarafu kutoka kwa anwani hiyo. Ufunguo mmoja utakuwa wa mnunuzi, wa pili kwa duka la mtandaoni, na wa tatu kwa mpatanishi. Na kwa anwani kama hiyo ya saini nyingi mnunuzi atatuma kiasi kinachohitajika kulipia mfuatiliaji. Sasa, muuzaji anapoona kwamba pesa zimezuiwa kwa muda kwenye anwani ya multisignature ambayo inategemea yeye, anaweza kutuma kwa usalama kufuatilia kwa barua.

Ifuatayo, mnunuzi anapokea kifurushi, anakagua bidhaa na kufanya uamuzi juu ya ununuzi wa mwisho. Anaweza kukubaliana kabisa na huduma iliyotolewa na kusaini shughuli na ufunguo wake, ambapo huhamisha sarafu kutoka kwa anwani ya multisignature kwa muuzaji, au anaweza kutoridhishwa na kitu. Katika kesi ya pili, anawasiliana na mpatanishi ili kuweka pamoja shughuli mbadala ambayo itasambaza sarafu hizo tofauti.

Wacha tuseme mfuatiliaji alifika kidogo na kit haikujumuisha kebo ya kuunganisha kwenye kompyuta, ingawa tovuti ya duka la mtandaoni ilisema kwamba kebo inapaswa kujumuishwa kwenye kit. Kisha mnunuzi hukusanya ushahidi muhimu ili kuthibitisha kwa mpatanishi kwamba alidanganywa katika hali hii: anachukua viwambo vya tovuti, anachukua picha ya risiti ya barua, anachukua picha ya scratches kwenye kufuatilia na inaonyesha kuwa muhuri ulikuwa. kuvunjwa na kebo ikatolewa. Duka la mtandaoni, kwa upande wake, hukusanya ushahidi wake na kuuhamisha kwa mpatanishi.

Mpatanishi ana nia ya kukidhi wakati huo huo hasira ya mnunuzi na maslahi ya duka la mtandaoni (itakuwa wazi kwa nini baadaye). Inajumuisha shughuli ambayo sarafu kutoka kwa anwani ya saini nyingi zitatumika kwa sehemu fulani kati ya mnunuzi, duka la mtandaoni na mpatanishi, kwa kuwa anachukua sehemu yake mwenyewe kama malipo kwa kazi yake. Hebu tuseme 90% ya jumla ya kiasi huenda kwa muuzaji, 5% kwa mpatanishi na 5% fidia kwa mnunuzi. Mpatanishi husaini shughuli hii na ufunguo wake, lakini bado haiwezi kutumika, kwa sababu inahitaji saini mbili, lakini ni moja tu ya thamani yake. Inatuma shughuli kama hiyo kwa mnunuzi na muuzaji. Ikiwa angalau mmoja wao ameridhika na chaguo hili la kusambaza tena sarafu, basi shughuli hiyo itasainiwa na kusambazwa kwenye mtandao. Ili kuithibitisha, inatosha kwamba mmoja wa wahusika wa shughuli hiyo anakubaliana na chaguo la mpatanishi.

Ni muhimu kwanza kuchagua mpatanishi ili washiriki wote wawili wamwamini. Katika kesi hiyo, atafanya kazi kwa kujitegemea kwa maslahi ya moja au nyingine na kutathmini hali hiyo kwa makusudi. Ikiwa mpatanishi haitoi chaguo la kusambaza sarafu ambazo zitatosheleza angalau mshiriki mmoja, basi, baada ya kukubaliana pamoja, mnunuzi na duka la mtandaoni wanaweza kutuma sarafu kwa anwani mpya ya saini nyingi kwa kuweka saini zao mbili. Anwani mpya ya saini nyingi itakusanywa na mpatanishi tofauti, ambaye anaweza kuwa na uwezo zaidi katika suala hilo na kutoa chaguo bora zaidi.

Mfano na mabweni na jokofu

Hebu tuangalie mfano changamano zaidi unaoonyesha uwezo wa mkataba mahiri kwa uwazi zaidi.

Utangulizi wa Mikataba Mahiri

Wacha tuseme kuna wavulana watatu ambao hivi karibuni walihamia kwenye chumba kimoja cha kulala. Watatu hao wana nia ya kununua jokofu kwa chumba chao ambacho wanaweza kutumia pamoja. Mmoja wao alijitolea kukusanya kiasi kinachohitajika ili kununua jokofu na kujadiliana na muuzaji. Walakini, walikutana hivi karibuni tu na hakuna uaminifu wa kutosha kati yao. Kwa wazi, wawili kati yao wanachukua hatari kwa kutoa pesa kwa wa tatu. Kwa kuongeza, wanahitaji kufikia makubaliano katika kuchagua muuzaji.

Wanaweza kutumia huduma ya escrow, yaani, kuchagua mpatanishi ambaye atafuatilia utekelezaji wa shughuli hiyo na kutatua masuala yenye utata iwapo yatatokea. Halafu, baada ya kukubaliana, wanaunda mkataba mzuri na kuagiza masharti fulani ndani yake.

Sharti la kwanza ni kwamba kabla ya muda fulani, sema ndani ya wiki moja, akaunti inayolingana ya mkataba wa smart lazima ipokee malipo matatu kutoka kwa anwani fulani kwa kiasi fulani. Hili lisipofanyika, mkataba mahiri huacha kutekeleza na kurejesha sarafu kwa washiriki wote. Ikiwa hali hiyo imefikiwa, basi maadili ya vitambulisho vya muuzaji na mpatanishi huwekwa, na hali inakaguliwa kwamba washiriki wote wanakubaliana na uchaguzi wa muuzaji na mpatanishi. Wakati masharti yote yametimizwa, basi fedha zitahamishiwa kwenye anwani maalum. Mbinu hii inaweza kuwalinda washiriki dhidi ya ulaghai kutoka upande wowote na kwa ujumla huondoa hitaji la kuaminiana.

Tunaona katika mfano huu kanuni sana kwamba uwezo huu wa hatua kwa hatua kuweka vigezo kwa ajili ya kutimiza kila hali inakuwezesha kuunda mifumo ya utata wowote na kina cha viwango vilivyowekwa. Kwa kuongeza, unaweza kwanza kufafanua hali ya kwanza katika mkataba wa smart, na tu baada ya utimilifu wake unaweza kuweka vigezo kwa hali inayofuata. Kwa maneno mengine, hali hiyo imeandikwa rasmi, na vigezo vyake vinaweza kuweka tayari wakati wa uendeshaji wake.

Uainishaji wa mikataba ya smart

Kwa uainishaji, unaweza kuweka vikundi tofauti vya vigezo. Walakini, wakati wa maendeleo ya teknolojia, nne kati yao zinafaa.

Mikataba ya busara inaweza kutofautishwa na mazingira yao ya utekelezaji, ambayo yanaweza kuwa ya kati au kugawanywa. Katika hali ya ugatuaji, tuna uhuru mkubwa zaidi na uvumilivu wa makosa wakati wa kutekeleza mikataba mahiri.

Wanaweza pia kutofautishwa na mchakato wa kuweka na kutimiza masharti: wanaweza kupangwa kwa uhuru, mdogo au kufafanuliwa awali, i.e. kuchapwa madhubuti. Wakati kuna kandarasi 4 pekee mahiri kwenye mfumo mahiri wa mikataba, vigezo vyake vinaweza kuwekwa kwa njia yoyote ile. Ipasavyo, kuziweka ni rahisi zaidi: tunachagua mkataba kutoka kwenye orodha na kupitisha vigezo.

Kulingana na njia ya uanzishaji, kuna mikataba ya kiotomatiki ya kiotomatiki, ambayo ni, wakati hali fulani zinatokea, zinajitekeleza, na kuna mikataba ambayo masharti yameainishwa, lakini jukwaa haliangalii utimilifu wao kiatomati; kwa hili wanafanya. zinahitaji kuanzishwa tofauti.

Kwa kuongezea, mikataba mahiri hutofautiana katika kiwango chao cha faragha. Wanaweza kuwa wazi kabisa, sehemu au siri kabisa. Mwisho unamaanisha kwamba waangalizi wa chama cha tatu hawaoni masharti ya mikataba ya busara. Hata hivyo, mada ya faragha ni pana sana na ni bora kuzingatia tofauti na makala ya sasa.

Hapo chini tutaangalia kwa undani vigezo vitatu vya kwanza ili kuleta uwazi zaidi kwa uelewa wa mada ya sasa.

Mikataba mahiri kwa wakati wa utekelezaji

Utangulizi wa Mikataba Mahiri

Kulingana na mazingira ya utekelezaji, tofauti hufanywa kati ya majukwaa ya kandarasi mahiri yaliyowekwa kati na yaliyogatuliwa. Katika kesi ya mikataba ya kati ya dijiti, huduma moja hutumiwa, ambapo kuna kihalalishaji kimoja tu na kunaweza kuwa na huduma ya chelezo na uokoaji, ambayo pia inasimamiwa serikali kuu. Kuna hifadhidata moja ambayo huhifadhi habari zote muhimu ili kuweka masharti ya mkataba mzuri na kusambaza thamani ambayo inazingatiwa katika hifadhidata hii ya huduma. Huduma kama hiyo ya kati ina mteja ambaye huweka masharti na maombi fulani na hutumia mikataba kama hiyo. Kwa sababu ya hali ya kati ya jukwaa, mbinu za uthibitishaji zinaweza kuwa salama kidogo kuliko katika fedha fiche.

Kwa mfano, tunaweza kuchukua watoa huduma za mawasiliano ya simu (waendeshaji wa simu tofauti). Wacha tuseme mwendeshaji fulani anaweka rekodi ya kati ya trafiki kwenye seva zake, ambayo inaweza kupitishwa kwa muundo tofauti, kwa mfano: kwa njia ya simu za sauti, upitishaji wa SMS, trafiki ya mtandao wa rununu, na kulingana na viwango tofauti, na pia huweka rekodi. ya fedha kwenye salio la watumiaji. Ipasavyo, mtoa huduma wa mawasiliano ya simu anaweza kuandaa kandarasi za uhasibu wa huduma zinazotolewa na malipo yao kwa masharti tofauti. Katika hali hii, ni rahisi kuweka masharti kama vile "tuma SMS yenye nambari fulani na vile kwa nambari kama hiyo na utapokea hali kama hizi za usambazaji wa trafiki."

Mfano mmoja zaidi unaweza kutolewa: benki za kitamaduni zilizo na utendakazi uliopanuliwa wa benki ya Mtandaoni na mikataba rahisi sana kama vile malipo ya kawaida, ubadilishaji wa kiotomatiki wa malipo yanayoingia, kukatwa kiotomatiki kwa riba kwa akaunti maalum, nk.

Ikiwa tunazungumza juu ya mikataba ya busara na mazingira ya utekelezaji wa madaraka, basi tuna kikundi cha wathibitishaji. Kwa kweli, mtu yeyote anaweza kuwa mthibitishaji. Kwa sababu ya itifaki ya ulandanishi wa hifadhidata na kufikia maafikiano, tuna hifadhidata ya kawaida ambayo sasa itahifadhi miamala yote iliyo na mikataba iliyofafanuliwa kabisa, na sio maswali fulani ya masharti, miundo ambayo mara nyingi hubadilika, na hakuna vipimo wazi. Hapa, shughuli zitakuwa na maagizo ya kutekeleza mkataba kulingana na maelezo madhubuti. Vipimo hivi viko wazi na, kwa hivyo, watumiaji wa jukwaa wenyewe wanaweza kukagua na kuhalalisha mikataba mahiri. Hapa tunaona kwamba majukwaa yaliyogatuliwa ni bora kuliko ya serikali kuu kwa suala la uhuru na uvumilivu wa makosa, lakini muundo na matengenezo yao ni ngumu zaidi.

Mikataba ya busara kwa njia ya kuweka na kutimiza masharti

Sasa hebu tuchunguze kwa undani zaidi jinsi mikataba ya busara inavyoweza kutofautiana kwa jinsi inavyoweka na kutimiza masharti. Hapa tunaelekeza usikivu wetu kwa kandarasi mahiri ambazo zinaweza kuratibiwa nasibu na kukamilika kwa Turing. Mkataba mzuri wa Turing-complete hukuruhusu kuweka karibu algoriti zozote kama masharti ya utekelezaji wa mkataba: mizunguko ya kuandika, baadhi ya vipengele vya kukokotoa uwezekano, na kadhalika - hadi kwenye algoriti zako za saini za kielektroniki. Katika kesi hii, tunamaanisha uandishi wa kiholela wa mantiki.

Pia kuna mikataba mahiri ya kiholela, lakini sio Turing kamili. Hii ni pamoja na Bitcoin na Litecoin na hati zao wenyewe. Hii ina maana kwamba unaweza kutumia shughuli fulani tu kwa utaratibu wowote, lakini huwezi tena kuandika loops na algorithms yako mwenyewe.

Kwa kuongezea, kuna majukwaa mahiri ya mikataba ambayo hutekeleza mikataba mahiri iliyobainishwa mapema. Hizi ni pamoja na Bitshares na Steemit. Bitshares ina anuwai ya mikataba mahiri ya biashara, usimamizi wa akaunti, usimamizi wa jukwaa lenyewe na vigezo vyake. Steemit ni jukwaa sawa, lakini halilengizwi tena katika kutoa tokeni na biashara, kama vile Bitshares, bali kwenye blogu, yaani, huhifadhi na kuchakata maudhui kwa njia iliyogatuliwa.

Mikataba ya kiholela ya Turing ni pamoja na jukwaa la Ethereum na RootStock, ambalo bado linatengenezwa. Kwa hiyo, hapa chini tutakaa kwa undani zaidi kwenye jukwaa la mkataba wa smart Ethereum.

Mikataba mahiri kwa njia ya uanzishaji

Kulingana na njia ya kuanzishwa, mikataba ya smart inaweza pia kugawanywa katika angalau makundi mawili: automatiska na mwongozo (sio otomatiki). Wale otomatiki wana sifa ya ukweli kwamba, kwa kuzingatia vigezo na masharti yote yanayojulikana, mkataba wa smart unatekelezwa moja kwa moja, ambayo ni, hauitaji kutuma shughuli zozote za ziada na kutumia tume ya ziada kwa kila utekelezaji unaofuata. Jukwaa lenyewe lina data zote za kukokotoa jinsi mkataba mahiri utakavyokamilika. Mantiki huko sio ya kiholela, lakini imetanguliwa na yote haya yanatabirika. Hiyo ni, unaweza kukadiria mapema ugumu wa kutekeleza mkataba mzuri, tumia aina fulani ya tume ya mara kwa mara kwa hiyo, na michakato yote ya utekelezaji wake ni bora zaidi.

Kwa mikataba mahiri ambayo imeratibiwa bila malipo, utekelezaji hauji kiotomatiki. Ili kuanzisha mkataba mzuri kama huu, karibu kila hatua unahitaji kuunda muamala mpya, ambao utaita hatua inayofuata ya utekelezaji au njia inayofuata ya mkataba mzuri, ulipe tume inayofaa na ungojee muamala uthibitishwe. Utekelezaji unaweza kukamilika kwa mafanikio au la, kwa sababu msimbo mahiri wa mkataba ni wa kiholela na baadhi ya matukio yasiyotabirika yanaweza kuonekana, kama vile mzunguko wa milele, ukosefu wa baadhi ya vigezo na mabishano, vighairi visivyoshughulikiwa, n.k.

Hesabu za Ethereum

Aina za Akaunti ya Ethereum

Hebu tuangalie ni aina gani za akaunti zinaweza kuwa kwenye jukwaa la Ethereum. Kuna aina mbili tu za akaunti hapa na hakuna chaguzi zingine. Aina ya kwanza inaitwa akaunti ya mtumiaji, ya pili ni akaunti ya mkataba. Wacha tuone jinsi wanatofautiana.

Akaunti ya mtumiaji inadhibitiwa tu na ufunguo wa kibinafsi wa saini ya elektroniki. Mmiliki wa akaunti hutengeneza jozi yake mwenyewe muhimu kwa sahihi ya kielektroniki kwa kutumia algoriti ya ECDSA (Elliptic Curve Digital Signature Algorithm). Ni miamala tu iliyotiwa saini kwa ufunguo huu inaweza kubadilisha hali ya akaunti hii.

Mantiki tofauti imetolewa kwa akaunti ya mkataba mahiri. Inaweza kudhibitiwa tu na msimbo wa programu uliofafanuliwa ambao huamua kabisa tabia ya mkataba mzuri: jinsi itasimamia sarafu zake chini ya hali fulani, kwa mpango wa mtumiaji gani na chini ya hali gani za ziada sarafu hizi zitasambazwa. Ikiwa baadhi ya pointi hazijatolewa na watengenezaji katika msimbo wa programu, matatizo yanaweza kutokea. Kwa mfano, mkataba mahiri unaweza kupokea hali fulani ambapo haukubali kuanzishwa kwa utekelezaji zaidi kutoka kwa mtumiaji yeyote. Katika kesi hii, sarafu zitagandishwa, kwa sababu mkataba mzuri hautoi kuondoka kwa hali hii.

Jinsi akaunti zinaundwa kwenye Ethereum

Katika kesi ya akaunti ya mtumiaji, mmiliki huzalisha kwa kujitegemea jozi muhimu kwa kutumia ECDSA. Ni muhimu kutambua kwamba Ethereum hutumia algorithm sawa na curve sawa ya mviringo kwa saini za elektroniki kama Bitcoin, lakini anwani inahesabiwa kwa njia tofauti kidogo. Hapa, matokeo ya hashing mara mbili haitumiki tena, kama katika Bitcoin, lakini hashing moja hutolewa na kazi ya Keccak kwa urefu wa bits 256. Biti muhimu zaidi zimekatwa kutoka kwa thamani inayotokana, ambayo ni angalau biti 160 za thamani ya pato la hashi. Matokeo yake, tunapata anwani katika Ethereum. Kwa kweli, inachukua hadi 20 byte.

Tafadhali kumbuka kuwa kitambulisho cha akaunti katika Ethereum kimesimbwa kwa hex bila kutumia cheki, tofauti na Bitcoin na mifumo mingine mingi, ambapo anwani imesimbwa katika mfumo wa nambari 58 na nyongeza ya hundi. Hii ina maana kwamba unahitaji kuwa makini wakati unafanya kazi na vitambulisho vya akaunti katika Ethereum: hata kosa moja katika kitambulisho kinahakikishiwa kusababisha kupoteza kwa sarafu.

Kuna kipengele muhimu na ni kwamba akaunti ya mtumiaji katika kiwango cha hifadhidata ya jumla inaundwa wakati anakubali malipo ya kwanza yanayoingia.

Kufungua akaunti ya mkataba mahiri huchukua mbinu tofauti kabisa. Hapo awali, mmoja wa watumiaji anaandika msimbo wa chanzo wa mkataba wa smart, baada ya hapo msimbo hupitishwa kupitia mkusanyaji maalum kwa jukwaa la Ethereum, kupata bytecode kwa mashine yake ya Ethereum virtual. Bytecode inayotokana imewekwa kwenye uwanja maalum wa manunuzi. Inathibitishwa kwa niaba ya akaunti ya mwanzilishi. Kisha, muamala huu unaenezwa katika mtandao wote na kuweka msimbo mahiri wa mkataba. Tume ya manunuzi na, ipasavyo, kwa utekelezaji wa mkataba hutolewa kutoka kwa usawa wa akaunti ya mwanzilishi.

Kila mkataba mahiri lazima uwe na mjenzi wake (wa mkataba huu). Inaweza kuwa tupu au inaweza kuwa na maudhui. Baada ya mjenzi kutekelezwa, kitambulisho cha akaunti mahiri cha mkataba huundwa, ambacho unaweza kutuma sarafu, kupiga simu kwa njia fulani mahiri za mikataba, n.k.

Muundo wa Shughuli ya Ethereum

Ili kuifanya iwe wazi, tutaanza kuangalia muundo wa shughuli ya Ethereum na mfano msimbo wa mkataba wa smart.

Utangulizi wa Mikataba Mahiri

Muamala wa Ethereum una sehemu kadhaa. Ya kwanza kati ya hizi, nonce, ni nambari fulani ya serial ya shughuli inayohusiana na akaunti yenyewe inayoisambaza na ndiye mwandishi wake. Hii ni muhimu ili kutofautisha shughuli mbili, yaani, kuwatenga kesi wakati shughuli hiyo inakubaliwa mara mbili. Kwa kutumia kitambulisho, kila shughuli ina thamani ya kipekee ya heshi.

Inayofuata inakuja uwanja kama bei ya gesi. Hii inaonyesha bei ambayo sarafu ya msingi ya Ethereum inabadilishwa kuwa gesi, ambayo hutumika kulipa kwa ajili ya utekelezaji wa mkataba wa smart na ugawaji wa rasilimali ya mashine ya kawaida. Ina maana gani?

Katika Bitcoin, ada hulipwa moja kwa moja na sarafu ya msingi-Bitcoin yenyewe. Hii inawezekana shukrani kwa utaratibu rahisi wa kuwahesabu: tunalipa madhubuti kwa kiasi cha data zilizomo katika shughuli. Katika Ethereum hali ni ngumu zaidi, kwa sababu ni vigumu sana kutegemea kiasi cha data ya shughuli. Hapa, muamala unaweza pia kuwa na msimbo wa programu ambao utatekelezwa kwenye mashine pepe, na kila operesheni ya mashine pepe inaweza kuwa na utata tofauti. Pia kuna shughuli zinazotenga kumbukumbu kwa vigezo. Watakuwa na utata wao wenyewe, ambayo malipo kwa kila operesheni itategemea.

Gharama ya kila operesheni katika gesi sawa itakuwa mara kwa mara. Inaletwa mahsusi ili kuamua gharama ya mara kwa mara ya kila operesheni. Kulingana na mzigo kwenye mtandao, bei ya gesi itabadilika, yaani, mgawo kulingana na ambayo sarafu ya msingi itabadilishwa kuwa kitengo hiki cha msaidizi kulipa tume.

Kuna kipengele kimoja zaidi cha shughuli katika Ethereum: bytecode ambayo ina kwa ajili ya utekelezaji katika mashine ya kawaida itatekelezwa hadi ikamilike na matokeo fulani (mafanikio au kutofaulu) au hadi kiasi fulani cha sarafu kilichotengwa kiishe kulipa tume. . Ni ili kuepusha hali ambapo, katika tukio la makosa fulani, sarafu zote kutoka kwa akaunti ya mtumaji zilitumika kwa tume (kwa mfano, aina fulani ya mzunguko wa milele ulianza kwenye mashine ya kawaida), uwanja ufuatao upo - kuanza gesi (mara nyingi huitwa kikomo cha gesi) - huamua kiwango cha juu cha sarafu ambazo mtumaji yuko tayari kutumia ili kukamilisha shughuli fulani.

Sehemu inayofuata inaitwa anwani ya marudio. Hii inajumuisha anwani ya mpokeaji wa sarafu au anwani ya mkataba mahususi mahiri ambao mbinu zake zitaitwa. Baada ya kuja shamba thamani, ambapo kiasi cha sarafu ambazo hutumwa kwa anwani ya marudio huingizwa.

Ifuatayo ni uwanja unaovutia unaoitwa data, ambapo muundo wote unafaa. Huu sio uwanja tofauti, lakini muundo mzima ambao msimbo wa mashine ya kawaida hufafanuliwa. Unaweza kuweka data kiholela hapa - kuna sheria tofauti kwa hili.

Na uwanja wa mwisho unaitwa saini. Wakati huo huo ina saini ya kielektroniki ya mwandishi wa shughuli hii na ufunguo wa umma ambao saini hii itathibitishwa. Kutoka kwa ufunguo wa umma unaweza kupata kitambulisho cha akaunti ya mtumaji wa muamala huu, yaani, tambua akaunti ya mtumaji kwa njia ya kipekee katika mfumo wenyewe. Tuligundua jambo kuu juu ya muundo wa manunuzi.

Mfano msimbo mahiri wa mkataba wa Solidity

Wacha sasa tuangalie kwa karibu mkataba rahisi zaidi wa busara kwa kutumia mfano.

contract Bank {
    address owner;
    mapping(address => uint) balances;
    
    function Bank() {
        owner = msg.sender;
    }

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw(uint amount) public {
        if (balances[msg.sender] >= amount) {
            balances[msg.sender] -= amount;
            msg.sender.transfer(amount);
        }
    }

    function getMyBalance() public view returns(uint) {
        return balances[msg.sender];
    }

    function kill() public {
        if (msg.sender == owner)
            selfdestruct(owner);
    }
}

Hapo juu ni msimbo wa chanzo uliorahisishwa ambao unaweza kuhifadhi sarafu za watumiaji na kuzirudisha zinapohitajika.

Kwa hiyo, kuna mkataba wa smart wa Benki ambao hufanya kazi zifuatazo: hukusanya sarafu kwenye usawa wake, yaani, wakati shughuli imethibitishwa na mkataba huo wa smart unawekwa, akaunti mpya inaundwa ambayo inaweza kuwa na sarafu kwenye usawa wake; inakumbuka watumiaji na usambazaji wa sarafu kati yao; ina mbinu kadhaa za kusimamia mizani, yaani, inawezekana kujaza, kuondoa na kuangalia usawa wa mtumiaji.

Wacha tupitie kila safu ya nambari ya chanzo. Mkataba huu una nyanja za kudumu. Mmoja wao, aliye na anwani ya aina, anaitwa mmiliki. Hapa mkataba unakumbuka anwani ya mtumiaji aliyeunda mkataba huu mzuri. Zaidi ya hayo, kuna muundo wa nguvu unaodumisha mawasiliano kati ya anwani za mtumiaji na mizani.

Hii inafuatwa na njia ya Benki - ina jina sawa na mkataba. Ipasavyo, huyu ndiye mjenzi wake. Hapa utofauti wa mmiliki hupewa anwani ya mtu aliyeweka mkataba huu mahiri kwenye mtandao. Hiki ndicho kitu pekee kinachotokea katika mjenzi huyu. Hiyo ni, msg katika kesi hii ni data hasa ambayo ilihamishiwa kwenye mashine ya mtandaoni pamoja na shughuli iliyo na kanuni nzima ya mkataba huu. Ipasavyo, msg.sender ndiye mwandishi wa shughuli hii ambayo inapangisha msimbo huu. Atakuwa mmiliki wa mkataba mzuri.

Njia ya amana inakuwezesha kuhamisha idadi fulani ya sarafu kwenye akaunti ya mkataba kwa shughuli. Katika kesi hiyo, mkataba wa smart, kupokea sarafu hizi, huwaacha kwenye mizania yake, lakini kumbukumbu katika muundo wa mizani ni nani hasa alikuwa mtumaji wa sarafu hizi ili kujua ni nani.

Njia inayofuata inaitwa kuondoa na inachukua parameter moja - kiasi cha sarafu ambazo mtu anataka kuondoa kutoka benki hii. Hii hukagua ikiwa kuna sarafu za kutosha kwenye salio la mtumiaji anayepiga simu kwa njia hii ili kuzituma. Ikiwa kuna kutosha kwao, basi mkataba wa smart yenyewe unarudi idadi hiyo ya sarafu kwa mpigaji.

Inayofuata inakuja mbinu ya kuangalia salio la sasa la mtumiaji. Yeyote anayepiga simu kwa njia hii atatumiwa kupata salio hili katika mkataba mahiri. Inafaa kumbuka kuwa kiboreshaji cha njia hii ni mtazamo. Hii inamaanisha kuwa njia yenyewe haibadilishi anuwai za darasa lake kwa njia yoyote na kwa kweli ni njia ya kusoma tu. Hakuna shughuli tofauti iliyoundwa ili kupiga simu kwa njia hii, hakuna ada inayolipwa, na mahesabu yote yanafanywa ndani ya nchi, baada ya hapo mtumiaji anapokea matokeo.

Njia ya kuua inahitajika ili kuharibu hali ya mkataba mzuri. Na hapa kuna ukaguzi wa ziada ikiwa mpigaji simu wa njia hii ndiye mmiliki wa mkataba huu. Ikiwa ndivyo, basi mkataba unajiangamiza, na kazi ya uharibifu inachukua parameter moja - kitambulisho cha akaunti ambacho mkataba utatuma sarafu zote zilizobaki kwenye usawa wake. Katika kesi hii, sarafu zilizobaki zitaenda moja kwa moja kwa anwani ya mmiliki wa mkataba.

Je, node kamili kwenye mtandao wa Ethereum inafanyaje kazi?

Hebu tuangalie schematically jinsi mikataba hiyo ya smart inatekelezwa kwenye jukwaa la Ethereum na jinsi node kamili ya mtandao inavyofanya kazi.

Utangulizi wa Mikataba Mahiri

Node kamili kwenye mtandao wa Ethereum lazima iwe na angalau moduli nne.
Ya kwanza, kama itifaki yoyote iliyopitishwa, ni moduli ya mtandao ya P2P - moduli ya unganisho la mtandao na kufanya kazi na nodi zingine, ambapo vizuizi, shughuli, na habari kuhusu nodi zingine hubadilishwa. Hiki ni kipengele cha kitamaduni kwa fedha zote za siri zilizogatuliwa.

Ifuatayo, tuna moduli ya kuhifadhi data ya blockchain, usindikaji, kuchagua tawi la kipaumbele, vizuizi vya kuongezea, vitalu vya kutenganisha, kudhibitisha vizuizi hivi, nk.

Moduli ya tatu inaitwa EVM (Ethereum virtual mashine) - hii ni mashine ya kawaida inayopokea bytecode kutoka kwa shughuli za Ethereum. Moduli hii inachukua hali ya sasa ya akaunti fulani na kufanya mabadiliko kwa hali yake kulingana na bytecode iliyopokelewa. Toleo la mashine pepe kwenye kila nodi ya mtandao lazima liwe sawa. Mahesabu yanayofanyika kwenye kila node ya Ethereum ni sawa kabisa, lakini hutokea kwa njia ya asynchronous: mtu huangalia na kukubali shughuli hii mapema, yaani, anatekeleza kanuni zote zilizomo ndani yake, na mtu baadaye. Ipasavyo, wakati shughuli imeundwa, inasambazwa kwa mtandao, nodi zinakubali, na wakati wa uthibitishaji, kwa njia ile ile ambayo Hati ya Bitcoin inatekelezwa katika Bitcoin, bytecode ya mashine ya kawaida inatekelezwa hapa.

Muamala unachukuliwa kuwa umethibitishwa ikiwa msimbo wote uliomo ndani yake umetekelezwa, hali mpya ya akaunti fulani imetolewa na kuhifadhiwa hadi iwe wazi ikiwa muamala huu umetumika au la. Ikiwa shughuli inatumika, basi hali hii inachukuliwa sio tu kukamilika, lakini pia sasa. Kuna hifadhidata inayohifadhi hali ya kila akaunti kwa kila nodi ya mtandao. Kutokana na ukweli kwamba mahesabu yote hutokea kwa njia sawa na hali ya blockchain ni sawa, database yenye majimbo ya akaunti zote pia itakuwa sawa kwa kila node.

Hadithi na mapungufu ya mikataba smart

Kuhusu vikwazo vilivyopo kwa majukwaa ya mikataba mahiri sawa na Ethereum, yafuatayo yanaweza kutajwa:

  • utekelezaji wa kanuni;
  • kutenga kumbukumbu;
  • data ya blockchain;
  • kutuma malipo;
  • kuunda mkataba mpya;
  • piga mikataba mingine.

Wacha tuangalie vizuizi ambavyo vimewekwa kwenye mashine ya kawaida, na, ipasavyo, tuondoe hadithi kadhaa juu ya mikataba smart. Kwenye mashine ya kawaida, ambayo inaweza kuwa sio tu kwa Ethereum, lakini pia katika majukwaa yanayofanana, unaweza kufanya shughuli za kimantiki za kiholela, yaani, kuandika msimbo na itatekelezwa huko, unaweza kuongeza kumbukumbu. Hata hivyo, ada hulipwa tofauti kwa kila operesheni na kwa kila kitengo cha ziada cha kumbukumbu kilichotengwa.

Kisha, mashine pepe inaweza kusoma data kutoka hifadhidata ya blockchain ili kutumia data hii kama kichochezi kutekeleza mantiki moja au nyingine mahiri ya mkataba. Mashine ya mtandaoni inaweza kuunda na kutuma miamala, inaweza kuunda mikataba mipya na mbinu za kupiga simu za mikataba mingine mahiri ambayo tayari imechapishwa kwenye mtandao: iliyopo, inapatikana, nk.

Hadithi ya kawaida ni kwamba mikataba ya Ethereum smart inaweza kutumia taarifa kutoka kwa rasilimali yoyote ya mtandao kwa masharti yao. Ukweli ni kwamba mashine ya kawaida haiwezi kutuma ombi la mtandao kwa rasilimali fulani ya habari ya nje kwenye mtandao, yaani, haiwezekani kuandika mkataba mzuri ambao utasambaza thamani kati ya watumiaji kulingana na, sema, hali ya hewa ni nini nje, au ni nani alishinda ubingwa fulani, au kulingana na tukio lingine lililotokea katika ulimwengu wa nje, kwa sababu habari kuhusu matukio haya haiko kwenye hifadhidata ya jukwaa lenyewe. Hiyo ni, hakuna chochote kwenye blockchain kuhusu hili. Ikiwa haionekani hapo, basi mashine ya kawaida haiwezi kutumia data hii kama vichochezi.

Hasara za Ethereum

Wacha tuorodheshe kuu. Hasara ya kwanza ni kwamba kuna matatizo fulani katika kubuni, kuendeleza na kupima kandarasi mahiri katika Ethereum (Ethereum hutumia lugha ya Solidity kuandika mikataba mahiri). Hakika, mazoezi yanaonyesha kwamba asilimia kubwa sana ya makosa yote ni ya sababu ya kibinadamu. Hii ni kweli kwa mikataba ya Ethereum iliyoandikwa tayari ambayo ina utata wa wastani au wa juu zaidi. Ikiwa kwa mikataba rahisi ya smart uwezekano wa kosa ni mdogo, basi katika mikataba tata ya smart kuna makosa mara nyingi sana ambayo husababisha wizi wa fedha, kufungia kwao, uharibifu wa mikataba ya smart kwa njia isiyotarajiwa, nk. Kesi nyingi kama hizo tayari ziko. inayojulikana.

Hasara ya pili ni kwamba mashine ya kawaida yenyewe sio kamili, kwani pia imeandikwa na watu. Inaweza kutekeleza amri za kiholela, na ndani yake kuna hatari: idadi ya amri zinaweza kusanidiwa kwa njia fulani ambayo itasababisha matokeo ambayo hayakutarajiwa mapema. Hili ni eneo ngumu sana, lakini tayari kuna tafiti kadhaa zinazoonyesha kuwa udhaifu huu upo katika toleo la sasa la mtandao wa Ethereum na wanaweza kusababisha kushindwa kwa mikataba mingi ya smart.

Ugumu mwingine mkubwa, inaweza kuchukuliwa kuwa hasara. Iko katika ukweli kwamba unaweza kufikia hitimisho kivitendo au kitaalam kwamba ikiwa utakusanya bytecode ya mkataba ambayo itatekelezwa kwenye mashine ya kawaida, unaweza kuamua utaratibu maalum wa uendeshaji. Inapofanywa kwa pamoja, shughuli hizi zitapakia mashine pepe kwa kiasi kikubwa na kuipunguza kasi isivyolingana na ada iliyolipwa kwa kutekeleza shughuli hizi.

Hapo zamani, tayari kulikuwa na kipindi katika maendeleo ya Ethereum, wakati wavulana wengi ambao walielewa kwa undani uendeshaji wa mashine ya kawaida walipata udhaifu huo. Kwa kweli, shughuli zililipa ada ndogo sana, lakini kwa kweli zilipunguza kasi ya mtandao mzima. Shida hizi ni ngumu sana kusuluhisha, kwani ni muhimu, kwanza, kuziamua, pili, kurekebisha bei ya kufanya shughuli hizi na, tatu, kutekeleza uma ngumu, ambayo inamaanisha kusasisha nodi zote za mtandao kwa toleo jipya. ya programu, na kisha uanzishaji wa wakati huo huo wa mabadiliko haya.

Kuhusu Ethereum, utafiti mwingi umefanywa, uzoefu mwingi wa vitendo umepatikana: chanya na hasi, lakini bado kuna ugumu na udhaifu ambao bado unapaswa kushughulikiwa kwa namna fulani.

Kwa hivyo, sehemu ya mada ya kifungu imekamilika, wacha tuendelee kwa maswali yanayotokea mara nyingi.

Maswali

β€” Ikiwa wahusika wote kwenye kandarasi mahiri iliyopo wanataka kubadilisha masharti, je, wanaweza kughairi mkataba huu mahiri kwa kutumia multisig, na kisha kuunda mkataba mpya mahiri wenye masharti mapya ya utekelezaji wake?

Majibu hapa yatakuwa mawili. Kwa nini? Kwa sababu kwa upande mmoja, mkataba wa smart hufafanuliwa mara moja na haimaanishi tena mabadiliko yoyote, na kwa upande mwingine, inaweza kuwa na mantiki iliyoandikwa kabla ambayo hutoa mabadiliko kamili au sehemu ya baadhi ya masharti. Hiyo ni, ikiwa unataka kubadilisha kitu katika mkataba wako mzuri, basi lazima uagize masharti ambayo unaweza kusasisha masharti haya. Ipasavyo, ni kwa njia ya busara tu ambayo upyaji wa mkataba unaweza kupangwa. Lakini hapa, pia, unaweza kuingia kwenye shida: fanya makosa na upate mazingira magumu yanayolingana. Kwa hiyo, mambo hayo yanahitajika kuwa ya kina sana na yaliyoundwa kwa uangalifu na kupimwa.

- Je, ikiwa mpatanishi anaingia katika makubaliano na mmoja wa washiriki: escrow au mkataba wa busara? Je, mpatanishi anahitajika katika mkataba mzuri?

Mpatanishi hatakiwi katika mkataba mahiri. Huenda haipo. Ikiwa, katika kesi ya escrow, mpatanishi anaingia katika njama na mmoja wa vyama, basi ndiyo, mpango huu basi unapoteza thamani yake yote. Kwa hiyo, wapatanishi huchaguliwa kwa namna ambayo wanaaminiwa na pande zote zinazohusika katika mchakato huu kwa wakati mmoja. Ipasavyo, hutahamisha sarafu kwa anwani ya saini nyingi na mpatanishi ambaye humwamini.

- Je, inawezekana kwa shughuli moja ya Ethereum kuhamisha ishara nyingi tofauti kutoka kwa anwani yako hadi kwa anwani tofauti zinazolengwa, kwa mfano, anwani za kubadilishana ambapo ishara hizi zinauzwa?

Hili ni swali zuri na linahusu mfano wa shughuli ya Ethereum na jinsi inavyotofautiana na mfano wa Bitcoin. Na tofauti ni radical. Ikiwa katika mfano wa shughuli ya Ethereum unahamisha sarafu tu, basi huhamishwa tu kutoka kwa anwani moja hadi nyingine, hakuna mabadiliko, tu kiasi maalum ulichotaja. Kwa maneno mengine, hii sio mfano wa matokeo ambayo hayajatumiwa (UTXO), lakini mfano wa akaunti na mizani inayolingana. Kinadharia inawezekana kutuma ishara kadhaa tofauti katika shughuli moja mara moja ikiwa utaandika mkataba wa busara wa ujanja, lakini bado utalazimika kufanya shughuli nyingi, kuunda mkataba, kisha kuhamisha ishara na sarafu kwake, na kisha piga simu kwa njia inayofaa. . Hii inahitaji jitihada na wakati, kwa hiyo kwa mazoezi haifanyi kazi hivyo na malipo yote katika Ethereum yanafanywa kwa shughuli tofauti.

- Moja ya hadithi kuhusu jukwaa la Ethereum ni kwamba haiwezekani kuelezea hali ambayo itategemea data ya rasilimali ya nje ya mtandao, hivyo ni nini cha kufanya basi?

Suluhisho ni kwamba mkataba mahiri wenyewe unaweza kutoa neno moja au zaidi linaloitwa maneno ya kuaminika, ambayo hukusanya data kuhusu hali ya mambo katika ulimwengu wa nje na kuisambaza kwa mikataba mahiri kupitia mbinu maalum. Mkataba wenyewe unazingatia data ambayo ilipokea kutoka kwa wahusika wanaoaminika kuwa kweli. Kwa kuegemea zaidi, chagua tu kundi kubwa la maneno na upunguze hatari ya kula njama zao. Mkataba wenyewe hauwezi kuzingatia data kutoka kwa maneno ambayo yanapingana na wengi.

Moja ya mihadhara ya kozi ya mkondoni kwenye Blockchain imejitolea kwa mada hii - "Utangulizi wa Mikataba Mahiri".

Chanzo: mapenzi.com

Kuongeza maoni