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 (en).

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.

Conclusion
= Notes et références =

- http://www.developereconomics.com/top-game-development-tools-pros-cons

- http://unity3d.com

- http://www.unrealengine.com

- http://www.projectanarchy.com

- http://www.ambientinsight.com