EOS : le débat sur la RAM

in #eos6 years ago


EOS est une infrastructure blockchain permettant à n'importe qui de déployer des applications décentralisées. Le logiciel EOSIO donne accès à trois types de ressources : la puissance de calcul (CPU), la bande passante, et la mémoire vive (RAM).

Les utilisateurs finaux d'EOS n'ont pas à payer de frais pour effectuer des transactions sur la blockchain, mais un développeur qui veut déployer une application décentralisée doit payer pour les ressources informatiques dont il a besoin. La mémoire vive est nécessaire pour stocker les informations de compte, et en particulier pour stocker les états des contrats. Nous devons garder à l'esprit que la RAM est l'un des principaux facteurs qui permettent à EOS de traiter un volume de transactions très élevé par seconde : si ces données étaient stockées sur disque, le temps d'accès au disque limiterait le débit.

Chaque nœud complet d'EOS dispose d'une quantité de RAM dédiée au stockage des données de cette infrastructure de smart contracts. La quantité de RAM donnée par chaque nœud complet est codée dans le logiciel. La RAM est actuellement une ressource rare sur EOS, puisqu'elle est limitée aujourd'hui à 64 Go. Il est donc nécessaire de l'allouer de manière optimale.

Comment fonctionne le Relais Bancor ?


Le système qui permet aux utilisateurs d'EOS d'acheter et de vendre de la RAM est l'algorithme de Bancor, connu sous le nom de Bancor Relay. Il a été implémenté sur la version 4.0 du logiciel EOSIO : au début, le contrat système EOSIO allouait de la RAM aux utilisateurs qui plaçaient des tokens sous séquestre - il a été abandonné en raison des risques élevés de pénurie de ressources ; Block.one a décidé de passer à une allocation basée sur le marché (oui, nous ne parlons pas ici d'un marché libre, car l'approvisionnement en RAM est contrôlé par BPs.)

Le Bancor Relay facilite la découverte des prix et fournit de la liquidité sur le marché de la RAM d'EOS, en permettant aux utilisateurs d'acheter et de vendre de la RAM pour des tokens EOS à des prix de marché préalablement établis. Le Bancor Relay peut être vu typiquement comme l'algorithme du market maker de la RAM. Les prix sont déterminés par les paramètres suivants : la provision en RAM disponible, le solde du connecteur (en EOS) et le poids du connecteur (le rapport entre la valeur totale de la RAM et le solde du connecteur).

Nous n'entrerons pas dans les détails ici, mais la formule de tarification de Bancor est détaillée dans le whitepaper de Bancor.

Le problème avec cet algorithme, utilisé dans un marché rare comme celui de la RAM sur EOS, est que les thésauriseurs peuvent faire croître le prix à l'infini pour de faibles coûts.

Spéculation et problèmes avec le marché de la RAM


Une quantité substantielle de RAM est nécessaire aux développeurs de DApps. Si les développeurs doivent payer un prix beaucoup trop élevé, le déploiement d'applications décentralisées devient inabordable.

Les traders, d'un autre côté, ne se soucient pas vraiment de l'allocation des ressources ou du juste prix : ils souhaitent seulement faire de l'argent, et en spéculant sur la demande future en RAM lorsque l'écosystème EOS sera largement utilisé, ils poussent les prix à la hausse.

Au moment de la rédaction du présent article, le coût de la RAM est d'environ 0,18 EOS par kilooctet. C'est mieux que le pic à 0,9 EOS/ko qui est arrivé début juillet, mais c'est toujours très coûteux si vous voulez déployer une DApp à grande échelle ou faire un airdrop sur tous les comptes EOS.

La RAM semble très chère pour l'utilisateur moyen, mais il n'a à payer cette allocation qu'une seule fois, lors de la création d'un compte. Pour le moment, un compte a besoin de 4 ko de RAM, mais le contrat système sera bientôt mis à jour pour abaisser ce montant à 1,5 ko. Après le paiement initial pour l'allocation de RAM, tous les frais de transaction sont gratuits : payer moins de 10 dollars pour créer un compte permettant d'effectuer un grand nombre de transactions sans frais n'est pas très coûteux.

Du point de vue des développeurs, cependant, il devient très coûteux de déployer une application décentralisée qui sera largement utilisée. De plus, de nombreux comptes créés ne seront pas utilisés : cela représente un gaspillage d'argent pour le développeur.

L'une des promesses d'EOS est l'inclusion financière à grande échelle. Mais qui peut se permettre ces coûts dans un pays pauvre où le coût de création de compte est équivalent à un revenu hebdomadaire ?

Les prix de la RAM ont bien sûr un impact très important sur les coûts des airdrops. Le coût d'un airdrop sur tous les comptes EOS est de l'ordre de 10 000 EOS, ce qui représente beaucoup d'argent. Mais est-ce une mauvaise chose ? Nous pouvons supposer que si les coûts sont très bas, le réseau EOS sera spammé avec des projets et des tokens qui n'ont aucune signification ou aucune valeur. Mais d'un autre côté, si les coûts sont trop élevés, les airdrops, qui sont une part essentielle du business model et du marketing d'EOS, deviendront pratiquement impossibles. Comme solution, nous pourrions faire payer les coût de l'allocation de RAM par les utilisateurs, ou laisser les BPs fournir des services de création de compte.

Le problème avec le marché de la RAM est que vous ne pouvez qu'acheter ou vendre de la RAM. Si les utilisateurs avaient la possibilité de la louer, cela atténuerait les problèmes mentionnés ci-dessus. Il s'agit d'une proposition appuyée par de nombreux producteurs de blocs. Comme LiquidEOS l'a mentionné, imaginez un marché immobilier où vous ne pouvez qu'acheter ou vendre des maisons, sans aucune possibilité de les louer : il y aurait beaucoup de maisons vides sur le marché, détenues uniquement par des spéculateurs qui font monter artificiellement les prix. Une solution potentielle est de s'assurer que l'utilisation des ressources est aussi élevée que possible, mais sans porter atteinte aux principes du marché libre. Une proposition pourrait être d'établir une sorte d'impôt foncier, ce qui ferait de la RAM un mauvais investissement à long terme.

Une autre question repose sur le fait qu'il n'y a que très peu de coûts associés à la spéculation. En autorisant la spéculation sur une ressource finie et utile, les spéculateurs devraient payer des frais pour les décourager d'acheter la RAM à l'avance, en pensant que les développeurs en auront besoin à l'avenir et paieront un prix plus élevé pour accéder à ces ressources. La communauté EOS devrait choisir ce qu'il faut faire avec les frais perçus par l'allocation de RAM. Cependant, payer directement la RAM sur EOS à partir du compte de l'utilisateur n'est pas une solution qui s'accorde avec les principes d'EOS.

Solutions potentielles et propositions :


Dan Larimer a fait une première proposition au début du mois de juillet :

EOSIO RAM Market & Bancor Algorithm

  • La première étape consiste à augmenter l'approvisionnement en RAM. Il a suggéré un taux de 64 Go / an (soit 1 ko par bloc). Les producteurs de blocs peuvent modifier ce taux d'augmentation.
  • La deuxième étape est de réduire l'utilisation en mémoire d'un compte : après vérification de l'utilisation de la RAM par compte, il est apparu que les 3 ko / compte étaient "trop conservateurs". La future mise à jour du contrat système utilisera 1,5 ko de RAM par compte, ce qui réduira de moitié le coût de la création d'un compte.
  • La troisième étape dépend de l'iOS wallet que Block.one est en train de construire : l'équipe prévoit d'offrir un compte à chaque utilisateur.
Dan Larimer a raison de dire que la RAM est une ressource rare, mais la loi de Moore n'est pas la cause de cette pénurie. La vraie raison est le modèle actuel basé sur le marché, qui ne parvient pas à allouer la RAM d'une manière efficiente. De plus, ces 64 Go sont un montant très faible pour commencer.

Pour résoudre le problème de RAM, nous devons créer un environnement qui décourage fortement la spéculation. Plusieurs solutions ont été proposées par les producteurs de blocs EOS et les membres de la communauté. Il y a deux domaines principaux d'amélioration :

  • Décourager la spéculation en mettant en place des mécanismes financiers qui rendent la spéculation du RAM moins attrayante ;
  • Établir un marché de la location pour la RAM qui permet aux utilisateurs de louer cette ressource.
L'une des solutions consiste à autoriser les contrats à terme sur la RAM et à répartir la RAM sur deux marchés différents : un marché d'achat/vente et un marché de location. Si la RAM devient louable, il y aura beaucoup plus d'utilisation et cela fera baisser son prix.

Une autre solution pourrait être de donner leur propre place de marché aux spéculateurs, afin qu'ils échangent la RAM sur une plateforme. Cette dernière pourrait lister plusieurs paires de trading sur la RAM, et l'on pourrait y acheter et vendre de la RAM aussi facilement que des tokens. Cela abaisserait la barrière à l'entrée, mais augmenterait la volatilité des prix.

La proposition de Bancor :

Il y a deux points clés dans la solution proposée par Bancor à ce problème inabordable de prix de la RAM.
  • Changer le contrat RAM pour brûler des tokens EOS à un taux constant, disons 10 % par mois. Cela réduira l'incitation à conserver la mémoire vive pendant de longues périodes.
  • Mettre en place des contrats à terme sur le prix de la RAM pour les 64 Go à venir, permettant aux spéculateurs de parier sur le prix futur, sans empêcher les développeurs d'accéder à cette ressource à un prix abordable.

Un marché du leasing de la RAM :

Il y a quelques difficultés à surmonter avec le leasing de RAM : qu'advient-il des données si le "loyer" n'est pas payé ? Cela pourrait être très dommageable pour les utilisateurs finaux si le système efface ces donnés en cas de défaut de paiement. Nous devons donc mettre en place de fortes incitations à payer ce "loyer". Il y a deux façons d'inciter les utilisateurs :
  • Verrouiller les tokens qui seront utilisés pour payer le "loyer", si ce n'est pas fait volontairement, tout en indexant le coût du" loyer" sur la taille du "bail". Plus de jetons sont verrouillés, moins le loyer sera cher ;
  • Gel des comptes en cas de défaut de paiement.

La proposition de Greymass : séparation des données chaudes et froides

Une façon d'augmenter l'approvisionnement en RAM, tout en ayant une allocation optimale, serait de ne pas stocker les données froides directement sur la mémoire physique, mais en utilisant l'espace disque. C'est une solution très élégante et intéressante proposée par Greymass (qui fait un travail incroyable pour EOS), mais cela implique des changements très substantiels dans le contrat système.

L'idée est de disposer d'un système de location de RAM sans frais, transparent et automatique, qui permet aux utilisateurs de passer des données "froides" à "chaudes" en fonction de leurs besoins et de leurs ressources. Ce qui est très intéressant avec ce concept, c'est que même avec la limite actuelle de 64 Go de RAM, moins de 10 To d'espace disque seraient suffisants pour stocker plus d'un milliard de données de comptes.

Comme mentionné par Greymass, l'augmentation de la RAM physique peut être dangereuse, car cela affecte tous les nœuds du réseau, et pas seulement les producteurs de blocs. Cela pourrait élever considérablement la barrière à l'entrée pour les nouveaux nœuds, en raison des spécifications techniques très élevées qui sont nécessaires.

Greymass suggère de séparer les données vives des données persistantes. L'idée est d'avoir un système où "la persistance est garantie, mais la vivacité ne l'est pas" : les données non utilisées passeront de la RAM physique au disque.

  • Le stockage "live" pourra être accédé en lecture/écriture ;
  • Le stockage persistant n'aura qu'une autorisation d'activation.
Alors que le disque sera une ressource disponible par l'intermédiaire du staking (séquestre) de tokens EOS, la RAM sera acquise par location et sauvegardée sur disque. Le système de location serait basé sur une ressource s'auto-renouvelant, comme du carburant. Les prix de la location seraient corrélés à l'utilisation du système. En cas de forte demande, l'algorithme de Bancor pousserait le prix du carburant, et il pourrait devenir coûteux d'activer les ressources du disque en RAM. Les utilisateurs devraient attendre moins d'utilisation ou ajouter plus d'EOS pour augmenter la quantité totale de carburant disponible qu'ils doivent utiliser.
En supposant que l'utilisateur soit capable de payer le carburant pour la location, ce dernier pourra être bon marché si peu de baux sont en cours, ou coûteux lorsque les baux en cours approchent la capacité en RAM du système. Toutefois, comme les baux expireront, un utilisateur peut choisir d'attendre si les prix sont prohibitifs pour son cas d'usage.
Avec l'automatisation, la location ne serait possible que si l'utilisateur est en mesure de payer. Les données passeraient automatiquement de la RAM au disque et du disque à la RAM en fonction de l'activité de l'utilisateur et des jetons EOS mis en jeu.

Il serait encore rentable de spéculer un peu sur les prix de location de RAM, mais ce serait beaucoup moins dommageable pour l'accessibilité de cette ressource :

Le marché du crédit-bail peut contenir de légères spéculations - un utilisateur pourrait spéculer qu'il est préférable d'acquérir un bail maintenant, s'il prévoit de l'utiliser bientôt et que le prix augmentera bientôt (puisque les baux eux-mêmes peuvent encore utiliser l'algorithme de Bancor pour déterminer le bon prix pour un bail donné). Cependant, ne pas utiliser un bail n'est qu'une perte de temps pour un vrai spéculateur, car il n'y a plus de concept de vente. Vous acquérez simplement le droit d'utiliser la "vivacité" de la RAM pour vos données pendant un certain temps.
Les répercussions sur le rendement pourraient être atténuées en interdisant aux transactions de mettre à jour leurs données pendant un certain temps, selon la taille des données.

Pour plus de détails, lisez cet excellent article de Greymass :

La proposition de Filipe Alonso :

Filipe Alonso a fait une proposition très pertinente sur Coinmonks concernant la question du RAM, divisée en deux articles majeurs : Nous ne décrirons pas en détail cette proposition ici, car ces deux articles sont certainement les meilleurs disponibles sur le sujet et doivent être lus attentivement par tous les membres d'EOS intéressés par ce sujet. L'idée est :
  • Pilotage des coûts d'accessibilité de la RAM en fonction de son utilisation ;
  • Contrôle de la distribution de la RAM avec des mécanismes d'inflation/déflation.
La fonction de la production de RAM est uniquement de fournir au réseau suffisamment de ressources pour qu'il puisse se développer de manière durable. Contrairement à l'offre collatérale, qui peut augmenter et diminuer en fonction des besoins en mémoire en raison de l'inflation et de la déflation, la production de RAM ne peut et ne devrait augmenter que pour des raisons évidentes liées à l'utilisation de l'espace.

La solution préférée de franceos :

Nous ne voulons pas que la RAM devienne une denrée rare et coûteuse pour les utilisateurs d'EOS, mais une ressource technique présentant aussi peu d'incitation à la spéculation que possible. Nous sommes en faveur d'un marché du leasing (location) pour la RAM. De notre point de vue, c'est la meilleure façon d'allouer efficacement cette ressource : les spéculateurs ne seront pas incités à thésauriser la RAM et sa distribution sera guidée par les besoins techniques réels du réseau. Les développeurs ainsi que les utilisateurs pourront louer le montant nécessaire ; cela réduira les coûts et assurera mécaniquement une meilleure allocation.

En tant que telle, nous soutenons fermement la proposition de Greymass pour un marché de la location de la RAM.

Le débat n'est pas terminé, et nous sommes sûrs que la communauté EOS se mettra d'accord sur une solution pour résoudre ce problème qui pourrait être très dommageable pour l'inclusion financière dans notre crypto-écosystème naissant. Stay tuned !