Blog de AuditOne
Prevención de la pérdida de ingresos: solución de problemas costosos relacionados con los contratos inteligentes para Shi-Universe

Shi-Universe, una plataforma de NFT para videojuegos basada en IOTA, habría perdido ingresos sin saberlo debido a fallos graves en sus contratos inteligentes. ¿Cuál era el mayor problema? Los pagos de regalías por los NFT se perdían en lugar de recaudarse.

Sin una auditoría, estos costosos errores podrían haber pasado desapercibidos, lo que habría provocado pérdidas de ingresos, transacciones fallidas y una merma de la confianza entre los usuarios y los inversores.

Problema clave identificado: los fondos procedentes de las ventas de NFT estaban desapareciendo

El contrato ShiWeas.sol era susceptible de sufrir pérdidas en el pago de regalías debido a la falta de compatibilidad con tokens nativos y a la ausencia de una función de retirada de fondos. ShiWeas.sol establece la dirección (this) como destinataria de las regalías. El contrato no implementaba la función receive(), lo que impedía que aceptara pagos. Como consecuencia, aunque se recibieran, el propietario del contrato no podría retirar los pagos de regalías.

El contrato inteligente de Shi-Universe debía recaudar un porcentaje de cada venta de NFT en concepto de regalías, una forma habitual de que los creadores obtengan ingresos cada vez que se revenden sus NFT. Sin embargo, debido a la falta de ciertas funciones en el contrato, estos pagos no se podían recibir ni retirar, lo que provocó una pérdida de ingresos.

¿Qué salió mal?

  1. Cuando se vendía un NFT, se suponía que el contrato debía recibir una regalía del 5 %.
  2. Sin embargo, el contrato no permitía aceptar pagos en ETH (la moneda utilizada para las ventas en las principales plataformas de comercio).
  3. Como consecuencia, cada vez que alguien compraba un NFT, el pago de los derechos de autor fallaba y desaparecía, en lugar de destinarse a Shi-Universe.
  4. Aunque, de alguna manera, el contrato hubiera recibido fondos, no había forma de retirarlos, lo que significaba que cualquier dinero recaudado quedaría bloqueado en él.

Ejemplo práctico del problema

  • Bob pone a la venta un NFT por 1 ETH en un mercado que envía automáticamente un 5 % (0,05 ETH) en concepto de regalías al creador original.
  • Cuando se vende el NFT, la plataforma intenta enviar 0,05 ETH al contrato de Shi-Universe.
  • Sin embargo, como el contrato no estaba diseñado para aceptar ETH, la transacción falla y se pierde el dinero de las regalías.
  • Por su parte, otro proyecto, ValidsRaider, contaba con un contrato debidamente redactado que permitía cobrar y retirar los derechos de autor sin problemas, lo que garantizaba que nunca perdieran dinero.

El impacto en la empresa

Para Shi-Universe, esto significaba:

❌ Pérdida de ingresos por cada reventa de NFT.
❌ Pérdidas económicas debidas a un contrato inteligente defectuoso.
❌ Compatibilidad limitada con los mercados, lo que reduce el potencial de ganancias.

Solucionar las pérdidas de ingresos y reforzar la seguridad

Se han implementado las funciones «receive()» y «payout()» para recuperar las regalías de NFT perdidas. 

La función `receive()` permite que el contrato ShiWeas.sol acepte pagos en ETH, y la función `payout()` permite al titular del contrato cobrar los pagos de regalías. 

El contrato ShiWeas.sol actualizado incluye ahora las funciones receive() y payout(), en consonancia con las mejores prácticas para garantizar una gestión adecuada de las regalías y mitigar futuras pérdidas derivadas de tokens nativos no compatibles.

Otros riesgos críticos detectados por AuditOne

1. Fallo silencioso en la función _removeFromRNG()

‍‍Fallos silenciosos en el funcionamiento: los errores ocultos pueden provocar un comportamiento impredecible del contrato, lo que dificulta la detección y la resolución de problemas operativos.

La función _removeFromRNG() no devuelve ningún valor si no encuentra el ID. La función falla de forma silenciosa, lo que puede dar lugar a comportamientos inesperados o a suposiciones erróneas si el ID solicitado no existe.

2. Acuñación de NFT en la dirección del contrato mediante la función ownerMint()

Problemas con la acuñación de NFT: si la acuñación falla, es posible que los NFT no se asignen correctamente, lo que puede dar lugar a quejas de los usuarios, fallos en las transacciones y pérdida de activos.

La emisión de NFT a la propia dirección del contrato falla en las funciones ownerMint(). Esto da lugar a intentos fallidos de emisión y a posibles interrupciones en el funcionamiento previsto del contrato.

3. No se ha comprobado si _tokenIds está vacío

Lista de ID de tokens sin comprobar: si no se validan las listas de tokens, pueden producirse incoherencias lógicas y fallos de ejecución inesperados.

No se comprueba si el array _tokenIds está vacío antes de intentar la eliminación. La ejecución continúa incluso si no se elimina el ID de token especificado, ya que el array está vacío, lo que podría provocar inconsistencias lógicas.

4. Falta de compatibilidad con monederos de múltiples firmas

‍Falta de compatibilidad con carteras de múltiples firmas: sin compatibilidad con las carteras de múltiples firmas, las organizaciones y los usuarios preocupados por la seguridad no pueden gestionar de forma segura los fondos y las interacciones con los contratos.

El contrato no es compatible con carteras que utilicen firmas múltiples ni con carteras basadas en contratos inteligentes. Esta limitación reduce la accesibilidad y la facilidad de uso del contrato para las organizaciones descentralizadas o los usuarios que dependen de funciones avanzadas de las carteras.

5. Riesgos de centralización

Riesgos de la centralización: el control centralizado debilita la confianza, aumenta el riesgo de amenazas internas y puede dar lugar a vulnerabilidades de seguridad.

Existen múltiples puntos de centralización dentro del sistema. La centralización reduce la reputación del proyecto y la confianza de los clientes,al tiempo que aumenta el impacto potencial de las acciones maliciosas por parte de usuarios con privilegios.

Se han implementado correcciones adicionales

✅ Se han solucionado los problemas relacionados con la emisión para garantizar una distribución fluida de los NFT

✅ Se ha mejorado la gestión de errores para eliminar los fallos silenciosos

Compatibilidad mejorada con la multifirma para una mayor seguridad y un mejor control de acceso

✅ Reducción de los riesgos de centralización para mejorar la transparencia y la confianza

Los resultados

Con estas correcciones, Shi Universe garantiza ahora:

  • Todas las regalías de los NFT se recaudan correctamente y están disponibles.
  • Un contrato inteligente seguro y libre de fallos silenciosos.
  • Un sistema totalmente operativo, compatible con los mercados online y preparado para crecer.

Los problemas con los contratos inteligentes pueden costarte dinero, usuarios y credibilidad. No esperes a que se produzca una brecha de seguridad:AuditOne ayuda a los proyectos Web3 a corregir fallos ocultos antes de que causen daños.

Reserva tu consulta gratuita sobre seguridad:

Calendario de Google:
https://calendar.app.google/Ai15eyQhiV5c1pBXA
Telegram:
https://t.me/m_ndr
En este artículo
Autor
Daniel Francis
Responsable sénior de producto
¡Comparte esto con tu comunidad!
xtelegramlinkedin
Artículos recientes

¿Buscas más contenido interesante?

Descubre nuestra comunidad
Discord
x
Twitter
Medium
LinkedIn
YouTube