TON: Telegram Open Network. Parte 2: Blockchains, sharding

TON: Telegram Open Network. Parte 2: Blockchains, sharding

Stu testu hè una continuazione di una seria d'articuli in quale esaminà a struttura di a reta (presumibilmente) distribuita Telegram Open Network (TON), chì hè stata preparata per a liberazione di questu annu. IN parte precedente Aghju descrittu u so livellu più basicu - a manera chì i nodi interagiscenu cù l'altri.

In casu, lasciami ricurdà chì ùn aghju nunda à fà cù u sviluppu di sta reta è tuttu u materiale hè stata cugliata da una fonte aperta (anche micca verificata) - documentu (Ci hè ancu un accumpagnamentu brochure, delineendu brevemente i punti principali), chì apparsu à a fine di l'annu passatu. A quantità di informazioni in stu documentu, in my opinion, indica a so autenticità, ancu s'ellu ùn ci hè micca una cunferma ufficiale di questu.

Oghje avemu vistu u cumpunente principale di TON - u blockchain.

Concetti basi

Account (contu). Un inseme di dati identificati da un numeru di 256-bit account_id (a maiò spessu questu hè a chjave publica di u pruprietariu di u contu). In u casu di basa (vede sottu catena di travagliu zero), sta dati si riferisce à u equilibriu di l'utilizatori. "Occupy" specificu account_id qualcunu pò, ma u so valore pò esse cambiatu solu sicondu certi reguli.

Cuntrattu intelligente (cuntrattu intelligente). In esencia, hè un casu spiciale di un contu, supplementatu cù u codice di cuntrattu intelligenti è u almacenamentu di e so variàbili. Se in u casu di un "portafoglio", pudete dipositu è ​​ritruvà soldi da ellu secondu regule relativamente simplici è predeterminate, allora in u casu di un cuntrattu intelligenti sti reguli sò scritti in a forma di u so codice (in un certu Turing-complete). lingua di prugrammazione).

Blockchain State (statu di blockchain). L'inseme di stati di tutti i cunti / cuntratti intelligenti (in un sensu astrattu, una tavola hash, induve e chjave sò identificatori di cunti è i valori sò i dati almacenati in i cunti).

missaghju (missaghju). Sopra aghju utilizatu l'espressione "creditu è ​​debitu soldi" - questu hè un esempiu particulari di un missaghju ("trasferimentu N grammi da contu contu_1 à contu contu_2"). Ovviamente, solu u node chì pussede a chjave privata di u contu pò mandà un tali missaghju contu_1 - è capace di cunfirmà questu cù una firma. U risultatu di trasmette tali messagi à un cuntu regulare hè un aumentu di u so equilibriu, è u risultatu di u cuntrattu intelligente hè l'esekzione di u so codice (chì prucederà a ricezione di u missaghju). Di sicuru, altri missaghji sò ancu pussibuli (trasferendu micca quantità monetarie, ma dati arbitrarii trà cuntratti intelligenti).

Transazzione (transazzione). U fattu chì un missaghju hè mandatu hè chjamatu transazzione. E transacciones cambianu u statu di u blockchain. Hè transazzione (records di spedizione di messageria) chì custituiscenu i blocchi in u blockchain. In questu sensu, pudete pensà à u statu di u blockchain cum'è una basa di dati incrementali - tutti i blocchi sò "diffs" chì deve esse appiicati sequentially per ottene u statu attuale di a basa di dati. I specifichi di l'imballu di sti "diffs" (è ristabilisce u statu sanu da elli) seranu discututi in u prossimu articulu.

Blockchain in TON: chì hè è perchè?

Cum'è dettu in l'articulu precedente, blockchain hè una struttura di dati, l'elementi (blocchi) di quale sò urdinati in una "catena", è ogni bloccu sussegwenti di a catena cuntene un hash di u precedente.. I cumenti facianu a quistione: perchè avemu bisognu di una tale struttura di dati in tuttu quandu avemu digià un DHT - una tavola hash distribuita? Ovviamente, certi dati ponu esse guardati in DHT, ma questu hè solu adattatu per l'infurmazioni micca troppu "sensibili". I saldi di criptovaluta ùn ponu esse almacenati in DHT - principalmente per via di a mancanza di cuntrolli integrità. In verità, tutta a cumplessità di a struttura di blockchain cresce per impedisce l'interferenza cù e dati almacenati in questu.

Tuttavia, u blockchain in TON pare ancu più cumplessu chè in a maiò parte di l'altri sistemi distribuiti - è per dui motivi. U primu hè u desideriu di minimizzà a necessità forchetti. In i criptu di criptu tradiziunali, tutti i paràmetri sò stabiliti in u stadiu iniziale è ogni tentativu di cambià in realtà porta à l'emergenza di un "universu criptu alternativu". U sicondu mutivu hè u supportu per sfracicà (frammentazione, frammentazione) blockchain. Blockchain hè una struttura chì ùn pò micca esse più chjucu cù u tempu; è di solitu ogni nodu rispunsevuli di u funziunamentu di a reta hè furzatu à almacenà cumplettamente. In i sistemi tradiziunali (centralizati), u sharding hè utilizatu per risolve tali prublemi: alcuni di i registri in a basa di dati sò situati in un servitore, alcuni in un altru, etc. In u casu di criptu di munita, tali funziunalità hè sempre abbastanza rara - in particulare, per via di u fattu chì hè difficiule di aghjunghje sharding à un sistema induve ùn era micca urigginariamente pianificatu.

Cumu TON pensa à risolve i dui prublemi sopra?

cuntenutu Blockchain. Catene di travagliu.

TON: Telegram Open Network. Parte 2: Blockchains, sharding

Prima di tuttu, parlemu di ciò chì hè pianificatu per esse guardatu in u blockchain. I stati di cunti ("portafogli" in u casu di basa) è i cuntratti intelligenti seranu guardati quì (per simplicità, assumeremu chì questu hè u listessu cum'è cunti). In essenza, questu serà una tavola di hash regulare - i chjavi in ​​questu seranu identificatori account_id, è i valori sò strutture di dati chì cuntenenu cose cum'è:

  • equilibriu;
  • codice smart contract (solu per smart contracts);
  • almacenamiento di dati di cuntratti intelligenti (solu per cuntratti intelligenti);
  • statistiche;
  • (opzionale) chjave publica per i trasferimenti da u contu, per default account_id;
  • fila di missaghji in uscita (qui sò inseriti per trasmette à u destinatariu);
  • una lista di l'ultimi messagi mandati à stu contu.

Cumu l'esitatu sopra, i blocchi stessi sò custituiti da transazzione - missaghji trasmessi à diversi account_id account. Tuttavia, in più di account_id, i missaghji cuntenenu ancu un campu di 32-bit workchain_id - cusì chjamatu identificatore catena di travagliu (catena di travagliu, blockchain chì travaglia). Questu permette di avè parechje blockchains indipindenti l'una di l'altru cù diverse cunfigurazioni. In questu casu, workchain_id = 0 hè cunsideratu un casu speciale, catena di travagliu zero - hè i saldi in questu chì currispondenu à a criptu di TON (Grammi). Hè assai prubabile, in prima, altri catene di travagliu ùn esisteranu micca.

Shardchains. Paradigma di Sharding Infinitu.

Ma a crescita in u numeru di blockchains ùn ferma micca quì. Trattemu di sharding. Fighjemu chì ogni contu (account_id) hè attribuitu u so propiu blockchain - cuntene tutti i missaghji chì venenu à ellu - è i stati di tutti tali blockchain sò almacenati in nodi separati.

Di sicuru, questu hè assai persu: assai prubabilmente, in ognunu di questi shardchains (shardchain, shard blockchain) e transacciones ghjunghjeranu assai raramenti, è seranu necessarii assai nodi putenti (in aspettu, aghju nutatu chì ùn parlemu micca solu di i clienti nantu à i telefunini - ma di i servitori serii).

Per quessa, shardchain combina cunti da i prefissi binari di i so identificatori: se un shardchain hà un prefissu di 0110, allora includerà transazzione di tutti account_ids chì cumincianu cù questi numeri. Questu shard_prefix pò avè una durata da 0 à 60 bits - è u principale hè chì pò cambià dinamicamente.

TON: Telegram Open Network. Parte 2: Blockchains, sharding

Appena unu di i shardchains cumencia à riceve troppu transazzione, i nodi chì travaglianu nantu à questu, secondu e regule predeterminate, "split" in dui figlioli - i so prefissi seranu un pocu più longu (è per unu d'elli questu pocu serà. uguale à 0, è per l'altru - 1). Per esempiu, shard_prefix = 0110b si divide in 01100b è 01101b. À u turnu, se dui shardchains "vicini" cumincianu à sentenu abbastanza à l'aise (per qualchì tempu), si fusionanu di novu.

Cusì, u sharding hè fattu "da u fondu" - assumemu chì ogni cuntu hà u so propiu shard, ma per u mumentu sò "incollati" da prefissi. Questu hè ciò chì significa Paradigma di Sharding Infinitu (paradigma di sharding infinitu).

Separatamente, vogliu enfatizà chì e catene di travagliu esistenu solu virtualmente - in fattu, workchain_id hè parte di l'identificatore di una shardchain specifica. In termini formali, ogni shardchain hè definitu da un paru di numeri (workchain_id, shard_prefix).

Correzione di errore. Blockchains verticale.

Tradizionalmente, ogni transazzione nantu à una blockchain hè cunsiderata cum'è "set in stone". In ogni casu, in u casu di TON, hè pussibule "riscrivite a storia" - in casu di qualcunu (u cusì chjamatu. nodu di piscadori) pruverà chì unu di i blocchi hè statu firmatu incorrectamente. In questu casu, un bloccu di currezzione speciale hè aghjuntu à u shardchain currispundente, chì cuntene l'hash di u bloccu stessu esse currettu (è micca l'ultimu bloccu in u shardchain). Pensendu à a shardchain cum'è una catena di blocchi disposti horizontalmente, pudemu dì chì u bloccu currettivu hè attaccatu à u bloccu erroneo micca à a diritta, ma da sopra - per quessa, hè cunsideratu chì diventa parte di una piccula "bloccata verticale". . Cusì, pudemu dì chì i shardchains sò blockchains bidimensionali.

TON: Telegram Open Network. Parte 2: Blockchains, sharding

Se, dopu à un bloccu erratu, i cambiamenti fatti da ellu sò stati riferiti da i blocchi sussegwenti (vale à dì, novi transazzioni sò stati fatti nantu à quelli invalidi), i currettivi sò ancu aghjuntu à questi blocchi "in cima". Se i blocchi ùn anu micca affettatu l'infurmazioni "affettate", sti "onda currettiva" ùn sò micca appiicati à elli. Per esempiu, in l'illustrazione sopra, a transazzione di u primu bloccu, aumentendu u saldo di u cuntu C, hè stata ricunnisciuta cum'è incorrecta - per quessa, a transazzione chì diminuisce u saldo di stu contu in u terzu bloccu deve ancu esse annullata, è un bloccu currettivu. deve esse cummessu nantu à u bloccu stessu.

Semu devi esse nutatu chì, ancu s'è i blocchi currettivi sò raffigurati cum'è situati "sopra" l'uriginali, in fattu seranu aghjuntu à a fine di u blockchain currispundente (induve deve esse cronologicamente). U locu bidimensionale mostra solu à quale puntu in u blockchain seranu "ligati" (via l'hash di u blocu originale situatu in elli).

Pudete filusufà separatamente quantu hè bona a decisione di "cambià u passatu". Sembra chì s'ellu ammettimu a pussibilità di un bloccu incorrectu chì appare in a shardchain, allora ùn pudemu micca evitari a pussibilità di un bloccu currettivu sbagliatu. Quì, per quantu possu dì, a diferenza hè in u numeru di nodi chì devenu ghjunghje à u cunsensu nantu à novi blocchi - ci sarà un numeru relativamente chjucu di persone chì travaglianu in ogni shardchain ".gruppu di travagliu» nodi (chì cambia a so cumpusizioni abbastanza spessu), è l'intruduzioni di blocchi currettivi necessitanu l'accunsentu di tutti nodi validatori. Parlaraghju più nantu à validatori, gruppi di travagliu è altri roli di nodi in u prossimu articulu.

Un blockchain per guvernà tutti

Ci hè una mansa d'infurmazioni listati sopra nantu à i sfarenti tippi di blockchains, chì si deve ancu esse guardatu in un locu. In particulare, parlemu di e seguenti informazioni:

  • circa u numeru è cunfigurazioni di workchains;
  • circa u numeru di shardchains è i so prefissi;
  • circa quali nodi sò attualmente rispunsevuli di quali shardchains;
  • hashes di l'ultimi blocchi aghjuntu à tutti i shardchains.

Cum'è pudete avè intuitu, tutte queste cose sò arregistrate in un altru almacenamentu blockchain - masterchain (masterchain, master blockchain). A causa di a prisenza di hashes da i blocchi di tutti i shardchains in i so blocchi, rende u sistema assai cunnessu. Questu significa, frà altre cose, chì a generazione di un novu bloccu in u masterchain accadirà immediatamente dopu à a generazione di blocchi in shardchains - hè previstu chì i blocchi in shardchains apparisceranu quasi simultaneamente circa ogni 5 seconde, è u prossimu bloccu in u shardchain. masterchain - un secondu dopu.

Ma quale serà rispunsevule per l'implementazione di tuttu stu travagliu titanicu - per mandà missaghji, eseguisce cuntratti intelligenti, furmendu blocchi in shardchains è masterchain, è ancu cuntrollà i blocchi per errori? Tuttu chistu serà fattu segretamente da i telefoni di milioni d'utilizatori cù u cliente Telegram installatu nantu à elli? O, forsi, a squadra di Durov abbandunà l'idee di a decentralizazione è i so servitori facenu a manera antica?

In fatti, nè una nè l'altra risposta hè curretta. Ma i marghjini di questu articulu sò prestu prestu, per quessa, parlemu di i diversi roli di i nodi (pudete avè digià nutatu menzioni di certi di elli), è ancu di a meccanica di u so travagliu, in a parti dopu.

Source: www.habr.com

Add a comment