Un Dashboard pour Crypto monnaies en Vue JS

Objectif du projet

  1. Apprendre VUE JS
  2. Apprendre Flexbox / Ne pas utiliser Bootstrap
  3. Utiliser le stockage local du navigateur

 

crypto_vue_js
 

L’application permet de suivre des crypto-monnaies : taux, market cap… Il faut rechercher une crypto monnaie pour l’ajouter au dashboard. Les informations sont tirées de l’API coinmarketcap.com, et sont sauvegardées en local dans le navigateur. L’état du dashboard est donc automatiquement sauvegardé.

Le code est disponible ICI.

Testez l’application ICI.

Ethereum : comprendre le gas price et gas limit

Ethereum : comprendre le gas price et gas limit

Utiliser le réseau Ethereum n’est pas gratuit. Pour chaque utilisation du réseau (envoi d’Ether, tokens…) vous allez consommer du Gas. Ce Gas correspond aux frais de transaction. Contrairement à Bitcoin, où vous payez des frais suivant la taille de la transaction, avec Ethereum, vous allez payer des frais suivant sa complexité.

 

Pourquoi payer ?

Les applications décentralisées sur le réseau Ethereum sont exécutées sur chaque ordinateur du réseau.

Lorsque vous achetez des Tokens par exemple, un Smart Contract va être exécuté pour associer votre adresse à un montant en Token. Ce Smart Contract va être exécuté sur chaque ordinateur du réseau Ethereum.

Le coût de l’exécution permet de ne pas spammer le réseau. Si quelqu’un décide de faire une boucle infini dans un Smart Contract par exemple, ce sont tous les ordinateurs du réseau qui vont faire cette boucle. Le coût en gas va augmenter au fil des boucles effectuées, et la personne se retrouvera à court d’Ether au bout d’un moment.

Le coût en gas permet de sécuriser le réseau pour ne pas abuser de celui-ci.

 

Le Gas

Pour écrire un Smart Contract, le langage de programmation principal est Solidity. Le code écrit avec Solidity est compilé en une séquence d’opérations, avant d’être déployé dans la Blockchain Ethereum. Chaque opération a un coût fixe en gas.

compilation smart contract
Le coût de chaque opération est présent dans le yellow paper (Appendix G.) :  Yellow paper

Ici les opérations sont : « DUP1« , « PUSH 0 » etc.

Lorsque vous utilisez le réseau Ethereum, votre transaction va exécuter des opérations. Vous allez donc dépenser des unités de gas en fonction des opérations exécutées. Plus il y a d’opérations exécutées, plus vous consommez du gas.

Il serait impossible de modifier le coût des opérations à chaque fois que la valeur de l’Ether change. C’est pourquoi, un coût en Ether doit être associé à 1 unité de gas. C’est le gas price.

 

Le Gas price

Comment convertir le gas en Ether ? Le gas price représente le coût d’une unité de gas en Ether :

Frais de transaction = montant total en unité de gas (pour chaque opération exécutée) x gas price

Pour faire simple, plus vous exécutez de code, plus vous payez de frais.

Le gas et le gas price peuvent être comparés à l’essence que vous consommez avec votre voiture. La capacité de votre réservoir ne bouge pas (comme le coût des opérations). Si votre réservoir fait 50L, il fera toujours 50L. Par contre, le coût de l’essence bouge (tout comme le gas price).

Vos frais en essence sont :

Frais d’essence = volume d’essence à mettre dans le réservoir * prix de l’essence

Retrouvez le prix du gas en temps réel sur : ethgasstation

 

Le Gas limit

Le gas limit permet de spécifier la valeur limite que vous vous permettez de payer, lorsque vous allez utiliser le réseau.

Par défaut le coût minimum d’une transaction est de 21000 gas. C’est le cas lorsque vous envoyez de l’Ether vers un autre compte. C’est une transaction simple, le coût en gas s’élève donc à 21000 gas. Pour une interaction avec un Smart Contract, vous allez dépenser : 21 000 gas + le coût en gas des opérations exécutées.

Si vous spécifiez une limite trop faible et que la limite de gas est atteinte, l’exécution s’arrête, et votre transaction est annulée. Vous payez tout de même les ethers, mais la transaction n’a jamais eu lieu. Si la limite n’est pas atteinte, vous payez seulement le gas nécessaire à l’exécution.

« Il n’est pas recommandé de mettre une grande limite pour être sûr que la transaction fonctionne. Si le Smart Contract contient un bug inattendu, vous pourriez être amené à payer une somme conséquente. »

 

Exemple de transaction

Je vais utiliser l’IDE remix pour cet exemple. Vous pouvez y écrire vos Smart Contracts et les tester facilement. Reprenons le Smart Contract du schéma plus haut :

ethereum smart contract
 

Je vais utiliser la fonction « setNumber », qui se charge simplement de stocker un nombre dans le Smart Contract. Elle prend un nombre en paramètre. Je lui passe 5, et je fixe le gas limit à 3 000 000. Voici le résultat de la transaction :

gas limit ok
 

Dans ce tableau, on va s’intéresser à 5 lignes :

  1. « status » : contient le statut de la transaction. Ici elle s’est bien passée : « Transaction mined and execution succeed ».
  2. « gas » : correspond au gas limit que j’ai fixé : 3 000 000.
  3. « transaction cost » : contient le coût total de la transaction en gas. Dans cet exemple, 41 669 gas.
  4. « execution cost » : contient le coût de l’exécution du Smart Contract en gas. Plus il y a de code exécuté, plus le coût est élevé. Ici, le stockage du nombre 5 a coûté 20 205 gas. Si j’avais choisi de le multiplier par 2 en plus, j’aurai dépensé un peu plus de gas.
  5. « decoded input » : correspond aux paramètres de la fonction exécutée. Soit le nombre 5.

Ici, j’ai donc payé 41 669 gas pour stocker un nombre dans mon Smart Contract. Dans ces 41 669 gas, j’ai payé 20 205 gas pour le code exécuté dans la fonction setNumber.

Si on fait le calcul, il reste 41 669 – 20 205 = 21 464 gas.

Pourquoi ai-je payé ces 21 464 gas en plus ? Comme dit précédemment, toute transaction coûte forcément 21 000 gas de base. Je ne rentrerais pas dans les détails dans cet article, mais j’ai également payé du gas pour appeler la fonction et lui passer le nombre 5. Ces frais sont donc de 464 gas.

« Il est possible de calculer ces frais en se servant de la ligne « input », qui contient le code hexadécimal de l’input de la transaction. On peut y retrouver le nom de la fonction appelée et les paramètres passés (ici 5). Il y a ensuite un calcul à faire suivant le nombre de chiffre zéro et non zéro contenu dans ce code »

J’ai donc payé les frais suivant :

  1. 21 000 gas de base, comme pour toute transaction.
  2. 464 gas pour l’appel de la fonction et le passage du nombre 5.
  3. 20 205 gas pour l’exécution du code de la fonction et le stockage du nombre 5.

Ce qui fait un total de 21000 + 464 + 20 205 = 41 669 gas.

Imaginons maintenant que le coût du gas price à ce moment là soit de 6. Mes frais s’élèverait donc à 41 669 x 6 = 250 014 Gwei.

Gwei est une unité de mesure en Ether : 1 Ether = 10^8 Gwei. Pour passer de Gwei en Ether, il faut donc diviser par 10^8. J’ai donc payé la somme de 250 014/10^8 = 0,000250014 Ether.

 

Dans cet exemple, le coût de la transaction (41 669 gas) ne dépasse pas le gas limit que j’ai fixé (3 000 000 gas). La transaction s’est donc bien passée. Voila ce qui ce serait passé avec un gas limit trop faible :

gas limit too low
 

Reprenons les lignes du tableau :

  1. « status » : Cette fois, la transaction a échouée : « Transaction mined but execution failed ».
  2. « gas » : J’ai cette fois fixé un gas limit de 22 000 gas (trop faible).
  3. « transaction cost » : Je n’ai donc payé que 22 000 gas, car je ne peux pas dépenser plus que le gas limit.
  4. « execution cost » : l’exécution ne s’est pas déroulée entièrement, et n’a donc coûtée que 536 gas (21 000 + 464 + 536 = 22 000).
  5. « decoded input » : Pas de changement ici, j’ai encore passé le nombre 5.

Comme j’ai défini un gas limit trop faible, la transaction a échouée. L’exécution s’est arrêtée à 22 000 gas dépensé. Le nombre 5 n’est donc pas stocké, mais j’ai tout de même payé 22 000 gas.

 

A retenir

  1. Faire une transaction sur le réseau Ethereum nous fait exécuter des Smart Contracts (sauf dans certains cas comme l’envoi d’Ether)
  2. Les Smart Contracts contiennent des opérations qui coûtent un nombre fixe en gas. Donc plus on exécute de code, plus on dépense du gas.
  3. Le gas a un prix qui fluctue en permanence, c’est le gas price.
  4. Le coût d’une transaction est donc : gas utilisés x gas price. Sachant qu’une transaction coûte de base 21 000 gas.
  5. Le gas limit permet de spécifier le nombre maximum de gas pouvant être dépensé dans la transaction. Si on le dépasse, la transaction est annulée, mais on paie tout de même les gas.

Réseau Bitcoin : Full Node et SPV wallet

Réseau Bitcoin : Full Node et SPV wallet

La taille de la Blockchain Bitcoin ne cesse d’augmenter. Elle a dépassé les 150 Gigas à l’heure où j’écris cet article. Heureusement, personne ne vous oblige à la télécharger entièrement pour faire vos transactions.

Ils existent plusieurs type de noeuds dans le réseau Bitcoin : Les Full Nodes, les SPV, les Miners… Un noeud est simplement un ordinateur connecté au réseau Bitcoin. Selon son type (Full-node, SPV…), il va avoir un rôle différent dans le réseau. Dans cet article, on ne s’intéresse qu’à la différence entre les Full Nodes et SPV.

 

Les Full Nodes

Les Full Nodes sont des noeuds qui téléchargent toute la Blockchain. Ce sont eux qui valident les blocs et transactions, pour ensuite les relayer aux autres.

Ils se connectent entre eux en Peer to Peer, et échangent des messages « getblocks », contenant le hash du bloc le plus récent de leur Blockchain. Ils peuvent ainsi savoir si un autre Full Node a une Blockchain plus récente. Le Full Node avec la Blockchain la plus récente, va ensuite identifier les 500 prochains blocs à transmettre. Il transmet les hashs de ces blocs via le message « inv » aux autres nœuds, qui vont télécharger ces blocs avec une série de messages « getdata » :

Full node bitcoin message

« Schéma tiré du livre Mastering Bitcoin« 

En résumé les Full Nodes cherchent à savoir qui a la Blockchain la plus récente grâce à des messages « getblocks ». Ils reçoivent en réponse des messages « inv » contenant les hashs des blocs manquants. Puis ils téléchargent ces blocs avec des messages « getdata ».

Tout le monde ne peut pas se permettre de faire tourner un Full Node, car il faut de l’espace disque et un minimum de performance. Mais cela reste le moyen le plus sûr d’utiliser Bitcoin, car vous êtes certain que toutes les règles Bitcoin sont respectées. Comme par exemple le fait qu’aucun Bitcoin n’appartenant pas au propriétaire n’est dépensé, qu’aucune valeur n’a été dépensée deux fois…

Les Full Nodes sont actuellement le moyen le plus privé d’utiliser Bitcoin. Personne ne peut analyser quelles adresses Bitcoin vous appartiennent. De plus, ils ne souffrent pas de nombreuses attaques qui affectent les SPV.

 

SPV (Simplified Payment Verification)

Les SPV (Simplified Payment Verification) également appelé « Lightweight Node », ne téléchargent que les entêtes des blocs, et non toutes les transactions incluses dans chaque bloc. La taille de la Blockchain (sans les transactions) peut être réduite par 1000. Cela vous offre l’avantage de faire tourner un wallet SPV sur un smartphone par exemple.

Les SPV interrogent ensuite les Full Nodes, et ne demandent que les transactions qui les intéressent. Contrairement aux Full Nodes, ils ne sont donc pas autonome, car ils dépendent de ces derniers pour trouver les transactions dont ils ont besoin.

bitcoin spv message

« Schéma tiré du livre Mastering Bitcoin« 

Les SPV ne téléchargent donc que les entêtes de chaque bloc dans lesquelles se trouvent plusieurs informations (merkle root, hash du précédent bloc…). Nous allons voir dans la prochaine section, comment ils valident les transactions, et comment ils trouvent vos UTXO pour calculer votre balance.

 

Validation des transactions

Pour faire un inventaire des UTXO, un Full Node va parcourir tous les blocs de sa Blockchain, alors qu’un SPV va utiliser la profondeur du bloc.

Imaginons que l’on veut vérifier une transaction dans le bloc 300 000. Un Full Node va lier tous les blocs à partir du 300 000 ème jusqu’au genesis bloc (le premier bloc), et créer une base de données de tous les UTXO. La transaction sera validée si l’UTXO est bien non dépensé.

Un SPV ne peut pas savoir si un UTXO reste non dépensé, car il ne détient pas toutes les transactions. Il va établir un lien entre la transaction et le bloc qui la contient, pour vérifier que la transaction se trouve bien dans ce bloc.

« Les entêtes des blocs contiennent ce que l’on appelle le merkle root. Grâce au merkle root, un SPV peut vérifier qu’une transaction se trouve bien dans un bloc sans télécharger le bloc lui-même. »

Puis il attend les 6 prochains blocs (300 001 à 300 006). Le fait que les Full Nodes aient acceptés 6 blocs de plus, prouve que la transaction est valide.

Les SPV sont la solution si vous ne pouvez pas vous permettre de faire tourner un Full Node. Ils ne sont cependant pas à l’abri d’attaques, car ils ne détiennent pas toutes les transactions. Ils ne peuvent donc pas vérifier que toutes les règles Bitcoin sont correctement suivies. Enfin, parce-que leurs demandes sont spécifiques, cela peut poser des problèmes de confidentialité. C’est pourquoi les développeurs ont créés le Bloom Filter.

 

Bloom Filter

Le fonctionnement des SPV peuvent causer problème au niveau de la confidentialité. En analysant les requêtes d’un SPV, on peut deviner quelles sont les transactions qui l’intéresse. Et donc deviner l’adresse du wallet.

Le Bloom Filter permet d’éviter cela.

Au lieu de demander la transaction directement, le SPV défini un filtre des transactions qu’il veut. Il ne recevra donc pas uniquement la transaction qu’il a demandé, mais plusieurs transactions qui correspondent à la demande. Parmi elles, se trouve la transaction qui l’intéresse. Il est donc plus difficile de reconnaître les transactions demandées par le SPV, car elles sont noyées dans d’autres transactions.

Vous pouvez imaginer un touriste dans une ville qui cherche la rue « Moulin ». Au lieu de demander précisément à quelqu’un où se trouve la rue qu’il cherche (et révéler sa destination), il va plutôt demander : connaissez-vous une rue dans le coin finissant par « N » ?

En étant plus ou moins précis dans la demande, il est donc possible de révéler plus ou moins d’informations sur ce que l’on veut. Un Bloom Filter plus spécifique va recevoir des résultats plus précis, mais réduit la confidentialité. Un Bloom Filter moins spécifique obtiendra plus de transactions, mais donnera plus de confidentialité.

 

Schéma récapitulatif :

Full node spv
 

Client Full Node : BitcoinCore

SPV Wallet : Electrum

Liste des wallets Bitcoin : ICI

Transaction Bitcoin : Comprendre les UTXO

Transaction Bitcoin : Comprendre les UTXO

 

En Bitcoin, il n’existe pas de Balance associée à votre compte. Chaque transaction dispose d’Inputs et d’Outputs. Les UTXO (Unspend Tansaction Output) sont des outputs de transactions qui n’ont pas encore été dépensés. Si vous avez reçu 1 Bitcoin, vous avez 1 UTXO d’une valeur de 1 Bitcoin pouvant être réutilisé en input pour une prochaine transaction.

 

Exemple d’une transaction

Prenons l’exemple suivant où Madonna vous envoie 0,5 BTC :

bitcoin transaction UTXO
Cette transaction dispose d’un seul input (en vert) et de 2 outputs (en bleu). Il se trouve que Madonna a reçu 0,8 BTC par le passé, et ne les a pas encore dépensés. Cette UTXO de 0,8 BTC est donc réutilisé en input pour la transaction.

Les UTXO sont indivisibles. Il est donc impossible d’utiliser directement 0,5 BTC en entrée, car la valeur de cette UTXO est de 0,8. Il peut y avoir plusieurs inputs, mais ici un seul suffit car 0,8 est supérieur à 0,5.

Nous avons donc 0,8 BTC en entrée, mais Madonna veut vous envoyer 0,5 BTC (pas 0,8). Le wallet va donc créer 2 outputs :

Vous disposez maintenant d’un UTXO de 0,5 BTC, que vous pourrez réutiliser en input pour une prochaine transaction.

 

A quoi sert le change ?

Prenons un exemple où vous voulez vous payer un café qui coûte 3€ :

Au final, on se retrouve avec :

transaction bitoin euro
Dans notre premier exemple, il y a 0,29 BTC qui revienne vers Madonna. En faisant le calcul, on se rend compte qu’il manque 0,8 – (0,5+0,29) = 0,01 BTC. Cet écart correspond aux frais de transaction.

 

Les frais de transaction

Pourquoi 0,29 BTC pour le change et pas 0,30 ?

La somme des outputs n’est pas égale à la somme de inputs. L’écart qu’il y a entre la somme des inputs et la somme des outputs, correspond aux frais que vous allez payer au miner :

SOMME(inputs) – SOMME(outputs) = frais

Dans notre exemple, la valeur de l’input est de 0,8. La somme en output est de 0,79 (0,5 + 0,29). Les frais de cette transaction s’élèvent donc à 0,8 – 0,79 = 0,01. Cette somme de 0,01 Bitcoin a été reçue par le miner.

Lorsque que vous développez un wallet, il ne faut pas oublier de créer un output de change vers le wallet de la personne qui envoie des Bitcoins. Sinon cette somme (la différence input output) sera payée au miner. Si le change avait été oublié dans notre exemple, Madonna aurait payée 0,3 BTC de frais (0,8 – 0,5).

 

Exemple avec une vraie transaction Bitcoin

Prenons cette transaction sur blockchain.com :

transaction_blockchain_bitcoin
 

Dans cette transaction, 2 inputs proviennent de l’adresse commençant par « 15XF » : 0,09 et 4 BTC. Puis 1 output de 1,9990936 BTC pointe vers l’adresse commençant par « 1M4m ». 1 autre output de 2,09 BTC revient vers l’adresse « 15XF ». Il s’agit du change.

L’adresse « 15XF » a donc envoyée 1,9990936 BTC à « 1M4m ». C’est ce qui est indiqué dans « Estimation des BTC échangées ».

Dans « Total des sorties », il y a la somme des outputs : 4,0890936 BTC (1,9990936 + 2,09). En faisant le calcul « Total des entrées » – « Total des sorties », on obtient les frais : 4,09 – 4,0890936 = 0,0009064 BTC. C’est la somme qui est indiquée dans « Taxes ».

 

Contrairement à Ethereum où une balance est associée à chaque compte, il n’y a que des inputs et outputs en Bitcoin. Votre wallet se charge de retrouver tous les UTXO que vous détenez pour calculer votre balance.

Composant React : Infinity Scroll

Infinity Scroll

 

Ce simple composant React permet de charger des données indéfiniment lorsque l’on scroll la page (commentaires, posts etc).


infinity-scroll-gif

Il suffit simplement de modifier la méthode « get() » du composant ou d’utiliser votre propre méthode. Retouvez toutes les informations dans le Readme du repo Github.

Vous pouvez tester le composant sur cette page.

Crypto monnaies : Éviter les arnaques

Crypto monnaies : Éviter les arnaques

 

Il y a plus de 1500 crypto monnaies à l’heure où j’écris cet article. Et vous pouvez investir dans celles que vous souhaitez. Génial, mais il faut savoir que ce domaine n’est pas encore régulé. Qui dit absence de régulations, dit arnaque. Certaines personnes récolte des fonds (à travers des ICO) et disparaissent ensuite dans la nature avec l’argent récolté.

Avant d’investir dans une crypto monnaie, il y a plusieurs points à vérifier que je vous décris dans cet article. Le dernier point est le plus important, n’investissez pas si tous les points listés vous semble bon, mais que le dernier point ne l’est pas.

 

Lire le White Paper

Un document doit être publié. Il contient toutes les informations à propos du projet, c’est le « White Paper ». Lisez bien ce document pour vous faire votre idée sur le projet.

Quel est le rôle du Token ? Il faut que vous compreniez bien son utilité. Essayez d’avoir une vision future : Une Blockchain est-elle vraiment nécessaire pour ce projet ? Si le projet n’est pas décentralisé, repensez-y 2 fois. Demandez-vous, « si l’entreprise disparaît, le Token sera t-il toujours opérationnel ? ».

De quel manière le Token sera t-il distribué et quand ? S’il n’est pas pour vous, attention. Si plus de 50% des Tokens seront distribués à l’équipe, c’est également suspicieux.

Y a-t-il une Roadmap ? Vérifiez qu’il y ait bien des évolutions à venir, que le plan est bien décrit, et que l’équipe comprend bien les limites du projet. Le projet a-t-il été testé ? si non, quand le sera t-il ?

Le White Paper ne doit pas être vague. Il doit permettre de comprendre clairement les étapes du projet, les cas d’utilisation du Token (ou coin), son fonctionnement, quels problèmes il résout, et la valeur apportée.

 

Soft cap et Hard cap

Dans le cas d’un ICO, un minimum et un maximum doivent être défini pour la capitalisation. Le soft cap est le minimum de fond requis pour lancer le projet. Si le minimum n’est pas atteint, les investisseurs doivent être remboursés. Il doit également y avoir un maximum (hard cap). S’il est atteint, la levé de fond doit stopper immédiatement.

 

Vérifier les membres de l’équipe

Renseignez-vous sur les fondateurs du projet. Cherchez leur nom sur google, visiter leur page LinkedIn. Leurs expériences passées sont-elles cohérentes avec ce qu’ils font ? Les photos ont-elles l’air vrai ?

Y a-t-il des développeurs qui sont connues comme étant compétent ? C’est important, mener un projet Blockchain est difficile, il faut des compétences. Enfin, vérifier que l’entreprise existe bien, y a-t-il une adresse ?

Si les fondateurs du projet sont anonymes, évitez d’investir. 

 

Analyser la communauté

Allez faire un tour sur le forum, y a-t-il des questions et des réponses ? Si oui, c’est qu’il y a une communauté active.  Vous pouvez aller faire un tour sur Bitcoin TalkSteemit, le Telegram officiel (attention aux faux channel la aussi, vérifier bien le nom de leur Telegram sur leur site), Reddit, Discord

Les créateurs du projet répondent t-ils ? Si non, attention. Vérifiez les messages critiques, y a-t-il des alertes SCAM, des gens mécontents ?

 

Vérifier le Github

Le mieux est que le code soit open source. Cela permet à la communauté d’aider les fondateurs du projet, et cela donne de la crédibilité. Allez jeter un code d’œil au code source sur Github (même si vous n’êtes pas développeur). Vous devrez trouver le lien sur leur site officiel.

Regardez tout d’abord le nombre de commits et leur fréquence. Un commit est une modification de code apporté par un développeur. Dans la partie « commit » de Github, vous pouvez donc voir toutes les modifications apportés au projet. S’il y en a beaucoup, c’est que l’équipe travail activement au développement du projet.

Exemple avec le Github Bitcoin :


commits bitcoin

Le nombre de commits s’élèvent à ce jour (12 avril 2018) à presque 17 000. En cliquant sur le nombre de commits, vous pouvez voir tout l’historique :


liste commit bitcoin

Vous avez la liste de toutes les modifications qui ont été apportés. Chaque commit possède une description de ce qui a été fait et à quelle date. Les derniers commits date d’hier (11 avril). Si le projet n’as pas été mise à jour depuis longtemps, cela peut signifier que le projet est abandonné (ou faux…).

Vous pouvez aller plus loin en cliquant sur un commit :


code commit bitcoin

Sur ce type de page, où vous pouvez comparer la différence avant (à gauche) et après (à droite) une modification. Vous pouvez voir les parties du code qui ont été ajoutées (en vert) ou supprimées (en rouge).

La partie « Insight » est également importante. Vous pouvez voir l’activité du Github au cours du temps, les contributeurs etc :


contributeurs bitcoin

Vérifier que l’activité générale soit forte. Vous pouvez également aller voir le Github des contributeurs.

Avant d’investir dans un projet, aller donc faire un tour sur leur Github et vérifiez bien l’activité. Si le Github n’est pas public, est-il prévu qu’il le devienne prochainement ?

 

Rechercher le mot clé « Scam » (très important)

Une méthode consiste à aller sur Youtube, et à rechercher le nom de la crypto monnaie dans laquelle vous voulez investir. Si vous voyez le mot « Scam » dans les suggestions, c’est qu’il y a de fortes chances pour que cette crypto monnaie soit une arnaque. Exemple avec Bitconnect et RegalCoin :


bitconnect scam regalcoin scam

Taper le nom de la crypto-monnaie sans même taper le mot « Scam ». Si ce mot apparaît, cela signifie que les gens pensent que c’est une arnaque, dans ce cas pourquoi investir ? Recherchez ensuite sur google, il est fort probable que vous tombiez sur un article qui explique en quoi c’est une arnaque.

Si l’on essaie avec 2 autres crypto-monnaie plus connues, pas de problème :


dogecoin non scam iota non scam

Cette méthode est à privilégier. Renseignez-vous sur internet en recherchant le nom de votre crypto-monnaie + le mot « Scam ». Si les gens pensent que c’est une arnaque, ne prenez pas le risque d’investir. Si tous les points listés dans cet article sont au vert mais que ce dernier est au rouge, n’investissez pas.

 

Récapitulatif des alertes

  1. Equipe anonyme.
  2. Blockchain inutile.
  3. White Paper trop vague.
  4. Pas d’activité sur Github.
  5. Communauté inactive (pas de questions et réponses) ou communauté mécontente.
  6. Pas de roadmap.
  7. Entreprise non enregistrée, pas d’adresse.
  8. Mot « Scam » associé à la crypto monnaie et articles décrivant une arnaque sur internet.

Quel est le rôle d un wallet ?

Quel est le rôle d’un wallet ?

 

Un wallet sert bien évidement à stocker vos Bitcoins, d’où son nom. Voila j’espère que cet article vous a plu.

Non plus sérieusement,  un wallet ne contient pas vos Bitcoins. Heureusement… imaginez votre ordinateur vous lâche et vous perdez tout ?

Le mot « wallet » est en faite un très mauvais nom. Votre wallet permet de protéger votre clé privée (ou vos clés privées), qui va vous permettre de signer des transactions afin de les envoyer sur le réseau.

Un wallet a pour but de :

 

Calculer / retrouver la balance de votre compte

Comme vos crypto-monnaies ne sont pas stockées dans votre wallet, il va falloir retrouver votre balance dans la Blockchain.

En Bitcoin il n’existe pas de balance en tant que tel. Il n’existe que des transactions. Le wallet a donc pour but de retracer vos transactions pour connaitre votre balance. Avec Ethereum, une balance est associée à votre compte.

L’un des rôle du wallet est donc de retrouver la Balance de votre compte dans la Blockchain.

 

Calculer les frais de transaction

Un wallet va également calculer les frais de transactions. Avec Bitcoin, ces frais sont calculés suivant la taille de la transaction. Avec Ethereum, ils sont calculés suivant sa complexité. Vous pouvez choisir de les diminuer, mais plus vous payez de frais, plus votre transaction sera validée rapidement, car les mineurs cherchent à valider les transactions avec le plus de frais (ils cherchent à maximiser leurs gains). Donc si vous diminuer les frais, votre transaction sera validée moins rapidement (voir jamais si les frais sont trop bas).

Enfin, sachez que plus il y a de transactions en attentes plus les frais sont élevés. Les transactions non confirmées s’accumulent dans le mempool en attendant d’être minées. Vous pouvez consulter la taille du mempool ICI. Vous pouvez également voir les transactions non confirmées en temps réel.

 

Signer les transactions et les envoyer sur le réseau

Lorsque vous voulez envoyer de l’argent à quelqu’un, votre wallet va construire la transaction. Comme il contient votre clé privée, il va s’en servir pour signer cette transaction afin de l’envoyer sur le réseau.

La Blockchain est basée sur la cryptographie asymétrique. En chiffrant votre transaction avec votre clé privée, on ne pourra la déchiffrer qu’avec votre clé publique. Chaque wallet possède une clé privée et une clé publique.

Le wallet chiffre donc votre transaction avec votre clé privée pour obtenir une signature, et votre signature va pouvoir être déchiffrée sur le réseau avec votre clé publique. C’est en déchiffrant cette signature avec votre clé publique, que l’on peut s’assurer que la transaction vient bien de vous. Car il n’y a qu’une seule clé privée associée à votre clé publique.

Voici l’exemple avec un schéma dans lequel je veux envoyer 0.1 Bitcoin à Bob :


wallet signature verification

Dans ce schéma, je veux envoyer 0.1 Bitcoin à Bob. Mon wallet détient ma clé privée et ma clé publique. Ma clé publique est en faite mon adresse Bitcoin, et j’utilise l’adresse Bitcoin de Bob (et donc sa clé publique) pour lui envoyer des Bitcoins (une adresse Bitcoin est en faite un hash de la clé publique, mais je fais abstraction des hashs dans ce schéma).

Premièrement le wallet construit la transaction, et utilise ma clé privée et la transaction pour obtenir une signature. Le wallet envoie ensuite la signature et la transaction au réseau Bitcoin. Le réseau va ensuite utiliser ma clé publique et la transaction pour vérifier la signature.

Pour que la vérification fonctionne, le réseau doit obligatoirement utiliser ma clé publique (puisque la signature à été créée avec ma clé privée). De plus, la transaction ne doit pas avoir été modifiée entre temps. Nous avons utilisé la transaction pour créer la signature, puis le réseau réutilise cette même transaction pour vérifier cette même signature. C’est pourquoi le processus de vérification échouera si la transaction a été modifiée entre temps.

« En réalité, on n’utilise pas la transaction elle-même dans la création de la signature et dans le processus de vérification, mais un hash de celle-ci. Je fais abstraction des hashs dans ce schéma pour plus de simplicité »

Le processus de vérification de la signature permet donc 3 choses :

  1. Authentification : Il est possible d’identifier l’émetteur de la transaction (celui qui détient la clé privée).
  2. Non répudiation : je ne peux pas nier avoir créer la transaction.
  3. Intégrité : La transaction n’a pas été corrompue ou modifiée.

C’est pour cela, qu’il ne faut pas vous faire voler votre clé privée. Sinon quelqu’un peut se faire passer pour vous et donc voler vos crypto-monnaies ! Seul la clé publique est partagée sur le réseau. La clé privée est gardée secrète dans votre wallet.

Blockchain privée VS Blockchain publique

Blockchain privée VS Blockchain publique

 

Une Blockchain publique (permissionless) est accessible pour tout le monde. Il vous suffit de télécharger l’ application client et vous pouvez utiliser le réseau sans que personne ne vous en empêche. Bitcoin est permissionless, il vous suffit de télécharger un wallet comme Electrum pour commencer à utiliser le réseau.

Il y a des désavantages à ces Blockchains publiques. La confidentialité en est une. Tout le monde peut voir les transactions, ce qui peut poser problème pour les entreprises voulant protéger leur données.

La performance est également limitée. En Bitcoin, un bloc est rajouté toutes les 10 minutes et permet d’accepter jusqu’à 7 transactions par secondes. Si votre projet nécessite de grandes quantités de transactions, le réseau Bitcoin risque d’être un peu lent pour vous. Les transactions ont également un coût, et ces frais peuvent être élevés lorsqu’il y a beaucoup de transactions en attentes. Pour Ethereum, un bloc est ajouté toutes les 15 secondes environ, ce qui est déjà mieux, mais on est encore loin de concurrencer VISA ou MASTERCARD et les transactions sont également payantes.

De plus, elles ne sont pas forcément très personnalisable. Vous ne pouvez pas choisir votre mode de consensus par exemple. Ces désavantages peuvent poser problème pour des entreprises. Pour y remédier, on a vu l’apparition de Blockchains privées.

Il y a plusieurs avantages aux Blockchains privées :

Avec une Blockchain privée, vous pouvez adapter une Blockchain suivant vos besoins :

Pour comprendre, voici des exemples de Blockchain privées.

Le but étant de comprendre ce que l’on peut faire avec une Blockchain privée. Je décris donc ci-dessous des caractéristiques de Blockchains privées telles qu’elles sont au moment où j’écris cet article. Mais il faut bien comprendre que ces caractéristiques sont susceptibles d’évoluer avec le temps.

 

Fabric Hyperledger

Fabric est vraiment complet, et permet de créer une Blockchain adaptée à ses besoins.

Pour les groupes de personnes nécessitant des transactions privées, vous pouvez diviser votre Blockchain en plusieurs sous-réseaux et choisir les informations que vous voulez partager entre ces sous-réseaux (Doc).

Il est possible d’y ajouter des Chaincodes (pouvant être considéré comme des Smart Contracts : Doc), et donc rendre votre Blockchain programmable.

Un système de gestion d’identité (Identity management) permet d’identifier ses employés sur le réseau en leur donnant un ID. Vous pouvez par exemple, autoriser un employé à exécuter une application Chaincode, mais ne pas l’autoriser à déployer de nouveaux Chaincodes (Doc).

Fabric Hyperledger vous permet donc de créer une Blockchain très personnalisée, en améliorant la confidentialité (partitionnement en sous-réseaux), le contrôle (ID management) etc.

Je ne vais pas décrire tous ce qu’il est possible de faire avec Fabric (vous ne voulez pas passer votre vie devant cet article par vrai). Vous pouvez retrouver la documentation ICI.

 

Quorum 

Créé par JP Morgan, Quorum est basé sur Ethereum mais avec des fonctionnalités en plus.

Les transactions publiques sont du même type que celles de la Blockchain Ethereum. N’importe qui participant au réseau peut les consulter. Cependant, les transactions utilisent des GAS, mais ces GAS sont gratuits. Les transactions publiques sont donc gratuites également.

Les transactions privées sont envoyées directement entre les destinataires spécifiés et leurs Hash est inclut dans la Blockchain Quorum. Le contenu de ces transactions ne peut être consulté. Cela est rendu possible grâce l’implémentation de ZSL (« Zéro-knowledge Security Layer » utilisé dans Zcash). Les transactions sont effectuées dans ce qu’on appelle un « Z-contract », mais ce contrat ne partage pas les informations de transactions.

Quorum propose le consensus Raft. Un noeud du réseau est désigné comme leader, et va donc se charger de publier les blocs. Ce mode de consensus permet d’avoir un bloc rajouté à la Blockchain en seulement quelques millisecondes.

Comment il fonctionne ? vous pouvez retrouver une explication du consensus Raft ICI.

L’autre consensus est Quorum Chain fonctionnant  avec un système de vote par Smart Contract. JP Morgan parle actuellement d’intégrer un nouveau consensus qui conviendrait mieux aux banques : IBFT  (Istanbul Byzantine Fault Tolerance). Plus de détails sur Quorum et IBFT ICI.

 

Stratis

Basé sur Bitcoin, Stratis utilise le principe des SideChains et vous permet de connecter votre Blockchain privée à leur Blockchain principale.  Ils fournissent leur propre « Stratis Development Framework » vous permettant de développer vos applications Blockchain en C#.


Blockchain Stratis

Vous pouvez donc customiser votre propre Blockchain tout en gardant avantage de l’infrastructure de la Blockchain principale. Vous pouvez vous connecter à la Blockchain Stratis, et accéder à des informations (par exemple médicale, provenance de produits…) pour les consulter, les réutiliser etc. Cela peut également permettre aux entreprises de communiquer entre elles. Vous pouvez retrouver des exemples de cas d’utilisations ICI.

 

Même si les Blockchains privées vont à l’encontre de certains principes d’une Blockchain : réseau décentralisé, données publiques… Elle permettent de résoudre bien des problèmes. Les entreprises ont toujours besoin de confidentialité, certaines infrastructures ou systèmes nécessitent de bonnes performances, et les Blockchains privées permettent de créer un système personnalisable et adapté à ces besoins.

Dois-je utiliser la Blockchain pour mon projet ?

Dois-je utiliser la Blockchain pour mon projet ?

 

Ripple, IOTA, EOS, je pourrais écrire un article complet rien qu’en les citant. La création d’ICO et de Token a explosé en 2017.

Un Token est un actif numérique de l’entreprise. Comme c’est un actif programmable, il peut servir pour de nombreux cas d’usage. La différence entre un Coin et un Token est encore un peu floue. Un Coin est plutôt créé avec une Blockchain (comme le Bitcoin ou l’Ether), alors qu’un Token est créé grâce à l’existence d’une Blockchain. On peut par exemple créer notre Token grâce à des Smart Contracts dans la Blockchain Ethereum. Pour se servir de ces Smart Contracts (et de notre Token), nous aurons ensuite besoin d’Ether (le Coin).

Vous avez un projet et vous voulez utiliser la Blockchain pour créer un Token ? Avant de vous lancer, il est important d’étudier les raisons qui peuvent vous poussez à cela.

« Le but de cet article n’est pas de vous dire si oui ou non vous devez utiliser la Blockchain pour votre projet. Mais plutôt de vous aider à vous poser les bonnes questions avant de vous lancer. »

 

Dans quel cas créer un Coin ou un Token ?

Si vous souhaitez créer une nouvelle plateforme pour Smart Contract, comme EOS par exemple, vous avez besoin de créer une nouvelle Blockchain. Qui dit créer une Blockchain, dit créer un nouveau protocole, un consensus… vous avez donc besoin de créer un Coin plutôt qu’un Token.

Si vous voulez par exemple lever une ICO, créer une fonctionnalité d’achat/vente, un Token est adapté.

 

« Je veux créer une Dapp » (Decentralized Application)

D’accord mais demandez-vous quels seraient les bénéfices de cette décentralisation. Avez-vous un cas d’utilisation précis pour lequel le bénéfice se perçoit ?

Pourquoi ne pas utiliser une simple base de données SQL, ou une application « basique » ? Les Smart Contracts sont difficiles à créer. Il faut trouver une personne ayant les compétences et ne pas se tromper lors du développement. On ne développe pas un Smart Contract comme l’on développe une app mobile ou un site web. Ils peuvent contenir des milliers, voir des millions d’euros, et on ne peut pas mettre à jour un Smart Contract facilement. Lorsque vous avez déployé votre Smart Contract dans la Blockchain, celui-ci fonctionne tout seul. Il est donc important de bien penser votre Smart Contract avant de le créer.

 

Je veux améliorer la fidélité du consommateur

Certains consommateurs ne dépensent pas leurs points de fidélité, car ils ne savent pas dans quoi les dépenser. Ou alors il est difficile de les dépenser en totalité. Remplacer les points de fidélité par des Tokens pourrait permettre de rendre échangeables ces points de fidélité entre consommateurs, ou même de les rendre échangeables contre de la monnaie.

 

Je veux améliorer la valeur de mes consommateurs

Qu’est-ce qui rend votre Token utile ? Pourquoi vos clients voudront t-il s’en procurer ?

Ripple veut utiliser son Token pour faciliter les paiements dans le monde. Plus rapide, moins chers etc…

Avez-vous besoin d’une Blockchain pour apporter votre valeur à vous ? Ou une simple application ou site web suffit-il ?

Plus votre Blockchain a d’utilisateurs, plus le réseau est sécurisé. Quel plan avez-vous prévu pour avoir assez d’utilisateurs au lancement du projet ?

 

Quel type de plateforme vais-je utiliser, une Blockchain publique ou une Blockchain privée ?

Une Blockchain publique vous permet d’accéder au réseau sans autorisation. Comme Bitcoin ou Ethereum. Il vous suffit de télécharger l’application et vous pouvez utiliser le réseau sans que personne ne vous en empêche.

Vous avez un site E-commerce et vous voulez utiliser la Blockchain pour faire payer vos clients ? Est-ce vraiment nécessaire de créer une Dapp ou un Token ? Pourquoi ne pas justement utiliser un réseau public déjà existant comme Bitcoin ?

Une Blockchain privée est une Blockchain où il vous faut une autorisation pour accéder au réseau.

« Mais pourquoi faire ça ! une Blockchain est faite pour être accessible à tous ! »

Il y a plusieurs avantages à utiliser une Blockchain privée :

Quand votre projet nécessite de grandes performances, il est préférable d’utiliser une Blockchain privée.

Si votre Blockchain sera utilisée par vos employés et que vous avez besoin de les identifier, Hyperledger Fabric peut-être une bonne solution.

Lorsque vous avez besoin de confidentialité pour vos données, vous pouvez utiliser Quorum.

 

On ne lance pas un projet Blockchain parce-que c’est à la mode. Ce genre de projet est très coûteux. Finalement, avez-vous besoin de la Blockchain pour votre projet ? Ou pouvez-vous le mener à bien sans ?

Un blog dans la Blockchain

Un blog dans la Blockchain

 

Objectif du projet :

  1. Apprendre les bases de Solidity en créant un Smart Contract
  2. Déployer un Smart Contract dans une Blockchain locale
  3. Interagir avec un Smart Contract grâce à Web3

 

Le Smart Contract est un CRUD permettant de gérer ses articles. Une interface graphique servant de partie admin permet de lire, ajouter, modifier et supprimer un article.

Il serait ensuite possible d’ajouter un back et un front permettant à n’importe qui de lire ces articles.

Le problème reste encore le coût important (en gas) des actions pour les articles de grandes tailles. Un bon moyen serait de compresser les articles avant de les stocker.

Le code source est disponible ICI.