Bitcoin ցանցում գործարքը (transaction) բիթքոյնների նկատմամբ տնօրինման իրավունքի փոխանցումն է մեկ օգտատիրոջից մյուսին։
Նույն տերմինով կոչվում է նաև բլոկչեյնի գրանցամատյանում (blockchain) կատարված գրառումը, որը նկարագրում է այդ գործընթացը։ Գործարքը հեռարձակվում է ցանցում և պետք է հաստատվի ցանցի այլ մասնակիցների կողմից։ Նման կրիպտո գործարք իրականացնելու պարտադիր պայմանն այն է, որ և՛ ուղարկողը, և՛ ստացողը ունենան կրիպտոարժութային դրամապանակ և Bitcoin հասցե։ Այն մասին, թե ինչպես բացել կրիպտոարժութային դրամապանակ, մենք պատմել ենք այստեղ։
Մասնավոր և հանրային բանալիներ
Bitcoin ցանցում գործարք իրականացնելու համար յուրաքանչյուր օգտատեր պետք է ունենա.
• Մասնավոր բանալի (այլ անվանումներ՝ անձնական, փակ կամ գաղտնի բանալի),
• Հանրային բանալի (այլ անվանումներ՝ Bitcoin հասցե կամ Bitcoin հաշիվ)։
Մասնավոր բանալին անհրաժեշտ է բիթքոյնների նկատմամբ տնօրինման իրավունք ունենալու համար և ծառայում է որպես գաղտնաբառ՝ անձնական կրիպտոարժութային դրամապանակն ապակողպելու համար։ Այն իրենից ներկայացնում է համակարգի կողմից գեներացված բազմանիշ թիվ։
Հանրային բանալին գեներացվում է մասնավոր բանալու հիման վրա։ Սա նշանակում է, որ իմանալով մասնավոր բանալին՝ հնարավոր է ստանալ հանրային բանալին։ Սակայն այս կապը միակողմանի է. իմանալով հանրային բանալին՝ անհնար է պարզել մասնավոր բանալին։

Հենց այդ պատճառով էլ չափազանց կարևոր է, որ օգտատերը հուսալիորեն պահպանի իր բանալիների արժեքները, հատկապես՝ մասնավոր բանալին։ Քանի որ կորցնելով այդ տեղեկատվությունը՝ նա ընդմիշտ կկորցնի իր կրիպտոարժութային դրամապանակի և այնտեղ պահվող միջոցների հասանելիությունը։ Bitcoin համակարգում անհնար է վերականգնել կորցրած կամ մոռացված մասնավոր բանալին։
ԿԱՐԵՎՈՐ Է ՀԻՇԵԼ.
• Հանրային բանալին (կամ Bitcoin հասցեն) կարելի է փոխանցել այլ օգտատերերի։
• Մասնավոր բանալին պետք է պահել խիստ գաղտնի։ Այն պետք է հայտնի լինի միայն դրա սեփականատիրոջը։
Գործարքի մուտք և ելք
Բլոկչեյնում փոխանցվող միջոցների մասին տեղեկատվությունն արտացոլելու համար օգտագործվում են «մուտք» (IN կամ INPUTS) և «ելք» (OUT կամ OUTPUTS) հասկացությունները։ Գործարքի «մուտքը» պարունակում է ուղարկողի դրամապանակի հասցեն, ինչպես նաև հաստատում, որ կրիպտոարժույթի սեփականատերը մտադիր է կատարել փոխանցում։ Գործարքի «ելքը» պարունակում է ստացողի հասցեն, փոխանցվող գումարի չափը և հաստատում, որ փոխանցվող միջոցները նախատեսված են հենց այդ հասցեատիրոջ համար։
Գործարք իրականացնելու հիմնական կանոններն են. 1.«Մուտքում» գտնվող կրիպտոմետաղադրամների ընդհանուր քանակը պետք է լինի ավելի մեծ կամ հավասար «ելքում» գտնվող բիթքոյնների քանակին։ 2.«Մուտքում» գտնվող ամբողջ գումարը պետք է օգտագործվի ամբողջությամբ և չի կարող օգտագործվել մասնակի։ 3.Ցանկացած «ելք» կարող է օգտագործվել որպես «մուտք», սակայն ոչ ավելի, քան մեկ անգամ։
Բլոկչեյնում բոլոր գործարքները փոխկապակցված են և գրանցված են միասնական համակարգում։ Այդ պատճառով յուրաքանչյուր նոր գործարքի «մուտքը» միաժամանակ հղում է նախորդ գործարքի «ելքին»։ Համապատասխանաբար, նոր ստեղծված գործարքի «ելքը» կդառնա հաջորդ գործարքի «մուտքը», սակայն ոչ ավելի, քան մեկ անգամ։ Այսինքն՝ գործարքում նշված հղումը չպետք է նախկինում օգտագործված լինի։ Եթե նույն հղումը կրկնօրինակվի, ուժի մեջ կմնա միայն առաջին տարբերակը, իսկ մնացածները համակարգի կողմից չեն հաստատվի:
Եկեք դիտարկենք A և B երկու գործարքների օրինակ։
Գործարք A։ Ենթադրենք՝ Դավիթն ունի 50 BTC և ցանկանում է 0.5 BTC ուղարկել Անահիտին։ Դավիթը ստեղծում է 0.5 BTC-ի գործարք։ Նրա IN (INPUT)-ում կլինի 50 BTC, և քանի որ կանոնի համաձայն մուտքում եղած գումարը չի կարող օգտագործվել մասնակի, Դավիթը պետք է օգտագործի ամբողջ 50 BTC-ն։ Բայց ինչպե՞ս, եթե նա ցանկանում է ուղարկել ընդամենը 0.5 BTC։ Այստեղ կա մի կարևոր առանձնահատկություն. Դավիթի դրամապանակը ավտոմատ կերպով ստեղծում է առանձին հասցե՝ մնացորդի համար։ Արդյունքում 0.5 BTC-ն փոխանցվում է Անահիտին, իսկ մնացած 49.5 BTC-ն վերադարձվում է Դավիթի դրամապանակ՝ որպես մնացորդ։ Այսպիսով, առաջին գործարքը կատարվեց, որտեղ IN՝ 50 BTC-ն Դավիթի սեփական միջոցներն են, առաջին OUT՝ 0.5 BTC-ն փոխանցվեց Անահիտին, իսկ երկրորդ OUT՝ 49.5 BTC-ն վերադարձավ Դավիթին որպես մնացորդ։
Գործարք B։ Այս գործարքն իրականացնում է Անահիտը։ Նրա հասցեում արդեն կա 0.5 BTC, որը նա ստացել է Դավիթից, ինչպես նաև 0.1 BTC, որը ստացել է անծանոթից, և 0.2 BTC, որը ստացել է իր քրոջից։ Անահիտը ցանկանում է 0.8 BTC փոխանցել իր աշխատակցին՝ որպես աշխատավարձ։ Ստեղծվում է գործարք, որտեղ IN-ում ընդգրկված են բոլոր երեք աղբյուրները (0.5 BTC՝ Դավիթից, 0.1 BTC՝ անծանոթից և 0.2 BTC՝ քրոջից), իսկ OUT-ը կազմում է 0.8 BTC։
Ինչպես տեսնում ենք օրինակից, A գործարքի 0.5 BTC-ի ելքը (OUT) դարձավ B գործարքի 0.5 BTC-ի մուտքը (IN)։ Դա կարող է տեղի ունենալ միայն մեկ անգամ, այսինքն՝ գործում է հետևյալ կանոնը. «Ցանկացած ելք (OUTPUT) կարող է օգտագործվել որպես մուտք (INPUT), սակայն ոչ ավելի, քան մեկ անգամ»։
Նույնը վերաբերում է նաև հետևյալ կանոնին. «Մուտքում (INPUT) գտնվող կրիպտոմետաղադրամների ընդհանուր քանակը պետք է լինի ավելի մեծ կամ հավասար ելքում (OUTPUT) գտնվող բիթքոյնների քանակին»։ Ինչպես երևում է օրինակից, այն նույնպես գործում է. A գործարքում IN՝ 50 BTC-ն հավասար է OUT՝ 50 BTC-ին, իսկ B գործարքում IN՝ 0.8 BTC-ն հավասար է OUT՝ 0.8 BTC-ին։ Այդ դեպքում ինչո՞ւ է կանոնում նշված «ավելի մեծ կամ հավասար»։ Պատասխանը պարզ է. մեր օրինակներում մենք հաշվի չենք առել գործարքի մշակման համար մայներներին վճարվող միջնորդավճարը։ Իրականում INPUT-ը գրեթե միշտ ավելի մեծ է, քան OUTPUT-ը, իսկ դրանց միջև եղած տարբերությունը հենց մայների միջնորդավճարն է։ Այս մասին կխոսենք ստորև։

Գործարքի հիմնական տարրերը
Bitcoin ցանցում գործարքը ներառում է երեք հիմնական տարր.
- Կրիպտոարժույթ ուղարկողի Bitcoin հասցեն (մուտք — INPUT),
- Կրիպտոարժույթ ստացողի Bitcoin հասցեն (ելք — OUTPUT),
- Փոխանցվող բիթքոյնների քանակը։
Կրիպտոարժույթ ուղարկողի Bitcoin հասցեն անհրաժեշտ է որոշելու համար, թե որ աղբյուրից են ստացվում այն միջոցները, որոնք նա որոշել է փոխանցել ցանցի միջոցով։ Իմանալով ուղարկողի Bitcoin հասցեն՝ կարելի է տեսնել, թե քանի բիթքոյն կա նրա դրամապանակում։ Յուրաքանչյուր հասցեի վրա առկա կրիպտոարժույթի և դրա քանակի մասին տեղեկատվությունը հանրամատչելի է։ Միևնույն ժամանակ կրիպտոարժույթի սեփականատիրոջ ինքնությունը մնում է լիովին անանուն։ Կրիպտոարժույթ ստացողի Bitcoin հասցեն ցույց է տալիս, թե ով է ձեռք բերում փոխանցվող միջոցները տնօրինելու իրավունքը։ Այդ օգտատիրոջ անձնական տվյալները նույնպես լիովին անանուն են։
Այժմ եկեք դիտարկենք Bitcoin ցանցի իրական գործարք։

Աջ կողմում ներկայացված են INPUTS (մուտքերը)։
Այստեղ մենք տեսնում ենք ուղարկողի երկու հանրային բանալիների (Bitcoin հասցեների) հասցեները՝ 1PqrBnVWNBG7GP6YKiLEpCF8L4RTW3ksDb և 1Kj13XtgchqvHTGEAjqe6S11W9eSyd6NRr, ինչպես նաև երկու գումար։ Քանի որ միջոցները ուղարկողի հասցեին մուտք են գործել երկու տարբեր աղբյուրներից, դրանք ցուցադրվում են առանձին. 0.5840243 + 0.0002704 = 0.5842947 BTC
Ձախ կողմում ներկայացված են OUTPUTS (ելքերը)։ Այստեղ մենք տեսնում ենք երկու հանրային բանալիների (Bitcoin հասցեների) հասցեները՝ 1CXrf5zSwR1FVvrsMxGsnpYbadRR1yZEAY և 3yu31uHRkreEFiyumP2QSULb1pAvmMrZz։ Դրանցից մեկը ստացողի հասցեն է, իսկ մյուսը՝ ուղարկողի հասցեն, որին վերադարձվում է մնացորդը (change)։ Որն է ստացողի հասցեն, և որը՝ մնացորդի հասցեն, մենք չենք կարող իմանալ, քանի որ դրամապանակը մնացորդի համար ստեղծում է նոր հասցե և գումարը չի վերադարձնում այն նույն հասցեին, որտեղից այն դուրս է եկել։ Թեև որոշ դրամապանակներ թույլ են տալիս փոխել այս կարգավորումը, խորհուրդ չենք տալիս այդպես անել, քանի որ հենց այս մեխանիզմն է ապահովում գործարքների անանունությունը։ Մենք տեսնում ենք գումարները, տեսնում ենք հասցեները, սակայն շատ դժվար է որոշել, թե դրանք ում են պատկանում։
0.0001257 + 0.584 = 0.5841257 BTC
Արդյունքում. INPUTS = 0.5842947 BTC; OUTPUTS = 0.5841257 BTC: Ինչպես տեսնում ենք, մուտքերի գումարը ավելի մեծ է, քան ելքերի գումարը։ Իսկ որտե՞ղ է մնացած գումարը։ Այդ երկու գումարների տարբերությունն էլ հենց կազմում է գործարքի մշակման համար մայներին վճարվող միջնորդավճարը։
0.5842947 − 0.5841257 = 0.000169 BTC (fee)
Ինչպես կատարել գործարք
Պարզեցված տեսքով Bitcoin ցանցում գործարքի իրականացման ալգորիթմը կարելի է ներկայացնել հետևյալ կերպ.
- Օգտատերը, որը ցանկանում է որոշակի քանակությամբ կրիպտոարժույթ փոխանցել որևէ հասցեատիրոջ, իր մասնավոր բանալու միջոցով «ստորագրում» է գործարքը (դրա համար օգտագործվում են մեկանգամյա մասնավոր բանալիներ)։
- Օգտագործելով իր Bitcoin հասցեն (հանրային բանալին)՝ նա ցանց է ուղարկում ձևակերպված հարցումը՝ նշելով ստացողի հասցեն և փոխանցվող գումարի չափը։
- Փոխանցման մասին տեղեկատվությունը որոշ ժամանակ մշակվում է համակարգի հաշվարկային հանգույցների կողմից, որից հետո գործարքի մասին գրառումը ներառվում է բլոկչեյնում, այսինքն՝ հաստատվում է։ Այս փուլում գործարքը համարվում է ավարտված, իսկ կրիպտոարժույթը համարվում է ստացողին պատկանող և անցնում է նրա լիարժեք տնօրինմանը։
Կրիպտոարժութային դրամապանակ մուտքագրված միջոցները տնօրինելու համար ստացողը պետք է օգտագործի իր մասնավոր բանալին։

Այդ ընթացքում Bitcoin ցանցում տեղի են ունենում հետևյալ գործընթացները.
- Օգտատերերից մեկի կողմից ստեղծվում է գործարքը։
- Այդ գործարքի մասին գրառումը տարածվում է ցանցի բոլոր հանգույցների միջև։
- Ստուգվում է գործարքի ճշտությունն ու վավերականությունը։
- Ստեղծվում (մայնինգի միջոցով) է բլոկ, որում գրանցվում է տվյալ գործարքը։
Մինչև այն պահը, երբ գործարքը բլոկչեյնում ներառվի բլոկներից մեկի կազմում, այն չունի իրավական ուժ և համարվում է չհաստատված (unconfirmed)։
Գործարքների դիտում բլոկչեյնում։ Գործարքի Hash-ը
Ամեն օր բլոկչեյնում գրանցվում են կրիպտոարժույթի փոխանցումների հսկայական քանակություն։ Համակարգում կոնկրետ գործարքը գտնելու և դրա մասին ամբողջ անհրաժեշտ տեղեկատվությունը ստանալու համար անհրաժեշտ է իմանալ տվյալ գործարքի Hash-ը։ Tx Hash (Hash)-ը եզակի նույնականացման համար է, որը բաղկացած է տառերի և թվերի երկար համակցությունից։ Այլ կերպ ասած, Hash-ը տվյալ գործարքի նույնացուցիչն է։ Սովորաբար այն ավտոմատ կերպով գեներացվում է համակարգի կողմից այն բանից հետո, երբ օգտատերը կատարում է փոխանցումը։ Որպես կանոն, Hash-ը ցուցադրվում է վճարման մասին տեղեկատվության վերևում գտնվող դաշտում։ Մեր նախորդ օրինակում այն հետևյալն էր. ca731da58729172331db1da51b803094d00c5bc9ef2b8c20f649bc9fa72731ab
Գործարքի Hash-ը կարող է անհրաժեշտ լինել այնպիսի իրավիճակներում, երբ միջոցների փոխանցումը ուշանում է, կրիպտոարժույթը չի հասնում ստացողի դրամապանակին և նմանատիպ այլ դեպքերում։ Պատճառները պարզելու համար օգտատերը պետք է ստուգի իր գործարքի կարգավիճակը հատուկ ծառայությունների՝ բլոկչեյն դիտարկիչների (blockchain explorers) միջոցով։ Դրա համար անհրաժեշտ է մուտք գործել բլոկչեյն դիտարկիչի կայք և հատուկ դաշտում մուտքագրել գործարքի Hash-ը։ Մուտքագրված տվյալների հիման վրա համակարգը արագ կգտնի տվյալ գործարքը և էկրանին կցուցադրի դրա մասին ամբողջ տեղեկատվությունը։

Հաջորդ մասում մենք կքննարկենք՝ ինչպես հետևել (ստուգել) գործարքը, ինչ է հաստատված և չհաստատված գործարքը, ինչն է ազդում գործարքի հաստատման արագության վրա, ինչպես հաշվարկել միջնորդավճարը, ինչ անել, եթե գործարքը երկար ժամանակ չի հաստատվում։