Blockchain pour les plus petits

Clause de non-responsabilité


Ce texte n'est pas lié aux projets de cryptographie existants et représente un "cheval sphérique dans le vide" pour la toute première immersion dans le sujet. Les spécialistes n'auront probablement pas besoin de telles vérités communes. Et oui, c'est Longrid. Bien que beaucoup reste dans les coulisses.


Introduction


Tout d'abord, la blockchain est à la mode. Et c'est la principale raison pour laquelle ils sont intéressés. Il semble que ce soit une telle technologie "joker" qui puisse et devrait être appliquée partout. Mais ce n'est pas vrai. Et pour que vous n'ayez pas à me croire sur parole, je vais vous dire ce qu'est réellement la blockchain, où elle est applicable et où elle est nécessaire, comme un parapluie pour pêcher.


Alors ...


Blockchain


Le terme vient de l'anglais "block chain", qui se traduit par "block chain". Chaque nouveau bloc contient le hachage du bloc précédent, formant une liste liée individuellement dans laquelle le hachage de chaque bloc est enregistré dans le bloc suivant.


Le hachage de bloc dépend de tous les blocs précédents. Ainsi, le hachage du dernier bloc reflète l'état de la base de données entière. Et la chaîne de hachage du dernier bloc au premier est la preuve de son immuabilité. Lorsqu'un nouveau bloc est ajouté, il est «lié» au dernier bloc et son hachage devient le nouvel état de la base de données.


Si un bloc existant est modifié, la chaîne de hachage sera violée et le lieu de sa violation indiquera le bloc modifié. Vous pouvez recalculer et modifier tous les hachages jusqu'à la fin de la chaîne - alors la connectivité cryptographique restera, mais le hachage du dernier bloc changera. Si l'état de la base de données - et c'est le hachage du dernier bloc - est bien connu, la falsification est impossible.


En fait, c'est tout.


Base de données


Nous savons déjà que la blockchain n'est qu'un moyen de protéger la base de données contre les interférences. Quelle devrait être la base de données elle-même? En fait, il peut s'agir de n'importe quel système de fichiers SQL, BigTable, Key-Value. Mais l'utilisation de la blockchain impose ses limites.


La base de données protégée par blockchain des quatre propriétés CRUD ("Créer, lire, mettre à jour, supprimer") n'autorise que les deux premières. Vous ne pouvez pas modifier ou supprimer des données d'une telle base de données, car elle perdra immédiatement l'intégrité cryptographique. La chaîne de blocs vous permet de lire et de créer uniquement de nouveaux blocs.


Une telle base défectueuse s'appelle un registre. Pour le flux de travail, l'activité des brevets et - bien sûr! - les crypto-monnaies un tel modèle est acceptable et organique. Mais l'utiliser comme base de données à usage général est presque impossible.


Le mot clé ici est «presque». Il existe un moyen de réconcilier une base de données blockchain «à part entière» et cette méthode est appelée «journal des transactions».


Prenons, par exemple, une base de données clé-valeur simple qui stocke des entités arbitraires associées à une clé unique. Ils peuvent être créés et supprimés, lus et modifiés.


Pour chaque entité, calculez le hachage, puis triez (triez par ordre alphabétique) la liste résultante. Pour chaque paire de hachages, calculez le hachage de la somme littérale (concaténation) de ces hachages. Ensuite, dans la liste résultante, faites de même. Et ainsi de suite jusqu'à ce que nous construisions un arbre de hachage, au-dessus duquel il y aura une seule valeur. Ce mécanisme est appelé l'arbre Merkle et en haut, il y aura un hachage qui reflète l'état de la base de données.


Ensuite, nous allons créer une liste liée individuellement selon toutes les règles de la blockchain, qui contiendra des enregistrements sur l'état de la base de données, la clé et la nouvelle valeur de l'entité. Eh bien, et le hachage de l'entrée précédente, bien sûr. Ce sera déjà une blockchain - une blockchain de transactions, dont chacune est associée à l'état de la base de données et contient l'essentiel des modifications apportées par cette transaction.


Si la clé est nouvelle, l'entité est créée. S'il existe, il change. Si la nouvelle valeur est zéro, l'entité est supprimée. Chaque changement entraîne un recomptage des branches affectées de l'arbre Merkle et un nouvel état de la base.


En principe, le même schéma peut être mis en œuvre pour une base de données relationnelle, et pour toute autre - si nécessaire. Le journal des transactions enregistrera les changements, l'arbre Merkle prouvera sa fiabilité. Pas mal, non?


Décentralisation des données


Pourquoi s'embêter avec tous ces mécanismes d'authentification? Ensuite, de cette façon, vous pouvez créer une base de données distribuée en laquelle vous pouvez avoir confiance. Même si les nœuds mêmes du réseau dans lequel cette base de données est stockée, nous n'avons pas confiance.


Les bases de données décentralisées sont répliquées et distribuées. Chaque base de données répliquée par l'utilisateur est stockée de manière égale et complète, et les bases de données distribuées sont stockées différemment et partiellement. Le plus de la première approche réside dans le contrôle total de la base de données et le moins dans les exigences élevées en termes de volumes de stockage. Les avantages et les inconvénients de la deuxième approche sont reflétés - le volume de la base de données entière peut être plusieurs fois supérieur aux capacités d'un seul utilisateur, mais au prix d'un contrôle insuffisant et, par conséquent, d'une diminution de la confiance dans sa fiabilité.


Tout utilisateur de la base de données peut ajouter son propre bloc. Mais la base n'est fiable que lorsque toutes ses instances sont identiques. La synchronisation est un moyen de maintenir la fiabilité d'une base de données. Il est possible d'effectuer toutes les opérations avec lui - lecture ou écriture - à condition qu'il soit suffisamment pertinent pour que les mêmes actions avec lui conduisent aux mêmes résultats.


En général, la synchronisation consiste à obtenir le dernier état de la base de données, puis à obtenir séquentiellement les éléments manquants jusqu'à ce que l'intégrité soit entièrement restaurée.


Réseau distribué


La décentralisation garantit la stabilité du système contre les influences destructrices - à la fois de la part de pirates individuels et de sociétés et de structures dirigeantes. Un système décentralisé vivra tant qu'il y aura un lien entre ses éléments.


Les participants à un réseau distribué forment un graphique dont les nœuds sont des ordinateurs connectés à Internet et les bords entre eux sont connectés par des bords. Chaque nœud a un identifiant unique - un compte, une clé publique d'une signature électronique ou autre chose. Cet identifiant est utilisé pour adresser les messages, et la façon de les acheminer dépend de l'architecture du réseau.


L'architecture la plus simple est un graphe entièrement connecté, dans lequel chaque identifiant correspond à une adresse réseau réelle et il y a la possibilité de communication de tous avec tout le monde. Mais dans une véritable infrastructure réseau, la possibilité de connecter tout le monde avec tout le monde ne l'est peut-être pas. De plus, en raison de la nécessité d'avertir tous les participants, avec la croissance du réseau, le trafic augmentera proportionnellement au nombre de participants. Tôt ou tard, il y aura une limite d'efficacité, au-delà de laquelle la dégradation du réseau commencera, jusqu'à son arrêt complet.


Un modèle plus complexe est un graphique cyclique dirigé. Les identifiants sont disposés dans une seule liste, qui est bouclée de sorte que chaque nœud ait des "voisins" à gauche et à droite. Recevant un message des voisins de gauche et l'envoyant à droite, les nœuds le délivrent par relais. Ce schéma ne dépend pas de la taille du réseau, car les nœuds interagissent avec un nombre fixe de voisins relativement petit. Ce schéma peut être amélioré et complété, mais le fait est que chaque nœud n'interagira qu'avec son propre sous-réseau, qui, se chevauchant partiellement, implémentera un graphe connecté de taille illimitée.


Mais cela ne fournit pas de solution pour les situations dans lesquelles les nœuds peuvent se connecter unilatéralement à d'autres. Depuis les réseaux privés cachés derrière les routeurs NAT (Network Address Translation), ils peuvent envoyer des messages, mais ils ne peuvent pas les recevoir. Pour eux, il est nécessaire de mettre en œuvre un modèle dans lequel ils établissent une connexion, et les messages sont reçus en réponse à une demande. Le "problème de traversée NAT" peut avoir une solution sous la forme de routeurs "balises" séparés ou d'autres nœuds qui mettent en œuvre ces fonctions. Le modèle avec les routeurs est similaire au modèle en étoile de l'architecture de réseau.


Les architectures en anneau et en étoile peuvent être améliorées et utilisées en combinaison, mais l'architecture de réseau maillé est la plus efficace, ce qui transforme le graphe entièrement connecté d'origine en un graphe non connecté en réduisant les connexions et en transformant les connexions directes en une «route» à partir de plusieurs intermédiaires. Pour ce faire, chaque nœud doit pouvoir, si nécessaire, devenir un routeur pour les voisins. Les chemins d'accès et les arrêts de nœuds particulièrement inaccessibles font peur à une telle architecture - le réseau reconstruira les routes endommagées et s'auto-réparera. Et c'est le plus efficace en termes de performances.


Mais il faut tout payer. L'appareil mathématique des réseaux maillés (de l'anglais. Mesh - "cell") est beaucoup plus compliqué et je m'abstiendrai probablement de le décrire ici. Ceux qui sont intéressés, je ferai référence au "problème du voyageur de commerce", puis - si cela ne les effraie pas - à la théorie des jeux. Il y a toutes les réponses là-bas - pour ceux qui peuvent les obtenir.


Problème de branchement


La blockchain a un défaut fatal - où il y a simplement des listes connectées, des arbres peuvent exister. Cela ne contredit rien, car plusieurs suivants peuvent faire référence au même bloc. Chaque branche résultante est fiable, maintient l'intégrité cryptographique et possède son propre état. Mais la base dans son ensemble entre dans une superposition de tous ces états et devient incertaine.


Ce problème est particulièrement pertinent dans un système décentralisé, où différents nœuds peuvent indépendamment apporter des modifications à la base de données, provoquant des fourches (de l'anglais fork - "fork"). Il y a deux façons de résoudre ce problème: éviter la situation d'enregistrement simultané et éliminer les conséquences.


Exploitation minière


Vous avez probablement entendu dire que les utilisateurs de BitCoin brûlent de l'électricité la plupart du temps, gaspillant des ressources informatiques pour résoudre un problème mathématique inutile? Sinon, maintenant vous savez que ...


Un nombre aléatoire est ajouté à chaque nouveau bloc. Il est aléatoire, mais le hachage du bloc résultant doit répondre aux conditions. Par exemple, commencez par 10 zéros. Et maintenant, les nœuds souhaitant écrire un nouveau bloc trient ces numéros jusqu'à ce que le hachage remplisse les conditions de complexité spécifiées. Et les «fermes» d'ordinateurs, de cartes vidéo ou d'appareils spécialement conçus absorbent les kilowatts et produisent de la chaleur. Eh bien, et les hachages nécessaires, bien sûr.


Pourquoi tout ça? Mais très simple. Parmi les nombreux participants à la théorie des probabilités, le hachage est trouvé toutes les 10 minutes par une seule personne. Il écrit le bloc. C'est le moyen le plus simple de se protéger contre la ramification.


Et le plus inefficace, car malgré la complexité de la tâche, des «fourches» arrivent. Ensuite, ceux qui trouvent la fourche retirent les blocs de la branche la plus courte et la transfèrent séquentiellement à l'extrémité de la plus longue.


Et pour que les participants au réseau soient intéressés à faire tout cela, pour les ressources qu'ils dépensent, ils obtiennent des pièces de crypto-monnaie «de nulle part». C'est l'exploitation minière (de l'anglais. "Mining" - travail dans la mine).


PoW, PoS, DPoS ...


Le calcul des hachages n'est qu'une façon de choisir l'un des nombreux. Il s'agit d'une preuve de travail, ce qui signifie «preuve de travail effectué». En calculant le hachage souhaité, les participants font le travail, et le hachage trouvé est cette évidence. Preuve d'électricité gaspillée.


Quand les verts en ont parlé, peu de gens s'en sont inquiétés. Mais lorsque de nouveaux fonds ont commencé à menacer les anciens, les gouvernements ont rappelé l'écologie. Cependant, l'inutilité de l'exploitation minière à cette époque n'était pas comprise uniquement par ceux qui en recevaient de l'argent. Il est temps de changer quelque chose ...


Et il est apparu une preuve de participation, «preuve de propriété». Tout est simple, qui est plus riche - il a raison. En fait, tout est un peu plus compliqué, mais peu importe - la création de blocs (et l'obtention de récompenses pour eux!) Est entre les mains de ceux qui ont une part de propriété plus élevée.


Puis sont venus les DPoS (PoS délégués avec démocratie et vote), PoI ("preuve d'importance" basée sur certaines métriques comme l'activité d'activité et la disponibilité), et plus, et plus, et plus ...


L'essence reste la même - un mécanisme est nécessaire qui permet à un seul d'écrire un nouveau bloc dans une chaîne dans chaque intervalle de temps. Pourquoi devrait-il prouver en quelque sorte qu'il est digne et généralement meilleur que quiconque.


Et sinon prouver?


Et ici, nous nous arrêtons et nous souvenons pourquoi il est si important pour nous que l'enregistrement ait été fait par une seule personne. Oui, pour que la chaîne ne se divise pas en arbre. Mais pourquoi?


Si une chaîne a deux derniers blocs, la base de données est dans deux états en même temps. Et si plus - alors dans une superposition de tous les états possibles. La base devient incertaine. L'ensemble de la base, dans son intégralité. Avons-nous besoin d'une intégrité monolithique de la base? Afin de vérifier l'authenticité d'un élément, la base entière n'est pas nécessaire - seules les parties de celui-ci qui lui sont associées sont nécessaires.


Et si nous changeons indépendamment la base de données à différents endroits et que chaque changement est pris en charge par l'intégrité cryptographique, alors nous aurons une base de données indéfinie, dont les sous-ensembles seront déterministes. Et si, en plus de la ramification, nous traitons également de la ramification, la mesure de l'incertitude augmentera et diminuera en même temps. Et n'importe quel nœud peut ajouter n'importe quel bloc à la chaîne à tout moment, si vous prenez d'abord soin de ramener tous les états des éléments affectés dans un sous-ensemble déterministe de la base de données.


Il s'agit d'une blockchain sans blockchain. Plus précisément, un registre sur un graphe orienté acyclique.


Crypto-monnaie


Nous disons "crypto-monnaie" - nous voulons dire "blockchain", nous disons "blockchain" ... mais non, l'inverse n'est pas vrai. Qu'est-ce que la crypto-monnaie?


Imaginez une base de données contenant des entrées avec les champs "compte expéditeur", "compte destinataire" et "montant". Rien de plus, juste ces trois colonnes. Avec chaque entrée dans le compte de l'expéditeur, le montant d'argent devient inférieur du montant indiqué, et sur le compte du destinataire - plus. Si vous collectez tous les enregistrements dans lesquels l'argent est transféré sur un seul compte et les ajoutez, puis soustrayez du montant reçu toutes les opérations dans lesquelles l'argent est transféré du compte, nous obtenons le montant qui se trouve maintenant dans ce compte. À chaque nouvelle entrée, l'argent est transféré d'un compte à l'autre, etc.


Vous voyez comme c'est simple? Un seul tableau de trois colonnes - et nous avons déjà notre propre système financier. Et tout serait comme ça, sinon pour un problème. Au tout début, lorsque la table est vide, tous les comptes ont la même valeur - zéro. Et cela signifie qu'aucune opération ne peut être effectuée. Eh bien, parce que sinon, certains des comptes auraient une valeur négative, et cela ... est-ce mal? Ou pas?


Emission


Si nous considérons le papier-monnaie comme un reçu de la dette publique, le montant total des billets représente la dette totale de l'État envers ses citoyens. Et si sur leurs comptes différents numéros avec un signe plus, alors sur le "compte d'état" conditionnel - leur somme avec un signe moins. Alors tout converge.


Les comptables appellent ce solde «solde», ils ont également des comptes actifs (strictement négatifs) et passifs (strictement positifs). Ils ont également des comptes actifs-passifs, mais si la raison et la vie vous sont chères, restez à l'écart des tourbières de la comptabilité, car ils ont même un «solde sur des comptes hors bilan», dont tous les esprits ne peuvent pas supporter l'existence.


La signification est la suivante. Étant donné que les comptes des émetteurs peuvent être négatifs, ils transfèrent de l’argent qu’ils n’ont pas et donc les «impriment». Théoriquement, ils peuvent le faire en n'importe quelle quantité. Dans la pratique, l'émetteur fait partie d'un système qui devrait réguler la masse monétaire. Comment faire - chaque projet décide par lui-même.


L'inflation


Toute la valeur totale du système est estimée dans la dette totale des participants les uns envers les autres. L'unité monétaire est le quantum de cette dette totale. Plus il y a d'unités monétaires mises en circulation, plus le coût de chacune d'elles est faible. Et plus la valeur objective des économies de chaque participant est faible.


L'inflation est un effet secondaire de tout problème. Si possible, cela doit être évité.


Déflation


Si un montant est transféré sur le compte de l'émetteur, cet argent sera «brûlé». Le montant de la masse monétaire diminuera, la valeur de l'unité monétaire augmentera et tous les participants au système deviendront un peu plus riches. De plus, le philanthrope, bien sûr, qui a retiré son argent de la circulation.


Un mécanisme d'incitation peut être attaché à ce mécanisme. Par exemple, pour fournir la possibilité d'effectuer certaines actions pour une commission qui est débitée des participants à l'échange d'argent. Par exemple, en brûlant son propre argent, un participant perçoit une commission pour le traitement des paiements des expéditeurs de fonds.


La suppression d'une partie de la masse monétaire de la circulation augmente la valeur de la partie restante. Et ce processus mérite d'être stimulé, mais pas trop activement, car la masse monétaire doit être suffisamment importante pour assurer toute l'activité requise.


L'essentiel, comme dans tout, est l'équilibre et le sens des proportions.


Pas seulement de l'argent


Lorsque nous avons parlé de blockchain, nous avons mentionné les bases de données arbitraires, et pas seulement les enregistrements compte-compte-somme. Ainsi, nous pouvons stocker toutes les informations dans une base de données distribuée. Cela ouvre de grandes opportunités. Une base de données publique qui ne peut pas être détruite et falsifiée trouvera une application partout.


Il vous suffit de trouver une incitation pour que les participants aient un sens pour eux-mêmes en gardant leurs ordinateurs allumés.


Contrats intelligents


Techniquement, c'est la même chose que les procédures stockées dans les bases de données. Autrement dit, du code exécutable dans un langage de programmation, qui peut apporter des modifications à la base de données. Et le nom est parce qu'il s'est tellement développé historiquement.


Dans les crypto-monnaies, un contrat intelligent est une sorte de participant qui n'est pas une personne vivante, mais un automate dont le comportement est défini par le code. Lorsqu'une opération de transfert d'argent est effectuée vers ce membre, le code est exécuté. Il peut tout faire - transférer le montant reçu aux autres participants par versements, économiser l'argent reçu jusqu'à l'heure X, puis choisir quelqu'un seul et lui transférer tout l'argent. Ce dernier, soit dit en passant, est une mise en œuvre classique de toutes sortes de roulettes, loteries et loteries. Vous pouvez simplement enregistrer dans la base de données les informations que certains participants ont payées pour le service, puis un autre participant connecté pourra recevoir ces informations et fournir le service.


Il existe une certaine variété de tels «automates» appelés «oracles». ( , ) . "" , . , , .


, . - , , .


, — , .


Nous pouvons donc créer une machine virtuelle distribuée à l'intérieur d'une base distribuée. Le même fiable (c'est-à-dire vérifiable), comme tout le reste.


Conclusion


En fait, c'est tout.Un grand nombre d'innovations ne sont rien de plus qu'une mise en œuvre plus efficace des idées décrites ici sous une forme ou une autre. Si on vous dit quelque chose de «révolutionnaire», sachez simplement qu'ils veulent vous tromper.


Soit dit en passant, des pyramides de type MMM sont déjà apparues dans la crypte.


Merci de votre attention.

Source: https://habr.com/ru/post/fr480220/


All Articles