ETH Kipu
  • Ethereum Developer Pack
  • Módulo 1
    • Intro a Smart Contracts
      • Fundamentos de Blockchain
        • Antecedentes
        • Bitcoin
        • Qué es Blockchain
        • Conceptos Clave en Blockchain
        • Cómo funciona la Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • El nuevo Internet
        • Web 3
        • Elementos Fundamentales
        • Impacto de Ethereum en Diversos Sectores
      • Wallets
        • Componentes de una wallet
        • Tipos de Wallet
        • Códigos mnemónicos
      • Ethereum 101
        • Smart Contracts
        • Cuentas
          • Tipos de cuentas
          • Contenido de cuentas
        • Transacciones
          • Componentes
          • Ciclo de vida
        • Gas
        • Solidity
        • EVM
          • La máquina de estados
          • Opcodes
          • Cómo funciona la EVM
          • Clientes de ejecución
          • DApps
      • Blockchain Explorer
        • Funciones de un blockchain explorer
        • Beneficios de utilizar un blockchain explorer
      • Remix
        • Características de Remix
        • Workspaces o espacios de trabajo
        • Cargar y compilar un contrato
        • Desplegar en la máquina virtual de Remix (Remix VM)
        • Interactuando con funciones
        • Desplegar en una red pública
      • Crea tu primer Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Datos
      • Funciones
      • Variables
        • Ejercicio 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Ejercicio 3
      • Convenciones de nomenclatura
      • Tipos de almacenamiento para variables
      • Estructuras de Control
        • Ejercicio 4
      • Modificadores
      • Eventos
        • Ejercicio 5
      • Tipos de Referencia
        • Arrays
          • Ejercicio 6
        • Mappings
          • Ejercicio 7
        • Structs
          • Ejercicio 8
      • Address Payable
      • Cómo reciben Ether los contratos y funciones
      • Transferencias de Ether
      • Conceptos Avanzados
        • Codificación ABI
        • Hashing
        • This
        • Herencia
        • Abstract
        • Interface
        • Llamadas entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • Estándares, Librerías y Patrones
      • Buenas Prácticas de Diseño
      • Patrones de Diseño
      • EIP y ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crea un Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Toolkit para desarrollo en Ethereum
      • Requisitos para el módulo 4
        • Terminal
        • Git y Github
        • Node.js y npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Ejercicio
        • Hardhat
          • Despliegue de un contrato en Hardhat
          • Despliegue de un contrato en una red pública
        • Scaffold-ETH
          • Características
          • Cómo instalar Scaffold-ETH
  • Módulo 5
    • Seguridad, Pruebas y Auditoría
      • Pruebas
        • Importancia de realizar pruebas
        • Métodos para probar contratos inteligentes
          • Pruebas automatizadas
          • Pruebas manuales
        • Conceptos importantes en testing
        • Herramientas para testing
        • Testing con Hardhat
        • Recursos adicionales
      • Seguridad
        • Una mentalidad distinta de diseño
        • Principales vulnerabilidades en smart contracts
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Ruptura de invariantes)
          • Mishandling of ETH (Mal manejo de ETH)
          • Denial of Service (DoS - Denegación de Servicio)
          • Integer overflow and underflow (desbordamiento y subdesbordamiento de enteros)
          • Phishing y Typosquatting
        • Recursos adicionales
      • Auditoría de smart contracts
        • Proceso de Auditoría
        • Herramientas
        • Cómo prepararse para una auditoría
        • El test Rekt
        • Retos
        • Recursos adicionales
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  • Cómo subir un archivo en IPFS
  • Cómo subir una colección de imágenes a IPFS
  • Pinata

Was this helpful?

  1. Módulo 3
  2. Estándares, Librerías y Patrones

Almacenamiento Descentralizado: IPFS

PreviousCrea un Token ERC-20NextCrea un Token ERC-721

Last updated 8 months ago

Was this helpful?

El Sistema de Archivos Interplanetario (IPFS, por sus siglas en inglés) es una tecnología diseñada para crear una web más descentralizada, resistente y eficiente. A diferencia del modelo tradicional de la web, donde los archivos se hospedan en servidores centrales, IPFS opera en una red de nodos distribuidos, permitiendo que los archivos sean almacenados y accedidos desde múltiples puntos simultáneamente.

Sus principales características son las siguientes:

  • Descentralización: En IPFS, los archivos no se almacenan en un único servidor o ubicación, sino en una red de nodos, lo que ayuda a evitar problemas de censura y de puntos de fallo centralizados.

  • Eficiencia: Los archivos se dividen en pequeños bloques y se distribuyen a través de la red. Cuando un usuario necesita acceder a un archivo, IPFS busca los bloques más cercanos o más rápidos de acceder, reduciendo el ancho de banda necesario y mejorando la velocidad de carga.

  • Persistencia: Gracias a su naturaleza distribuida, una vez que un archivo se sube a IPFS, puede permanecer accesible incluso si algunos nodos se desconectan o son eliminados de la red. Esto contribuye a la durabilidad y permanencia de los datos.

  • Direcciones basadas en contenido: IPFS utiliza identificadores únicos (hashes) basados en el contenido de los archivos en lugar de direcciones de servidor basadas en la ubicación. Esto significa que si el contenido de un archivo no cambia, su hash también permanece igual, lo cual facilita la verificación de la integridad de los datos.

Cómo Funciona

Cuando un archivo se sube a IPFS, se divide en bloques más pequeños, y cada bloque se identifica por un hash único. Estos bloques se distribuyen a través de la red de nodos de IPFS. Cuando alguien quiere acceder a un archivo, IPFS localiza los bloques necesarios a través de la red y los reúne para formar el archivo original. Como los archivos se identifican por su contenido, buscar y recuperar datos en IPFS puede ser más eficiente que en las redes basadas en la ubicación.

Aplicaciones y Uso

IPFS tiene una amplia gama de aplicaciones potenciales, desde la distribución descentralizada de contenido web hasta sistemas de archivo inmutables para registros legales o científicos. También es una tecnología clave para muchas aplicaciones descentralizadas (dApps) en el ecosistema de blockchain, proporcionando una solución para almacenar datos de manera eficiente y resistente.

Cómo subir un archivo en IPFS

Subir un archivo a IPFS implica añadirlo a la red distribuida para que esté accesible desde cualquier punto de la misma. Aquí tienes un proceso paso a paso sobre cómo hacerlo, asumiendo que ya tienes IPFS instalado en tu sistema. Si aún no lo has hecho, el primer paso sería descargar e instalar IPFS desde .

Paso 1: Iniciar el Daemon de IPFS

Antes de subir cualquier archivo, necesitas iniciar el daemon de IPFS, que es un proceso en segundo plano que se encarga de conectar tu nodo (tu computadora) a la red IPFS. Abre una terminal o línea de comandos y escribe:

ipfs daemon

Este comando arrancará el daemon y tu nodo comenzará a conectarse con otros nodos de la red IPFS. Dejarás este proceso corriendo en el fondo.

Paso 2: Añadir el Archivo a IPFS

Con el daemon de IPFS corriendo, puedes añadir archivos a la red. Abre una nueva ventana de terminal para ejecutar el siguiente comando (no cierres el terminal con el daemon corriendo). Navega al directorio donde se encuentra el archivo que deseas subir y ejecuta:

ipfs add <nombre_del_archivo>

Reemplaza <nombre_del_archivo> con el nombre y la extensión del archivo que quieres subir. Este comando dividirá tu archivo en bloques más pequeños, calculará un hash único para cada uno y para el conjunto total, y comenzará a distribuir esos bloques a través de la red IPFS.

Paso 3: Acceder al Archivo en IPFS

Una vez que el archivo se ha añadido a IPFS, recibirás un hash único (CID - Content Identifier) como resultado en tu terminal. Este CID puede ser utilizado para acceder al archivo desde cualquier nodo de la red. Puedes compartir este hash con cualquier persona, y podrán acceder al archivo utilizando la interfaz de línea de comandos de IPFS, una puerta de enlace de IPFS en el navegador, o a través de aplicaciones que soporten IPFS.

Por ejemplo, para acceder a un archivo a través de una puerta de enlace pública de IPFS, puedes usar el siguiente URL en tu navegador:

<https://ipfs.io/ipfs/><CID>

Reemplaza <CID> con el identificador de contenido que recibiste después de añadir tu archivo.

A tener en cuenta:

  • Persistencia: Para que un archivo permanezca accesible en IPFS, debe ser hospedado (anclado) por al menos un nodo en la red. Puedes mantener tu propio nodo corriendo para asegurar la disponibilidad de tu archivo, o utilizar servicios de anclaje de terceros.

  • Privacidad: Ten en cuenta que cualquier archivo subido a IPFS es público y accesible por cualquiera que tenga el CID. Si necesitas compartir información sensible, deberías considerar cifrar los archivos antes de subirlos.

Cómo subir una colección de imágenes a IPFS

Para subir una colección entera de imágenes a IPFS y luego utilizarlas en una colección de NFTs en Ethereum, puedes seguir estos pasos generales. El proceso se puede dividir en dos partes principales: subir las imágenes a IPFS y luego referenciar esos archivos en tus NFTs en la blockchain de Ethereum.

Paso 1: Subir Imágenes a IPFS

  1. Preparar las Imágenes: Asegúrate de que todas las imágenes que deseas subir estén optimizadas para la web, para reducir los tiempos de carga sin comprometer la calidad. Organízalas en una carpeta en tu computadora.

  2. Subir la Colección a IPFS:

    • Abre una nueva terminal.

    • Navega a la carpeta donde tienes las imágenes.

    • Usa el comando ipfs add -r <nombre_de_la_carpeta> para añadir toda la carpeta a IPFS. El flag r indica que estás añadiendo una carpeta y su contenido de manera recursiva. Este comando te proporcionará un CID (identificador de contenido) único para toda la carpeta, así como CIDs individuales para cada archivo dentro de ella.

  3. Registrar los CIDs: Asegúrate de guardar los CIDs de la carpeta y de cada imagen. Los necesitarás para vincular cada NFT a su imagen correspondiente en la blockchain.

Paso 2: Crear y Desplegar una Colección de NFTs en Ethereum

  1. Definir los Metadatos de los NFTs: Los metadatos de cada NFT deben ser un archivo JSON que contenga detalles como el nombre, descripción, y la URL de la imagen en IPFS. Sube estos archivos JSON a IPFS de la misma manera que subiste las imágenes.

  2. Desarrollar el Contrato Inteligente de NFT: Desarrolla un contrato inteligente para tu colección de NFTs usando Solidity. Puedes utilizar el estándar ERC-721 o ERC-1155, dependiendo de tus necesidades. En el contrato, referencia las URLs de IPFS de los metadatos de tus NFTs. Herramientas como las que vimos anteriormente de OpenZeppelin pueden facilitar este proceso.

  3. Desplegar el Contrato Inteligente: Una vez que tu contrato esté listo, despliégalo en la blockchain de Ethereum. Puedes hacerlo utilizando herramientas como Remix o Hardhat.

  4. Acuñar los NFTs: Con tu contrato desplegado, puedes comenzar a acuñar NFTs llamando a la función de acuñación (mint) definida en tu contrato y pasando los CIDs de los metadatos de IPFS correspondientes a cada NFT.

  5. Verificación y Pruebas: Verifica que tus NFTs están correctamente vinculados a sus imágenes y metadatos en IPFS accediendo a ellos a través de un marketplace de NFTs como OpenSea o una billetera compatible con NFTs.

Recuerda que desplegar contratos y acuñar NFTs en Ethereum requiere gas, por lo que deberás tener algo de Ether disponible para cubrir esos costos.

Al igual que con los archivos individuales, asegúrate de que las imágenes y metadatos sean públicos y accesibles para quien posea el NFT. También considera la persistencia de tus archivos en IPFS para asegurar que siempre estén disponibles.

Pinata

Pinata es un servicio que ofrece una manera sencilla y eficaz de utilizar IPFS para alojar y gestionar archivos de forma descentralizada. La relación entre Pinata y IPFS es directa: Pinata actúa como una capa de servicio y una interfaz de usuario amigable sobre IPFS, facilitando a usuarios y desarrolladores el almacenamiento, la gestión y la distribución de contenido en la red IPFS sin necesidad de gestionar su propia infraestructura de nodos IPFS.

Funcionalidades Principales de Pinata

  • Anclaje (Pinning): Pinata permite a los usuarios "anclar" sus archivos en IPFS, lo que significa que los archivos se mantienen disponibles y accesibles en la red de forma continua. Esto es crucial porque, en IPFS, si un archivo no está anclado y todos los nodos que lo contienen se desconectan, ese archivo ya no estará accesible.

  • Gestión de Archivos: A través de su interfaz web y API, Pinata ofrece herramientas para subir, organizar y administrar archivos y datos en IPFS de manera eficiente. Esto incluye la capacidad de crear y gestionar colecciones de archivos, lo que es especialmente útil para proyectos que manejan grandes cantidades de datos, como las colecciones de NFTs.

  • Interfaz de Usuario y API: Pinata proporciona una interfaz de usuario intuitiva para interactuar con IPFS, lo que reduce la barrera de entrada para usuarios no técnicos. Para los desarrolladores, Pinata ofrece una API robusta que permite integrar las capacidades de IPFS en aplicaciones y servicios personalizados.

  • Distribución de Contenido: Al usar Pinata, los archivos subidos a IPFS pueden ser distribuidos eficientemente a través de la red, mejorando la velocidad de acceso y la disponibilidad del contenido. Esto es particularmente valioso para aplicaciones que dependen de la entrega rápida y confiable de contenido digital.

La relación entre Pinata e IPFS es complementaria. Mientras IPFS proporciona la infraestructura de red descentralizada subyacente y el protocolo para el almacenamiento y distribución de archivos, Pinata simplifica y potencia el uso de IPFS para casos de uso específicos como la creación de NFTs, la distribución de contenido multimedia, y la gestión de datos descentralizados. Pinata se encarga de la complejidad técnica asociada con la operación de nodos IPFS, permitiendo que los usuarios se concentren en el contenido y la aplicación en lugar de en la gestión de la infraestructura.

En el contexto de los NFTs (Tokens No Fungibles), Pinata se ha convertido en una herramienta popular para alojar los archivos multimedia que estos representan (por ejemplo, arte digital, música, videos) y los metadatos asociados en IPFS. Al garantizar que estos archivos permanezcan accesibles en la red IPFS, Pinata juega un papel crucial en asegurar la integridad y la disponibilidad a largo plazo de los activos digitales vinculados a NFTs en blockchains como Ethereum.

Instalar y Configurar IPFS: Si aún no lo has hecho, necesitas descargar e instalar IPFS. Puedes encontrar las instrucciones detalladas en el . Una vez instalado, inicia el daemon de IPFS con ipfs daemon.

el sitio web oficial de IPFS
sitio web oficial de IPFS