Primer diseño de GAS en el lenguaje MOVE: método de cálculo del gasto de GAS on-chain
La última versión del lenguaje MOVE originalmente estaba destinada a funcionar sin GAS, por lo que no se preparó para un plan de GAS. El plan de GAS recientemente establecido para una cadena pública es el primer diseño de GAS del lenguaje MOVE, conocido como "una aventura".
Este plan de GAS explica los principios, procesos, métodos de cálculo, ajustes posteriores y la aceptación de sugerencias de la comunidad relacionadas con la elaboración del GAS.
La medición de GAS es un concepto básico de muchas blockchains, define el cálculo abstracto de la cantidad de recursos de computación y almacenamiento necesarios para ejecutar y almacenar transacciones on-chain. El plan de GAS determina el costo de todos los consumos de ejecución on-chain, utilizado para calcular el gasto de GAS durante la ejecución de transacciones.
proceso
Para una ejecución efectiva, el proceso on-chain es el siguiente:
Principios de definición
Preparar el marco de evaluación, determinar el precio de cada ejecución
Establecer un sistema de medición de GAS y un álgebra de GAS seguro para MOVE
Importar marco GAS de upstream
Hacer que el marco GAS tenga conciencia de almacenamiento
Refinar aún más el plan de GAS
principios
Los principios definidos incluyen:
El costo de operación debe estar directamente relacionado con los recursos disponibles en la red y disminuir con el avance tecnológico.
GAS debe ser configurado por la gobernanza on-chain, y se puede configurar sin problemas.
GAS puede prevenir ataques DoS y puede ajustarse rápidamente según las condiciones de la red.
El precio del GAS debe reflejar la visión de un crecimiento acelerado y de mantener la accesibilidad de la blockchain.
Fomentar buenas elecciones en el diseño, como priorizar la seguridad, la modularidad, etc.
cálculo de GAS
El usuario debe especificar 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 gastar para ejecutar la transacción
Precio del GAS: calculado en octal por unidad de GAS, 1 octal = 0.00000001 APT
Se cobrará durante el proceso de ejecución de la transacción:
Costos fijos
Costo de ejecutar la instrucción MOVE
Costo de leer datos desde el almacenamiento persistente
Costo de escribir datos en almacenamiento persistente
Costo final de la transacción = Cantidad total de GAS consumido × Precio del GAS
Por ejemplo, si una transacción consume 670 unidades de GAS y el precio unitario de GAS especificado por el usuario es de 100 Octa/unidad, entonces la tarifa final es 670 × 100 = 67000 Octa = 0.00067 APT.
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 los cambios realizados en la transacción serán revertidos.
Establecimiento de la tabla de planes de GAS ###
Configuración básica
El plan de GAS incluye componentes que no están relacionados con una operación única, como el tamaño de la transacción y la unidad máxima de GAS.
Escala de transacción
La mayoría de las transacciones tienen un tamaño de nivel de kilobyte. El módulo Move puede alcanzar varios kilobytes, mientras que un marco es de aproximadamente 100 KB. Los módulos de usuario suelen estar entre 4 y 40 KB. El tamaño de transacción se estableció inicialmente en 32 KB, y luego se ajustó a 64 KB según los comentarios de la comunidad.
Las transacciones de gran escala aumentarán los costos de ancho de banda de la red y pueden afectar el rendimiento. El pool de memoria puede ignorar transacciones de gran tamaño, por lo que es necesario encontrar un equilibrio entre la escala máxima y la accesibilidad.
Unidad máxima de GAS
La unidad máxima de GAS definida en el plan de GAS establece el número máximo de operaciones que se pueden ejecutar en una sola transacción. Un ajuste demasiado alto puede tener un impacto negativo en el rendimiento de la blockchain. Según las pruebas, incluso con la actualización máxima del marco, se utiliza menos del 90% de la unidad máxima de GAS ( establecida en 1,000,000 ).
Ejecutar
A través de la construcción de un marco de referencia y el uso de Valgrind para analizar el Move VM, se evalúan los costos de ejecución. La salida es el código fuente comentado, que muestra el número de instrucciones de máquina generadas por cada línea de código.
De acuerdo con esto, se estima de manera aproximada el costo relativo de todas las instrucciones MOVE y las funciones nativas. Se observa que hay algunos problemas con las funciones en línea, que se pueden resolver mediante la suma de números.
Finalmente, al considerar ejemplos de codificación que mejoren la robustez y seguridad del sistema, se obtiene la cantidad de instrucciones máquina ejecutadas. Compare este número con el almacenamiento y la unidad máxima de GAS, para determinar el valor actual en el plan de GAS.
Almacenamiento
Al acceder a elementos de estado del libro mayor o datos, los nodos emiten solicitudes de lectura y escritura a los dispositivos de almacenamiento. El número total de accesos a datos por segundo depende del ancho de banda del dispositivo de almacenamiento y la capacidad de IOPS. El acceso a datos es un recurso escaso y momentáneo que los usuarios compiten en el mercado de tarifas durante la carga del sistema. El costo de ocupación del disco para escribir datos es permanente en on-chain.
Acceder y almacenar cualquier elemento de estado implica un costo asociado a la estructura de datos relacionada con la verificación del estado completo de la blockchain. Este costo está relacionado con la cardinalidad de los diferentes elementos de estado ($2^{256}$). También hay un costo que es proporcional al tamaño de cada elemento.
Los cargos por operaciones de elementos de estado, excepto en los casos excepcionales descritos en la siguiente sección (, son:
Almacenamiento de tarifas GAS = item_fee + )byte_fee × bytes(
) leer, crear y escribir
El acceso a los elementos de estado se divide en tres tipos: lectura, creación o escritura. El acceso se cobra según el costo del proyecto y el costo por byte.
Las operaciones de lectura son las más comunes, limitadas únicamente por la escasez temporal de recursos. Los costos de lectura se calibran según el IOPS del disco y la capacidad de ancho de banda de las especificaciones de hardware de referencia.
La operación de creación agrega nuevos elementos al almacenamiento de estado, aumentando el costo de la estructura de datos de autenticación, por lo que es la más costosa. La tarifa de creación se calibra según el espacio en disco de referencia que posee la red.
Las operaciones de escritura actualizan los elementos existentes, sin generar sobrecostos en la estructura de datos de autenticación. Sin embargo, modificar entradas existentes a un mayor tamaño en bytes aún puede ocupar espacio en disco, por lo que se cobra la misma tarifa por los bytes en los elementos actualizados que por la creación.
Los costos relacionados con el almacenamiento se evalúan por cada transacción: incluso si se lee/escribe el mismo recurso varias veces, solo se cobrará una vez.
Con base en lo anterior, se definen 6 parámetros de GAS que componen el costo total:
per_item_read:calibración según IOPs
per_byte_read: calibrado según el ancho de banda real
per_item_create:calibrar según el total del proyecto objetivo
per_byte_create: Calibrar según el tamaño total objetivo ### cada proyecto incluye el primer 1KB (
per_item_write: igual que per_item_read
per_byte_write: igual que per_byte_create
) costo unitario de GAS estable
Cada operación y transacción en sí misma requiere un costo fijo unitario en relación con los costos de almacenamiento y ejecución, sin importar cuál sea el valor de mercado calculado en APT o moneda fiduciaria. El costo unitario fijo de GAS ayuda a mantener el programa de GAS constante y desacoplado del valor de mercado libre de APT. Elegir correctamente la precisión de los dígitos del costo unitario de GAS ayuda a mantener la estabilidad del programa de GAS. Teniendo esto en cuenta, la unidad de GAS se expresa con una precisión de aproximadamente 3 dígitos. Por lo tanto, el costo de la transacción de transferencia es de aproximadamente 700 unidades de GAS.
participación de la comunidad
Los miembros de la comunidad pueden:
Identificar las irregularidades en el plan de GAS
Expresar preocupaciones y participar en la discusión
Votar sobre las propuestas de gobernanza relacionadas con el GAS
ajuste de costos de GAS
El plan GAS se configura como almacenamiento on-chain, puede ser modificado a través de propuestas de gobernanza y se pueden agregar nuevas instrucciones o funciones nativas sin problemas.
El diseño del plan GAS es escalable y permite actualizaciones a través de propuestas de gobernanza. A medida que se mejora continuamente y se incorporan los comentarios de los usuarios, los parámetros de GAS se pueden ajustar con el tiempo.
A veces, las fórmulas de GAS pueden requerir cambios complejos. Estas fórmulas suelen estar codificadas en Rust y se diferencian por las características de GAS en la cadena. La actualización de estas fórmulas requiere actualizar el software del nodo, una adopción masiva y la aprobación del uso de la nueva versión de GAS a través de propuestas de gobernanza.
trabajo del futuro
Como el primer marco de GAS viable de MOVE, las direcciones de trabajo futuras incluyen:
Reducir los costos de ejecución: utilizar un modelo de GAS real para mostrar la eficiencia del compilador y de la máquina virtual, mejorando para reducir los costos de ejecución.
Cálculo de GAS multidimensional: permite a los usuarios especificar presupuestos separados para la ejecución y el almacenamiento, evitando pagar altos precios de GAS debido a problemas de calidad del código.
Aliviar el estado de sobrecarga: explorar el concepto TTL de cada proyecto, eliminar los elementos de estado no visitados cuando expire el 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 me gusta
Recompensa
6
4
Compartir
Comentar
0/400
rugged_again
· hace17h
¿Cuánto puede reducirse el gas?
Ver originalesResponder0
MetaverseMigrant
· hace18h
¡Vaya! ¿Este gas puede ser más complicado?
Ver originalesResponder0
NewDAOdreamer
· hace18h
Recibir dinero al revés también es el dolor de toda la vida de un coder.
Diseño de GAS pionero de MOVE: Análisis del método de cálculo del consumo de recursos on-chain.
Primer diseño de GAS en el lenguaje MOVE: método de cálculo del gasto de GAS on-chain
La última versión del lenguaje MOVE originalmente estaba destinada a funcionar sin GAS, por lo que no se preparó para un plan de GAS. El plan de GAS recientemente establecido para una cadena pública es el primer diseño de GAS del lenguaje MOVE, conocido como "una aventura".
Este plan de GAS explica los principios, procesos, métodos de cálculo, ajustes posteriores y la aceptación de sugerencias de la comunidad relacionadas con la elaboración del GAS.
La medición de GAS es un concepto básico de muchas blockchains, define el cálculo abstracto de la cantidad de recursos de computación y almacenamiento necesarios para ejecutar y almacenar transacciones on-chain. El plan de GAS determina el costo de todos los consumos de ejecución on-chain, utilizado para calcular el gasto de GAS durante la ejecución de transacciones.
proceso
Para una ejecución efectiva, el proceso on-chain es el siguiente:
principios
Los principios definidos incluyen:
cálculo de GAS
El usuario debe especificar al enviar la transacción:
Se cobrará durante el proceso de ejecución de la transacción:
Costo final de la transacción = Cantidad total de GAS consumido × Precio del GAS
Por ejemplo, si una transacción consume 670 unidades de GAS y el precio unitario de GAS especificado por el usuario es de 100 Octa/unidad, entonces la tarifa final es 670 × 100 = 67000 Octa = 0.00067 APT.
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 los cambios realizados en la transacción serán revertidos.
Establecimiento de la tabla de planes de GAS ###
El plan de GAS incluye componentes que no están relacionados con una operación única, como el tamaño de la transacción y la unidad máxima de GAS.
La mayoría de las transacciones tienen un tamaño de nivel de kilobyte. El módulo Move puede alcanzar varios kilobytes, mientras que un marco es de aproximadamente 100 KB. Los módulos de usuario suelen estar entre 4 y 40 KB. El tamaño de transacción se estableció inicialmente en 32 KB, y luego se ajustó a 64 KB según los comentarios de la comunidad.
Las transacciones de gran escala aumentarán los costos de ancho de banda de la red y pueden afectar el rendimiento. El pool de memoria puede ignorar transacciones de gran tamaño, por lo que es necesario encontrar un equilibrio entre la escala máxima y la accesibilidad.
La unidad máxima de GAS definida en el plan de GAS establece el número máximo de operaciones que se pueden ejecutar en una sola transacción. Un ajuste demasiado alto puede tener un impacto negativo en el rendimiento de la blockchain. Según las pruebas, incluso con la actualización máxima del marco, se utiliza menos del 90% de la unidad máxima de GAS ( establecida en 1,000,000 ).
A través de la construcción de un marco de referencia y el uso de Valgrind para analizar el Move VM, se evalúan los costos de ejecución. La salida es el código fuente comentado, que muestra el número de instrucciones de máquina generadas por cada línea de código.
De acuerdo con esto, se estima de manera aproximada el costo relativo de todas las instrucciones MOVE y las funciones nativas. Se observa que hay algunos problemas con las funciones en línea, que se pueden resolver mediante la suma de números.
Finalmente, al considerar ejemplos de codificación que mejoren la robustez y seguridad del sistema, se obtiene la cantidad de instrucciones máquina ejecutadas. Compare este número con el almacenamiento y la unidad máxima de GAS, para determinar el valor actual en el plan de GAS.
Al acceder a elementos de estado del libro mayor o datos, los nodos emiten solicitudes de lectura y escritura a los dispositivos de almacenamiento. El número total de accesos a datos por segundo depende del ancho de banda del dispositivo de almacenamiento y la capacidad de IOPS. El acceso a datos es un recurso escaso y momentáneo que los usuarios compiten en el mercado de tarifas durante la carga del sistema. El costo de ocupación del disco para escribir datos es permanente en on-chain.
Acceder y almacenar cualquier elemento de estado implica un costo asociado a la estructura de datos relacionada con la verificación del estado completo de la blockchain. Este costo está relacionado con la cardinalidad de los diferentes elementos de estado ($2^{256}$). También hay un costo que es proporcional al tamaño de cada elemento.
Los cargos por operaciones de elementos de estado, excepto en los casos excepcionales descritos en la siguiente sección (, son:
Almacenamiento de tarifas GAS = item_fee + )byte_fee × bytes(
) leer, crear y escribir
El acceso a los elementos de estado se divide en tres tipos: lectura, creación o escritura. El acceso se cobra según el costo del proyecto y el costo por byte.
Las operaciones de lectura son las más comunes, limitadas únicamente por la escasez temporal de recursos. Los costos de lectura se calibran según el IOPS del disco y la capacidad de ancho de banda de las especificaciones de hardware de referencia.
La operación de creación agrega nuevos elementos al almacenamiento de estado, aumentando el costo de la estructura de datos de autenticación, por lo que es la más costosa. La tarifa de creación se calibra según el espacio en disco de referencia que posee la red.
Las operaciones de escritura actualizan los elementos existentes, sin generar sobrecostos en la estructura de datos de autenticación. Sin embargo, modificar entradas existentes a un mayor tamaño en bytes aún puede ocupar espacio en disco, por lo que se cobra la misma tarifa por los bytes en los elementos actualizados que por la creación.
Los costos relacionados con el almacenamiento se evalúan por cada transacción: incluso si se lee/escribe el mismo recurso varias veces, solo se cobrará una vez.
Con base en lo anterior, se definen 6 parámetros de GAS que componen el costo total:
) costo unitario de GAS estable
Cada operación y transacción en sí misma requiere un costo fijo unitario en relación con los costos de almacenamiento y ejecución, sin importar cuál sea el valor de mercado calculado en APT o moneda fiduciaria. El costo unitario fijo de GAS ayuda a mantener el programa de GAS constante y desacoplado del valor de mercado libre de APT. Elegir correctamente la precisión de los dígitos del costo unitario de GAS ayuda a mantener la estabilidad del programa de GAS. Teniendo esto en cuenta, la unidad de GAS se expresa con una precisión de aproximadamente 3 dígitos. Por lo tanto, el costo de la transacción de transferencia es de aproximadamente 700 unidades de GAS.
participación de la comunidad
Los miembros de la comunidad pueden:
ajuste de costos de GAS
El plan GAS se configura como almacenamiento on-chain, puede ser modificado a través de propuestas de gobernanza y se pueden agregar nuevas instrucciones o funciones nativas sin problemas.
El diseño del plan GAS es escalable y permite actualizaciones a través de propuestas de gobernanza. A medida que se mejora continuamente y se incorporan los comentarios de los usuarios, los parámetros de GAS se pueden ajustar con el tiempo.
A veces, las fórmulas de GAS pueden requerir cambios complejos. Estas fórmulas suelen estar codificadas en Rust y se diferencian por las características de GAS en la cadena. La actualización de estas fórmulas requiere actualizar el software del nodo, una adopción masiva y la aprobación del uso de la nueva versión de GAS a través de propuestas de gobernanza.
trabajo del futuro
Como el primer marco de GAS viable de MOVE, las direcciones de trabajo futuras incluyen:
Reducir los costos de ejecución: utilizar un modelo de GAS real para mostrar la eficiencia del compilador y de la máquina virtual, mejorando para reducir los costos de ejecución.
Cálculo de GAS multidimensional: permite a los usuarios especificar presupuestos separados para la ejecución y el almacenamiento, evitando pagar altos precios de GAS debido a problemas de calidad del código.
Aliviar el estado de sobrecarga: explorar el concepto TTL de cada proyecto, eliminar los elementos de estado no visitados cuando expire el TTL.