TON Blockchain Architecture système de stockage et de gestion des données dans TON:
- organisation des données comme bag of cells;
- le charme au niveau des comptes (ISP);
- les conditions de consensus et de validation;
- masterchain Il coordonne toutes les charades et paramètres du réseau.
Bag of Cells#
Toutes les données TON sont présentées par la collection Les cellules Chaque cellule contient:
- jusqu'à 1023 bits les données;
- jusqu'à 4 liens sur les autres cellules (par SHA-256-hash);
- 2 bytes de descripteur + les données.
Les cellules sont organisées en Des arbres ou des DAG. (Directed Acyclic Graph). TL-B (Type Language — Binary).
Infinite Sharding Paradigm (ISP)#
Chaque compte est unique. accountchainLes blocs virtuels de la chaîne de comptes Ils se regroupent dans les blocs de la chaîne de caractères pour plus d'efficacité.
L'état de la chaîne = l'état de tous les comptes du chard. Le bloc de la chaîne = une collection de blocs virtuels pour certains comptes.
Dans TON, il n'y a pas de différence entre un contrat intelligent et un compte, c'est la même chose.
La structure du bloc de la chaîne#
Il est divisé en 2 parties:
Non divisée
| Le composant | Le contenu |
|---|---|
| InMsgDescr | Décrire les messages entrants |
| OutMsgDescr | Décrire les messages sortants |
| Block header | Les hachages, les paramètres du bloc |
| OutMsgQueue | La file d'attente des messages non livrés (supprimés après leur livraison dans les chartes voisines) |
Divisée
Hashmap account_id → account_state. État du compte:
- le solde en Grams;
- le code du contrat intelligent;
- les données permanentes du contrat;
- les statistiques d ' utilisation du stockage;
- une description formelle optionnelle de l ' interface;
- l'information publique de l'utilisateur.
Masterchain#
- Ne se divise pas et ne s'unit pas (single chain);
- Un prédécesseur (sauf le bloc zéro avec initial config);
- Il contient liste de tous les chards actifs et les derniers blocs de chacun;
- Il le garde. paramètres à configurer C'est un contrat de configuration spécifique.
Paramètres de configuration
- Le montant minimum des cotisations des validateurs;
- Taille maximale du groupe de validateurs;
- Le nombre maximal de blocs pour lesquels le groupe est responsable;
- Le processus d ' élection et de sanction des validateurs;
- Les ensembles actuels et suivants de validateurs;
- Le processus de modification des paramètres.
Valeur initiale et code les contrats intelligents fondamentaux dans avec le bloc zéro masterchain.
Conditions du consensus#
Ils garantissent la correction des changements de données uniquement par des transactions valides.
| Le type | Définition |
|---|---|
| Le monde entier | Invariants pour l'ensemble du réseau (par exemple, garanties de livraison des messages) |
| Les locaux internes | À l'intérieur d'un même bloc (par exemple, traitement des messages entrants) |
| Les locaux extérieurs | Entre les blocs, généralement des chartes voisines. |
Le bloc est valideLa responsabilité des validateurs génération et vérification.
Temps logique (LT)#
Un entier non négatif de 64 bits, est attribué aux événements:
- Événement dépendant LT a le plus de ses dépendances;
- Un événement indépendant est LT = 0;
- Messages à envoyer héritent du LT de la transaction;
- Transaction et bloc Ils ont l'intervalle de tempsC'est le titre du film.
LT est nécessaire pour organiser les événements. Pas d'horloge mondiale.
État général et visibilité#
- Le bloc masterchain enregistre l ' état de tous les chards par le biais des hashs de leurs derniers blocs;
- Le bloc de la chaîne contient le hash du dernier bloc masterchain dans le titre;
- Les blocs sont visibles. ceux indiqués dans ce bloc masterchain + leurs prédécesseurs;
- Le bloc de chardon Il importe les messages de OutMsgQueue voisins visibles; ne peut pas inclure les messages des blocs invisibles.
Les contrats intelligents#
Création
Applicable à la chaîne de traces de base et à la masterchain (les autres chaînes peuvent avoir leurs propres mécanismes):
- Un message à une adresse non mentionnée précédemment Le sens → crée ** Compte non initialisé ** avec un bilan, mais sans code ni données;
- Message du constructeur contient initial code + data → crée un contrat intelligent;
- Constructor est généralement une valeur pour le solde initial (le minimum dépend des frais de stockage);
- Les contrats intelligents peuvent Nous pouvons créer nous-mêmes Les nouveaux contrats intelligents pour les transactions.
Les modifications
- Données permanentes sont modifiés lors de l ' exécution du code dans TVM;
- Si le code ne prévoit pas de changement → les données sont inchangées;
- Le code lui-même ne peut être modifié que si le code actuel le permet.
Destruction et gel
- Le contrat Vous ne pouvez pas le détruire., tant que le solde est > le minimum;
- À la le solde négatif le compte Il est gelé. code + data sont remplacés par un hash de 32 bytes;
- Le hash est conservé pendant un certain temps → le propriétaire peut restaurer le compte en transférant des fonds et en envoyant un message avec code + data.