TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

Sulod sa duha ka semana karon, nagsaba-saba si Runet bahin sa Telegram ug sa sitwasyon uban ang walay hinungdan ug walay kaluoy nga pag-block sa Roskomnadzor. Ang ricochet nakapasakit sa kadaghanan, apan kining tanan mga hilisgutan alang sa mga post sa Geektimes. Nakurat ako sa laing butang - wala pa ko makakita sa Habré usa ka pag-analisar sa TON network nga giplano nga ipagawas base sa Telegram - Telegram Open Network. Gusto nako nga bawion kini nga kakulangan, tungod kay adunay usa ka butang nga tun-an didto - bisan kung wala’y opisyal nga mga pahayag bahin niini.

Tugoti ako nga pahinumdoman ka nga adunay mga hungihong nga ang Telegram naglansad sa usa ka dako kaayo nga sirado nga ICO, nga nakolekta na ang dili katuohan nga kantidad niini. Gituohan nga ang kaugalingon nga cryptocurrency sa Gram ilunsad karong tuiga, ug ang matag tiggamit sa Telegram awtomatik nga adunay pitaka, nga sa iyang kaugalingon nagmugna og dakong bentaha sa ubang mga cryptocurrencies.

Ikasubo, tungod kay wala’y opisyal nga mga pahayag, mahimo ra ako magpadayon dokumento sa wala mailhi nga gigikanan, nga gipasidan-an ko dayon kanimo. Siyempre, kini mahimo nga usa ka maayo kaayo nga peke, apan posible usab nga kini usa ka tinuod nga whitepaper sa umaabot nga sistema, nga gisulat ni Nikolai Durov (ug na-leak, tingali, sa usa sa mga tigpamuhunan). Pero bisag peke, walay magdili nato sa pagtuon ug paghisgot niini, di ba?

Unsa ang giingon niini nga dokumento? Ako mosulay sa pagsulti pag-usab niini sa akong kaugalingon nga mga pulong, duol sa teksto, apan sa Russian ug sa usa ka gamay nga mas tawhanon (hinaot Nikolai mopasaylo kanako uban sa iyang kalagmitan sa pag-adto sa pormal nga matematika). Hinumdomi nga bisan kung kini tinuod, kini usa ka draft nga paghulagway sa sistema ug lagmit nga mabag-o sa panahon sa paglansad sa publiko.

Nahibal-an namon nga dugang sa cryptocurrency, adunay daghan pa nga gipaabut. Atong kuhaon kini sa han-ay.

  • TON Blockchain. Kini ang sukaranan sa tibuuk nga sistema. Kung wala ka kabalo kung unsa blockchain - Girekomenda nako ang pagpangita, tungod kay adunay daghang mga blockchain dinhi. Nabutang sa sulod sa usag usa, halos tipik ug bisan sa "vertical" nga mga blockchain sulod sa mga bloke sa ubang mga blockchain. Adunay usab pipila ka mga cool-sounding nga mga termino sama sa Instant nga Hypercube Routing и Walay Kinutuban nga Sharding Paradigm, apan labaw pa niana sa ulahi. Ug, siyempre, proof-of-stake ug smart nga mga kontrata.
  • TON P2P Network. Usa ka peer-to-peer nga network nga gibase sa kung diin ang sistema pagatukuron. Kini hisgotan una sa tanan niini nga bahin sa istorya.
  • Pagtipig sa TON. Usa ka pagtipig sa file nga pagatukuron sa nahisgutan nga peer-to-peer network bisan unsa pa ang blockchain. Mahimong itandi sa mga sapa.
  • TON Proxy. Kini usa ka serbisyo kansang katuyoan mao ang pagdugang sa pagka-anonymity sa mga partisipante sa network. Ang bisan unsang pakete mahimong ipadala dili direkta, apan pinaagi sa intermediary tunnels nga adunay dugang nga pag-encrypt - sama sa I2P o TOR.
  • TON DHT. Giapod-apod nga hash table alang sa pagtipig sa arbitraryong mga kantidad. Gitukod usab kini sa ibabaw TON Network (apan sa samang higayon gigamit kini niya) ug nagtabang Pagtipig sa TON pangitaa ang "nag-apod-apod" nga mga node, ug TON Proxy - intermediate nga mga relay. Apan kinahanglan nga hinumdoman nga, dili sama sa blockchain, kini nga lamesa sa hash dili usa ka luwas nga pagtipig - dili nimo matipigan ang hinungdanon nga kasayuran niini.
  • Mga Serbisyo sa TON. Platform alang sa arbitraryong mga serbisyo. Sa tinuud, kini usa ka bag-ong Internet sa ibabaw sa tanan nga gihulagway sa ibabaw. Pagbaylo sa datos - pinaagi sa TON Network/TON Proxy, ug ang lohika naa sa mga smart nga kontrata sa TON Blockchain. Ug usa ka interface nga adunay medyo pamilyar nga mga URL.
  • TON DNS. Tungod kay naghisgot kami bahin sa pamilyar nga mga URL, kinahanglan usab namon ang usa ka converter gikan kanila ngadto sa 256-bit nga mga adres - mga account, kontrata, serbisyo ug mga node.
  • TON Bayad. Ug dinhi ang isyu sa kuwarta nagdula. Ug dili lang kini mahitabo gram - sama sa ether, ang bisan unsang "mga token" mahimong posible; Ang mga gramo mahimong "default" nga kwarta dinhi.

Kini ang una nga bahin nga naghulagway sa "grounded" nga layer sa TON - ang bahin sa network niini, nga gitukod sa ibabaw sa tradisyonal nga mga protocol. Sa sunod nga bahin maghisgot kita bahin sa "humok" - blockchain, nga suportahan sa sistema nga gihulagway sa ubos. Busa, ang akong han-ay sa pagsaysay pag-usab medyo lahi sa gigamit sa nahisgutan sa ibabaw nga dokumento (nga nagsugod dayon sa abstract nga lebel).

Panguna nga mga konsepto

TL (Type nga Pinulongan). Kini usa ka abstract binary format alang sa arbitraryong mga istruktura sa datos. Gigamit kini sa protocol sa Telegram ug aktibong gamiton sa TON. Kung gusto nimo nga pamilyar niini sa detalye - mao ni iyang description.

hash (hash). Usa ka function nga naghimo sa dili mabalik nga pagbag-o sa usa ka arbitraryong istruktura sa datos ngadto sa usa ka numero sa usa ka piho nga gitas-on. Sa tibuuk nga dokumentasyon, adunay daghang paghisgot bahin sa function SHA-256.

Network node (Node). Ang node mao ang software nga magsiguro sa operasyon sa sistema. Sa partikular, gituohan nga ang matag aplikasyon sa kliyente sa Telegram maglakip sa usa ka TON node. Sa ubos nga lebel, ang mga node adunay IPv4/IPv6 nga mga adres ug nakigsulti gamit ang UDP protocol, sa mas taas nga lebel nga sila adunay abstract nga mga adres ug ipatuman ang ADNL protocol (tan-awa sa ubos para sa abstract nga mga adres ug ADNL). Sa diha nga kini moabut ngadto sa kamatuoran nga ang pipila ka mga bahin sa sistema sa pagbuhat sa usa ka butang o sa pagtipig sa pipila ka mga data, kini nasabtan nga network nodes sa pagbuhat niini.

Abstract nga adres (o yano adres, nga adres). Ang adres sa usa ka node gitino pinaagi sa publiko nga yawe niini. Mas estrikto, kini usa ka 256-bit hash (SHA256) gikan sa usa ka istruktura sa datos nga adunay sulud sa publiko nga yawe (ang piho nga cryptographic algorithm wala gipiho sa kini nga kaso - elliptic curves ug RSA-2048 gihatag ingon usa ka pananglitan). Aron ang usa ka node makigkomunikar sa lain, kinahanglan nga mahibal-an dili lamang ang adres sa usa, apan usab kini nga istruktura sa datos. Sa teoriya, ang usa ka pisikal nga node makahimo sa bisan unsa nga gidaghanon sa mga adres (katugbang sa lain-laing mga yawe).

Dugang pa, ang ingon nga bundle kanunay nga gigamit: usa ka "preimage" sa porma sa usa ka istruktura sa TL (nga adunay hapit bisan unsang datos), ug usa ka 256-bit hash gikan niini nga gigamit alang sa pagsulbad.

Blockchain (blockchain). Ang Blockchain usa ka istruktura sa datos, mga elemento (mga bloke) nga gimando ngadto sa usa ka "kadena", ug ang matag sunod nga bloke sa kadena naglangkob sa hash sa nauna. Niining paagiha, makab-ot ang integridad - ang mga pagbag-o mahimo ra pinaagi sa pagdugang bag-ong mga bloke.

nga pag-alagad (nga pag-alagad). Ang mga serbisyo sulod sa TON mahimong lainlain nga klase, depende kung gigamit nila ang blockchain o dili. Pananglitan, ang usa (o daghan) sa mga node sa network mahimong magproseso sa pipila ka mga hangyo sa RPC gamit ang ADNL protocol nga gihulagway sa ubos, nga wala maghimo bisan unsang mga rekord sa blockchain - sama sa tradisyonal nga mga web server. Sa partikular, ang posibilidad sa pag-implementar sa HTTP sa ADNL gikonsiderar, ingon man ang pagbalhin sa mensahero mismo sa kini nga protocol. Pinaagi sa analohiya sa TOR o I2P, kini maghimo niini nga mas makasugakod sa nagkalain-laing pagbabag.

Sa parehas nga oras, daghang mga serbisyo ang nagpasabut sa interaksyon sa blockchain ug pagproseso sa mga hangyo sa gawas niini. Pananglitan, alang sa TON Storage - pagtipig sa file - dili kaayo makatarunganon nga tipigan ang mga file mismo sa blockchain. Kini maglangkob lamang sa mga file hash (uban sa pipila ka meta-impormasyon bahin niini), ug ang mga espesyal nga network node molihok isip "mga file server", andam nga ihatag kini sa ubang mga node pinaagi sa ADNL.

Serbisyo sa gabon (serbisyo sa gabon). Naghisgot kami bahin sa pipila ka mga serbisyo nga naglambigit sa desentralisasyon ug bukas nga pag-apil niini. Pananglitan, ang TON Proxy usa ka serbisyo nga mahimong suportahan sa bisan kinsa nga partisipante nga gusto maghatag sa ilang node isip intermediary (proxy) nga nagpasa sa mga packet tali sa ubang mga node. Kung gusto, mahimo siyang maningil og bayad nga gitakda niya alang niini - gamit ang sistema sa TON Payments alang sa micropayments (nga, sa baylo, usa usab ka foggy nga serbisyo).

ADNL: Abstract nga Datagram Network Layer

Sa labing ubos nga lebel, ang komunikasyon tali sa mga node pinaagi sa UDP (bisan kung ang ubang mga kapilian madawat).

Sama sa nahisgutan sa ibabaw, aron ang usa ka node makapadala usa ka pakete sa lain, kinahanglan mahibal-an niini ang usa sa mga yawe sa publiko (ug busa ang adres nga gihubit niini). Gi-encrypt niini ang pakete gamit kini nga yawe ug gidugang ang 256-bit nga adres sa destinasyon sa sinugdanan sa pakete - tungod kay ang usa ka node mahimong adunay daghan niini nga mga adres, magtugot kini nga mahibal-an kung unsang yawe ang gamiton alang sa pag-decryption.

TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

Dugang pa, imbes nga adres sa tigdawat sa sinugdanan sa data packet, mahimo nga adunay usa ka gitawag nga. tigpaila agianan. Sa kini nga kaso, ang pagproseso sa pakete nagdepende na sa piho nga mga kasabutan tali sa mga node - pananglitan, ang data nga gipadala sa usa ka channel mahimo’g gituyo alang sa lain nga node ug kinahanglan ipasa niini (kini ang serbisyo TON Proxy). Ang laing espesyal nga kaso mahimong direkta nga interaksyon tali sa mga node, apan sa pag-encrypt gamit ang usa ka indibidwal nga pares sa yawe alang niini nga channel (pre-generated gamit ang Diffie-Hellman protocol).

Sa katapusan, ang usa ka espesyal nga kaso mao ang "null" nga channel - kung ang usa ka node wala pa nahibal-an ang publiko nga mga yawe sa iyang "mga silingan," mahimo kini ipadala kanila nga mga pakete nga wala’y pag-encrypt. Kini gituyo lamang alang sa pagsugod - sa higayon nga ang mga node magpadala sa impormasyon mahitungod sa ilang mga yawe, sila kinahanglan nga gamiton alang sa dugang nga komunikasyon.

Ang protocol nga gihulagway sa ibabaw (256 bits sa channel identifier + packet contents) gitawag ug ADNL. Ang dokumentasyon naghisgot sa posibilidad sa pagpatuman sa usa ka analogue sa TCP sa ibabaw niini o sa iyang kaugalingon nga add-on - RLDP (Kasaligang Dako nga Datagram Protocol), apan wala moadto sa mga detalye mahitungod sa ilang pagpatuman.

TON DHT: Gipanagtag nga Hash Table

Sama sa kaso sa ubang mga gipang-apod-apod nga sistema, ang TON naglakip sa pagpatuman sa DHT - gipang-apod-apod nga hash table. Mas espesipiko, ang lamesa mao Sama sa Kademlia. Kung dili ka pamilyar sa kini nga klase sa hash nga mga lamesa, ayaw kabalaka, unya akong ihulagway kung giunsa kini pagkahan-ay.

TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

Sa usa ka abstract nga diwa, ang DHT nag-mapa sa 256-bit nga mga yawe sa binary nga mga kantidad sa arbitraryong gitas-on. Sa kini nga kaso, ang mga yawe sa lamesa mga hash gikan sa usa ka piho nga istruktura sa TL (ang mga istruktura mismo gitipigan usab kauban ang DHT). Kini susama kaayo sa pagporma sa mga adres sa node - ug mahimo gyud silang naa sa DHT (pananglitan, gamit ang ingon nga yawe ang IP address sa usa ka node nga katumbas sa usa ka gihatag. abstract nga adreskung dili kini itago). Apan sa kinatibuk-ang kaso, "pre-images of keys" (ilang mga paghubit, yawe nga mga paghulagway) mao ang metadata nga nagpaila sa "tag-iya" sa usa ka entry sa usa ka hash table (nga mao, ang public key sa pipila ka node), ang matang sa bili nga gitipigan, ug ang mga lagda diin kini nga entry mahimong sunod nga mausab. Pananglitan, ang usa ka lagda mahimong motugot lamang sa tag-iya sa pag-usab sa bili, o pagdili sa pag-usab sa bili ngadto sa ubos (aron mapanalipdan batok sa replay nga mga pag-atake).

Dugang sa 256-bit nga mga yawe, ang konsepto sa mga adres sa DHT gipaila. Ang kalainan sa mga regular nga adres sa host mao nga ang DHT address kinahanglan nga nahigot sa usa ka IP address. Kung ang usa ka node dili magtago sa iyang IP, kini mahimong mogamit usa ka regular nga adres alang sa DHT. Apan mas kasagaran, ang usa ka bulag, "semi-permanent" nga adres pagahimoon alang sa mga panginahanglan sa DHT.
TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks
Ang konsepto sa gilay-on gipaila sa ibabaw sa mga yawe ug mga adres sa DHT - niini ang tanan nahiuyon sa mga lamesa kademlia - ang gilay-on tali sa mga yawe katumbas sa XOR (bitwise exclusive OR) gikan kanila. Sama sa mga lamesa sa Kademlia, ang kantidad nga katumbas sa usa ka piho nga yawe kinahanglan nga tipigan s mga node nga adunay pinakagamay nga gilay-on niini nga yawe (s ania ang medyo gamay nga numero).

Aron ang usa ka DHT node makigkomunikar sa ubang mga node, kini magpabilin sa panumduman DHT routing table - DHT ug IP nga mga adres sa mga node diin kini nakig-uban kaniadto, nga gigrupo sa gilay-on ngadto kanila. Adunay 256 ka ingon nga mga grupo (sila katumbas sa labing hinungdanon nga gamay nga gitakda sa gilay-on nga kantidad - nga mao, ang mga node sa gilay-on gikan sa 0 hangtod 255 mahulog sa usa ka grupo, gikan sa 256 hangtod 65535 - sa sunod, ug uban pa). Sulod sa matag grupo, usa ka limitado nga gidaghanon sa "labing maayo" nga mga node ang gitipigan (sa termino sa ping ngadto kanila).

TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

Ang matag node kinahanglan nga mosuporta sa daghang mga operasyon: pagtipig sa usa ka bili alang sa usa ka yawe, pagpangita sa node и pangitaa ang mga mithi. Ang pagpangita alang sa mga node nagpasabot sa pag-isyu pinaagi sa gihatag nga yawe sa mga node nga labing duol niini gikan sa routing table; Ang pagtan-aw sa mga kantidad parehas, gawas kung nahibal-an sa node ang kantidad alang sa yawe (nga kung diin kini ibalik ra kini). Busa, kung ang usa ka node gusto nga mangita usa ka kantidad sa DHT pinaagi sa usa ka yawe, kini nagpadala mga hangyo sa usa ka gamay nga gidaghanon sa mga node nga labing duol sa kini nga yawe gikan sa routing table niini. Kung taliwala sa ilang mga tubag walay gitinguha nga kantidad, apan adunay uban nga mga adres sa mga node, nan ang hangyo gisubli ngadto kanila.

Ang TON DHT mahimong magamit alang sa lainlaing mga katuyoan, pananglitan, aron ipatuman ang usa ka torrent nga pagtipig sa file (tan-awa. Pagtipig sa TON); aron mahibal-an ang mga adres sa mga node nga nagpatuman sa pipila nga mga serbisyo; sa pagtipig og impormasyon bahin sa mga tag-iya sa account sa blockchain. Apan ang labing hinungdanon nga aplikasyon mao ang pagkadiskobre sa mga node pinaagi sa ilang abstract nga mga adres. Aron mahimo kini, ang adres gigamit ingon usa ka yawe kansang kantidad kinahanglan pangitaon. Ingon usa ka sangputanan sa hangyo, bisan ang node mismo makit-an (kung ang gipangita nga adres mao ang semi-permanenteng DHT nga adres), o ang kantidad mao ang IP address ug pantalan alang sa koneksyon - o lain nga adres nga kinahanglan gamiton ingon usa ka intermediary tunnel.

Mga overlay nga network sa TON

Ang ADNL protocol nga gihulagway sa ibabaw nagpasabot sa abilidad sa bisan unsang mga node sa pagbayloay og impormasyon sa usag usa - bisan dili kinahanglan sa labing maayo nga mga paagi. Mahimo natong isulti nga salamat sa ADNL, ang tanan nga mga node nahimong usa ka global nga TON graph (mas maayo, konektado). Apan dugang pa, posible nga maghimo mga overlay nga network - mga subgraph sa sulod niini nga graph.
TON: Telegram Open Network. Bahin 1: Pasiuna, network layer, ADNL, DHT, overlay networks

Sulod sa ingon nga network, ang interaksyon gihimo lamang direkta - pinaagi sa naporma nga mga link tali sa mga node sa miyembro sa network (pinaagi sa mga channel sa ADNL nga gihulagway sa ibabaw). Ang pagporma sa ingon nga mga koneksyon tali sa mga silingan, ang pagpangita sa mga silingan sa ilang kaugalingon usa ka awtomatiko nga proseso nga nagtinguha nga mapadayon ang koneksyon sa overlay nga network ug makunhuran ang mga paglangan sa pagbinayloay sa datos niini.

Dugang pa, adunay usa ka paagi aron dali nga maapod-apod ang daghang mga update sa broadcast sa sulod sa network - gibuak kini, gidugangan sa code sa pagtul-id sa sayup, ug ang tanan nga kini nga mga piraso gipadala gikan sa usa ka partisipante ngadto sa lain. Sa ingon, ang partisipante dili kinahanglan nga hingpit nga makuha ang tanan nga mga bahin sa dili pa ipadala kini sa unahan sa network.

Ang mga overlay nga network mahimong publiko o pribado. Ang pagkahimong miyembro sa usa ka publiko nga network dili lisud - kinahanglan nimo nga mangita usa ka istruktura sa TL nga naghulagway niini (mahimong publiko - o ma-access sa usa ka piho nga yawe sa DHT). Sa kaso sa usa ka pribado nga network, kini nga istruktura kinahanglan mahibal-an daan sa node.

Aron magpadayon

Nakahukom ko nga bahinon ang pagsusi sa TON sa daghang mga artikulo. Dinhi natapos kini nga seksyon, sunod Nagpadayon ako sa pagkonsiderar sa istruktura sa blockchain (mas tukma, mga blockchain) nga gilangkoban sa TON.

Source: www.habr.com

Idugang sa usa ka comment