Diseño de GAS en el lenguaje MOVE: Análisis del método de cálculo del gasto de GAS on-chain
La versión temprana del lenguaje MOVE estaba originalmente planeada para funcionar en un entorno sin GAS, por lo que no estaba preparada para el mecanismo de GAS. Recientemente, un equipo de una cadena pública diseñó el primer esquema de GAS para el lenguaje MOVE en su blockchain, lo que se considera un "intento arriesgado".
En este esquema de GAS, el equipo de redacción expone los principios de diseño, el proceso de implementación, el método de cálculo de GAS y el mecanismo de ajuste posterior, y expresa su bienvenida a las sugerencias de la comunidad.
La medición de GAS es un concepto básico de muchas blockchains, que define de manera abstracta la cantidad de recursos computacionales y de almacenamiento necesarios para ejecutar y almacenar transacciones en la cadena. El esquema de GAS determina el costo de todas las operaciones ejecutadas en la cadena, utilizado para calcular el gasto de GAS durante la ejecución de la transacción.
proceso de implementación
Para llevar a cabo de manera efectiva, el proceso en la cadena incluye:
Definir principios de diseño
Preparar el marco de evaluación, determinar el precio de cada operación de ejecución.
Establecer un sistema de medición de GAS y álgebra de GAS seguro para MOVE
Importar el marco GAS de upstream a la cadena de bloques
Hacer que el marco GAS tenga capacidad de almacenamiento consciente
Optimizar aún más el plan de GAS
Principios de diseño
El costo de operación debe estar directamente relacionado con los recursos disponibles de la red (como CPU, memoria, red, almacenamiento I/O y uso del espacio, etc.). Con las mejoras en la tecnología y los procesos, el costo de GAS debe disminuir en consecuencia.
GAS debe ser configurado por la gobernanza on-chain y se puede configurar sin problemas.
GAS puede prevenir ataques DoS a los recursos fijos de la red y puede ajustarse rápidamente a las condiciones de la red a través de la gobernanza.
El precio del GAS debe reflejar la visión de acelerar el crecimiento y mantener la popularidad de la blockchain.
Fomentar la realización de elecciones excelentes en el diseño, como priorizar la seguridad, la modularidad y las afirmaciones, entre otros.
método de cálculo de GAS
El usuario debe especificar dos valores al enviar la transacción:
Cantidad máxima de GAS: el número máximo de unidades de GAS que el usuario está dispuesto a pagar para ejecutar la transacción.
Precio unitario de GAS: se calcula en octal por unidad de GAS, 1 octal = 0.00000001 token nativo.
Se cobrará durante el proceso de ejecución de la transacción:
Costos fijos: costos básicos más tarifas adicionales por transacciones grandes
Costo de ejecución: utilizado para ejecutar instrucciones MOVE
Costo de lectura: el costo de leer datos desde el almacenamiento persistente
Costo de escritura: el costo de escribir datos en almacenamiento persistente
Tarifa de transacción final = Total de GAS consumido × Precio del GAS
Por ejemplo, una transacción consume 670 unidades de GAS, y el precio del GAS especificado por el usuario es de 100 Octa/unidad, por lo tanto, el costo final es 670 × 100 = 67000 Octa = 0.00067 tokens nativos.
Si se agota el GAS durante la ejecución de la transacción, el remitente será cobrado por la cantidad máxima de GAS, y todos los cambios serán revertidos.
Detalles del plan GAS
Configuración básica
El plan de GAS incluye algunos componentes que no están relacionados con una sola operación, como el tamaño de la transacción y la unidad máxima de GAS.
Escala de transacciones
La mayoría de los tamaños de las transacciones están en el nivel de kilobytes. La publicación del módulo MOVE puede alcanzar varios kilobytes, mientras que un marco determinado es de aproximadamente 100KB. Los módulos de usuario generalmente están entre 4KB y 40KB. El tamaño inicial de la transacción se establece en 32KB, que luego se ajusta a 64KB según los comentarios de la comunidad, para simplificar el desarrollo de aplicaciones.
Las transacciones excesivamente grandes aumentarán el costo de ancho de banda de la red y pueden afectar el rendimiento. Para equilibrar la escala y la accesibilidad, el mempool puede ignorar transacciones demasiado grandes.
Máxima unidad de GAS
La unidad máxima de GAS en el plan de GAS define el número máximo de operaciones que se pueden ejecutar en una sola transacción. Esto es diferente de la cantidad máxima de GAS especificada por el usuario. Establecer un límite demasiado alto puede causar problemas de rendimiento, como ciclos infinitos. Actualmente, incluso con la actualización del marco a gran escala, se utiliza menos del 90% de la unidad máxima de GAS (establecida en 1,000,000).
Evaluación de costos de ejecución
El equipo utilizó un marco de referencia y la herramienta de análisis Valgrind para evaluar los costos de ejecución, obteniendo los costos relativos de las instrucciones MOVE y las funciones nativas. Al considerar ejemplos de codificación que mejoran la robustez y la seguridad del sistema, se determinó el número final de instrucciones de máquina ejecutadas.
Costos de almacenamiento
El plan de almacenamiento de GAS considera el ancho de banda de acceso a datos, la capacidad de IOPS y el costo de almacenamiento permanente. Acceder a cualquier elemento de estado implica costos relacionados con la verificación del estado de la blockchain. La fórmula para calcular los costos de almacenamiento de GAS es:
Almacenamiento de tarifas de GAS = tarifa del proyecto + ( tarifa por byte × número de bytes )
Operaciones de lectura, creación y escritura
Lectura: la operación más común, calibrando los costos según el IOPS y la capacidad de ancho de banda del disco.
Crear: añadir un nuevo elemento en el almacenamiento de estado, el costo más alto, calibrado según el espacio en disco de la red.
Escribir: actualizar elementos existentes, el costo en bytes es el mismo que al crear.
Los costos relacionados con el almacenamiento se evalúan en función de cada transacción, y aunque se lea/escriba el mismo recurso varias veces, solo se cobrará una vez.
participación de la comunidad
Como proyecto comunitario, los miembros pueden:
Señalar las irregularidades en el plan de GAS
Expresar preocupaciones y participar en la discusión
Votar sobre las propuestas de gobernanza relacionadas
ajuste del costo de GAS
La solución GAS, como almacenamiento de configuración on-chain, puede ser modificada a través de propuestas de gobernanza. Está diseñada para ser escalable, permitiendo actualizaciones a través de la gobernanza. Con el avance de la tecnología y los comentarios de los usuarios, los parámetros de GAS se pueden ajustar con el tiempo.
Los cambios complejos en la fórmula de GAS pueden requerir la actualización del software del nodo y distinguirse mediante nuevas banderas de características de GAS. Esto requiere que los operadores de nodos adopten ampliamente la nueva versión y aprueben su uso a través de propuestas de gobernanza.
trabajo futuro
Como el primer marco de GAS para el lenguaje MOVE, este diseño sienta las bases para el trabajo futuro:
Reducir los costos de ejecución: mejorando la eficiencia del compilador y la máquina virtual.
Cálculo de GAS multidimensional: permite a los usuarios especificar presupuestos separados para la ejecución y el almacenamiento, logrando una definición de precio máximo de GAS más granular.
Mitigación de la expansión del estado: explorar el concepto de TTL de cada proyecto, eliminando automáticamente los elementos de estado no visitados cuando expire el TTL, para alentar a los desarrolladores a limpiar los datos on-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.
14 me gusta
Recompensa
14
5
Compartir
Comentar
0/400
GateUser-3824aa38
· 07-06 09:00
Ahorrar gas es todo lo que se necesita.
Ver originalesResponder0
CascadingDipBuyer
· 07-06 08:56
alcista ah finalmente hay alguien que se ocupa del gas
Ver originalesResponder0
GigaBrainAnon
· 07-06 08:54
Este gas es demasiado fuerte, tan caro que me deja las piernas débiles.
Ver originalesResponder0
ZkSnarker
· 07-06 08:53
bueno, técnicamente este modelo de gas es solo zkvm con pasos adicionales
Ver originalesResponder0
RugpullAlertOfficer
· 07-06 08:38
¿Qué nueva forma de jugar ha salido que puede hacer un Rug Pull?
Análisis completo del mecanismo GAS innovador del lenguaje MOVE: solución de facturación de recursos on-chain
Diseño de GAS en el lenguaje MOVE: Análisis del método de cálculo del gasto de GAS on-chain
La versión temprana del lenguaje MOVE estaba originalmente planeada para funcionar en un entorno sin GAS, por lo que no estaba preparada para el mecanismo de GAS. Recientemente, un equipo de una cadena pública diseñó el primer esquema de GAS para el lenguaje MOVE en su blockchain, lo que se considera un "intento arriesgado".
En este esquema de GAS, el equipo de redacción expone los principios de diseño, el proceso de implementación, el método de cálculo de GAS y el mecanismo de ajuste posterior, y expresa su bienvenida a las sugerencias de la comunidad.
La medición de GAS es un concepto básico de muchas blockchains, que define de manera abstracta la cantidad de recursos computacionales y de almacenamiento necesarios para ejecutar y almacenar transacciones en la cadena. El esquema de GAS determina el costo de todas las operaciones ejecutadas en la cadena, utilizado para calcular el gasto de GAS durante la ejecución de la transacción.
proceso de implementación
Para llevar a cabo de manera efectiva, el proceso en la cadena incluye:
Principios de diseño
El costo de operación debe estar directamente relacionado con los recursos disponibles de la red (como CPU, memoria, red, almacenamiento I/O y uso del espacio, etc.). Con las mejoras en la tecnología y los procesos, el costo de GAS debe disminuir en consecuencia.
GAS debe ser configurado por la gobernanza on-chain y se puede configurar sin problemas.
GAS puede prevenir ataques DoS a los recursos fijos de la red y puede ajustarse rápidamente a las condiciones de la red a través de la gobernanza.
El precio del GAS debe reflejar la visión de acelerar el crecimiento y mantener la popularidad de la blockchain.
Fomentar la realización de elecciones excelentes en el diseño, como priorizar la seguridad, la modularidad y las afirmaciones, entre otros.
método de cálculo de GAS
El usuario debe especificar dos valores al enviar la transacción:
Se cobrará durante el proceso de ejecución de la transacción:
Tarifa de transacción final = Total de GAS consumido × Precio del GAS
Por ejemplo, una transacción consume 670 unidades de GAS, y el precio del GAS especificado por el usuario es de 100 Octa/unidad, por lo tanto, el costo final es 670 × 100 = 67000 Octa = 0.00067 tokens nativos.
Si se agota el GAS durante la ejecución de la transacción, el remitente será cobrado por la cantidad máxima de GAS, y todos los cambios serán revertidos.
Detalles del plan GAS
El plan de GAS incluye algunos componentes que no están relacionados con una sola operación, como el tamaño de la transacción y la unidad máxima de GAS.
La mayoría de los tamaños de las transacciones están en el nivel de kilobytes. La publicación del módulo MOVE puede alcanzar varios kilobytes, mientras que un marco determinado es de aproximadamente 100KB. Los módulos de usuario generalmente están entre 4KB y 40KB. El tamaño inicial de la transacción se establece en 32KB, que luego se ajusta a 64KB según los comentarios de la comunidad, para simplificar el desarrollo de aplicaciones.
Las transacciones excesivamente grandes aumentarán el costo de ancho de banda de la red y pueden afectar el rendimiento. Para equilibrar la escala y la accesibilidad, el mempool puede ignorar transacciones demasiado grandes.
La unidad máxima de GAS en el plan de GAS define el número máximo de operaciones que se pueden ejecutar en una sola transacción. Esto es diferente de la cantidad máxima de GAS especificada por el usuario. Establecer un límite demasiado alto puede causar problemas de rendimiento, como ciclos infinitos. Actualmente, incluso con la actualización del marco a gran escala, se utiliza menos del 90% de la unidad máxima de GAS (establecida en 1,000,000).
El equipo utilizó un marco de referencia y la herramienta de análisis Valgrind para evaluar los costos de ejecución, obteniendo los costos relativos de las instrucciones MOVE y las funciones nativas. Al considerar ejemplos de codificación que mejoran la robustez y la seguridad del sistema, se determinó el número final de instrucciones de máquina ejecutadas.
El plan de almacenamiento de GAS considera el ancho de banda de acceso a datos, la capacidad de IOPS y el costo de almacenamiento permanente. Acceder a cualquier elemento de estado implica costos relacionados con la verificación del estado de la blockchain. La fórmula para calcular los costos de almacenamiento de GAS es:
Almacenamiento de tarifas de GAS = tarifa del proyecto + ( tarifa por byte × número de bytes )
Los costos relacionados con el almacenamiento se evalúan en función de cada transacción, y aunque se lea/escriba el mismo recurso varias veces, solo se cobrará una vez.
participación de la comunidad
Como proyecto comunitario, los miembros pueden:
ajuste del costo de GAS
La solución GAS, como almacenamiento de configuración on-chain, puede ser modificada a través de propuestas de gobernanza. Está diseñada para ser escalable, permitiendo actualizaciones a través de la gobernanza. Con el avance de la tecnología y los comentarios de los usuarios, los parámetros de GAS se pueden ajustar con el tiempo.
Los cambios complejos en la fórmula de GAS pueden requerir la actualización del software del nodo y distinguirse mediante nuevas banderas de características de GAS. Esto requiere que los operadores de nodos adopten ampliamente la nueva versión y aprueben su uso a través de propuestas de gobernanza.
trabajo futuro
Como el primer marco de GAS para el lenguaje MOVE, este diseño sienta las bases para el trabajo futuro:
Reducir los costos de ejecución: mejorando la eficiencia del compilador y la máquina virtual.
Cálculo de GAS multidimensional: permite a los usuarios especificar presupuestos separados para la ejecución y el almacenamiento, logrando una definición de precio máximo de GAS más granular.
Mitigación de la expansión del estado: explorar el concepto de TTL de cada proyecto, eliminando automáticamente los elementos de estado no visitados cuando expire el TTL, para alentar a los desarrolladores a limpiar los datos on-chain.