Table des matières:

Comment fonctionne réellement la blockchain
Comment fonctionne réellement la blockchain

Vidéo: Comment fonctionne réellement la blockchain

Vidéo: Comment fonctionne réellement la blockchain
Vidéo: KGB vs CIA : au coeur de la guerre froide 2024, Avril
Anonim

Cet article a pour but de dire à tous pourquoi la blockchain a été inventée, comment fonctionnent les crypto-monnaies et pourquoi c'est le plus beau système de ces dernières années du point de vue de la logique.

Je vous préviens immédiatement que sous la coupe il y a une ÉNORME feuille de texte et si vous n'êtes pas prêt à "fermer" la question sur le sujet des crypto-monnaies une fois pour toutes, ajoutez une entrée à vos favoris dès maintenant et réservez du temps)

La blockchain est une technologie, nouvelle, étrange, incompréhensible, mais elle semble changer le monde, contrairement à vos histoires. Apparemment, elle est avec nous depuis longtemps.

Ce post est écrit comme s'il était raconté à des gens qui sont très loin des ordinateurs et ne les connaissent que superficiellement, par exemple, imaginez qu'il se préparait pour vos parents. Je peux même le transmettre à mes confrères en sciences humaines et être sûr qu'ils comprendront.

Et Oleg nous aidera tous dans cette affaire difficile. Rencontrer!

Si tu n'aimes pas Oleg, je le vire.

L'essentiel: pourquoi avons-nous besoin de la blockchain ?

La blockchain a été décrite dans l'article de Satoshi Nakamoto "Bitcoin: A Peer-to-Peer Electronic Cash System". Là, en seulement huit pages, l'auteur a décrit les bases de la crypto-monnaie Bitcoin, qui était basée sur l'algorithme Blockchain.

Liste qui ne peut pas être modifiée

Chaîne de blocs - une chaîne de blocs ou en d'autres termes une liste chaînée. Dans une telle liste, chaque enregistrement suivant fait référence à un précédent, et ainsi de suite jusqu'au tout premier. Comme les wagons d'un train, chacun entraîne le suivant. Concernant les listes, il y a un bon article de Nikita Likhachev sur TJ, où la même chose est expliquée pour les complètement novices. Les analogies sont en partie tirées de là.

Prenons un exemple

Les amis d'Oleg lui empruntent constamment de l'argent. Oleg est gentil, mais extrêmement oublieux. Une semaine plus tard, il ne se souvient plus qui ne lui a pas remboursé la dette, mais il est gêné d'interroger tout le monde à ce sujet. C'est pourquoi, un jour, il a décidé d'y mettre un terme en créant une liste d'amis au tableau de sa maison à qui il a emprunté de l'argent.

Maintenant, Oleg peut toujours aller au tableau et s'assurer que Max a tout renvoyé, mais Vanya ne donne pas déjà 700 roubles. Un jour, Oleg invite Vanya à prendre un verre chez lui. Pendant qu'Oleg va aux toilettes, Vanya efface l'entrée "J'ai emprunté 200 roubles pour Vanya" et écrit à sa place "Vanya a donné 500 roubles".

Oleg, qui a fait confiance à sa liste, oublie la dette et perd 700 roubles. Il décide de le combattre d'une manière ou d'une autre. L'année dernière, Oleg a suivi un cours de programmation, où on lui a parlé de hachage. Il se souvient que n'importe quelle chaîne peut être transformée en un jeu de caractères non ambigu - un hachage, et que changer n'importe quel caractère de la chaîne le changera complètement.

L'ajout d'un point à la fin a changé le hachage final au-delà de toute reconnaissance - vous pouvez l'utiliser.

Oleg prend le hachage SHA-256 bien connu et hache chaque enregistrement avec, ajoutant le résultat à la fin. Oleg peut désormais s'assurer que personne n'a modifié ses enregistrements en les hachant à nouveau et en les comparant avec le vert.

Mais EVIL IVAN sait également utiliser SHA-256 et peut facilement modifier l'entrée ainsi que son hachage. Surtout si le hachage est écrit juste à côté sur le tableau.

Par conséquent, pour plus de sécurité, Oleg décide de hacher non seulement l'enregistrement lui-même, mais de l'ajouter avec le hachage de l'enregistrement précédent. Maintenant, toutes les entrées suivantes dépendent des précédentes. Si vous modifiez au moins une ligne, vous devrez recalculer les hachages de toutes les autres ci-dessous dans la liste.

Mais un jour, Ivan se faufile la nuit, modifie l'entrée dont il a besoin et met à jour les hachages de toute la liste jusqu'à la fin. Cela lui prend plusieurs heures, mais Oleg est toujours profondément endormi et n'entend pas. Dans la matinée, Oleg découvre une liste absolument correcte - tous les hachages correspondent. Mais Ivan l'a quand même trompé, même s'il a passé une nuit blanche dessus. Sinon, comment pouvez-vous vous protéger de Night Ivan ?

Oleg décide de se compliquer la vie d'une manière ou d'une autre. Maintenant, pour ajouter une nouvelle entrée à la liste, Oleg résoudra un problème complexe qui lui est associé, par exemple une équation mathématique. Il ajoutera la réponse au hachage final.

Oleg est bon en mathématiques, mais même cela prend dix minutes pour ajouter une entrée. Malgré cela, le temps passé en vaut la peine, car si Ivan veut encore changer quelque chose, il devra résoudre les équations pour chaque ligne, et il peut y en avoir des dizaines. Cela prendra beaucoup de temps, car les équations sont uniques à chaque fois et associées à un enregistrement spécifique.

Mais vérifier la liste est tout aussi simple: vous devez d'abord comparer les hachages comme avant, puis vérifier les solutions des équations par simple substitution. Si tout converge, la liste n'est pas modifiée.

En réalité, les équations ne sont pas si bonnes: les ordinateurs les résolvent trop bien, et où stocker autant d'équations uniques. Par conséquent, les auteurs de la blockchain ont proposé un plus beau problème: vous devez trouver un tel nombre (nonce) pour que le hachage final de l'enregistrement entier commence par 10 zéros. Un tel nonce est difficile à trouver, mais le résultat peut toujours être vérifié avec seulement les yeux.

Oleg vérifie maintenant tous les hachages et s'assure en outre que chacun commence par le nombre de zéros spécifié. Sly Ivan, même armé d'un ordinateur portable puissant, n'aura pas le temps de recalculer tous les hachages en une nuit pour qu'ils satisfassent à la condition - il n'y aura pas assez de temps.

Une telle liste, en fait, est la blockchain domestique sur ses genoux. Sa sécurité est garantie par les mathématiciens, qui ont prouvé que ces hachages ne peuvent pas être calculés d'une manière ou d'une autre plus rapidement, sauf par force brute. Une telle énumération de hachages pour chaque enregistrement est une exploitation minière, sur laquelle il y aura aujourd'hui beaucoup et en détail.

Centralisation de la confiance

Nos amis ont aimé l'idée de tenir une fausse liste de "qui a emprunté qui". Ils ne veulent pas non plus se rappeler qui a payé pour qui dans le bar et combien ils doivent encore - tout est écrit sur le mur. Vous avez discuté de l'idée et décidé que maintenant vous avez besoin d'une liste unique pour tous.

Mais à qui confier une comptabilité aussi importante ? Après tout, quand il s'agit d'argent, la confiance est au premier plan. Nous ne ferons pas confiance à l'inconnu pour garder notre argent. Pour cela, nos ancêtres ont inventé les banques, qui au fil du temps ont commencé à être dignes de confiance, car elles sont soutenues par une licence, des lois et une assurance de la Banque centrale.

Dans le cercle d'amis, tout le monde se fait confiance et vous pouvez simplement choisir le plus responsable pour ce rôle. Mais que se passe-t-il si la question concerne les étrangers ? Une ville entière, un pays ou le monde entier, comme c'est le cas avec Bitcoin ? En général, personne ne peut faire confiance à personne là-bas.

Décentralisation: personne ne fait confiance à personne

Ils ont donc proposé une approche alternative: conserver une copie de la liste pour tout le monde. Ainsi, un attaquant devrait non seulement réécrire une liste, mais aussi se faufiler dans chaque maison et y réécrire les listes. Et puis, il s'avère que quelqu'un a gardé plusieurs listes à la maison, dont personne n'était au courant. C'est la décentralisation.

L'inconvénient de cette approche est que pour effectuer de nouvelles entrées, vous devrez appeler tous les autres participants et informer chacun d'eux des derniers changements. Mais si ces participants sont des machines sans âme, cela ne pose plus aucun problème.

Dans un tel système, il n'y a pas de point de confiance unique, et donc la possibilité de corruption et de tricherie. Tous les participants au système agissent selon une règle unique: personne ne fait confiance à personne. Chacun ne croit que les informations dont il dispose. C'est la loi principale de tout réseau décentralisé.

Transactions

Lorsque vous achetez un pot dans un magasin, vous entrez le code PIN de votre carte, permettant au magasin de demander à la banque si vous avez 35 roubles sur votre compte. En d'autres termes, vous signez une transaction de 35 roubles avec votre code PIN, que la banque confirme ou rejette.

Nos dossiers du type "J'ai emprunté 500 roubles à Vanya" sont également des transactions. Mais nous n'avons pas de banque autorisant l'auteur des transactions. Comment pouvons-nous vérifier qu'Ivan n'a pas discrètement ajouté l'entrée « Max doit 100 500 roubles à Oleg » ?

La blockchain utilise pour cela le mécanisme des clés publiques et privées; les informaticiens les utilisent depuis longtemps pour l'autorisation dans le même SSH. Je l'ai expliqué sur mes doigts dans le post "Sécurité, cryptage, cyberpunk" dans la section "Introduction au cryptage".

En bref sur le fonctionnement de ces mathématiques complexes mais belles: vous générez une paire de longs nombres premiers sur votre ordinateur - une clé publique et une clé privée. La clé privée est considérée comme super secrète car elle peut déchiffrer ce qui est chiffré en public.

Mais l'inverse fonctionne aussi. Si vous partagez la clé publique avec tous vos amis, ils pourront crypter n'importe quel message pour eux afin que vous seul puissiez le lire, puisque vous possédez la clé privée.

Mais en plus de cela, la clé publique a un effet utile - avec elle, vous pouvez vérifier que les données ont été cryptées avec votre clé privée, sans décrypter les données elles-mêmes. Toutes ces propriétés sont bien décrites dans le "Livre des Chiffres".

Nous sommes sur un Internet décentralisé où personne ne peut faire confiance. La transaction est signée avec une clé privée et, avec la clé publique, est envoyée vers un stockage spécial - un pool de transactions non confirmées. Ainsi, n'importe quel membre du réseau peut vérifier que c'est vous qui l'avez initié, et que personne d'autre ne veut payer avec votre argent.

Cela garantit l'ouverture et la sécurité du réseau. Si les banques précédentes en étaient responsables, alors dans la blockchain, les mathématiciens en sont responsables.

Pour les utilisateurs ordinaires qui ne veulent pas savoir comment émettre et stocker des clés privées, les services de portefeuille en ligne seront utiles. Pour copier de longues clés publiques, des codes QR pratiques y sont créés. Par exemple Blockchain Wallet, car il possède une application mobile pratique et prend en charge les deux principales crypto-monnaies - BTC et ETH.

Absence de la notion d'« équilibre »

Comme notre conseil d'administration, la blockchain se compose essentiellement uniquement de l'historique des transactions. Il ne stocke pas le solde de chaque portefeuille, sinon il faudrait inventer des méthodes de protection supplémentaires.

Seule la clé privée confirme la propriété du portefeuille. Mais comment les autres membres du réseau peuvent-ils s'assurer que j'ai assez d'argent pour acheter ?

Puisque nous n'avons pas d'équilibre, vous devez le prouver. Par conséquent, une transaction blockchain comprend non seulement votre signature et le montant que vous souhaitez dépenser, mais également des liens vers des transactions précédentes dans lesquelles vous avez reçu le montant d'argent requis.

Autrement dit, si vous souhaitez dépenser 400 roubles, vous parcourez tout l'historique de vos revenus et dépenses et joignez à votre transaction les revenus pour lesquels vous avez reçu 100 + 250 + 50 roubles, prouvant ainsi que vous disposez de ces 400 roubles.

Chaque membre du réseau veillera une nouvelle fois à vérifier que vous n'avez pas rattaché deux fois de revenus. Que ces 300 roubles que Max a donnés la semaine dernière, tu ne les as vraiment pas encore dépensés.

De tels revenus attachés à une transaction sont appelés entrées dans la blockchain, et tous les destinataires d'argent sont appelés sorties. La somme de toutes les entrées est rarement exactement la même que celle que vous souhaitez transférer à la fois - par conséquent, l'une des sorties sera le plus souvent vous-même. En d'autres termes, la transaction sur la blockchain ressemble à "On m'a donné 3 et 2 BTC, je veux en transférer 4 BTC et rendre le 1 BTC restant".

La beauté de la blockchain est que les entrées ne doivent pas nécessairement provenir d'un seul portefeuille. Après tout, seule la clé est vérifiée. Si vous connaissez la clé privée de toutes les entrées, vous pouvez facilement les joindre à votre transaction et payer avec cet argent. Comme si vous payiez dans un supermarché avec plusieurs cartes dont vous connaissez le code PIN.

Cependant, si vous perdez votre clé privée, que votre disque meurt ou que votre ordinateur portable est volé, vos bitcoins seront perdus à jamais. Personne ne peut les utiliser comme entrées pour de nouvelles transactions.

Ce montant sera inaccessible au monde entier pour toujours - comme si vous brûliez une liasse de billets de banque. Il n'y a pas de banque unique où vous pouvez rédiger une demande avec une copie de votre passeport, et il l'imprimera. Cela nécessite une sortie supplémentaire de nouveaux bitcoins "à partir de rien".

Problème de double dépense

J'ai dit plus haut que les transactions sont ajoutées à un "pool de transactions non confirmées" spécial. Pourquoi avons-nous besoin d'une sorte d'entité intermédiaire, si nous avons déjà, en fait, des transactions signées toutes faites ? Pourquoi ne pas les écrire directement dans la blockchain ?

Parce que les signaux du point A au point B vont toujours avec un retard. Deux transactions peuvent suivre des chemins complètement différents. Et la transaction qui a été initiée en premier peut atteindre le destinataire plus tard, car elle a pris un chemin plus long.

Cela se traduit par une double dépense, lorsque le même argent a été envoyé à deux destinataires à la fois, ce qu'ils n'auraient même pas deviné. Il ne s'agit pas de passer des factures de main en main.

Pour un réseau décentralisé dans lequel personne ne peut faire confiance, ce problème est particulièrement aigu. Voici comment vous assurer qu'une transaction était définitivement avant une autre ? Demandez à l'expéditeur d'y coudre l'heure d'expédition, n'est-ce pas ? Mais rappelez-vous - vous ne pouvez faire confiance à personne, pas même à l'expéditeur.

L'heure sur tous les ordinateurs sera nécessairement différente et il n'y a aucun moyen garanti de les synchroniser. Une copie de la blockchain est stockée sur chaque ordinateur du réseau et chaque participant ne fait confiance qu'à elle.

Comment pouvez-vous vous assurer qu'une transaction est antérieure à une autre ?

La réponse est simple: c'est impossible. Il n'y a aucun moyen de confirmer l'heure d'une transaction sur un réseau décentralisé. Et la solution à ce problème est la troisième idée importante de blockchain que Satoshi a inventée et qui, assez curieusement, est épelée en son nom - les blocs.

Les blocs sont l'épine dorsale de la blockchain

Chaque ordinateur de travail sur le réseau sélectionne toutes les transactions qu'il aime dans le pool général. Habituellement juste pour la commission la plus élevée qu'il peut gagner dessus. Il collecte donc les transactions pour lui-même jusqu'à ce que leur taille totale atteigne la limite négociée. En Bitcoin, cette limite de taille de bloc est de 1 Mo (après SegWit2x, ce sera 2 Mo), et en Bitcoin Cash - 8 Mo.

L'ensemble de la blockchain est essentiellement une liste de ces blocs, où chacun fait référence au précédent. Il peut être utilisé pour suivre n'importe quelle transaction dans l'ensemble de l'historique, déroulant la blockchain même jusqu'au tout premier enregistrement.

C'est cette liste qui pèse désormais des centaines de gigaoctets et doit être entièrement téléchargée sur tous les ordinateurs qui souhaitent participer au réseau (mais cela n'est pas nécessaire pour simplement créer des transactions et transférer de l'argent). Il est téléchargé de la même manière à partir de tous les ordinateurs les plus proches du réseau, comme si vous téléchargiez une série à partir de torrents, seuls de nouveaux épisodes y sont publiés toutes les 10 minutes.

Après avoir tapé les transactions du pool pour lui-même, l'ordinateur commence à composer à partir d'eux la même liste infalsifiable que nous l'avons fait au début du message sur le tableau à la maison.

Lui seul le fait sous la forme d'un arbre - hache les enregistrements par paires, puis le résultat est à nouveau par paires, et ainsi de suite jusqu'à ce qu'il ne reste plus qu'un hachage - la racine de l'arbre, qui est ajoutée au bloc. Pourquoi exactement avec un arbre - je n'ai pas trouvé la réponse, mais je suppose que c'est simplement plus rapide de cette façon. En savoir plus sur le wiki: arbre de Merkle.

Étant donné que la blockchain actuelle a déjà été téléchargée, notre ordinateur sait exactement quel est le dernier bloc qu'il contient. Il lui suffit d'y ajouter un lien dans l'en-tête du bloc, de tout hacher et de dire à tous les autres ordinateurs du réseau « regardez, j'ai créé un nouveau bloc, ajoutons-le à notre blockchain ».

Les autres devraient vérifier que le bloc est construit selon toutes les règles et que nous n'y avons pas ajouté de transactions inutiles, puis les ajouter à nos chaînes. Maintenant, toutes les transactions y sont confirmées, la blockchain est augmentée d'un bloc et tout se passe bien, n'est-ce pas ?

Mais non. Des milliers d'ordinateurs travaillent simultanément sur le réseau, et dès qu'ils assemblent un nouveau bloc, ils se précipitent presque simultanément pour informer tout le monde que leur bloc a été créé en premier. Et de la section précédente, nous savons déjà que dans un réseau décentralisé, il est impossible de prouver qui était vraiment le premier.

Comme à l'école, lorsque tout le monde résolvait un test difficile, il arrivait rarement que même d'excellents élèves prennent les réponses en même temps.

Mais si pour une personne, c'est une tâche difficile de planifier des vacances pour qu'elle puisse passer les vacances de mai et que les billets pour la mer soient bon marché, alors pour un ordinateur, il s'agit d'ajouter un tel nombre (nonce) à la fin du bloc de sorte qu'en conséquence, le hachage SHA-256 pour l'ensemble du bloc commence, disons 10 zéros. C'est le problème qui doit être résolu afin d'ajouter un bloc au réseau Bitcoin. Pour les autres réseaux, les tâches peuvent différer.

Nous arrivons donc au concept de l'exploitation minière, qui a tellement obsédé tout le monde ces dernières années.

Exploitation minière

Le minage de Bitcoin n'est pas une sorte de sacrement sacré. Le minage ne consiste pas à trouver de nouveaux bitcoins quelque part dans les profondeurs d'Internet. L'exploitation minière, c'est quand des milliers d'ordinateurs à travers le monde bourdonnent dans des sous-sols, parcourant des millions de nombres par seconde, essayant de trouver un hachage qui commence par 10 zéros. Ils n'ont même pas besoin d'être en ligne pour le faire.

Les cartes vidéo avec des centaines de cœurs parallèles résolvent ce problème plus rapidement que n'importe quel processeur.

Pourquoi exactement 10 zéros ? Et juste comme ça, ça n'a aucun sens. Alors Satoshi est venu avec. Car c'est l'un de ces problèmes pour lesquels il y a toujours une solution, mais elle ne peut certainement pas être trouvée plus rapidement qu'une longue énumération monotone d'options.

La complexité du minage dépend directement de la taille du réseau, c'est-à-dire de sa puissance totale. Si vous créez votre propre blockchain et l'exécutez vous-même à la maison sur deux ordinateurs portables, la tâche devrait être plus simple. Par exemple, pour que le hachage commence par un seul zéro, ou pour que la somme des chiffres pairs soit égale à la somme des impairs.

Il faudra plusieurs décennies à un ordinateur pour trouver un hachage commençant par 10 zéros. Mais si vous combinez des milliers d'ordinateurs en un seul réseau et effectuez une recherche en parallèle, alors, selon la théorie des probabilités, ce problème est résolu en moyenne en 10 minutes. C'est le moment où un nouveau bloc apparaît dans la blockchain bitcoin.

Toutes les 8 à 12 minutes, quelqu'un sur terre trouve un tel hachage et a le privilège d'annoncer sa découverte à tout le monde, évitant ainsi le problème de savoir qui était le premier.

Pour trouver une réponse, l'ordinateur (à partir de 2017) reçoit 12,5 BTC - c'est le montant de la récompense qui est généré par le système bitcoin "à partir de rien" et diminue tous les quatre ans.

Techniquement, cela signifie que chaque mineur ajoute toujours une autre transaction à son bloc - "créer 12,5 BTC et les envoyer à mon portefeuille". Quand vous entendez "le nombre de bitcoins dans le monde est limité à 21 millions, ils en ont déjà embauché 16 millions" - ce sont les récompenses générées par le réseau.

Allez voir un vrai bloc Bitcoin en direct sur l'un des sites dédiés. Il existe également des transactions avec des entrées et des sorties, et jusqu'à 18 zéros au début et tous les hachages décrits ci-dessus.

Ce sont les mineurs qui ajoutent les transactions émergentes à la blockchain. Donc, si quelqu'un vous dit qu'il va "faire une blockchain pour ***", la première question à laquelle il doit répondre est de savoir qui va miner dessus et pourquoi. Le plus souvent, la bonne réponse est « tout le monde le fera, car pour le minage nous donnons nos pièces, qui vont croître et c'est rentable pour les mineurs ». Mais cela ne s'applique pas à tous les projets.

Par exemple, un certain ministère de la Santé crée demain sa propre blockchain fermée pour les médecins (et ils le veulent), qui va l'exploiter ? Thérapeutes du week-end ?

Mais quel sera l'avantage pour les mineurs plus tard, lorsque les récompenses disparaîtront ou deviendront rares ?

Selon l'idée du créateur, à ce moment-là, les gens devront croire à la réalité du bitcoin et l'exploitation minière commencera à payer par le montant des frais inclus dans chaque transaction. C'est là que tout se passe: en 2012, toutes les commissions étaient nulles, les mineurs n'exploitaient que les récompenses des blocs. Aujourd'hui, une transaction sans commission peut rester en suspens pendant plusieurs heures, car il y a de la concurrence et les gens sont prêts à payer pour la rapidité.

C'est-à-dire que l'essence de l'exploitation minière consiste à résoudre des problèmes dénués de sens. Tout ce pouvoir ne pourrait-il pas être utilisé pour quelque chose de plus utile - la recherche d'un remède contre le cancer, par exemple ?

L'essence de l'exploitation minière est de résoudre tout problème de calcul. Cette tâche doit être suffisamment simple pour que les participants au réseau aient une probabilité stable de trouver une réponse - sinon, les transactions seront confirmées pour toujours. Imaginez qu'à la caisse d'un magasin vous devez attendre une demi-heure à chaque fois pour que la banque confirme votre transaction. Personne n'utilisera une telle banque.

Mais la tâche doit être en même temps difficile, afin que tous les internautes ne trouvent pas la réponse à la fois. Car dans ce cas, ils annonceront de nombreux blocs avec les mêmes transactions au réseau et il y aura une possibilité de "double gaspillage", que j'ai évoquée. Ou pire encore - diviser une seule blockchain en plusieurs branches, dans lesquelles personne ne peut déterminer quelle transaction est confirmée et laquelle ne l'est pas.

Si une récompense de 12,5 BTC n'est remise qu'une fois toutes les 10 minutes et qu'une seule personne a trouvé le bloc, il s'avère que je dois gaspiller des cartes vidéo pendant plusieurs années dans l'espoir qu'un jour je lâche 40 000 $ (au taux de change actuel) ?

C'est exactement le cas pour le bitcoin. Mais ce ne fut pas toujours ainsi. Auparavant, le réseau était plus petit, la complexité est plus faible, ce qui signifie que la probabilité de trouver à lui seul un hachage pour un nouveau bloc est plus élevée. Mais alors le bitcoin n'était pas si cher.

Maintenant, personne n'exploite seul des bitcoins. Maintenant, les participants sont réunis dans des groupes spéciaux - des pools miniers, où tout le monde essaie de trouver le bon hachage.

Si au moins un membre du groupe trouve, alors la totalité de la récompense est répartie entre les participants, en fonction de leur contribution au travail commun. Il s'avère que vous exploitez et que vous obtenez un centime de la part totale chaque semaine.

Mais le minage en solo est tout à fait possible sur d'autres réseaux. Jusqu'à récemment, il était facile d'exploiter Ethereum, où des blocs sont trouvés toutes les 10 secondes. La récompense de bloc y est beaucoup plus faible, mais la probabilité de gagner un joli centime est plus élevée.

Nous allons donc brûler des milliers de cartes vidéo en vain et il n'y a pas d'issue ?

Oui, mais il y a des idées. Le minage que j'ai décrit est classique et s'appelle Proof-of-Work (preuve de travail). C'est-à-dire que chaque machine prouve qu'elle a fonctionné dans l'intérêt du réseau en résolvant des problèmes dénués de sens avec une probabilité donnée.

Mais certains gars commencent à faire des blockchains avec d'autres types d'exploitation minière. Maintenant, le deuxième concept le plus populaire est le Proof-of-Stake (preuve de participation). Dans ce type de minage, plus un participant au réseau a de « pièces » sur son compte, plus il a de chances d'insérer son bloc dans la blockchain. Comme le gars le plus bruyant du village.

Vous pouvez penser à d'autres types d'exploitation minière. Comme déjà suggéré, tous les ordinateurs du réseau peuvent rechercher un remède contre le cancer, il vous suffit de savoir comment, dans ce cas, enregistrer leur contribution au système. Après tout, je peux déclarer que je participe également, mais éteignez ma carte vidéo et ne comptez rien.

Comment quantifiez-vous la contribution de chaque participant à la découverte d'un remède contre le cancer ? Si vous le proposez - osez couper votre CancerCoin, un battage médiatique vous est garanti.

Chaîne de blocs

Imaginez une situation dans laquelle, malgré toute notre théorie des probabilités, deux mineurs parviennent tout de même à trouver la bonne réponse en même temps. Ils commencent à envoyer deux blocs absolument corrects sur le réseau.

Ces blocs sont garantis différents, car même s'ils ont miraculeusement choisi les mêmes transactions du pool, fait des arbres absolument identiques et deviné le même nombre aléatoire (nonce), leurs hachages seront toujours différents, puisque chacun écrira son numéro de portefeuille dans le bloc pour la récompense.

Maintenant, nous avons deux blocs valides et à nouveau le problème se pose de savoir qui doit être considéré en premier. Comment le réseau se comportera-t-il dans ce cas ?

L'algorithme blockchain indique que les participants au réseau acceptent simplement la première bonne réponse qui leur parvient. Ensuite, ils vivent sur la base de leur propre image du monde.

Les deux mineurs recevront leur récompense, et tous les autres commenceront à miner, en se basant sur le dernier bloc qu'ils ont personnellement reçu, en éliminant tous les autres qui sont corrigés. Deux versions de la blockchain correcte apparaissent sur le réseau. Tel est le paradoxe.

Il s'agit d'une situation de routine dans laquelle la théorie des probabilités aide à nouveau. Le réseau fonctionne dans un tel état bifurqué jusqu'à ce que l'un des mineurs trouve le prochain bloc à l'une de ces chaînes.

Dès qu'un tel bloc est trouvé et inséré dans la chaîne, il s'allonge et l'un des accords du réseau blockchain est inclus: dans toutes les conditions, la blockchain la plus longue est acceptée comme la seule vraie pour l'ensemble du réseau.

La chaîne courte, malgré toute sa justesse, est rejetée par tous les participants du réseau. Les transactions qui en découlent sont retournées au pool (si elles n'ont pas été confirmées dans un autre), et leur traitement recommence. Le mineur perd sa récompense car son bloc n'existe plus.

Avec la croissance du réseau, de telles coïncidences de « très improbable » entrent dans la catégorie « bien, parfois cela arrive ». Les anciens disent qu'il y a eu des cas où une chaîne de quatre blocs a été abandonnée à la fois.

De ce fait, trois règles d'insécurité de fin de chaîne ont été inventées:

1. Les récompenses pour l'exploitation minière ne peuvent être utilisées qu'après 20 autres blocs confirmés après réception. Pour Bitcoin, cela prend environ trois heures.

2. Si des bitcoins vous ont été envoyés, vous ne pouvez les utiliser comme entrées dans de nouvelles transactions qu'après 1 à 5 blocs.

3. Les règles 1 et 2 sont simplement précisées dans les paramètres de chaque client. Personne ne surveille leur respect. Mais la loi de la chaîne la plus longue effacera toujours toutes vos transactions si vous essayez de tromper le système pour qu'il ne les applique pas.

Essayer de tromper la blockchain

Maintenant que vous savez tout sur le minage, le dispositif de la blockchain et la règle de la chaîne la plus longue, vous vous posez peut-être une question: est-il possible de dépasser en quelque sorte spécifiquement la blockchain en réalisant vous-même la chaîne la plus longue, confirmant ainsi vos fausses transactions.

Disons que vous avez l'ordinateur le plus puissant du monde. Des datacenters Google et Amazon réunis à votre disposition et vous essayez de calculer une telle chaîne qui deviendra la blockchain la plus longue du réseau.

Vous ne pouvez pas prendre et calculer immédiatement plusieurs blocs de la chaîne, car chaque bloc suivant dépend du précédent. Ensuite, vous décidez le plus rapidement possible de compter chaque bloc sur vos énormes centres de données en parallèle avec la façon dont tous les autres participants continuent d'augmenter la blockchain principale. Est-il possible de les dépasser ? Probablement oui.

Si votre puissance de calcul est supérieure à 50 % de la puissance de tous les participants au réseau, alors avec une probabilité de 50 %, vous serez en mesure de construire une chaîne plus longue plus rapidement que toutes les autres combinées. C'est un moyen théoriquement possible de tromper la blockchain en calculant une chaîne de transactions plus longue. Ensuite, toutes les transactions du réseau réel seront considérées comme invalides, et vous collecterez toutes les récompenses et commencerez une nouvelle étape dans l'histoire de la crypto-monnaie, appelée "division blockchain". Une fois, en raison d'un bug dans le code, ce fut le cas avec Ethereum.

Mais en réalité, aucun centre de données ne peut être comparé en termes de puissance à tous les ordinateurs du monde. Un milliard et demi de Chinois avec des glaçons, un autre milliard et demi d'Indiens affamés avec des fermes minières et de l'électricité bon marché - c'est une énorme puissance de calcul. Personne au monde ne peut encore rivaliser avec eux seul, pas même Google.

C'est comme sortir dans la rue et essayer de convaincre chaque personne dans le monde que le dollar vaut maintenant 1 rouble et être à temps avant que les médias ne vous exposent. Et si vous parvenez à convaincre tout le monde, vous pouvez faire s'effondrer l'économie mondiale. En théorie, n'est-ce pas possible ? Mais dans la pratique, pour une raison quelconque, personne n'a réussi.

La blockchain repose également sur cette probabilité. Plus il y a de participants-mineurs, plus il y a de sécurité et de confiance dans le réseau. Par conséquent, lorsqu'une autre grande ferme minière est couverte en Chine, le taux s'effondre. Tout le monde a peur qu'il y ait quelque part dans le monde un génie maléfique qui avait déjà rassemblé un pool de mineurs à ~ 49% de sa capacité.

Conclusion

La blockchain n'est pas un ensemble d'algorithmes strictement défini. C'est une structure pour construire un faux réseau entre les participants, où personne ne peut faire confiance à personne. En lisant, vous avez probablement pensé plus d'une fois que "vous pouvez le faire comme ça et ce sera encore plus utile". Cela signifie que vous comprenez la blockchain, félicitations.

Certains gars dans le monde l'ont également compris et ont voulu s'améliorer ou s'adapter pour certaines tâches spécifiques. Les crypto-monnaies ne sont pas les mêmes, bien qu'il y en ait beaucoup aussi. Voici une courte liste de certaines des idées et des projets qui ont gagné en popularité grâce à la refonte de l'idée de la blockchain.

Ethereum

« Ethers » est le deuxième mot le plus populaire que vous entendez dans les nouvelles crypto-hype, après Bitcoin. Pour les gens ordinaires, il s'agit d'une autre crypto-monnaie et d'un moyen de faire la chose la plus tendance appelée ICO. Les développeurs du site décrivent Ethereum comme "un constructeur de blockchain pour vos besoins". C'est aussi possible, oui.

Mais si vous creusez encore plus profondément, l'éther n'est pas seulement un réseau de pièces de monnaie. Il s'agit d'une énorme machine informatique mondiale, où les utilisateurs exécutent le code des programmes d'autres personnes (contrats intelligents), recevant une récompense pour chaque ligne exécutée. Et tout cela est décentralisé, indestructible et avec toutes les garanties de la blockchain.

Nous pouvons parler d'Ethereum et des contrats intelligents pendant si longtemps que cela suffira pour un autre poste de ce type. Par conséquent, nous agirons à la manière des meilleurs blogueurs: si cet article est activement republié et retweeté, et d'ici vendredi, il obtient au moins 1 500 vues uniques, j'écrirai une suite sur Ethereum et les contrats intelligents.

Conseillé: