AttiCoin, une blockchain au service de la cohésion

Et oui, vous avez vu le mot blockchain et vous allez certainement crier au scandale du buzzword pour vous faire cliquer sur l'article. Et vous auriez raison !

En effet, chez Attineos nous avons développé notre propre cryptomonnaie basée sur la technologie de la blockchain, comme s'il y en avait déjà pas suffisamment sur le marché ! Mais pourquoi faire alors ? Je vais vous expliquer tout cela.

Atticoin

Une cryptomonnaie, mais pourquoi faire ?

Chez Attineos, nous avons la chance d'avoir un Atti'Lab, c'est un incubateur à idées dans lequel les collaborateurs peuvent proposer des projets ou des technologies qu'ils souhaitent étudier, et où Attineos investit des moyens techniques et humains. Une des composantes principales du Lab est évidemment l'enrichissement technique. Et c'est exactement pour cela que j'ai proposé l'idée de développer une monnaie virtuelle.

Vous avez certainement déjà entendu parlé du BitCoin ? Ou de l'Ethereum ? Le BitCoin a été présenté pour la première fois en 2008. Oui, cela remonte déjà un peu ! Depuis quelques années maintenant, ces monnaies ont connu un essor grandissant auprès du grand public. Il y a d'ailleurs eu un très fort envol des spéculations durant l'année 2017, où le BitCoin pouvait alors s'échanger à plus de 16000€ contre 1 BitCoin.

Taux d'échange du Bitcoin

Vous me direz que je n'ai toujours pas répondu à la question :

mais pourquoi faire ?

Pas de panique, ça arrive !

Certaines blockchains très connues sont open source, il est donc tout à fait possible pour n'importe qui de "fork" le projet et de créer son coin privé mais comme je vous le disais, le but est de monter en compétence sur une technologie particulière. Si on s'était basé sur une blockchain déjà existante, nous aurions très peu appris sur le comportement et sur les détails techniques. Autre point, toutes ces monnaies sont publiques et donc n'importe qui dans le monde peut connaître le contenu d'un portefeuille (sous réserve de connaître la clé publique, mais j'y reviendrais plus tard) et suivre les transactions qui passent sur la monnaie.

Voilà pour la raison technique. Suite à cela durant les différents ateliers de spécification du besoin, nous voulions également proposer, dans le cadre du Lab, une monnaie mise à la disposition des collaborateurs afin de créer une dynamique d'échange et de cohésion au sein des équipes. Nous aurions très bien pu proposer un système de monnaie persistée en base de données avec un compteur d'AttiCoin par personne (pour faire simple), mais le fait de la baser sur la technologie que nous étions en train de mettre en place était une évidence pour mener à bien le challenge technique !

Et voilà, c'est comme cela que la monnaie AttiCoin est née :)

Comment avons-nous fait ?

Si vous êtes encore là, c'est que vous avez envie de savoir comment on a mis en place cette blockchain, ça me fait plaisir :D !

Nous avons dû choisir un langage dans lequel nous allions implémenter notre blockchain, nous avions quelques idées :

  • Kotlin
  • Python
  • Go
  • Java

Notre choix s'est tourné vers le Java. Le but ici n'était pas d'apprendre un nouveau langage, mais bien une nouvelle technologie. Nous avons donc opté pour un langage dans lequel nous avions déjà une certaine compétence. Ainsi, l'environnement technique complet est basé sur Maven pour gérer les dépendances et SpringBoot qui permet d'encapsuler le serveur web afin de mettre en place une API REST à disposition.

Durant le développement du projet, nous avons donc dû mettre en place une blockchain ou "une liste chaînée de blocs" :

Blockchain

Ce qu'il faut comprendre dans ce schéma :

  • Un bloc est composé de "data", dans notre cas une liste de transactions,
  • Une fois que l'on obtient un bloc complet, nous calculons son hash, ce qui va correspondre à un identifiant unique pour ce bloc (en bleu dans l'exemple),
  • On crée ensuite un nouveau bloc contenant l'information du hash du bloc précédent,
  • Et ainsi de suite...

L'effet voulu par ce mécanisme est de sécuriser le contenu des blocs. En effet, si une personne malveillante arrive à modifier le contenu d'un bloc au milieu de la blockchain, le hash de ce bloc ne correspondrait plus à son contenu, et la chaîne serait ainsi rompue ! Une blockchain est, par définition, immuable et seul le dernier bloc dont le hash n'est pas encore déterminé peut être soumit à des attaques.

Si vous souhaitez plus de détails techniques sur ce type de vulnérabilité : Attaque des 51%

La décentralisation

Un dernier détail technique, tout aussi important que la suite de blocs chaînés, est la notion de décentralisation.

Un principe important d'une monnaie virtuelle est la décentralisation, c’est-à-dire qu'il n'y a pas un seul serveur maître qui centralise toute l'information, mais que l'information est répartie sur l'ensemble des utilisateurs de la blockchain, de manière répliquée. Cela implique une couche de complexité pour mettre à jour la blockchain chez tout le monde en même temps, mais est idéal d'un point de vue sécurité et éthique.

Principe de décentralisation

L'application Java que nous avons développée a été conçue ainsi. N'importe qui peut la lancer sur sa machine et ainsi récupérer une réplication de la blockchain (contenant tout l'historique des transactions depuis sa création). De cette manière, vous participez au réseau de validation des noeuds, et cela accroît la sécurité de la monnaie.

Nous avons développé la décentralisation de l'AttiCoin sur la technologie peer-to-peer:

Peer2Peer

Le peer-to-peer (souvent abrégé « P2P ») est un modèle d'échange où chaque entité du réseau est à la fois client et serveur, contrairement au modèle client-serveur. Quand un noeud reçoit une transaction, il partage l'information à tous les autres noeuds en même temps afin de propager l'information.

Pour éviter qu'un noeud malveillant essaye de se connecter au réseau et d'insérer des transactions malicieuses afin de par exemple voler des AttiCoin, nous avons développé un algorithme de consensus de validation spécifique axé sur l'élection d'un leader, ce dernier choisi le noeud qui pourra créer le bloc ensuite tout le réseau accepte le bloc uniquement si il est valide. Notre algorithme est basé sur le consensus Delegated Proof of Stake (DPoS). Il a l'avantage de ne pas nécessiter de "minage" de la part du réseau pour valider un bloc. Nous voulions ainsi éviter les désavantages du minage : faire travailler le réseau sur des calculs très complexes et donc très couteux en énergies.

Plus de détails sur le DPoS ici.

Pour conclure

Aujourd'hui le projet est disponible auprès des collaborateurs. Ils ont accès à un portefeuille d'Atticoin qu'ils peuvent s'échanger comme ils le veulent ! (match perdu au baby-foot, cashprize d'un tournoi de ping-pong ou encore un pari sur la victoire de l'OM face au PSG sur du football... ).

Attineos propose de donner des AttiCoin aux collaborateurs faisant preuves d'initiatives pour l'entreprise, comme l'animation d'une conférence technique ou encore la participation à des projets internes. Dans un second temps un Store est mis à disposition des collaborateurs dans lequel ils peuvent échanger des AttiCoin contre l'accès à des conférences ou des surprises ! Durant le développement, nous avons énormément appris sur le fonctionnement interne d'une cryptomonnaie basée sur la technologie blockchain. Nous allons prochainement proposer une conférence technique afin de présenter les détails d'implémentations auprès des collaborateurs.

Le projet peut encore évoluer, grâce à l'API REST mise à disposition par les noeuds, on peut imaginer développer un bot Slack pour faire des transactions, ou encore une application mobile pour visualiser son portefeuille !

Maxime Cordonnier

Maxime Cordonnier