Content Identifier
Content Identifier (сокращённо CID) — это уникальный идентификатор, используемый в децентрализованных системах, в первую очередь в протоколе IPFS (InterPlanetary File System), для адресации и проверки целостности содержимого. В отличие от традиционных URL, которые указывают на местоположение файла (например, сервер и путь), CID представляет собой криптографический хеш от содержимого самого файла или его метаданных. Это означает, что один и тот же CID всегда соответствует одному и тому же содержимому, независимо от того, где и на каком устройстве это содержимое хранится.
Принцип работы
Основой CID является криптографическая хеш-функция. Когда пользователь или система добавляет файл в IPFS, содержимое файла (или его блоки) пропускается через хеш-функцию (например, SHA-256). Полученный хеш — это строка фиксированной длины, которая и становится частью идентификатора. Если содержимое файла изменится хотя бы на один байт, хеш изменится полностью, что приведёт к созданию нового CID.
CID состоит из нескольких частей, закодированных в мультиформате (multiformats), что обеспечивает гибкость и обратную совместимость:
- Multihash: префикс, указывающий на используемую хеш-функцию (например, SHA-256, SHA-512, BLAKE2b) и длину хеша.
- Codec: идентификатор формата кодирования содержимого (например, raw, dag-pb, dag-cbor, json).
- Version: версия формата CID (CIDv0 и CIDv1).
Версии CID
CIDv0
Это первая версия идентификатора, используемая в ранних версиях IPFS. CIDv0 всегда начинается с символов Qm (результат кодирования хеша SHA-256 в Base58). Он имеет фиксированную длину (46 символов) и не содержит явного указания на версию или кодек. Пример: QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco.
CIDv1
Вторая версия была введена для устранения ограничений CIDv0. CIDv1 включает в себя явные префиксы для версии, кодека и хеш-функции. Это позволяет использовать различные алгоритмы хеширования и форматы данных. CIDv1 обычно представляется в кодировке Base32 (регистронезависимой) или Base36, что удобно для использования в URL и веб-приложениях. Пример: bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.
Применение
IPFS (InterPlanetary File System)
Основная область применения CID — IPFS. В этой файловой системе CID используется как адрес контента. Когда пользователь запрашивает файл по CID, сеть ищет узлы, которые хранят этот хеш, и возвращает соответствующие блоки данных. Это обеспечивает дедупликацию (одинаковые файлы имеют одинаковый CID) и устойчивость к цензуре (контент не привязан к конкретному серверу).
IPNS (InterPlanetary Name System)
CID может быть использован для создания неизменяемых ссылок. Однако для изменяемого контента (например, обновляемого сайта) используется IPNS, который связывает изменяемое имя (публичный ключ) с актуальным CID. Пользователь может подписывать новые версии контента, и другие узлы будут видеть последнюю версию по тому же адресу.
Filecoin
В сети Filecoin, построенной на основе IPFS, CID используется для доказательства хранения данных. Участники сети (майнеры) хранят CID и предоставляют криптографические доказательства того, что данные по-прежнему доступны и не повреждены.
Децентрализованные приложения (dApps)
CID активно применяется в децентрализованных приложениях для хранения статических файлов (HTML, CSS, JavaScript, изображения). Например, сайты, размещённые на IPFS, имеют CID, который может быть использован для доступа к ним через шлюзы (например, ipfs.io). Проекты, такие как Uniswap, используют CID для хранения интерфейсов своих децентрализованных бирж.
Блокчейн и смарт-контракты
CID может быть записан в блокчейн (например, Ethereum) для создания неизменяемых ссылок на внешние данные. Это используется в NFT для указания на метаданные токена (изображение, описание, атрибуты). Смарт-контракты могут ссылаться на CID, гарантируя, что данные не будут подменены.
Преимущества и ограничения
Преимущества
- Целостность данных: CID гарантирует, что полученный файл точно соответствует тому, что было запрошено. Любое изменение содержимого приводит к другому CID.
- Дедупликация: Одинаковые файлы, загруженные разными пользователями, будут иметь один и тот же CID, что экономит место в сети.
- Устойчивость к цензуре: Контент не привязан к конкретному серверу или домену. Если один узел удаляет файл, он может быть найден на других узлах.
- Офлайн-доступ: CID может быть использован для адресации контента в локальной сети или на устройстве без подключения к интернету.
Ограничения
- Неизменяемость: Любое изменение содержимого требует создания нового CID. Это может быть неудобно для часто обновляемых данных (например, новостных лент). Для решения этой проблемы используется IPNS или DNSLink.
- Сложность для человека: CID представляет собой длинную строку символов, которую трудно запомнить и ввести вручную. Для удобства используются доменные имена (DNSLink) или короткие ссылки.
- Зависимость от сети: Для получения данных по CID требуется доступ к сети IPFS или к шлюзу. Если все узлы, хранящие данные, отключены, контент станет недоступен.
Критика и альтернативы
Основная критика CID связана с его неизменяемостью и сложностью для конечных пользователей. В ответ на это были разработаны альтернативные подходы:
- Content Addressable aRchives (CAR): формат упаковки данных IPFS, который может включать несколько CID.
- Hypercore Protocol: использует похожий принцип, но с акцентом на потоковую передачу и синхронизацию.
- Secure Scuttlebutt (SSB): использует хеш-ссылки для социальных сетей.
В России IPFS и CID не имеют специального правового статуса, но их использование регулируется общими законами о распространении информации (ФЗ «Об информации, информационных технологиях и о защите информации»). Владельцы контента, распространяемого через IPFS, несут ответственность за его содержание.
Источники
- IPFS Documentation: Content Identifiers (CIDs). Protocol Labs.
- Juan Benet. IPFS - Content Addressed, Versioned, P2P File System. 2014.
- Multiformats Specification. Protocol Labs.
- Filecoin Specification. Protocol Labs.
- «Об информации, информационных технологиях и о защите информации» (Федеральный закон № 149-ФЗ).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →