Português BR
Português BR
Appearance
Português BR
Português BR
Appearance
IPNS (InterPlanetary Name System) oferece endereços estaveis e compartilhaveis que podem ser atualizados para apontar para conteúdo diferente ao longo do tempo. Enquanto os CIDs do IPFS mudam toda vez que o conteúdo muda, um nome IPNS permanece o mesmo — você apenas atualiza para onde ele aponta.
Disponivel nós planos Bodhi (3 nomes, 100 publicações/mes) e Nirvana (10 nomes, 1.000 publicações/mes).
Saiba mais sobre IPNS
Para um aprofundamento sobre como o IPNS funciona no nível do protocolo, consulte a documentação oficial do IPFS sobre IPNS.

O problema: Toda vez que você faz upload de uma nova versão de um arquivo para o IPFS, você recebe um CID diferente. Se você compartilhou o CID antigo com usuarios, eles ainda veem o conteúdo antigo. Você teria que compartilhar um novo link toda vez.
A solução: Crie um nome IPNS uma vez, compartilhe-o é atualizatualize para onde ele aponta sempre que seu conteúdo mudar. Qualquer pessoa com o endereço IPNS sempre recebe a versão mais recente.
tokenURI do seu NFT para um endereço IPNS. Atualize os metadados (ex.: item de jogo sobe de nível) sem alterar o contrato inteligente.https://seudominio.com sempre sirva o conteúdo IPFS mais recente.k51...) — este e seu endereço permanente e compartilhavel.
QmXk7VRz... ou bafybei...).https://ipfs.ninja/ipns/{seu-nome-ipns}https://dweb.link/ipns/{seu-nome-ipns}ipns://{seu-nome-ipns}
Quando seu conteúdo muda:
Use a seção Resolver na parte inferior da página para consultar o CID atual de qualquer nome IPNS — o seu ou de qualquer outra pessoa.
Clique no botão de excluir ao lado de qualquer nome. O registro IPNS expirara da rede dentro de 48 horas.
Você pode apontar seu próprio nome de dominio para um endereço IPNS usando DNSLink. Isso permite que os usuarios acessem seu conteúdo IPFS através de uma URL regular como https://seudominio.com.
Crie um nome IPNS e publique o CID do seu conteúdo nele (passos acima).
Adicione um registro DNS TXT no provedor DNS do seu dominio:
_dnslink.yourdomain.com TXT "dnslink=/ipns/{your-ipns-name}"Exemplo: Se seu nome IPNS for k51qzi5uqu5djcpbukxs...:
_dnslink.myapp.com TXT "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."Verifique o registro usando dig ou nslookup:
dig +short TXT _dnslink.myapp.com
# Deve retornar: "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."Acesse via qualquer gateway IPFS que suporte DNSLink:
https://ipfs.ninja/ipns/myapp.comOu via um navegador com suporte IPFS (como Brave):
ipns://myapp.comPropagação DNS
Alterações de DNS podem levar até 24 horas para se propagar globalmente. Após adicionar o registro TXT, aguarde algumas horas antes de testar.
TIP
Você só precisa configurar o DNSLink uma vez. Quando você pública um novo CID no seu nome IPNS, o dominio automaticamente resolve para o novo conteúdo — nenhuma alteração DNS necessária.
Se você usa Cloudflare:
_dnslink, Conteúdo: 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 os exemplos da API usam o cabeçalho X-Api-Key. Obtenha sua chave API na página de Chaves API.
curl https://api.ipfs.ninja/ipns/keys \
-H "X-Api-Key: bws_your_api_key_here"Resposta:
[
{
"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"}'Resposta 201:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"keyName": "my-website",
"createdAt": 1711036800000
}Publicar atualiza o nome IPNS para apontar para um novo CID. Isso se propaga pelo DHT do IPFS e pode levar até 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"}'Resposta:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
"published": true
}Consulte o CID atual de qualquer nome IPNS.
curl https://api.ipfs.ninja/ipns/resolve/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"Resposta:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
}curl -X DELETE https://api.ipfs.ninja/ipns/keys/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"Resposta:
{ "success": true }k51...).| Plano | Nomes IPNS | Publicações / Mes |
|---|---|---|
| Dharma (Gratuito) | Não disponível | — |
| Bodhi ($5/mes) | 3 | 100 |
| Nirvana ($29/mes) | 10 | 1.000 |