22 июня 2021

Распределённые и децентрализованные хранилища. Часть II. Filecoin vs. Chia

Зачем это? 

Вопрос не простой и отчасти на него ответ дал в первой части, а отчасти в онлайн-вебинаре. Но поскольку он многомерен — ответ простым не будет и сегодня попробую вместе с CTO The Power (Игорь Белоусов) обозначить ещё несколько важных моментов. 

Итак… 

Filecoin Chia

Это Годзилла против Кинг Кинга, США против Советов, Web 3.0 против CBDC и … в общем — выберете сами что именно. И всё же за всем пафосом противостояния есть вполне конкретные, научные даже, вещи. Определим их через следующие положения:

  1. Почему Chia и Filecoin — “блокчейны на дисках”?
  2. Добавим Биткоин?
  3. Энергоэффективность — наше всё. 
  4. Сравниваем консенсусы: FIL, XCH, BTC.
  5. Сравниваем назначения блокчейнов.
  6. Так при чём же всё таки диски?

Согласно этому плану — идём дальше. 

Уже несколько лет во всём мире в первых рядах видна “зелёная” повестка. Не обошло это веяние и мир криптовалют. Несмотря на то, что И. Маск заострил внимание на зелёности монет только недавно, вопрос про “напрасную” трату электроэнергии Биткоином поднимался постоянно. Многие, очень многие, проекты ставили во главу угла решение этого вопроса.

Что ж, давайте перейдём к рассмотрению проектов, которые вольно или невольно, но могут считаться более энергоэффективными чем проекты с классическим PoW-консенсусом. 

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

Почему именно диски и почему статья родилась именно сейчас? 

Сложно не заметить как за месяц жёсткие диски подорожали более чем в два (!) раза, и тенденции к снижению нет. Словосочетание mining chia появилось в большом количестве блогов и онлайн-СМИ.

При этом проект Chia сейчас сравнивают с другим недавним проектом  Filecoin. Оба проекта сосредоточены на работе с дисками, но почему-то только появление Chia вызвало ТАКОЙ рост цен. Видимо из-за того, что сами сервисы довольно сложные, большинство сравнений — поверхностные. 

Попробуем же погрузится глубже?!

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

Почему же консенсус PoW многие считают не энергоэффективным?

Дело в том, что PoW — чистый консенсус со случайным выбором лидера. Т.е. все участники пытаются вытянуть счастливый билет и стать производителем блока. Если представлять себе игру в кости, то все участники стараются купить себе большое количество игральных кубиков и “рук” для бросания. Естественно все действо по определению счастливчика требует энергии. Основная претензия в данном случае звучит так: “хорошо бы чтобы поиск счастливчика сопровождался ещё и полезным действием, — например, полезными вычислениями”. Однако до сих пор не существует ни одного предложения по такому типу консенсуса (хотя отчасти это и пытались сделать https://foldingcoin.net и аналоги). Именно поэтому не сложно говорить о том, что Биткоин не энергоэффективен: нет альтернативы. 

“Если альтернативы нет, то её надо создать!”

Наверное, с этими мыслями последние годы появляются многие сотни статей, как научных так и околонаучных. Проект Filecoin представляет собой один из интереснейших реализаций идеи сделать особенностью консенсуса — полезную работу.

Filecoin

Проект направленный на то, чтобы одни пользователи предоставляли другим своё дисковое пространство. И именно работа по предоставлению пространства и декларируется как новый консенсус. Но при внимательном рассмотрении механизма функционирования консенсуса Filecoin можно увидеть что всё на так однозначно.

Начнём с определений.

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

Основная проблема проектов с лидером на основе работы доказуемо-случайной функции (ДСФ) — возможность достаточно легко управлять результатами её работы лидером (для постояного захвата лидерства), так как в блокчейнах ДСФ может основываться только на уже внесённых ранее данные. Естественно проекты знают о такой проблеме и стараются решить её различными способами. Вот и в Filecoin есть, как минимум, два дополнения для её решения. 

Первое — создание отдельной виртуальной цепочки маяков случайности, на основе данных которых и работает ДСФ. Второе — ограничения для функций, которые работают в расширении консенсуса (в первую очередь это касается параметра “завершённость“ — оцениваемый в документации как 900: именно на такую глубину блоков делается проверка проблемных расчётов, чтобы предотвратить захват лидерства). 

Перейдём же к изюминке  Filecoin — к расширению консенсуса, которое и отвечает за полезность проекта.

Идея этого расширения в общем-то похожа на расширение PoS, где вероятность стать лидером для производства блока становится зависимым от количество монет в стейке майнера. Здесь расширение работает так же: вероятность выигрыша лидерства становится зависимым напрямую от заявленного объёма дискового пространства, который сам майнер предоставляет в системе другим пользователям. А вот механизм того, как учитывается объём дискового пространства майнера, —  совершенно уникальная идея этого проекта.

Это расширение у Filecoin называется доказательством пространства времени

Важная часть его в том, что майнер постоянно информирует блокчейн о том, сколько дискового пространства он отдал под хранения своим пользователям и на какое время. С пользователями для каждого отдельно значимого куска информации  заключаются контракты на хранения, где описываются свойства хранимой информации (её объём, хеши содержимого), время и стоимость хранения. 

Следующая важная часть — быстрая и простая система проверки: действительно ли на момент создания блока хранится та информация, на которую заключены у майнера договоры. 

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

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

Чтобы снизить вероятность выигрыша лидерства блока  недобросовестными майнерами, но при этом сделать её относительно малой по времени, система проверки хранения опять использует ДСФ, но теперь для указания проверки только  небольшой части из всей заявленной ранее хранящейся информации. 

Таким образом, недобросовестному майнеру для того, чтобы получить лидерство блока, надо подделать доказательство хранения заявленных данных, что возможно,  но сложно. Причём сложность возрастает с количеством заявленного размера хранения данных. Таки образом, чем больше у майнера заявлено дискового пространства — тем более вероятен выигрыш лидерства, и тем сложнее создавать поддельное доказательство хранения заявленных данных.

Ещё одной интересной особенностью расширения является  “качество” блока. При создании своей версии блока каждый майнер должен рассчитать его качество, который напрямую зависит от количества информации законтрактованной этим майнером. От этого параметра зависит вознаграждение майнеру за создание блока. Смысл этого параметра в том, чтобы майнеру с Х% мощности не было бы экономического смысла разделять свою мощность на Х майнеров с 1% мощности сети. 

Также расширение вносит важное изменение, касающееся выбора правильной цепочки. Так как алгоритм у Filecoin со случайным выбором лидера, то в любой момент времени есть ненулевая вероятность что лидерство будет выиграно более чем одним майнером. Соответственно, как и в консенсусе PoW это приводит к ветвлению цепочек, и необходимо правило по которому все участники системы будут выбирать одинаково правильную цепочку. В filecoin цепочка с самым большим весом считается самой правильной. Параметр веса учитывается в каждом новом блоке и он равен сумме веса предыдущего блока и веса нового блока. Так же вес нового блока напрямую зависит от мощности (количества дискового пространства) всех майнеров сети и количества выданных билетов в эпоху. 

К сожалению, пояснения что значит “количество выданных билетов в эпоху” выходит за рамки данной статьи, потому-что нетривиально, для более детального понимания  лучше смотреть документацию проекта. Если вкратце — этот параметр относится к особенностям реализации работы алгоритма консенсуса на ДСФ у Filecoin.

Общая идея правила выбора основной цепочки такого: это цепочка с блоком,  в котором представлено больше объёма пространства майнеров и в котором чаще происходит создание блоков (происходит мало случаев когда блок НЕ удается получить). Таким образом, если кто-то захочет представить поддельную цепочку с большим весом, ему придётся сделать больше вычислений и выделить большее место, чем текущая основная цепочка.

Таковы особенности консенсуса Fiilecoin и, как видно, он, действительно, позволяет использовать полезное хранение данных как движущую силу. Однако стоит заметить, что для получения полезности проект прибёг к немалому количеству “дополнений”, которые кроме положительного влияния могут добавить проблем — стать источниками уязвимости. Взять к примеру основу консенсуса: доказуемо случайную функцию. Теоретически у любых вариантов таких консенсусов есть возможность майнеру получить постоянное лидерство. Однако, доказательств того, что в реализации Filecoin этой уязвимости не существует, не было найдено. Как и в случае других оригинальных идей проекта.

Chia

А что же проект chia? Он тоже претендуют на новый “полезный” способ работы децентрализованных систем? К сожалению нет, но с другой стороны Chia претендует на звание того самого — “зелёного” — майнинга. Т.е. такого майнинга, который будет на порядок меньше потреблять электричества, чем майнинг Биткоина. 

Для этого проект разработал свой консенсус пространства-времени. Давайте посмотри на него внимательнее. Начнём опять с определений.

Консенсус Chia — двусоставный консенсус: в нём используется также со случайным выбором лидера, где случайность определяется на основе работы проверяемой функции задержки времени (Verifiable Delay Functions), а вот на втором этапе используется консенсус со случайным выбором лидера, где лидерство определяется на основе случайности, зависящей от размеров дискового пространства, которыми владеет майнер.

Майнеры времени

Майнеры, которые отвечают за работу консенсуса времени, в Chia называют Timelord. Их основное предназначение — генерировать задачи на поиск лидерства для майнеров пространства. Verifiable Delay Functions — алгоритм, выполнение которого не может быть распараллеленно, поэтому на всех современных процессорах процесс его выполнения происходит за сопоставимое время. В результате все Timelord генерируют результаты примерно за одно и тоже время, но тот кто генерирует чуть быстрее других — будет в выигрыше. Стоит отметить, что  в самом Chia почему-то считают что таких майнеров будет мало.  

Майнеры пространства

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

Это очень упрощённый алгоритм работы майнера пространства. Стоит взглянуть глубже.

Для создания подтверждение владение пространством, майнеру пространства нужно сделать очень много приготовлений. Для начала, майнеру необходимо подготовить свои диски — заполнить их специфически рассчитанными последовательностями. 

Этот процесс генерации файлов с подготовленными последовательностями в терминологии Chia называется Plotting. Сам процесс довольно требователен ко всем подсистемам компьютера, и особенно к дисковым операциям. Его алгоритм создан таким образом, чтобы невозможно было подбирать ответы к задачам Timelord в режиме онлайн. 

Плотинг с рекомендуемыми настройками Чиа занимает от 4 часов для файла в 100Гб, что означает, что в обозримом будущем не появится возможности получать ответ за время блока Chia.  Однако после того, как файл с последовательностями “засеян” — попросту созданы файлы вида plot — больше не надо будет серьёзных вычислений. Для дальнейшей работы с созданным файлом нужен только поиск по диску: такие операции в документах Chia оцениваются в сотни миллисекунд

Итак, в процессе сеяния все диски майнера заполняются файлами с рассчитанными последовательностями . Но есть один нюанс: нельзя сгенерированный файл с подготовленными хешами просто отдать “другу”, чтобы быстрее засевать свои и его диски, увеличивая вероятность выигрыша. Во-первых, наличие второго майнера с копией хеша, никак не увеличит вероятность нахождения выигрышного хеша, а, во-вторых, в каждом файле с последовательностями в Chia учитывается аккаунт и ID файла майнера, поэтому просто нельзя воспользоваться чужим сгенерированным файлом хешей.

Если у майнера уже есть подготовленные plots, то после получения задачи от Timelord, ищется ответ на задачу. Для этого ко всем файлам plot применяется специальный фильтр: этот фильтр — хеш функция, параметрами которых являются plot id и задача от майнеров. Если результат хеша соответствует текущей сложности  (например первые 9 чисел — нули), то такой файл рассматривается как возможный для поиска ответа. При формировании подтверждения владением пространством прикладываются как найденный ответ, так и фильтр(ы) плота, и данные аккаунта для этого файла. С помощью этого подтверждения, записываемого в блок, узел сети сможет проверить то, что найденный ответ действительно соответствует задаче, сложности и был предварительно засеян.

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

Стоит отметить вот ещё что: разработчики постарались сделать всё, чтобы не было обходных путей при майнинге. В результате единственный способ наращивать вероятность выигрыша майнинга блока — увеличивать дисковое пространства заполненное файлами plot, относительно общего пространства используемого остальными майнерами. Что выглядит аналогично работе PoW Биткоина, но с той лишь разницей, что у PoW необходимо наращивать систему расчётов хеша, которая очень энергозатратна. Однако, подавляющую часть времени у Chia нет необходимости в расчётах, а только в хранении данных. Поэтому на первый взгляд, Chia  гораздо “зелёнее” Биткоина. 

Однако давайте чуть абстрагируемся и взглянем на то, почему Биткоин такой энергозатратный. 

Есть много причин, но одна из самых главных — потому что это выгодно: затраты на электричество окупаются, и более того — стоимость самого оборудования для майнинга, после достижения технологического порога, не так сильно влияет на выгодность, сколько цены на электричество (и транзакционные издержки). Поэтому сдерживающим фактором майнинга Chia будет так же — выгода. 

До тех пор пока будет выгодно, будет наращиваться и дисковое пространство, а значит и электропотребление, а значит — нет препятствий к повторению судьбы Биткоина. 

Единственное отличие — использование Chia  стандартизированных компьютерных дисков, что уже вызвало их подорожание. В будущем можно ожидать (как и в случае появления у Биткоина специальных майнинговых устройств — АСИКов) технологического бума на рынке стандартных компьютерных дисков и появление новых технологий хранения данных, специфичных только для данного вида майнинга. В этом смысле у Chia больше шансов стать не рекордсменом по потреблению энергии, а рекордсменом по потреблению технологий.

Что ж, а закончим сравнением… 

Сравнение Filecoin vs. Chia

Filecoin Chia
Год создания 2014 2017
Консенсус Алгоритм выбора лидера, на основе случайности. Для более эффективной работы и отражения целей проекта введена  надстройка/улучшение которая называется PoST(Proof of space-time) и ее смысл в повышении вероятности выигрыша для тех майнеров у кого больше дискового места занято информацией. Двусоставный алгоритм выбора лидера, на основе случайности. (Proof of Space and Time). Первая часть (Proof of Time) — работа с VDF (Verifiable Delay Function). Отвечают за это майнеры TimeLord 

Вторая часть (Proof of Space) — нахождение выигрышного хеша, как в PoW, но с помощью хранения большого количества заранее вычисленных данных. Отвечают за это майнеры дискового пространства. 

Что значит слово “время” в консенсусе? Означает, что при проверке предоставленного подтверждения, проверяется что проверка на “пространство” существует именно в данный момент времени. Означает работу майнеров на основе функции доказуемой задержки времени. В процессе консенсуса эта функция определяет “алгоритмное” время — каждое выполнение это один квант алгоритмного времени, от которого строятся все дальнейшие алгоритмы (происходят).
Что значит слово “пространство” в консенсусе? Означает, что при проверке предоставленного подтверждения, проверяется, существует ли случайная часть заявленной информации.  Подтверждение, которое предоставляется майнерами алгоритмически и  зависит от доли дискового пространства, которое есть у майнера относительно всех остальных участвующих майнеров.
Концепт В создании распределённой системы хранения, равноправными участниками которой являются как пользователи, которым надо хранить информацию, так и пользователи, которые готовы предоставить место для хранения Идея проекта в улучшении энергопотребления блокчейна. В первую очередь — в более экологичном варианте консенсуса.
Плюсы Алгоритм позволяет более мелким майнерам собираться в пул, чтобы получить хоть и меньшую, но прогнозируемую отдачу от своей работы Алгоритм не позволяет майнерам собираться в пулы. Что способствует децентрализации проекта. Благодаря этой особенности по этому важному показателю, проект может обойти гигантов отрасли — Биткоин и Эфир.
Минусы В архитектуре проекта есть своя ВМ и есть аналог смарт-контракта — Actor, но пока не найдено упоминание о возможности создания пользовательских СК. Все СК — стандартизированные системные.

Реализованный в проекте алгоритм PoST не распознает — полезна ли на самом деле информация, которая хранится у майнеров. Поэтому майнеры могли просто использовать всё доступное дисковое место, для получения большей вероятности выигрыша создателя блока. В связи с эти в октябре 2020 было предложено ввести дополнительную абстракцию — Filecoin Plus. Эта абстракция вводит дополнительный социальный аспект работы майнеров.

Работа TimeLord не очень функциональна. С точки зрения большого майнера дискового пространства — гораздо выгодней иметь ещё и своего TimeLord. Тогда при выигрыше на дисковом поле —  большая вероятность получить выигрыш и у TimeLord

Реализация функции “засеивания” — плотинга — выглядит несовершенной. Для засеивания большого количества дисков потребуется выработать в определённое количество SSD-дисков. Что означает, что высокотехнологичное устройство, на производство которого потрачено немало энергии и человеко-часов, будет выброшено, только для одной из частей алгоритма работы “зелёной” криптовалюты.

Реализации Официальная на языке Go:

Альтернативная — на языке Rust.

Пока есть только официальная реализация. В основе лежат языки Python, C++. Одна из реализаций ВМ написана на Rust
Юрисдикция США США (Китай)

P.S. Для любознательных

Если вас, как и нас с Игорем, привлекает исследовательская сторона ДРС, то милости просим:

  1. Часть первая про децентрализованные и распрделённые хранилища: https://hub.forklog.com/raspredelyonnye-i-detsentralizovannye-hranilishha-chast-i-korotkij-obzor/
  2. Чтобы понимать, а сколько же всего хранится сегодня, чтобы понимать, а сколько же будет в условном завтра, рекомендуем изучить вот этот материал: https://meduza.io/slides/skolko-skolko-terabaytov 
  3. А вот если больше хочется про консенсусы, тогда сюда: https://plusworld.ru/professionals/klassifikatsiya-blokchejn-reshenij-dlya-biznesa-teoriya-i-praktika/
  4. В следующие же разы попробуем исследовать вот какие проекты, а потому — даём их вам пока на самостоятельное изучение:
    1. https://akash.network/ 
    2. https://www.arweave.org 
    3. https://coldstack.io  
    4. https://debridge.finance 
    5. https://forklog.com/chto-takoe-dfinity/ 
    6. https://givemesafety.com 
    7. https://www.sentinel-hub.com 
  5. И ещё:
    1. Консенсус Chia — https://docs.google.com/document/d/1tmRIb7lgi4QfKkNaxuKOBHRmwbVlGL4f7EsBDr_5xZE/edit 
    2. Если посмотреть шире, то можете затронуть по п. 3: NuCypher, Urbit, iTerra, Helium, Althea, Handshake, но прямых связей не найдёте… разве что изучите предложенный концепт о распределённых компьютерах 3.0. 
  6. Ещё больше информации см. на моём Hub’е форклога и https://t.me/web3news

До!