BitCoin

= Présentation =


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2014)
 * Sujet : Bitcoin
 * Date : 24 octobre 2014
 * Auteur : Paul MARIAGE

Mots Clés
Adresse, Bloc, BTC, Chaine de bloc, Cryptographie, Minage, P2P, Portefeuille, Signature, Taux de Hachage

= Synthèse =

Introduction
Bitcoin est une technologie pair à pair fonctionnant sans autorité centrale. La gestion des transactions et la création de bitcoins est prise en charge collectivement par le réseau.

Bitcoin est libre et ouvert. Sa conception est publique, personne ne possède ni ne contrôle Bitcoin et tous peuvent s'y joindre.

Grâce à plusieurs de ses propriétés uniques, Bitcoin rend possible des usages prometteurs qui ne pourraient pas être couverts par les systèmes de paiement précédents.

Bitcoin, what is it?
Le terme bitcoin (de l'anglais « coin » : pièce de monnaie et « bit » : unité d'information binaire) désigne à la fois un système de paiement à travers le réseau Internet et une unité de compte utilisée par ce système de paiement.

Cependant quand il est employé comme un nom propre (il commence par une majuscule et n'est pas précédé d'un article), il réfère au système de paiement et quand il est utilisé comme un nom commun (il commence par une minuscule, est précédé d'un article et peut se mettre au pluriel), il réfère à l'unité de compte.

"Peer-to-Peer*" System
Le système est « pair à pair » car tous les nœuds sont dotés des mêmes fonctionnalités et aucun ne joue un rôle privilégié.

Conçu en 2009 par un développeur non identifié utilisant le pseudonyme de Satoshi Nakamoto, le protocole a été employé pour la première fois par un logiciel écrit par Nakamoto en C++ et publié sous licence libre MIT.

Grâce à des procédés cryptographiqueset un protocole spécifique, le système décentralise la gestion de la monnaie et ne dépend pas de l'intégrité ou de la compétence d'un émetteur central.

Principle of Bitcoin


Le principe de ce système de paiement est de tenir à jour sur tous les nœuds du réseau un registre à la fois public et infalsifiable de toutes les transactions, dont le montant est exprimé dans l'unité de compte bitcoin.

Chaque bitcoin est identifié par son histoire depuis sa création jusqu'à la date présente où un agent le détient, à travers toutes les transactions dans lesquelles ce bitcoin est impliqué et qui sont reconnues par les signatures cryptographiques de tous les nœuds du réseau qui ainsi l'avalisent.

Les bitcoins figurant dans les transactions dont un compte est bénéficiaire peuvent être réutilisés par le titulaire de ce compte dans des transactions dont il est l'émetteur, à condition qu'il puisse justifier de son identité au moyen de sa signature cryptographique, les comptes eux-mêmes étant anonymes.

Les bitcoins ainsi échangés constituent une monnaie cryptographique, qui a vocation à être utilisée en tant que devise monétaire et comme moyen de paiement dans cette devise.

Cryptography


Bitcoin utilise le concept de preuve de travail, initialement imaginé pour résoudre le problème du spam, et implémenté par exemple dans le système Hashcash.

Les algorithmes de hashage sont SHA-256* et RIPEMD-160*. Un double hash en SHA-256 est utilisé pour obtenir le hash des blocs et donc la preuve de travail, tandis qu'un SHA-256 suivi d'un RIPEMD-160 est utilisé pour construire les adresses bitcoins.

Les signatures de transactions sont effectuées en utilisant la cryptographie à courbes elliptiques, dite ECDSA*. En l'occurrence, la courbe employée est secp256k1*.

Storage


Le logiciel originel écrit par Nakamoto utilise Berkeley DB* pour la gestion de ses bases de données. Depuis la version 0.8.0, BerkeleyDB n'est plus utilisée que pour le porte-clef. Les transactions et blocs sont eux stockés dans une base LevelDB*.

Au sein d'un bloc, les transactions sont stockées sous la forme d'un arbre de Merkle*.

Conception
La validation des transactions fait appel à un langage de script interne conçu par Nakamoto.

Ce langage, volontairement minimaliste et non Turing-complet, doit permettre au logiciel de s'adapter aisément à des évolutions ultérieures et permettre des fonctionnalités avancées comme les Smart Contract*.

How can I get bitcoins?
Générer du Bitcoin est relativement simple puisque dans les faits, il suffit de lancer un logiciel dédié et de laisser son ordinateur travailler.

Dans la pratique, l'ensemble fonctionne via un réseau Peer to peer, sur lequel les utilisateurs vont travailler sur des blocs. Ces blocs sont composés de transactions Bitcoin récentes qu'il va falloir "valider" via un traitement cryptographique qui génère ce qu'on appelle une "preuve de travail".

Vous contribuez à faire fonctionner le système, et vous êtes récompensés pour cela.

How can I spend my bitcoins?
Le schéma suivant permet de comprendre très simplement comment se déroule une transaction avec Bitcoin :



Competitors of bitcoins
Il existe plusieurs concurrents aux bitcoins. Les principaux sont Freecoin, Litecoin, Devcoin, Ixcoin, Namecoin, Ppcoin, Terracoin.

Vertus
Il existe de nombreux avantages à utiliser le bitcoin. Entre autres, nous pouvons citer les suivants :


 * Le bitcoin ne dépend ni d’une banque centrale ni d’un Etat, une crise économique ou politique ne l’affectera donc pas.


 * Les transactions entre deux Etats dont les devises sont différentes seront moins coûteuses que s’il faut changer de devise.


 * La masse monétaire du bitcoin étant limitée, cette devise ne connaît pas l’inflation.


 * Pour les spéculateurs, sa très grande volatilité permet de faire des profits à très court terme.


 * Le bitcoin est utilisable dans le monde entier.


 * Il n’y a pas de limite de montant aux transactions en bitcoin.

Vices
Les risques les plus souvent mentionnés pour les utilisateurs de Bitcoin sont les suivants :


 * Un risque lié à l'irréversibilité des transactions, essentiellement liée à l'anonymat, même relatif, du système.


 * Un risques opérationnels liés au logiciel et à l'environnement informatique (fichier wallet mal protégé, bande passante requise pour charger les blocs, possibilité d'attaques de déni de service).


 * Un risque de change par rapport aux monnaies fiduciaires. Pour convertir le bitcoin, il est obligatoire de passer par une plateforme d'échange. Plateformes qui sont opérées par des entreprises privées et donc vulnérables aux défaillances, voire la faillite comme cela est arrivé à Mt.Gox. De plus, sa relative jeunesse l'expose à de fortes variations de son cours.


 * Un risque technologique : il est souvent avancé que le réseau Bitcoin ne pourrait pas monter en puissance pour traiter toutes les transactions en mode pair-à-pair. La croissance exponentielle de la taille de la base de données deviendrait ingérable. Cependant, il faut noter que, pour économiser de l'espace disque, cette base est stockée à l'aide d'un arbre de Merkle qui pourra être « élagué » au fil du temps. D'autre part, si les nœuds du réseau peinent à suivre l'augmentation de la taille de la base de données, des « super-nœuds » Bitcoin sont déjà envisagés, comparables aux processeurs de paiement qu'on trouve sur les réseaux bancaires actuels. On peut noter aussi que, la loi de Moore aidant, il est probable que la puissance de calcul et de stockage mémoire nécessaire des ordinateurs personnels continue d'être suffisante.

ASIC

 * http://www.bitcoinx.com/bitcoin-mining-hardware/

Conclusion
En conclusion, nous pouvons dire que Bitcoin est un système sécurisé grâce à l'authenticité des transactions, c'est un système participatif et rémunéré, mais il présentes des risques non négligeables.

= Plus d'informations sur le vocabulaire =


 * Peer-To-Peer : http://fr.wikipedia.org/wiki/Pair_%C3%A0_pair
 * Smart Contract : http://en.wikipedia.org/wiki/Smart_contract
 * Preuve de travail : http://fr.wikipedia.org/wiki/Preuve_de_travail et http://fr.wikipedia.org/wiki/Hashcash
 * Fonction de Hachage : http://fr.wikipedia.org/wiki/Fonction_de_hachage
 * SHA-256 : http://fr.wikipedia.org/wiki/SHA-256
 * RIPEMD-160 : http://fr.wikipedia.org/wiki/RIPEMD-160
 * ECDSA : http://fr.wikipedia.org/wiki/Elliptic_curve_digital_signature_algorithm
 * Secp256k1 : https://en.bitcoin.it/wiki/Secp256k1
 * Berkeley DB : http://fr.wikipedia.org/wiki/Berkeley_DB
 * LevelDB : http://fr.wikipedia.org/wiki/LevelDB
 * Arbre de Merkle : http://fr.wikipedia.org/wiki/Arbre_de_Merkle
 * Turing-complet : http://fr.wikipedia.org/wiki/Turing-complet

= Sources =


 * http://wiki.p2pfr.com/p2p/bitcoin


 * http://linuxfr.org/users/gof/journaux/comment-fonctionne-bitcoin


 * http://www.wikiberal.org/wiki/Bitcoin


 * http://www.sitedutrader.fr/bitcoin/le-bitcoin-definition-complete/


 * https://en.bitcoin.it/wiki/