Première conception de GAS pour le langage MOVE : Analyse de la méthode de calcul des frais de GAS off-chain
La version précoce du langage MOVE n'a pas pris en compte le mécanisme de GAS, c'est pourquoi le plan GAS conçu pour un certain projet de blockchain est qualifié "d'une aventure". Ce plan expose les principes, le processus, les méthodes de calcul et les ajustements ultérieurs liés à l'établissement du GAS, et invite la communauté à faire des suggestions.
La mesure de GAS est un concept fondamental de nombreuses blockchains, utilisé pour évaluer les ressources informatiques et de stockage nécessaires à l'exécution et au stockage des transactions on-chain. Le plan de GAS détermine le coût de toutes les exécutions on-chain, utilisé pour calculer les dépenses en GAS pendant l'exécution des transactions.
processus
Le processus de mise en œuvre du GAS pour ce projet blockchain comprend :
Définir les principes
Préparer le cadre d'évaluation, déterminer le prix de chaque exécution
Établir un système de mesure de GAS et une algèbre de GAS sécurisée pour MOVE
Importer le cadre GAS en amont
Rendre le cadre GAS conscient du stockage
Affiner davantage le plan GAS
principe
Les principes définis par le projet incluent :
Le coût d'exploitation doit être directement lié aux ressources disponibles sur le réseau et diminuer avec les progrès technologiques.
GAS est configuré par la gouvernance off-chain, pouvant être configuré sans couture.
GAS peut prévenir les attaques DoS et peut s'ajuster rapidement en fonction de l'état du réseau.
Le prix du GAS reflète la vision d'une croissance accélérée et du maintien de la popularité de la blockchain.
Encourager à faire des choix favorables à la sécurité, à la modularité, etc. dans la conception.
Calculer le GAS
L'utilisateur doit spécifier lors de la soumission de la transaction :
Nombre maximum de GAS : le nombre maximum d'unités de GAS que vous êtes prêt à dépenser pour exécuter la transaction.
Prix du GAS : calculé en octal, 1 octal = 0.00000001 jeton natif
Frais perçus lors de l'exécution de la transaction :
Coûts fixes
Coût d'exécution
Coût de lecture
Coût d'écriture
Frais de transaction final = Quantité totale de GAS consommée × Prix du GAS
Par exemple, une transaction consomme 670 unités de GAS, l'utilisateur spécifie un prix du GAS de 100 Octa/unité, donc le coût final est de 670 × 100 = 67000 Octa = 0,00067 jetons natifs.
Si le GAS est épuisé pendant l'exécution de la transaction, l'expéditeur sera facturé en fonction de la quantité de GAS maximale, et tous les changements effectués par cette transaction seront annulés.
établir un plan GAS
1. Configuration de base
Le plan GAS comprend des éléments qui ne sont pas liés à une seule opération, tels que la taille des transactions et l'unité maximale de GAS.
2. Taille des transactions
La plupart des tailles de transaction sont de l'ordre du kilooctet, mais la publication du module MOVE peut atteindre plusieurs kilooctets. Initialement, la taille des transactions était fixée à 32 Ko, puis ajustée à 64 Ko en fonction des retours de la communauté.
Des transactions de grande envergure augmenteront le coût de la bande passante du réseau et pourraient affecter la performance. La mémoire tampon tendra à ignorer les transactions de plus grande taille, il est donc nécessaire de trouver un équilibre entre la taille maximale et l'accessibilité.
3. Unité MAXIMUM de GAS
L'unité maximale de GAS définie dans le plan GAS détermine le nombre maximum d'opérations pouvant être exécutées dans une transaction. Un réglage trop élevé peut entraîner des impacts négatifs sur les performances, tels que des boucles infinies. Les tests ont révélé qu même après la mise à niveau du cadre au maximum, cela ne représente pas 90 % de l'unité maximale de GAS définie (1,000,000).
4. Exécution
L'équipe a construit un cadre de référence et utilisé des outils d'analyse pour évaluer le coût d'exécution, estimant grossièrement le coût relatif de toutes les instructions MOVE et des fonctions natives. En tenant compte des exemples de codage qui améliorent la robustesse et la sécurité du système, elle a déterminé le nombre final d'instructions machine exécutées.
5. Stockage
Lorsqu'un nœud accède à des éléments d'état ou à des données du registre, il envoie des requêtes de lecture et d'écriture à l'appareil de stockage. Le nombre total d'accès aux données est limité par la bande passante de l'appareil de stockage et la capacité IOPS. L'équipe prend en compte ces coûts pour concevoir le plan de stockage GAS.
L'accès et le stockage des éléments d'état entraînent des coûts associés à la structure de données liée à la vérification de l'état complet de la blockchain. La formule de calcul des frais est :
Frais de stockage GAS = frais de projet + ( frais par octet × nombre d'octets )
lire, créer et écrire
L'accès aux éléments d'état se divise en trois types : lecture, création et écriture.
Les opérations de lecture sont les plus courantes, limitées uniquement par la rareté temporaire des ressources.
Créer une opération ajoute un nouvel élément dans le stockage d'état, coût maximal.
Les opérations d'écriture mettent à jour les éléments existants sans générer de frais supplémentaires liés à la structure de données d'authentification.
Les coûts liés au stockage sont évalués par transaction, et les frais ne sont facturés qu'une seule fois pour plusieurs lectures et écritures des mêmes ressources.
L'équipe a défini 6 paramètres GAS constituant le coût total du GAS :
per_item_read: selon l'étalonnage des IOPs
per_byte_read: selon l'étalonnage de la bande passante
per_item_create: calibrer en fonction du total des projets cibles
per_byte_create: ajustement en fonction de la taille totale cible
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. Le coût unitaire fixe du GAS aide à maintenir le plan GAS constant et à le découpler de la valeur marchande des jetons natifs.
L'équipe exprime l'unité de GAS avec une précision d'environ 3 chiffres, par exemple le coût des transactions de transfert est d'environ 700 unités de GAS.
participation communautaire
Les membres de la communauté peuvent:
Identifier les incohérences du plan GAS
Exprimer des inquiétudes concernant le plan GAS et participer à la discussion
Vote sur les propositions de gouvernance liées au GAS
Comment ajuster le coût du GAS ?
Le plan GAS est stocké hors chaîne et peut être modifié par des propositions de gouvernance, avec la possibilité d'ajouter sans couture de nouvelles instructions ou fonctionnalités.
Le plan GAS est conçu pour être évolutif, permettant des mises à niveau via des propositions de gouvernance. Avec l'amélioration du projet et l'intégration des retours des utilisateurs, les paramètres GAS peuvent être ajustés progressivement.
Les modifications complexes des formules de GAS nécessitent une mise à jour du logiciel des nœuds, et après une adoption à grande échelle, l'utilisation de la nouvelle version sera approuvée par des propositions de gouvernance.
Travail futur
En tant que premier cadre GAS viable de Move, ce projet jette les bases des travaux futurs :
Réduire les coûts d'exécution : améliorer l'efficacité du compilateur et de la machine virtuelle
Calcul GAS multidimensionnel : permet aux utilisateurs de spécifier un budget séparé pour l'exécution et le stockage.
Atténuer l'état encombré : explorer le concept de TTL de chaque projet, supprimer les éléments d'état non visités à l'expiration du TTL.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
Le langage MOVE accueille son premier design de GAS : analyse complète du schéma de facturation des ressources off-chain.
Première conception de GAS pour le langage MOVE : Analyse de la méthode de calcul des frais de GAS off-chain
La version précoce du langage MOVE n'a pas pris en compte le mécanisme de GAS, c'est pourquoi le plan GAS conçu pour un certain projet de blockchain est qualifié "d'une aventure". Ce plan expose les principes, le processus, les méthodes de calcul et les ajustements ultérieurs liés à l'établissement du GAS, et invite la communauté à faire des suggestions.
La mesure de GAS est un concept fondamental de nombreuses blockchains, utilisé pour évaluer les ressources informatiques et de stockage nécessaires à l'exécution et au stockage des transactions on-chain. Le plan de GAS détermine le coût de toutes les exécutions on-chain, utilisé pour calculer les dépenses en GAS pendant l'exécution des transactions.
processus
Le processus de mise en œuvre du GAS pour ce projet blockchain comprend :
principe
Les principes définis par le projet incluent :
Calculer le GAS
L'utilisateur doit spécifier lors de la soumission de la transaction :
Frais perçus lors de l'exécution de la transaction :
Frais de transaction final = Quantité totale de GAS consommée × Prix du GAS
Par exemple, une transaction consomme 670 unités de GAS, l'utilisateur spécifie un prix du GAS de 100 Octa/unité, donc le coût final est de 670 × 100 = 67000 Octa = 0,00067 jetons natifs.
Si le GAS est épuisé pendant l'exécution de la transaction, l'expéditeur sera facturé en fonction de la quantité de GAS maximale, et tous les changements effectués par cette transaction seront annulés.
établir un plan GAS
1. Configuration de base
Le plan GAS comprend des éléments qui ne sont pas liés à une seule opération, tels que la taille des transactions et l'unité maximale de GAS.
2. Taille des transactions
La plupart des tailles de transaction sont de l'ordre du kilooctet, mais la publication du module MOVE peut atteindre plusieurs kilooctets. Initialement, la taille des transactions était fixée à 32 Ko, puis ajustée à 64 Ko en fonction des retours de la communauté.
Des transactions de grande envergure augmenteront le coût de la bande passante du réseau et pourraient affecter la performance. La mémoire tampon tendra à ignorer les transactions de plus grande taille, il est donc nécessaire de trouver un équilibre entre la taille maximale et l'accessibilité.
3. Unité MAXIMUM de GAS
L'unité maximale de GAS définie dans le plan GAS détermine le nombre maximum d'opérations pouvant être exécutées dans une transaction. Un réglage trop élevé peut entraîner des impacts négatifs sur les performances, tels que des boucles infinies. Les tests ont révélé qu même après la mise à niveau du cadre au maximum, cela ne représente pas 90 % de l'unité maximale de GAS définie (1,000,000).
4. Exécution
L'équipe a construit un cadre de référence et utilisé des outils d'analyse pour évaluer le coût d'exécution, estimant grossièrement le coût relatif de toutes les instructions MOVE et des fonctions natives. En tenant compte des exemples de codage qui améliorent la robustesse et la sécurité du système, elle a déterminé le nombre final d'instructions machine exécutées.
5. Stockage
Lorsqu'un nœud accède à des éléments d'état ou à des données du registre, il envoie des requêtes de lecture et d'écriture à l'appareil de stockage. Le nombre total d'accès aux données est limité par la bande passante de l'appareil de stockage et la capacité IOPS. L'équipe prend en compte ces coûts pour concevoir le plan de stockage GAS.
L'accès et le stockage des éléments d'état entraînent des coûts associés à la structure de données liée à la vérification de l'état complet de la blockchain. La formule de calcul des frais est :
Frais de stockage GAS = frais de projet + ( frais par octet × nombre d'octets )
lire, créer et écrire
L'accès aux éléments d'état se divise en trois types : lecture, création et écriture.
Les coûts liés au stockage sont évalués par transaction, et les frais ne sont facturés qu'une seule fois pour plusieurs lectures et écritures des mêmes ressources.
L'équipe a défini 6 paramètres GAS constituant le coût total du GAS :
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. Le coût unitaire fixe du GAS aide à maintenir le plan GAS constant et à le découpler de la valeur marchande des jetons natifs.
L'équipe exprime l'unité de GAS avec une précision d'environ 3 chiffres, par exemple le coût des transactions de transfert est d'environ 700 unités de GAS.
participation communautaire
Les membres de la communauté peuvent:
Comment ajuster le coût du GAS ?
Le plan GAS est stocké hors chaîne et peut être modifié par des propositions de gouvernance, avec la possibilité d'ajouter sans couture de nouvelles instructions ou fonctionnalités.
Le plan GAS est conçu pour être évolutif, permettant des mises à niveau via des propositions de gouvernance. Avec l'amélioration du projet et l'intégration des retours des utilisateurs, les paramètres GAS peuvent être ajustés progressivement.
Les modifications complexes des formules de GAS nécessitent une mise à jour du logiciel des nœuds, et après une adoption à grande échelle, l'utilisation de la nouvelle version sera approuvée par des propositions de gouvernance.
Travail futur
En tant que premier cadre GAS viable de Move, ce projet jette les bases des travaux futurs :