Español (ES)
Español (ES)
Appearance
Español (ES)
Español (ES)
Appearance
IPNS (InterPlanetary Name System) te ofrece direcciones estables y compartibles que pueden actualizarse para apuntar a contenido diferente a lo largo del tiempo. Mientras que los CIDs de IPFS cambian cada vez que el contenido cambia, un nombre IPNS permanece igual — solo actualizas a donde apunta.
Disponible en los planes Bodhi (3 nombres, 100 publicaciones/mes) y Nirvana (10 nombres, 1,000 publicaciones/mes).
Aprende más sobre IPNS
Para una inmersion profunda en como funciona IPNS a nivel de protocolo, consulta la documentación oficial de IPFS sobre IPNS.

El problema: Cada vez que subes una nueva version de un archivo a IPFS, obtienes un CID diferente. Si compartiste el CID antiguo con los usuarios, ellos siguen viendo el contenido antiguo. Tendrias que compartir un nuevo enlace cada vez.
La solución: Crea un nombre IPNS una vez, compartelo y actualiza a que apunta cuando tu contenido cambie. Cualquier persona con la dirección IPNS siempre obtiene la version más reciente.
tokenURI de tu NFT a una dirección IPNS. Actualiza los metadatos (ej. un item de juego sube de nivel) sin cambiar el contrato inteligente.https://tudominio.com siempre sirva el contenido IPFS más reciente.k51...) — está es tu dirección permanente y compartible.
QmXk7VRz... o bafybei...).https://ipfs.ninja/ipns/{tu-nombre-ipns}https://dweb.link/ipns/{tu-nombre-ipns}ipns://{tu-nombre-ipns}
Cuando tu contenido cambia:
Usa la sección Resolver en la parte inferior de la página para buscar el CID actual de cualquier nombre IPNS — el tuyo o de cualquier otra persona.
Haz clic en el botón de eliminar junto a cualquier nombre. El registro IPNS expirará de la red dentro de 48 horas.
Puedes apuntar tu propio nombre de dominio a una dirección IPNS usando DNSLink. Esto permite que los usuarios accedan a tu contenido IPFS a través de una URL regular como https://tudominio.com.
Crea un nombre IPNS y pública el CID de tu contenido en el (pasos anteriores).
Agrega un registro DNS TXT en el proveedor DNS de tu dominio:
_dnslink.yourdomain.com TXT "dnslink=/ipns/{your-ipns-name}"Ejemplo: Si tu nombre IPNS es k51qzi5uqu5djcpbukxs...:
_dnslink.myapp.com TXT "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."Verifica el registro usando dig o nslookup:
dig +short TXT _dnslink.myapp.com
# Deberia devolver: "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."Accede a través de cualquier gateway IPFS que soporte DNSLink:
https://ipfs.ninja/ipns/myapp.comO a través de un navegador con soporte IPFS (como Brave):
ipns://myapp.comPropagación DNS
Los cambios de DNS pueden tardar hasta 24 horas en propagarse globalmente. Después de agregar el registro TXT, espera algunas horas antes de probar.
TIP
Solo necesitas configurar DNSLink una vez. Cuando publicas un nuevo CID en tu nombre IPNS, el dominio automáticamente resuelve al nuevo contenido — no se necesitan cambios DNS.
Si usas Cloudflare:
_dnslink, Contenido: dnslink=/ipns/k51..._dnslink.yourdomain.com, Tipo: TXT, Valor: "dnslink=/ipns/k51..."# 1. Build your site
npm run build
# 2. Upload the build output to IPFS
CID=$(curl -s -X POST https://api.ipfs.ninja/upload/new \
-H "X-Api-Key: bws_your_api_key" \
-H "Content-Type: application/json" \
-d "{\"content\": $(cat dist/index.html | base64 -w0 | jq -Rs .), \"description\": \"Website v2.1\"}" \
| jq -r '.cid')
echo "Uploaded: $CID"
# 3. Update your IPNS name to point to the new build
curl -X POST https://api.ipfs.ninja/ipns/publish \
-H "X-Api-Key: bws_your_api_key" \
-H "Content-Type: application/json" \
-d "{\"ipnsName\": \"k51qzi5uqu5dlvj2bv6...\", \"cid\": \"$CID\"}"
# Your site at ipns://k51... now serves the new version// Smart contract points tokenURI to IPNS address:
// tokenURI = "ipns://k51qzi5uqu5dlvj2bv6..."
// When the NFT evolves (e.g., game item levels up):
const newMetadata = {
name: "Dragon Sword",
description: "A legendary weapon — Level 5",
image: "ipfs://QmNewImageCID...",
attributes: [
{ trait_type: "Level", value: 5 },
{ trait_type: "Damage", value: 150 }
]
};
// Upload new metadata
const uploadRes = await fetch("https://api.ipfs.ninja/upload/new", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "bws_your_api_key"
},
body: JSON.stringify({ content: newMetadata, description: "Dragon Sword v5" })
});
const { cid } = await uploadRes.json();
// Update the IPNS pointer — tokenURI stays the same!
await fetch("https://api.ipfs.ninja/ipns/publish", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "bws_your_api_key"
},
body: JSON.stringify({ ipnsName: "k51qzi5uqu5dlvj2bv6...", cid })
});# GitHub Actions: auto-publish to IPNS on every push
- name: Upload to IPFS and publish IPNS
run: |
CID=$(curl -s -X POST https://api.ipfs.ninja/upload/new \
-H "X-Api-Key: ${{ secrets.IPFS_NINJA_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"content": '"$(cat build/output.json)"', "description": "Deploy ${{ github.sha }}"}' \
| jq -r '.cid')
curl -X POST https://api.ipfs.ninja/ipns/publish \
-H "X-Api-Key: ${{ secrets.IPFS_NINJA_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"ipnsName": "${{ vars.IPNS_NAME }}", "cid": "'"$CID"'"}'Todos los ejemplos de la API usan el encabezado X-Api-Key. Obtén tu clave API desde la página de Claves API.
curl https://api.ipfs.ninja/ipns/keys \
-H "X-Api-Key: bws_your_api_key_here"Respuesta:
[
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"keyName": "my-website",
"currentCid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
"lastPublishedAt": 1711123200000,
"publishCountMonth": 12,
"status": "active",
"createdAt": 1711036800000
}
]curl -X POST https://api.ipfs.ninja/ipns/keys \
-H "X-Api-Key: bws_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "my-website"}'Respuesta 201:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"keyName": "my-website",
"createdAt": 1711036800000
}Publicar actualiza el nombre IPNS para apuntar a un nuevo CID. Esto se propaga al DHT de IPFS y puede tomar hasta 60 segundos.
curl -X POST https://api.ipfs.ninja/ipns/publish \
-H "X-Api-Key: bws_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"ipnsName": "k51qzi5uqu5dlvj2bv6...", "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}'Respuesta:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
"published": true
}Busca el CID actual de cualquier nombre IPNS.
curl https://api.ipfs.ninja/ipns/resolve/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"Respuesta:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
}curl -X DELETE https://api.ipfs.ninja/ipns/keys/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"Respuesta:
{ "success": true }k51...).| Plan | Nombres IPNS | Publicaciones / Mes |
|---|---|---|
| Dharma (Gratuito) | No disponible | — |
| Bodhi ($5/mes) | 3 | 100 |
| Nirvana ($29/mes) | 10 | 1,000 |