Давайте разбираться что это такое и узнаем причину их возникновения.
Централизованные адреса
URI (Uniform Resource Identifier) — это стандарт, который используется для идентификации ресурсов в сети. Вы используете его всегда, когда заходите на HTML страницу вашего любимого сайта.
URI содержит URL и URN, а общий синтаксис выглядит так:
<scheme>:<domain>?<queryParams>#<fragment>
scheme — указывает на то, как обращаться к ресурсу, чаще всего это сетевой протокол (http, ftp, ldap).
domain — идентификатор ресурса, например, адрес сайта.
queryParams — необязательные дополнительные данные ресурса, например, параметры фильтрации или сортировки.
fragment — необязательный вторичный идентификатор ресурса, например, идентификатор абзаца на странице.
Пример URI веб-адреса:
https://baskovsky.ru/?s=example#primary
У такого стандарта со временем обнаружились серьезные недостатки.
scheme — Крупные вендоры постепенно ограничивают поддержку различных схем в своих браузерах, что приводит к тому, что большинство пользователей использует только схему HTTPS. Это создает необходимость в редиректах к внешним приложениям, что приводит к появлению нестандартизованных Deep Links, например, тех, которые открывают установленные приложения на вашем мобильном телефоне.
domain — После того, как регистрация доменных имен стала доступной для широкой аудитории, возникла новая проблема — появление киберсквоттеров и борьба за доменные имена без необходимых проверок. Сегодня легко получить домен в зоне .com, который изначально был создан для коммерческих целей, и использовать его для сайта-визитки физического лица, которому больше подошел бы .name. Централизованные проверки на его соответствие доменной зоне не проводятся. В результате выбранные доменные зоны часто не соответствуют своему назначению и выбираются создателями просто за красивые и еще не занятые имена. Для себя эту проблему решают ИТ-гиганты, способные договориться с крупными регистраторами, например, Charleston Road Registry, и получают личные домены, идентичные их торговым маркам, например, .google, .gmail или .android. Однако, что делать простым мелким организациям? Кроме того, создание таких доменов продолжает приводить к ослаблению сетевого нейтралитета, поскольку это позволяет провайдерам по согласию с корпорацией загружать определенные домены быстрее других или вовсе не тарифицироваться.
queryParams — Все больше веб-разработчиков избегают использования QueryParams, перенося часть логики на Ajax, что может ограничивать функциональность для пользователей, отключающих JavaScript. Создатели браузеров усугубляют ситуацию, запрещая отключение скриптов и перенося весь WebAPI на JavaScript. Чтобы попасть на определенную страницу с разных устройств, сегодня пользователям недостаточно просто перейти по ссылке, им приходится повторять весь процесс взаимодействия с веб-сайтом. Кроме того, действия SEO-специалистов приводят к тому, что вместо отображения отсутствующей страницы (статус 404) пользователи автоматически перенаправляются (статус 301) на главную страницу, что усложняет работу поисковым роботам и вводят пользователей в ступор.
fragment — Рост числа SPA (Single Page Applications) приложений, которые используют асинхронную загрузку содержимого, привел к тому, что идентификаторы «#» перестали использоваться для перехода к определенному фрагменту на странице. Я даже сталкивался с ситуацией, когда веб-разработчики полностью переставали использовать id в разметке сайта, используя только классы для идентификации элементов. Хотя это является приемлемой практикой для применения стилей в CSS, это неправильно, когда речь идет об идентификации фрагментов на странице.
В результате, небрежность веб-мастеров, ограничения стандартов для крупных провайдеров и нежелание регистраторов привели к развитию альтернативных стандартов, но наиболее существенное влияние оказало быстрое развитие блокчейн-технологий.
Децентрализованные адреса
Решая проблемы, связанные с традиционными URI в современных распределенных реестрах, таких как блокчейн, W3C в 2022 году утвердила стандарт DID (Decentralized Identifiers). Decentralized Identifiers представляют собой протокол цифровой идентификации, который все больше разработчиков начинают использовать вместо связки логин-пароль в пользу идентификации, основанной на блокчейн-кошельке.
Стандарт ссылок стал более гибким и расширяемым. Синтаксис выглядит следующим образом:
did:<method-name>:<method-specific-id>#<fragment>
method-name — адрес контроллера ресурса, предпочтительно принимающий Linked Data и предоставляющий понятную схему, аналогичную словарю Schema.org.
method-specific-id — уникальный идентификатор контроллера ресурса, который может также включать привычные URL для обеспечения простоты миграции в сеть Web2.
К примеру, адрес вашего биткоин-кошелька может выглядеть следующим образом:
did:example:123456789abcdefghi#keys-1
Стандарт DID позволяет проверять подлинность идентификаторов и связанных с ними данными, не раскрывая личную информацию и не полагаясь на централизованные системы управления доступом. Такая реализация дает пользователям больший контроль над своими связанными данными и возможность управлять ими без необходимости обращаться к централизованным службам управления идентификацией, например, к службе DNS.