Aujourd'hui, nous aimerions esquisser un nouveau sujet de discussion, en examinant brièvement la blockchain du point de vue de l'informatique - en tant que l'une des structures de données. Récemment, la blockchain a été de plus en plus utilisée en dehors du segment des crypto-monnaies , et cette tendance mérite certainement l'attention. Parlons-en!
La technologie blockchain peut être expliquée de différentes manières. Jusqu'à récemment, la blockchain était principalement considérée en termes de crypto-monnaies. Bitcoin est la première association de blockchain que beaucoup d'entre nous ont. Mais le stockage des transactions de crypto-monnaie n'est qu'un des nombreux cas d'utilisation de la blockchain. Dans cet article, nous prendrons du recul de ce point de vue et envisagerons la blockchain dans le contexte plus général de l'informatique.
La blockchain est une structure de données
Une structure de données est un moyen de stocker, d'organiser et de gérer des données. La structure de données vous permet d'accéder à ces données, de les ajouter, de les modifier et de rechercher les données contenues dans cette structure. Les structures de données les plus courantes et les plus élémentaires comprennent les tableaux et les listes chaînées .
Tableau
Le tableau contient un certain nombre d'éléments énumérés. Il peut s'agir de chiffres, de lettres, de mots ou même de fichiers entiers. Grâce aux indices, vous pouvez faire référence à chaque élément du tableau. Ainsi, si vous souhaitez modifier une entrée dans un tableau et que vous savez où elle se trouve, vous pouvez y accéder instantanément .
Tableau unidimensionnel avec six éléments
Listes liées
Les nœuds sont des éléments de données inclus dans une liste liée. Le nœud contient au moins un objet de données et un pointeur vers l'élément suivant. La fonction d'un pointeur est d'indiquer à l'ordinateur où se trouve l'élément suivant dans une liste donnée.
Si vous regardez le premier élément de la liste et souhaitez faire référence au second, regardez le pointeur qui vous mènera au nœud suivant. Il est plus facile d'ajouter des données à une liste liée qu'à un tableau, car il doit être développé d'un nœud et l'ajout de données à un tableau augmentera le nombre d'éléments dans ce tableau. Mais lorsque vous travaillez avec des listes liées, vous ne disposez pas d'un accès instantané aux données.
Si vous recherchez un élément de données spécifique dans une liste chaînée, vous commencez par regarder le premier nœud de cette liste, sa tête... Si ce n'est pas l'élément que vous recherchiez, vous suivez le pointeur qui vous amène au nœud suivant. Si ce nœud ne contient pas les données que vous recherchez, vous continuez à suivre les liens de nœud en nœud jusqu'à ce que vous trouviez les données dont vous avez besoin.
Liste liée à trois nœuds
Blockchain
Dans le contexte des structures de données, la blockchain ressemble le plus à une liste chaînée. De plus, dans la blockchain, les données sont divisées en conteneurs appelés blocs . Les blocs sont assez similaires aux nœuds de liste chaînée. Chaque bloc contient un lien qui est un hachage du bloc précédent. Il agit comme un lien vers le bloc précédent et aide à maintenir l'ordre dans la chaîne de blocs.
La principale différence entre la blockchain et la liste liée est que chaque lien de la blockchain est sécurisé par cryptographie. Vous avez peut-être entendu le terme «ajouter uniquement» appliqué à la blockchain. Cela signifie que vous ne pouvez ajouter de nouvelles données à la blockchain qu'en complétant la chaîne par l'avant. La validité des liens protégés est constamment vérifiée. S'il était possible d'insérer un bloc malveillant au milieu de la blockchain, par exemple entre les blocs 1 et 3 dans le schéma ci-dessous, alors il serait possible de mettre un lien vers le bloc précédent 1, mais pas vers le bloc 3 suivant.
Chaque nouveau bloc est construit au-dessus de l'existant, et cette procédure est généralement appelée confirmation. Plus le bloc est ancien, plus il aura de confirmations. Chaque confirmation rend difficile la falsification des données dans le bloc. Dans le diagramme suivant, le bloc 2 a une confirmation. Pour simuler les données du bloc 2, vous devrez recréer un bloc valide contenant un nouveau lien valide. Après chaque confirmation suivante, vous devrez recréer un autre bloc. Ainsi, plus le bloc est ancien, plus la certitude qu'aucune modification ne sera apportée à ce bloc est élevée.
Les liens entre les blocs dépendent non seulement de l'ordre des blocs, mais également des données contenues dans chaque bloc. Il n'est pas possible d'ajouter ou de supprimer des données d'un bloc dans la blockchain. C'est sur cette propriété que repose la certitude que rien n'arrivera aux données placées dans la blockchain. Naturellement, tout faux est évident dans la structure de données de la blockchain. Toute modification apportée aux données rompt les liens vers tous les blocs suivants.
Bien qu'il soit impossible de supprimer ou de modifier des données sur la blockchain, il est facile d'ajouter des données à un nouveau bloc attaché à la chaîne. Par exemple, une nouvelle transaction peut être ajoutée à la blockchain de crypto-monnaie. La transaction est facile à vérifier car toutes les transactions précédentes enregistrées sur le réseau sont immuables. Lorsqu'un montant X est requis à partir de l'adresse Y, le solde de cette adresse doit être d'au moins X.
Les crypto-monnaies ne sont qu'une application particulière de la technologie blockchain. La blockchain devient rapidement une option de plus en plus viable pour la gestion de la chaîne d'approvisionnement, la gestion de flotte, etc.
Conclusion
La blockchain est une méthode de stockage de données applicable en informatique. Les éléments de la blockchain - ses blocs - sont liés de manière cryptographique les uns aux autres. Il n'est pas possible de modifier les données une fois qu'elles ont été écrites dans le bloc. C'est la valeur de la blockchain. Il s'agit d'un registre immuable dans lequel vous pouvez stocker des données en toute sécurité tout en fonctionnant dans un environnement non approuvé.
Je voudrais terminer cet article par un tweet contenant la quintessence des propriétés de la technologie blockchain et illustrant sa place parmi d'autres structures de données.
, , .
, , . , – — @NickSzabo4