TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

Արդեն երկու շաբաթ է՝ Runet-ը աղմկում է Telegram-ի և Roskomnadzor-ի կողմից դրա անիմաստ ու անխնա արգելափակմամբ ստեղծված իրավիճակի մասին։ Ռիկոշետը վիրավորեց շատերին, բայց այս ամենը թեմաներ են Geektimes-ում գրառումների համար: Ինձ զարմացրեց մեկ այլ բան. ես դեռ չեմ տեսել Habré-ում TON ցանցի ոչ մի վերլուծություն, որը նախատեսված է թողարկել Telegram - Telegram Open Network-ի հիման վրա: Ես ուզում էի լրացնել այս թերությունը, որովհետև այնտեղ ուսումնասիրելու բան կա, նույնիսկ չնայած դրա մասին պաշտոնական հայտարարությունների բացակայությանը:

Հիշեցնեմ, որ լուրեր են պտտվում, որ Telegram-ը շատ լայնածավալ փակ ICO է գործարկել՝ արդեն անհավանական գումարներ հավաքելով։ Ակնկալվում է, որ Gram-ի սեփական կրիպտոարժույթը կգործարկվի այս տարի, և Telegram-ի յուրաքանչյուր օգտատեր ավտոմատ կերպով կունենա դրամապանակ, որն ինքնին զգալի առավելություն է ստեղծում այլ կրիպտոարժույթների նկատմամբ:

Ցավոք սրտի, քանի որ պաշտոնական հայտարարություններ չկան, ես կարող եմ միայն շարունակել անհայտ ծագման փաստաթուղթ, որի մասին անմիջապես զգուշացնում եմ։ Իհարկե, կարող է պարզվել, որ դա շատ հմուտ կեղծիք է, բայց հնարավոր է նաև, որ սա ապագա համակարգի իրական սպիտակ թուղթ է, որը գրել է Նիկոլայ Դուրովը (և արտահոսել է, հավանաբար, ներդրողներից մեկը): Բայց նույնիսկ եթե այն կեղծ է, ոչ ոք մեզ չի արգելի ուսումնասիրել և քննարկել այն, չէ՞:

Ի՞նչ է ասում այս փաստաթուղթը: Կփորձեմ վերապատմել իմ բառերով, տեքստին մոտ, բայց ռուսերեն ու մի քիչ ավելի մարդկայնորեն (թող Նիկոլայը ների ինձ ֆորմալ մաթեմատիկա գնալու հակումով)։ Հիշեք, որ նույնիսկ եթե սա իրական է, սա համակարգի նկարագրության նախագիծն է և, ամենայն հավանականությամբ, կփոխվի հանրային գործարկման պահին:

Մենք սովորում ենք, որ կրիպտոարժույթից բացի, սպասվում է շատ ավելին: Վերցնենք կարգով։

  • TON Blockchain. Սա ամբողջ համակարգի հիմքն է։ Եթե ​​չգիտեք, թե դա ինչ է բլոկ — Խորհուրդ եմ տալիս պարզել, քանի որ այստեղ շատ բլոկչեյններ կլինեն։ Բնադրված միմյանց մեջ, գործնականում մասնատված և նույնիսկ «ուղղահայաց» բլոկչեյններ այլ բլոկչեյնների բլոկների մեջ: Կլինեն նաև որոշ զովացուցիչ տերմիններ, ինչպիսիք են Ակնթարթային Hypercube Routing и Անսահման Sharding պարադիգմ, բայց դրա մասին ավելի ուշ: Եվ, իհարկե, ցցերի ապացույց և խելացի պայմանագրեր:
  • TON P2P ցանց. Peer-to-peer ցանց, որի հիման վրա կկառուցվի համակարգը: Նա առաջինը կքննարկվի պատմության այս հատվածում:
  • TON Պահպանում. Ֆայլերի պահեստավորում, որը, անկախ բլոկչեյնից, կկառուցվի վերոնշյալ «peer-to-peer» ցանցի վրա։ Կարելի է համեմատել հեղեղների հետ։
  • TON վստահված անձ. Սա ծառայություն է, որի նպատակն է բարձրացնել ցանցի մասնակիցների անանունությունը: Ցանկացած փաթեթ կարող է ուղարկվել ոչ թե ուղղակիորեն, այլ հավելյալ կոդավորումով միջնորդ թունելների միջոցով, ինչպիսիք են I2P-ը կամ TOR-ը:
  • TON DHT. Բաշխված հեշ աղյուսակ կամայական արժեքներ պահելու համար: Այն նաև կառուցված է վերևում TON ցանց (բայց միևնույն ժամանակ այն օգտագործվում է նրա կողմից) և օգնում է TON Պահպանում գտնել «բաշխող» հանգույցներ, և TON վստահված անձ - միջանկյալ կրկնողներ: Բայց պետք է նշել, որ, ի տարբերություն բլոկչեյնի, այս հեշ աղյուսակը անվտանգ պահոց չէ, կարևոր տեղեկատվությունը չի կարող պահվել դրանում։
  • TON Ծառայություններ. Հարթակ մաքսային ծառայությունների համար: Ըստ էության, սա նոր ինտերնետ է՝ վերևում նկարագրված ամեն ինչի վրա: Տվյալների փոխանակում - միջոցով TON ցանց/TON վստահված անձ, և տրամաբանությունը խելացի պայմանագրերի մեջ է TON Blockchain. Եվ բավականին ծանոթ URL-ներով ինտերֆեյս:
  • TON DNS. Քանի որ մենք խոսում ենք ծանոթ URL-ների մասին, մեզ անհրաժեշտ է նաև փոխարկիչ դրանցից 256-բիթանոց հասցեների՝ հաշիվների, պայմանագրերի, ծառայությունների և հանգույցների:
  • TON վճարումներ. Եվ հենց այստեղ է դրվում փողի խնդիրը: Եվ դա ոչ միայն կլինի գրամ - ինչպես եթերի դեպքում, ցանկացած «նշան» հնարավոր կլինի. Գրամն այստեղ կլինի պարզապես «լռելյայն» արժույթը:

Սա առաջին մասն է, որը նկարագրում է TON-ի «հիմնավորված» շերտը՝ նրա ցանցային մասը՝ կառուցված ավանդական արձանագրությունների վրա: Հաջորդ մասում կխոսենք «փափուկ»՝ բլոկչեյնի մասին, որին կաջակցի ստորև նկարագրված համակարգը։ Այսպիսով, իմ վերապատմման կարգը որոշ չափով տարբերվում է վերը նշված փաստաթղթում օգտագործվածից (որը սկսվում է անմիջապես վերացական մակարդակից):

Հիմնական հասկացություններ

TL (Տիպի լեզու): Դա կամայական տվյալների կառուցվածքների վերացական երկուական ձևաչափ է: Այն օգտագործվում է Telegram արձանագրությունում և ակտիվորեն կօգտագործվի TON-ում։ Եթե ​​ցանկանում եք մանրամասն ծանոթանալ դրան. ահա նրա նկարագրությունը.

Հաշ (մանրել) Գործառույթ, որն իրականացնում է կամայական տվյալների կառուցվածքի անշրջելի փոխակերպումը ֆիքսված երկարությամբ մեկ թվի: Փաստաթղթերի ամբողջ ընթացքում մենք խոսում ենք գործառույթի մասին ՊԱԳ - 256.

Ցանցային հանգույց (հանգույց) Հանգույցը այն ծրագրաշարն է, որը կապահովի համակարգի աշխատանքը: Մասնավորապես, ենթադրվում է, որ Telegram-ի յուրաքանչյուր հաճախորդի հավելված կներառի TON հանգույց։ Ցածր մակարդակում հանգույցներն ունեն IPv4/IPv6 հասցեներ և հաղորդակցվում են UDP արձանագրության միջոցով, իսկ ավելի բարձր մակարդակում՝ վերացական հասցեներ և իրականացնել ADNL արձանագրությունը (վերացական հասցեների և ADNL-ի մասին - տես ստորև): Երբ խոսքը վերաբերում է այն փաստին, որ համակարգի որոշ մասեր ինչ-որ բան են անում կամ պահում են որոշ տվյալներ, հասկանալի է, որ դա արվում է ցանցային հանգույցների միջոցով:

Աբստրակտ հասցե (կամ պարզապես հասցեով, հասցե) Հանգույցի հասցեն որոշվում է նրա հանրային բանալիով: Ավելի խիստ՝ դա հանրային բանալին պարունակող տվյալների կառուցվածքի 256-բիթանոց հեշ է (SHA256) (հատուկ գաղտնագրման ալգորիթմը նշված չէ. էլիպսային կորերը և RSA-2048-ը տրված են որպես օրինակ): Որպեսզի մի հանգույցը շփվի մյուսի հետ, այն պետք է իմանա ոչ միայն այդ մեկի հասցեն, այլև տվյալների այս կառուցվածքը: Տեսականորեն մեկ ֆիզիկական հանգույցը կարող է ստեղծել ցանկացած թվով հասցեներ (տարբեր բանալիների համապատասխան):

Ավելին, հաճախ օգտագործվում է հենց այդպիսի հղում. «նախատիպ» TL կառուցվածքի տեսքով (գրեթե ցանկացած տվյալ պարունակող) և դրանից 256-բիթանոց հեշ, որն օգտագործվում է հասցեավորման համար:

Բլոկ (blockchain) Բլոկչեյնը տվյալների կառուցվածք է, տարրեր (բլոկներ) որոնք դասավորված են «շղթայի» մեջ, և շղթայի յուրաքանչյուր հաջորդ բլոկ պարունակում է նախորդի հեշը: Այսպիսով, ամբողջականությունը ձեռք է բերվում. փոփոխությունները կարող են կատարվել միայն նոր բլոկներ ավելացնելով:

Ծառայություն (ծառայություն) TON-ի շրջանակներում ծառայությունները կարող են լինել տարբեր տեսակի՝ կախված նրանից, թե նրանք օգտագործում են բլոկչեյն, թե ոչ: Օրինակ, մեկ (կամ շատ) ցանցային հանգույցներ կարող են մշակել որոշակի RPC հարցումներ՝ օգտագործելով ստորև նկարագրված ADNL արձանագրությունը՝ առանց բլոկչեյնում որևէ գրառում ստեղծելու, ինչպես ավանդական վեբ սերվերները: Ներառյալ ADNL-ի միջոցով HTTP-ի ներդրման հնարավորությունը, ինչպես նաև հենց մեսենջերի անցումը այս արձանագրությանը: TOR-ի կամ I2P-ի անալոգիայով սա այն ավելի դիմացկուն կդարձնի տարբեր արգելափակումների նկատմամբ:

Միևնույն ժամանակ, մի շարք ծառայություններ ներառում են ինչպես բլոկչեյնի հետ փոխազդեցություն, այնպես էլ դրանից դուրս հարցումների մշակում: Օրինակ, TON Storage-ի համար՝ ֆայլերի պահեստավորում, այնքան էլ խելամիտ չէ ֆայլերն իրենք պահել բլոկչեյնում: Այն կպարունակի միայն ֆայլերի հեշեր (դրանց մասին որոշ մետա տեղեկատվության հետ միասին), և մասնագիտացված ցանցային հանգույցները կգործեն որպես «ֆայլի սերվերներ», որոնք պատրաստ են դրանք ուղարկել այլ հանգույցներ ADNL-ի միջոցով:

Մառախուղի ծառայություն (մառախուղի ծառայություն) Խոսքը որոշ ծառայությունների մասին է, որոնք ենթադրում են ապակենտրոնացում և բացահայտ մասնակցություն դրանց։ Օրինակ, TON Proxy-ն ծառայություն է, որը կարող է աջակցել ցանկացած մասնակցի, ով ցանկանում է տրամադրել իր հանգույցը որպես միջնորդ (վստահված անձի) փաթեթներ փոխանցող այլ հանգույցների միջև: Ցանկության դեպքում նա կարող է դրա համար գանձել իր կողմից սահմանված վճարը՝ միկրովճարումների համար օգտագործելով TON Payments համակարգը (որն իր հերթին նաև մառախուղի ծառայություն է):

ADNL. Abstract Datagram Network Layer

Ամենացածր մակարդակում հանգույցների միջև հաղորդակցությունը կիրականացվի UDP արձանագրության միջոցով (չնայած այլ տարբերակներ ընդունելի են):

Ինչպես նշվեց վերևում, որպեսզի մի հանգույցը փաթեթ ուղարկի մյուսին, այն պետք է իմանա իր հանրային բանալիներից մեկը (և հետևաբար նրա սահմանած հասցեն): Այն գաղտնագրում է փաթեթը այս բանալիով և ավելացնում է 256-բիթանոց նպատակակետ հասցեն փաթեթի սկզբում. քանի որ մեկ հանգույցը կարող է ունենալ այս հասցեներից մի քանիսը, դա թույլ կտա նրան որոշել, թե որ բանալին օգտագործել գաղտնազերծման համար:

TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

Բացի այդ, ստացողի հասցեի փոխարեն տվյալների փաթեթի սկիզբը կարող է պարունակել այսպես կոչված. նույնացուցիչ ալիքը. Այս դեպքում փաթեթի մշակումն արդեն կախված է հանգույցների միջև որոշակի պայմանավորվածություններից. օրինակ՝ որոշակի ալիք ուղարկված տվյալները կարող են նախատեսված լինել մեկ այլ հանգույցի համար և պետք է փոխանցվեն դրան (սա ծառայությունն է TON վստահված անձ) Մեկ այլ հատուկ դեպք կարող է լինել ուղղակիորեն հանգույցների միջև փոխազդեցությունը, բայց այս ալիքի համար առանձին բանալիների զույգի օգտագործմամբ կոդավորումը (նախապես ստեղծվել է Diffie-Hellman արձանագրության միջոցով):

Վերջապես, հատուկ դեպք է «զրոյական» ալիքը. եթե հանգույցը դեռ չգիտի իր «հարևանների» հանրային բանալիները, այն կարող է նրանց ուղարկել փաթեթներ ընդհանրապես առանց կոդավորման: Սա նախատեսված է միայն սկզբնավորման համար. այն բանից հետո, երբ հանգույցները ուղարկեն տեղեկատվություն իրենց բանալիների մասին, դրանք պետք է օգտագործվեն հետագա հաղորդակցության համար:

Վերևում նկարագրված արձանագրությունը (256 բիթ կապուղու նույնացուցիչ + փաթեթի պարունակություն) կոչվում է ADNL: Փաստաթղթում նշվում է TCP-ի անալոգը դրա վերևում կամ իր սեփական հավելումը - RLDP (Reliable Large Datagram Protocol) ներդնելու հնարավորությունը, բայց չի մանրամասնում դրանց իրականացման մասին:

TON DHT. Բաշխված հեշ աղյուսակ

Ինչպես մյուս բաշխված համակարգերի դեպքում, TON-ը ներառում է DHT-ի իրականացում. բաշխված հեշ աղյուսակ. Ավելի կոնկրետ՝ աղյուսակն է Կադեմլիանման. Եթե ​​դուք ծանոթ չեք այս տեսակի հեշ աղյուսակին, մի անհանգստացեք, ստորև ես մոտավորապես նկարագրելու եմ, թե ինչպես են դրանք աշխատում:

TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

Վերացական իմաստով, DHT-ն քարտեզագրում է 256-բիթանոց ստեղները կամայական երկարության երկուական արժեքներին: Այս դեպքում աղյուսակի ստեղները որոշակի TL կառուցվածքի հեշեր են (կառույցներն իրենք նույնպես պահվում են DHT-ի հետ միասին): Սա շատ նման է հանգույցների հասցեների ձևավորմանը, և դրանք իսկապես կարող են առկա լինել DHT-ում (օրինակ՝ օգտագործելով նման բանալի՝ տվյալին համապատասխանող հանգույցի IP հասցեն վերացական հասցե, եթե նա չի թաքցնում դա): Բայց ընդհանուր դեպքում «բանալիների նախատիպերը» (դրանց նկարագրություններ, հիմնական նկարագրությունները) մետատվյալ է, որը ցույց է տալիս հեշ աղյուսակի մուտքի «սեփականատերը» (այսինքն՝ որոշ հանգույցի հանրային բանալին), պահվող արժեքի տեսակը և այն կանոնները, որոնցով այս գրառումը կարող է հետագայում փոփոխվել։ Օրինակ՝ կանոնը կարող է թույլ տալ միայն սեփականատիրոջը փոխել արժեքը կամ արգելել արժեքը դեպի ներքև փոխել (կրկնվող հարձակումներից պաշտպանվելու համար):

Բացի 256-բիթանոց ստեղներից, ներդրվում է DHT հասցեների հայեցակարգը: Սովորական հյուրընկալող հասցեների տարբերությունն այն է, որ DHT հասցեն անպայմանորեն կապված է IP հասցեի հետ: Եթե ​​հանգույցը չի թաքցնում իր IP-ն, այն կարող է օգտագործել սովորական հասցե DHT-ի համար: Բայց ավելի հաճախ, DHT կարիքների համար կստեղծվի առանձին, «կիսամյակային» հասցե:
TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր
Հեռավորության հայեցակարգը ներկայացվում է ստեղների և DHT հասցեների վերևում. դրանում ամեն ինչ համընկնում է աղյուսակների հետ կադեմլիա — բանալիների միջև հեռավորությունը հավասար է դրանց XOR-ին (բիթային բացառիկ OR): Ինչպես Kademlia աղյուսակներում, որոշակի բանալիին համապատասխան արժեքը պետք է պահվի s հանգույցներ, որոնք ունեն ամենակարճ հեռավորությունը այս բանալին (s ահա համեմատաբար փոքր թիվ):

Որպեսզի DHT հանգույցը հաղորդակցվի նման այլ հանգույցների հետ, այն պահվում է հիշողության մեջ DHT երթուղային աղյուսակ — հանգույցների DHT և IP հասցեները, որոնց հետ այն նախկինում համագործակցում էր՝ խմբավորված ըստ նրանց հեռավորության: Կան 256 այդպիսի խմբեր (դրանք համապատասխանում են հեռավորության արժեքի ամենակարևոր բիթին, այսինքն՝ 0-ից 255 հեռավորության վրա գտնվող հանգույցները կընկնեն մի խմբի մեջ, 256-ից մինչև 65535-ը՝ հաջորդը և այլն)։ Յուրաքանչյուր խմբի ներսում պահվում են սահմանափակ թվով «լավագույն» հանգույցներ (դրանց ping-ի առումով):

TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

Յուրաքանչյուր հանգույց պետք է աջակցի մի քանի գործողությունների. բանալիի արժեքի պահպանում, հանգույցի որոնում и արժեքների որոնում. Հանգույցների որոնումը ներառում է տվյալ բանալիի հիման վրա երթուղային աղյուսակից իրեն ամենամոտ գտնվող հանգույցների թողարկումը. Արժեքների որոնումը նույնն է, բացառությամբ այն դեպքերի, երբ հանգույցը գիտի բանալու արժեքը (այնուհետև այն պարզապես վերադարձնում է): Համապատասխանաբար, եթե հանգույցը ցանկանում է DHT-ում ըստ բանալիի արժեք գտնել, նա հարցումներ է ուղարկում իր երթուղային աղյուսակից այս բանալիին ամենամոտ գտնվող փոքր թվով հանգույցներին: Եթե ​​պահանջվող արժեքը չկա նրանց պատասխանների մեջ, բայց կան այլ հանգույցների հասցեներ, ապա հարցումը կրկնվում է նրանց:

TON DHT-ը կարող է օգտագործվել տարբեր նպատակներով, օրինակ՝ հեղեղի նման ֆայլերի պահեստավորում իրականացնելու համար (տես. TON Պահպանում); որոշել հանգույցների հասցեները, որոնք իրականացնում են որոշակի ծառայություններ. բլոկչեյնում հաշիվների սեփականատերերի մասին տեղեկությունները պահելու համար: Բայց ամենակարևոր կիրառումը հանգույցների հայտնաբերումն է իրենց վերացական հասցեներով։ Դա անելու համար հասցեն օգտագործվում է որպես բանալի, որի արժեքը պետք է գտնել: Հարցման արդյունքում կամ ինքնին հանգույցը կգտնվի (եթե որոնված հասցեն եղել է նրա կիսամյակային DHT հասցեն), կամ արժեքը կլինի IP հասցեն և կապի պորտը, կամ մեկ այլ հասցե, որը պետք է օգտագործվի որպես միջնորդ թունել.

Ծածկված ցանցեր TON-ում

Վերևում նկարագրված ADNL արձանագրությունը ենթադրում է ցանկացած հանգույցների համար միմյանց հետ տեղեկատվություն փոխանակելու ունակություն, թեև պարտադիր չէ, որ օպտիմալ ձևերով: Կարելի է ասել, որ ADNL-ի շնորհիվ բոլոր հանգույցները կազմում են գլոբալ TON գրաֆիկ (իդեալականորեն կապված): Բայց հավելյալ հնարավոր է այս գրաֆիկի ներսում ստեղծել կափարիչ ցանցեր՝ ենթագրաֆներ:
TON: Telegram բաց ցանց: Մաս 1. Ներածություն, ցանցային շերտ, ADNL, DHT, ծածկույթի ցանցեր

Նման ցանցի ներսում փոխազդեցությունն իրականացվում է միայն ուղղակիորեն՝ ցանցին մասնակցող հանգույցների միջև նախապես ձևավորված կապերի միջոցով (վերը նկարագրված ADNL ալիքների միջոցով): Հարևանների միջև նման կապերի ձևավորումը, հարևանների որոնումը ավտոմատ գործընթաց է, որը ձգտում է պահպանել ծածկույթի ցանցի կապը և նվազագույնի հասցնել դրանում տվյալների փոխանակման հետաձգումները:

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

Overlay ցանցերը կարող են լինել հանրային կամ մասնավոր: Հանրային ցանցի անդամ դառնալը դժվար չէ. դուք պետք է գտնեք TL կառուցվածք, որը նկարագրում է այն (այն կարող է լինել հանրային կամ հասանելի DHT-ում որոշակի բանալիով): Մասնավոր ցանցի դեպքում այս կառուցվածքը պետք է նախապես հայտնի լինի հանգույցին։

Շարունակելի

Ես որոշեցի TON-ի վերանայումը բաժանել մի քանի հոդվածների: Ահա թե որտեղ է ավարտվում այս մասը, և հաջորդում Ես շարունակում եմ դիտարկել բլոկչեյնի (ավելի ճիշտ՝ բլոկչեյնների) կառուցվածքը, որից բաղկացած կլինի TON-ը։

Source: www.habr.com

Добавить комментарий