Блокчейн: больше, чем Биткоин
Чем нам запомнится Биткоин? Нет-нет, это не начало некролога, и никто никого не хоронит! Я хочу спросить: в чем уникальность технологии Биткоина, что в ней нового? Электронную наличность мы видели и раньше (DigiCash от Дэвида Чаума, proof-of-work в реальной жизни применяли, цифровые подписи – вообще классика. Trustless P2P сети? Тоже не ново, хотя уже теплее.
Кто-то скажет, что комбинация всего перечисленного выше и есть то самое выигрышное решение, но акцент здесь нужно поставить на одной конкретной вещи. Блокчейн. Даже если бы первым blockchain-based приложением был не Биткоин со своими монетками, а, например, БитЗомби (сервис для координации выживших после зомби-апокалипсиса), то именно его называли бы революционной идеей, изменившей мир.
Блокчейн – это не просто общая база данных, хранящаяся целиком у каждого узла в сети. Ее уникальная особенность в том, что любой участник может самостоятельно удостовериться в том факте, что его копия совпадает с копиями большинства других узлов. Совпадает полностью, до единого бита, в одном и том же порядке. Конечно, всегда есть некоторая вероятность ошибки, но она ничтожно мала (вернее, ее можно сделать сколь угодно малой). Ключевое слово – «самостоятельно»; это значит, что для работы сети не нужно доверять другим узлам. Лучше верить в математику. На практике это является решением “задачи византийских генералов”, а ученые называют его «механизмом распределенного консенсуса».
Можно даже не хранить весь блокчейн у себя. Информация внутри блоков хранится в виде дерева, поэтому можно удостовериться, что «лист» дерева (транзакция или любые другие данные) содержится в цепочке, не скачивая ее всю. И пока в сети есть хотя бы один узел, можно говорить о том, что существует и блокчейн. То есть, фактически – это как вечный двигатель, который не сможет остановить никто и ничто (кроме разве что тепловой смерти вселенной).
И именно технология блокчейна делает Биткоин таким замечательным. Конечно же, возникает вопрос: а применима ли она где-то еще, кроме финансов и зомби-апокалипсиса? И второй вопрос: а оправдано ли это применение? Сегодня мы попробуем это выяснить, взглянув на различные приложения, имеющие своей основой блокчейн.
Отказоустойчивый DNS-сервер: Namecoin
Мы начнем с исторически первого альтернативного применения блокчейна – проекта распределенной DNS Namecoin. Ее задача: реализовать возможность регистрировать стандартные DNS-записи, производить над ними обычные операции (типа обновления) и, разумеется, получать к ним доступ. Тогда любой клиент, обладая копией актуального блокчейна, легко сможет проверить, какой IP в данный момент соответствует такому-то адресу сайта. Польза, разумеется, в децентрализации: цензурировать или блокировать сразу все узлы в сети невозможно.
Объяснить базовую схему работы Namecoin довольно просто. Пусть транзакция будет содержать некоторые дополнительные данные, не относящиеся к монетам как таковым. Например, можно поместить в блокчейн запись “REGISTER: www.cryptonote.org -- <IP address> -- <owner name>” и заплатить определенную дополнительную комиссию за такую транзакцию. Или: “UPDATE www.cryptonote.org -- <new IP address> -- <new owner name>”, тоже со своей ценой.
Разумеется, нужны дополнительные правила, кроме размера комиссии: например, транзакция “REGISTER name” считается невалидной, если в блокчейне уже есть запись “name” и она пока активна (обновлять записи Namecoin нужно каждые 36000 блоков, то есть каждые 250 дней). Кроме того, при обновлении записи нужно поставить подпись тем ключом, который связан с этой записью, чтобы доказать право владения.
Namecoin, конечно, никак не защищает от киберсквоттинга. В отсутствие центрального регистрирующего органа некому и подавать жалобу, если ваша торговая марка была занята кем-то другим. Разумеется, такой «бизнес» требует средств, как и киберсвоттинг за пределами блокчейна.
А что, если злоумышленник, видя вашу регистрирующую транзакцию, отправляет мгновенно и свою, с такой же заявкой? Ясно, что только одна из них может попасть в блокчейн. Получается, с 50% вероятностью он сможет перехватить ваш домен без предварительного паркинга. Для этого в Namecoin есть следующий хитроумный механизм: самой первой транзакцией является запись типа “REGISTER HASH <hash>”, где hash – это хэш от вашей заявки. Зная только хэш, невозможно понять, к какому имени он относится, поэтому злоумышленник не сможет захватить домен, даже если тоже отправит хэш-заявку – для него она бесполезна. Честный же владелец через некоторое время отправляет вторую транзакцию, уже с полной информацией. Система проверит, что ее хэш уже был записан в блокчейне, и примет регистрацию.
В целом, можно охарактеризовать Namecoin как удобный инструмент (по крайней мере, первый в своем роде), выполняющий свою задачу. Человеку с нелибертарианскими взглядами, возможно, придется не по вкусу отсутствие кассационной инстанции, однако даже он должен оценить тот факт, что децентрализация спасает от многих серьезных проблем: цензура, DDoS и т.д.
Неуничтожимое облачное хранилище: Datacoin, StorJ
Блокчейн – это база данных. В ней (теоретически) может храниться что угодно, вплоть до ASCII-портретов. Так давайте хранить там все, что захотим! Так можно охарактеризовать подход проекта Datacoin. В этом альткойне была реализована простая возможность прикреплять к своей транзакции файлы до 128 килобайт, разумеется за определенную стоимость. В любой момент можно получить доступ к этому файлу благодаря «неубиваемой» p2p сети.
Тем не менее, сложно назвать такую модель очень удобной. Файл навсегда останется в блокчейне – это удобно только его владельцу, тогда как остальные участники должны взять на себя труд по его передаче и хранению. Можно сказать, что комиссия за данные равномерно «размазывается» по всем майнерам, которые поддерживают сеть, но ведь не все узлы являются майнерами! Кроме того, удалить файл из блокйчена нельзя (даже если он вам уже не нужен и даже надоел).
StorJ подходит к вопросу более серьезно. Мы не будем сейчас вдаваться в детали реализации, а опишем лишь общую концепцию. Основное отличие от Datacoin в том, что за хранение на своем компьютере хотя бы части блокчейна пользователь получает вознаграждение, т.е. фактически является майнером. Тот, кто выделяет 20 ГБ, получает в два раза больше, чем владелец 10 ГБ. Полученные в результате такого майнинга монеты можно потратить на размещение собственных данных в блокчейне. О том, как реализована такая вещь на практике, можно прочитатьтут итут.
Получается, что StorJ – эдакий Bittorent Sync без альтруизма. В том смысле, что работает схема не на доброте душевной, а на вполне конкретных рыночных отношениях. Последние, как известно, оказываются зачастую самым крепким фундаментом.
Беспристрастные свидетели: Proofofexistence.com
Брюс Шнайер в своей книге «прикладная криптография» приводит следующий протокол:
- Алиса в момент T1 обладает некоторым документом (например, описанием своего изобретения) и хочет, чтобы в будущем она могла доказать этот факт (типичная задача для патента).
- Она вычисляет хэш документа и отправляет его посреднику Тренту.
- Трент подписывает хэш вместе с текущей датой своим приватным ключом.
- В будущем Алиса сможет предъявить полную копию своего документа, и каждый сможет убедиться в совпадении хэша, верности подписи и даты.
Видите проблему? Мы вынуждены доверять Тренту в том, что он поставит правильную дату, не напортачит с подписью, да и вообще – не откажется сотрудничать. Но незаменимых людей не бывает, и поэтому на сцену снова выходит блокчейн, выступая в роли беспристрастного и честного посредника.
Сервис Proofofexistence.com реализует очень простую функцию: помещает хэш любого файла в транзакцию, которая попадает в блокчейн Bitcoin. В принципе, такую процедуру можно сделать практически вручную, «на коленке». Какая от нее польза?
В оригинальном вайтпейпере Сатоши Накамото называет блокйчен «распределенным сервером меток времени», и не случайно. Блокчейн не только защищает данные от изменения, удаления и т.д., но и упорядочивает их. Блоки идут один за другим, порядок транзакций внутри блока тоже вполне определен. Заголовки блоков даже содержат метки времени, хотя они и не совсем точны (допускают расхождения в плюс-минус час). Из-за этого иногда первый из двух последовательных блоков может иметь более позднюю метку, чем второй. Идеально для того, чтобы понять (с точностью до часа), в какой момент появились данные!
Помещение в блокчейн криптографического хэша вместо самого файла решает две задачи. Во-первых, экономит место, т.к. хэш от любых данных всегда фиксированной длины (а для нашей задачи хранить сам файл в блокчейне не обязательно). Во-вторых, хэш до нужного момента не раскрывает сам файл – это актуально, например, если речь идет о каких-то патентах.
Наверняка есть и другие сервисы, реализующую такую идею, но мне о них не известно. В любом случае, блокчейн здесь вписывается идеально: Брюс Шнайер остался бы доволен.
Неподконтрольное общение: Bitmessage, Twister
Здесь все понятно по названию. Оба проекта – Bitmessage и Twister – выгодно используют свойство децентрализованности и непотопляемости блокйчена, как площадки для общения.
Bitmessage – относительно старый проект, первая версия датируется 2012 годом. Он использует блокчейн именно как хранилище сообщений. Разумеется, не для всех: по умолчанию клиент хранит лишь данные последних двух дней. Благодаря древовидной структуре данных можно удалить все, кроме хэша корня дерева, и при этом сохранить целостность всей цепочки.
А зачем тут блокчейн? Bitmessage был создан не с нуля, а как форк Биткоина, наследуя все его структуры и спецификации. Транзакции были превращены в сообщения, адреса – в идентификаторы пользователей и чат-румы. Многое, конечно, было изменено со времени выхода первой версии, но многое и осталось в качестве атавизмов.
Я не буду подробно описывать весь функционал, поскольку он не очень связан с блокчейн-технологией. Надо лишь отметить, что в дизайне нашел применение и еще один элемент Биткоина: Proof of Work. Чтобы не допустить спама, для отправки любого сообщения необходимо выполнить небольшую работу по подбору хэша. По сути, это в чистом виде реализованная идея Hashcash Адама Бека.
Twister – это, как легко догадаться, аналог Твиттера. По сути он очень похож на Bitmessage, только блокчейна в нем на самом деле нет. Вернее, он не используется для хранения сообщений. Имена пользователей помещаются в цепочку Bitcoin примерно по тому же механизму регистрации, что и в Namecoin. Здесь нам важно только установить однозначное соответствие «имя» - «ключ» (кто первый зарегистрировался), поэтому создатели здраво рассудили, что незачем создавать отдельный блокчейн для этих целей.
Что же касается самих сообщений – действительно, зачем им блокчейн? Сообщения – не транзакции, не существует такой вещи как «противоречивые наборы сообщений», для которой нам было бы важно, какую версию поддерживает большинство узлов. Это просто общее хранилище, которое одновременно хранится у всех участников – для этого есть технологии Bittorrent, DHT и т.д. В этом основное отличие Twister от Bitmessage, и, на мой взгляд, в не пользу последнего.
В следующем эпизоде
- Пожалуйста, перелогиньтесь. Универсальная идентификация через блокчейн.
- Беспристрастное казино.
- Футурология и цифровые активы.
- Умные контракты.
- Немного экзотики
Проекты на основе блокчейна 2015: Часть II