๐Ÿ‡น๐Ÿ‡ฟ Kuelewa Matumizi ya UTxO kupitia Hati

Source: https://cexplorer.io/article/understanding-utxo-spending-through-a-script


Kutumia UTxO kunaweza kuwa na masharti na mantiki iliyofafanuliwa kwa hati. Katika hali kama hii, matumizi ya UTxO lazima ape hati na data kama hiyo ambayo itawezesha kufunguliwa kwa UTxO. Katika makala hii, tutaangalia jinsi ya kuifunga UTxO na jinsi ya kuifungua kwa kutekeleza hati ya kuthibitisha.
UTxOs zinatumika kupitia Miamala
Ili kuelewa makala, ni muhimu kuelewa mfano wa uhasibu wa UTxO, muundo wa UTxO, anwani za Shelley, na njia ya kawaida ya matumizi ya UTxO kupitia vitambulisho muhimu. Tulielezea hili katika makala iliyotangulia.
Katika picha iliyo hapa chini unaweza kuona anwani ya Shelley iliyo na Vitambulisho vya Malipo ikijumuisha chaguo mbili za kutumia UTxO husika. Anwani moja inaweza kuhusishwa na UTxO nyingi.

A payment credential is part of a Shelley address that identifies who owns the funds in the address and thus who is able to spend UTxOs. A payment credential can be either a key credential (based on a public/verification key) or a script credential (a hash of the script).

The trigger for spending UTxO is a transaction. Among other parameters, the transaction must contain a witness. A witness is a piece of data that proves that a transaction is authorized by the owner of the funds. If the witness is valid, the transaction can consume the input UTxOs. A witness can be either a signature (for key credentials) or a script execution (for script credentials).

In the case of key credentials, the witness is the signature made by the ownerโ€™s private key. The signature must correspond to the key credentials (public key) that belong to the address holding the UTxOs.

When users want to send funds to someone else, the wallet constructs a regular transaction for them. The wallet selects the appropriate UTxOs and asks the sender to sign the transaction. In the background, a witness is inserted into the transaction for each UTxO to be spent.

If the transaction is valid and will be finalized by the Cardano network (permanently stored in the blockchain), the transaction will consume the input UTxOs from which new UTxOs will be created (exactly as defined by the sender). Spending can be simply imagined as moving UTxOs (funds) from one address to another. Funds may be redistributed during the move, but the total value must be maintained (or less).

At the end of the blockchain, new blocks containing transactions are appended at regular intervals. The Cardano blockchain can be seen as accounting records of UTxO transfers.

We described it in detail in the previous article. In this article, we focus on the case where a witness is a script execution.

Kufunga UTxO
Kutumia UTxO kupitia hati (hati ya kihalali) ni mchakato wa awamu mbili unaojumuisha miamala miwili. Muamala wa kwanza hufunga fedha na muamala wa pili hufungua fedha kwa kutekeleza hati. Tunauita muamala wa kwanza kuwa ni muamala wa kufunga na wa pili ni shughuli ya matumizi.

Shughuli ya kwanza ni ile inayounda UTxO ambayo inafungwa kwenye anwani ya hati. Hakuna hati inayotekelezwa wakati UTxOs zimefungwa kwenye anwani ya hati. Anwani lengwa pekee (iliyofafanuliwa katika pato la UTxO la shughuli ya kufunga) ndiyo muhimu, ambayo ni anwani ya hati.

Muamala wa pili unajaribu kutumia UTxO zinazoshikiliwa na anwani ya hati. Hii inasababisha utekelezaji wa hati ya kihalalishaji. Thamani ya kurudi kwa hati (matokeo ya utekelezaji wa hati) itaamua ikiwa itafungua UTxOs.

Katika picha hapa chini unaweza kuona mchakato wa kufunga na kufungua UTxO kupitia hati. Muamala wa kufunga una pato moja la UTxO ambalo anwani yake lengwa inaonyesha anwani ya hati. Hii inafunga UTxO kwa anwani ya hati. Muamala wa matumizi hutumia UTxO kutoka kwa anwani ya hati, ambayo inasababisha utekelezaji wa hati kwenye nodi ya Cardano (mshale mwekundu). Picha inaelezea dhana ya msingi. Tutaelezea hili kwa undani zaidi hapa chini.


Wacha tueleze neno anwani ya hati. Anwani ya Shelley ni neno la kawaida kwa anwani yoyote ambayo inatumika na enzi ya Shelley ya Cardano. Anwani ya Shelley inaweza kuwa na aina na miundo tofauti, kulingana na kitambulisho na lebo ya mtandao. Anwani ya Shelley inaweza kuwa na heshi ya hati kama vitambulisho vya malipo, na hii inafanya kuwa anwani ya hati. Ukisikia neno anwani za hati, unajua kuwa matumizi ya UTxOs yanawezekana tu kupitia hati.

Anwani ya hati imechukuliwa kutoka kwa heshi ya hati ya kihalalishi. Watengenezaji huunda hati na kuifanya heshi. Hashi hutumiwa kama kitambulisho cha malipo cha anwani ya Shelley. Wakati UTxO inapohusishwa na anwani ya hati, inaweza kufunguliwa tu na hati. Hati itapitishwa pembejeo kadhaa (zaidi juu ya hiyo baadaye) na ikiwa utekelezaji wake utaisha na thamani ya kurudi ya Kweli, pesa zinaweza kutumika.

Kumbuka jambo moja muhimu. Anwani ya hati iliundwa, lakini hati (yaliyomo kwenye hati) haijahifadhiwa kwenye blockchain. Heshi ya hati pekee ndiyo iliyotumiwa kuunda anwani ya hati (na hiyo haitoshi kwa utekelezaji). Hapa chini utajifunza jinsi maudhui ya hati yanatolewa kwa node ya Cardano kwa ajili ya kuthibitisha shughuli ya matumizi.

Katika picha iliyo hapa chini unaweza kuona anwani ambayo ina heshi ya hati iliyowekwa katika stakabadhi za malipo. Msimbo wa chanzo wa hati ulipokamilika (na kujaribiwa), msanidi aliutumia kama msingi wa kuunda heshi ya hati. Hashi ya hati ni kitambulisho cha kipekee ambacho kinatokana na yaliyomo kwenye hati. Hashi ya hati ni aina ya alama fupi ya kidole ya dijiti inayohakikisha kwamba hati halisi (yaliyomo kwenye hati) ambayo ilitumiwa kuunda heshi itatumika wakati wa uthibitishaji (yaani, utekelezaji wa hati). Hii inahakikisha kwamba masharti ya matumizi ya UTxO hayawezi kubadilishwa kwa kutumia hati nyingine.


Hashi ya hati inathibitishwa na nodi ya Cardano inapothibitishwa ikiwa nodi zinathibitisha hati sahihi. Ikiwa utabadilisha herufi moja kwenye hati asili, heshi yake itakuwa tofauti kabisa. Ikiwa hati itawasilishwa kupitia muamala, maudhui ya hati lazima yatoe heshi sawa na ile ya reli iliyohifadhiwa katika stakabadhi za malipo.

Lazima kuwe na uwiano kati ya heshi iliyohifadhiwa katika stakabadhi za malipo na heshi ya msimbo wa chanzo wa hati ambayo itatekelezwa ili kuthibitisha muamala. Ikiwa heshi ni tofauti, uthibitishaji utashindwa.

Anwani ya hati lazima iundwe kabla ya muamala kutuma (washirika) pesa kwake. Vinginevyo, muamala wa kufunga haungejua mahali pa kutuma pesa na jinsi ya kuzifunga kwa hati.

Mara tu anwani ya maandishi imeundwa, pesa zinaweza kutumwa kwake, kama unavyoona kwenye picha hapa chini. Muamala una pembejeo moja ya UTxO na matokeo mawili. Mtumaji wa muamala huo ni Alice. Alice anaidhinisha muamala kwa kutoa shahidi mmoja kwa ingizo la UTxO. Alice anataka kutuma 1000 ADA kwa anwani ya hati ambayo ni ya DEX. Ana UTxO pekee yenye ADA 2500 kwenye pochi yake. Anwani ya kwanza ya lengwa ni yake na hurejesha ADA 1500 kwenye anwani yake. Anwani ya pili lengwa ni anwani ya hati ambayo ni ya DEX.


Katika picha hapa chini unaweza kuona anwani ya hati baada ya mtandao kuhalalisha (na kukamilisha) shughuli. UTxO inahusishwa na anwani ya hati.

Datum ni kigezo cha hiari ambacho kinaweza kutumika kuhifadhi habari au hali ambayo ni muhimu kwa kutumia UTxO. Datum imehifadhiwa kando ya UTxO kwenye anwani ya hati na inaweza kufikiwa na hati ya kiidhinisha wakati wa utekelezaji.

Datum imeingizwa kwenye muamala unaofunga UTxO kwenye anwani ya hati, na kwa hivyo pia kuingizwa kwenye muamala unaofungua UTxO kutoka kwa anwani ya hati.

Katika picha hapa chini unaweza kuona shughuli inayofunga UTxO kwenye anwani ya hati pamoja na Datum. Muamala huu wa kufunga unatofautiana na muamala wa awali wa kufunga tu kwa kuwa una Datum ambayo itahusishwa na UTxO.


Katika picha hapa chini unaweza kuona anwani ya hati baada ya mtandao kuhalalisha (na kukamilisha) shughuli. UTxO inahusishwa na anwani ya hati na ina Datum.

Fedha kwenye anwani ya script inadhibitiwa na script yenyewe, ambayo inafafanua masharti ya kutumia UTxO. Hati huchukua baadhi ya maingizo, kama vile shahidi, Datum, Mkombozi, na muktadha wa hati, na kurejesha ama Kweli au Siyo, kuonyesha kama matumizi ni halali au la. Tutazungumza juu ya pembejeo za maandishi kwa undani baadaye.

Sasa tuna UTxO imefungwa kwenye anwani ya hati.

Kufikia Hati

Kabla ya kuanza kueleza jinsi UTxOs zinavyofunguliwa, tunahitaji kuangalia jinsi nodi zinavyopata hati ambazo hutumiwa kuhalalisha shughuli zinazojaribu kutumia UTxOs kutoka kwa anwani za hati. Maudhui ya hati lazima yapatikane kwa nodi ya Cardano ili iweze kuitekeleza, yaani kuthibitisha shughuli ya matumizi.

Maudhui ya hati yanaweza kuingizwa kwenye data ya muamala wa matumizi kama shahidi wa hati. Hii ina maana kwamba muamala unaojaribu kutumia UTxO lazima ujumuishe maudhui ya hati kama sehemu ya shirika la muamala. Hii huongeza ukubwa wa muamala na hivyo pia ada. Kwa ujumla, inapunguza ugumu wa hati kwa sababu inalazimisha watengenezaji kufanya hati ndogo iwezekanavyo (ukubwa wa block ni mdogo na watumiaji hawataki kulipa ada kubwa).
Ikiwa watumiaji wangetuma miamala mingi kama hii, maudhui ya hati sawa yangehifadhiwa kwenye blockchain mara nyingi, ambayo ni upotezaji wa nafasi usio wa lazima.

Katika picha iliyo hapa chini, unaweza kuona shughuli ya matumizi iliyo na maudhui ya hati katika sehemu ya Shahidi (katika rangi nyekundu). Angalia jinsi ingizo UTxO inavyofafanua kupitia heshi ya hati ambayo hati lazima itumike kwa uthibitishaji. Nodi ya Cardano inachukua maudhui ya hati kutoka kwa shirika la shughuli na kuunda hashi. Ni lazima heshi ilingane na hati iliyo katika vitambulisho vya malipo (mishale nyekundu).


Uwezo mwingine ni kwamba hati inaweza kuhusishwa na UTxO kama hati ya kumbukumbu. Hii inamaanisha kuwa muamala wa kufunga unaounda UTxO lazima ujumuishe hati kama sehemu ya matokeo ya muamala. Yaliyomo kwenye hati huhifadhiwa kwenye blockchain kama hati ya kumbukumbu na inaweza kufikiwa na heshi yake.

Kwa hivyo, maandishi yanaweza kuhifadhiwa kwenye blockchain mara moja tu, na kisha kutumika tena na shughuli zinazofuata bila kujumuisha yaliyomo kwenye hati.

Badala yake, shughuli zinazofuata zinaweza kurejelea hati kwa heshi zao, ambayo pia ni jinsi zinavyotambuliwa ndani ya anwani za hati. Hii inapunguza ukubwa na ada za miamala na inaruhusu urahisishaji zaidi na upanuzi wa hati.

Katika picha hapa chini, unaweza kuona shughuli ya kufunga ambayo huhifadhi yaliyomo kwenye hati kwenye blockchain kwenye anwani ya hati.


Kwanza, anwani ya hati imeundwa kama ilivyoelezwa hapo juu. Baada ya kuunda anwani ya hati, haina yaliyomo kwenye hati. Mara tu anwani ya hati inapatikana, yaliyomo kwenye hati yanaweza kuhifadhiwa juu yake kupitia shughuli.

Katika picha hapa chini unaweza kuona anwani ya hati baada ya mtandao kuhalalisha (na kukamilisha) shughuli. Yaliyomo kwenye hati yamehifadhiwa kwenye blockchain na yanaweza kurejelewa na miamala mingine.


Kuna anwani moja tu ya hati ambayo inahusishwa na hati. Watumiaji wanaweza kutuma (na hivyo kufunga) UTxO zingine kwa anwani sawa ya hati kupitia shughuli za kufunga na kujaribu kuzitumia kutoka kwa anwani kupitia shughuli za matumizi (kufungua kila wakati kunahitaji utekelezaji wa hati).

UTxO iliyo na hati iko kwenye anwani ya hati kila wakati isipokuwa inatumiwa kwa kutosheleza hati.
Kwa hivyo, muamala unaotumia UTxO unaweza kurejelea hati kwa hashi yake, bila kuijumuisha kwenye data ya ununuzi.

Katika picha hapa chini, unaweza kuona anwani ya hati iliyo na UTxO ambayo huhifadhi yaliyomo kwenye hati (nyekundu) na pia UTxOs 3 (bluu) ambazo zilitumwa kwa anwani na watumiaji wengine na ambazo zitatumika kutoka kwa anwani kupitia utekelezaji wa hati. Anwani itatumika tena mradi hati inatumika.


Sasa unajua jinsi ya kufunga UTxOs kwenye anwani ya hati na jinsi nodi ya Cardano inapata yaliyomo kwenye maandishi. Wacha tuangalie kwa karibu kufungua UTxOs.

Kufungua UTxO
UTxO ambayo imefungwa kwenye anwani ya hati inaweza kutumika kupitia shughuli ya matumizi ambayo inasababisha utekelezaji wa hati. Ikiwa UTxO inahusishwa na anwani ya hati, hati lazima itekelezwe kila wakati na hakuna njia ya kuizunguka.

Haijalishi ni anwani gani lengwa zimefafanuliwa katika matokeo ya UTxO ya shughuli ya matumizi na jinsi pesa zinavyopaswa kusambazwa kupitia UTxO mpya.
Hebu tuone jinsi nodi ya Cardano inavyothibitisha shughuli ya matumizi ambayo inahitaji utekelezaji wa hati.
Nodi hukagua ikiwa muamala wa matumizi ni wa awamu ya 1, kumaanisha kuwa imeundwa kwa usahihi na inaweza kulipa ada yake ya usindikaji.

Muamala lazima ulipe ada za kutosha ili kufidia gharama ya utekelezaji wa hati ya kihalalishaji, ambayo inategemea ukubwa na utata wa hati. Ada hukokotolewa kwa kutumia kigezo cha itifaki cha coinsPerUTxOWord, ambacho huamua ni kiasi gani cha ADA kinahitajika kwa kila baiti ya msimbo wa hati.
Ikiwa muamala utapitisha uthibitishaji wa awamu ya 1, hati inaweza kutekelezwa, vinginevyo, shughuli hiyo itakataliwa.

Wakati wa uthibitishaji wa awamu ya 2, hati inatekelezwa. Muamala utakuwa halali tu ikiwa inawezekana kutumia (kufungua) kila ingizo la UTxO. Kwa kila ingizo la UTxO ambalo linahusishwa na anwani ya hati, thamani ya urejeshaji wa hati lazima iwe Kweli.

Nodi hupata hati ambayo inahusishwa na UTxO ambayo shughuli inajaribu kutumia. Hati inaweza kurejelewa na heshi yake au kuingizwa kwenye data ya muamala. Nodi pia hukagua ikiwa heshi ya hati iliyorejeshwa au iliyoingizwa inalingana na heshi iliyohifadhiwa katika stakabadhi za malipo za matokeo. Ikiwa hakuna inayolingana, muamala unakataliwa kama batili.

Nodi hupitisha pembejeo kwa hati na kuitekeleza. Hati ya kihalalishaji inaweza kupata pembejeo zifuatazo:

  • Datum: Hii ni kipande cha data iliyoambatanishwa na UTxO ambayo hati imefungwa. Datum inaweza kutumika kuhifadhi hali au hali ambayo ni muhimu kwa matumizi ya UTxO.
  • Mkombozi: Hii ni kipande cha data iliyoambatishwa kwa ingizo la matumizi. Kwa kawaida hii hutumiwa kutoa ingizo kwa hati kutoka kwa mtumaji. Inaweza kutumika kutoa baadhi ya taarifa au mantiki ambayo inahitajika ili kufungua fedha. Mkombozi ni lazima kwa ingizo lolote la UTxO ambalo lina anwani inayotegemea hati, bila kujali aina au maudhui ya hati.
  • Muktadha wa muamala: Hiki ni kipande cha data kinachowakilisha taarifa kuhusu muamala wa matumizi. Hii inatumika kutoa madai juu ya jinsi pato linatumika. Kwa mfano, mantiki ya hati inaweza kuhitaji saini. Sahihi inaweza kutumika kuthibitisha umiliki wa baadhi ya fedha au tokeni zinazohitajika na hati.

Hati hurejesha Kweli au Siyo, ikionyesha ikiwa hali ya matumizi imetimizwa au la. Ikiwa ni Kweli, basi shughuli hiyo inakubaliwa na UTxO inatumika. Ikiwa Siyo, basi muamala umekataliwa na UTxO inabaki bila kutumika.
Picha hapa chini inaonyesha kufunguliwa kwa UTxO kupitia muamala wa matumizi. Ingizo la muamala ni UTxO ambayo inahusishwa na anwani ya hati (kishale cha bluu).

Muamala unarejelea hati (katika mfano huu maudhui ya hati si sehemu ya shirika la muamala). Nodi ya Cardano inapata maudhui ya hati ambayo yamehifadhiwa kwenye blockchain (katika UTxO) na inalinganisha hashi ya maudhui ya hati na hash ya hati katika hati za malipo (mishale nyekundu).
Ifuatayo, inahitajika kupata pembejeo za hati na kuzipitisha kwake (mishale ya kijani kibichi).

Ikiwa Datum tayari imehifadhiwa kwenye blockchain, basi si lazima kuiingiza tena kwenye shughuli ya matumizi. Nodi inaweza kupata thamani ya Datum kwa kutafuta heshi ya Datum ambayo imehifadhiwa kwenye UTxO. Hata hivyo, ikiwa Datum haijahifadhiwa kwenye blockchain, basi shughuli ya matumizi lazima itoe thamani ya Datum inayolingana na hash ya Datum katika UTxO. Hii ni kuhakikisha kuwa hati inaweza kufikia thamani ya Datum wakati wa kuhalalisha shughuli ya matumizi.

Zaidi ya hayo, muktadha wa Mkombozi na muamala hupitishwa kama nyenzo za hati. Muktadha wa muamala una taarifa zote muhimu kuhusu muamala, kwa hivyo orodha ya UTxO za pembejeo na matokeo ya UTxOs, ada, mashahidi (saini), Datums, hati za uthibitishaji (au marejeleo kwao), nk.

Ingizo hupitishwa kwa hati na mantiki ya hati inatekelezwa. Ingizo huathiri thamani ya kurudi. Katika mfano wetu, thamani ya kurudi ni Kweli, hivyo UTxO inaweza kutumika (mishale nyeusi). Pesa zitahamishiwa kwenye anwani mpya lengwa.


Kuhusu Mantiki ya Hati ya DEX

Katika sura hii, tutajaribu kueleza muktadha zaidi kuhusu mikataba mahiri kwenye Cardano.

Katika mfano wetu, Alice alituma ADA 1000 kwa anwani ya hati ya DEX, ambayo inamaanisha kwamba aliunda UTxO ambayo imefungwa na anwani ya hati. Anwani ya hati inatokana na heshi ya hati ya kithibitishaji ya DEX, ambayo ina mantiki ya kubadilishana tokeni kwenye jukwaa la DEX. Hati pia inaweza kuwa na mantiki ya kughairi agizo.

Inawezekana vipi kwamba Alice halazimiki kuunda shughuli hiyo? Alitumia kiolesura cha ubadilishanaji, akaingiza ombi lake (agizo la kubadilishana), na kisha kuulizwa kuthibitisha muamala. DEX (programu) iliunda muamala kwa Alice.

Katika picha iliyo hapa chini, unaweza kuona kwamba katika mfumo ikolojia wa Cardano, mkataba mahiri unaweza kujumuisha sehemu za programu zisizo na mnyororo na za mtandaoni. Mantiki ya nje ya mnyororo inawajibika kwa ujenzi wa shughuli za kufunga na matumizi. Katika kesi ya DEX, mantiki ya nje ya mnyororo inachakatwa kwenye seva (katika wingu). Katika makala hiyo, tulishughulikia tu mantiki ya mnyororo, i.e. uthibitishaji wa hati, ambayo hufanyika kwenye blockchain kupitia Mashine ya Virtual ya Cardano.

Alice huingiliana tu na sehemu ya nje ya mnyororo ya DEX ambayo hutengeneza miamala. Muamala wa kufunga (amri ya kubadilishana) inahitaji saini kutoka kwa Alice.

Alice anaweza kurejeshewa pesa zake akiamua kughairi agizo lake kwenye DEX. Ili kufanya hivyo, lazima atengeneze muamala unaotumia UTxO ambayo imefungwa na anwani ya hati na kuirudisha kwa anwani yake mwenyewe. Muamala wa kughairi (matumizi) umeundwa na mantiki ya nje ya mnyororo, kwa hivyo Alice anatumia kiolesura cha DEX. Ni lazima atoe shahidi anayethibitisha umiliki wake wa UTxO, na Mkombozi anayeonyesha nia yake ya kughairi agizo hilo. Hati ya kihalali itathibitisha ikiwa kweli Alice ndiye mmiliki wa UTxO.

Hati za vithibitishaji vya DEX mbalimbali (au programu zingine) hutofautiana sana katika utendakazi wao na chaguo wanazotoa watumiaji.
Ili kufungua pesa, DEX, Alice, au mtu mwingine yeyote anayetaka kutumia UTxO lazima atoe maingizo sahihi kwa hati ya kiidhishi, kama vile saini, Mkombozi au Datum. Hati ya kiidhinishaji itaangalia ikiwa pembejeo zinakidhi sheria za ubadilishaji, kama vile kulinganisha bei ya ofa, kulipa ada na kuheshimu muda wa uhalali.
Ingawa kimsingi mtu yeyote anaweza kutumia pesa, DEX inatarajiwa kuendana na maagizo na kubadilishana, i.e. inaweza kutimiza vyema masharti ya hati. Hata hivyo, moja ya masharti ya script inaweza kuwa saini na ufunguo binafsi wa Alice au DEX, hivyo inawezekana kufafanua kundi la wale wanaoweza kutumia fedha.

DEX haiwezi kuiba pesa kwenye anwani za hati. DEX inaweza tu kutosheleza hati kwa kutoa pembejeo na hivyo kutekeleza maagizo ya watumiaji. Wakati DEX inatimiza agizo, saini kutoka kwa Alice haihitajiki. DEX inaweza kutekeleza ubadilishanaji bila maingiliano yoyote zaidi na Alice. Kwa maneno mengine, DEX ina uwezo wa kuunda shughuli ya matumizi ambayo inakidhi masharti ya hati. Alice anapokea ishara kwenye anwani yake kama matokeo ya ubadilishaji ulioombwa wa jozi ya ishara.

Hitimisho

Hati za vithibitishaji kawaida ni rahisi sana na hufanya kazi na idadi ndogo ya habari. Kimsingi huamua tu ikiwa pesa zinaweza kutumika kutoka kwa anwani ya hati. Hali rahisi inaweza kutosha kwa hili. Mantiki nyingi za maombi zinapaswa kuwa katika sehemu zisizo na mnyororo. Utekelezaji wa hati za uthibitishaji hutumia rasilimali za mtandao uliosambazwa, ambayo inaweza kuwa ghali zaidi kuliko kutumia rasilimali za seva au kompyuta za ndani za watumiaji.