¿Qué hace nft-standards?
Implementa estándares NFT (ERC-721, ERC-1155) con manejo adecuado de metadatos, estrategias de acuñación e integración con mercados. Útil al crear contratos NFT, construir mercados NFT o implementar sistemas de activos digitales.
Descripción General
Este skill proporciona una guía completa para implementar los estándares NFT más utilizados en la blockchain de Ethereum:
- ERC-721: Estándar para tokens no fungibles (únicos).
- ERC-1155: Estándar multi-token que soporta tokens fungibles y no fungibles en un solo contrato.
Características
Manejo de Metadatos
- Estructura de metadatos conforme a OpenSea (name, description, image, attributes).
- Almacenamiento descentralizado (IPFS, Arweave).
- Almacenamiento centralizado (API REST).
- URI dinámica con actualización de metadatos.
Estrategias de Acuñación
- Acuñación simple: Cualquier usuario puede acuñar.
- Acuñación con lista blanca: Solo direcciones autorizadas pueden acuñar.
- Acuñación con precio: Requiere pago en ETH.
- Acuñación perezosa (Lazy Minting): El creador firma un token sin acuñarlo; el comprador paga el gas al momento de la transferencia.
Integración con Mercados
- OpenSea: Metadatos estándar, fees del creador.
- Rarible: Metadatos estándar, royalties.
- LooksRare: Metadatos estándar.
Seguridad
- Protección contra reentrancia (ReentrancyGuard).
- Prevención de desbordamiento de enteros (SafeMath).
- Control de acceso (Ownable, AccessControl).
- Validación de entradas.
Ejemplo de Código
ERC-721 Básico
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MiNFT is ERC721, Ownable {
uint256 private _nextTokenId;
string private _baseTokenURI;
constructor(string memory name, string memory symbol, string memory baseURI)
ERC721(name, symbol)
Ownable(msg.sender)
{
_baseTokenURI = baseURI;
}
function _baseURI() internal view override returns (string memory) {
return _baseTokenURI;
}
function mint(address to) public onlyOwner {
uint256 tokenId = _nextTokenId++;
_safeMint(to, tokenId);
}
}
ERC-1155 con Metadatos
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MiMultiToken is ERC1155, Ownable {
string public name;
string public symbol;
constructor(string memory _name, string memory _symbol, string memory uri)
ERC1155(uri)
Ownable(msg.sender)
{
name = _name;
symbol = _symbol;
}
function mint(address to, uint256 id, uint256 amount, bytes memory data) public onlyOwner {
_mint(to, id, amount, data);
}
}
Uso con Agentes de IA
Este skill puede ser utilizado con agentes de IA como Claude Code, Cursor y Codex para:
- Generar contratos NFT personalizados.
- Implementar estrategias de acuñación específicas.
- Configurar la integración con mercados.
- Auditar contratos existentes.