Blog entry by ppjln ppjln

Anyone in the world

Одним из вариантов для создания почти «неуязвимого» доменного имени, как было выяснено в предыдущем тексте, является использованием псевдодоменов в зоне .onion.

Однако у этого метода есть несколько недостатков. Во-первых, доменное имя .onion представляет собой совершенно нечитаемую строку из 56 символов, шансов же завести себе что-то хоть немного красивое практически нет. Во-вторых, работать с «луковой» маршрутизацией умеют далеко не все браузеры. Собственно, пока только TOR и умеет делать это в полном объеме. Ну и, наконец, самый большой недостаток – если вы делаете домен под обслуживание через .onion, то он должен иметь «нормальный» хостинг, то есть все файлы должны быть размещены на одном компьютере, подключенном к сети интернет и выполняющем роль сервера.  Так что при таком подходе невозможно полностью отвязаться от централизованной версии интернета со всеми вытекающими отсюда печальными последствиями – отдельный компьютер является слишком уязвимым звеном, он может сломаться, быть похищенным, его можно вычислить, блокировать доступ к сети и прочее, и прочее. Если он перестает работать, то и сайт больше будет не доступен.

Конечно, если бы удалось совместить распределенную файловую систему и «луковую» маршрутизацию, это было бы почти ультимативным решением. К сожалению, проект TOR ориентирован прежде всего на обеспечение анонимности пользователей в сети, а вопросы хранения файлов при работе с его технологиями отходят на второй план. До сих пор нет удовлетворительных механизмов интеграции продуктов TOR и, например, [[рассмотренной ранее]] распределенной файловой системы IPFS.

Однако, существует прекрасный инструмент, пригодный, в частности, и для обслуживания альтернативных доменных систем – блокчейн, тот самый, который лежит в основе современных криптовалют.  Сначала немного поговорим о блокчейне, а потом посмотрим, как можно использовать этот подход для обслуживания доменных имен с высочайшей степенью надежности.

Прежде всего, нужно примерно понимать, что такое хэширование и хэш-функция.

Хеширование — это преобразование строки произвольной длины в битовую строку фиксированной длины. То есть мы можем взять любой текст, например, все содержание книги «Война и мир» Толстого (а там, на минуточку, 3 млн 246 тыс. букв), а потом выполнить его шифрование с помощью так называемой хэш-функции. Самое важное – эта функция будет давать одинаковый результат для всех одинаковых строк, то есть преобразовывать одинаковый текст в тот же хеш. Например, результат шифрования может выглядеть так:

6de4c03655fdc3e982e3bfc4f055dae5064547e8b78ef951b80c94b657a5c684

Но если будет пропущена хотя бы одна запятая или какая-нибудь буква поменяет регистр, то хеш полностью изменится – ниже я просто убрал точку в конце шифруемого текста:

efdc5e0108e3906fea8c93efb1d9616b7a26aa26549c5d47a1b6c3fda8199ac9

На данный момент нет технологий, позволяющих по значению хэш-функции восстановить исходную строку за реальное время. Может быть, когда-нибудь, когда квантовые компьютеры станут реальностью, мы и сможем выполнять дешифровку быстро, но не сейчас.

В самой своей простой и в то же время ясной интерпретации блокчейн (blockchain)  — это последовательная цепочка строк (часто именуемых блоками), которые защищены от подмены.

Ключевой момент в определении – «защищены от подмены»! Что это значит? Посмотрим на простом строчном примере, как можно создать такую защищенную от изменений последовательность данных.

Если мы будем хранить в какой-то базе данных (неважно, как она устроена, централизована или нет) записи, последовательно получающиеся друг из друга, пропущенные через хэш-функцию, то их, каждую в отдельности,  будет невозможно расшифровать. Но не будут сохраняться связи между различными строками, а при их изменении будут меняться записанные значения хэш-функций и по динамике изменений можно будет сделать определенные выводы о содержимом записей. Самое ужасное, что какой-нибудь «вредный человек» может изменить одну из записей (вместе с ее хэшем), но при этом все связанные записи останутся неизменными и будет сложно заметить вмешательство в одну из строк нашего хранилища.

Представим теперь, что мы не просто храним хэшированные записи, но вместе с каждой строкой храним и информацию о предыдущей записи (или предыдущем блоке). Тогда система блоков будет устроена так, что никто не сможет незаметно изменить отдельную запись, не повлияв на другие. Например, пусть первая запись в нашей цепочке – просто строка «Привет, это первая заметка!». Если пропустить ее через хэш-функцию, получим значение

7cb70ea12f13042dbfbbf492c20e943b2c62a1007a9921e36f5479f6aa748bc9

Вторая запись по построению будет содержать собственно
вторую запись – например, строку  «Привет, это вторая запись!», а также хеш первой записи:
7cb70ea12f13042dbfbbf492c20e943b2c62a1007a9921e36f5479f6aa748bc9_разделитель_Привет, это вторая запись!

В таком виде значение хэш-функции для второй записи будет иметь вид:

8af30f625141cd685dd3ad40f32b0046b562e4efd9746f8225f5a56543a0e50a

Если продолжить цепочку далее, то и этот хеш станет частью третьей записи, и так далее. При этом, если мы изменим вторую запись, то её хеш изменится и станет совсем-совсем другим. Следовательно, он не будет совпадать с тем, который был использован при формировании третьего блока. Таким образом, технология  блокчейна позволяет нам создавать цепочки строк, которые невозможно изменить незаметно.

Теперь для того, чтобы поменять что-то в блоке без разрушения доверия пользователей к нему, нужно будет это сделать таким образом, чтобы хеш-функция от блока не поменялась. А это как раз практически невозможно, если у нас используется криптографически стойкая хеш-функция. Либо поменять в том числе и значение хеш-функции для блока. Но тогда придётся менять и значение хеш-суммы в следующем блоке. А это потребует изменений, в свою очередь, в хеш-сумме всего второго блока, а потом и в третьем, и так далее. Получается, что для того, чтобы поменять информацию в одном из блоков, нужно будет перегенерировать всю цепочку блоков, начиная с модифицируемого. Реально ли это сделать?

Вообще, существуют три механизма работы блокчейнов:

·         централизованный с доверенным центром

·         централизованный с недоверенным центром

·         децентрализованный вариант с использованием доказательства работы.

Наибольший интерес (и – наименьший для компаний, продающих blockchain-решения) представляет   децентрализованная система blockchain без выделенных центров генерации блоков. В blockchain -системах каждый участник может взять набор транзакций, ожидающих включения в журнал, и сформировать новый блок. Однако в децентрализованных системах, получивших какое-то практическое значение,  это не так просто, поскольку разработчики накладывают дополнительные ограничения на формирование новых блоков.  Для blockchain типа BitCoin таким важнейшим инструментом ограничения стал механизм, который получил название «доказательство работы». Математически он довольно сложен и специально его здесь рассматривать мы не будем – цель у нас сейчас другая. Но дополнительные ограничения позволяют с очень высокой степенью надежности исключить злонамеренное вмешательство в систему блокчейна и подделку хранящихся в ней записей.

Децентрализованные блокчейны по своему устройству очень стойкие базы данных. Из-за их характерных свойств удалить или изменить данные после того, как они были записаны, чрезвычайно сложно. Если говорить о Биткойне и других больших сетях, это практически невозможно. Так что транзакции в блокчейне лучше всего рассматривать как окончательные и не подлежащие изменению.

Именно это свойство позволяет использовать децентрализованные блокчейн-системы для организации независимых доменных имен, успешно взаимодействующих с распределенными файловыми системами.

Блокчейн-домены — это адреса, которые существуют в виде токенов или смарт-контрактов в децентрализованном интернете. Они сопоставляют отдельные адреса блокчейна с удобочитаемыми доменными именами. В результате вместо длинного блокчейн-адреса, например, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, можно использовать короткий домен, допустим, media.SIGEN.crypto.

Основные отличия блокчейн-доменов от обычных:

·         блокчейн-домен — это не просто домен, а, скорее, отдельный доменный актив на блокчейне. Владелец домена несет полную ответственность за доступ к нему — если он потеряет приватный ключ от домена, доступ тоже будет утерян;

·         владельцы блокчейн-доменов получают полный контроль над ними и могут управлять доменами с помощью приватных ключей. Это практически полностью исключает возможность внешней цензуры и значительно повышает безопасность. Только владелец сайта может удалить его, заблокировать доступ к нему или что-то изменить в нем; 

·         децентрализованные домены хранятся в публичном децентрализованном реестре, то есть в блокчейне, а не на сервере;

·         в децентрализованном интернете нет никакого централизованного органа управления. 

Есть три основных области применения децентрализованных доменов:

·         Криптоплатежи — блокчейн-домены позволяют переводить цифровые активы. Для этого необходимо просто указывать домен пользователя вместо адреса его кошелька. Это удобно — не надо вводить длинные адреса и можно перестать бояться допустить в них ошибку. Благодаря этому пользователи могут переводить друг другу средства так же, как сейчас это делают в сервисах вроде PayPal или Venmo — достаточно лишь прикрепить свой кошелек к своему блокчейн-домену.

·         Децентрализованные сайты и приложения, которые контролируют только их владельцы.

·         Конфиденциальные мессенджеры, в которых пользователи хранят сообщения в зашифрованном виде на собственных компьютерах. 

Блокчейн-домены — это важная часть децентрализованного интернета — технологий Web 3.0 или DWeb (Decentralized Web). Это схожие термины, которые предполагают сеть, в которой нет единого централизованного органа управления, пользователи имеют полный контроль над своими профилями и размещаемым контентом, а компании не могут торговать данными пользователей. 

Единой системы блокчейн-доменов пока нет. Их разрабатывают несколько компаний, среди которых Unstoppable Domains, Namecoin, HandShake и Ethereum Name Service (ENS). 

Unstoppable Domains и Namecoin предлагают новые расширения доменных имен (домены верхнего уровня) — например, .bit, .zil, .crypto, .eth и так далее. Такие домены полностью независимы от традиционных DNS и ICANN. 

HandShake пытается создать полноценную децентрализованную альтернативу ICANN, где домены будут распределятся через систему блокчейн-аукционов. 

А вот ENS предлагает систему блокчейн-доменов, которая интегрируется с традиционной DNS. Так, владелец традиционного доменного имени может зарегистрировать точно такое же имя в блокчейн-сервисе на доменах .kred, .xyz и .luxe.

Важно отметить, что подавляющее большинство блокчейн-доменных систем имеют полную или почти полную интеграцию с одной из децентрализованных файловых систем, прежде всего – с IPFS, самой технологически продвинутой системой, которой сейчас ежедневно пользуются свыше 4 млн. человек.

Так что существует достаточно много вариантов для того, чтобы разместить контент децентрализованно, а затем еще и завести красивое доменное имя в одной из блокчейн-систем, для организации удобных ссылок на свой контент.

Рассмотрим чуть подробнее проект Unstoppable Domains — это крупнейший поставщик блокчейн-доменов, которые работают на базе блокчейнов Ethereum и Zilliqa, а также на протоколе IPFS. Компания основана в 2018 году в Сан-Франциско. 

Unstoppable Domains построены на Crypto Name Service (CNS) - наборе смарт-контрактов Ethereum, которые определяют, как создаются и используются домены блокчейна.

Каждый домен CNS выпускается как токен ERC-721, также известный как невзаимозаменяемый токен (NFT).

NFT - это уникальные неделимые токены, которые часто используются для представления уникальных цифровых элементов.

Использование стандарта ERC-721 позволяет разработчикам легко интегрировать Unstoppable Domains в другие приложения, позволяя пользователям управлять своими криптовалютными доменами из совместимых кошельков криптовалюты, бирж и торговых площадок.

CNS состоит из двух смарт-контрактов: контракта реестра и контракта Resolver. Контракт с реестром управляет созданием новых крипто-доменов и поддоменов, а также владением доменами. В контракте с реестром нет администратора, а это означает, что никакая организация, в том числе Unstoppable Domains, не может управлять вашими доменами или передавать их без вашего разрешения. Контракт Resolver используется для разрешения доменов или перевода удобочитаемого имени в адрес криптовалюты, а также для хранения записей домена.

Домены могут принадлежать как внешним адресам, так и смарт-контрактам, что означает, что доменами блокчейнов можно управлять с помощью кошелька с несколькими подписями или с помощью управления доменом, совместно используемого группой администраторов.

 Стоимость блокчейн-доменов Unstoppable Domains начинается от $10 за стандартный адрес, а наиболее редкие продаются за десятки тысяч долларов (рекордная цена — $100 000 за домен win.crypto). Домены могут принадлежать как внешним адресам, так и смарт-контрактам — это означает, что ими можно управлять с помощью криптокошелька с мультиподписью. Более того, такими доменами можно торговать на вторичных рынках NFT, например, на OpenSea.

В Unstoppable Domains есть 10 доменных расширений. Первоначальным было .zil на блокчейне Zilliga. Но осенью 2019 года проект добавил поддержку Ethereum и ЕТН-регистр .crypto. Это также позволило интегрировать доменные имена в dApps. 

В июне 2020 года Unstoppable Domains запустили еще восемь расширений: 

·         .coin — для стейблкоинов и денежных переводов;

·         .wallet — для цифровых криптоплатежей;

·         .bitcoin — для ВТС-кошельков;

·         .x и .888 — премиум-адреса;

·         .nft — для держателей NFT;

·         .dao — для децентрализованных автономных организаций (DAO);

·         .blockchain — для кошелька Blockchain․com. 

Помимо доменов Unstoppable Domains развивает собственный браузер, протокол чата зашифрованных сообщений Unstoppable Chat, децентрализованную блогинг-платформу dBlog и конструктор децентрализованных сайтов. 

Сейчас в Unstoppable Domains зарегистрировано более 1.9 млн блокчейн-доменов и свыше 90 000 децентрализованных сайтов. Пользователям сервиса также доступно порядка 275 криптовалют и токенов на более чем 100 криптовалютных кошельках и биржах, включая Trust Wallet, Blockchain․com, BRD, Cake Wallet, Coinbase, Litewallet, OKEx и MyEtherWallet. 

Ниже мы приведем пример самых популярных сайтов:

·         ivanontech.crypto

·         timdraper.crypto

·         pomp.crypto

·         coinomi.crypto

·         atomicwallet.crypto

·         kyber.crypto

·         chrisdunn.crypto

·         ama.crypto

Обратите внимание, что как только Вы переходите на сайт, url автоматически меняется, на не очень приятный – это как раз и есть значение хэш-функции для доменного имени.

Как видите, блокчейн-адреса работают совершенно аналогично обычным и их можно использовать в адресной строке любого браузера. Конечно, в привычном мире интернет Web 2.0  такой адрес отправляет нас на шлюз Unstoppable Domains, однако многие браузеры при необходимости (например, блокировка адресов Unstoppable Domains) найдут путь, пользуясь и значением хэш-функции. Во всяком случае, TOR успешно работает со всеми этими адресами. В крайнем случае, всегда есть возможность использовать специальное программное обеспечение (аналогично тому, которое мы использовали для работы с IPFS).

Основное достоинство для рассмотренной вкратце системы имен Unstoppable Domains состоит в возможности интеграции доменного имени с распределенным файловым хранилищем. Получается, что ни сами файлы, ни адрес для адресации невозможно как-то разрушить или блокировать. Однако блокчейн-домены являются платными в том смысле, что по сути они представляют некое материальное воплощение для единиц криптовалюты.


[ Modified: Monday, 7 February 2022, 2:42 PM ]