Algoritmo de control de suministro dinámico de cripto activos

in #blockchain6 years ago

Algoritmo de control de suministro dinámico de cripto activos

Juan Sebastian X. Téllez I.
juantellez@premia.network

INTRODUCCIÓN

En una economía centralizada, la moneda es emitida por un banco central a una tasa que coincida con el crecimiento de la cantidad de bienes o servicios que se intercambian de forma que puedan comercializarse a precios estables. [1]

En un sistema monetario completamente descentralizado, no existe una autoridad central que regule la emisión monetaria, la moneda es creada por los nodos de una red Punto a Punto. El algoritmo de generación de Bitcoin, el primer cripto activo, define previamente cómo se creará la moneda y a qué velocidad. Cualquier moneda generada por un usuario malintencionado que no siga las reglas será rechazada por la red y, por lo tanto, no tendrá valor. [1]

Los cripto activos se crean cada vez que un minero descubre un nuevo bloque; comúnmente se controla el suministro de monedas mediante un algoritmo que reduce de forma programada el monto de cripto activos a entregar como recompensa al minero que descubrió un bloque, como en el caso de Bitcoin, entregando un monto aleatorio, algunos cripto activos entregan un monto fijo y recientemente algunos utilizan enlaces que consultan de forma periódica el precio en las casas de cambio para decidir la reducción o aumento de la recompensa.

La reducción de recompensa por bloque logra un aumento en el valor de los cripto activos sin embargo no ofrece ningún control sobre la volatilidad del mismo y los métodos dinámicos dependen de un tercero para verificar su valor en el mercado y así reducir o aumentar el suministro de cripto activos.

Este algoritmo busca ofrecer un método totalmente descentralizado y sin necesidad de depender de un tercero para controlar el suministro de cripto activos utilizando variables obtenidas de la cadena de bloques y analizando la cantidad de transacciones y sus montos, aumentando y reduciendo el monto entregado al minero como recompensa por descubrir un nuevo bloque.

Variables

Altura de bloque

Es un valor que se incrementa a razón de uno (1) cada vez que se crea un nuevo bloque. La velocidad del incremento es controlada por el algoritmo de control de dificultad del cripto activo y puede ser utilizado para aumentar el monto de recompensa por bloque de forma controlada y predecible.

Cantidad de transacciones de salida por bloque

El total de transacciones de salida contenidas en un bloque es una variable que puede ser utilizada como indicador de utilización de la red para envío del cripto activo de persona a persona. Una baja cantidad de transacciones representaría una baja utilización y por lo tanto no sería necesario aumentar el suministro de monedas.

Monto total de las transacciones de salida contenidas por bloque

La suma del monto de todas las transacciones de salida contenidas en un bloque asociado a la cantidad de transacciones de salida contenidas en él podría ser un indicador del valor del cripto activo.

  • Un monto elevado de ambos parámetros indicaría que el valor es bajo por lo cual sería necesario reducir el suministro.
  • Una baja cantidad de transacciones con un monto total alto indicaría de igual manera el bajo valor del cripto activo y no sería necesario aumentar el suministro.
  • Una alta cantidad de transacciones con un monto total bajo indicaría un valor alto, por lo cual sería necesario aumentar el suministro.
  • Un bajo número de transacciones con un monto total bajo indicaría la baja utilización de la red por lo cual no sería necesario aumentar el suministro.

La utilización de estas dos variables utilizadas de la forma arriba expresada ayudarían también a mitigar un posible abuso por parte de mineros que intencionalmente realicen transacciones con la finalidad de incrementar la recompensa entregada con la generación de cada bloque.

Comisiones

La variable correspondiente a las comisiones generadas por la dificultad de y que son entregadas al minero no es utilizada en el algoritmo aquí presentado, sin embargo podría ser utilizada como método para mitigar un abuso intencional de una persona buscando incrementar la recompensa del bloque.

Constantes

Los valores de las constantes deben ir acorde a las especificaciones de la cadena de bloques del cripto activo tomando en cuenta el suministro total máximo, tamaño de bloque y tiempo entre bloques ya que estas constantes afectarán directamente el monto de recompensa por bloque y el tiempo durante el cual se consumirá el suministro total máximo.

Transacciones mínimas para aumento de suministro

Este valor debe ser proporcional al tamaño máximo por bloque y tiempo entre bloques especificados para la cadena de bloques. Es posible convertir esta constante en variable utilizando las variables de un seguimiento histórico de una cierta cantidad de bloques. 

Divisor de altura de bloque

Debe establecerse de acuerdo al monto de recompensa que se entregará al minero que descubra un nuevo bloque. Su valor deberá ser menor cuando se deba aumentar el suministro y mayor cuando se desee reducir. También podría utilizarse una variable histórica obtenida de cierto número bloques anteriores.

El algoritmo

int64 static GetBlockValue(int nHeight, int64 nFees, int64 nLastBlockTotalTx, int64 nLastBlockTotalVout)
{	
        int64 nSubsidy = (nHeight/100000000) * COIN;
	if (nLastBlockTotalTx <= 30)
	{
return nSubsidy + nFees;
	}else if (nLastBlockTotalTx > 30)
	{
		if ((nLastBlockTotalVout/nLastBlockTotalTx)<(nHeight/10000) && (nLastBlockTotalVout>(nHeight/100000)))
		{
		    int64 nSubsidy = (nHeight/100000) * COIN;
		    return nSubsidy + nFees;
		}else
		{
		    return nSubsidy + nFees;
		}
	}else
	{
return nSubsidy + nFees;
	}
}

nHeight = Altura del bloque procesado.
nFees = Comisiones generadas si el valor de salida de una transacción es menor que la entrada.
nLastBlockTotalTx = Total de transacciones contenidas en el bloque procesado.
nLastBlockTotalVout = Suma del monto de cada transacción de salida contenida en un bloque procesado.
nSubsidy = Monto que será entregado como recompensa por descubrir el bloque procesado.

Conclusión

Este algoritmo es una aproximación y podría servir como punto de partida para el desarrollo de un método dinámico descentralizado de control de suministro de cripto activos que permita mantener estable su valor; ha sido elaborado para ser incluido en el cripto activo Point, pero puede ser fácilmente adaptado para cualquier cripto activo sin importar su método de consenso.

Las especificaciones del cripto activo Point son las siguientes:

Nombre: Point
Símbolo: POINT
Algoritmo de prueba de trabajo: Scrypt
Tiempo entre bloques: 15 segundos
Ajuste de dificultad: cada 4 bloques
Dificultad inicial: 0.00024414
Suministro máximo: 90,000,000,000 POINT
Suministro actual: 1,006,855,562 POINT
Bloque actual: 1,150,292

Referencias

[1] Bitcoin.it. (2018). Controlled supply. 2018, de Bitcoin.it Sitio web: https://en.bitcoin.it/wiki/Controlled_supply