Traducción al español de “Network traffic and tiered pricing”, escrito por Philip Lazos del departamento de Investigación Académica en IOG, el 25 de de noviembre de 2021
Las finanzas descentralizadas seguirán creando demanda en Cardano. En nuestro proyecto de investigación buscamos formas de mantener un acceso y un rendimiento justos para todos los usuarios
En un reciente artículo de blog esbozamos algunas de las formas en las que la red Cardano se adaptaría y evolucionaría a fin de responder a las demandas globales de los smart contract y DeFi. De igual forma, resultará necesario actualizar el sistema de tarifas de transacción utilizado para Cardano.
En la actualidad, el sistema es sencillo y justo: cada transacción recibe el mismo trato y no es posible que los usuarios alteren su prioridad pagando tarifas más altas. Mientras la capacidad de rendimiento sea comparable a la demanda, este enfoque funcionará correctamente.
No obstante, tiene sus inconvenientes. A partir del aumento del uso de Cardano, eventualmente llegará un punto en el que no todas las transacciones podrán ser incluidas en la blockchain, aún con ajustes en la parametrización. A pesar de que el aumento de la capacidad de la cadena principal y/o el desvío de las transacciones a Hydra u otras soluciones de capa 2 se pueden reducir, el sistema central debe seguir funcionando de forma ágil en todos los casos posibles y en todo momento.
Lo anterior es particularmente importante en el caso de un ataque de denegación de servicio (DoS). Si el sistema es como es, un atacante podría aprovecharse del trato justo y hacer pasar su spam malicioso por transacciones legítimas, aumentando los tiempos de espera para todos los demás. Se han adoptado medidas (por ejemplo, en relación con la propagación de las transacciones a través de la red peer-to-peer) que dificultan técnicamente un ataque de este tipo. No obstante, por razones de protección adicional, nos gustaría poder aumentar los costes de tales ataques sin poner en peligro la equidad y la eficiencia de precios de todo el sistema.
Los miembros del equipo de investigación del Grupo IO han estado estudiando este tema durante el presente año. La propuesta resultante que se expone en este artículo mantiene los pilares del procesamiento de transacciones de Cardano (previsibilidad, equidad y acceso económico), al tiempo que mitiga los problemas que podrían surgir de una mayor demanda. En nuestra propuesta se plantea un novedoso mecanismo de tarifas de transacción para las blockchains. La clave del diseño es dividir cada bloque en tres “niveles” en función del caso de uso. En cada nivel hay un porcentaje determinado del tamaño máximo del bloque y está diseñado para diferentes tipos de transacciones (Figura 1). Los niveles, junto con la división sugerida que estamos analizando en este momento, serían:
- regular (50%)
- equilibrado (30%)
- inmediato (20%)
Figura 1. Los bloques se dividirían en tres segmentos.
Analizaremos el segmento regular al final, ya que funciona de forma diferente a los otros dos. Los segmentos equilibrado e inmediato funcionan con un “umbral de tarifas”, el cual es distinto para cada uno de ellos. Para poder incluirse en un bloque, los emisores de transacciones tendrán que indicar el nivel de servicio que necesitan. Esto puede hacerse fijando una tarifa máxima para la transacción. A continuación, cada bloque se llenaría empezando por el nivel inmediato, luego el equilibrado y finalmente el regular. Transacciones similares dentro del mismo nivel pagarían las mismas tarifas. A fin de facilitar la elección, a cada transacción solo se le cobraría la tarifa más baja que garantizara su entrada en el bloque. Luego de cada bloque, las tarifas de los niveles inmediato y equilibrado se actualizarían de manera dinámica y determinista (reflejando el nivel de demanda de los bloques anteriores) lo que garantizaría que cada segmento utilizara su porcentaje deseado del bloque.
Las tarifas de los niveles inmediato y equilibrado difieren en la manera en que se actualizan, concretamente en la “velocidad” a la que se ajustan en función de la carga actual. El umbral de servicio inmediato sería siempre más alto que el equilibrado y reaccionaría más bruscamente a la demanda, asegurando que la transacción que lo solicite sea atendida lo antes posible. El umbral equilibrado se adaptaría más lentamente y sería más estable: esto lo haría poco adecuado para transacciones muy urgentes, pero ofrecería un precio más bajo y fiable a costa de un tiempo de espera más variado.
Los niveles equilibrado e inmediato pretenden gestionar transacciones con diferentes niveles de urgencia, mientras que el nivel justo se encarga de las transacciones ordinarias. La finalidad del segmento regular consiste en perfeccionar el sistema actual de Cardano, manteniendo las tarifas bajas (o, en el futuro, incluso estables, vinculándolas a una cesta de productos básicos/fiat, como se explica en el post sobre tarifas estables) y eliminar cualquier posibilidad de imprecisión desde la perspectiva del usuario. Siempre que la demanda sea baja (y las transacciones quepan en la mitad del bloque) este segmento funcionaría como lo hace ahora Cardano.
Sin embargo cuando la demanda aumente, se pondrá en marcha un mecanismo especial para las transacciones de nivel justo. El mecanismo se encargaría de filtrar las transacciones de forma independiente a las tarifas y se basaría en una función de priorización. Así por ejemplo, se daría prioridad a las transacciones en función de la antigüedad y la cantidad de sus UTXOs. En concreto, la prioridad de una determinada transacción sería igual a la suma del importe de cada entrada multiplicado por su antigüedad y luego dividido por el tamaño total de las transacciones en bytes. Dicha prioridad se puede utilizar junto con un umbral (actualizado dinámicamente después de cada bloque) que filtre las transacciones cuya prioridad sea demasiado baja. Este método garantiza la capacidad de cada transacción a un precio bajo y predecible y limita el efecto que un atacante malintencionado (o un aumento de la demanda) puede tener sobre los precios, al ofrecer siempre una forma barata de entrar en cada bloque.
El concepto de precios escalonados que presentamos aquí también amplia y puntualiza el concepto de multiplicador que introdujimos en el artículo sobre tarifas estables. De este modo, se asocia a cada uno de los tres niveles un multiplicador calculado de manera determinista (con el nivel justo siempre con un multiplicador de 1) por un valor que varía en función de la congestión del nivel respectivo en los bloques anteriores.
Este mecanismo es distinto de los enfoques de precios actuales, que utilizan Bitcoin o Ethereum (incluso con la propuesta de mejora 1559 de Ethereum), en los que hay una tarifa variable que cada transacción debe superar para llegar a un bloque. El inconveniente es que la tarifa que todo el mundo debe pagar está dictada por los consumidores más “ricos”. Peor aún, es la tarifa que pagan los consumidores más ricos para entrar en un bloque “inmediatamente”. Por otra parte, si bien las tarifas son en su mayoría una función de la oferta y la demanda, esta clase de mecanismo de tarifas de transacción puede “moldear” inadvertidamente la demanda, o aumentar inadvertidamente los precios porque la estrategia de oferta óptima no está clara para los usuarios. Supongamos que las tarifas de transacción de Bitcoin disminuyeran repentinamente a la mitad y todo el mundo se olvidara de lo que eran, ¿aumentarían igualmente a sus niveles actuales? La respuesta negativa a esta pregunta demuestra los inconvenientes de este tipo de mecanismos y es un problema que los precios escalonados excluyen por su diseño.
En cambio, el enfoque escalonado es más sofisticado. Es consciente de que no todas las transacciones tienen las mismas necesidades, garantizando que puedan darse diferentes casos de uso simultáneamente y facilitando a los usuarios la elección del tipo de servicio deseado. Así, la tarificación escalonada permite tener tarifas predecibles y justas al tiempo que se gestionan los periodos de congestión en la cadena principal. Combinado con las mejoras de diseño que se revelarán en artículos posteriores y que se centran en aumentar la capacidad de rendimiento bruto y la potencia de procesamiento de la cadena principal, la fijación de precios escalonados muestra cómo Cardano será capaz de adaptarse a cualquier circunstancia de demanda de procesamiento de transacciones.
Agradezco las contribuciones de Giorgos Panagiotakos, Aggelos Kiayias y Elias Koutsoupias a este post. Entre todos formamos el grupo de investigación que trabaja en el diseño de este mecanismo. Próximamente, se publicará un documento técnico.