Diseño de tarifas de combustible del lenguaje MOVE: ¿cómo se calculan las tarifas de combustible on-chain?
La medición de las tarifas de combustible es un concepto básico de muchas blockchains, define la cantidad de recursos computacionales y de almacenamiento necesarios para ejecutar y almacenar transacciones en la cadena. El plan de tarifas de combustible determina el costo consumido en todas las ejecuciones en la cadena, utilizado para calcular el gasto de tarifas de combustible durante la ejecución de transacciones.
proceso
Para ejecutar de manera efectiva, el proceso on-chain es:
definición de principios;
preparar un marco de evaluación para determinar el precio de cada ejecución;
para establecer un sistema de medición de tarifas de combustible y álgebra de tarifas de combustible seguras para MOVE;
Importar el marco de tarifas de combustible en la cadena de suministro superior;
hace que el marco de tarifas de combustible tenga conciencia de almacenamiento;
Refinar aún más el plan de tarifas de combustible.
principio
El principio definido es:
El costo de la operación debe estar directamente relacionado con los recursos disponibles en la red ( como CPU, memoria, red, almacenamiento I/O y uso de espacio, etc. ). Cuando se mejoren la tecnología y los procesos, el costo del combustible debería disminuir.
La tarifa de combustible debe ser establecida por la gobernanza on-chain y se puede configurar sin problemas.
La tarifa de combustible puede prevenir ataques DoS a conjuntos de recursos fijos en la red, y puede ser necesario ajustar rápidamente a través de propuestas de gobernanza según la situación de la red.
El precio de las tarifas de combustible refleja el deseo de acelerar el crecimiento y mantener la accesibilidad de la blockchain para todos.
Fomentar buenas elecciones en el diseño - por ejemplo, priorizar la seguridad, la modularidad, las aserciones y otros eventos.
calcular el costo del combustible
Cuando los usuarios envían una transacción, también deben especificar dos cantidades en la transacción:
Cantidad máxima de tarifas de combustible: medida en unidades de tarifas de combustible. Esta es la cantidad máxima de unidades de tarifas de combustible que el usuario está dispuesto a gastar para ejecutar la transacción.
Precio unitario del combustible: calculado en octal por unidad de combustible, donde 1 octal=0.00000001 APT(=$10^{-8}$). Este es el precio del combustible que el usuario está dispuesto a pagar.
Durante el proceso de ejecución, se cobrará una tarifa por la transacción:
costos fijos, la base fija más los costos adicionales de transacciones grandes.
costo de ejecución, utilizado para ejecutar la instrucción MOVE.
costo de lectura, utilizado para leer datos desde el almacenamiento persistente.
costo de escritura, utilizado para escribir datos en almacenamiento persistente.
La tarifa de transacción final se puede calcular utilizando la cantidad total de unidades de combustible consumidas ( multiplicada por el precio unitario del combustible. Por ejemplo, si una transacción consume 670 unidades de combustible, y el precio del combustible especificado por el usuario en la transacción es de 100 Octa por unidad, entonces la tarifa de transacción final es 670 * 100 = 67000 Octa = 0.00067 APT.
Si una transacción se queda sin gas durante su ejecución, el remitente será cobrado según la cantidad máxima de gas y todos los cambios realizados por esa transacción serán revertidos.
) Establecer una tabla de tarifas de combustible
1. Configuración básica
El plan de tarifas de combustible tiene varios componentes que no están relacionados con los detalles de una sola operación, incluyendo el tamaño de la transacción y la unidad máxima de tarifa de combustible ###, que es diferente de la cantidad máxima de tarifa de combustible especificada por el usuario en la transacción (.
2. Escala de transacciones
Para la mayoría de las transacciones, el tamaño de la transacción puede estar en el orden de los kilobytes. Sin embargo, la publicación del módulo MOVE puede fácilmente tener varios miles de bytes, y el marco tiene aproximadamente 100 KB. El tamaño de la mayoría de los módulos de los usuarios generalmente se encuentra entre 4 KB y 40 KB. Inicialmente, establecimos el valor del tamaño de la transacción en 32 KB, pero en función de la reacción de la comunidad, se solicitó más espacio para simplificar el desarrollo de aplicaciones, por lo que ajustamos el tamaño de la transacción a 64 KB.
Transacciones de muy gran escala pueden llevar a un aumento en el costo de ancho de banda de toda la red y pueden tener un impacto negativo en el rendimiento. Si se abusa de ello, el pool de memoria podría verse incentivado a ignorar transacciones de mayor tamaño, por lo que nuestro enfoque es lograr un equilibrio entre el tamaño de las transacciones de máxima escala y su accesibilidad.
3. Unidad máxima de tarifa de combustible
La unidad máxima de tarifa de combustible definida en el plan de tarifas de combustible determina cuántas operaciones puede ejecutar un transacción como máximo. ¡Atención! Esto es diferente de la cantidad máxima de tarifa de combustible que el usuario especifica en la transacción.
La unidad máxima de tarifa de combustible del plan de tarifas de combustible afecta directamente cuánto tiempo puede ejecutarse una transacción, establecerla demasiado alta puede tener un impacto negativo en el rendimiento de la cadena de bloques. Por ejemplo, un usuario podría olvidar tener un incremento en un bucle while, lo que llevaría a un bucle infinito, que es un error común. Hemos encontrado que, incluso después de haber realizado la mayor actualización del marco, aún estamos por debajo del 90% de la unidad máxima de tarifa de combustible del plan de tarifas de combustible ) establecida en 1,000,000(.
4. Ejecución
Para evaluar el costo de ejecución, construimos un marco de referencia y utilizamos Valgrind para analizar Move VM al ejecutar dicho marco. Su salida es un conjunto de código fuente comentado que nos indica cuántas instrucciones de máquina se generan por cada línea de código.
Con la ayuda del análisis anterior, hemos estimado de manera aproximada el costo relativo de todas las instrucciones MOVE y funciones nativas. Sin embargo, notamos que este método presenta algunos problemas con las funciones en línea: no se incluyen automáticamente en el conteo del llamador. También observamos que esto solo ocurre cuando analizamos ciertas instrucciones MOVE, y podemos resolver este problema sumando los números.
Luego, al considerar ejemplos de codificación que mejoran la robustez y seguridad del sistema, el equipo llegó al número final de instrucciones de máquina ejecutadas. Este número se pondera con las unidades de almacenamiento y el costo máximo de combustible para determinar su valor actual en el plan de tarifas de combustible.
5. Almacenamiento
Cada vez que se accede a los elementos de estado del libro mayor o datos almacenados en el almacenamiento persistente, el nodo emite una lectura o escritura hacia el dispositivo de almacenamiento. El total de accesos a datos por segundo depende del ancho de banda y la capacidad de IOPS del dispositivo de almacenamiento. Al igual que los ciclos de CPU en la parte de cálculo de tarifas de combustible, el acceso a datos es la escasez instantánea por la que los usuarios de blockchain compiten en el mercado de tarifas durante la carga del sistema; además, el costo de ocupación del disco para escribir datos es permanente en la cadena. El equipo diseña el plan de tarifas de combustible de almacenamiento considerando estos costos.
Acceder y almacenar cualquier ítem de estado genera costos relacionados con la estructura de datos de árbol de Merkle de medusa que verifica el estado completo de la cadena de bloques. Este costo está relacionado con la cardinalidad de los diferentes ítems de estado )$2^{256}$(. También hay un costo que es proporcional al tamaño de cada ítem. Para operar sobre un ítem de estado, la tarifa es ) excepto en los casos excepcionales descritos en la siguiente sección (:
Tarifa de almacenamiento de combustible = item_fee + )byte_fee * bytes(
) leer, crear y escribir
Cualquier acceso a un ítem de estado pertenece a uno de los siguientes tres tipos: lectura, creación o escritura. El acceso se cobra según el costo por ítem y el costo por byte, como se muestra en la ecuación anterior.
La operación de lectura es la más común, y solo está limitada por la escasez de recursos instantáneos. Por lo tanto, la tarifa de lectura se calibra según el costo del proyecto de disco IOPS### y la capacidad de ancho de banda de las especificaciones de hardware de referencia.
create se utiliza para agregar un nuevo elemento en el almacenamiento de estado. Por lo tanto, create aumenta la estructura de datos de autenticación, lo que hace que todo sea más costoso, siendo así el costo más alto. El costo de creación se calibra según el espacio en disco de referencia que posee la red. Por lo tanto, llenar el disco con el elemento (item_fee) y el byte (byte_fee) requiere una gran cantidad de tarifas de combustible.
Las operaciones de escritura actualizan los elementos existentes en el almacenamiento de estado. Por lo tanto, las operaciones de escritura no generan un costo adicional en la estructura de datos de autenticación. Sin embargo, al modificar los elementos existentes a bytes más grandes, aún se puede dañar el disco. Por lo tanto, cobramos la misma tarifa por los bytes en los elementos actualizados que al momento de su creación.
Es importante tener en cuenta que los costos relacionados con el almacenamiento se evalúan por cada transacción: incluso si lee/escriba el mismo recurso varias veces, solo necesita pagar una vez.
Con base en lo anterior, hemos definido 6 parámetros de tarifa de combustible, que constituyen los componentes del costo total de la tarifa de combustible. Ver a continuación:
per_item_read:corrección según IOPs
per_byte_read: calibración según el ancho de banda real
per_item_create:calibración según el proyecto total objetivo
per_byte_create: Calibrar según el tamaño total objetivo - el primer 1KB que contiene cada proyecto
per_item_write: igual que per_item_read
per_byte_write: igual que per_byte_create
( costo unitario estable de tarifa de combustible
Independientemente de cuál sea el costo de ejecutar operaciones en términos del valor de mercado de APT o de moneda fiduciaria, cada operación y transacción en sí misma requiere un costo unitario fijo en relación con los costos de almacenamiento y ejecución. Un costo unitario fijo de tarifas de combustible ayuda a mantener el plan de tarifas de combustible constante y desvinculado del valor de mercado libre de APT. Además, elegir correctamente el número exacto de dígitos para la unidad de tarifas de combustible ayuda a mantener el plan de tarifas de combustible constante. Teniendo esto en cuenta, el equipo representa la unidad de tarifas de combustible con una precisión de aproximadamente 3 dígitos. Por lo tanto, el costo de una transacción de transferencia es de aproximadamente 700 unidades de tarifas de combustible.
) participación de la comunidad
A pesar de que hemos invertido una gran cantidad de esfuerzo en el plan de tarifas de combustible, aún está muy lejos de ser perfecto. Como un proyecto comunitario, los miembros de la comunidad pueden elegir:
1### Según tu experiencia, identifica los puntos irrazonables del plan de tarifas de combustible;
2### expresa tus preocupaciones sobre el plan de tarifas de combustible y participa en la discusión de la comunidad.
vota sobre la propuesta de gobernanza relacionada con las tarifas de combustible.
) ¿Cómo ajustar el costo de la tarifa de combustible?
El plan de tarifas de combustible se almacena como una configuración on-chain, pero se puede modificar a través de propuestas de gobernanza y se pueden agregar nuevas instrucciones o funciones nativas sin problemas.
El plan de tarifas de combustible está diseñado para ser escalable, permitiendo actualizaciones a través de propuestas de gobernanza. A medida que se mejora continuamente el Move VM e incorpora la retroalimentación de los usuarios, los parámetros de tarifas de combustible pueden ajustarse con el tiempo.
A veces, la fórmula de tarifas de combustible puede requerir cambios complejos que exceden la configuración en cadena. Estas fórmulas de tarifas de combustible suelen estar codificadas en Rust y se distinguen a través de marcadores de características de tarifas de combustible en cadena. Para actualizar estas fórmulas, es necesario actualizar el software del nodo con la nueva fórmula y distinguirlo con un marcador de características de tarifas de combustible diferente. Luego, el software del nodo debe ser publicado y adoptado ampliamente por los operadores de nodos, y finalmente, se debe publicar y aprobar una propuesta de gobernanza para poder utilizar la nueva versión de tarifas de combustible.
) Trabajo del futuro
Este es el primer marco de tarifas de combustible viable de MOVE. Requiere una gran cantidad de modificaciones en Move VM y Core. Esperamos que este trabajo allane el camino para futuros trabajos:
1### Reducir los costos de ejecución, tener un modelo de tarifas de combustible real que indique dónde el compilador y la máquina virtual son eficientes, el equipo puede mejorar la mayor parte de esto para reducir los costos de ejecución.
2### Cálculo de tarifas de combustible multidimensional, permite a los usuarios especificar un presupuesto separado para la ejecución y el almacenamiento. De esta manera, los usuarios no tienen que pagar altos precios de tarifas de combustible por un tiempo de ejecución prolongado debido a aplicaciones mal codificadas. También permitirá una definición más granular del precio máximo de tarifas de combustible para transacciones en la cadena de bloques;
3) aliviar el estado de sobrecarga, actualmente no hay una forma sencilla de reducir el conjunto de estados, aparte de que el contrato ) o el usuario ) eliminen explícitamente los elementos. Hacer que los usuarios paguen para eliminar datos puede generar oportunidades de arbitraje, donde los usuarios crean almacenamiento cuando es barato y lo eliminan cuando es caro. Retrasar la resolución de este desafío puede debilitar la motivación de los desarrolladores para eliminar datos on-chain. El equipo está explorando el concepto de TTL para cada proyecto, que eliminará los elementos de estado no visitados cuando expire el TTL.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
4 me gusta
Recompensa
4
4
Republicar
Compartir
Comentar
0/400
ImpermanentLossEnjoyer
· hace2h
¿Quién puede soportar este caro costo de combustible?
Ver originalesResponder0
rekt_but_resilient
· hace2h
Hasta un perro sabe que el gas de move es ridículamente caro.
Ver originalesResponder0
0xSleepDeprived
· hace2h
move también tiene que sacar dinero, es difícil
Ver originalesResponder0
EthSandwichHero
· hace3h
¿Solo este costo de gasolina? mundo Cripto novato se rompe
El mecanismo de tarifas de combustible recomendado por el lenguaje MOVE: ¿cómo se calcula con precisión el costo de ejecución on-chain?
Diseño de tarifas de combustible del lenguaje MOVE: ¿cómo se calculan las tarifas de combustible on-chain?
La medición de las tarifas de combustible es un concepto básico de muchas blockchains, define la cantidad de recursos computacionales y de almacenamiento necesarios para ejecutar y almacenar transacciones en la cadena. El plan de tarifas de combustible determina el costo consumido en todas las ejecuciones en la cadena, utilizado para calcular el gasto de tarifas de combustible durante la ejecución de transacciones.
proceso
Para ejecutar de manera efectiva, el proceso on-chain es:
definición de principios;
preparar un marco de evaluación para determinar el precio de cada ejecución;
para establecer un sistema de medición de tarifas de combustible y álgebra de tarifas de combustible seguras para MOVE;
Importar el marco de tarifas de combustible en la cadena de suministro superior;
hace que el marco de tarifas de combustible tenga conciencia de almacenamiento;
Refinar aún más el plan de tarifas de combustible.
principio
El principio definido es:
El costo de la operación debe estar directamente relacionado con los recursos disponibles en la red ( como CPU, memoria, red, almacenamiento I/O y uso de espacio, etc. ). Cuando se mejoren la tecnología y los procesos, el costo del combustible debería disminuir.
La tarifa de combustible debe ser establecida por la gobernanza on-chain y se puede configurar sin problemas.
La tarifa de combustible puede prevenir ataques DoS a conjuntos de recursos fijos en la red, y puede ser necesario ajustar rápidamente a través de propuestas de gobernanza según la situación de la red.
El precio de las tarifas de combustible refleja el deseo de acelerar el crecimiento y mantener la accesibilidad de la blockchain para todos.
Fomentar buenas elecciones en el diseño - por ejemplo, priorizar la seguridad, la modularidad, las aserciones y otros eventos.
calcular el costo del combustible
Cuando los usuarios envían una transacción, también deben especificar dos cantidades en la transacción:
Cantidad máxima de tarifas de combustible: medida en unidades de tarifas de combustible. Esta es la cantidad máxima de unidades de tarifas de combustible que el usuario está dispuesto a gastar para ejecutar la transacción.
Precio unitario del combustible: calculado en octal por unidad de combustible, donde 1 octal=0.00000001 APT(=$10^{-8}$). Este es el precio del combustible que el usuario está dispuesto a pagar.
Durante el proceso de ejecución, se cobrará una tarifa por la transacción:
costos fijos, la base fija más los costos adicionales de transacciones grandes.
costo de ejecución, utilizado para ejecutar la instrucción MOVE.
costo de lectura, utilizado para leer datos desde el almacenamiento persistente.
costo de escritura, utilizado para escribir datos en almacenamiento persistente.
La tarifa de transacción final se puede calcular utilizando la cantidad total de unidades de combustible consumidas ( multiplicada por el precio unitario del combustible. Por ejemplo, si una transacción consume 670 unidades de combustible, y el precio del combustible especificado por el usuario en la transacción es de 100 Octa por unidad, entonces la tarifa de transacción final es 670 * 100 = 67000 Octa = 0.00067 APT.
Si una transacción se queda sin gas durante su ejecución, el remitente será cobrado según la cantidad máxima de gas y todos los cambios realizados por esa transacción serán revertidos.
) Establecer una tabla de tarifas de combustible
1. Configuración básica
El plan de tarifas de combustible tiene varios componentes que no están relacionados con los detalles de una sola operación, incluyendo el tamaño de la transacción y la unidad máxima de tarifa de combustible ###, que es diferente de la cantidad máxima de tarifa de combustible especificada por el usuario en la transacción (.
2. Escala de transacciones
Para la mayoría de las transacciones, el tamaño de la transacción puede estar en el orden de los kilobytes. Sin embargo, la publicación del módulo MOVE puede fácilmente tener varios miles de bytes, y el marco tiene aproximadamente 100 KB. El tamaño de la mayoría de los módulos de los usuarios generalmente se encuentra entre 4 KB y 40 KB. Inicialmente, establecimos el valor del tamaño de la transacción en 32 KB, pero en función de la reacción de la comunidad, se solicitó más espacio para simplificar el desarrollo de aplicaciones, por lo que ajustamos el tamaño de la transacción a 64 KB.
Transacciones de muy gran escala pueden llevar a un aumento en el costo de ancho de banda de toda la red y pueden tener un impacto negativo en el rendimiento. Si se abusa de ello, el pool de memoria podría verse incentivado a ignorar transacciones de mayor tamaño, por lo que nuestro enfoque es lograr un equilibrio entre el tamaño de las transacciones de máxima escala y su accesibilidad.
3. Unidad máxima de tarifa de combustible
La unidad máxima de tarifa de combustible definida en el plan de tarifas de combustible determina cuántas operaciones puede ejecutar un transacción como máximo. ¡Atención! Esto es diferente de la cantidad máxima de tarifa de combustible que el usuario especifica en la transacción.
La unidad máxima de tarifa de combustible del plan de tarifas de combustible afecta directamente cuánto tiempo puede ejecutarse una transacción, establecerla demasiado alta puede tener un impacto negativo en el rendimiento de la cadena de bloques. Por ejemplo, un usuario podría olvidar tener un incremento en un bucle while, lo que llevaría a un bucle infinito, que es un error común. Hemos encontrado que, incluso después de haber realizado la mayor actualización del marco, aún estamos por debajo del 90% de la unidad máxima de tarifa de combustible del plan de tarifas de combustible ) establecida en 1,000,000(.
4. Ejecución
Para evaluar el costo de ejecución, construimos un marco de referencia y utilizamos Valgrind para analizar Move VM al ejecutar dicho marco. Su salida es un conjunto de código fuente comentado que nos indica cuántas instrucciones de máquina se generan por cada línea de código.
Con la ayuda del análisis anterior, hemos estimado de manera aproximada el costo relativo de todas las instrucciones MOVE y funciones nativas. Sin embargo, notamos que este método presenta algunos problemas con las funciones en línea: no se incluyen automáticamente en el conteo del llamador. También observamos que esto solo ocurre cuando analizamos ciertas instrucciones MOVE, y podemos resolver este problema sumando los números.
Luego, al considerar ejemplos de codificación que mejoran la robustez y seguridad del sistema, el equipo llegó al número final de instrucciones de máquina ejecutadas. Este número se pondera con las unidades de almacenamiento y el costo máximo de combustible para determinar su valor actual en el plan de tarifas de combustible.
5. Almacenamiento
Cada vez que se accede a los elementos de estado del libro mayor o datos almacenados en el almacenamiento persistente, el nodo emite una lectura o escritura hacia el dispositivo de almacenamiento. El total de accesos a datos por segundo depende del ancho de banda y la capacidad de IOPS del dispositivo de almacenamiento. Al igual que los ciclos de CPU en la parte de cálculo de tarifas de combustible, el acceso a datos es la escasez instantánea por la que los usuarios de blockchain compiten en el mercado de tarifas durante la carga del sistema; además, el costo de ocupación del disco para escribir datos es permanente en la cadena. El equipo diseña el plan de tarifas de combustible de almacenamiento considerando estos costos.
Acceder y almacenar cualquier ítem de estado genera costos relacionados con la estructura de datos de árbol de Merkle de medusa que verifica el estado completo de la cadena de bloques. Este costo está relacionado con la cardinalidad de los diferentes ítems de estado )$2^{256}$(. También hay un costo que es proporcional al tamaño de cada ítem. Para operar sobre un ítem de estado, la tarifa es ) excepto en los casos excepcionales descritos en la siguiente sección (:
Tarifa de almacenamiento de combustible = item_fee + )byte_fee * bytes(
) leer, crear y escribir
Cualquier acceso a un ítem de estado pertenece a uno de los siguientes tres tipos: lectura, creación o escritura. El acceso se cobra según el costo por ítem y el costo por byte, como se muestra en la ecuación anterior.
La operación de lectura es la más común, y solo está limitada por la escasez de recursos instantáneos. Por lo tanto, la tarifa de lectura se calibra según el costo del proyecto de disco IOPS### y la capacidad de ancho de banda de las especificaciones de hardware de referencia.
create se utiliza para agregar un nuevo elemento en el almacenamiento de estado. Por lo tanto, create aumenta la estructura de datos de autenticación, lo que hace que todo sea más costoso, siendo así el costo más alto. El costo de creación se calibra según el espacio en disco de referencia que posee la red. Por lo tanto, llenar el disco con el elemento (item_fee) y el byte (byte_fee) requiere una gran cantidad de tarifas de combustible.
Las operaciones de escritura actualizan los elementos existentes en el almacenamiento de estado. Por lo tanto, las operaciones de escritura no generan un costo adicional en la estructura de datos de autenticación. Sin embargo, al modificar los elementos existentes a bytes más grandes, aún se puede dañar el disco. Por lo tanto, cobramos la misma tarifa por los bytes en los elementos actualizados que al momento de su creación.
Es importante tener en cuenta que los costos relacionados con el almacenamiento se evalúan por cada transacción: incluso si lee/escriba el mismo recurso varias veces, solo necesita pagar una vez.
Con base en lo anterior, hemos definido 6 parámetros de tarifa de combustible, que constituyen los componentes del costo total de la tarifa de combustible. Ver a continuación:
per_item_read:corrección según IOPs
per_byte_read: calibración según el ancho de banda real
per_item_create:calibración según el proyecto total objetivo
per_byte_create: Calibrar según el tamaño total objetivo - el primer 1KB que contiene cada proyecto
per_item_write: igual que per_item_read
per_byte_write: igual que per_byte_create
( costo unitario estable de tarifa de combustible
Independientemente de cuál sea el costo de ejecutar operaciones en términos del valor de mercado de APT o de moneda fiduciaria, cada operación y transacción en sí misma requiere un costo unitario fijo en relación con los costos de almacenamiento y ejecución. Un costo unitario fijo de tarifas de combustible ayuda a mantener el plan de tarifas de combustible constante y desvinculado del valor de mercado libre de APT. Además, elegir correctamente el número exacto de dígitos para la unidad de tarifas de combustible ayuda a mantener el plan de tarifas de combustible constante. Teniendo esto en cuenta, el equipo representa la unidad de tarifas de combustible con una precisión de aproximadamente 3 dígitos. Por lo tanto, el costo de una transacción de transferencia es de aproximadamente 700 unidades de tarifas de combustible.
) participación de la comunidad
A pesar de que hemos invertido una gran cantidad de esfuerzo en el plan de tarifas de combustible, aún está muy lejos de ser perfecto. Como un proyecto comunitario, los miembros de la comunidad pueden elegir:
1### Según tu experiencia, identifica los puntos irrazonables del plan de tarifas de combustible;
2### expresa tus preocupaciones sobre el plan de tarifas de combustible y participa en la discusión de la comunidad.
) ¿Cómo ajustar el costo de la tarifa de combustible?
El plan de tarifas de combustible se almacena como una configuración on-chain, pero se puede modificar a través de propuestas de gobernanza y se pueden agregar nuevas instrucciones o funciones nativas sin problemas.
El plan de tarifas de combustible está diseñado para ser escalable, permitiendo actualizaciones a través de propuestas de gobernanza. A medida que se mejora continuamente el Move VM e incorpora la retroalimentación de los usuarios, los parámetros de tarifas de combustible pueden ajustarse con el tiempo.
A veces, la fórmula de tarifas de combustible puede requerir cambios complejos que exceden la configuración en cadena. Estas fórmulas de tarifas de combustible suelen estar codificadas en Rust y se distinguen a través de marcadores de características de tarifas de combustible en cadena. Para actualizar estas fórmulas, es necesario actualizar el software del nodo con la nueva fórmula y distinguirlo con un marcador de características de tarifas de combustible diferente. Luego, el software del nodo debe ser publicado y adoptado ampliamente por los operadores de nodos, y finalmente, se debe publicar y aprobar una propuesta de gobernanza para poder utilizar la nueva versión de tarifas de combustible.
) Trabajo del futuro
Este es el primer marco de tarifas de combustible viable de MOVE. Requiere una gran cantidad de modificaciones en Move VM y Core. Esperamos que este trabajo allane el camino para futuros trabajos:
1### Reducir los costos de ejecución, tener un modelo de tarifas de combustible real que indique dónde el compilador y la máquina virtual son eficientes, el equipo puede mejorar la mayor parte de esto para reducir los costos de ejecución.
2### Cálculo de tarifas de combustible multidimensional, permite a los usuarios especificar un presupuesto separado para la ejecución y el almacenamiento. De esta manera, los usuarios no tienen que pagar altos precios de tarifas de combustible por un tiempo de ejecución prolongado debido a aplicaciones mal codificadas. También permitirá una definición más granular del precio máximo de tarifas de combustible para transacciones en la cadena de bloques;
3) aliviar el estado de sobrecarga, actualmente no hay una forma sencilla de reducir el conjunto de estados, aparte de que el contrato ) o el usuario ) eliminen explícitamente los elementos. Hacer que los usuarios paguen para eliminar datos puede generar oportunidades de arbitraje, donde los usuarios crean almacenamiento cuando es barato y lo eliminan cuando es caro. Retrasar la resolución de este desafío puede debilitar la motivación de los desarrolladores para eliminar datos on-chain. El equipo está explorando el concepto de TTL para cada proyecto, que eliminará los elementos de estado no visitados cuando expire el TTL.