Le Bitcoin est l’une des premières cryptomonnaies utilisant un réseau de type paire-à-paire et des systèmes cryptographiques sophistiqués. Elle est aujourd’hui évaluée à une valeur nette de plus de 185 milliards de dollars. Ce document traitera des origines du Bitcoin, mais aussi de l’implémentation des technologies utilisées dans cette monnaie.

Les origines du Bitcoin

Les origines du Bitcoin remontent à fin 2008. En août, le nom de domaine bitcoin.org est enregistré et c’est le 1er novembre 2008 qu’est publié le livre blanc qui pose les bases de la crypto-monnaie. Nommé «Bitcoin: un système de monnaie électronique paire-à-paire», c’est dans celui-ci qu’est évoqué pour la première fois un système monétaire entièrement décentralisé et sécurisé. Le livre blanc fut ensuite posté sur une mailing list dédiée à la cryptographie pendant la même période. C’est ici que le projet attira l’attention des spécialistes du milieu.

L’auteur du Bitcoin: Satoshi Nakamoto

Satoshi Nakamoto, l’auteur du Bitcoin, reste encore inconnu à ce jour. Il pourrait aussi bien s’agir d’une seule personne que d’un groupe de plusieurs personnes disséminées à travers le monde. Son profil, tel qu’il apparaît sur un site traitant des systèmes pair-à-pair (P2P Foundation), indique qu’il s’agit d’un homme d’origine japonaise. Toutefois, ces informations pourraient très bien être fabriquées – son anglais parfait remet en question ses origines. De plus, aucune preuve concrète n’a jamais été donnée quant à son identité.

Il a miné les 50 premiers Bitcoins dans le genesis block – un bloc unique en ce qu’il ne contient aucune référence à un bloc précédent. Ainsi, les transactions faites jusqu’à ce jour intègrent l’historique de chaque transaction effectuée depuis ce premier bloc. Il est aussi la première personne à émettre une transaction le 3 janvier 2009.

S’il est l’inventeur du Bitcoin et a écrit le code source originel, Satoshi Nakamoto s’est aujourd’hui détaché du projet; les dernières traces de son travail datant de décembre 2010. Toutefois, avant de disparaître, Nakamoto donna les reines du projet au développeur Gavin Andresen qui créa la Bitcoin Foundation en 2012.

La reconnaissance dans le monde

Le Bitcoin est aujourd’hui une monnaie acceptée par un nombre considérable d’acteurs économiques. C’est même la monnaie de prédilection pour un certain nombre d’échanges pour lesquels l’anonymat et la discrétion sont de mise. Ainsi, de nombreux organismes firent figure d’early adopters et, très tôt, prirent en charge le Bitcoin, notamment: l’EFF, Wikileaks, Internet Archive et al. Dès 2012, plus d’un millier de marchand prenaient ainsi en charge le protocole. Des entreprises à portée massive telles que Baidu ou Zynga commencent à accepter le Bitcoin à la même période. Newegg, Dell, Microsoft, Steam, Barclays, Uber et al. ont successivement accepté le Bitcoin dans les années à venir.

Début 2017, le Japon passe une loi donnant au Bitcoin le statut de devise pouvant être utilisée légalement pour n’importe quel échange. Par la suite, en janvier 2018, le gouvernement sud-coréen fait passer une régulation obligeant chaque commerçant et client à révéler leur identité mettant ainsi fin à la possibilité d’échanger des Bitcoins de manière anonyme dans le pays.

Toutefois, plusieurs événements mettant en cause la force du Bitcoin ont eu lieu. Ainsi, en août 2017 le Bitcoin est séparé en deux devises différentes: le Bitcoin (BTC) et Bitcoin Cash (BCH). Steam, Stripe et d’autres entreprises ont annoncé en fin d’année 2017 supprimer graduellement la possibilité d’effectuer des transactions en Bitcoin. Les principales raisons évoquées étant les coûts de transaction de plus en plus élevés et un temps de complétion des transactions beaucoup trop lent, même si la puissance consacrée au minage était de 8000000 tera-hash par seconde:

La puissance globale consacrée aujourd’hui au minage de Bitcoins est de 2250000 pétaflops. C’est plus de 20000 fois la puissance du plus puissant ordinateur du monde (le «Tianhe-2» détenu par la Chine qui espère atteindre en 2015 une puissance de 100 pétaflops) et c’est largement plus de cent fois la puissance cumulée des 500 ordinateurs les plus puissants. – Jean-Paul Delahaye


Point de vue économique

Le marché du Bitcoin est perçu, selon une majeure partie des économistes, comme une bulle spéculative. En effet, son prix peut doubler d’un jour à l’autre. D’autres, voient les crypto-monnaies comme le seul moyen de stocker son argent sans crainte d’inflation et création artificielle de monnaie par les banques centrales. Cependant, tout le monde est d’accord sur le fait qu’il s’agit d’un marché relativement jeune et instable, exigeant une observation constante du prix et une approche avec du recul.

Les débuts du Bitcoin sur le marché

Le Bitcoin est l’une des premières crypto-monnaies crées. C’est aussi la première crypto-monnaie qui eu un succès au niveau international. Pour bien expliquer le phénomène du Bitcoin, il faut remonter à 2008, quand l’une des plus grandes crises financières s’est produite. Des dizaines de devises ont commencé à perdre de leur valeur – les méthodes traditionnelles d’évaluation monétaire et leur dépendance ont contribuées à une catastrophe économique.

À cette periode, la monnaie virtuelle semblait être une idée abstraite d’Internet. Cela se voyait particulièrement avec les faibles cotations du Bitcoin quand il a fait ses débuts sur le marché boursier de MtGox et ne valait que 0.063 USD par unité. Le Bitcoin était alors la seule monnaie ne pouvant pas être confisquée par les forces d’état (gouvernements, banques, huissiers de justice, etc.). Il fournissait une garantie de possession d’argent qui s’avéra particulièrement utile dans les pays les plus touchés par la crise comme la Grèce.

If people lose faith in a currency, the typical reaction is to start using another one. Traditionally, money has simply flung to the most stable currency, which has typically been the dollar. But Bitcoin has a couple of advantages over old-fashioned cash. The first advantage is that it is not controlled by any central authority. In countries where people are increasingly distrustful of how central banks and governments manage the economy, Bitcoin may seem like a more sensible alternative. ~ Danny Bradbury

Comparaison avec les monnaies classiques

L’argent est une marchandise reconnue comme le résultat d’un consentement général et en tant que moyen d’échange économique. L’argent est donc tout ce qui fait l’objet d’un contrat entre deux personnes et est échangeable contre d’autres biens. C’est par exemple le cas des billets de banque ou encore des virements électroniques. Chaque monnaie doit se soumettre à trois règles:

  1. Il doit être possible de montrer qu’une somme d’argent appartient à son propriétaire.
  2. Il doit être possible de transférer une somme d’argent d’un propriétaire à un autre.
  3. Après le transfert, le propriétaire d’origine perd le droit sur la somme transférée.

Le Bitcoin vérifie toutes ces règles et résout plus efficacement d’autres problèmes grâce à des mécanismes mathématiques et cryptographiques:

  • Sécurité. Au cœur des crypto-monnaies se trouve une technologie nommée blockchain. Il s’agit d’un système qui joue le rôle du registre des transactions. Il peut être imaginé comme un livre de comptabilité collectif diffus dans le réseau. Il est ouvert à tous, mais ne peut être corrompu, car il est protégé par des outils cryptographiques puissants. Une fois une transaction enregistrée dans le registre, elle ne peut pas être annulée.
  • Anonymat. L’émetteur et le destinataire sont identifiés par une clé publique mais leur vraie identité n’est connue de personne à part eux. En tant qu’utilisateur, nous ne sommes donc qu’une chaîne de caractères et de nombres aux yeux des autres internautes. Il n’y a aucun moyen de retrouver notre vraie identité en s’appuyant sur les hash du registre public qui sont gérés par la blockchain.
  • Divisibilité. Le prix d’un Bitcoin dépasse le budget de la plupart des personnes qui sont potentiellement intéressées dans son achat. Le grand avantage du Bitcoin est sa divisibilité. Ainsi, il est possible d’acheter 0,00000001 BTC (jusqu’à 8 chiffres après la virgule).
  • Décentralisation. Les crypto-monnaies reposent sur un système informatique décentralisé (de type pair-à-pair) et souvent avec un code source publié sous une licence libre (MIT pour le Bitcoin). Tout le monde peut utiliser sa machine pour aider à améliorer l’infrastructure.
  • Facilité de transferts. Il est possible d’effectuer des transferts d’argent dans le monde entier à un prix très bas. Le coût de transaction est redistribué entre les «mineurs» une fois la transaction validée. En moyenne, un transfert dure 30 minutes (jusqu’à 16 heures dans les cas extrêmes). Plus le coût de transaction est grand, plus vite le transfert est effectué.

Le Bitcoin est une technologie révolutionnaire qui va changer le monde de la finance, tout comme l’e-mail a changé la façon dont les gens communiquent.


Fonctionnement et réseau

Dans cette partie, nous verrons comment est stocké l’argent sur un portefeuille virtuel et comment sont vérifiés les transferts. D’un premier coup d’œil, c’est simple – la blockchain vérifie une par une toutes les transactions et compte combien d’argent a été stocké et dépensé sur l’adresse d’un portefeuille. Si on a reçu assez de Bitcoins sur notre clé publique, le transfert peut être réalisé. En réalité, c’est un mécanisme beaucoup plus complexe.

Blockchain

La blockchain est une technologie basée sur un réseau de type pair-à-pair (sans serveur central) qui sert d’une interface entre notre base de données locale et les bases de données des autres peers. Chaque machine dans le réseau peut participer à la création de la blockchain. Ce système forme une chaîne de blocs qui sont connectés les uns aux autres. Chaque bloc contient plusieurs informations. Dans le cas des monnaies virtuelles, les plus importantes sont:

  1. le nombre total de transactions qui ont été enregistrées dans le bloc;
  2. le détail de chaque transaction enregistrée;
  3. le hash du bloc précédent;

Une fois qu’un bloc est rempli avec un nombre de transactions suffisant, d’autres blocs sont créés et une véritable structure de chaîne apparaît. En 2017, un nouveau bloc est créé toutes les 10 minutes en moyenne.

Implementation basique

class Block {
  constructor(index, previousHash, data) {
    // Le numéro du bloc
    this.index = index;
    // Transactions
    this.data = data;
    // Date de création
    this.date = new Date();
    // Le hash du bloc précédent
    this.prevHash = previousHash;
  }

  get hash() {
    return sha256(
      this.index + this.date + this.prevHash + JSON.stringify(this.data)
    );
  }
}

class Blockchain {
  constructor(genesisBlock) {
    // Le bloc initial, sans référence au bloc précédent
    this.blockchain = [genesisBlock];
  }

  addBlock(data) {
    const index    = this.blockchain.length;
    const oldBlock = this.blockchain[index - 1];
    const newBlock = new Block(index, oldBlock.hash, data);

    if (this.checkValidity(newBlock, oldBlock)) {
      this.blockchain.push(newBlock);
    }
  }

  checkValidity(newBlock, oldBlock) {
    if (newBlock.index !== oldBlock.index + 1)
      throw new Error("Invalid index");

    if (newBlock.previousHash !== oldBlock.hash)
      throw new Error("Invalid hash");

    return true;
  }

  checkIntegrality() {
    for (let i = 1; i < this.blockchain.length; i++) {
      const prev = this.blockchain[i - 1];
      const next = this.blockchain[i];

      if (!this.checkValidity(next, prev)) return false;
    }

    return true;
  }
}

Synchronisation des bases de données

La synchronisation de notre base de données locale avec les bases de données des autres paires connectés au réseau n’est pas une tâche triviale. Le protocole de réplication doit assurer:

  • la cohérence, c’est-à-dire la capacité de notre système à refléter sur la copie d’une donnée les modifications intervenues sur d’autre copies de cette donnée;
  • la scalabilité, c’est-à-dire la capacité de notre système à s’adapter à un changement d’ordre de grandeur de la demande, en particulier sa capacité à maintenir ses fonctionnalités et ses performances en cas de forte demande.

Il s’agit d’une communication à double-sens: notre système doit envoyer toutes les modifications pour les inclure dans la blockchain principale et fusionner les changements rencontrés chez les autres pairs pour les inclure dans la blockchain locale. À notre rescousse viennent les «Gossip protocols».

L’information se propage comme une épidémie dans le réseau en O(log(n)). L’implementation de ce protocole est décrite par Robbert van Renesse, Dan Dumitriu, Valient Gough et Chris Thomas dans leur publication «Efficient Reconciliation and Flow Control for Anti-Entropy Protocols»:

With few limitations, updates spread in expected time that grows logarithmic in the number of participating hosts, even in the face of host failures and message loss. The behavior of update propagation is easily modeled with well-known epidemic analysis techniques. As a result, many distributed applications use gossip to contain various inconsistencies.

Transactions

Dans la blockchain, toute information est publique. C’est l’une des caractéristiques révolutionnaires de la blockchain qui fait tout son intérêt – chaque transaction (partie élémentaire d’un bloc) peut être vérifiée par n’importe qui, sans banque centrale. L’implémentation la plus simple pourrait être:

Jean envoie 5 BTC a Pierre
…
Marie envoie 2 BTC a Lucie

Pour vérifier que c’est bien Jean et Marie qui ont envoyé de l’argent, dans chaque transaction on ajoute une signature (digital signature) générée par notre portefeuille. Il s’agit d’un système cryptographique classique appelé RSA. À notre compte est attribué une clé privée (q) et une clé publique (p). Ce sont de grand nombres premiers, issus d’une courbe elliptique. De plus, nous disposons du hash (h) de la transaction.

Vérification de la signature

Nous disposons de 3 nombres:

  • q: clé privée, connue par le propriétaire du portefeuille;
  • p: clé publique, utilisée pour effectuer des transactions;
  • h: hash de la transaction;

Pour calculer une signature, il est nécessaire d’utiliser les 3 nombres et masquer la clé privée. Pour cela, on effectue l’opération suivante:

N = p × q

Ainsi on obtient un 4eme nombre contenant la clé privée cachée. Avec les moyens technologiques dont nous disposons aujourd’hui, il est impossible d’extraire cette clé sans la connaître à l’avance. Il est cependant très facile de vérifier, si (N) cache bien notre clé privée en effectuant l’opération inverse:

q = N / p

Pour calculer la signature (s), nous effectuons une dernière opération:

s = h × N

Pour vérifier les transactions on utilise les propriétés du système RSA. Il est ainsi possible de vérifier que l’auteur de la transaction est en possession de la clé privée qui correspond à sa clé publique et donc que c’est lui qui a effectué la transaction. Le champ data d’un bloc peut ressembler à celui-ci:

{
  "receiver": "1HPs4CYgxpR3MP4…kfBciJBfKLUT",
  "sender": "14uGXpDoZxFsjzT…R4mLi8ay4aAy",
  "amount": "0.0015",
  "N": "12S…036",
  "h": "11bf52e5ef03cb40d7473…5266df0360fcd613fdc6b85",
  "s": "809…fc4"
}

Resources

  1. “Bitcoin - a Step Toward Censorship-Resistant Digital Currency” – Rainey Reitman
  2. ”BitPay Signs 1,000 Merchants to Accept Bitcoin Payments” – Brian Browdie
  3. “Le Bitcoin, première crypto-monnaie” – Jean-Paul Delahaye
  4. “The price of bitcoin has doubled in two weeks“ – Lucas Matney
  5. “Why Is Bitcoin’s Value So Volatile” – Jonathan Todd Barker
  6. “Terrorist Use of Cyberspace and Cyber Terrorism: New Challenges and Responses” – M.N. Ogun
  7. “Bitcoin public and private keys” – Prypto
  8. “How long do Bitcoin transactions take?“ – Steven Buchko
  9. “Efficient Reconciliation and Flow Control for Anti-Entropy Protocols“ – Robbert van Renesse