简体中文
简体中文
Appearance
简体中文
简体中文
Appearance
IPNS (InterPlanetary Name System) 为您提供稳定、可分享的地址,可以随时间更新指向不同的内容。虽然 IPFS CID 在每次内容更改时都会变化,但 IPNS 名称保持不变 — 您只需更新它指向的位置。
在 Bodhi(3 个名称,每月 100 次发布)和 Nirvana(10 个名称,每月 1,000 次发布)计划中可用。
了解更多关于 IPNS
要深入了解 IPNS 在协议层面的工作原理,请参阅 IPFS 官方文档中的 IPNS。

问题: 每次您将文件的新版本上传到 IPFS 时,都会获得不同的 CID。如果您已经将旧 CID 分享给用户,他们仍然看到旧内容。您必须每次都分享新链接。
解决方案: 创建一次 IPNS 名称,分享它,然后在内容更改时更新它指向的位置。拥有 IPNS 地址的任何人始终获取最新版本。
tokenURI 指向 IPNS 地址。更新元数据(例如游戏道具升级)而无需更改智能合约。https://yourdomain.com 始终提供最新的 IPFS 内容。k51... 开头)— 这是您永久的、可分享的地址。
QmXk7VRz... 或 bafybei...)。https://ipfs.ninja/ipns/{your-ipns-name}https://dweb.link/ipns/{your-ipns-name}ipns://{your-ipns-name}
当内容更改时:
使用页面底部的解析部分查找任何 IPNS 名称的当前 CID — 您的或其他人的。
点击任何名称旁边的删除按钮。IPNS 记录将在 48 小时内从网络中过期。
您可以使用 DNSLink 将自己的域名指向 IPNS 地址。这让用户可以通过普通 URL(如 https://yourdomain.com)访问您的 IPFS 内容。
创建 IPNS 名称并将内容 CID 发布到该名称(上述步骤)。
在域名 DNS 提供商处添加 DNS TXT 记录:
_dnslink.yourdomain.com TXT "dnslink=/ipns/{your-ipns-name}"示例: 如果您的 IPNS 名称是 k51qzi5uqu5djcpbukxs...:
_dnslink.myapp.com TXT "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."使用 dig 或 nslookup 验证记录:
dig +short TXT _dnslink.myapp.com
# Should return: "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."通过任何支持 DNSLink 的 IPFS 网关访问:
https://ipfs.ninja/ipns/myapp.com或通过支持 IPFS 的浏览器(如 Brave):
ipns://myapp.comDNS 传播
DNS 更改可能需要最多 24 小时在全球传播。添加 TXT 记录后,请等待几小时再测试。
TIP
您只需设置一次 DNSLink。当您将新 CID 发布到 IPNS 名称时,域名会自动解析到新内容 — 无需更改 DNS。
如果您使用 Cloudflare:
_dnslink, Content: dnslink=/ipns/k51..._dnslink.yourdomain.com, Type: TXT, Value: "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"'"}'所有 API 示例使用 X-Api-Key 头。从 API 密钥页面获取您的 API 密钥。
curl https://api.ipfs.ninja/ipns/keys \
-H "X-Api-Key: bws_your_api_key_here"响应:
[
{
"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"}'响应 201:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"keyName": "my-website",
"createdAt": 1711036800000
}发布会更新 IPNS 名称指向新的 CID。这会传播到 IPFS DHT,可能需要最多 60 秒。
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"}'响应:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
"published": true
}查找任何 IPNS 名称的当前 CID。
curl https://api.ipfs.ninja/ipns/resolve/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"响应:
{
"ipnsName": "k51qzi5uqu5dlvj2bv6...",
"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
}curl -X DELETE https://api.ipfs.ninja/ipns/keys/k51qzi5uqu5dlvj2bv6... \
-H "X-Api-Key: bws_your_api_key_here"响应:
{ "success": true }k51...)。| 计划 | IPNS 名称数 | 每月发布次数 |
|---|---|---|
| Dharma(免费) | 不可用 | — |
| Bodhi($5/月) | 3 | 100 |
| Nirvana($29/月) | 10 | 1,000 |