Les ressources ont été chargées... Je charge...

Comment fonctionne le protocole Bitcoin?

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2017-01-19 18:30:04, mis à jour:

Comment fonctionne le protocole Bitcoin?

  • Le Bitcoin

    Maintenant, laissons Infocoin et tournons-nous vers le véritable protocole Bitcoin. Il n'y a pas beaucoup de différence entre Bitcoin et l'Infocoin que nous venons de construire étape par étape, sauf un changement notable.

    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 le solde de Bitcoin, qui est de 0.06555555 bitcoins, à un prix de transaction de près de 70 $ sur la capture d'écran.

    img

    Supposons que vous soyez un marchand, 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 programme de portefeuille.

    img

    Ensuite, vous envoyez votre adresse Bitcoin à la personne qui vous paiera. Vous pouvez l'envoyer par e-mail ou directement sur votre page Web. C'est sûr, car votre adresse n'est rien de plus qu'une clé publique hachée, et vous pouvez en toute sécurité la divulguer à n'importe qui (personne ne peut passer par elle pour obtenir votre clé privée).

    Maintenant, la personne qui est prête à payer doit créer une nouvelle transaction. Voyons une vraie transaction de transfert de 0,319 bitcoins. Ci-dessous, ce sont presque les données originales, il y a trois changements: 1) les données ne sont pas continuées; 2) les numéros de ligne ont été ajoutés pour une meilleure compréhension; 3) une longue série de chiffres de données de hachage a été 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 allons vous expliquer les lignes par lignes.

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

      La deuxième ligne nous indique que cette transaction utilise 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 quand la transaction est terminée. La plupart des transactions Bitcoin sont maintenant verrouillées à zéro, c'est-à-dire immédiatement terminées.

      La ligne 6 nous indique la taille de la transaction en octets, et notez que ce n'est pas l'argent de la transaction.

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

      Il est intéressant de noter que la partie d'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 n = 0 de la transaction précédente contient 2 bitcoins, ces deux bitcoins seront dépensés dans la nouvelle transaction.

      Les lignes 12 à 14 définissent l'exécution de la transaction. Plus précisément, la ligne 13 nous indique la quantité d'argent à exécuter, c'est-à-dire 0.319 bitcoins. La ligne 14 est plus complexe, et il est intéressant de noter que la chaîne a7db6f... est l'adresse de la facturation de bitcoins.

      Maintenant, vous pouvez voir comment Bitcoin résout le problème de l'origine des numéros de série de jetons que nous avons mentionné précédemment. Premièrement, Bitcoin n'est pas un jeton séparé, mais une longue chaîne de transactions sur la blockchain.

      Nous pouvons continuer à aller de l'avant et en arrière dans la chaîne de transactions. En fin de compte, il y a deux possibilités. Premièrement, vous pouvez arriver à la première transaction Bitcoin, qui existe dans un bloc que nous appelons le bloc Genesis.

      Le deuxième résultat que vous pouvez voir dans la chaîne de transaction est que vous arrivez à une transaction appelée une pile de base de pièces. En plus du bloc Genesis, chaque bloc commence par une transaction de base de pièces spéciale. Cette transaction est utilisée pour récompenser les mineurs qui vérifient les transactions sur ce bloc.

      La description ci-dessus n'est pas très claire sur ce qu'est réellement ce qui est signé numériquement dans les 11 lignes. Le moyen le plus évident est de demander au payeur de signer numériquement l'ensemble de la transaction. Pour le moment, ce n'est pas le cas, certaines transactions sont ignorées. Cela rend une partie des transactions plastifiables, c'est-à-dire qu'elles peuvent être modifiées plus tard.

  • Il y a plusieurs transactions d'entrée et de sortie

    Dans la section précédente, nous avons parlé d'une transaction avec une seule entrée et une seule sortie. En fait, la plupart des transactions Bitcoin ont plusieurs entrées ou plusieurs 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 précédemment, nous avons expliqué une ligne après l'autre, la plupart du temps la même chose que la précédente.

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

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

      Les lignes 3 et 4 indiquent que la transaction comporte trois entrées et deux sorties.

      La cinquième ligne, le temps de verrouillage ((comme précédemment) ‖.

      La ligne 6 indique la taille des octets de la transaction.

      Les lignes 7 à 19 définissent toutes les entrées, chacune correspondant à la sortie de la transaction précédente. La première est de 8 à 11 lignes.

      Les lignes 20 à 24 définissent toutes les sorties. La première sortie est les lignes 21 et 22, et comme précédemment, la ligne 21 indique qu'il y a 0.01068 bitcoins à l'intérieur.

      Il semble un peu étrange que, bien que chaque sortie enregistre la quantité de bitcoins, l'entrée n'enregistre pas. Bien sûr, chaque entrée indique combien de bitcoins peuvent être obtenus à partir de sa dernière transaction. Dans une transaction Bitcoin ordinaire, la somme de la valeur de toutes les entrées est supérieure à la somme de toutes les sorties (à l'exception des transactions Genesis et Coinbase mentionnées précédemment).

      La fonction des entrées et sorties multiples est de trouver un zéro. Supposons que je veux vous donner 0.15 bitcoins. Je peux dépenser les 0.2 bitcoins que j'ai reçus précédemment. 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 à ma propre adresse Bitcoin.

  • Le mot de la fin

    Le concept de base derrière Bitcoin est déjà décrit. Bien sûr, j'ai aussi ignoré de nombreux détails. Ce n'est pas un manuel officiel après tout. Mais je veux décrire le concept derrière Bitcoin qui est généralement utilisé.

    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 soient faciles à comprendre. Il y a beaucoup à dire sur Bitcoin, je vais en parler dans un article ultérieur.

    Beaucoup de gens disent que Bitcoin peut être utilisé de manière anonyme. Cette affirmation a été formée sur des marchés noirs similaires à Silk Road. Cependant, cette affirmation est fictive. La blockchain est publique, ce qui signifie que tout le monde peut voir toutes les transactions de Bitcoin. Bien que les adresses de Bitcoin ne correspondent pas directement à l'identité d'une personne dans le monde réel, les informaticiens ont fait beaucoup de travail pour déchiffrer les réseaux sociaux anonymes.

    Tim O'Reilly a déclaré: " Gagner de l'argent est comme une pompe à huile dans une voiture, vous devez être attentif, sinon vous serez 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. Je dois admettre que c'est déroutant. Je pense que c'est plus intéressant et plus agréable de voir Bitcoin ou d'autres monnaies numériques comme un outil de coopération pour façonner les comportements humains.

    Les détails que j'ai négligés: Bien que cet article décrit le concept principal derrière Bitcoin, il y a beaucoup de détails que je n'ai pas mentionnés. L'un d'entre eux est l'excellente astuce d'économie d'espace dans le protocole, basée sur une structure de données appelée arbre de Merkle. C'est un détail, mais c'est un détail extrêmement intéressant, qui vaut la peine d'être vu si vous aimez la structure de données.

    Scénario Bitcoin: Dans cet article, j'explique que Bitcoin est une monnaie électronique en ligne. Mais ce n'est qu'une petite partie d'une histoire plus large et plus intéressante. Comme nous l'avons vu, chaque transaction Bitcoin a un script Bitcoin. Ce script est simplifié dans cet article en quelque chose de similaire à:

    Si vous trouvez cela utile, je vous recommande de donner un conseil à l'auteur de cet article, Michael Nielsen, dont l'adresse est 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ. Vous pouvez également le suivre sur Twitter.

    Bienvenue également sur le microblog de l'interprète:?? 1015 Si vous avez des problèmes, merci de nous excuser.

Nous avons donc décidé d'étudier la Bible en famille.


Plus de