BitCoin quel est-il?

Bitcoin. Как это работает

A propos de Bitcoin J'ai appris récemment, mais il m'a donné une fois soudoyé son p2p idée. Plus j'enterré dans leur Wiki, plus imprégnée de cette idée. Sa mise en œuvre est une belle et élégante du point de vue technique.

Recherche Bitcoin donne un tas de sujets. Les plus commentés remarquer que beaucoup de gens, en particulier ceux qui ne connaissent Bitcoin directement, il y a beaucoup de questions sur la façon dont il fonctionne. Aussi beaucoup de conjectures, souvent incorrectes. Afin de clarifier quelque peu la situation, il a été décidé d'écrire cet article.

l'argent réel?

En tête de la liste des principales idées fausses concernant Bitcoin est l'idée que Bitcoin est le nouveau «papiers», quoique électronique, qui ne représentent que «réel» de l'argent, ce genre sont des reconnaissances de dette. Il provient la plupart des erreurs restantes: si ce morceau de papier, ils ne valent rien; vous pouvez les imprimer ou détruire un nombre quelconque; ils peuvent être truquées; vous pouvez les copier

Encore une fois - tout cela est rien de plus qu'une illusion. La base de l'idée de Bitcoin était le désir de créer non seulement un autre "morceau de papier" qui représentent l'argent réel, tels que l'or, et un analogue de l'or. Obtenez les propriétés de l'or, grâce à laquelle il est un argent parfait, et faire de l'e-monnaie basée sur eux.

La complexité de la production

Or ne peut pas être copié - il ne peut obtenir. Mais ceci est un processus très coûteux, à la fois en temps et en ressources. En partie à cause de cela, l'or est évalué si haut. Pour le rendre plus clair, considérons un exemple.

Laissez les gens toute la journée difficile à la mine d'or et obtenu à la suite de 1 kg. Pour lui, la valeur de l'or est égale à une dure journée de travail. Après une journée de travail dur, il a décidé de se détendre et aller au cinéma. Par un heureux hasard le caissier a donné les billets en échange d'or. Pourquoi? Parce que la caisse comme l'or, mais n'aime pas travailler toute la journée à cueillir. Par conséquent, il est prêt à être de service - pour payer le billet - en échange d'un or 1 kg. En fait, il échange son service pour une journée de travail.

Maintenant, imaginez une situation différente. Nous avons inventé le copieur, qui travaille avec l'or. Et tout le monde peut en une minute à partir d'un seul 1 kg d'or pour faire 10 kg. Dans cette situation, le caissier ne sera plus échangée contre des billets d'or, parce que maintenant il est facile d'être en mesure d'imprimer autant que vous voulez. Or ne sera plus aucune valeur, et il ne peut pas être utilisé comme monnaie.

Le processus de production des pièces de monnaie Bitcoin exige également du temps et des ressources. Mais dans ce cas, il est pas des ressources humaines et informatique.

ressource relativement limitée

Le plus d'or est produit, le plus difficile (ressource coûteuse) devient son produit. Cela garantit que l'inflation sera maîtrisée.

Le comportement similaire Bitcoin est obtenu par l'introduction d'une fonction de la vitesse dans le total des pièces produites de temps à autre. Cette fonction est inversement proportionnelle, ie. E. Avec le temps et la vitesse tombe à zéro. Si nous prenons l'intégrale de la fonction par rapport au temps, nous obtenons l'exposant. A propos de ceci:

Bitcoin. Как это работает

On peut voir que le nombre total de pièces de monnaie est déterminée à 21 000 000. Les détails de l'opération seront discutés plus tard Bitcoin. Dans l'intervalle, vous devez savoir deux choses: des pièces de monnaie apparaissent dans le système par lots d'environ toutes les 10 minutes, le nombre de pièces dans un seul pack - 50, et il est réduit de moitié tous les 4 ans.

matérialité

Cette propriété n'a pas autant d'or que toute monnaie non électronique. Un lingot d'or ne peut pas être échangé contre deux fois le service ou le produit. E. A un moment ou il peut être le vendeur ou l'acheteur.

Ce comportement estesstvenno pour l'échange matériel, mais pas pour le courrier électronique. Pour parvenir à ce comportement de l'argent virtuel, vous avez besoin de mettre beaucoup d'ingéniosité. Le Bitcoin ce comportement est fourni mécanisme de transaction. Toutes les transactions dans les unit de la chaîne. Chaque transaction prend des pièces d'une ou plusieurs opérations existantes et indiquer à qui ils sont destinés. Par conséquent, vous pouvez toujours vérifier la validité de l'ensemble de la chaîne.

La complexité de la production, une ressource limitée, le matériau - ces propriétés, ainsi que l'utilisation de la cryptographie pour la sécurité, vous permettent d'utiliser Bitcoin comme de l'argent. Ils sont basés noyau Bitcoin. Ceci est non seulement un accord. Chacun d'entre eux sont intégrés dans le système par la conception, et d'une autre manière, il ne fonctionnera pas. Il est temps d'envisager la meilleure conception.

palans à chaîne

Tout système de paiement électronique doit quelque part et en quelque sorte stocker la transaction. Bitcoin toutes les informations sont stockées dans la chaîne de blocs. Les blocs sont transmis au format JSON. Chaque bloc contient un en-tête et une liste des transactions. L'en-tête se compose de plusieurs propriétés, parmi lesquelles est un hachage du bloc précédent. Ainsi, l'unité de toute la chaîne mémorise toutes les transactions pour tous les temps Bitcoin.

Les versions actuelles de la chaîne de blocs Bitcoin de logiciel entièrement téléchargés par chaque client, ce qui rend le système complètement décentralisé. Les données ne sont pas cryptées en aucune façon et tout le monde peut suivre manuellement toutes les transactions. Il y a même un site Web spécial - Bitcoin Bloquer Explorer, où vous pouvez facilement voir toutes les informations sur les unités et les transactions.

Au moment de la rédaction de ce document, le nombre de blocs dans la chaîne est égale à 110 968, et, comme je l'ai dit plus tôt, ce nombre environ toutes les 10 minutes, augmente de 1. Cela signifie que certains des participants a pu créer un nouveau bloc.

Il fonctionne comme suit. Un client crée une nouvelle transaction et l'envoie à d'autres clients qui sont engagés dans l'unité de production. Ils ajoutent cette transaction à son unité et continuent de générer. Tôt ou tard, quelqu'un va créer un bloc. Cette unité est fermée (pour qu'il ne soit plus ajouté à la transaction), et envoyée sur le réseau. Ensuite, vérifiez les clients et les transactions unitaires en son sein pour la validité. S'il n'y a pas de problèmes, la transaction est considérée comme approuvée. À ce moment, une nouvelle unité a atteint à chaque client et ajouté à la chaîne. Après cela, le processus est répété - une fois les clients commencent unité de génération et de recueillir dans ses nouvelles transactions.

bloc

Considérez le contenu du bloc et de son processus de génération plus en détail. bloc Exemple peut être trouvé à tout le même le Bitcoin le bloc Explorateur . La boîte se compose d'une liste d'en-tête et trantsaktsy. L'en-tête constitué par les propriétés suivantes:

  • hash - SHA-256 hachage de l' en- tête de bloc. Ce hachage est assez aléatoire, et son temps de calcul est prévisible. Je note que seul haché titre sans transactions. Alors que le nombre de transactions ne sera pas beaucoup d'impact sur le temps de calcul de la valeur de hachage.
  • ver - Version diagramme. À l'heure actuelle, tous les blocs d'une version - 1.
  • prev_block - Le hachage du bloc précédent dans la chaîne. En raison de cette propriété ne peut être forgé la chaîne, en le remplaçant dans l'un des blocs, comme le bloc de hachage est toujours dépendant du bloc précédent dans la chaîne de hachage. Changement aura à recréer tous les blocs suivants.
  • mrkl_root - Merkle racine - une liste des transactions hashes. unité Hash doit nécessairement dépendre de la transaction, ils ne peuvent pas être falsifiée. Mais comprendre directement à une longue période si le nombre de transactions est grande. Alors d'abord haché les transactions elles-mêmes, et leurs hachages sont utilisés pour calculer un hachage du bloc.

Il peut sembler absurde - pourquoi deux calculer un hachage de la même chose. Mais le fait que le hachage de la transaction est mis à jour uniquement lorsque vous ajoutez une nouvelle transaction au bloc, et l'en-tête de bloc de hachage est recalculé des milliers de fois par seconde. En outre, la plus proche de la taille de l'en-tête constant, la plus précise possible de prédire son temps pour le calcul de la valeur de hachage.

  • temps - uint32_t représentant la création de l'unité. année maximale admissible - 2106.
  • bits - Une des propriétés les plus importantes. Il est une forme abrégée de la valeur cible de hachage. Un bloc est généré (valide) lorsque sa valeur de hachage est inférieure à cet objectif. La valeur cible détermine la complexité de la création d'un bloc. Ce qu'il est, le moins de chances de trouver un hachage approprié dans une seule itération. Cette propriété est mise à jour toutes les deux semaines.

Cela se produit comme suit. Il compte le nombre de blocs générés au cours des deux dernières semaines et comparée à la norme (1 unité toutes les 10 minutes). Si les blocs sont trop nombreux, la difficulté augmente. Si le bloc est trop petit - est réduite. Ainsi, le système est adapté pour augmenter le nombre d'utilisateurs et, en conséquence, la puissance totale de l'ordinateur.

  • apax - Un nombre qui, à partir de zéro, est incrémenté après chaque itération calculer le hachage. En fait, étant donné qu'il est trop et que la valeur de hachage est égale ou supérieure à la valeur cible. À chaque nouveau hachage différent du précédent doit être différent d'au moins une des propriétés de l'en-tête de bloc.

Par exemple, une version ne change pas. Le hachage du bloc précédent est mis à jour lorsque quelqu'un devant nous et va générer un nouveau bloc. Merkle racine est mis à jour avec l'ajout de la transaction. Time - toutes les quelques secondes. Bits (valeur cible, la complexité) - toutes les deux semaines. Tout cela est trop long. Afin de ne pas attendre que l'une des propriétés est il mis à jour et nonce.

Considérons une situation hypothétique. Toutes les valeurs nonce ont été vérifiés et aucun d'entre eux est approprié. Pendant ce temps, aucune autre propriété a changé. Il overflow nonce et il recommence à partir de zéro. Il se trouve que d'autres Hashes seront répétées. Pour éviter de telles situations, après le débordement du nonce, en changeant la propriété spéciale de l'une des transactions. Par la suite, mis à jour Merkle racines et en-tête de bloc hashs ne seront plus répétées.

  • n_tx - Le nombre de transactions sur la liste.
  • size - la taille de bloc en octets.

transactions

Les transactions sont contenues dans les blocs sous la forme d'une liste. Ceux-ci, ainsi que des blocs disposés dans la chaîne. Chaque transaction doit indiquer où il faut de l'argent (à partir d'une transaction en cours), et où envoyer.

Pour spécifier la destination en utilisant sa clé publique. Pour le bénéficiaire pourrait utiliser l'argent, il faut créer une nouvelle transaction, qui prendra l'argent de la précédente et de les rediriger vers une autre adresse. Pour prouver qu'une personne utilise pour traduire exactement leur argent, pas quelqu'un d'autre, il doit laisser sa signature numérique dans leurs transactions. Ensuite, à tout moment, vous pouvez vous assurer que toutes les transactions dans le système sont valides.

Dans la pratique, tout ceci est réalisé avec les caractéristiques suivantes:

  • hash - hachage de l'ensemble de la transaction. Il se trouve que la transaction hachée deux fois. Pour la première fois pendant le calcul du hachage de la transaction. Pour la seconde fois pendant le calcul du bloc de hachage. En outre, chaque bloc se réfère à la valeur de hachage du bloc précédent, et chaque transaction - un hachage de la transaction précédente (ou transactions). Si vous modifiez la transaction et miraculeusement son hachage est pas cassé, puis battu tous les autres hashes et modifié la chaîne de blocs sera rejeté par tous les clients.
  • ver - systèmes de transaction version. Même si elle n'a jamais changé, il est donc égal à 1 partout.
  • vin_sz - Le nombre de transactions antérieures, dont l' argent est transféré à la nouvelle adresse. Un ou plusieurs.
  • vout_sz - Nombre d'adresses à utiliser pour transférer de l' argent. Un ou plusieurs.
  • lock_time - Bien que non utilisé partout égal à 0. L'idée est de créer une transaction en attente, de sorte qu'ils ne soient pas ajoutés au courant produit par l'unité , mais, par exemple, dans sleschuyuschy. Il est entendu que cette propriété est définie sur le nombre de blocs qui devraient découler avant d'ajouter la transaction. Cela permet un certain temps pour changer la transaction et re-signer.
  • taille - taille de la transaction en octets. Il est entendu de la taille de la transaction dans le format JSON.
  • en - Contient une liste d'entrées (sources) transaction. Comme les entrées utilisées sorties des opérations précédentes (prev_out). Chaque sortie a les propriétés suivantes:
    • hash - hachage de la transaction précédente.
    • n - Étant donné que la transaction peut être plusieurs sorties, vous devrez indiquer à partir de laquelle d'entre eux proviennent de l' argent. A cet effet, et il y a cette propriété. Il contient le numéro d'ordre de la sortie de l'opération précédente, en commençant par 0.
    • scriptSig - Cette propriété de l'expéditeur doit prouver qu'il est transforme leur argent, pas quelqu'un d' autre. Pour cela, il ukazavaet la clé publique du destinataire de la transaction précédente, t. E. Une clé, car il doit être le destinataire. En outre, il ajoute ECDSA signature de la même opération, ce qui a rendu sa clé privée. Cela prouve qu'il dispose de leur propre argent, et non pas quelqu'un d'autre.

Après la liste des transactions entrées (en) indique une liste de sorties (out), t. E. Mailing. Chaque sortie a les propriétés suivantes:

  • valeur - Contient le montant d'argent qui sera transféré à la nouvelle adresse. Ils sont tirés de la transaction précédente. Par conséquent, ce nombre ne doit pas dépasser la somme. Par exemple, nous voulons prendre 10 pièces par transaction et 20 des 25 autres et d'envoyer une nouvelle adresse. Pour les 5 pièces restantes ont pas été, nous les envoyons à eux-mêmes le changement. Ainsi, dans notre transaction sera deux destinations, dont nous sommes. La valeur est toujours spécifiée dans nanomonetah pour éviter des nombres fractionnaires.
  • scriptPubKey - Cette propriété, ainsi que scriptSig up script sur la modification

Le montant total de la transaction d'entrée de l'argent est toujours égal au nombre total de la sortie. Sinon, l'argent ou est née de l'air, ou disparaître de la circulation. Mais au début était un graphique qui montre que le nombre d'argent croît de façon exponentielle. Alors, où sont les nouveaux fonds dans le système?

Pour mon goût, la question de l'argent est réalisé simplement et avec élégance. Chaque bloc de la première transaction de la liste est une opération particulière. Elle a toujours une entrée, ce qui est plutôt une propriété de propriétés de la coinbase. Cette propriété peut contenir quoi que ce soit.

La stabilité du fonctionnement du système est basé sur le nombre d'utilisateurs qui ont lancé le client officiel. Bien que la majorité d'entre eux, Bitcoin est pas en danger.

conclusion

Les travaux de la preuve (preuve de travail) - le résultat du travail, ce qui est difficile à réaliser, mais il est facile de vérifier. Bitcoin réseau est basé sur ce principe. Vérifiez hachage (résultat du travail) peut être une fraction de seconde. Et pour le ramasser, il faut beaucoup de travail.

Ici, nous pouvons rappeler l'analogie de l'extraction de l'or qui prend beaucoup de temps et de ressources. Mais comprendre que l'or en face de vous, vous pouvez presque immédiatement. En ce sens, Bitcoin a aussi sa valeur. Mais il ne faut pas comprendre que le prix en dollars ou dans les comptes de l'électricité, qui a utilisé un ordinateur au cours de la sélection de la table de hachage.

Prix ​​en dollars américains - est un peu différent. Il est pas incorporé dans le Bitcoin et est déterminée uniquement par le marché. Après tout, l'or est en elle-même aussi ne vous garantit pas un prix en dollars. Elle garantit que la personne qui veut échanger de l'or contre des dollars.

Le prix initial de l'or est déterminée uniquement par ceux qui lui procurait. Pour l'or extrait comme il a demandé à être en mesure de compenser les efforts de sa production. Et après cela dans le prix de l'or commence à affecter le marché.

Une fois Bitcoin a frappé le marché, sa valeur est déterminée uniquement par le niveau de confiance dans le système. Plus les gens auront confiance, plus acheter le Bitcoin est, plus de dollars à investir dans et, par conséquent, le plus cher il sera Bitcoin.

Avant que les gens peuvent faire confiance au Bitcoin, ils ont besoin de savoir si le système a un degré suffisant de sécurité, ainsi que si elle peut être utilisée comme monnaie, t. E. Que ce possède les propriétés de l'argent, que j'ai répertoriés au début. Pour en savoir pour sûr, vous ne pouvez travailler dans les principes razobravshit Bitcoin.

J'espère que, après cet article avec le niveau de confiance dans Habarhabar Bitcoin va croître au moins un peu.