Diseño de GAS pionero de MOVE: Análisis del método de cálculo del consumo de recursos on-chain.

robot
Generación de resúmenes en curso

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:

  1. Principios de definición
  2. Preparar el marco de evaluación, determinar el precio de cada ejecución
  3. Establecer un sistema de medición de GAS y un álgebra de GAS seguro para MOVE
  4. Importar marco GAS de upstream
  5. Hacer que el marco GAS tenga conciencia de almacenamiento
  6. Refinar aún más el plan de GAS

principios

Los principios definidos incluyen:

  1. El costo de operación debe estar directamente relacionado con los recursos disponibles en la red y disminuir con el avance tecnológico.
  2. GAS debe ser configurado por la gobernanza on-chain, y se puede configurar sin problemas.
  3. GAS puede prevenir ataques DoS y puede ajustarse rápidamente según las condiciones de la red.
  4. El precio del GAS debe reflejar la visión de un crecimiento acelerado y de mantener la accesibilidad de la blockchain.
  5. 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:

  1. Costos fijos
  2. Costo de ejecutar la instrucción MOVE
  3. Costo de leer datos desde el almacenamiento persistente
  4. 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 ###

  1. 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.

  1. 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.

  1. 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 ).

  1. 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.

  1. 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:

  1. Identificar las irregularidades en el plan de GAS
  2. Expresar preocupaciones y participar en la discusión
  3. 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:

  1. 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.

  2. 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.

  3. Aliviar el estado de sobrecarga: explorar el concepto TTL de cada proyecto, eliminar los elementos de estado no visitados cuando expire el TTL.

Ver originales
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.
  • Recompensa
  • 5
  • Compartir
Comentar
0/400
rugged_againvip
· hace9h
¿Cuánto puede reducirse el gas?
Ver originalesResponder0
MetaverseMigrantvip
· hace9h
¡Vaya! ¿Este gas puede ser más complicado?
Ver originalesResponder0
NewDAOdreamervip
· hace9h
Recibir dinero al revés también es el dolor de toda la vida de un coder.
Ver originalesResponder0
¯\_(ツ)_/¯vip
· hace9h
move真alcista哇 搞复杂了?
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)