Divulgación del Bug de Aumento de Tarifa y el Impacto en la Actualización del Protocolo 20

Autor

Stellar Development Foundation

Fecha de publicación

Soroban

Desarrollador

Contratos Inteligentes

Ayer, como parte del esfuerzo continuo de todo el ecosistema para probar Soroban, un bug fue descubierto en Stellar Core v20.1.0 que podría impactar aplicaciones y servicios que usan aumentos de tarifa para transacciones de Soroban si o cuando el Mainnet se actualice al Protocolo 20.

En este punto, nosotros, el ecosistema — y específicamente los validadores que operan nodos que soportan la red y participan en decisiones de gobernanza — tenemos una elección: continuar con la votación de actualización al Protocolo 20 el 30 de enero como estaba planeado o retrasar la votación para esperar un nuevo lanzamiento de Stellar Core que solucione el bug.

Debido a que este es un bug con impacto limitado que puede ser mitigado mediante la adhesión a las mejores prácticas, nosotros, la Stellar Development Foundation en nuestra capacidad como validador, hemos decidido que nos sentimos cómodos continuando con la votación de actualización al Protocolo 20 el 30 de enero como estaba planeado.

Después de pensar en las posibilidades, creemos que el bug representa un bajo riesgo a través de las Fases 0 y 1 del despliegue de Soroban porque los límites estrictos en las transacciones de Soroban limitarán la pérdida y prevendrán explotaciones a gran escala. También creemos que si las aplicaciones siguen las mejores prácticas — que puedes encontrar en el post de abajo — pueden protegerse de posibles daños. Y así, tenemos la intención de armar nuestros nodos para la actualización como estaba planeado.

Sin embargo…

Depende de otros validadores tomar su propia decisión. Si deciden votar por la actualización, entonces el cronograma actual se mantendrá. Si deciden no hacerlo, la red no se actualizará el 30 de enero, pero programaremos una nueva votación cuando se implemente una solución.

De cualquier manera, los ingenieros de SDF ya están trabajando para resolver el bug, y tan pronto como un nuevo lanzamiento de Stellar Core esté disponible, estamos comprometidos a trabajar con el ecosistema para implementarlo en toda la red y solucionar el problema por completo.

Y mientras que, en última instancia, depende de los validadores revisar la situación y decidir si continuar con la votación como estaba planeado, nosotros — la Stellar Development Foundation, los validadores de la red y el ecosistema en su conjunto — podríamos beneficiarnos todos de alguna conversación sobre qué hacer a continuación. Si tienes preguntas, sugerencias u opiniones, por favor compártelas en el canal #protocol20 del Stellar Dev Discord.

De nosotros, espera transparencia: prometemos compartir cualquier información contigo tan pronto como podamos, y mantenerte informado a medida que las cosas se desarrollen. De ti, pedimos participación: por favor lee la información abajo y, especialmente si operas un validador, déjanos saber qué piensas.

Más sobre el bug y las mejores prácticas recomendadas está abajo.

Visión general

¿Qué es el bug de aumento de tarifa de Soroban?

Para ser claro: este bug solo afecta a las transacciones de Soroban con aumento de tarifa.

Algunos antecedentes: Stellar admite transacciones de aumento de tarifa, que envuelven una transacción interna y pagan las tarifas de esa transacción. Es una característica utilizada para patrocinar tarifas, a menudo por billeteras que quieren ofrecer una experiencia de usuario sin problemas o por entidades que envían muchas transacciones para implementar un pool central de tarifas.

El diseño de tarifas multidimensional de Soroban introduce un componente de tarifa “reembolsable” que puede ser totalmente o parcialmente reembolsado al remitente de la transacción si no se utiliza completamente, y el bug vive donde ese componente reembolsable — que nuevamente, solo existe en transacciones de Soroban — y los aumentos de tarifa se superponen.

El bug de aumento de tarifa causa que el reembolso de la tarifa, si existe, se desvíe del comportamiento esperado.

  • Comportamiento esperado: el reembolso sería recibido por la cuenta fuente de la transacción de aumento de tarifa, alias la cuenta patrocinadora.
  • Comportamiento real: el reembolso es recibido por la cuenta fuente de la transacción original, alias la cuenta patrocinada cuenta

Como resultado del bug:

  • Los usuarios no maliciosos podrían terminar con una cantidad fraccional de XLM que debería ser devuelta a su patrocinador.
  • Los usuarios maliciosos podrían intentar crear transacciones que maximicen la cantidad de reembolsos que reciben.

A continuación, se presentan las mejores prácticas recomendadas para mitigar los riesgos del bug de aumento de tarifa si la actualización al Protocolo 20 continúa como estaba planeado el 30 de enero.

Próximos pasos

Mejores Prácticas para Patrocinar Transacciones

Esta sección describe las mejores prácticas para patrocinar transacciones, independientemente de la existencia de este bug particular.

En general, si usas transacciones FeeBump en tu producto o servicio:

  • Revisa el contenido de las transacciones tanto como sea posible para evitar costos sorpresa. Por ejemplo, si solo esperas transacciones no Soroban, rechaza transacciones que contengan operaciones de Soroban.
  • Solo patrocina transacciones para tu base de usuarios, e implementa controles para limitar la cantidad patrocinada por usuario y globalmente.

Para patrocinar transacciones de Soroban, recomendamos construir la transacción en el servicio de patrocinio y usar el marco de autenticación de Soroban. El cliente de la billetera solo debe enviar una operación o argumentos de invocación de contrato, así como los correspondientes payloads de autenticación firmados. El servicio de patrocinio ejecuta un preflight usando la invocación y autenticación proporcionadas, y luego firma la transacción completa.

También hay algunas medidas adicionales que puedes tomar para mitigar cualquier riesgo potencial:

  • Limita los recursos patrocinados y las tarifas. La regla más simple es no firmar transacciones con una tarifa por encima de algún límite de recurso. Reglas más complejas podrían imponer límites en ciertos recursos (por ejemplo, no más de 10,000,000 de instrucciones si solo tienes la intención de patrocinar transacciones simples que solo involucren interacciones SAC).
  • Limita las interacciones patrocinadas a un pequeño número de contratos y Wasms de confianza. Idealmente, introduce una lista de permitidos de las dApps patrocinadas soportadas. La validación se puede realizar basada en el ID del contrato especificado en los InvokeContractArgs, y luego se puede examinar la huella para verificar que solo se están usando Wasms y contratos adicionales de la lista de permitidos.
  • Solo patrocina operaciones InvokeHostFunction. No patrocines las operaciones de extensión TTL, ya que pueden ser costosas y son difíciles de vincular a una dApp específica, ya que las entradas arbitrarias del ledger pueden tener su TTL extendido.
  • No firmes las transacciones que tengan entradas de autenticación de Soroban con credenciales de SOURCE_ACCOUNT y ninguna operación SOURCE_ACCOUNT(o si la SOURCE_ACCOUNT de la operación es la misma que la cuenta fuente patrocinadora). Esto previene ataques de 'delegado confundido'.

Háblanos

¡POR FAVOR, DANOS TU OPINIÓN!

Queremos oír de ti en el canal #protocol20 del Stellar Dev Discord:

  • Desarrolladores de aplicaciones: ¿esto afecta a tu aplicación, y si es así, es este plan de mitigación suficiente?
  • Validadores: señalen apoyo o desaprobación del plan para actualizar como estaba planeado al Protocolo 20

Próximos pasos

Qué leer a continuación

Artículo

Guía de Actualización del Protocolo 20

Actualización de protocolo

Soroban

Tu guía esencial para actualizar al Protocolo 20, que introduce soporte para contratos inteligentes Soroban en Stellar.

Leer Más

Artículo

El Despliegue por Fases de Contratos Inteligentes de la Red Stellar: El Camino a Mainnet

Soroban

Contratos inteligentes

Desarrolladores

Actualización de protocolo

La liberación de un conjunto completo de software que admite el Protocolo 20, que traerá contratos inteligentes Soroban a Stellar está disponible.…

Ver

Artículo

Protocolo 20: Preparándose para Contratos Inteligentes en Stellar

Contratos Inteligentes

Desarrolladores

Descubre la próxima actualización del Protocolo 20 en la red de Stellar, introduciendo contratos inteligentes de Soroban. Aprende sobre el proceso de…

Saber Más