Limitador de suministro

El contrato ERC20ElasticSupply es una extensión del estándar ERC20 que permite crear tokens con suministro elástico que pueden ser acuñados y quemados por otros contratos. Como medida de seguridad, el contrato incluye un limitador de acuñación cuyos parámetros quedan fijados por el constructor durante la creación del contrato del token.

Tanto el token GEX como todas las monedas estables de Geminon incluyen este mecanismo de seguridad. Este sistema está pensado para los casos en los que se conceden permisos de acuñación de tokens de Geminon a contratos externos al protocolo, concretamente en el caso de puentes entre cadenas operados por terceras partes, ya que en caso de hackeo del puente se limita el daño posible al protocolo.

Algoritmo

El algoritmo, desarrollado por Geminon, se basa en un suavizado exponencial adaptativo cuyos parámetros w1w_1 y w2w_2 varían en función del intervalo Δt\Delta t transcurrido desde la última acuñación o quema del token.

Δt=tntn1\Delta t = t_n - t_{n-1}
δ=86400Δt\delta = \frac{86400}{\Delta t}
α=21+δ\alpha = \frac {2}{1+\delta}
w1={   1if Δt=0αδif Δt>0w_1 = \begin{cases} \ \ \ 1 &\text{if } \Delta t = 0 \\ \alpha \cdot \delta &\text{if } \Delta t > 0 \end{cases}
w2={    1if Δt=01αif Δt>0w_2 = \begin{cases} \ \ \ \ 1 &\text{if } \Delta t = 0 \\ 1-\alpha &\text{if } \Delta t > 0 \end{cases}
λn=w1vn+w2λn1\lambda_n = w_1 v_n + w_2 \lambda_{n-1}

Donde Δt\Delta t es el intervalo de tiempo en segundos transcurrido desde la última operación y vnv_n es el volumen (número de tokens) que se quiere acuñar o quemar, en cuyo último caso tendrá valor negativo y se reducirá el valor de λ\lambda.

Nótese que el tiempo tt es una variable discreta definida por el momento de creación del bloque en el que se mina la transacción actual, por lo que aquellas transacciones minadas dentro de un mismo bloque tienen Δt=0\Delta t = 0. En estos casos los pesos w1w_1 y w2w_2 toman valor 1 y el volumen de tokens de la transacción se suma directamente al acumulado hasta el momento.

Fundamentos

El algoritmo descrito está diseñado para aproximar mediante un cálculo mínimo el valor de una media móvil de periodo 24 horas calculada sobre una serie temporal discreta de frecuencia variable.

En una aplicación informática tradicional, si deseamos monitorizar el valor acumulado de una variable discreta en un intervalo de tiempo determinado, lo que haríamos es crear una tabla que almacene cada valor de la variable junto con su marca de tiempo, y usar dicha tabla para calcular un promedio de todos los valores que estén dentro de la ventana de tiempo deseada, por ejemplo las últimas 24 horas.

En una aplicación de blockchain sin embargo un cálculo básico como ese resultaría prohibitivo en coste. Primero, porque almacenar datos en blockchain, especialmente en una congestionada como Ethereum, es extremadamente caro. Y segundo, porque en cada transacción sería necesario iterar sobre las listas de valores y tiempos almacenados, con lo que la complejidad del cálculo y con ello el coste de la transacción crecería con el número de datos almacenados en el periodo.

Esta aproximación no solo sería desproporcionadamente cara sino además peligrosa: dado un volumen de operaciones lo suficientemente alto, se podría alcanzar el límite de gas por bloque de la red, haciendo que las funciones de acuñación del token en cuestión quedaran temporalmente bloqueadas al revertir las transacciones que excedan dicho límite de gas. Un actor malicioso podría aprovechar esta vulnerabilidad para lanzar ataques de denegación de servicio contra el protocolo.

Si tratáramos con una serie temporal uniforme, con los valores separados a intervalos regulares en el tiempo, se podría aproximar de forma sencilla la media móvil de periodo tt sin más que usar una media móvil exponencial equivalente con parámetro α=2/(1+t)\alpha = 2/({1+t}). En este caso, dado que tampoco existe la posibilidad de imputar los valores faltantes para transformar la serie irregular en regular, la única opción pasa por la introducción de una variable δ\delta que compensa la irregularidad en el domino de la frecuencia adaptando la intensidad del suavizado que se aplica a cada nuevo dato en función de cómo de alejado está de la frecuencia básica definida por el periodo de la media móvil que se trata de aproximar (86400 segundos en nuestro caso).

Eficacia del algoritmo

El algoritmo autorregresivo que ha diseñado Geminon es capaz de aproximar de forma óptima la curva de la media móvil calculada de forma explícita.

En una simulación simple introduciendo operaciones de importe constante a intervalos constantes para producir una función rampa en el valor de la media móvil, el aproximador es capaz de seguir la rampa y converge perfectamente al nuevo nivel sin necesidad de almacenar los valores de la serie.

En una prueba mucho más difícil, se introduce una serie de valores aleatorios a intervalos de tiempo también aleatorios. Como puede verse en la figura, el algoritmo diseñado por Geminon es capaz de seguir en todo momento el valor real de la media móvil a pesar de la fuerte aleatoriedad de la señal sin necesidad de almacenar los valores previos.

Última actualización