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 :
Définir les principes
Préparer le cadre d'évaluation, déterminer le prix de chaque exécution
Établir un système de mesure du GAS et une algèbre du GAS 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 comprennent :
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.
GAS doit être configuré par la gouvernance off-chain, et peut être configuré sans couture.
GAS peut prévenir les attaques DoS, il peut s'ajuster rapidement en fonction de la situation du réseau.
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.
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 :
Coûts fixes
Coût d'exécution de l'instruction MOVE
Coût de la lecture des données à partir du stockage persistant
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
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.
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é.
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.
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.
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 :
Trouver les incohérences du plan GAS
Exprimer des préoccupations et participer à la discussion
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 :
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.
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.
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.
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.
6 J'aime
Récompense
6
5
Partager
Commentaire
0/400
rugged_again
· 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
MetaverseMigrant
· Il y a 9h
Zut, ce gas peut-il devenir encore plus compliqué ?
Voir l'originalRépondre0
NewDAOdreamer
· Il y a 9h
Recevoir de l'argent à l'envers est aussi la douleur d'une vie de coder.
Conception innovante de GAS par MOVE : Analyse de la méthode de calcul de la consommation des ressources off-chain.
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 :
principe
Les principes définis comprennent :
calcul de GAS
L'utilisateur doit spécifier lors de la soumission d'une transaction :
Des frais seront appliqués lors de l'exécution de la transaction :
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
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.
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é.
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.
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.
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 :
) 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 :
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 :
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.
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.
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.