WEB3DEV Español

Cover image for Diagramación de Contratos Inteligentes para la Seguridad: Un Enfoque Visual | Sm4rty
Juan José Gouvêa
Juan José Gouvêa

Posted on

Diagramación de Contratos Inteligentes para la Seguridad: Un Enfoque Visual | Sm4rty

Diagramación de Contratos Inteligentes para la Seguridad: Un Enfoque Visual | Sm4rty

1

Hola, soy Samrat Gupta, también conocido como Sm4rty, un auditor independiente de contratos inteligentes y cazador de errores a tiempo parcial. En los últimos meses, he observado una tendencia creciente de personas compartiendo diagramas de bases de código de protocolo durante las auditorías.
En este artículo, exploraré la importancia de los diagramas en el contexto de la auditoría de contratos inteligentes y cómo podemos crear diagramas similares para nuestra próxima auditoría.

Empecemos:

¿Por qué dibujar diagramas?

Image description

  1. Mejora la comprensión del código: Los diagramas pueden ayudar a los auditores a obtener una comprensión más profunda de la base de código y su funcionamiento interno.

  2. Ayuda a descubrir problemas críticos: Como gPersoon sabiamente observó, "los problemas interesantes generalmente surgen solo después de obtener una comprensión completa del protocolo." Los diagramas, especialmente beneficiosos para personas con aptitud visual, ayudan a descubrir estas cuestiones cruciales.

  3. Facilita la comunicación efectiva: Los diagramas son una herramienta poderosa para entender sistemas complejos. Pueden ayudar a los equipos de auditoría y a los desarrolladores de protocolos a comprender mejor el sistema, identificar posibles vulnerabilidades y comunicar sus hallazgos entre sí.

  4. Agrega valor al protocolo: Los diagramas pueden agregar un valor significativo durante los compromisos de seguridad, proporcionando representaciones arquitectónicas claras. Esto beneficia no sólo al equipo de auditoría, sino también a los desarrolladores de protocolos, expandiendo sus recursos de documentación.

Herramientas para la Creación de Diagramas:

Image descriptionBásicamente, hay algunas herramientas automatizadas para crear diagramas.

Herramientas automatizadas: Las herramientas automatizadas pueden generar diagramas de manera rápida y fácil, pero no siempre son precisas o completas. Algunas herramientas automatizadas populares incluyen:

  • Solidity Metrics

  • Surya

Herramientas manuales: Las herramientas manuales requieren más esfuerzo, pero pueden ser más precisas y completas. Algunas herramientas manuales populares incluyen:

  • Miro

  • PowerPoint

  • Draw.io

  • Cualquier otra herramienta en línea de UML/pizarra.

  • Papel y lápiz físicos o pizarra blanca.

¿Herramientas automatizadas versus Dibujo Manual?

  • Las herramientas automatizadas pueden ser una buena opción para crear diagramas rápidos y básicos. Pueden ser más rápidas y fáciles de usar, pero no siempre son tan precisas o completas como los diagramas creados manualmente.

  • Las herramientas manuales pueden ser una mejor opción para crear diagramas precisos y completos, especialmente para sistemas complejos. La creación manual de diagramas requiere más esfuerzo, pero puede ayudar a los auditores a comprender mejor el sistema y a identificar problemas más serios.

Tipos de Diagramas:

  1. Diagramas de Estado:
    Los diagramas de estado muestran el estado actual de un contrato inteligente y las transiciones entre diferentes estados al interactuar con el contrato. Piensa en "ir de un estado a otro "al interactuar con un contrato". Pueden ser útiles para visualizar cómo los contratos pasan de un estado a otro durante diferentes interacciones.

  2. Diagramas de Contrato:
    Los diagramas de contrato proporcionan una visión general de los contratos individuales en un ecosistema, delineando sus funciones y relaciones. También pueden mostrar llamadas de función, lo que puede ayudar a visualizar cómo diferentes funciones en diferentes contratos inteligentes interactúan y trabajan juntas.

Creando Diagramas de Contrato

Un diagrama de contrato es una representación visual de las relaciones entre los diferentes contratos inteligentes en un proyecto.

En esta demostración, dibujaremos un diagrama de contrato para la disputa de Beam Auction en Sherlock usando Miro. Para seguir el proceso, se recomienda echar un vistazo rápido a la base de código.

  1. Entiende la visión general del proyecto: Lee los documentos, como especificaciones y materiales del proyecto, y comprende las relaciones entre todos los componentes del contrato inteligente. Esto te dará una comprensión básica del proyecto y de cómo se interconectan los contratos.

  2. Mapea los contratos: Analiza todos los contratos del proyecto. Para cada contrato, dibuja un rectángulo en su diagrama. Esto creará una representación visual de todos los contratos del proyecto.

Image description

  1. Agregar funciones al diagrama: A continuación, en cada caja de contrato, dibujaremos una pequeña caja para cada función externa e interna. Esto mostrará las diferentes funciones disponibles en cada contrato.

Image description

  1. Dibujar las relaciones entre los contratos y las funciones: Dibuja una flecha de cada función hacia todos los contratos/funciones que llama. Esto mostrará cómo están relacionados entre sí los diferentes contratos y funciones.

Image description

  1. Optimizar para obtener claridad: Después de crear inicialmente las conexiones, da un paso atrás para evaluar la claridad general del diagrama. Puede ser necesario reorganizar los elementos para minimizar el cruce de líneas y mejorar la legibilidad del diagrama.

Image description

¿Cómo Crear Diagramas de Máquina de Estado?

Un diagrama de máquina de estado es una representación gráfica de los diferentes estados en que un sistema puede estar y las transiciones entre estos estados.

En esta demostración, dibujaremos un diagrama de contrato para la disputa Beam Auction en Sherlock usando Miro. Para seguir el proceso, se recomienda echar un vistazo rápido a la base de código.

  1. Identificar Operaciones de Cambio de Estado: Comienza identificando los eventos que pueden causar transiciones entre estados. En este ejemplo, la operación que estamos considerando es la "acuñación de un NFT".

  2. Identificar Estados: Reconoce los diferentes estados en que el sistema puede existir. En este ejemplo, los diferentes estados son:

  • Estado inicial: La subasta está establecida, pero aún no ha comenzado.

  • Subasta iniciada: La subasta ha comenzado y los usuarios pueden acuñar NFTs.

  • Subasta terminada: La subasta ha terminado.

  1. Mapear Transiciones de Estado: Mapea las transiciones entre los estados, basándose en las acciones identificadas. En este ejemplo, algunas transiciones son:
  • Estado inicial → Subasta iniciada cuando la subasta comienza.

  • Subasta iniciada → subasta terminada cuando la subasta finaliza.

  • LÍMITE DE ACUÑACIÓN Alcanzado→ Cuando se alcanza el límite de acuñación.

  1. Determinar los Estados Inicial y Final: Identifica el estado inicial del sistema y cualquier estado final que represente la finalización o conclusión del sistema. En este ejemplo, el estado inicial es el estado en que la subasta ha sido establecida, pero aún no ha comenzado, y el estado final es el estado concluído de la subasta.

  2. Tratar con Puntos de Decisión: Representa puntos de decisión donde el siguiente estado depende de ciertas condiciones o elecciones. En este ejemplo, el punto de decisión es si la subasta ya ha comenzado o no. Si la subasta aún no ha comenzado, el siguiente estado será el estado de subasta iniciada. Si la subasta ya ha comenzado, el siguiente estado dependerá de si se ha alcanzado el límite de acuñación o el límite por dirección.

  3. Optimizar para obtener claridad: Revisa y refina el diagrama de estado para la precisión, claridad e integridad. Asegúrate que las transiciones tengan sentido y, en nuestro ejemplo, verifica si representa con precisión el comportamiento del Contrato de Subasta Holandesa (comienza con una oferta alta y va disminuyendo) de Mérito durante la acuñación de NFT.

Una vez completadas todas las etapas, hemos dibujado con éxito un diagrama de máquina de estado para acuñar un NFT en una subasta. Rastreamos algunos cambios en las variables de estado, como MINT_CAP, MINT_CAP_PER_ADDRESS, totalRaised, etc.

Image description

Algunos Ejemplos Más:

A continuación se presentan algunos ejemplos que pueden ayudarnos a dibujar diagramas más complejos:

  1. Diagrama de SudoSwap por Gerard Persoon:

Image description2. Diagrama de Protocolo Lukso por Gerard Persoon:

Image description

  1. Diagrama de estado del Modelo de Gobernanza Compuesta por Jonatas Martins:

Image description

  1. Diagrama de AmbitFinance por CharlesPaladin (Dibujo Físico en Pizarra Blanca):

Image description5. Diagrama de FrankenCoin por Flint_14si2o:

Image descriptionDiagrama de TapoicaDAO por 0xStalin:

Image descriptionDiagrama de estado de metastreetxyz por Jonatas Martins:

Image descriptionDiagrama de Ondo Finance por Zigtur:

Image description

Créditos

https://twitter.com/SpearbitDAO/status/1677031987612098562

https://twitter.com/bytes032/status/1633765501548494851

https://twitter.com/trust__90/status/1661421025920155649

https://twitter.com/zigtur/status/1699110700495368317

Conéctate conmigo:

Twitter | LinkedIn | Github | Instagram

Gracias por leer. ¡Cualquier sugerencia es siempre bienvenida!

Image descriptionEste artículo fue escrito por Sm4rty y traducido por Juan José Gouvêa. El original se puede leer aquí.

Discussion (0)