Русский
Русский
Appearance
Русский
Русский
Appearance
IPNS (InterPlanetary Name System) предоставляет вам стабильные, доступные для обмена адреса, которые можно обновлять для указания на различный контент с течением времени. В то время как CID IPFS меняются при каждом изменении контента, имя IPNS остаётся прежним — вы просто обновляете, на что оно указывает.
Доступно в планах Bodhi (3 имени, 100 публикаций/мес.) и Nirvana (10 имён, 1000 публикаций/мес.).
Узнайте больше об IPNS
Для глубокого погружения в работу IPNS на уровне протокола см. официальную документацию IPFS по IPNS.

Проблема: Каждый раз, когда вы загружаете новую версию файла в IPFS, вы получаете другой CID. Если вы поделились старым CID с пользователями, они по-прежнему видят старый контент. Вам пришлось бы каждый раз делиться новой ссылкой.
Решение: Создайте имя IPNS один раз, поделитесь им и обновляйте, на что оно указывает, когда ваш контент меняется. Любой, у кого есть адрес IPNS, всегда получает последнюю версию.
tokenURI вашего NFT на адрес 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}
Когда ваш контент меняется:
Используйте раздел Разрешение в нижней части страницы, чтобы узнать текущий CID для любого имени IPNS — вашего или чужого.
Нажмите кнопку удаления рядом с любым именем. Запись IPNS истечёт из сети в течение 48 часов.
Вы можете направить своё доменное имя на адрес IPNS с помощью DNSLink. Это позволяет пользователям получать доступ к вашему контенту IPFS через обычный URL, например https://yourdomain.com.
Создайте имя IPNS и опубликуйте ваш CID контента (шаги выше).
Добавьте DNS TXT-запись у вашего DNS-провайдера:
_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
# Должно вернуть: "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."Доступ через любой шлюз IPFS, поддерживающий DNSLink:
https://ipfs.ninja/ipns/myapp.comИли через браузер с поддержкой IPFS (например, Brave):
ipns://myapp.comРаспространение DNS
Изменения DNS могут занять до 24 часов для глобального распространения. После добавления TXT-записи подождите несколько часов перед тестированием.
TIP
DNSLink нужно настроить только один раз. Когда вы публикуете новый CID под именем IPNS, домен автоматически разрешается в новый контент — изменения DNS не требуются.
Если вы используете Cloudflare:
_dnslink, Содержимое: dnslink=/ipns/k51..._dnslink.yourdomain.com, Тип: TXT, Значение: "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
}Узнайте текущий CID для любого имени IPNS.
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 |