Hello le magicien du code est de retour. Yesseuh ! i’m here. Je vais vous parler aujourd’hui d’une technologie que j’ai découvert il y’a quelques mois. Merci à @mbeuryonline pour le partage 🙂 . D’habitude quand je découvre une nouvelle techno j’en parle en premier à mon master @Khadim210 et à quelques passionnés que je connais. Mais après discussions j’ai trouvé qu’elle était méconnue de tous c’est ainsi que je me suis mis au four pour ainsi l’appréhender très tôt.
Avec l’essor des réseaux sociaux, le développement des Objets connectés et l’émergence du Nosql on s’était tous mis d’accord que le big data était un potentiel dans l’avenir de l’informatique. Après réflexion les informaticiens ont pensé encore mieux, au lieu de stocker les données simplement, maintenant on va les étudier et les comprendre. Ahh le Machine Learning a alors fait ses preuves. J’y ai cru vraiment au Machine learning mais actuellement on va se tourner vers la Blockchain.
La blockchain est née avec la crypto-monnaie Bitcoin. Il est alors important de comprendre c’est quoi le Bitcoin puisque toutes les implémentations de blockchain utilise sa philosophie. Alors c’est quoi le Bitcoin ? Le Bitcoin est un réseau Peer to Peer qui permet d’envoyer de l’argent sans passer par aucune entité centrale telle qu’une banque.
Euh certains me diront que c’est easy sans passer par une banque on peut voler de l’argent ou faire du trafic. Lol non !!! Le Bitcoin utilise des techniques de cryptographies bien connues et des structures de données un peu complexes pour assurer la sécurité. Ce sont ces moyens qui le rendent invulnérable.
Notions Cryptographiques
- Fonction de Hachage ou « Hash »
Pour faire simple on va procéder par exemple. On dispose d’un mot quelconque par exemple « passerpasser ». On applique à cet mot une fonction mathématique de Hachage et on trouve «5G+C3VIdmGmvnf6A/kh5FX+2Ul8Spao83fQ/IMQHoiz8kf/VBI38BS66QOPtjrBCgfddVpJoxa2pDnUsYEV6xA== ». J’ai utilisé la fonction de hachage SHA512 intégrée dans le système de sécurité de Symfony 2 (i love this Framework Yeah !!!).
Donc pour résumer la fonction de hachage prend une entrée quelconque de chaîne de caractère et retourne à la fin un résultat unique et irréversible.
- La signature Électronique
Qui n’a jamais voulu signer un papier électroniquement sans l’imprimer ? La signature électronique a pour but de prouver que vous êtes bien l’émetteur du message. Bon ici on ne dispose pas de stylo pour signer mais plutôt de clés.
L’émetteur d’un message possède 2 clés : une clé publique et une clé privée. La clé privée est utilisée pour faire signer le message donc en aucun cas vous ne devez la divulguer. La signature électronique sera en fait un Hash généré après avoir fait passé le message et la clé privée à une fonction de Hachage. Le récepteur peut vérifier l’identité de l’émetteur en appliquant une autre fonction de Hachage prenant en paramètre la signature, le message et la clé publique de l’émetteur. Il est à signaler que sniffer la signature sur le réseau ne vous permettra pas de retrouver la clé privé de l’émetteur.
Notion de structures de données (Il fallait être présent à vos cours d’Algorithmique ahhhh)
- La chaîne de blocs (block chain)
Vous vous souvenez de vos cours en langage C sur les listes chaînées ?? Voilà c’est à peu près la même chose. On dispose d’une structure en forme de blocs relié les uns aux autres. Contrairement aux listes chaînées où on stockait l’adresse du pointeur suivant ici chaque bloc contient le Hash du bloc précédent. Chaque bloc dispose d’un hash qui est déterminé en fonction des données stockées. L’avantage avec ce modèle est que toute modification du Hash d’un bloc entraîne la modification du Hash précédent.
- Arbre de Merkle
Bon je ne suis pas votre prof d’algorithmique allez en cours ou bien suivez ce lien après on fera des calculs de complexité.
C’est quoi la blockchain ?
La blockchain c’est avant tout une promesse. Une promesse de se faire confiance mutuellement sans se connaître et sans intermédiaire. Pour se faire la blockchain enregistre dans un grand registre accessible à tout le monde l’historique des transactions. Vous voulez vendre un acte de maison ou échanger de la monnaie (Bitcoin) tout est ajouté à la blockchain. Ce registre est un système informatique sous forme de blocs qui regroupe toutes la transaction.
Avant de valider une transaction des machines ou personnes appelées Mineurs vérifient que vous possédez vraiment ce que vous dite avant de valider la transaction. Pour ma part je dirais que la blockchain est une base de données distribuées qui est ACD. Vous vous souvenez de votre cours en base de données (Merci à mon master @khadim210).
A l’image d’une base qu’on qualifierait d’ACID ici moi je dirais que la blockchain est ACD.
A = Atomicité: qui correspond à l’indivisibilité des opérations de la transaction. Soit le tout est validé ou le tout est rejeté.
C = Cohérence: Une transaction doit laisser la blockchain cohérente avant comme après la transaction. Cette cohérence est assurée par les Mineurs qui assurent la validité des transactions.
D= La durabilité: Les résultats valides d’une transaction sont mis dans un bloc puis horodaté et ajouté à la blockchain. On y inscrit aussi le Hash du bloc précédent pour garder sa cohérence et elle distribuée à tout le monde.
Cette distribution rend la base de données infalsifiable puisque chaque utilisateur possède une copie de la base en local. Pour la modifier il faut alors altérer en même temps pour tous les utilisateurs connectés.
J’ai préféré enlever le I de ACID ici puisque dans la littérature sur les bases de données transactionnelles on suppose que les résultats intermédiaire d’une transaction sont invisibles aux autres transactions en cours alors que dans la blockchain ce n’est pas le cas. Ici tout est visible par tout le monde.
C’est quoi un mineur ?
Un mineur c’est vous, moi ou toute personne connectée sur la blockchain qui utilise des formules mathématiques pour vérifier si une transaction est valide. Pourquoi connecter sa machine pour vérifier pour les autres ? Les mineurs sont payés après chaque transaction valide. Certains mineurs peuvent se faire presque vers 1200 euros par mois. Il faut avoir de la puissance de calcul et une bonne connexion pour faire ces vérifications. Les techniques utilisées par les mineurs dépendent de la blockchain. Dans la blockchain du Bitcoin cette technique est appelée le “Proof-of-Work”, preuve de travail, et constitue en la résolution de problèmes algorithmiques.
Comment ça marche ?
Je précise que les Machine A et B communiquent en utilisant leurs clés publiques. Et tant que personne ne divulgue sa clé privée il est impossible de connaître son identité.
Implémentation (Le cas de Ethereum)
Je sais que vous voulez du code mais on ne codera pas today :p. Je vais vous parlez enfin de Ethereum. En une phrase, Ethereum est un ordinateur mondial, que n’importe qui peut programmer et utiliser comme il le souhaite. Cet ordinateur est toujours allumé, il est très sécurisé, et tout ce qui est fait à l’aide de cet ordinateur est public. Ethereum vous permet d’écrire des dApp (Application décentralisée). Pour interagir avec la blockchain on crée de petits programmes appelés « smart contract ». Si vous êtes un amoureux de JavaScript et du langage C vous ne serez pas dépaysé. Je reviendrais dans un autre article sur l’implémentation des « smart contrat ». Les « smart contrats » sont des programmes intelligents qui une fois les conditions d’exécution de ces engagements sont réunies, ceux-ci s’exécutent automatiquement sur la blockchain, en prenant en compte l’ensemble des conditions et des limitations qui avaient été programmés dans le contrat à l’origine.
Le potentiel de la blockchain
Aujourd’hui personnellement je crois que l’avenir sera tourné vers la blockchain. Il n’existe pas encore trop d’experts et il est opportun pour nous jeune passionné et africain de saisir cette chance et apporter un plus à cette technologie. La blockchain dispose d’un champ d’exploitation assez large: banques, assurance, immobilier, santé, énergie, transports, vote en ligne, etc.
De façon générale, des blockchains pourraient remplacer la plupart des « tiers de confiance » centralisés (métiers de banques, notaires, cadastre,…) par des systèmes informatiques distribués. Actuellement nous pouvons appliquer la blockchain dans le E-Gouvernance surtout en Afrique car il n’est pas toujours évident de faire confiance à nos dirigeant. On pourrait ainsi les remplacer par des applications ultra smart.
Bonne Lecture c’était Thierno Thiam aka Localhost à l’antenne depuis les ténèbres des codes sources !!!!