Comment créer une application décentralisée et évolutive ? Utilisez moins de blockchain

Non, lancer une application décentralisée (dapp) sur la blockchain ne mènera pas à une entreprise prospère. En fait, la plupart des utilisateurs ne se demandent même pas si l'application fonctionne sur la blockchain - ils choisissent simplement un produit moins cher, plus rapide et plus simple.

Malheureusement, même si la blockchain possède ses propres caractéristiques et avantages, la plupart des applications qui y fonctionnent sont beaucoup plus coûteuses, plus lentes et moins intuitives que leurs concurrents centralisés.

Comment créer une application décentralisée et évolutive ? Utilisez moins de blockchain

Très souvent, dans les livres blancs des applications construites sur la blockchain, vous pouvez trouver un paragraphe qui dit : "La blockchain est chère et ne peut pas prendre en charge le nombre requis de transactions par seconde. Heureusement, de nombreuses personnes intelligentes travaillent à faire évoluer la blockchain et au moment où notre application sera lancée, elle deviendra tout à fait évolutive.

En un simple paragraphe, un développeur dapp peut renoncer à une discussion plus approfondie sur les problèmes d'évolutivité et les solutions alternatives aux problèmes. Cela conduit souvent à une architecture inefficace où les contrats intelligents exécutés sur la blockchain servent de backend et de cœur de l’application.

Cependant, il existe encore des approches non testées en matière d’architecture d’application décentralisée qui permettent une bien meilleure évolutivité en réduisant la dépendance à l’égard de la blockchain. Par exemple, Blockstack travaille sur une architecture dans laquelle la plupart des données et de la logique des applications sont stockées hors chaîne.

Intéressons-nous d'abord à une approche plus traditionnelle, qui utilise la blockchain comme intermédiaire direct entre les utilisateurs de l'application, et qui n'est pas particulièrement évolutive.

Approche n°1 : la blockchain comme backend

Pour que les choses soient plus claires, prenons l'exemple de l'hôtellerie. Il s'agit d'une industrie énorme dans laquelle des intermédiaires comme Booking.com, ils facturent des frais énormes pour connecter les clients et les hôtels.

Dans toute situation où nous souhaitons vaincre un tel intermédiaire en utilisant cette approche, nous essaierons de répliquer sa logique métier en utilisant des contrats intelligents sur une blockchain telle qu'Ethereum.

Les contrats intelligents open source exécutés sur « l'ordinateur mondial » peuvent connecter les commerçants aux consommateurs sans tiers intermédiaire, réduisant ainsi les frais et commissions facturés par l'intermédiaire.

Comme le montre l'image ci-dessous, les hôtels utilisent une application décentralisée pour publier sur la blockchain des informations sur les chambres, leur disponibilité et leurs prix en semaine ou le week-end, et peut-être même une description des chambres avec toutes les autres informations pertinentes.

Comment créer une application décentralisée et évolutive ? Utilisez moins de blockchain

Toute personne souhaitant réserver une chambre utilise cette application pour rechercher des hôtels et des chambres hébergés sur la blockchain. Une fois que l'utilisateur a sélectionné une chambre, la réservation est effectuée en envoyant le nombre requis de jetons à l'hôtel à titre d'acompte. Et en réponse, le contrat intelligent met à jour les informations dans la blockchain indiquant que le numéro n'est plus disponible.

Le problème d’évolutivité de cette approche présente deux faces. Premièrement, le nombre maximum de transactions par seconde. Deuxièmement, la quantité de données pouvant être stockées sur la blockchain.

Faisons quelques calculs approximatifs. Booking.com affirme avoir près de 2 millions d’hôtels enregistrés auprès d’eux. Disons qu'un hôtel moyen compte 10 chambres et que chacune d'entre elles n'est réservée que 20 fois par an, ce qui nous donne une moyenne de 13 réservations par seconde.

Pour mettre ce chiffre en perspective, il convient de noter qu’Ethereum peut traiter environ 15 transactions par seconde.

Dans le même temps, il convient de considérer que notre application contiendra également les transactions des hôtels - pour télécharger et mettre à jour en permanence les informations sur leurs chambres. Les hôtels mettent à jour les prix des chambres très fréquemment, parfois même quotidiennement, et chaque changement de prix ou de description nécessite une transaction sur la blockchain.

Il y a aussi des problèmes de taille ici : le poids de la blockchain Ethereum a récemment dépassé la barre des 2 To. Si les applications utilisant cette approche devenaient vraiment populaires, le réseau Ethereum deviendrait extrêmement instable.

Un tel système basé sur la blockchain peut exclure les étrangers en raison de son impartialité et de son manque de centralisation, principaux avantages de la technologie blockchain. Mais la blockchain a aussi d'autres fonctionnalités - elle est distribuée et non réécrite, ce sont d'excellentes caractéristiques, mais elles doivent être payées en termes de rapidité et de commission des transactions.

Par conséquent, les développeurs de dapp doivent évaluer soigneusement si chaque fonctionnalité utilisant la blockchain a réellement besoin d'être distribuée et non inscriptible.

Par exemple : quel est l'avantage de diffuser les données de chaque hôtel sur des centaines de machines à travers le monde et de les y stocker en permanence ? Est-il vraiment important que les données historiques sur les tarifs et la disponibilité des chambres soient toujours incluses dans la blockchain ? Probablement pas.

Si nous commençons à poser des questions comme celles-ci, nous commencerons à comprendre que nous n’avons pas nécessairement besoin de toutes les fonctionnalités coûteuses de la blockchain pour toutes nos fonctions. Alors, quelle est l'alternative ?

Approche n°2 : Architecture inspirée de Blockstack

Bien que l'accent principal Blockstack sur les applications dans lesquelles les utilisateurs sont propriétaires de leurs données (par exemple, comme texte aérien, BentenSound, Optimiseur d'image ou Graphite), Blockstack a également pour philosophie d’utiliser la blockchain à la légère, uniquement lorsque cela est absolument nécessaire. Leur principal argument est que la blockchain est lente et coûteuse et ne devrait donc être utilisée que pour des transactions uniques ou peu fréquentes. Le reste de l'interaction avec les applications doit se faire via peer-to-peer, c'est-à-dire les utilisateurs d'applications décentralisées doivent partager des données directement entre eux, plutôt que via la blockchain. Après tout, les applications décentralisées les plus anciennes et les plus performantes telles que BitTorrent, email et Tor ont été créées avant le concept de blockchain lui-même.

Comment créer une application décentralisée et évolutive ? Utilisez moins de blockchain
À gauche : la première approche, dans laquelle les utilisateurs interagissent via la blockchain. À droite : les utilisateurs interagissent directement les uns avec les autres et la blockchain n'est utilisée qu'à des fins d'identification, etc..

Revenons à l'exemple de la réservation d'hôtel. Nous voulons un protocole impartial, indépendant et ouvert pour connecter les clients aux hôtels. En d’autres termes, nous voulons supprimer l’intermédiaire centralisé. Nous n’avons pas besoin, par exemple, de stocker constamment les prix des chambres dans un registre distribué commun.

Pourquoi ne permettons-nous pas simplement aux clients et aux hôtels d'interagir directement plutôt que via la blockchain. Les hôtels peuvent stocker leurs prix, la disponibilité des chambres et toute autre information dans un endroit accessible à tous – par exemple, IPFS, Amazon S3 ou même leur propre serveur local. C'est exactement ce que le système de stockage décentralisé de Blockstack appelle Gaia. Il permet aux utilisateurs de choisir où ils souhaitent que leurs données soient stockées et de contrôler qui peut y accéder grâce à une approche appelée stockage multi-utilisateurs.

Pour établir la confiance, toutes les données de l'hôtel sont signées cryptographiquement par l'hôtel lui-même. Quel que soit l'endroit où ces données sont stockées, leur intégrité peut être vérifiée à l'aide des clés publiques associées à l'identité de cet hôtel stockées sur la blockchain.

Dans le cas de Blockstack, seules vos informations d'identité sont stockées sur la blockchain. Les informations sur la manière d'obtenir les données de chaque utilisateur sont stockées dans des fichiers de zone et distribuées via un réseau peer-to-peer à l'aide de nœuds. Et encore une fois, vous n’avez pas besoin de faire confiance aux données fournies par les nœuds, car vous pouvez vérifier leur authenticité en les comparant avec les hachages stockés dans la blockchain et d’autres utilisateurs.

Dans une version simplifiée du système, les clients utiliseront le réseau peer-to-peer Blockstack pour rechercher des hôtels et obtenir des informations sur leurs chambres. Et l'authenticité et l'intégrité de toutes les données que vous recevez peuvent être vérifiées à l'aide de clés publiques et de hachages stockés dans circuit virtuel Pile de blocs.

Cette architecture est plus complexe que la première approche et nécessite une infrastructure plus complète. En fait, c’est exactement là qu’intervient Blockstack, fournissant tous les composants nécessaires pour créer un système aussi décentralisé.

Comment créer une application décentralisée et évolutive ? Utilisez moins de blockchain

Avec cette architecture, nous stockons uniquement sur la blockchain les données qui ont réellement besoin d’être distribuées et non écrasées. Dans le cas de Blockstack, vous n'avez besoin que des transactions sur la blockchain pour vous inscrire et indiquer où vos données doivent être stockées. Vous devrez peut-être effectuer davantage de transactions si vous souhaitez modifier l'une de ces informations, mais il ne s'agit pas d'un événement récurrent.

De plus, la logique applicative, contrairement à la première approche, s’exécute côté client et non sur des contrats intelligents. Cela permet au développeur de modifier cette logique sans mises à jour coûteuses, voire parfois impossibles, des contrats intelligents. Et en conservant les données et la logique des applications hors chaîne, les applications décentralisées peuvent atteindre les niveaux de performances et d'évolutivité des systèmes centralisés traditionnels.

Conclusion

Les applications exécutées sur Blockstack peuvent bien mieux évoluer que les applications blockchain conventionnelles, mais il s'agit d'une approche plus jeune avec ses propres problèmes et questions sans réponse.

Par exemple, si une application décentralisée ne fonctionne pas sur des contrats intelligents, cela réduit le besoin de jetons utilitaires. Cela pourrait poser des problèmes aux entreprises étant donné que les ICO ont été la principale source de financement des applications décentralisées (y compris Blockstack lui-même).

Il y a aussi des problèmes techniques ici. Par exemple, il est relativement facile de mettre en œuvre une fonction de réservation d’hôtel dans un contrat intelligent, où, dans une opération atomique, les réservations de chambres sont effectuées en échange de jetons. Et il n’est pas très évident de savoir comment fonctionnera la réservation dans une application Blockstack sans contrats intelligents.

Les applications qui ciblent des marchés mondiaux susceptibles d’attirer des millions d’utilisateurs doivent très bien évoluer pour réussir. C’est une erreur de s’appuyer uniquement sur les blockchains pour atteindre ce niveau d’évolutivité dans un avenir proche. Pour pouvoir rivaliser avec les grands acteurs du marché centralisé tels que Booking.com, les développeurs d'applications décentralisées devraient envisager des approches alternatives pour concevoir leurs applications, comme celle proposée par Blockstack.

Source: habr.com

Ajouter un commentaire