avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Comment fonctionne le protocole Bitcoin (partie 2)

Créé le: 2017-01-19 18:30:04, Mis à jour le:
comments   0
hits   1831

Comment fonctionne le protocole Bitcoin (partie 2)

  • #### Bitcoin

Maintenant, passons de Infocoin au vrai protocole Bitcoin. Bitcoin n’a pas beaucoup de différence avec Infocoin, que nous venons de créer étape par étape, sauf pour un changement évident.

Pour utiliser Bitcoin, vous devez d’abord installer un portefeuille dans votre ordinateur. Pour vous aider à mieux comprendre, voici une capture d’écran d’un portefeuille appelé Multibit. Vous pouvez voir dans le coin supérieur gauche un solde de Bitcoin de 0.06555555 Bitcoins, soit près de 70 dollars en fonction du prix de transaction de l’écran à l’époque.

Comment fonctionne le protocole Bitcoin (partie 2)

Supposons que vous soyez un commerçant, que vous ayez une boutique en ligne et que vous décidiez d’autoriser les clients à payer en Bitcoin. Tout ce que vous avez à faire est de générer une nouvelle adresse Bitcoin avec votre logiciel de portefeuille. Il génère automatiquement une paire de clés publiques et privées, puis hash votre clé publique pour former votre adresse Bitcoin.

Comment fonctionne le protocole Bitcoin (partie 2)

Ensuite, vous envoyez votre adresse Bitcoin à la personne qui veut vous payer. Vous pouvez l’envoyer par la boîte aux lettres ou la mettre directement sur votre page Web. C’est sûr, car votre adresse n’est qu’une clé publique qui a été hachée, et vous pouvez la divulguer à n’importe qui (et personne ne peut passer par là pour obtenir votre clé privée). Je vais expliquer plus tard pourquoi une adresse Bitcoin utilise la valeur de la clé publique et non la clé publique elle-même.

Maintenant, celui qui est prêt à payer doit créer une nouvelle transaction. Voyons un transfert réel de 0,319 bitcoins dans les données de la transaction. Ce qui suit est à peu près les données initiales, avec trois changements: 1) les données ne sont pas séquencées; 2) les numéros de ligne sont ajoutés pour une meilleure compréhension; 3) une longue série de chiffres de données de hachage est omise, ne conservant que les 6 premiers chiffres.

  1.  {"hash":"7c4025...",
  2.  "ver":1,
  3.  "vin_sz":1,
  4.  "vout_sz":1,
  5.  "lock_time":0,
  6.  "size":224,
  7.  "in":[
  8.    {"prev_out":
  9.      {"hash":"2007ae...",
  10.      "n":0},
  11.    "scriptSig":"304502... 042b2d..."}],
  12. "out":[
  13.   {"value":"0.31900000",
  14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Nous vous expliquons un par un.

    La première ligne, le hash de la transaction ([16]), est le seul marqueur utilisé pour représenter cette transaction.

    La deuxième ligne nous indique que la transaction a été effectuée avec la première version du protocole Bitcoin.

    Les lignes 3 et 4 nous disent que cette transaction a une entrée et une sortie.

    La cinquième ligne est un temps de verrouillage (lock_time) qui permet de contrôler le moment où la transaction est terminée. Actuellement, la plupart des transactions Bitcoin ont un temps de verrouillage de 0, ce qui signifie que la transaction est terminée immédiatement.

    La 6ème ligne nous indique combien de bytes (octets) cette transaction représente, et notez que ce n’est pas de l’argent de la transaction.

    Les lignes 7 à 11, qui définissent les entrées de cette transaction, et plus précisément, les lignes 8 à 10 nous disent que cette valeur d’entrée à transférer de l’argent provient de la valeur de sortie de la transaction précédente. Cette 2007ae… est la valeur de hachage de 16 bits de la transaction précédente, utilisée pour indiquer une transaction à la hausse.

    Il est intéressant de noter que la partie de l’entrée ne dit pas combien de bitcoins de la transaction précédente seront transférés à la suivante. En fait, tous les bitcoins de la sortie n = 0 de la transaction précédente ont été transférés. Par exemple, si la première sortie de la transaction précédente contient 2 bitcoins, alors ces deux bitcoins seront dépensés dans la nouvelle transaction. Cela peut sembler inconfortable, comme si vous achetiez un pain avec 20 dollars en espèces.

    Les lignes 12 à 14, qui définissent l’output de la transaction. Plus précisément, la ligne 13 nous indique le nombre d’argent sorti, soit 0,319 bitcoins. La ligne 14 est un peu plus compliquée, mais il est intéressant de noter que la chaîne a7db6f… est l’adresse de la collecte de bitcoins.

    Maintenant, vous pouvez voir comment Bitcoin a résolu le problème de l’origine des numéros de séquence de piles que nous avons mentionné précédemment. Premièrement, Bitcoin n’est pas un piles de piles de piles séparées, mais une longue chaîne de transactions qui existent dans la blockchain.

    Nous pouvons continuer à regarder en arrière et en arrière dans la chaîne de transactions. En fin de compte, il y a deux possibilités: premièrement, vous pouvez aller à la première transaction Bitcoin, qui existe dans un bloc, nous appelons ce bloc le bloc de la Genèse.

    Le deuxième résultat que l’on obtient en parcourant la chaîne d’échange est que vous arrivez à une transaction appelée “coinbase”. Chaque bloc, à l’exception du bloc de la genèse, commence par une transaction spéciale de coinbase. Cette transaction est utilisée pour récompenser les mineurs qui valident la transaction dans ce bloc.

    Ce qui n’est pas très clair dans la description ci-dessus, c’est ce qui est signé numériquement dans les 11 lignes. La solution la plus évidente est de faire signer numériquement toute la transaction par le payeur. Pour le moment, ce n’est pas le cas, certaines transactions sont ignorées. Cela donne une partie de la transaction de la plasticité, c’est-à-dire qu’elles peuvent être modifiées plus tard.

  • Il y a plusieurs entrées et sorties

Nous avons parlé précédemment d’une transaction qui n’a qu’une seule entrée et une seule sortie. En fait, la plupart des transactions Bitcoin ont plusieurs entrées ou sorties.

  1. {"hash":"993830...",
  2. "ver":1,
  3. "vin_sz":3,
  4.  "vout_sz":2,
  5.  "lock_time":0,
  6.  "size":552,
  7.  "in":[
  8.    {"prev_out":{
  9.      "hash":"3beabc...",
  10.        "n":0},
  11.     "scriptSig":"304402... 04c7d2..."},
  12.    {"prev_out":{
  13.        "hash":"fdae9b...",
  14.        "n":0},
  15.      "scriptSig":"304502... 026e15..."},
  16.    {"prev_out":{
  17.        "hash":"20c86b...",
  18.        "n":1},
  19.      "scriptSig":"304402... 038a52..."}],
  20.  "out":[
  21.    {"value":"0.01068000",
  22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
  23.    {"value":"4.00000000",
  24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Comme nous l’avons déjà fait, nous avons expliqué les choses en plusieurs lignes, la plupart étant les mêmes que celles que nous venons de faire.

    La première ligne, le hash de la transaction, est utilisée comme unique marqueur de cette transaction.

    Ligne 2, version du protocole Bitcoin, première édition.

    Les lignes 3 et 4 disent qu’il y a trois entrées et deux sorties dans cette transaction.

    La ligne 5, le temps de verrouillage ((et comme avant)

    La ligne 6 est la taille en octets de la transaction.

    Les lignes 7 à 19 définissent toutes les entrées, chacune correspondant à une sortie de la transaction précédente. La première entrée correspond aux lignes 8 à 11. Son format de contenu est le même que celui de la précédente. La deuxième entrée correspond aux lignes 12 à 15 et la troisième aux lignes 16 à 19.

    Les lignes 20 à 24 définissent toutes les sorties. Les premières sorties sont les lignes 21 et 22, et comme précédemment, la ligne 21 dit qu’il y a 0,01068 bitcoins dedans. La ligne 22 est un langage de script pour les bitcoins. La chaîne e8c30622… est l’adresse du destinataire.

    Ce qui semble étrange, c’est que, bien que chaque sortie enregistre le nombre de bitcoins, les entrées ne le font pas. Bien sûr, chaque entrée enregistre combien de bitcoins peuvent être obtenus à partir de la transaction précédente. Dans une transaction Bitcoin ordinaire, la somme des valeurs de toutes les entrées est supérieure à la plus grande partie de la sortie (sauf pour les transactions Genesis block et coinbase que nous venons de mentionner). Si la somme des entrées est supérieure à la sortie, les bitcoins en excédent sont fournis aux mineurs du bloc où la transaction a lieu.

    Le but des entrées et sorties multiples est de trouver zéro. Supposons que je veuille vous donner 0.15 bitcoins. Je peux dépenser les 0.2 bitcoins que j’ai reçus auparavant. Bien sûr, je ne veux pas vous donner tous les 0.2, donc la solution est que je vous envoie 0.15 bitcoins, puis je vous envoie 0.05 bitcoins à une autre adresse bitcoin.

  • Conclusion

Bien sûr, j’ai omis beaucoup de détails, car ce n’est pas un manuel officiel, mais je veux décrire les concepts généralement utilisés derrière Bitcoin.

Bien que les règles derrière Bitcoin soient simples et faciles à comprendre, cela ne signifie pas que toutes les conséquences possibles de ces règles seront faciles à comprendre. Il y a beaucoup plus à dire sur Bitcoin, dont je parlerai plus tard.

Beaucoup de gens disent que Bitcoin peut être utilisé de manière anonyme. Cette affirmation est née d’un marché noir similaire à Silk Road. Cependant, cette affirmation est fictive. La blockchain est publique, ce qui signifie que n’importe qui peut voir toutes les transactions Bitcoin. Bien que l’adresse Bitcoin ne corresponde pas directement à l’identité d’une personne dans le monde réel, les informaticiens ont fait beaucoup de travail pour déchiffrer le réseau social anonyme.

Peut-être, Tim O’Reilly a dit que gagner de l’argent c’est comme le réservoir d’essence dans une voiture, il faut être attentif, sinon on est coincé au bord de la route, mais la vie ne tourne pas autour d’une station-service ! Eh bien, la plupart de l’intérêt pour Bitcoin semble provenir de personnes dont le seul but dans la vie est de trouver une grande station-service.

Détails que j’ai négligés: Bien que cet article décrit les concepts principaux derrière Bitcoin, il y a beaucoup de détails que je n’ai pas mentionnés. L’un d’entre eux est une superbe astuce pour économiser de l’espace dans le protocole, basée sur une structure de données appelée Merkle tree. C’est un détail, mais c’est un détail incroyablement merveilleux, qui vaut la peine d’être vu si vous aimez la structure de données.

Bitcoin Script: Dans cet article, j’explique Bitcoin en tant que monnaie électronique en ligne. Mais c’est seulement une petite partie d’une histoire plus grande et plus intéressante. Comme nous l’avons vu, il y a un script Bitcoin dans chaque transaction. Ce script a été simplifié dans cet article pour devenir quelque chose de similaire à:

Si vous trouvez cela utile, nous vous recommandons de donner un conseil à l’auteur de cet article, Michael Nielsen, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, que vous pouvez suivre sur Twitter.

Le blog de l’auteur est également bienvenu: 1015 Si quelque chose ne va pas, s’il vous plaît, pardonnez-nous.

Il a été créé par les parents d’un jeune garçon, Jean-Pierre, qui a grandi dans une famille pauvre.