Beaucoup d'entre vous se sont sûrement demandé pourquoi vous aviez même besoin de la blockchain et d'Ethereum en particulier. Quelqu'un est peut-être allé plus loin et a trouvé de nombreuses belles caractéristiques: décentralisation, transparence, confiance sans intermédiaires, résistance au cambriolage. C'est juste génial, non? Oui, mais ...

La blockchain dans sa forme actuelle n'est idéale que pour une gamme étroite de tâches, à l'exception de la tâche «ajouter des nanotechnologies pour l'effet wow» (et pour cette tâche, vous pouvez adapter n'importe quoi). Bien sûr, vous devez commencer quelque part, différentes expériences testent le terrain, montrant où la demande peut être attendue, où il y a une impasse inattendue, où les défauts ne sont pas aussi critiques que prévu. Mais il est nécessaire de connaître les frontières afin de décider consciemment si, dans ce cas particulier, il est possible d'essayer de les franchir.
Soit dit en passant, Ethereum n'est pas la seule et pas la meilleure option à tous égards. Peut-être que la blockchain correspond à votre tâche, mais une autre. Mais ensuite nous disons "blockchain", nous voulons dire "Ethereum"
Essayons de décrire les caractéristiques de la blockchain et des contrats intelligents qui rendent la solution à première vue des tâches prometteuses inefficace, voire impossible. Je voudrais également dire que les points sont généralisés, donc théoriquement il peut y avoir des solutions tout à fait normales pour des cas d'utilisation spécifiques. Par conséquent, traitez cette liste comme des faiblesses d'Ethereum qui doivent être corrigées avant de démarrer le projet.
Et aussi, veuillez pardonner si une grande partie de cela vous semble évidente. Comme la pratique l'a montré, c'est souvent au sujet de ces choses que vous devez d'abord parler avec le client.
1. Seuil d'entrée élevé
Si votre public est des utilisateurs ordinaires et non des passionnés de blockchain, une très petite partie prendra la peine de commencer à utiliser votre application. Imaginez: vous devez non seulement installer Metamask ou Mist avec un nœud, mais aussi acheter de l'éther, et c'est aussi un processus non trivial au début. Autrement dit, si votre objectif est de maximiser la portée de l'audience, Ethereum ne convient pas encore. Par exemple, créer un magasin exclusivement sur des contrats intelligents est probablement une mauvaise idée.
Que faire
- Offrez des avantages pour surmonter les inconvénients
- Cibler un public «dans le sujet»
- Il serait possible de cacher la logique de la blockchain à l'utilisateur en la plaçant sur le backend, sinon pour l'élément suivant
2. Centralisation décentralisée
Pourtant, l'avantage de la blockchain est que les participants ne peuvent pas se faire autant confiance que possible, mais cela n'est possible que si l'utilisateur est le propriétaire de sa clé privée. Alors seulement, il peut signer des transactions et effectuer diverses actions à partir de son adresse. Que se passe-t-il dans le cas de la logique blockchain sur le backend? Les clés sont gérées de manière centralisée et il n'y a aucune protection contre les transactions incompatibles avec l'utilisateur - ce qui signifie que vous n'avez qu'à faire confiance à l'intégrité et à la sécurité du serveur. Ainsi, par exemple, la plupart des échanges de crypto-monnaie fonctionnent avec la crypto-monnaie, mais ils n'utilisent aucun avantage associé à cela.
Que faire
- Comprendre si la transparence et l'immunité ou la capacité de manipuler des cryptes sont nécessaires. Sinon, il est moins cher et plus pratique d'utiliser une base de données régulière.
- Réfléchir et travailler à travers la mécanique du travail afin de maintenir les garanties technologiques
3. Toutes les données sont publiques
Quelle que soit la façon dont le contrat intelligent est écrit, si vous le souhaitez, vous pouvez obtenir la valeur de n'importe quel champ de données qu'il contient. Et l'historique des transactions. Par conséquent, si vous écrivez quelque chose qui identifie un utilisateur, comme un courrier ou un nom, alors tout ce qui rend cet utilisateur public. Il est tout à fait possible d'avoir une sorte de cryptage sur le dessus. Dans ce cas, les clés devront être stockées côté réception, c'est-à-dire que l'utilisateur doit à nouveau confier ses données à un tiers. Par conséquent, pour des données plus ou moins sensibles, le stockage privé ordinaire peut être plus justifié. Si vous allez conclure des accords sur la blockchain, vous risquez de perdre plus que de gagner.
Que faire
Comprendre si des données privées sont requises pour la logique du contrat intelligent. Si tel est le cas, envisagez de gérer les hachages au lieu des données elles-mêmes.
4. La blockchain n'est pas un supercalculateur
Quelqu'un pourrait avoir l'impression que les mineurs mettent énormément de puissance pour effectuer des calculs utiles, mais c'est certainement loin d'être le cas. Juste au cas où, je voudrais clarifier: les performances d'Ethereum sont plus similaires aux performances du système embarqué - ressources limitées, mémoire limitée, taille limitée du «firmware» (octet du code de contrat intelligent). Par conséquent, les calculs non critiques doivent être effectués au maximum hors chaîne. Pour cette raison, dans les contrats intelligents, il est peu probable qu'il soit plus difficile d'analyser les données ou, par exemple, d'effectuer le chiffrement
Que faire
- N'utilisez pas la blockchain comme calculatrice
- Si vous avez besoin de calculs contrôlés sur la blockchain, vous pouvez envisager la fonctionnalité de calcul dans oraclize
5. La blockchain n'est pas un stockage universel
Souvent, vous pouvez entendre une demande de sauvegarde de quelque chose sur la blockchain: des informations ou des documents. Ici, les problèmes sont évidents: d'une part, la sauvegarde des données coûte cher, et d'autre part, la blockchain n'est pas adaptée à la recherche, par exemple - soit vous avez un mappage (clé - valeur) qui, en passant, ajoute également de la valeur à chaque enregistrement, ou vous devez rechercher par force brute. De plus, il n'y a pas de gestion des autorisations. Par conséquent, vous ne devez pas simplement changer la base de données en blockchain, il est important de comprendre pourquoi cela était nécessaire en principe. Séparément pour les fichiers, il convient de se rappeler de la publicité des données: si vous dites garder un lien vers IPFS, alors tout le monde le voit et peut télécharger ce qui se trouve dessus. Donc, si vous souhaitez stocker des photos sur la blockchain, vous devriez penser pourquoi.
Que faire
- En règle générale, il suffit d'enregistrer un hachage pour vérifier ce qui se trouve sur la chaîne
- Enregistrer uniquement les données nécessaires à la logique du contrat intelligent
6. Lier la blockchain au monde réel
La blockchain en elle-même transfère des pièces / jetons sans problème, mais comment transférer ce qui est acheté pour eux? Même s'il s'agit d'un fichier, comment fournir la confirmation de son transfert sans tiers? La réponse courte: ce n'est pas très simple, car nous supposons que les deux parties veulent se tromper et qu'elles auront besoin de beaucoup de contrôles, de chiffrement-déchiffrement, et si un différend survient, alors vous ne pouvez pas vous passer de calculs hors chaîne ou d'un arbitre. Comme vous le comprenez, pour un produit ou un service physique, tout est compliqué par le fait que quelqu'un doit entrer des informations selon lesquelles, en gros, les marchandises ont été reçues. Cette personne ne peut pas être une personne intéressée, alors c'est la tierce partie, à laquelle nous devons encore faire confiance. Ensuite, notre solution blockchain a un point faible sous la forme de cet arbitre, et puisque nous lui faisons confiance, pourquoi ne pas tout confier, par exemple héberger une base régulière et effectuer des paiements. Avant de faire quoi que ce soit, vous devez répondre clairement à cette question. C'est, par exemple, la signification du token que vous proposez d'échanger contre une remise dans un magasin hors ligne, il nous semble personnellement douteux
Que faire
Répondez clairement à la raison pour laquelle la logique centralisée ne convient pas. S'il n'y a pas de réponse, refusez la blockchain.
7. Aucune assurance contre les erreurs des utilisateurs
Si vous avez envoyé de l'argent par erreur à la banque ou que vous avez piraté un compte, c'est-à-dire qu'il y a une option pour écrire au support, il est temps d'annuler ou d'annuler la transaction. Dans les contrats intelligents, vous ne pouvez pas faire manuellement ce que le code ne fournit pas. Encore une fois, nous sommes confrontés à la nécessité d'introduire un arbitre qui bénéficie de privilèges comparables à la centralisation de l'ensemble de la décision.
Que faire
Si nécessaire, introduction de retards artificiels dans le transfert de fonds dans un smart contract
8. Long délai d'exécution
Si vous avez un système dynamique avec des états de réécriture constants et une logique basée sur eux, alors vous ne serez probablement pas satisfait du temps d'attente, car au moins dans Ethereum, un temps normal de confirmation de transaction peut être considéré comme une demi-minute, et si vous ne faites pas faillite, alors généralement plus. Même si le compte ne dure pas quelques secondes, il convient d'envisager la possibilité de retarder la transaction pour une durée indéterminée et de prévoir des intervalles suffisants. Ainsi, alors que des jeux tels que le poker ne sont pas possibles sous leur forme pure sur les contrats intelligents Ethereum, ou sont non triviaux et nécessitent de mettre l'accent sur la logique hors chaîne
Que faire
- Si vous prévoyez de vous tourner très souvent vers la blockchain, vous ne devriez pas regarder vers Ethereum, mais peut-être pas du tout vers la blockchain.
- Si possible, collectez plusieurs transactions en une, exécutant une partie de la logique hors chaîne
- En dernier recours, vous pouvez augmenter le prix de l'essence au besoin
- Si la transaction ne prend pas longtemps, vous pouvez spécifier une augmentation de prix et la renvoyer (la transaction doit rester inchangée, y compris le nonce). Un plus cher remplacera un moins cher
9. Le contournement de la censure n'est pas encore parfait
Si vous voulez confronter le gouvernement ou quelque chose comme ça avec l'aide de la blockchain, sachez que le service web est toujours une chose centralisée, même s'il est basé sur la blockchain. Autrement dit, un nom de domaine ou une adresse IP peut toujours être facilement bloqué et les utilisateurs devront trouver l'adresse du miroir. Avantages - vous n'avez pas besoin de faire des sauvegardes de base de données et de connaître l'adresse sur le réseau Ethereum, vous pouvez toujours y accéder avec des moyens moins conviviaux (Mist, MyEtherWallet, etherscan, etc.) Mais on ne peut pas dire que le problème de censure a été complètement résolu.
Que faire
La résistance au blocage est un bonus, mais vous ne devez pas baser votre décision sur l'utilisation ou non de la blockchain.
Si ce n'est pas Ethereum, alors qui?
Beaucoup qui. D'autres solutions blockchain et non blockchain peuvent sacrifier la décentralisation, l'ouverture ou l'accessibilité pour un nombre illimité de participants, en échange d'une vitesse de transaction accrue, pas de problèmes de confidentialité, etc. Ce sont des EOS, des solutions sur Hyberledger, Exonum, Hashgraph, Corda et bien plus encore. Mais il y a un facteur aussi important que le nom à l'oreille. Il s'agit d'une large base d'utilisateurs et d'une grande base de données d'applications, d'outils d'information et de développement, de tests. Et cela peut être écrit dans les pros pour Ethereum. Et voyons ce que Casper et Sharding apportent.
Est-ce que tout est si mauvais?
Le problème le plus important qui passe par tous ces points est la prise de conscience du choix de la blockchain. Il est important que la technologie résout le problème, l'ajout d'une blockchain à une tâche déjà résolue ne rendra probablement pas la solution plus efficace.
Par exemple, si vous ne savez pas qui veut lancer un casino, alors vous avez un problème pour gagner une réputation, faire preuve d'honnêteté et attirer une sorte de base d'utilisateurs. En offrant une solution sur Ethereum, vous pouvez au moins théoriquement garantir aux utilisateurs un travail transparent (bien que peu auditeront réellement votre contrat intelligent avant le jeu). Et vous attirez des gens avec un excès de crypto-monnaie sur le compte et un nombre insuffisant de possibilités pour son utilisation. Nous pouvons dire que l'objectif est atteint.
Et si vous souhaitez ajouter la blockchain au messager, vous ne résoudrez probablement pas non seulement les problèmes (et que peuvent-ils être? - la censure et la confidentialité viennent à l'esprit), mais en ajouterez également de nouveaux.
Trouver des applications plus correctes est probablement une question d'avenir, lorsque la base d'utilisateurs augmentera et l'achat de crypto-monnaie sera plus facile que maintenant. Mais en général, vous pouvez regarder vers de telles applications:
- Processus bureaucratiques et longs: transferts à l'étranger, formalités administratives
- Processus de confiance basés sur les plateformes: fonds, casinos
- Données utilisées dans différents domaines ou entreprises indépendantes: voyagistes, historique de crédit, listes noires
- Suivi des processus non fiables: vote, levée de fonds
Le fait que la tâche appartient à l'un des points ne signifie pas que la blockchain s'adaptera parfaitement. Voyez toujours ce que d'autres technologies plus optimisées offrent. Autrement dit, le fil conducteur devrait être «comment résoudre ce problème», et non «où bloquer la blockchain».
Immersion en développement sur Ethereum:
Partie 1: IntroductionPartie 2: Web3.js et le gazPartie 3: application utilisateurPartie 4: déployer et déboguer dans la truffe, la ganache, l'infuraPartie 5: Oraclize