Ի՞նչ է Մերկլի ծառը: Սկսնակների ուղեցույց այս Blockchain բաղադրիչի համար

Merkle Trees-ը բլոկչեյնների հիմնարար բաղադրիչն է, որը հիմնում է դրանց ֆունկցիոնալությունը: Դրանք թույլ են տալիս արդյունավետ և անվտանգ ստուգել տվյալների մեծ կառուցվածքները, իսկ բլոկչեյնների դեպքում՝ պոտենցիալ անսահման տվյալների հավաքածուները:

Մերկլի ծառերի ներդրումը բլոկչեյններում ունի բազմաթիվ ազդեցություններ: Այն թույլ է տալիս նրանց մասշտաբավորվել՝ միաժամանակ ապահովելով հեշի վրա հիմնված ճարտարապետություն՝ պահպանելու տվյալների ամբողջականությունը և տվյալների ամբողջականությունը ստուգելու աննշան միջոց:

Կրիպտոգրաֆիկ հեշ ֆունկցիաները հիմքում ընկած տեխնոլոգիան են, որը թույլ է տալիս աշխատել Merkle-ի ծառերին, ուստի նախ կարևոր է հասկանալ, թե որոնք են կրիպտոգրաֆիկ հեշ ֆունկցիաները:

Արագ դատավճիռ. Մերկլի ծառերը տվյալների կառուցվածքներ են, որոնք կազմված են ծածկագրային հեշերից, որոնք թույլ են տալիս արդյունավետ ամբողջականության ստուգում և տվյալների մեծ հավաքածուների քարտեզագրում՝ դրանք դարձնելով այնպիսի համակարգերի անբաժանելի բաղադրիչ, ինչպիսիք են բլոկչեյնները և բաշխված տարբերակների վերահսկումը:


Արագ Փաստեր

Հիմնական միավորներՆկարագրություն
Կրիպտոգրաֆիկ հեշ գործառույթներՀեշ ֆունկցիաներ, որոնք ընդունում են ցանկացած չափի մուտք և թողարկում ֆիքսված երկարության հեշ արժեք: Օգտագործվում է Մերկլի ծառերի մեջ:
merkle ծառի կառուցվածքըԾառի տվյալների կառուցվածքը, որտեղ յուրաքանչյուր ոչ տերևային հանգույց իր զավակ հանգույցների հեշն է: Թույլ է տալիս արդյունավետ քարտեզագրել և ստուգել տվյալների մեծ հավաքածուները:
Root hashՀեշ Մերկլի ծառի վերևում, որը ներկայացնում է ամբողջ ծառի հեշը: Գործում է որպես մատնահետք տվյալների ամբողջական հավաքածուի համար:
Մերկլի ապացույցներըԹույլատրել ծառի մեջ տվյալների ամբողջականության և դիրքի ստուգումը՝ առանց տվյալների ամբողջական հավաքածուի, միայն արմատային հեշի:
Իրականացում Bitcoin-ումMerkle ծառերը պահում են գործարքները բլոկներով: Բլոկի վերնագրում պահվող արմատային հեշը թույլ է տալիս SPV հանգույցներին ստուգել գործարքները:
Բլոկչեյնի այլ իրականացումներՕգտագործվում է բազմաթիվ բլոկչեյններում, ինչպիսիք են Ethereum-ը, որն օգտագործում է ավելի բարդ Merkle Patricia Trees-ը:
Բաշխված համակարգերԹույլ տվեք տարբերակների կառավարման համակարգերին, ինչպիսիք են Git-ը և IPFS-ը, հեշտությամբ ստուգել հասակակիցների միջև համօգտագործվող տվյալները:

Կրիպտոգրաֆիկ հեշի գործառույթներ

Պարզ ասած, հեշ ֆունկցիան ցանկացած ֆունկցիա է, որն օգտագործվում է կամայական չափի (մուտքագրման) տվյալները ֆիքսված չափի ելքի քարտեզագրելու համար: Հեշինգի ալգորիթմը կիրառվում է տվյալների մուտքագրման վրա, և արդյունքում ֆիքսված երկարությամբ ելքը կոչվում է հեշ:

Հեշինգի շատ ալգորիթմներ լայնորեն հասանելի են հանրությանը և կարող են ընտրվել՝ ելնելով ձեր կարիքներից:

Կամայական մուտքագրումից ստացվող հեշը ոչ միայն ամրագրված է երկարությամբ, այն նաև ամբողջովին եզակի է մուտքագրման համար, և ֆունկցիան ինքնին որոշիչ է: Այսինքն, անկախ նրանից, թե քանի անգամ գործարկեք գործառույթը նույն մուտքի վրա, ելքը միշտ նույնը կլինի:

Օրինակ, եթե դուք ունեք հետևյալ տվյալների հավաքածուները ստորև որպես մուտքագրում, ապա ստացված ելքերը եզակի են յուրաքանչյուր մուտքագրման համար: Ուշադրություն դարձրեք, թե ինչպես երկրորդ և երրորդ օրինակներում, չնայած մուտքերի տարբերությունը միայն մեկ բառ է, ստացված ելքերը բոլորովին տարբեր են:

Սա շատ կարևոր է, քանի որ թույլ է տալիս տվյալների «մատնահետք վերցնել»:

Կրիպտոգրաֆիկ հեշ ֆունկցիա, պատկեր Վիքիպեդիայից

Քանի որ ելքի (օրինակի հեշի գումարը) երկարությունը միշտ նույնն է, ինչ որոշվում է օգտագործված հեշինգի ալգորիթմով, հսկայական քանակությամբ տվյալներ կարող են նույնականացվել բացառապես դրանց արդյունքում ստացված հեշի միջոցով:

Հսկայական քանակությամբ տվյալներ պարունակող համակարգերի դեպքում ֆիքսված երկարությամբ տվյալների պահպանման և նույնականացման օգուտները կարող են ստեղծել պահեստավորման հսկայական խնայողություններ և օգնել բարձրացնել արդյունավետությունը:

Բլոկչեյններում հեշավորման ալգորիթմներն օգտագործվում են բլոկչեյնի վիճակը որոշելու համար:

Բլոկչեյնները կապակցված ցուցակներ են, որոնք պարունակում են տվյալներ և հեշ ցուցիչ, որը մատնանշում է նախորդ բլոկը՝ ստեղծելով միացված բլոկների շղթա, որտեղից էլ կոչվում է «բլոկչեյն»:

Յուրաքանչյուր բլոկ միացված է միմյանց հետ հեշ ցուցիչի միջոցով, որը նախորդ բլոկի ներսում եղած տվյալների հեշն է՝ նախորդ բլոկի հասցեի հետ միասին։ Այս ձևաչափով տվյալների բլոկները կապելով՝ նախորդ բլոկի յուրաքանչյուր արդյունքում ստացված հեշը ներկայացնում է բլոկչեյնի ամբողջ վիճակը, քանի որ նախորդ բլոկների բոլոր հեշացված տվյալները հեշված են մեկ հեշի մեջ:

Սա ներկայացված է (SHA-256 ալգորիթմի դեպքում) ելքով (հեշ), ինչպիսին է սա.

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Վերևի հեշը իրենից առաջ բլոկչեյնի ամբողջ վիճակի մատնահետքն է: Նոր բլոկից առաջ բլոկչեյնի վիճակը (որպես հաշված տվյալներ) մուտքն է, իսկ արդյունքում հեշը ելքն է:

Թեև հնարավոր է գաղտնագրային հեշեր օգտագործել առանց Merkle ծառերի, այն չափազանց անարդյունավետ է և ոչ մասշտաբային: Հեշերի օգտագործումը բլոկում տվյալները սերիական ձևաչափով պահելու համար ժամանակատար և ծանրաբեռնված է:

Ինչպես կտեսնեք, Merkle ծառերը թույլ են տալիս տվյալների ամբողջականության աննշան լուծում, ինչպես նաև այդ տվյալների քարտեզագրում ամբողջ ծառի միջոցով՝ օգտագործելով Merkle-ի ապացույցները:


Merkle Trees և Merkle Proofs

Ռալֆ Մերքլի անունով, ով արտոնագրել է հայեցակարգը 1979 թվականին, Մերկլի ծառերը հիմնականում տվյալների կառուցվածքի ծառեր են, որտեղ յուրաքանչյուր ոչ տերևային հանգույց իր համապատասխան մանկական հանգույցների հեշն է:

Տերեւային հանգույցները ծառի հանգույցների ամենացածր շերտն են: Սկզբում կարող է դժվար ընկալելի թվալ, բայց եթե նայեք ստորև սովորաբար օգտագործվող նկարին, այն շատ ավելի հեշտ կլինի հասկանալ:

Հաշ ծառ

Երկուական հեշ ծառի օրինակ՝ Պատկերը՝ Վիքիպեդիայից

Կարևոր է, ուշադրություն դարձրեք, թե ինչպես են ձախ կողմում գտնվող ոչ տերևավոր հանգույցները կամ «ճյուղերը» (ներկայացված են Հաշ 0-0 և Հաշ 0-1) իրենց համապատասխան երեխաների՝ L1 և L2-ի հեշեր: Այնուհետև, նկատեք, թե ինչպես է Hash 0 ճյուղը իր միացված երեխաների հեշը, որը ճյուղավորում է Hash 0-0 և Hash 0-1:

Վերևի օրինակը Մերկլի ծառի ամենատարածված և պարզ ձևն է, որը հայտնի է որպես Երկուական Մերկլի ծառ: Ինչպես տեսնում եք, կա վերին հեշ, որը ամբողջ ծառի հեշն է, որը հայտնի է որպես արմատային հեշ: Ըստ էության, Merkle ծառերը տվյալների կառուցվածք են, որոնք կարող են վերցնել «n» թվով հեշեր և ներկայացնել այն մեկ հեշով:

Ծառի կառուցվածքը թույլ է տալիս կամայականորեն մեծ քանակությամբ տվյալների արդյունավետ քարտեզագրում և հնարավորություն է տալիս հեշտ նույնականացնել, թե որտեղ են տեղի ունենում այդ տվյալների փոփոխությունները: Այս հայեցակարգը հնարավորություն է տալիս Merkle-ի ապացույցներին, որոնցով ինչ-որ մեկը կարող է ստուգել, ​​որ տվյալների հաշինգը համահունչ է մինչև ծառը և ճիշտ դիրքում է՝ առանց իրականում նայելու հեշերի ամբողջ հավաքածուն:

Փոխարենը, նրանք կարող են ստուգել, ​​որ տվյալների հատվածը համապատասխանում է արմատային հեշին, ստուգելով միայն հեշերի փոքր ենթաբազմությունը, այլ ոչ թե ամբողջ տվյալների հավաքածուն:

Քանի դեռ արմատային հեշը հանրությանը հայտնի և վստահելի է, յուրաքանչյուր ոք, ով ցանկանում է տվյալների բազայում բանալի արժեքների որոնում կատարել, կարող է օգտագործել Merkle-ի ապացույցը՝ ստուգելու տվյալների մի հատվածի դիրքն ու ամբողջականությունը տվյալների բազայում, որն ունի որոշակի արմատ.

Երբ արմատային հեշը հասանելի է, հեշ ծառը կարող է ստացվել ցանկացած ոչ վստահելի աղբյուրից, և ծառի մեկ ճյուղը կարող է ներբեռնվել միաժամանակ՝ տվյալների ամբողջականության անհապաղ ստուգմամբ, նույնիսկ եթե ամբողջ ծառը դեռ հասանելի չէ:

Մերկլի ծառի կառուցվածքի ամենակարևոր առավելություններից մեկը տվյալների կամայական մեծ հավաքածուների նույնականացման հնարավորությունն է նմանատիպ հեշավորման մեխանիզմի միջոցով, որն օգտագործվում է շատ ավելի փոքր քանակությամբ տվյալների ստուգման համար:

Ծառը ձեռնտու է տվյալների մեծ հավաքածուներ կառավարելի փոքր մասերում բաշխելու համար, որտեղ ամբողջականության ստուգման խոչընդոտը զգալիորեն կրճատվում է, չնայած ընդհանուր տվյալների մեծ չափին:

Root hash-ը կարող է օգտագործվել որպես մատնահետք ամբողջ տվյալների հավաքածուի համար, ներառյալ ամբողջ տվյալների բազան կամ ներկայացնելով բլոկչեյնի ամբողջ վիճակը: Հաջորդ բաժիններում մենք կքննարկենք, թե ինչպես են Bitcoin-ը և այլ համակարգերը իրականացնում Merkle ծառերը:


Մերկլի ծառերը Bitcoin-ում

Բիթքոյնի կողմից օգտագործվող գաղտնագրային հեշ ֆունկցիան SHA-256 ալգորիթմն է: Սա նշանակում է «Secure Hashing Algorithm», որի ելքը ֆիքսված է 256 բիթ երկարությամբ: Բիթքոյնում Merkle-ի ծառերի հիմնական գործառույթը յուրաքանչյուր բլոկում գործարքներ պահելն ու ի վերջո կտրելն է:

Ինչպես արդեն նշվեց, բլոկչեյնում բլոկները միացված են նախորդ բլոկի հեշերի միջոցով: Bitcoin-ում յուրաքանչյուր բլոկ պարունակում է այդ բլոկի ներսում կատարվող բոլոր գործարքները, ինչպես նաև բլոկի վերնագիրը, որը բաղկացած է.

  • Արգելափակել տարբերակի համարը
  • Նախորդ Արգելափակման հեշը
  • Timestamp
  • Հանքարդյունաբերության դժվարության թիրախ
  • Ոչ էլ
  • Merkle Root Hash

Ստորև բերված պատկերը բիթքոյնի սպիտակ թղթից է և ցույց է տալիս, թե ինչպես է Մերկլի ծառը տեղավորվում յուրաքանչյուր բլոկի մեջ:

Մերկլի ծառ

Գործարքները ներառվում են բլոկների մեջ հանքագործների կողմից և հաշվում են որպես Merkle ծառի մաս՝ տանելով դեպի Merkle արմատը, որը պահվում է բլոկի վերնագրում: Այս դիզայնը ունի մի շարք հստակ առավելություններ.

Հատկանշական է, որ, ինչպես նշված է սպիտակ գրքում, սա թույլ է տալիս գոյություն ունենալ Պարզ վճարման ստուգման (SPV) հանգույցներ, որոնք նաև հայտնի են որպես «թեթև հաճախորդներ»: Այս հանգույցները պարտադիր չէ, որ ներբեռնեն ամբողջ Bitcoin բլոկչեյնը, միայն ամենաերկար շղթայի բլոկների վերնագրերը:

SPV հանգույցները կարող են հասնել դրան՝ հարցումներ կատարելով իրենց հասակակից հանգույցների վրա, մինչև նրանք համոզվեն, որ պահված բլոկի վերնագրերը, որոնց վրա նրանք աշխատում են, ամենաերկար շղթայի մի մասն են: SPV հանգույցն ի վիճակի է այնուհետև որոշել գործարքի կարգավիճակը՝ օգտագործելով Merkle ապացույցը՝ գործարքը քարտեզագրելու կոնկրետ Merkle ծառի վրա՝ համապատասխան Merkle ծառի արմատային հեշով բլոկի վերնագրում, որն ամենաերկար շղթայի մաս է կազմում:

Բացի այդ, Bitcoin-ի կողմից Merkle ծառերի ներդրումը թույլ է տալիս էտել բլոկչեյնը՝ տարածք խնայելու համար: Սա արդյունք է այն բանի, որ միայն արմատային հեշը պահվում է բլոկի վերնագրում, հետևաբար, հին բլոկները կարելի է էտել՝ հեռացնելով Merkle ծառի ավելորդ ճյուղերը՝ պահպանելով միայն Merkle-ի ապացույցի համար անհրաժեշտ ճյուղերը:


Merkle Trees-ի ներդրումը այլ բլոկչեյններում և համակարգերում

Չնայած Բիթքոյնն առաջին բլոկչեյնն էր, որը ներդրեց Merkle ծառերը, շատ այլ բլոկչեյններ իրականացնում են նմանատիպ Merkle ծառի կառուցվածքներ կամ նույնիսկ ավելի բարդ տարբերակներ:

Ավելին, Merkle ծառի ներդրումը ոչ միայն սահմանափակվում է բլոկչեյններով և կիրառվում է մի շարք այլ համակարգերի վրա:

Ethereum-ը, լինելով մյուս ամենաճանաչելի կրիպտոարժույթը, նաև Merkle ծառի այլ ներդրման հիանալի օրինակ է: Քանի որ Ethereum-ը ամբողջական է որպես շատ ավելի բարդ հավելվածներ ստեղծելու հարթակ, այն օգտագործում է Merkle ծառի ավելի բարդ տարբերակը, որը կոչվում է Merkle Patricia Tree, որն իրականում 3 առանձին Merkle ծառեր է, որոնք օգտագործվում են երեք տեսակի օբյեկտների համար: Դուք կարող եք ավելին իմանալ այս ծառերի մասին այստեղ:

Վերջապես, Merkle ծառերը բաշխված տարբերակների կառավարման համակարգերի կարևոր բաղադրիչն են, ինչպիսիք են Git-ը և IPFS-ը: P2P ձևաչափով համակարգիչների միջև համօգտագործվող տվյալների ամբողջականությունը հեշտությամբ ապահովելու և ստուգելու նրանց կարողությունը դրանք անգնահատելի է դարձնում այս համակարգերի համար:


Եզրափակում

Մերկլի ծառերը բլոկչեյնների անբաժանելի բաղադրիչն են և արդյունավետորեն թույլ են տալիս նրանց գործել ապացուցելի անփոփոխությամբ և գործարքների ամբողջականությամբ:

Հասկանալը, թե ինչ դեր են նրանք խաղում բաշխված ցանցերում և դրանց հիմքում ընկած գաղտնագրման հեշ գործառույթների տեխնոլոգիան, կարևոր է կրիպտոարժույթների հիմնական հասկացությունները հասկանալու համար, քանի որ դրանք շարունակում են զարգանալ ավելի մեծ և բարդ համակարգերի:

Աղբյուր՝ https://blockonomi.com/merkle-tree/