TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

Эки жумадан бери Рунет Telegram жана анын Роскомнадзор тарабынан маанисиз жана аёосуз бөгөт коюу жагдайы тууралуу ызы-чуу салып келет. Рикошет көптөгөн адамдарды таарынтты, бирок мунун баары Geektimesтеги посттор үчүн темалар. Мен дагы бир нерсеге таң калдым - мен Telegram - Telegram Open Network негизинде чыгаруу пландаштырылган TON тармагынын Habré боюнча бир дагы анализин көрө элекмин. Мен бул кемчиликтин ордун толтургум келди, анткени ал жерде окуй турган бир нерсе бар - бул тууралуу расмий билдирүүлөр болбогонуна карабастан.

Эсиңиздерге сала кетейин, Telegram буга чейин укмуштуудай акча чогултуп, абдан масштабдуу жабык ICO ишке киргизди деген имиштер бар. Gramдын өзүнүн криптовалютасы ушул жылы ишке киргизилет деп күтүлүүдө - жана ар бир Telegram колдонуучу автоматтык түрдө капчыгына ээ болот, бул өзү башка криптовалюталар алдында олуттуу артыкчылыкты жаратат.

Тилекке каршы, расмий билдирүүлөр болбогондуктан, мен андан ары уланта алам келип чыгышы белгисиз документ, бул жөнүндө мен дароо эскертем. Албетте, бул өтө чебер жасалма болуп чыгышы мүмкүн, бирок бул Николай Дуров жазган (жана инвесторлордун бири тарабынан ачыкка чыккан) келечектеги системанын чыныгы ак кагазы болушу мүмкүн. Бирок ал жасалма болсо да, аны изилдеп талкуулоого эч ким тыюу салбайт, туурабы?

Бул документ эмне дейт? Мен аны өз сөзүм менен, текстке жакын, бирок орусча жана бир аз адамкерчилик менен айтып берүүгө аракет кылам (Николай формалдуу математикага барууга тенденциясы үчүн мени кечирсин). Бул оригиналдуу болсо да, бул системанын сүрөттөлүшүнүн долбоору жана коомдук ишке киргизүү учурунда өзгөрүшү мүмкүн экенин унутпаңыз.

Биз cryptocurrency тышкары, күтүлүп жаткан дагы бир топ бар экенин билебиз. Аны ирети менен алалы.

  • ТОН Blockchain. Бул бүткүл системанын негизи болуп саналат. Эгер сен анын эмне экенин билбесең blokcheyn — Мен билүүнү сунуштайм, анткени бул жерде блокчейндер көп болот. Башка блокчейндердин блокторунун ичинде бири-бирине уя салынган, дээрлик фрагменттелген жана ал тургай "вертикалдуу" блокчейндер. сыяктуу кээ бир сонун угулат терминдер да болот Ыкчам Hypercube Routing и Infinite Sharding парадигмасы, бирок бул тууралуу кийинчерээк. Жана, албетте, далилдүү жана акылдуу келишимдер.
  • TON P2P тармагы. Анын негизинде система курула турган Peer-to-peer тармак. Ал окуянын бул бөлүгүндө биринчи жолу талкууланат.
  • TON сактагыч. Файл сактагычы, блокчейнге карабастан, жогоруда айтылган тең-тең тармакта курулат. Торренттерге салыштырууга болот.
  • TON прокси. Бул кызмат, анын максаты тармак катышуучуларынын анонимдүүлүгүн жогорулатуу болуп саналат. Каалаган пакетти түздөн-түз эмес, кошумча шифрлөө менен ортомчу туннелдер аркылуу жөнөтсө болот - I2P же TOR сыяктуу.
  • TON DHT. Ыктыярдуу маанилерди сактоо үчүн бөлүштүрүлгөн хэш таблицасы. Ошондой эле үстүнө курулган TON Network (бирок ошол эле учурда ал тарабынан колдонулат) жана жардам берет TON сактагыч "таратуу" түйүндөрүн табыңыз жана TON прокси — аралык кайталагычтар. Бирок блокчейнден айырмаланып, бул хэш-таблица коопсуз сактагыч эмес экенин белгилей кетүү керек - анда маанилүү маалыматты сактай албайсыз.
  • ТОН Services. Жеке кызматтар үчүн платформа. Чындыгында, бул жогоруда айтылгандардын үстүнөн жаңы Интернет. Маалымат алмашуу - аркылуу TON Network/TON прокси, жана логика акылдуу келишимдер болуп саналат ТОН Blockchain. Жана кыйла тааныш URL даректери бар интерфейс.
  • TON DNS. Биз тааныш URL даректери жөнүндө сөз болуп жаткандыктан, бизге алардан 256-бит даректерге - эсептерге, контракттарга, кызматтарга жана түйүндөргө конвертер керек.
  • ТОН төлөмдөр. Бул жерде акча маселеси келип чыгат. Жана бул гана болбойт грамм — эфирдегидей эле, ар кандай "токендер" мүмкүн болот; Грамдар бул жерде жөн эле "демейки" валюта болот.

Бул ТОНдун "негизделген" катмарын сүрөттөгөн биринчи бөлүк - анын салттуу протоколдордун үстүнө курулган тармактык бөлүгү. Кийинки бөлүктө биз "жумшак" - блокчейн жөнүндө сүйлөшөбүз, ал төмөндө сүрөттөлгөн система тарабынан колдоого алынат. Ошентип, менин кайра айтып берүү тартибим жогоруда аталган документте колдонулгандан бир аз башкачараак (ал дароо абстракттуу деңгээлде башталат).

Негизги түшүнүктөр

TL (Тип тили). Бул ыктыярдуу маалымат структуралары үчүн абстракттуу бинардык формат. Ал Telegram протоколунда колдонулат жана ТОНдо активдүү колдонулат. Эгер сиз аны менен толук таанышууну кааласаңыз - бул жерде анын сүрөттөлүшү.

Хеш (таштанды). Белгиленген узундуктагы бир санга эркин берилиш структурасын кайтарымсыз трансформациялоочу функция. Документте биз функция жөнүндө сүйлөшөбүз SHA-256.

Тармак түйүнү (түйүн). Түйүн - бул системанын иштешин камсыз кылуучу программа. Атап айтканда, ар бир Telegram кардар тиркемесинде TON түйүн камтылат деп болжолдонууда. Төмөнкү деңгээлде түйүндөр IPv4/IPv6 даректерине ээ жана UDP протоколун колдонуу менен байланышат; жогорку деңгээлде алар бар абстракттуу даректер жана ADNL протоколун ишке ашыруу (абстрактуу даректер жана ADNL жөнүндө - төмөндө караңыз). Системанын кээ бир бөлүктөрү бир нерсе жасайт же кандайдыр бир маалыматтарды сактай тургандыгы жөнүндө сөз болгондо, бул тармак түйүндөрү тарабынан жасалат деп түшүнүлөт.

Абстракттуу дарек (же жөн эле дарек, дарек). Түйүндүн дареги анын ачык ачкычы менен аныкталат. Тагыраак айтканда, бул ачык ачкычты камтыган маалымат структурасынын 256 биттик хэш (SHA256) (конкреттүү криптографиялык алгоритм көрсөтүлгөн эмес – мисал катары эллиптикалык ийри сызыктар жана RSA-2048 келтирилген). Бир түйүн экинчиси менен байланышышы үчүн ошол түйүндүн дарегин гана эмес, бул маалымат структурасын да билиши керек. Теорияда бир физикалык түйүн каалаган сандагы даректерди түзө алат (ар кандай баскычтарга туура келет).

Андан тышкары, дал ушундай шилтеме көп колдонулат: TL түзүмү түрүндөгү "прототип" (дээрлик бардык маалыматтарды камтыган) жана андан 256 биттик хэш даректөө үчүн колдонулат.

Blokcheyn (blockchain). Blockchain бул маалымат структурасы, элементтери (блоктор) "чынжырга" иреттелген жана чынжырдын ар бир кийинки блогу мурункусунун хэштерин камтыйт. Ошентип, бүтүндүк жетишилет - өзгөртүүлөр жаңы блокторду кошуу менен гана жүргүзүлүшү мүмкүн.

кызмат (кызмат). TON ичиндеги кызматтар блокчейнди колдонгонуна же колдонбогонуна жараша ар кандай болушу мүмкүн. Мисалы, бир (же бир нече) тармак түйүндөрү төмөндө сүрөттөлгөн ADNL протоколун колдонуу менен белгилүү бир RPC суроо-талаптарын, салттуу веб-серверлер сыяктуу блокчейнде эч кандай жазууларды түзбөстөн иштете алат. Анын ичинде ADNL аркылуу HTTP ишке ашыруу мүмкүнчүлүгү, ошондой эле мессенжердин өзүн ушул протоколго өткөрүү. TOR же I2P окшоштугу боюнча, бул ар кандай бөгөт коюуга туруктуураак кылат.

Ошол эле учурда, бир катар кызматтар блокчейн менен өз ара аракеттенүүнү жана анын сыртындагы суроо-талаптарды иштетүүнү камтыйт. Мисалы, TON Storage үчүн - файлдарды сактоо - файлдарды блокчейнде сактоо абдан акылга сыярлык эмес. Анда файл хэштери гана болот (алар жөнүндө кээ бир мета-маалыматтар менен бирге) жана адистештирилген тармак түйүндөрү аларды ADNL аркылуу башка түйүндөргө жөнөтүүгө даяр "файл серверлери" катары иштейт.

Туман кызматы (туман кызматы). Кеп борбордон ажыратуу жана аларга ачык катышууну билдирген кээ бир кызматтар жөнүндө болуп жатат. Мисалы, TON Proxy – бул өз түйүнүн башка түйүндөр ортосунда ортомчу (прокси) жөнөтүү пакеттери катары камсыз кылууну каалаган бардык катышуучу тарабынан колдоого алынуучу кызмат. Кааласа, ал бул үчүн өзү тарабынан белгиленген комиссияны ала алат - микротөлөмдөр үчүн TON Payments тутумун колдонуу (бул, өз кезегинде, туман кызматы).

ADNL: Абстракттуу Datagram Network Layer

Эң төмөнкү деңгээлде түйүндөрдүн ортосундагы байланыш UDP протоколунун жардамы менен ишке ашырылат (бирок башка варианттар алгылыктуу).

Жогоруда айтылгандай, бир түйүн пакетти башкасына жөнөтүү үчүн, ал өзүнүн ачык ачкычтарынын бирин (демек, ал аныктаган даректи) билиши керек. Ал пакетти ушул ачкыч менен шифрлейт жана пакеттин башына 256 биттик көздөгөн даректи кошот - бир түйүндө бул даректердин бир нечеси болушу мүмкүн, бул ага чечмелөө үчүн кайсы ачкычты колдонууну аныктоого мүмкүндүк берет.

TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

Мындан тышкары, алуучунун дарегинин ордуна, маалымат пакетинин башталышы деп аталгандарды камтышы мүмкүн. идентификатор канал. Бул учурда, пакетти иштетүү түйүндөрдүн ортосундагы конкреттүү келишимдерден көз каранды - мисалы, белгилүү бир каналга жөнөтүлгөн маалыматтар башка түйүн үчүн арналган болушу мүмкүн жана ага жөнөтүлүшү керек (бул кызмат TON прокси). Дагы бир өзгөчө жагдай түйүндөрдүн ортосундагы түздөн-түз өз ара аракеттенүү болушу мүмкүн, бирок бул канал үчүн жеке ачкыч жуптун жардамы менен шифрлөө менен (Diffie-Hellman протоколу аркылуу алдын ала түзүлгөн).

Акыр-аягы, өзгөчө жагдай - бул "нөлдүк" канал - эгерде түйүн өзүнүн "коңшуларынын" ачык ачкычтарын билбесе, анда ал пакеттерди такыр шифрлөөсүз жөнөтө алат. Бул инициализациялоо үчүн гана арналган - түйүндөр өз ачкычтары тууралуу маалыматты жөнөткөндөн кийин, алар андан аркы байланыш үчүн колдонулушу керек.

Жогоруда сүрөттөлгөн протокол (256 бит канал идентификатору + пакеттин мазмуну) ADNL деп аталат. Документте анын үстүнө TCP аналогун же өзүнүн кошумчасын - RLDP (Reliable Large Datagram Protocol) ишке ашыруу мүмкүндүгү айтылат, бирок аларды ишке ашыруунун чоо-жайы айтылган эмес.

TON DHT: Бөлүштүрүлгөн хэш таблицасы

Башка бөлүштүрүлгөн системалардагыдай эле, TON DHTти ишке ашырууну камтыйт - бөлүштүрүлгөн хэш таблицасы. Тактап айтканда, үстөл болуп саналат Кадемлия сыяктуу. Эгер сиз хэш таблицанын бул түрү менен тааныш болбосоңуз, кабатыр болбоңуз, төмөндө мен алардын кантип иштешин болжол менен сүрөттөп берем.

TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

Абстрактуу мааниде, DHT 256 биттик ачкычтарды каалаган узундуктагы бинардык маанилерге түзөт. Бул учурда, таблицадагы ачкычтар белгилүү бир TL түзүмүнүн хэштери болуп саналат (түзүмдөрдүн өзү да DHT менен бирге сакталат). Бул түйүндөрдүн даректерин түзүүгө абдан окшош - жана алар чындап эле DHTде болушу мүмкүн (мисалы, мындай ачкычты колдонуу менен түйүндүн IP дареги берилгенге туура келет абстракттуу дарек, эгер ал жашырбаса). Бирок жалпы учурда, "ачкычтардын прототиптери" (алардын сүрөттөөлөр, негизги сүрөттөмөлөр) хэш таблицадагы жазуунун "ээсин" (башкача айтканда, кандайдыр бир түйүндүн ачык ачкычын), сакталган маанинин түрүн жана бул жазууну кийинчерээк өзгөртүүгө боло турган эрежелерди көрсөткөн метаберилиштер. Мисалы, эреже ээсине гана маанини өзгөртүүгө уруксат бериши мүмкүн же маанини ылдый өзгөртүүгө тыюу салышы мүмкүн (кайра ойнотуу чабуулдарынан коргоо үчүн).

256 биттик ачкычтардан тышкары, DHT даректеринин түшүнүгү киргизилген. Кадимки хост даректеринен айырмасы, DHT дареги сөзсүз түрдө IP дарекке байланган. Эгерде түйүн өзүнүн IP-сын жашырбаса, ал DHT үчүн кадимки даректи колдоно алат. Бирок көбүнчө DHT муктаждыктары үчүн өзүнчө, "жарым туруктуу" дарек түзүлөт.
TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар
Аралык түшүнүгү баскычтардын жана DHT даректеринин үстүнө киргизилген - бул жерде бардыгы таблицалар менен дал келет кадемлия — баскычтардын ортосундагы аралык алардын XOR (бит боюнча эксклюзивдүү ЖЕ) барабар. Kademlia таблицаларындагыдай эле, белгилүү бир ачкычка туура келген маани сакталышы керек s бул ачкычка эң кыска аралыкка ээ түйүндөр (s бул салыштырмалуу аз сан).

DHT түйүнүнүн башка ушул сыяктуу түйүндөр менен байланышы үчүн, ал эс тутумда сакталат DHT багыттоо таблицасы — DHT жана IP даректери, ал мурда иштешкен түйүндөр, аларга чейинки аралык боюнча топтоштурулган. Мындай 256 топ бар (алар аралыктын маанисинде белгиленген эң маанилүү битке туура келет - башкача айтканда, 0дөн 255ке чейинки аралыктагы түйүндөр бир топко, 256дан 65535ке чейин - кийинкиге ж.б. кирет). Ар бир топтун ичинде чектелген сандагы "мыкты" түйүндөр сакталат (аларга пинг берүү жагынан).

TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

Ар бир түйүн бир нече операцияларды колдоого алышы керек: ачкыч үчүн маанини сактоо, түйүн издөө и баалуулуктарды издөө. Түйүндөрдү издөө берилген ачкычтын негизинде маршруттук таблицадан ага эң жакын түйүндөрдү чыгарууну камтыйт; Түйүн ачкычтын маанисин билген учурларды кошпогондо, маанилерди издөө бирдей болот (андан кийин ал аны кайтарат). Демек, эгерде түйүн DHTдеги ачкыч боюнча маани тапкысы келсе, ал өзүнүн маршруттук таблицасынан ушул ачкычка эң жакын аз сандагы түйүндөргө суроо-талаптарды жөнөтөт. Эгерде талап кылынган маани алардын жоопторунун арасында болбосо, бирок башка түйүн даректери бар болсо, анда сурам аларга кайталанат.

TON DHT ар кандай максаттарда колдонулушу мүмкүн, мисалы, торрент сыяктуу файл сактагычын ишке ашыруу үчүн (караңыз. TON сактагыч); белгилүү кызматтарды ишке ашыруучу түйүндөрдүн даректерин аныктоо; блокчейндеги эсеп ээлери тууралуу маалыматты сактоо үчүн. Бирок эң маанилүү тиркеме – бул түйүндөрдүн абстракттуу даректери боюнча табуу. Бул үчүн, дарек маанисин табуу керек болгон ачкыч катары колдонулат. Сурамдын натыйжасында же түйүн өзү табылат (эгерде изделген дарек анын жарым-жартылай туруктуу DHT дареги болсо) же маани IP дареги жана туташуу порту болот - же башка дарек катары колдонулушу керек. ортомчу туннель.

TON ичинде кабатталган тармактар

Жогоруда сүрөттөлгөн ADNL протоколу ар кандай түйүндөрдүн бири-бири менен маалымат алмашуу мүмкүнчүлүгүн билдирет - бирок сөзсүз түрдө оптималдуу жолдор менен эмес. ADNL аркасында бардык түйүндөр глобалдык TON графигин түзөт (идеалдуу түрдө туташкан) деп айта алабыз. Бирок бул графиктин ичинде кошумча тармактарды - субграфтарды түзсө болот.
TON: Telegram Open Network. 1-бөлүк: Киришүү, тармактык катмар, ADNL, DHT, кабаттуу тармактар

Мындай тармактын ичинде өз ара аракеттенүү түз гана ишке ашырылат - тармакка катышкан түйүндөрдүн ортосундагы алдын ала түзүлгөн байланыштар аркылуу (жогоруда айтылган ADNL каналдары аркылуу). Коңшулардын ортосунда мындай байланыштарды түзүү, кошуналардын өздөрүн издөө, капталган тармактын байланышын сактоого жана андагы маалыматтарды алмашуудагы кечигүүнү минималдаштырууга умтулган автоматтык процесс.

Кошумчалай кетсек, чоң уктуруу жаңыланууларын тармак ичинде тез таратуунун жолу бар - алар бөлүктөргө бөлүнүп, каталарды оңдоо коду менен толукталат жана бул бөлүктөр бир катышуучудан экинчисине жөнөтүлөт. Ошентип, катышуучу тармак боюнча андан ары жөнөтүү алдында бардык бөлүктөрүн толугу менен алуу керек эмес.

Overlay тармактары коомдук же жеке болушу мүмкүн. Коомдук тармактын мүчөсү болуу кыйын эмес - сиз аны сүрөттөгөн TL түзүмүн табышыңыз керек (ал ачык болушу мүмкүн же DHTдеги белгилүү бир ачкыч аркылуу жеткиликтүү болушу мүмкүн). Жеке тармак болгон учурда бул структура түйүнгө алдын ала белгилүү болушу керек.

Уландысы бар

Мен TON карап чыгууну бир нече макалага бөлүүнү чечтим. Бул бөлүк аяктайт, жана кийинкисинде Мен ТОН турган блокчейндин (тагыраак айтканда, блокчейндердин) түзүмүн карап чыгууну улантам.

Source: www.habr.com

Комментарий кошуу