Artículo del Blog

¿Deberíamos aumentar la tarifa mínima?

Autor

Justin Rice

Fecha de publicación

Tarifas

Hace aproximadamente un año, hubo varios hilos discutiendo la posibilidad de aumentar la tarifa mínima para las transacciones en Stellar. En aquel momento, no había un consenso real, la red no estaba preparada para un aumento, y no había una necesidad urgente de una tarifa mínima más alta, así que la discusión simplemente... se diluyó.

Las cosas han cambiado mucho desde entonces, y basados en el feedback que hemos recibido recientemente de la comunidad, sentimos que es momento de reabrir esa discusión.

Para continuar funcionando como un sistema rápido, eficiente y descentralizado para pagos, Stellar requiere una tarifa por cada transacción enviada al ledger. Esas tarifas no enriquecen a nadie —se queman, así que no van a los validadores de la red ni a Stellar Development Foundation— pero son necesarias para prevenir comportamientos perjudiciales a gran escala.

El Protocolo 13 te permite ajustar las tarifas incluso después de firmar tus transacciones, así que ahora puedes evitar cualquier riesgo de que transacciones importantes se queden atascadas sin ofertar alguna tarifa de transacción enorme en la subasta. Sin embargo, no todos los que usan Stellar están preparados para acomodar la fluctuación de precios de transacción actual causada por transacciones de arbitraje de bajo valor.

Para hacerlo más fácil para los desarrolladores y usuarios para fijar precios de transacciones, pensamos que es momento de considerar aumentar el precio mínimo aunque la red no esté bajo contención. Ahora mismo, la tarifa mínima de la red es 100 stroops (.00001 XLM). Una sugerencia concreta para iniciar la discusión: ¿qué tal si elevamos el mínimo a 10,000 stroops (.001 XLM) por operación?

Elevar el mínimo reducirá la fluctuación de precios a corto plazo, permitirá a las personas probar ajustes de tarifas de transacción e implementar transacciones de aumento de tarifa en su software, y evitará crear la falsa impresión de que las personas pueden ganar dinero desarrollando bots de trading que solo tienen sentido cuando las transacciones no están justamente valoradas. 10,000 stroops parece un buen punto de partida, pero no sabremos con certeza hasta que lo intentemos, y encontrar la tarifa óptima puede resultar ser un proceso.

¿Qué piensas? ¿Elevar la tarifa mínima haría a Stellar mejor? ¿Parecen razonables 10,000 stroops? ¿Tiene sentido el razonamiento en el resto de este post? ¿Estamos pasando por alto algo?

Finalmente, los validadores determinan la tarifa mínima como parte del consenso, y por lo tanto cualquier decisión sobre tarifas será decisión de ellos. Sin embargo, si elevar la tarifa parece ser una idea con amplio apoyo, podemos hacer una sugerencia y convocar a una votación. Si tienes pensamientos, preguntas o feedback de cualquier tipo, nos encantaría escucharlos. Por favor únete a la discusión en el Grupo de Google de Desarrolladores de Stellar.

Antes de hacerlo, por favor tómate un minuto para leer este post para que tengas una idea de por qué estamos proponiendo este cambio y qué podría significar para ti.

Cómo funcionan las tarifas en Stellar

Cuando envías una transacción a la red de Stellar, especificas una tarifa máxima que estás dispuesto a pagar por operación. Si esa tarifa es menor que el mínimo de la red —que es una configuración de la red determinada por los validadores, y lo que estamos proponiendo aumentar— tu transacción es inválida, y falla antes de ser enviada al ledger. Ese es un punto importante, y volveremos a él más adelante.[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "span", specify a component for it in the `components.types` prop

Asumiendo que la tarifa que especificas es mayor que el mínimo de la red, tu transacción se convierte en candidata para inclusión en el conjunto de transacciones que los validadores aplican al ledger. Lo que sucede a continuación depende de la actividad de la red.

La red de Stellar tiene una capacidad —un número máximo de operaciones que caben en un ledger— y como la tarifa mínima de la red, está determinada por los nodos validadores. Al decidir sobre la capacidad del ledger, los validadores intentan encontrar un equilibrio: debe ser lo suficientemente alta para asegurar un rendimiento de red suficiente, pero lo suficientemente baja para prevenir que los datos del ledger se vuelvan inmanejables. No hay incentivo financiero para ejecutar un nodo de Stellar —la gente ejecuta uno para mejorar la descentralización y asegurar acceso de alta disponibilidad a la red— y limitar la capacidad del ledger hace posible participar en la red sin necesidad de hardware especializado.

Ahora mismo, la capacidad del ledger es de 1,000 operaciones/ledger. Cuando la actividad de la red está por debajo de eso, todas las transacciones válidas hacen el ledger e incurren en la tarifa mínima. Cuando está por encima de eso, la red entra en modo de tarificación de urgencia. Dado que no todas las transacciones pueden hacer el ledger, las transacciones se priorizan basadas en la tarifa que especifican. Las transacciones que ofrecen la tarifa más alta por operación hacen el ledger primero.

El problema actual

La red ha estado en modo de tarificación de urgencia mucho en los últimos meses. Eso es porque los ledgers se están llenando con transacciones fallidas causadas por una multitud de bots de trading intentando aprovechar un pequeño número de oportunidades de arbitraje.

Esto es lo que sucede: Stellar tiene un conjunto único de operaciones llamadas pagos de ruta, que permiten el envío y conversión simultáneos de moneda —yo envío USD; tú recibes NGN— y hacen increíblemente fácil usar la red para transacciones transfronterizas y entre monedas.

Los pagos de ruta convierten moneda consumiendo órdenes en los libros de órdenes integrados de Stellar, y a veces una ineficiencia en los libros de órdenes da lugar a una discrepancia de precios. No entraremos en detalles aquí, pero los desarrolladores astutos se dieron cuenta de que —de vez en cuando— puedes enviar un pago de ruta y terminar con un poco más de dinero del que empezaste, y construyeron bots para buscar esas oportunidades, e intentar capitalizar en ellas.

El problema es, mucha gente construyó bots de arbitraje, y todos buscan las mismas oportunidades. Cuando surge una, es una carrera: el bot ganador envía una transacción que reclama la oportunidad y tiene éxito; los demás bots envían transacciones condicionadas a la existencia de esa oportunidad, y dado que ya no está disponible, esas transacciones fallan.

Debido a que esas transacciones cumplen con el requisito de tarifa mínima, fallan después de ser incluidas en el ledger en lugar de antes, así que terminan estorbando a todos los demás. Es como un grupo de palomas revoloteando alrededor de un banco del parque: tú dejas caer una miga en la acera, todas se lanzan tras ella. Una paloma consigue la miga, las demás se quedan hambrientas, y mientras las perdedoras se quedan ahí arrullando y pavoneándose y deseando lo que podría haber sido, bloquean la acera para que los peatones no puedan usarla.

Por qué necesitamos aumentar la tarifa mínima

Las transacciones de arbitraje fallidas no le hacen bien a nadie —no enriquecen a los desarrolladores; no hacen los libros de órdenes más eficientes— pero, al reclamar espacio limitado en el ledger, causan problemas:

  • Fuerzan a la red a entrar en modo de tarificación de urgencia más a menudo, lo que hace más difícil predecir los costos de transacción
  • Inflan permanentemente el ledger, lo que hace más costoso ejecutar un nodo de Stellar Core o una instancia de Horizon
  • Hacen que la reproducción de datos históricos sea mucho más lenta, lo que hace más engorroso para nuevos nodos unirse a la red
  • Ralentizan los tiempos de cierre del ledger

Estamos pensando en maneras de limitar la cantidad de transacciones de arbitraje fallidas a largo plazo, pero a corto plazo, un aumento de la tarifa podría mitigar el problema. Ahora mismo, la tarifa mínima es tan baja que a los desarrolladores que ejecutan bots de arbitraje no les importa pagar para enviar transacciones que probablemente fallarán. Al elevar la tarifa mínima, el objetivo es hacerlos reconsiderar sus acciones. Vale la pena pagar 100 stroops/operación para unirse a la carrera de las palomas, ¿pero vale la pena pagar 10,000 stroops/operación? En algún punto, el costo supera el beneficio, y los operadores de bots tendrán que abandonar su búsqueda o idear una estrategia más eficiente —y más considerada—.

Elevar el mínimo de la red también ayudará a desincentivar otros usos inconsiderados del ledger: costará más enviar pequeñas cantidades de XLM con un enlace en el memo a cuentas Stellar aleatorias; costará más usar el ledger para almacenar datos arbitrarios. Si fijamos el mínimo correctamente —lo cual de nuevo, puede ser un proceso— podemos disuadir a los actores maliciosos, y asegurar que la red en su conjunto siga siendo efectiva, eficiente y justa. Alejaremos a las palomas.

Cómo te afectará el aumento

En general, elevar el mínimo de la red tendrá un impacto positivo en los usuarios de Stellar. Las transacciones seguirán siendo baratas —¡fracciones de un centavo!— así que tu costo total se mantendrá muy cerca de cero. Las tarifas de Stellar seguirán siendo más bajas que las cobradas por sistemas de pago tradicionales y la mayoría de otras redes blockchain.

Al eliminar los picos de actividad aleatoria de bots de arbitraje, elevar el mínimo también debería hacerlo más fácilpara predecir las tarifas de transacción. Ahora mismo, aconsejamos a las billeteras y aplicaciones orientadas al consumidor que envíen una tarifa de 100,000 stroops/operación para asegurar que sus transacciones no sean exprimidas por la tarificación de urgencia, pero es imposible para ellos predecir cuándo caerá una miga y activará a los bots de arbitraje. Si la actividad del ledger es más consistente, es más fácil razonar sobre —y elaborar un plan para— la gestión de tarifas.

Finalmente, si ejecutas un nodo de Stellar Core o una instancia de Horizon, aumentar la tarifa hará tu vida más fácil. Los datos de la red serán más ligeros, más fáciles de manejar y más baratos de almacenar. Las transacciones fallidas son un exceso de equipaje permanente, y tendrás menos de ellas con las que lidiar.

Sin embargo, si consistentemente envías un número realmente alto número de transacciones, podrías notar, ¡y nos encantaría saber de ti! Y si acaso manejas uno de esos bots de arbitraje, nos encantaría mucho saber de ti! En general, nos encantaría saber de ti. Únete a la discusión.

Por qué ahora es el momento adecuado para el aumento

La sugerencia de aumentar la tarifa mínima ha surgido antes, pero no fue una posibilidad real hasta la reciente actualización de la red al Protocolo 13. El obstáculo eran las transacciones prefirmadas; la solución son los aumentos de tarifa.

Específicas una tarifa al crear una transacción, y si creaste y firmaste una transacción hace un año que especificaba una tarifa de 100 stroops/operación, y tenías la intención de enviar esa transacción en 2021, un mínimo de red de 10,000 stroops te impediría hacerlo. Tu tarifa caería por debajo del mínimo, por lo que tu transacción sería rechazada antes de ser siquiera enviada al libro mayor. Por ejemplo, imagina que pones fondos en garantía para comprar una casa, y acordaste transferirlos al vendedor al cierre: si ya no pudieras enviar la transacción prefirmada, no podrías liberar los fondos, el trato colapsaría, y te preguntarías por qué alguna vez usaste Stellar en primer lugar.

No tenemos idea de cuántas transacciones prefirmadas existen — aún no se han enviado a la red, así que no hay un registro de ellas para consultar — pero es importante asegurar que la red continúe honrando transacciones válidas. Aumentar el mínimo no debería romper las cosas permanentemente.

Al introducir aumentos de tarifa, que te permiten aumentar la tarifa de una transacción prefirmada, el Protocolo 13 resolvió ese problema. Ahora, si intentas enviar una transacción que especifica una tarifa de 100 stroops/operación y descubres que el mínimo de la red ha aumentado, puedes simplemente aumentar la tarifa y reenviar la transacción, sin daño, sin falta. Los aumentos de tarifa dan a los validadores la flexibilidad de aumentar las tarifas para asegurar que la red se mantenga eficiente, y creemos que es hora de aprovechar ese hecho.

Próximos pasos

En última instancia, los nodos validadores en la red deciden dónde establecer la tarifa mínima. Pero como mencionamos al principio de esta publicación, queremos escuchar tu opinión antes de presentar esta propuesta para una votación de validadores. Nuestro plan general:

  • Escuchar y responder a los comentarios en el Grupo de Google de Desarrolladores de Stellar durante las próximas semanas
  • Hacer ajustes a nuestra propuesta según sea necesario
  • Si el ecosistema está de acuerdo en que este es el movimiento correcto…
  • Comenzar a coordinar para asegurarse de que todos estén preparados
  • Programar una fecha para una votación de validadores…
  • Y ver qué sucede

En este punto, la decisión es tuya. ¿Qué opinas sobre aumentar la tarifa mínima de la red? Únete a la conversación.