Conception innovante de GAS par MOVE : Analyse de la méthode de calcul de la consommation des ressources off-chain.

robot
Création du résumé en cours

Conception du premier GAS dans le langage MOVE : méthode de calcul des dépenses de GAS off-chain

La version précédente du langage MOVE était initialement prévue pour fonctionner sans GAS, donc elle n'était pas préparée pour un plan GAS. Récemment, le plan GAS établi pour une certaine chaîne publique est le premier design de GAS pour le langage MOVE, appelé "une aventure".

Ce plan GAS précise les principes, les processus, les méthodes de calcul, les ajustements ultérieurs et l'acceptation des suggestions de la communauté pour l'élaboration du GAS.

La mesure du GAS est un concept fondamental de nombreuses blockchains, elle définit le calcul abstrait de la quantité de ressources de calcul et de stockage nécessaires pour exécuter et stocker des transactions sur la chaîne. Le plan GAS détermine le coût de toutes les exécutions sur la chaîne, utilisé pour calculer les dépenses de GAS utilisées pendant l'exécution des transactions.

processus

Pour une exécution efficace, le processus off-chain est le suivant :

  1. Définir les principes
  2. Préparer le cadre d'évaluation, déterminer le prix de chaque exécution
  3. Établir un système de mesure du GAS et une algèbre du GAS pour MOVE.
  4. Importer le cadre GAS en amont
  5. Rendre le cadre GAS conscient du stockage
  6. Affiner davantage le plan GAS

principe

Les principes définis comprennent :

  1. Les coûts d'opération doivent être directement liés aux ressources disponibles sur le réseau et devraient diminuer avec les progrès technologiques.
  2. GAS doit être configuré par la gouvernance off-chain, et peut être configuré sans couture.
  3. GAS peut prévenir les attaques DoS, il peut s'ajuster rapidement en fonction de la situation du réseau.
  4. Le prix du GAS doit refléter la vision d'une croissance accélérée et du maintien de l'accessibilité de la blockchain.
  5. Encourager à faire de bons choix dans la conception, comme privilégier la sécurité, la modularité, etc.

calcul de GAS

L'utilisateur doit spécifier lors de la soumission d'une transaction :

  • Quantité maximale de GAS : le nombre maximal d'unités de GAS que l'utilisateur est prêt à dépenser pour exécuter la transaction.
  • Prix du GAS : calculé en octal par unité de GAS, 1 octal = 0.00000001 APT

Des frais seront appliqués lors de l'exécution de la transaction :

  1. Coûts fixes
  2. Coût d'exécution de l'instruction MOVE
  3. Coût de la lecture des données à partir du stockage persistant
  4. Coût d'écriture des données dans le stockage persistant

Frais de transaction final = Quantité totale de GAS consommée × Prix unitaire du GAS

Par exemple, si une transaction consomme 670 unités de GAS, le prix du GAS spécifié par l'utilisateur est de 100 Octa/unité, alors le coût final est de 670 × 100 = 67000 Octa = 0,00067 APT.

Si le GAS est épuisé pendant l'exécution de la transaction, l'expéditeur sera facturé selon la quantité maximale de GAS, et les modifications apportées à cette transaction seront annulées.

Établissement du plan GAS

  1. Configuration de base

Le plan GAS comprend des composants qui ne sont pas liés à une seule opération, tels que la taille de la transaction et le nombre maximum d'unités de GAS.

  1. Taille de la transaction

La plupart des tailles de transaction se situent au niveau des kilooctets. Le module MOVE publié peut atteindre plusieurs milliers de bytes, un cadre environ 100 Ko. Les modules utilisateurs se situent généralement entre 4 et 40 Ko. La taille de la valeur des transactions a d'abord été fixée à 32 Ko, puis ajustée à 64 Ko en fonction des retours de la communauté.

Des transactions de grande envergure augmentent les coûts de bande passante du réseau et peuvent affecter les performances. La mémoire tampon peut ignorer les transactions de grande taille, il est donc nécessaire de trouver un équilibre entre la taille maximale et l'accessibilité.

  1. Unité de GAS maximale

La limite maximale d'unités de GAS dans le plan GAS définit le nombre maximum d'opérations qu'une seule transaction peut exécuter. Un réglage trop élevé peut avoir un impact négatif sur les performances de la blockchain. Des tests ont montré que même avec la mise à niveau maximale du cadre, moins de 90 % de l'unité de GAS maximale (, fixée à 1 000 000), est utilisée.

  1. Exécution

En évaluant le coût d'exécution en construisant un cadre de référence et en utilisant Valgrind pour analyser Move VM. La sortie est un code source commenté, montrant le nombre d'instructions machines générées par chaque ligne de code.

À partir de cela, nous pouvons estimer grossièrement le coût relatif de toutes les instructions MOVE et des fonctions natives. Il est à noter qu'il existe quelques problèmes avec les fonctions inline, qui peuvent être résolus par l'addition de nombres.

Finalement, en tenant compte des exemples de code visant à renforcer la robustesse et la sécurité du système, on obtient le nombre d'instructions machine exécutées. Comparez ce chiffre avec le stockage et le maximum d'unités de GAS pour déterminer la valeur actuelle dans le plan de GAS.

  1. Stockage

Lorsque vous accédez à des éléments ou des données d'état du grand livre, le nœud émet des requêtes de lecture et d'écriture vers le dispositif de stockage. Le nombre total d'accès aux données par seconde dépend de la bande passante du dispositif de stockage et de la capacité IOPS. L'accès aux données est une ressource rare instantanée que les utilisateurs doivent concurrence sur le marché des frais lors de la charge système. Le coût d'occupation du disque pour l'écriture des données est permanent off-chain.

Accéder et stocker tout élément d'état entraîne des coûts liés à la structure de données associée à la vérification de l'état de l'ensemble de la blockchain. Ce coût est lié à la cardinalité des différents éléments d'état ($2^{256}$). Il y a aussi un coût qui est proportionnel à la taille de chaque élément.

Les frais pour les opérations sur les éléments d'état, sauf les exceptions décrites au paragraphe suivant (, sont :

Stockage des frais GAS = item_fee + )byte_fee × bytes(

) Lire, créer et écrire

L'accès aux éléments d'état se divise en trois types : lecture, création ou écriture. L'accès est facturé en fonction des frais d'élément et des frais de byte.

Les opérations de lecture sont les plus courantes, limitées uniquement par la rareté instantanée des ressources. Les coûts de lecture sont calibrés en fonction des IOPS du disque et de la capacité de bande passante des spécifications matérielles de référence.

La création d'une opération ajoute de nouveaux éléments à l'état de stockage, augmentant ainsi le coût de la structure de données d'authentification, ce qui la rend donc la plus coûteuse. Les frais de création sont calibrés en fonction de l'espace disque de référence détenu par le réseau.

Les opérations d'écriture mettent à jour les éléments existants sans générer de frais supplémentaires dans la structure de données d'authentification. Cependant, la modification d'entrées existantes pour un nombre d'octets supérieur peut encore occuper de l'espace disque, donc les frais pour les octets dans les éléments mis à jour sont les mêmes que pour la création.

Les coûts de stockage sont évalués par transaction : même si la même ressource est lue/écrite plusieurs fois, des frais ne sont facturés qu'une seule fois.

En tenant compte de ce qui précède, 6 paramètres GAS ont été définis pour constituer le coût total :

  • per_item_read: selon l'étalonnage des IOPs
  • per_byte_read: calibré en fonction de la bande passante réelle
  • per_item_create: selon le calibrage du projet total cible
  • per_byte_create: Ajuster en fonction de la taille totale cible ### chaque projet contenant le premier 1 Ko (
  • per_item_write: identique à per_item_read
  • per_byte_write: identique à per_byte_create

) Coût unitaire de GAS stable

Chaque opération et transaction nécessite un coût unitaire fixe par rapport aux coûts de stockage et d'exécution, quelle que soit la valeur marchande calculée en APT ou en monnaie fiduciaire. Un coût unitaire de GAS fixe aide à maintenir le plan de GAS constant et à le découpler de la valeur du marché libre de l'APT. Choisir correctement le nombre de chiffres significatifs pour le coût unitaire de GAS aide à maintenir la stabilité du plan de GAS. En tenant compte de cela, le coût unitaire de GAS est exprimé avec une précision d'environ 3 chiffres. Par conséquent, le coût des transactions de transfert est d'environ 700 unités de GAS.

participation de la communauté

Les membres de la communauté peuvent :

  1. Trouver les incohérences du plan GAS
  2. Exprimer des préoccupations et participer à la discussion
  3. Voter sur les propositions de gouvernance liées au GAS

ajustement des coûts GAS

Le plan GAS, en tant que stockage de configuration off-chain, peut être modifié par des propositions de gouvernance et peut permettre l'ajout sans faille de nouvelles instructions ou fonctionnalités natives.

Le plan GAS est conçu pour être évolutif, permettant des mises à jour via des propositions de gouvernance. Avec des améliorations continues et l'intégration des retours des utilisateurs, les paramètres GAS peuvent être ajustés au fil du temps.

Parfois, la formule de GAS peut nécessiter des modifications complexes. Ces formules sont généralement codées en Rust et sont différenciées par les indicateurs de caractéristiques de GAS off-chain. La mise à niveau de ces formules nécessite la mise à jour du logiciel des nœuds, une adoption massive et l'approbation d'une proposition de gouvernance pour utiliser la nouvelle version de GAS.

Travail futur

En tant que premier cadre GAS fonctionnel de MOVE, les directions de travail futures incluent :

  1. Réduire les coûts d'exécution : utiliser un modèle GAS réel pour afficher l'efficacité du compilateur et de la machine virtuelle, améliorer pour réduire les coûts d'exécution.

  2. Calcul GAS multi-dimensionnel : permet aux utilisateurs d'attribuer un budget séparé pour l'exécution et le stockage, évitant ainsi de payer des prix GAS élevés en raison de problèmes de qualité du code.

  3. Soulager l'état encombré : explorer le concept de TTL de chaque projet, supprimer les éléments d'état non visités à l'expiration du TTL.

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 5
  • Partager
Commentaire
0/400
rugged_againvip
· Il y a 9h
Parler de tout cela ne vaut pas mieux que de dire directement combien le gas peut diminuer.
Voir l'originalRépondre0
MetaverseMigrantvip
· Il y a 9h
Zut, ce gas peut-il devenir encore plus compliqué ?
Voir l'originalRépondre0
NewDAOdreamervip
· Il y a 9h
Recevoir de l'argent à l'envers est aussi la douleur d'une vie de coder.
Voir l'originalRépondre0
¯\_(ツ)_/¯vip
· Il y a 9h
move vraiment bull, c'est devenu compliqué ?
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)