IPNS
IPNS (InterPlanetary Name System, Межпланетная система имён) — это децентрализованный протокол для создания изменяемых ссылок на контент, размещённый в IPFS (InterPlanetary File System, Межпланетная файловая система). IPNS позволяет привязать к содержимому, хранящемуся в IPFS, постоянное имя, которое не меняется при обновлении данных, в отличие от прямых хеш-ссылок, меняющихся при каждом изменении файла.
Принцип работы
IPNS решает фундаментальную проблему IPFS: адресация контента по его хешу (криптографическому отпечатку). Если файл меняется, его хеш становится другим, и все старые ссылки перестают вести на актуальную версию. IPNS предоставляет механизм, при котором публичный ключ издателя (peer ID) используется как неизменяемый идентификатор, а сам идентификатор указывает на запись, содержащую хеш последней версии контента.
Процесс публикации и разрешения
- Публикация: Владелец контента создаёт IPNS-запись, которая содержит хеш актуального содержимого (например, корневого каталога сайта) и подписывает её своим закрытым ключом. Эта запись распространяется по сети IPFS через DHT (Distributed Hash Table, распределённая хеш-таблица) и протокол PubSub (Publish-Subscribe, издатель-подписчик).
- Разрешение: Пользователь, желающий получить доступ к контенту, обращается по IPNS-имени (например,
/ipns/k51qzi5uqu5d...). Узел IPFS ищет в DHT запись, подписанную соответствующим публичным ключом, проверяет подпись и получает хеш последней версии данных. Затем он загружает контент по этому хешу через стандартный механизм IPFS.
Технические детали
- Идентификаторы: IPNS-имена представляют собой закодированные версии публичного ключа узла (peer ID). Наиболее распространённый формат — мультибазовое (multibase) представление, например, строка, начинающаяся с
k51qzi5uqu5d.... - Записи: IPNS-запись (IPNS Record) — это структура данных, содержащая:
Value: хеш (CID, Content Identifier) контента, на который указывает имя.Validity: время действия записи (обычно в формате Unix timestamp или EOL — End Of Life).ValidityType: тип проверки срока действия (например, EOL).Sequence: порядковый номер записи (увеличивается с каждым обновлением, что позволяет разрешать конфликты).Signature: подпись записи закрытым ключом.- Распространение: IPNS-записи хранятся в DHT, где ключом является хеш публичного ключа. Для ускорения распространения используется протокол PubSub, позволяющий узлам подписываться на обновления конкретного IPNS-имени.
История и развитие
IPNS был предложен как часть архитектуры IPFS в 2015 году Хуаном Бенетом (Juan Benet) в рамках проекта Protocol Labs. Протокол был реализован в основной кодовой базе IPFS (go-ipfs) и с тех пор развивался.
Основные вехи
- 2015 год: Публикация технического описания IPFS, где впервые упоминается IPNS как компонент для обеспечения изменяемых ссылок.
- 2016–2018 годы: Реализация базовой функциональности IPNS в go-ipfs. Протокол использовал DHT для распространения записей, что приводило к высокой задержке (до нескольких минут) при разрешении имён из-за особенностей DHT.
- 2019 год: Внедрение поддержки протокола PubSub для IPNS, что значительно сократило время распространения обновлений (до нескольких секунд) при условии, что издатель и подписчики находятся в одной сети PubSub.
- 2020–2022 годы: Работа над улучшением производительности IPNS, включая оптимизацию DHT и внедрение кэширования записей. Появились альтернативные реализации, такие как IPNS-over-DNS (см. ниже).
- 2023 год: Внедрение IPNS-записей с поддержкой «вечных» ссылок (без временного ограничения) и улучшенной обработкой конфликтов. Разработка спецификации IPNS v2, направленной на повышение безопасности и масштабируемости.
Классификация и альтернативы
IPNS является одним из нескольких методов создания изменяемых ссылок в децентрализованных системах. Его можно классифицировать как протокол уровня приложений, работающий поверх IPFS.
Альтернативные подходы
- DNSLink: Метод, использующий существующую систему доменных имён (DNS) для указания на IPFS-контент. Владелец домена добавляет TXT-запись, содержащую хеш контента. DNSLink быстрее и проще в настройке, но требует контроля над доменом и централизован по своей природе.
- ENS (Ethereum Name Service): Децентрализованная система имён на блокчейне Ethereum. Позволяет привязать к IPFS-хешу человекочитаемое имя (например,
myname.eth). ENS обеспечивает большую децентрализацию, чем DNSLink, но требует транзакций в блокчейне и оплаты газа. - Handshake: Децентрализованная система доменных имён, работающая на собственном блокчейне. Позволяет регистрировать домены верхнего уровня (TLD) и использовать их для IPFS-ссылок.
- Ceramic Network: Протокол для управления децентрализованными данными, который может использоваться для создания изменяемых ссылок, но не является прямой заменой IPNS.
Применение
IPNS находит применение в различных областях, где требуется постоянная ссылка на часто обновляемый контент в децентрализованной сети.
Веб-сайты и блоги
IPNS позволяет хостить статические сайты в IPFS, при этом владелец может обновлять содержимое, не меняя ссылку на сайт. Пользователи могут подписаться на IPNS-имя и автоматически получать обновления. Например, сайт проекта IPFS (ipfs.io) до недавнего времени использовал IPNS для указания на последнюю версию документации.
Децентрализованные приложения (dApps)
IPNS используется для ссылок на обновляемые метаданные, конфигурации или интерфейсы dApps. Это позволяет разработчикам обновлять приложение, не требуя от пользователей загрузки новой версии.
Управление версиями данных
IPNS может применяться для создания ссылок на последнюю версию набора данных, например, в научных исследованиях или проектах с открытыми данными. Каждый раз, когда данные обновляются, владелец публикует новую IPNS-запись, а пользователи получают актуальную версию по тому же имени.
Системы управления содержимым (CMS)
IPNS интегрируется с децентрализованными CMS, такими как Textile или Fleek, позволяя публиковать и обновлять контент без централизованного сервера.
Критика и ограничения
Несмотря на свою полезность, IPNS имеет ряд недостатков и подвергается критике.
Производительность
- Задержка при разрешении: Поиск IPNS-записи в DHT может занимать от нескольких секунд до нескольких минут, особенно в начале работы узла. Это делает IPNS непригодным для приложений, требующих мгновенного доступа.
- Зависимость от DHT: DHT не всегда надёжна, особенно в небольших или фрагментированных сетях. Узлы могут не найти запись, если она не была достаточно распространена.
Сложность использования
- Управление ключами: Для использования IPNS необходимо генерировать и хранить закрытый ключ. Потеря ключа делает невозможным обновление ссылки, и контент становится недоступным по этому имени.
- Нечеловекочитаемые имена: IPNS-имена представляют собой длинные строки символов, что затрудняет их запоминание и передачу. Для решения этой проблемы используются системы имён, такие как ENS или DNSLink, которые могут быть привязаны к IPNS.
Безопасность
- Атаки на DHT: Теоретически возможно проведение атаки «Сивилла» (Sybil attack) на DHT, что может привести к подмене IPNS-записи. Однако подпись записи закрытым ключом делает такую атаку сложной, если злоумышленник не скомпрометирует ключ владельца.
Альтернативы
- DNSLink часто оказывается более практичным решением для большинства случаев, так как он быстрее и не требует управления ключами. Однако он централизован и зависит от DNS.
- ENS предоставляет более децентрализованное решение, но требует оплаты газа и работы с блокчейном.
Интересные факты
- Название «InterPlanetary Name System» было выбрано в соответствии с общей концепцией «межпланетных» технологий, разрабатываемых Protocol Labs, которые предполагают работу в условиях высоких задержек и нестабильных соединений, характерных для космических коммуникаций.
- IPNS не является единственной системой имён в IPFS. Существует также IPNS-over-DNS, который комбинирует IPNS с DNS для ускорения разрешения.
- В 2022 году Protocol Labs анонсировала работу над IPNS v2, которая должна решить проблемы производительности и масштабируемости, в том числе за счёт использования более эффективных структур данных.
- IPNS может использоваться для создания «живых» ссылок на контент, который постоянно обновляется, например, на ленту новостей или потоковые данные.
Источники
- Juan Benet. «IPFS - Content Addressed, Versioned, P2P File System». Protocol Labs, 2014.
- Protocol Labs. «IPFS Docs: IPNS». Официальная документация IPFS.
- Protocol Labs. «IPFS Specification: IPNS». GitHub-репозиторий спецификаций IPFS.
- «IPFS: The InterPlanetary File System». Wikipedia.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →