Conception du premier GAS pour le langage MOVE : analyse de la méthode de calcul des frais de GAS off-chain
La première version du langage MOVE était initialement prévue pour fonctionner dans un environnement sans GAS, et n'était donc pas préparée pour le mécanisme GAS. Récemment, une équipe de blockchain publique a conçu le premier plan GAS pour le langage MOVE sur sa blockchain, ce qui est considéré comme une "tentative audacieuse".
Dans ce plan GAS, l'équipe de rédaction a exposé les principes de conception, le processus de mise en œuvre, la méthode de calcul du GAS, le mécanisme d'ajustement ultérieur et a exprimé son souhait de recevoir des suggestions de la part de la communauté.
La mesure du GAS est un concept fondamental de nombreuses blockchains, qui définit de manière abstraite la quantité de ressources de calcul et de stockage nécessaires pour exécuter et stocker des transactions on-chain. Le schéma de GAS détermine le coût de toutes les opérations exécutées on-chain, utilisé pour calculer les dépenses en GAS pendant l'exécution des transactions.
processus d'implémentation
Pour une exécution efficace, le processus off-chain comprend :
Définir les principes de conception
Préparer le cadre d'évaluation, déterminer le prix de chaque opération exécutée
É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 dans la chaîne de blocs
Rendre le cadre GAS capable de percevoir le stockage
Optimiser davantage le plan GAS
principes de conception
Les coûts d'opération devraient être directement liés aux ressources disponibles sur le réseau (comme le CPU, la mémoire, le réseau, le stockage I/O et l'utilisation de l'espace, etc.). Avec les améliorations technologiques et des processus, le coût du GAS devrait diminuer en conséquence.
GAS doit être configuré par la gouvernance off-chain et peut être configuré sans couture.
GAS peut prévenir les attaques DoS sur les ressources fixes du réseau et peut être rapidement ajusté par la gouvernance en fonction de la situation du réseau.
Le prix du GAS devrait refléter la vision d'une croissance accélérée et du maintien de la popularité de la blockchain.
Encourager à faire des choix excellents dans la conception, tels que privilégier la sécurité, la modularité et les assertions.
méthode de calcul GAS
L'utilisateur doit spécifier deux valeurs lors de la soumission de la transaction :
Quantité maximale de GAS : le nombre maximal d'unités de GAS que l'utilisateur est prêt à payer pour exécuter une transaction.
Prix unitaire du GAS : calculé en octal par unité de GAS, 1 octal = 0.00000001 jeton natif.
Des frais seront appliqués lors de l'exécution de la transaction :
Coûts fixes : frais de base plus les frais supplémentaires pour les grosses transactions
Coût d'exécution : utilisé pour exécuter des instructions MOVE
Coût de lecture : frais de lecture des données à partir du stockage persistant
Coût d'écriture : le coût d'écriture des données dans un stockage persistant
Frais de transaction final = Quantité totale de GAS consommée × Prix du GAS
Par exemple, une transaction consomme 670 unités de GAS, le prix du GAS spécifié par l'utilisateur est de 100 Octa/unité, donc le coût final est de 670 × 100 = 67000 Octa = 0,00067 jetons natifs.
Si le GAS s'épuise pendant l'exécution de la transaction, l'expéditeur sera facturé selon la quantité maximale de GAS, et toutes les modifications seront annulées.
Explication détaillée du plan GAS
Configuration de base
Le plan GAS comprend certains composants qui ne sont pas liés à une opération unique, tels que la taille de la transaction et le maximum d'unités de GAS.
Taille de la transaction
La plupart des tailles de transaction sont au niveau du kilooctet. La publication du module Move peut atteindre quelques kilooctets, tandis qu'un certain cadre est d'environ 100 Ko. Les modules utilisateurs varient généralement entre 4 Ko et 40 Ko. La taille initiale de la transaction est fixée à 32 Ko, puis ajustée à 64 Ko en fonction des retours de la communauté, afin de simplifier le développement des applications.
Des transactions trop importantes augmenteront le coût de la bande passante du réseau et pourraient affecter les performances. Pour équilibrer l'échelle et l'accessibilité, le pool de mémoire pourrait ignorer les transactions trop volumineuses.
Maximum unité de GAS
La définition de l'unité maximale de GAS dans le plan GAS détermine le nombre maximal d'opérations pouvant être exécutées par une seule transaction. Cela diffère de la quantité maximale de GAS spécifiée par l'utilisateur. Un réglage trop élevé peut entraîner des problèmes de performance, tels que des boucles infinies. Actuellement, même lors de la mise à niveau de cadre à grande échelle, moins de 90 % de l'unité maximale de GAS (fixée à 1 000 000) est utilisée.
Évaluation des coûts d'exécution
L'équipe utilise un cadre de référence et l'outil d'analyse Valgrind pour évaluer le coût d'exécution, en déterminant le coût relatif des 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, le nombre final d'instructions machine exécutées a été déterminé.
Coût de stockage
Le plan de stockage de GAS prend en compte la bande passante d'accès aux données, la capacité IOPS ainsi que le coût de stockage permanent. L'accès à tout élément d'état implique des coûts liés à la vérification de l'état de la blockchain. La formule de calcul des frais de stockage de GAS est :
Frais de stockage de GAS = Frais de projet + ( frais par octet × Nombre d'octets )
Lire, créer et écrire des opérations
Lecture : opération la plus courante, calibrage des frais en fonction des IOPS du disque et de la capacité de bande passante.
Création : Ajout de nouveaux éléments dans le stockage d'état, coût maximal, calibré en fonction de l'espace disque du réseau.
Écriture : mettre à jour un élément existant, les frais en octets sont les mêmes que pour la création.
Les coûts de stockage sont évalués sur la base de chaque transaction, même si la même ressource est lue/écrite plusieurs fois, des frais ne sont facturés qu'une seule fois.
participation communautaire
En tant que projet communautaire, les membres peuvent :
Indiquer les incohérences dans le plan GAS.
Exprimer des préoccupations et participer à la discussion
Voter sur les propositions de gouvernance pertinentes
ajustement des coûts de GAS
Le plan GAS, en tant que stockage de configuration off-chain, peut être modifié par des propositions de gouvernance. Il est conçu pour être évolutif, permettant des mises à niveau via la gouvernance. Avec les avancées technologiques et les retours des utilisateurs, les paramètres GAS peuvent être ajustés au fil du temps.
Des modifications complexes des formules de GAS peuvent nécessiter une mise à jour du logiciel des nœuds, et être différenciées par de nouveaux indicateurs de caractéristiques de GAS. Cela nécessite une adoption large de la nouvelle version par les opérateurs de nœuds, et l'approbation de son utilisation par des propositions de gouvernance.
Travail futur
En tant que premier cadre de GAS pour le langage MOVE, cette conception jette les bases pour le travail futur :
Réduire les coûts d'exécution : en améliorant l'efficacité du compilateur et de la machine virtuelle.
Calcul GAS multidimensionnel : permet aux utilisateurs de spécifier des budgets séparés pour l'exécution et le stockage, réalisant ainsi une définition de prix maximum du GAS plus granulaire.
Atténuer l'expansion des états : explorer le concept de TTL pour chaque projet, en supprimant automatiquement les éléments d'état non visités à l'expiration du TTL, afin d'encourager les développeurs à nettoyer les données off-chain.
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.
16 J'aime
Récompense
16
5
Partager
Commentaire
0/400
GateUser-3824aa38
· 07-06 09:00
Économiser le gas, c'est tout.
Voir l'originalRépondre0
CascadingDipBuyer
· 07-06 08:56
bull ah enfin quelqu'un s'occupe du gas
Voir l'originalRépondre0
GigaBrainAnon
· 07-06 08:54
Ce gas est trop fort, il est si cher que mes jambes fléchissent.
Voir l'originalRépondre0
ZkSnarker
· 07-06 08:53
techniquement, ce modèle de gas n'est que zkvm avec des étapes supplémentaires
Mécanisme GAS innové par le langage MOVE : analyse complète du plan de facturation des ressources off-chain
Conception du premier GAS pour le langage MOVE : analyse de la méthode de calcul des frais de GAS off-chain
La première version du langage MOVE était initialement prévue pour fonctionner dans un environnement sans GAS, et n'était donc pas préparée pour le mécanisme GAS. Récemment, une équipe de blockchain publique a conçu le premier plan GAS pour le langage MOVE sur sa blockchain, ce qui est considéré comme une "tentative audacieuse".
Dans ce plan GAS, l'équipe de rédaction a exposé les principes de conception, le processus de mise en œuvre, la méthode de calcul du GAS, le mécanisme d'ajustement ultérieur et a exprimé son souhait de recevoir des suggestions de la part de la communauté.
La mesure du GAS est un concept fondamental de nombreuses blockchains, qui définit de manière abstraite la quantité de ressources de calcul et de stockage nécessaires pour exécuter et stocker des transactions on-chain. Le schéma de GAS détermine le coût de toutes les opérations exécutées on-chain, utilisé pour calculer les dépenses en GAS pendant l'exécution des transactions.
processus d'implémentation
Pour une exécution efficace, le processus off-chain comprend :
principes de conception
Les coûts d'opération devraient être directement liés aux ressources disponibles sur le réseau (comme le CPU, la mémoire, le réseau, le stockage I/O et l'utilisation de l'espace, etc.). Avec les améliorations technologiques et des processus, le coût du GAS devrait diminuer en conséquence.
GAS doit être configuré par la gouvernance off-chain et peut être configuré sans couture.
GAS peut prévenir les attaques DoS sur les ressources fixes du réseau et peut être rapidement ajusté par la gouvernance en fonction de la situation du réseau.
Le prix du GAS devrait refléter la vision d'une croissance accélérée et du maintien de la popularité de la blockchain.
Encourager à faire des choix excellents dans la conception, tels que privilégier la sécurité, la modularité et les assertions.
méthode de calcul GAS
L'utilisateur doit spécifier deux valeurs lors de la soumission de la 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 du GAS
Par exemple, une transaction consomme 670 unités de GAS, le prix du GAS spécifié par l'utilisateur est de 100 Octa/unité, donc le coût final est de 670 × 100 = 67000 Octa = 0,00067 jetons natifs.
Si le GAS s'épuise pendant l'exécution de la transaction, l'expéditeur sera facturé selon la quantité maximale de GAS, et toutes les modifications seront annulées.
Explication détaillée du plan GAS
Le plan GAS comprend certains composants qui ne sont pas liés à une opération unique, tels que la taille de la transaction et le maximum d'unités de GAS.
La plupart des tailles de transaction sont au niveau du kilooctet. La publication du module Move peut atteindre quelques kilooctets, tandis qu'un certain cadre est d'environ 100 Ko. Les modules utilisateurs varient généralement entre 4 Ko et 40 Ko. La taille initiale de la transaction est fixée à 32 Ko, puis ajustée à 64 Ko en fonction des retours de la communauté, afin de simplifier le développement des applications.
Des transactions trop importantes augmenteront le coût de la bande passante du réseau et pourraient affecter les performances. Pour équilibrer l'échelle et l'accessibilité, le pool de mémoire pourrait ignorer les transactions trop volumineuses.
La définition de l'unité maximale de GAS dans le plan GAS détermine le nombre maximal d'opérations pouvant être exécutées par une seule transaction. Cela diffère de la quantité maximale de GAS spécifiée par l'utilisateur. Un réglage trop élevé peut entraîner des problèmes de performance, tels que des boucles infinies. Actuellement, même lors de la mise à niveau de cadre à grande échelle, moins de 90 % de l'unité maximale de GAS (fixée à 1 000 000) est utilisée.
L'équipe utilise un cadre de référence et l'outil d'analyse Valgrind pour évaluer le coût d'exécution, en déterminant le coût relatif des 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, le nombre final d'instructions machine exécutées a été déterminé.
Le plan de stockage de GAS prend en compte la bande passante d'accès aux données, la capacité IOPS ainsi que le coût de stockage permanent. L'accès à tout élément d'état implique des coûts liés à la vérification de l'état de la blockchain. La formule de calcul des frais de stockage de GAS est :
Frais de stockage de GAS = Frais de projet + ( frais par octet × Nombre d'octets )
Les coûts de stockage sont évalués sur la base de chaque transaction, même si la même ressource est lue/écrite plusieurs fois, des frais ne sont facturés qu'une seule fois.
participation communautaire
En tant que projet communautaire, les membres peuvent :
ajustement des coûts de GAS
Le plan GAS, en tant que stockage de configuration off-chain, peut être modifié par des propositions de gouvernance. Il est conçu pour être évolutif, permettant des mises à niveau via la gouvernance. Avec les avancées technologiques et les retours des utilisateurs, les paramètres GAS peuvent être ajustés au fil du temps.
Des modifications complexes des formules de GAS peuvent nécessiter une mise à jour du logiciel des nœuds, et être différenciées par de nouveaux indicateurs de caractéristiques de GAS. Cela nécessite une adoption large de la nouvelle version par les opérateurs de nœuds, et l'approbation de son utilisation par des propositions de gouvernance.
Travail futur
En tant que premier cadre de GAS pour le langage MOVE, cette conception jette les bases pour le travail futur :
Réduire les coûts d'exécution : en améliorant l'efficacité du compilateur et de la machine virtuelle.
Calcul GAS multidimensionnel : permet aux utilisateurs de spécifier des budgets séparés pour l'exécution et le stockage, réalisant ainsi une définition de prix maximum du GAS plus granulaire.
Atténuer l'expansion des états : explorer le concept de TTL pour chaque projet, en supprimant automatiquement les éléments d'état non visités à l'expiration du TTL, afin d'encourager les développeurs à nettoyer les données off-chain.