X
Blockchain et développement
Thierry Thaureaux / vendredi 13 septembre 2019 / Thèmes: Dossier, Blockchain, Dev

Blockchain et développement

Projets open source et langages

Après l’engouement rencontré par les projets de développements de Blockchain en 2017, notamment sur Ethereum, où en est la technologie aujourd’hui ? Quels projets ont débouché sur des applications réelles et avec quels langages ? C’est ce que nous allons voir dans cet article.

Principe de la blockchain

La blockchain est née en 2009, en même temps que son initiatrice, la cryptomonnaie Bitcoin. Le but recherché par l’(les) auteur(s) du bitcoin était de combler les lacunes des précédentes crypto-monnaies en termes, notamment, de sécurité et de réussir à mettre en place une monnaie internationale totalement décentralisée et ne dépendant d’aucun État ni d’aucune banque.

La décentralisation nécessite forcément l’entente entre les parties intervenantes. Le problème majeur qui se présente lorsque l’on veut gérer globalement un registre de données dans un système sans autorité centrale, c’est comment mettre d’accord les différents acteurs ? Le principe d’un système réparti, c’est que chaque partie possède les données et doit se mettre d’accord avec les autres quant à leurs modifications. Comment être sûr, dès lors, qu’une des parties ne va pas essayer de tricher en modifiant ses données ? Qu’est-ce qui légitimise l’ajout de données dans le registre et leur validité ?

L’annonce d’Amazon avait déjà été faite à re:Invent l’année dernière, mais le lancement officiel d’Amazon Managed Blockchain sur Hyperledger Fabric ne s’est confirmé que récemment (https://aws.amazon.com/fr/managed-blockchain/).

C’est là qu’intervient le principe de la blockchain. La chaîne de blocs est une succession de blocs horodatés de données cryptées devant être validés par consensus par les nœuds du réseau distribué. La preuve de validité d’un bloc est appelée, sur la plupart des platesformes, proof-of-work (preuve de travail). La vérification de cette preuve consomme énormément de ressources. C’est pourquoi le « mineur » se voit verser en contrepartie un certain montant de crypto-monnaie fraîchement créée à chaque bloc ajouté à la blockchain.

 

La complexité des algorithmes de cryptage employés ainsi que le chaînage des blocs les uns à la suite des autres font qu’il est difficile, pour ne pas dire impossible, de falsifier ou de supprimer les données de la blockchain. La modification d’une donnée d’un bloc entraîne la revalidation de l’ensemble des blocs qui le suivent, avant qu’un autre nœud ne puisse ajouter un nouveau bloc à la chaîne. Les nœuds ayant pour rôle de chercher la preuve de validité sont appelés les mineurs et l’opération en soi s’appelle le minage. Les données enregistrées dans les blocs peuvent être de différente nature, en fonction de la blockchain employée. Elles sont toutes stockées dans des transactions distinctes. Une transaction est un échange qui fait intervenir plusieurs parties en collaboration. Dans la première version des blockchains, le bitcoin notamment, les données sont exclusivement des transactions financières entre plusieurs comptes, mais il est pourtant également possible d’inscrire d’autres données en annexe – comme avec le namecoin, par exemple.

La seconde génération de blockchain, née fin 2013 avec l’apparition d’Ethereum, permet de stocker dans la blockchain du code exécutable grâce à une machine virtuelle (l’EVM ou Ethereum Virtual Machine) présente dans chaque nœud. Ce code exécutable est appelé contrat (ou contract dans la langue de Johnatan Swift) et ouvre la porte à de nombreuses possibilités.

Go de Google, le langage idéal pour les équipes de développeurs en perpétuelle recomposition et pour les novices.

L’âge de raison

En 2017, la maturité de la blockchain était suffisante pour être utilisée dans des domaines tels que la gestion des contrats et des transactions et de grands registres pour garantir la propriété, l’identité ou les interactions entre des acteurs économiques. Les investissements dans ce domaine avaient alors augmenté, finançant en tout premier lieu les fournisseurs techniques concevant et/ ou gérant les outils et les platesformes nécessaires à cette révolution. Les plus célèbres d’entre eux sont Ethereum et Hyperledger, une autre plateforme de développement de blockchain open source créée par la fondation Linux et supportée par IBM. Rien de moins. La technologie du Bitcoin a, comme l’avait prévu par son auteur et l’algorithme qui le constitue, fini par montrer ses limites en passant à l’échelle, notamment dans le nombre de transactions par seconde et dans la quantité d’énergie demandée.

Des alternatives ont été conçues en vue de créer des crypto-monnaies plus performantes et moins énergivores, mais aussi moins sécurisées, fort malheureusement. La crise de 2018 du Bitcoin a vu la monnaie s’effondrer de 20 000 $ à seulement 3 500 $. Cela a refroidi plus d’un boursicoteur et a, malheureusement et injustement, touché par ricochet l’image de la technologie blockchain. Cette étape était pourtant presque inévitable, l’importance de la cryptomonnaie ne pouvant qu’attirer à un moment ou un autre les traders si aptes à remettre en cause tout bien côté en Bourse.

Les usines de « minage » chinoises qui s’étaient largement développées dans les centrales de production d’énergie lorsque la création de Bitcoin était rentable rapportée au coût de l’électricité (avec une large exonération de l’État chinois pour les favoriser, ne l’oublions pas) voient leur nombre décliner régulièrement. Normal et prévisible, là aussi : plus il y a de bitcoins, plus le minage est complexe, énergivore et, de fait, coûteux. Et si en plus le cours de la monnaie s’écroule, l’exercice n’est plus aussi rentable. Mais même avec « seulement » 45 millions de dollars au 1er trimestre 2019 contre près de 500 millions au 2e trimestre 2018, l’investissement reste important. Cela montre clairement que la blockchain reste encore stratégique dans certains domaines. Après l’euphorie et le boursicotage, le temps de la raison et des réelles applications est peut-être en train d’arriver.

NEO est un projet open source qui utilise la technologie blockchain et l’identification digitale pour créer des « smart assets ».

La fin de la folie

La Blockchain Week de Paris et le sommet PBWS (Paris Blockain Week Summit) en avril dernier ont réuni des acteurs du monde entier qui ont présenté leurs dernières réalisations dans ce domaine. Ce sommet a rappelé le scandale Cambridge Analytica de Facebook et le besoin de l’émergence d’un système de confiance dans lequel les consommateurs peuvent maîtriser et échanger leurs données sans risquer de les voir pillées par qui que ce soit. La blockchain semble bien adaptée au stockage et à la transmission d’informations de manière transparente, sécurisée et autonome, sans organe de contrôle centralisé. En revanche, aucune annonce de nouvelle application opérationnelle exploitant les smart contracts dans d’autres industries que celles déjà connues n’a été faite. Cela montre d’un autre côté la baisse de l’engouement pour la technologie. La folie blockchain aurait-elle fait long feu ? La raison est aussi passée par là. La technologie blockchain étant beaucoup moins performante qu’une base de données, il ne faut pas la mettre en œuvre pour rien. Le bénéfice recherché est généralement la transparence et la sécurité qui en découlent. Cela a un coût qui doit être évalué afin d’en étudier la rentabilité. Aussi, pour qu’une blockchain fonctionne, il faut des standards partagés par tout un écosystème. Enfin, une blockchain ne peut garantir que ce qui est collecté de façon automatique et sans risque d’erreur. Elle ne garantit pas que des données collectées manuellement soient fiables, mais empêche normalement toute modification sans contrôle de ces données une fois qu’elles ont été rentrées dans le système. Les trois freins que sont les limitations de la technologie, la difficulté à rassembler des écosystèmes et la (non) digitalisation des actifs empêchent la pleine adoption de la blockchain ainsi que le développement de nouveaux modèles créateurs de valeur. Quand bien même la création de la valeur à court terme semble fortement compromise, il reste possible de travailler sur ce qui existe, sans chercher la disruption totale « à la bitcoin ». C’est sans doute le chemin à prendre pour la blockchain, loin du buzz des grandes annonces tonitruantes.

Lisk permet de développer facilement et rapidement des applications décentralisées (DApps) en JavaScript.

Il est par exemple possible de réduire les coûts en supprimant des intermédiaires trop gourmands et pas toujours dignes de confiance et en les remplaçant par de la simple transparence. C’est d’ailleurs le but initial du bitcoin par rapport aux pratiques douteuses des banques et même des États. Les paiements internationaux, la santé et le secteur public pourraient également en bénéficier. Le reversement direct des cotisations de sécurité sociale, par exemple, des payes des particuliers sur le compte de l’organisme supprimerait bien des aléas, notamment le « vol » de ces cotisations par l’État lui-même. 

BaaS

AWS et Azure ont quant à eux décidé de ne plus laisser IBM faire la course seul en tête. Ces deux entités viennent de sortir des offres de BaaS (Blockchain as a service). Ce sont des services managés incluant l’infrastructure à la demande et pouvant être partagés avec les membres d’un consortium. SAP, éditeur très concerné par les registres de l’entreprise, avait aussi fait une annonce dans ce sens l’an dernier. AMB devrait aussi débarquer prochainement sur Ethereum. Microsoft, de son côté, complète son offre de services autour de la blockchain avec Azure Blockchain Service et un premier consortium autour de JPMorgan fédérant 75 banques, ce en vue de traiter des paiements internationaux. Les grandes entreprises et la finance semblent donc croire encore à l’aventure.

Les langages de la Blockchain

Voyons maintenant quels sont, à l’heure où nous écrivons ces lignes, les langages de programmation les plus couramment utilisés, en matière de développement, dans l’univers de la blockchain.

Solidity

Solidity est un langage de programmation orienté objet permettant d’écrire des contrats intelligents (smart contracts) pour différentes plates-formes basées sur le principe de la blockchain, dont notamment Ethereum. Solidity est l’un des quatre langages conçus pour cibler la machine virtuelle Ethereum (EVM pour Ethereum Virtual Machine), les trois autres étant Serpent, LLL et, anciennement, Mutan. Ces langages ont pour but commun l’écriture de smart contracts sur, principalement – mais pas seulement – la blockchain Ethereum. Solidity est actuellement le langage principal sur Ethereum ainsi que sur d’autres blockchains privées en concurrence avec Ethereum, telle que Monax. Solidity est un langage de programmation similaire au JavaScript avec un typage statique conçu pour développer des contrats intelligents fonctionnant sur l’EVM. Il est compilé en bytecode exécutable sur l’EVM. Solidity a été conçu autour de la syntaxe ECMAScript – proche donc du Javascript – pour le rendre rapidement familier aux développeurs web. Contrairement à ECMAScript, il possède un typage statique et des types de retour « variadiques ».

Les DApps

Si l’usage initial de la blockchain était la création de crypto-monnaie, « Satoshi Nakamoto » avait également prévu un champ d’applications plus large. L’émergence de l’Ethereum a bouleversé la perception de la blockchain. Ethereum est une blockchain simplifiée destinée principalement au développement d’applications décentralisées ou DApps (Decentralized Applications). La plupart des autres blockchains sont faites seulement pour « miner » (fabriquer de la crypto-monnaie) avec des notions de jetons plus évoluées, comme le célèbre bitcoin. Développer des applications décentralisées DApps revient en fait à développer des smart contracts. Dans l’écosystème de développement de Dapps, Solidity est actuellement le langage de programmation le plus utilisé.

Ethereum

Ethereum s’est envolée à la deuxième place du marché des crypto-monnaies grâce aux possibilités d’applications décentralisées offertes par ses smart contracts. L’idée à l’origine d’Ethereum a été avancée en 2013 par Vitalik Buterin, un informaticien russo-canadien de 19 ans. La plate-forme a été lancée le 30 juillet 2015. Elle connaît un boom de popularité depuis mars 2017 et est devenue à ce jour la deuxième plus grosse crypto-monnaie en circulation. De la même manière que le Bitcoin permet de se passer d’intermédiaires financiers en connectant les demandeurs et bénéficiaires entres eux, Ethereum permet de se passer de l’ensemble des intermédiaires dont le travail peut être automatisé par du code fonctionnel. Il est de fait possible d’imaginer les prochains acteurs de mise en relation du style d’Airbnb BlaBlaCar, Doctolib ou Uber sur la blockchain, d’automatiser les remboursements de santé, la déclaration et le paiement des impôts, de stocker les données médicales des patients et de nombreuses autres opérations en supprimant presque toute possibilité de fraude.


Les contrats intelligents

La force du code interne d’Ethereum, par rapport à celui du bitcoin, est qu’il est « turing-complet ». Cela veut dire qu’il est capable de tout calculer. Ce code permet d’installer dans chaque nœud du réseau Ethereum une EVM dédiée à faire tourner de façon décentralisée les contrats intelligents de la plate-forme. Un smart contract est un contrat financier prévu pour s’enclencher automatiquement quand certaines conditions sont remplies, et ce sans autorité tierce. Ethereum permet d’effectuer un saut conceptuel entre application traditionnelle et application décentralisée. Tout comme les crypto-monnaies sont des banques dirigées par du logiciel, les contrats intelligents permettent ainsi de bâtir toutes sortes d’entreprises financières et technologiques.  

Ether ou exécution de smart contract

Contrairement aux autres blockchains où il n’existe qu’un seul type d’adresse, l’Ethereum en propose deux. Il n’y a aucune différence notable concernant la structure des adresses, mais celle-ci peut correspondre soit à un compte créé par un user Ethereum, soit à un smart contract qui va pouvoir recevoir des messages. S’il s’agit d’un smart contract, des transactions visant à lancer son exécution seront envoyées. Sinon, si c’est un compte classique, c’est de l’Ether qui sera envoyé à la place.

Java

La blockchain core NEM, cousine d’Ethereum mais avec des fonctionnalités réduites, permet seulement de gérer des assets. Elle utilise le langage Java et il devrait aussi être bientôt possible d’employer le langage C++.

C#

Parmi les principaux projets de blockchain écrits en C#, il faut citer Stratis et NEO. Stratis (https://stratisplatform.com/) est un fournisseur de BaaS (Blockchain-as-a-Service) soutenu par Microsoft et offrant aux entreprises la possibilité de construire leurs propres systèmes de blockchain privées. NEO (https://neo.org/) a été écrit en C# mais supporte d’autres langages tels  Javascript, Java, Python et Go.

Javascript

L e SDK ( Side Chain Development Kit) de Lisk (https://lisk.io/) a été écrit en JavaScript et c’est grâce à ce langage que les développeurs peuvent créer des applications pour cette blockchain.

SQL

Aergo (https://www.aergo.io/) est une solution de blockchain pour l’entreprise développée par Blocko sous sa technologie propriétaire Coinstack. Elle offre les fonctionnalités d’une plate-forme de smart contracts basée sur le langage SQL. La blockchain Aergo permet aux entreprises de créer et d’exécuter des smart contracts avancés dans des environnements surtout commerciaux et d’affaires.

C++

C++ est le langage de programmation préféré d’EOS (https://eos. io/), ce sans doute pour sa souplesse et sa puissance légendaires. La blockchain EOS supporte aussi tout langage pouvant être compilé en WASM (WebAssembly). Rappelons au passage que le cœur de la blockchain Bitcoin est codé en C++.

Go ou Golang

La plus grande partie du code de blockchain des smart contracts utilisant HyperLedger Fabrics est écrit en Golang. Un SDK Java permet également de développer des applications pour cette blockchain. Pour concevoir le langage Go, rappelons que Google avait fait appel à plusieurs vétérans de la programmation : Ken Thompson, co-auteur d’Unix et créateur du langage B auquel a succédé le C, Rob Pike, le créateur du système Plan 9 pour Bell et Robert Griesemer qui a contribué au compilateur JavaScript V8 de Chrome et au projet GCC, le compilateur C GNU. Créé en 2007, Go est utilisé en production chez Google depuis mai 2010. Outre le fait qu’il peut remplacer le C++ très efficacement dans certains cas de figures (pas tous, loin s’en faut), il tend aussi à être utilisé à la place des Python et Ruby car sa vitesse de compilation convient au scripting, tout en produisant des binaires. Il peut être employé à la place de presque tous les langages de conception de programmes en ligne de commande, mais n’est pas le plus adapté à toutes les tâches. Go innove surtout au niveau de ses fonctionnalités, particulièrement les Map, les Slice, les Goroutines et les channels.


Cadres d’utilisation de Go

Le langage Go a été créé dans le but avoué de pouvoir programmer vite et d’être facile à appréhender pour des développeurs débutants. La contrepartie est qu’il est bien moins puissant que des langages tels que C ou C++, qui sont eux plus complexes. Go est principalement conçu pour des équipes fluctuantes, où les développeurs changent souvent. Il permet d’être rapidement productif même pour des débutants. Sa syntaxe et la façon dont il traite les objets le destinent surtout à la programmation de logiciels serveurs, la construction de CMS ou la génération de pages HTML en remplacement de Perl, Python, PHP ou même Java. Il permet à la fois un développement rapide et des scripts plus efficaces que ce qu’offrent la plupart des langages de scripts. Il propose des fonctionnalités de concurrence et un garbage collector.

4256

x
Rechercher dans les dossiers
Les derniers dossiers...
Réduire

Actuellement à la Une...
Le rachat de Docker Enterprise par Mirantis n’est que la partie émergée de la restructuration en cours au sein du spécialiste des conteneurs. Docker change à nouveau de CEO, lève des fonds à des fins de recapitalisation et annonce se concentrer de nouveau sur les développeurs.

Créée en 2018 après 24 mois de travail en mode secret, ShieldIO propose une nouvelle approche du chiffrement pour protéger les données.

Créée par d’anciens du DoE (Department of Energy) aux USA, Corelight est une nouvelle entreprise qui propose une suite de monitoring du trafic réseau s’appuyant sur Zeek, un projet open source.

Le streaming illégal de séries et films peu rapporter gros. Mais lorsque l’ALPA s’en mêle et que les services de police alertés remontent jusqu’au webmaster cela se termine assez rapidement en correctionnelle.

Après l'infrastructure sous-jacente, c'est au tour des systèmes de paiement des applications de Facebook d'être unifiés. Le géant annonce le lancement de Facebook Pay, une solution de paiement mobile pour le réseau social, Messenger, Instagram et WhatsApp.

L’éditeur du système de fichiers de stockage pour les environnements de haute performance a revisité PANFS, le système de fichiers maison, et l’installe sur ses appliances haut de gamme ActiveStore Ultra.

L’éditeur de solutions de monitoring et de sécurité des environnements en container annonce la version 3 de Sysdig Secure.

Aucun détail n’a été donné sur la transaction de rachat de CloudSploit par Aqua Security, un éditeur de solutions de sécurité pour les environnements clouds natifs (serverless, containers).

Cemex, un des plus grands cimentiers dans le monde, a opté pour la technologie d’une jeune start-up pour accélérer la transformation de ses cimenteries et les faire entrer dans l’ère de l’industrie 4.0.

Si longtemps la réputation d’un centre de données s’est limitée au seul critère de continuité de service, de nouvelles caractéristiques ont aujourd’hui pris de l’importance, à l’instar de la consommation énergétique, de la performance environnementale ou encore de la sécurité des systèmes d’informations. De nombreux référentiels sont donc venus s’ajouter afin d’apporter non seulement une garantie de sérieux, mais aussi une meilleure lisibilité du marché. Article publié dans L'Informaticien n°181.

Toutes les News
LIVRES BLANCS
Les entreprises et les organismes publics se focalisent aujourd’hui sur la transformation numérique. En conséquence, les DevOps et l’agilité sont au premier plan des discussions autour des stratégies informatiques. Pour offrir ces deux avantages, les entreprises travaillent de plus en plus avec les fournisseurs de services de cloud public et développent désormais des clouds sur site à partir d’une infrastructure qui répond à trois exigences de base:
1. Agilité sans friction des ressources physiques
2. Systèmes de contrôle optimisant l'utilisation des ressources physiques et offrant un retour sur investissement maximal
3. Intégration des divers composants de l'infrastructure pour un provisionnement et une gestion des ressources automatisés.


Pour fonctionner, votre entreprise doit pouvoir compter sur une solution de sauvegarde efficace, essentielle dans un monde marqué par une croissance exponentielle des données. Vous devez à la fois accélérer vos sauvegardes et pouvoir y accéder plus rapidement pour satisfaire les exigences actuelles de continuité d’activité, disponibilité, protection des données et conformité réglementaire. Dans cette ère de croissance effrénée, les cibles sur bande hors site et autres approches traditionnelles sont simplement dépassées.


L’Intelligence Artificielle promet de révolutionner la perception de la cybersécurité au coeur des entreprises, mais pas uniquement. Ce changement de paradigme engage, en effet, une redéfinition complète des règles du jeu pour les DSI et les RSSI, ainsi que l’ensemble des acteurs de la sécurité.


Lorsque l'on déploie des postes de travail, ils ont généralement tous la même configuration matérielle et logicielle (avec certaines spécificités selon les services). Mais on ne peut pas toujours tout prévoir et il arrive par exemple que de nouveaux programmes doivent être installés ou n’aient pas été prévus. L’accumulation de logiciels « lourds » est susceptible de provoquer des lenteurs significatives sur un PC allant jusqu’à l’extinction nette de l’application. Ce livre blanc explique comment optimiser les performances au travers de 5 conseils rapides à mettre en place.


Ce guide est conçu pour aider les entreprises à évaluer les solutions de sécurité des terminaux. Il peut être utilisé par les membres de l'équipe de réponse aux incidents et des opérations de sécurité travaillant avec des outils de sécurité des points finaux sur une base quotidienne. Il peut également être utilisé par les responsables informatiques, les professionnels de la sécurité, les responsables de la conformité et d’autres personnes pour évaluer leurs performances. les capacités de l’entreprise en matière de cybersécurité, identifier les lacunes dans la sécurité des terminaux et sélectionner les bons produits pour combler ces lacunes.


Tous les Livres Blancs