Les technologies de la blockchain ont été référencées par certains comme l'invention la plus influente depuis Internet lui-même. Alors que le public interprète la blockchain comme synonyme de crypto-monnaies spéculatives, la blockchain a en fait une gamme incroyablement large d'applications pour le monde moderne. En fait, les crypto-monnaies ne sont qu'une petite facette du monde de la blockchain, de nombreuses solutions en production étant dirigées par des organisations privées - assez ironique pour une technologie censée être décentralisée.
Par exemple, Walmart utilise déjà la blockchain pour résoudre les problèmes de gestion de la chaîne d'approvisionnement . La combinaison de la blockchain avec les technologies de l'Internet des objets (IoT) (telles que les capteurs de température en direct) a permis à Walmart de créer des contrats intelligents pour la facturation automatique, les détails d'expédition, etc. S'il y a jamais eu une erreur dans les expéditions, ou si une contamination alimentaire est identifiée à tout moment, les événements peuvent être retracés instantanément via leur blockchain.
L'intégration de la blockchain et des solutions IoT a considérablement réduit le temps de résolution des factures de Walmart de sept jours à un éclair de 2,2 secondes.
Avec l'accélération rapide des technologies de la blockchain, je pense qu'il est de plus en plus nécessaire pour les professionnels de l'espace technologique de comprendre au moins les bases de la blockchain ainsi que son impact technologique - on ne sait jamais où les opportunités futures se manifesteront!
Après tout, mettre en œuvre votre propre blockchain n'est en fait pas aussi compliqué qu'il n'y paraît. Dans ce tutoriel, nous allons implémenter une blockchain de base en utilisant l'un des langages de programmation les plus populaires de 2021 - GoLang.
Construisons!
Une blockchain est l'une des rares technologies où le nom correspond au sens. Nous pouvons considérer une blockchain comme des blocs d'informations qui sont connectés les uns aux autres via un hachage - une sortie fixe cryptée générée à partir de données d'entrée. Chaque bloc se référençant les uns aux autres via des hachages, il est impossible de changer n'importe quel morceau de la chaîne sans modifier radicalement le reste de la chaîne. Cela donne à la blockchain les avantages de la sécurité ainsi que de la transparence (si vous rendez votre blockchain publique).
Pour continuer, chaque bloc de la blockchain peut contenir des données dans pratiquement n'importe quoi. Un cadre de base consisterait à inclure tous les enregistrements des transactions passées pour chaque bloc. Bitcoin fonctionne de la même manière, c'est pourquoi vous pouvez suivre les transactions Bitcoin jusqu'aux premiers échanges de la crypto-monnaie de Satoshi.
Au cas où les choses seraient encore floues, regardons un diagramme. Ci-dessous, nous avons trois blocs pour créer une blockchain. Le premier bloc est le bloc de genèse. Puisque rien ne précède, le champ de hachage précédent est vide. Nous utilisons toujours la propriété d'horodatage et les transactions initiales comme entrée pour notre algorithme de hachage. Cet algorithme crachera une grande chaîne de chiffres et de lettres représentant la valeur de hachage du bloc de genèse.
En passant au bloc 2, nous utilisons le hachage du bloc de genèse pour la valeur du hachage précédent du bloc 2. Cette action relie le bloc de genèse au bloc 2! Ensuite, nous prenons l'horodatage, la liste des transactions et la valeur de hachage précédente comme entrée de notre algorithme de hachage. L'algorithme nous donnera une nouvelle valeur de hachage pour représenter le bloc 2.
Nous continuons à répéter ce processus autant de fois que nous le souhaitons , n'étant limités que par la validité des blocs ainsi que par la possibilité de stocker la blockchain (la blockchain de Bitcoin fait environ 330 Go).
La première étape de la création de notre blockchain est de définir ce qu'est un bloc. Go nous facilite la vie pour créer des types personnalisés, nous pouvons définir le
Blocktype avec le code suivant. Ici, la
Blockstructure a quatre champs pour correspondre à notre diagramme ci-dessus.
L'étape suivante consiste à créer la version Go d'un constructeur pour créer de nouveaux blocs. L'entrée de la fonction prendra un tableau de chaînes pour représenter les transactions avec un tableau d'octets pour représenter la valeur de hachage précédente respective du bloc précédemment créé. La prochaine pièce à plonger est la
NewHash()fonction que nous allons implémenter ensuite.
La
NewHash()fonction prend un temps, une liste de transactions et un hachage précédent comme paramètres d'entrée tout en renvoyant un tableau d'octets pour représenter la valeur de hachage fraîchement générée. Dans cette fonction, nous allons simplement prendre toutes nos entrées et les mélanger dans un seul tableau d'octets appelé
input. Nous le faisons en utilisant la
append()fonction pour ajouter le
timeparamètre
prevHashen le convertissant
timeen un
stringavec
...comme suffixe afin d'ajouter la
timetranche à la
prevHashtranche.
Ensuite, nous bouclons
transactionset ajoutons chaque individu
transactionà l'objet
inputblob de données. La syntaxe amusante
string(rune(transaction))...n'est qu'une façon dans Go de convertir chaque élément de
transactionsen une tranche qui peut être ajoutée à
input. Il s'agit de taper des ordures, alors plongez-vous si vous le souhaitez vraiment.
Enfin, nous utilisons le
cryptopackage dans Go pour appeler
sha256.Sum256()avec
inputcomme paramètre. Cela nous donnera une nouvelle représentation de hachage pour toutes nos entrées de données. Nous revenons
hash[:]avec la
[:]syntaxe utilisée pour couper
hashà la bonne longueur au retour. Désolé de passer outre les détails, mais nous sommes ici pour créer une blockchain et ne pas comprendre les méthodes de frappe et de découpage de Go.
C'est vraiment tout ce dont nous avons besoin pour commencer à relier notre blockchain. Bien sûr, nous voudrons voir une sorte de sortie dans notre programme afin que nous puissions utiliser des méthodes d'aide pour l'impression:
Sucré! Il ne reste plus qu'à créer de nouvelles transactions, blocs et hachages. Nous pouvons le faire dans notre méthode principale. Nous définissons un tableau de chaînes pour enregistrer les transactions dans notre blockchain. Notez également comment nous passons un tableau d'octets vide à
NewBlock()pour générer notre premier bloc appelé
genesisBlock.
Pour créer de nouveaux blocs, nous transmettons la valeur de hachage du bloc précédent
NewBlock()ainsi que son historique de transactions correspondant. Si vous souhaitez voir l'intégralité du programme en un seul endroit, le voici:
Si nous devions exécuter ce programme, nous obtiendrions la sortie suivante:
$ go run example.go --- First Block --- time: 2021-04-05 15:12:18.813294 -0600 MDT m=+0.000074939 prevHash: Hash: 43ec51c50d2b9565f221155a29d8b72307247b08eaf6731cca Transactions: 0: "Izzy sent Will 50 bitcoin" 1: "Will sent Izzy 30 bitcoin" --- Second Block --- time: 2021-04-05 15:12:18.813477 -0600 MDT m=+0.000257244 prevHash: 43ec51c50d2b9565f221155a29d8b72307247b08eaf6731cca Hash: fcce5323a35cb67b45fe75866582db00fd32baeb92aac448c7 Transactions: 0: "John sent Izzy 30 bitcoin" --- Third Block --- time: 2021-04-05 15:12:18.813488 -0600 MDT m=+0.000269168 prevHash: fcce5323a35cb67b45fe75866582db00fd32baeb92aac448c7 Hash: fc1d3eee286970d85812b47c3a5bf016ae8c1de4f86b8ace972ffa Transactions: 0: "Will sent Izzy 45 bitcoin" 1: "Izzy sent Will 10 bitcoin"
Bien sûr, il y a BEAUCOUP de travail supplémentaire à faire si vous voulez quelque chose d'une réelle utilité. Les prochaines étapes de ce programme consisteraient à inclure la vérification de notre blockchain ainsi que des mécanismes pour créer et vérifier les transactions.
Assez drôle, ajouter une tokenisation ou un comportement de crypto-monnaie est beaucoup plus difficile que de créer une simple blockchain. Cependant, les fondamentaux restent les mêmes, car la technologie blockchain continue de trouver de nouveaux cas d'utilisation à travers le monde.
J'espère que vous avez apprécié la lecture de cet article et que vous avez pu apprendre quelque chose de nouveau. Il y a évidemment tant à ajouter à cet exemple, mais si quelque chose vous a frappé ou si vous souhaitez un prochain article donnant plus de détails sur l'un de ces sujets, je vous encourage à laisser un commentaire ci-dessous. Merci d'avoir lu!
L'intelligence artificielle (IA) est une technologie en développement rapide qui a le potentiel de révolutionner les industries, de changer notre façon de vivre et de travailler et d'apporter de nombreux avantages à la société. Cependant, comme pour toute nouvelle technologie, des considérations éthiques doivent également être prises en compte.
Introduction à l'intelligence artificielle L'intelligence artificielle (IA) est une technologie en développement rapide qui a le potentiel de révolutionner les industries, de changer notre façon de vivre et de travailler et d'apporter de nombreux avantages à la société. Cependant, comme pour toute nouvelle technologie, des considérations éthiques doivent également être prises en compte.
De par sa nature, le sport est conçu pour nous forcer à concourir. En tant qu'athlètes de compétition, il est facile de se laisser prendre par la pression de concourir constamment contre d'autres athlètes, mais que se passerait-il si, au lieu de vous concentrer sur la compétition externe, vous vous concentriez sur la compétition interne ? Cela signifie rivaliser avec vous-même et vous efforcer d'améliorer vos propres performances, plutôt que d'essayer de battre les autres.
Vérifiez votre cœur. Nos cœurs s'égarent souvent.
Il était une fois j'écrivais un blog… Depuis juillet 2016, j'ai commencé à écrire un blog. Ce blog.
Introduction à l'intelligence artificielle L'intelligence artificielle (IA) est une technologie en développement rapide qui a le potentiel de révolutionner les industries, de changer notre façon de vivre et de travailler et d'apporter de nombreux avantages à la société. Cependant, comme pour toute nouvelle technologie, des considérations éthiques doivent également être prises en compte.