Mais attendez, c’est quoi au juste une crypto-monnaie ?

Si vous avez une connexion internet, que vous suivez les infos ou que vous ne vivez tout simplement pas dans une grotte, vous avez forcément déjà entendu des buzzwords comme BitCoin, Ethereum, BlockChain ou autres. L’année 2017 a notamment été l’année de l’explosion de toutes ces nouvelles « monnaies » qui ont émergé, de leurs rendements ahurissants, des publicités à la télé et sur le net, et de projets révolutionnaires qui allaient changer la façon dont nous faisons du commerce, envoyons de l’argent à chacun, ou qui allaient simplement changer la société dans laquelle nous vivons. Mais trêve de plaisanteries, de telles crypto-monnaies, comment ça marche ? Et surtout, comment puis-je créer la mienne ?

Comment fonctionne une crypto-monnaie ?

Coin ou Token

Il existe deux types de crypto-monnaies : le coin et le token, mais avant de rentrer dans les détails techniques, il est important de faire la différence entre les deux. Le BitCoin, le LiteCoin, ou encore l’Ethereum sont des coins, opérant dans leur propre BlockChain éponyme. Cependant, un token vit au dépens d’une BlockChain déjà existante, et vit donc dans une autre infrastructure en harmonie avec le coin original et d’autres tokens. Si vous n’êtes pas à l’aise avec la notion de BlockChain, voyez-le comme un registre qui stocke des transactions de façon décentralisée et sécurisée. Alors qu’un coin possède son propre registre de transactions (ledger en anglais), un token se réfère au réseau du coin pour enregistrer ses transactions. Rigoureusement parlant, un coin est également un token, c’est le token original associé à sa BlockChain, mais dans la suite de l’article nous allons les considérer comme deux entités distinctes car ils n’ont pas la même logique d’implémentation. On voit déjà deux niveaux de difficulté dans la création d’une crypto-monnaie : un coin nécessitera de créer tout le réseau et l’architecture de la BlockChain dans laquelle elle vivra, alors qu’on aura pas besoin de faire cela pour un token car il vivra dans un écosystème déjà existant. En créant un coin, vous avez contrôle sur toute l’infrastructure de votre BlockChain jusqu’à la couche la plus basse, alors qu’un token donnera peu de marge de manœuvre car vous dépendrez d’un système déjà existant dont vous n’aurez pas le contrôle.

J’ai pas envie de programmer, je fais comment ?

Programmer sa crypto-monnaie est un long processus, il faut définir les caractéristiques de sa crypto, savoir pourquoi on a envie de se lancer dans un projet pareil, et y allouer les ressources nécessaires. Une fois le plan de lancement de notre crypto défini, deux problèmes récurrents reviennent :

  •  Que faire concrètement, par où commencer ?
  • Si je ne sais pas programmer, je fais comment ? Pas de panique, plusieurs solutions s’offrent à vous, et on va vous les décrire après.

Comprendre comment marche une crypto-monnaie

Pour construire une crypto-monnaie, il vous faut :

  • Une structure complète de BlockChain, avec un réseau peer-to-peer.
  • Un algorithme de hashage de blocs.
  • Un algorithme de recalibration de difficulté de minage.
  • Un algorithme de consensus pour la création des blocs.
  • Définir un ensemble de données, comme le bloc génésis, la quantité de préminage, le temps de création entre chaque bloc etc .
  • Implémenter le wallet qui stockera nos cryptos générées et effectuer des transactions avec.

Comprenez ici que chaque étape nécessite un nombre conséquent de ressources et beaucoup de temps pour toute une équipe de développement.

Construire sa crypto-monnaie

Implémenter son coin

Reprenons la liste définie juste au-dessus. Nous devons d’abord définir une structure de bloc, car oui, un coin ne peut pas vivre sans sa BlockChain. On peut définir une structure simple de blocs comme dans le programme python ci-dessous :

class BlockChain(object):
   def _init_(self):
       self.chain = []
       self.current_transaction = []

   def new_block(self):
       pass

   def new_transaction(self):
       pass

   @staticmethod
   def hash(block):
       pass

   @property
   def last_block(self):
       pass

Structure de base

Dans une BlockChain, tout bloc doit posséder :

  1. un index  
  2. un horodatage
  3. une structure complexe ou non de stockage des transactions que le bloc contient (souvent sous forme d’arbre)
  4. un entier résultant de la création du bloc (nonce en anglais)
  5. une référence vers le bloc précédent

Hashage

Ensuite, il nous faut un algorithme de hashage des blocs. Plusieurs algorithmes existent et sont disponibles en open-source sur internet : sha256 du BitCoin, Scrypt du Litecoin ou les tout récents X11, X13 et X15 qui sont une succession de fonctions de hashage très puissantes, ayant une probabilité de défaillance et de collision proche de 0. Le code source de l’algorithme sha256 peut être trouvé ici.

Consensus

Les règles de création de chaque bloc doivent être définies par une règle de consensus au sein de la BlockChain. En d’autres termes, toute BlockChain doit contenir un
protocole qui régit la création de chaque bloc via des règles strictes. Les algorithmes de consensus les plus connus sont :

  • Le Proof of Work (PoW) présent chez BitCoin
  • Le Proof Of Stake (PoS) présent chez Ethereum

Le PoW qui régit la construction de la BlockChain BitCoin peut être vu comme un challenge computationnel, où il faut trouver un certain entier d’une fonction de hashage non bijective, de sorte que la sortie de cette fonction ait un certain nombre de 0 en bits de poids fort.On voit ici la notion de difficulté du PoW, car plus le nombre de 0 à obtenir en bits de poids fort est important, plus il est dur de trouver un entier vérifiant la condition. De nos jours, un ordinateur seul ne peut résoudre cette condition en un temps raisonnable. En effet, des entrepreneurs ont carrément monté des fermes de minage dans des pays où l’électricité est bon marché (Chine, Islande) pour miner exclusivement du BitCoin. Le protocole BitCoin adapte la difficulté de minage en fonction du nombre de mineurs présents, donc il est très difficile de miner avec peu de ressources comme le fait un ordinateur seul. En PoW, l’ajustement de la difficulté se fait via des Difficulty Retargetting Algorithm, comme le Kimoto Gravity Well.

Créer son wallet

Afin de manipuler ces cryptos, il vous faut un wallet pour les conserver et où effectuer vos transactions, il constitue ainsi votre tableau de bord pour vos coins. Plusieurs types de wallet existent, et pour stocker des BitCoins notamment, il existe :

  • Wallet en ligne, comme Circle
  • Wallet mobile, comme Mycelium Wallet
  • Wallet sur votre ordinateur de bureau, comme Armory 4
  • Wallet physique, comme Ledger

Il existe un grand nombre de wallets sur le net, qui fonctionnent via un système de clés privées/publiques. La clé publique est une adresse visible de tous où vous pouvez envoyer des cryptos, alors que la clé privée vous donne accès à votre wallet, et doit rester secrète et à l’abri. Imaginez-la comme la clé d’entrée de votre wallet, si on vous la subtilise, c’est comme voler les clés de votre maison ou le code de votre carte bleue ! Donc si vous créez votre propre coin, il vous faudra implémenter un wallet compatible qui se bind avec votre BlockChain, car sans wallet, c’est comme posséder un fusil chargé, mais sans gâchette…

Et si j’ai vraiment envie de rien faire pour créer mon coin ?

Pour les plus fainéants d’entre vous, certains sites vous permettent même de créer votre coin de A à Z à votre place, moyennant une certaine somme. Le site CryptoLife Development vous permet de complètement customiser son coin, du nom à la technologie de hashage et de consensus, vous pouvez ajouter votre propre logo, et il vous génère même un wallet, le tout en 4 jours ouvrés. Le prix actuel du service était de 0.25 Bitcoin, soit aux alentours de 1500 euros. Mais ce service comporte énormément de désavantages, comme le fait que votre coin sera une pâle copie du BitCoin (précisé sur le site), et vous n’aurez aucun contrôle sur la structure de votre BlockChain, à part si vous modifiez le code source vous-même, ce qui nous ramène au point de départ.

Implémenter son token

C’est quoi un token ?

On a vu que les ressources nécessaires à la création de son coin étaient conséquentes, venant surtout de l’implémentation de sa propre structure de BlockChain qui nécessite beaucoup de connaissances en programmation et beaucoup plus de temps. Maintenant, beaucoup de BlockChains sont opérationnelles sur le marché, et on peut se dire qu’au lieu de réinventer la roue, pourquoi ne pas créer une autre entité qui co-existerait avec un coin, si les caractéristiques de la BlockChain en question nous sont satisfaisantes ? Il est donc temps de créer son token, à savoir une crypto-monnaie vivant « en location » dans une autre BlockChain, mais qui bénéficie de toute la puissance du réseau.

Les tokens et les ICO

Les tokens sont au cœur du mécanisme des ICO (Initial Coin Offering). Lors d’une ICO, également appelée token sale, des tokens sont émis et vendus en très grand nombre à de multiples internautes/investisseurs afin de financer le lancement et le développement d’un projet BlockChain. La plupart des BlockChains que vous connaissez se sont initialement lancées via une ICO.

Le cas particulier des forks

Après tous ces détails, on peut observer sur le marché des cryptos spéciales comme le BitCoin Cash (BTC) où encore le LitCoin Cash. Attention, ces cryptos ne sont pas des tokens comme nous l’avons expliqué plus haut, ce sont des coins à part entière, elles sont en fait issues de ce qu’on appelle un « fork » dans le jargon des crytpo-monnaies. Un fork est une mise à jour de la BlockChain, dans lequel la chaîne principale se subdivise en deux chaines, l’une continuant la chaîne précédente, et l’autre contenant de nouvelles règles. Un tel événement s’opère souvent quand la communauté de la BlockChain n’est pas d’accord sur son fonctionnement, et décide donc de forker la BlockChain afin d’avoir deux chaines qui puissent satisfaire chaque camp.

Créer son token

Créer son token est beaucoup plus simple qu’implémenter un coin from scratch, car on n’a pas besoin d’implémenter de structure de BlockChain, on va réutiliser ce qui existe déjà. Une BlockChain très connue pour la création de tokens est Ethereum, qui a développé une forme particulière et très répandue de tokens : les ERC20. Un ERC20 est un smart-contract contenant un registre désignant les propriétaires de tokens du contrat et gérant l’ensemble des transferts de ces tokens en mettant à jour ledit registre. Le standard ERC20 a été développé par la fondation Ethereum pour justement aider à la prolifération de ces tokens et inciter les entreprises à investir dans la BlockChain Ethereum. Plus de 18000 tokens ERC20 sont recensés sur EtherScan. Pour générer son propre token, il faut donc :

  • Créer un compte sur My Ether Wallet, et stocker sa clé privée précieusement.
  • Ecrire son contrat dans le langage d’Ethereum : Solidity
  • Compiler le code Solidity (sur Visual code par exemple), et stocker les output (le bytecode et l’abi).
  • Accéder à votre compte sur My Ether Wallet et passer en Ropsten Test Network (en haut à droite), naviguer dans votre contrat et déployer celui-ci en y collant votre abi et bytecode obtenus dans la compilation de votre code Solidity.
  • Accéder à votre wallet via votre clé privée pour le déverrouiller, puis signer et déployer la transaction
  • Vérifier que votre contrat a bien été ajouté à la BlockChain en allant sur ropsten.etherscan.io, et en regardant les identifiants de transaction.
  • Dans l’onglet overview de votre transaction enregistrée, cliquer sur Contract Adress, puis l’onglet Contract Code et enfin sur Verify and Publish.
  • Vérifier que le nom de votre contract matche bien celui que vous aviez défini dans votre code solidity (« CepajouCoin » dans notre cas), sélectionner la même version du compilateur que dans notre code (première ligne du fichier, 0.4.10 ici), pas d’optimisation, copier le bytecode en ajoutant 0x devant, et enfin publier votre contrat dans la BlockChain.
  • Et voilà, vous venez de publier votre token sur la BlockChain de Test Ropsten. Vous pouvez ainsi envoyer ces tokens à n’importe qui ayant une adresse sur cette même BlockChain, et vous pourrez retrouver le détail de la création d’un token ici.

Voici un example de contrat solidity représentant un token simple. On y définit notre token, nommé « CepajouCoin », avec des attributs et des méthodes, comme le solde en tokens, transférer des tokens etc… Ecrivez toutes les fonctions qui vous semblent nécessaires, seules celles que vous avez spécifiées dans votre code seront exécutables au niveau de la BlockChain.

Au final ça sert à quoi tout ça ?

En créant votre propre crypto, vous venez de contourner le système bancaire mondial. Je ne plaisante pas ! Si vous arrivez à donner de la valeur à votre crypto, en l’articulant autour d’un projet concret et novateur, une communauté s’installera et épanouira votre projet, comme les 1000+ cryptos répertoriées dans le marketcap, certaines ont des utilisations vraiment révolutionnaires en matière de paiement, d’utilisation des ressources computationnelles et de traçabilité dans la supplychain. Une connexion internet et une adresse vous suffisent à envoyer de la valeur sans passer par une banque, c’est la vocation des premières BlockChain comme Bitcoin ou encore Ripple. Il ne reste plus qu’à vous implanter et innover avec votre projet et votre propre coin.


1 commentaire

Amadou sekouba balde · 12 mai 2019 à 0 h 49 min

Je veux créé mon compte comment faire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Comment créer sa propre crypto-monnaie ?

par Emmanuel Marchal Francis temps de lecture : 10 min
1