繁體中文
繁體中文
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 |