Análisis de seguridad del contrato inteligente ERC 1155 NFT

Análisis de seguridad del contrato inteligente ERC 1155 NFT

Análisis de seguridad del contrato inteligente NFT ERC 1155 PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Tiempo de lectura: 5 minutos

Debes haber oído hablar de los tokens de criptomonedas. Varios tokens juegan un papel vital en el ecosistema web3. Estos tokens representan propiedad, riqueza, credibilidad y autoridad en criptomonedas. La parte divertida es que también puedes crear tu token de criptomoneda. 

Estos tokens son contratos inteligentes que involucran varias funciones para diversas acciones como transferencias, verificación de saldo, etc. Puede crear su token creando un contrato inteligente para él. Aún así, para garantizar que su token esté seguro y darle un sentido de confianza, ERC 20 es el estándar de contrato inteligente que se recomienda seguir para crear tokens fungibles, y ERC 721 es el estándar de contrato inteligente que se utiliza para crear tokens no fungibles (NFT).

ERC 20 y ERC 721 son protocolos de contrato inteligente ampliamente aceptados para la creación de tokens. Proporcionan un entorno seguro y confiable para los tokens. Y estos protocolos siguen mejorando y mejorando. Un paso en esa dirección conduce a la creación de un nuevo protocolo de contrato inteligente ERC 1155 para tokens. Veamos qué es.

1. ¿Qué es ERC 1155?

Todos los ERC, como 20 y 721, son solo estándares para crear contratos inteligentes que se ajustan a diferentes circunstancias para NFT. Tenemos ERC 721 y los tokens fungibles como USDT y DAI siguen los estándares ERC 20. ERC 1155 es un estándar que incluye las funciones y propiedades de ERC 20 y ERC 721.

Suponga que desea crear un programa en el que crea múltiples productos básicos. Por ejemplo, desea crear una ficha llamada oro, otra ficha llamada plata y un rey, y la lógica dice que el que tenga más oro y plata será el rey. Sólo puede haber un rey. Es un protocolo simple, pero para crearlo, deberá implementar 3 contratos solo para activos, uno para un token de oro, otro para plata y uno para el rey, que será ERC 721. Pero, ¿y si puede implementar solo ¿Un contrato que enumera todos esos tokens diferentes?

Este es uno de esos problemas que resuelve el ERC 1155. No necesita implementar un contrato para cada uno de los tokens que desee en la cadena de bloques. Este fue uno de esos ejemplos de contrato ERC 1155. Adivine dónde necesitamos este tipo de sistema con múltiples activos, algunos fungibles, algunos no fungibles. La respuesta es juegos web3. ERC 1155 permite a los desarrolladores de juegos Web3 escalabilidad y desarrollo fluido para transacciones en cadena.

1.1 ID de token en ERC 1155

Debe tener en cuenta cómo se puede verificar el saldo en diferentes tokens ERC 20, solo puede llamar balanceOf(dirección _propietario) función, y puede obtener cuántos tokens contiene esa dirección. Pero ERC 1155 trata con diferentes tokens, por lo que debemos proporcionar diferentes ID para diferentes tokens. Casi todas las funciones relacionadas con los tokens incluyen al menos dos parámetros, tokenId (activo sobre el que desea consultar) y la dirección sobre la que desea saber.

Por ejemplo, digamos que el contrato tiene 3 fichas, oro, plata y rey. Para saber cuánto oro tiene una dirección en particular en ese protocolo, puede llamar a la función balanceOf(dirección _dueño, uint256 _id) en el contrato inteligente. Suponga que el tokenId para el oro se especifica como 1. Entonces puede llamar a saldoDe(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Directrices de auditoría para contratos inteligentes ERC 1155

ERC 1155 existe desde hace algún tiempo y algunas funciones no están disponibles en el protocolo ERC 20 o ERC 721 normal, como la transferencia por lotes. Además, ERC 1155 es menos frecuente en el mercado, lo que hace que esta área sea un poco menos explorada para muchos desarrolladores. QuillAudits comparte información crucial para los protocolos que buscan BUIDL en el ERC 1155, para que puedan ayudar a crear un ecosistema web3 más seguro protegiéndose a sí mismos. 

2.1 Interfaz del receptor ERC 1155

Cuando nuestro contrato ERC 1155 transfiere activos a algún otro contrato, lo que generalmente es un requisito en el protocolo de juego web3, es IMPORTANTE tener la interfaz ERC1155Receiver en el contrato de recepción para una transacción exitosa de los tokens.

Dos funciones que se incluyen en la interfaz del receptor ERC 1155 son: -

  • onERC1155Recibido(operador, de, id, valor, datos)
  • onERC1155BatchReceived(operador, de, ids, valores, datos)

Ambas funciones tienen una funcionalidad casi similar, la única diferencia es que la última es cuando estamos tratando con más de una transacción a la vez, por lo tanto, el nombre de lote, hay una ligera diferencia entre los parámetros y los valores de retorno. Pero aquí solo hablaremos de onERC1155Received. 

Esta función NO DEBE llamarse fuera de un proceso de acuñación o transferencia. Para aceptar la transferencia, debe devolver bytes4(keccak256(“onERC1155Received(address,address,uint256,uint256,bytes)”)) si se permite la transferencia.

Mirando los parámetros: -

  1. operador:- La dirección que inició la transferencia (es decir, msg.sender) 
  2. from:- La dirección que anteriormente poseía el token
  3. id:- El ID del token que se está transfiriendo 
  4. valor: - El número de tokens que se transfieren 
  5. data:- Datos adicionales sin formato especificado 

2.2 ¿Sin función de aprobación ()?

Si alguna vez trabajó con ERC 20 o ERC 721, se habría topado con la función de aprobación (), que permite que alguna dirección tome los tokens aprobados del saldo del propietario. Por ejemplo, si A quiere aprobar que B tome 100 tokens de DAI, entonces A puede llamar a la función de aprobación, diciendo que B tiene derecho a 100 tokens de DAI, y luego B puede realizar una transacción con esa cantidad.

Pero ERC 1155 no tiene un aprobar función para un solo token. Tenemos una setApprovalForAll(operador de dirección, bool aprobado) función, que es llamada por el propietario y toma un operador de parámetro de dirección, que es la dirección del gastador o al que queremos aprobar nuestros tokens. Por lo tanto, no podemos llamar a un aprobar función u otorgar aprobación para un solo token de nuestra lista de tokens ERC 1155, pero en su lugar, todo el acceso al token se aprobará a la vez. El equipo de desarrollo debe ser consciente de esto. Si se ignora, esto puede provocar pérdidas masivas y comprometer el protocolo.

2.3 Algunas comprobaciones periódicas

Las dos secciones anteriores exploraron dos de los controles únicos relacionados con ERC 1155. En esta sección, pasaremos por algunas comprobaciones regulares que no necesitan una explicación muy profunda.

  1. Tenga cuidado con los ID: todas las funciones o interfaces externas que funcionan con el ERC 1155 deben tener el ID del token especificado para tomarlo como entrada.
  2. Burn/Mint: siempre que se llame a estas funciones, solo deben modificar el saldo y el suministro total para la identificación del token especificado.
  3. Semejanza con ERC 20: - Muchas propiedades son como el estándar de token ERC 20. Revisar las pautas de seguridad para ERC 20 también ayudará en este asunto.
  4. Reingreso: como se mencionó, ERC 1155 verifica la interfaz admitida en la lógica de transferencia. Por lo tanto, puede haber varios escenarios que pueden resultar en vulnerabilidad de reingreso. Se recomienda mantener modificadores de protección de no reingreso en las funciones aplicables.

3. Conclusión

El ecosistema Web3 ve un desarrollo continuo en estándares regulares para mejorar la seguridad y la funcionalidad. ERC 1155 es un paso en esa dirección. Pero cuando se publican los nuevos estándares, se crea una brecha de conocimiento que involucra estándares no muy comunes en los protocolos y conlleva el riesgo de un espacio de muestra más pequeño para las medidas de seguridad. Aquí es cuando QuillAudits entra en escena con un equipo de expertos. Abordamos, analizamos y encontramos diferentes formas en que el protocolo puede verse comprometido y aseguramos el protocolo de nuestros clientes con resultados increíbles. ¡Visite nuestro sitio web y asegure su proyecto Web3!

17 Vistas

Sello de tiempo:

Mas de hachís