Распределённые облачные системы хранения Filecoin и Storj

Когда-то файлы хранили на дискетах, потом на дисках, потом на флэшках. Закончилось всё облаками. Тогда встал ряд различных вопросов по надёжности и приватности. С одной стороны можно просто доверить файлы гуглу или яндексу, но тогда о приватности можно забыть. C другой стороны можно завести собственное облачное хранилище, будь то дорогое железное решение от Synology, или оперсорсное на арендованной vps на nextcloud, но тут требуется вовлечение, что бы облако оставалось в рабочем состоянии (следить за апдейтами, своевременно обновлять оборудование, поддерживать резервное железо). Вместе с развитием блокчейна и развитием децентрализованных технологий web 3.0, появились и облачные хранилища, обещающие приватность, доступность и низкую цену. Предлагаю к рассмотрению 2 проекта, которые появились более 10 лет назад, и до сих пор существуют — Filecoin и Storj.

Filecoin

d99f514e5d31b765e48e66c77783fcc5.png

Кстати, 10 лет назад filecoin собрал четверть миллиарда на ico. И… я так и не понял, что мы получили за 10 лет за эти вливания. Разве что, разочарование в децентрализованных хранилищах.
В общем, попробовать Filecoin в действии мне не удалось, по этому я сосредоточился на втором сервисе.

Storj

a6471afcdfe445a195fcb08d301f06d8.png

Идея обычная — есть те, у кого есть лишнее место на диске, а есть те, кому места не хватает. Одни делятся с другими за деньги.
Реализация тоже достаточно простая. При загрузке файла, файл шифруется и делится на большое количество кусочков (количество зависит от размер файла). Количество этих кусочков избыточно, и для восстановление файла достаточно около трети кусочков. (в примере на официальном сайте они разбивают файл на 80 кусочков, а для восстановления достаточно всего 29).
Все кусочки раскидываются на разные ноды сети. Причём раскидываются почти равномерно по всей планете. Во-первых это даёт хорошую скорость загрузки из любого места. Во-вторых, избыточность создаёт надёжность, даже если по какой-то причине половина всех нод выйдет из сети, ваши данные по прежнему будут доступны.

Мой файл в 702 МБ разделился на 715 кусочков в 715 разных мест на планете

Мой файл в 702 МБ разделился на 715 кусочков в 715 разных мест на планете

Кажется, уже на этом этапе всё хорошо, но… какое-то чувство, что доверять свои данные в такую сеть всё равно не хочется. Ноды — это какие-то третьи лица. Пусть, к приватности вопросов нет — один кусочек никак не может быть расшифрован без остальных, да и сама расшифровка не особо возможна, но остаётся вопрос онлайна.
Т.е. где гарантия, что выложенные сегодня файлы, всё ещё будут доступны через 5 лет? (привет p2p фото хостинг, построенный на протоколе IPFS) Частники наиграются и уйдут в оффлайн.
И тут тоже есть хитрый прозрачный механизм. Чтобы его понять, надо уйти в ценообразование и мотивацию провайдеров нод.
Цена образуется из двух составляющих:

  1. 4$ в месяц за хранение 1 ТБ.

  2. 7$ за скачивание 1 ТБ файлов со стораджа. Например, если мы просто хотим хранить бэкап в 500 ГБ, будем платить по 2 бакса в месяц. А когда он нам реально понадобится, доплатим ещё 3.50, что бы его скачать. Цена реально низкая, не сказать, что самая низкая, но на уровне с лидерами низких цен. Теперь про провайдеров. Например, у вас есть лишний ТБ свободного места. Чтобы вас мотивировать поделиться этим местом, вам предлагают три составляющие:

  3. 1.5$ в месяц за использованные 1 ТБ

  4. 2$ за 1 ТБ upload трафика (когда с вас что-то скачивают)

  5. 2$ за 1 ТБ upload трафика, необходимого для аудита и починки (вероятно, когда какая-то нода уходит в оффлайн, необходимо скопировать пропавшие кусочки файла на новую ноду, что бы восстановить избыточную целостность) К сожалению, что бы начать зарабатывать на своём свободном месте, вам не просто надо свободное место (минимум 550 ГБ), но вам так же надо быть онлайн 24 на 7, иметь скорость download минимум 25 Mbps и upload минимум 5 Mbps, ну и быть способным обеспечить минимум 2ТБ месячного траффика. Что бы минимизировать энтузиастов, которые поднимают ноду на месяц, и потом отключаются без предупреждения, есть механизм удержания выплат. Первые 3 месяца удерживается 75% вашего дохода. 4–6 месяц — 50%. 7–9 месяц — 25%. 10–15 месяц — без удержания вашего дохода. Вы получите всё в полном объёме. Начиная с 16-го месяца вы получите 50% от ранее удержанного дохода. Оставшиеся 50% вы получите, когда захотите уйти в оффлайн, но сделаете это по всем правилам, предварительно позволив системе перераспределить данные, хранящиеся на вашей ноде. Если же вы захотите отключиться просто так, удержанные деньги вам не вернут, и направят на восстановление из других нод (3-тий пункт дохода).

И вот это уже начинает внушать доверие. Получается, в систему не пойдут всякие школьники со своими игровыми ПК, потому что у них нет 24 на 7 аптайма. Так же не пойдут и те, у кого временно простаивает железо, поскольку из-за удерживаемых сумм, у них даже не будет окупаться электричество. Остаётся только целенаправленная долгосрочная аудитория, которая, либо специально будет создавать ноды для заработка, либо уже имеет сервера, в которые можно засунуть дополнительный диск, что бы минимизировать затраты на содержание. Звучит надёжно.

О выплатах

К сожалению (или к счастью), сервис не смог пройти мимо блокчейна, и внедрил криптовалюту в механизм выплат. Сложности появляются в момент вывода средств — деньги не выплачивают, если комиссия превышает 25% от суммы выплаты. В пример приводят, что если комиссия составляет 12.5 $, то минимальная сумма вывода 50 $. Выплаты происходят в Ethereum, соответственно такая большая комиссия — это нормально. Альтернативно можно делать вывод через zkSync. Там комиссия ниже, и выплаты можно осуществлять уже чуть ли не с 4 $.

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

Зато вот, если вы хотите арендовать место, а не сдавать в аренду — принимается обычная банковская карточка. Но не только она. Ещё собственные токены STORJ, за которые даётся 10% бонус. При этом все расчёты в профиле всё равно ведутся в долларах.

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

Немного практики

Описание схемы работы — это конечно круто, но что бы почувствовать насколько это круто, стоит попробовать воспользоваться этим сервисом.
Кстати, бесплатный план даёт 25 ГБ (раньше вроде было больше, но даже сейчас, это больше, чем у конкурентов.

Dashboard в моём бесплатном аккаунте

Dashboard в моём бесплатном аккаунте

После прохождения простейшей регистрации, внутренний дашборд скорее напоминает дашборд для сис.админа, чем для конечного пользователя. Вероятно основной расчёт на аудиторию, которая использует S3.
Но можно и просто создать бакет (bucket — корзина, ведро) и пользоваться облаком через веб. Создавать папочки, загружать и скачивать файлы.
Для создания бакета, необходимо задать passphrase из 12 слов. Эта фраза будет использоваться для шифрования. Соответственно, если мы работаем через веб, то изначально для доступа надо ввести эту фразу.
Скорость upload шикарна — заняла всю линию в 300 мегабит в секунду (около 35–40 мегабайт в секунду).
Скорость download, почему-то оказалась ниже, и линию не забила, составила около 200 мегабит в секунду (около 15–25 мегабайт в секунду).
И за свою цену, на мой взгляд, это шикарный показатель.

Веб выглядит, как обычный облачный браузер. Всё, как у всех.

Веб выглядит, как обычный облачный браузер. Всё, как у всех.

Но кому нужен web, это явно не удобно в ежедневном использовании. С интеграциями с виду у storj тоже все в порядке.
Для начала я попробовал подключиться к бакету через Filezilla. Оказалось там уже встроен протокол storj. Подключилось без проблем, файлы отобразились, но файл в 776 МБ почему-то оказался не читабельным. При этом с веба — всё ок.
Попробовал закинуть другой файл в 702 МБ через Filezilla. Загрузился, скачался, всё хорошо.

Filezilla видит все папки и файлы (кроме одного)

Filezilla видит все папки и файлы (кроме одного)

Далее решил создать задачу на резервное копирование в Synology через Hyper Backup. Прямой интеграции нет, но можно подключить через S3. Подключилось. Резервная копия создалась. В вебе все файлы отобразились. В filezilla — тоже.
Проверка целостности бэкапа сообщила, что всё в порядке.
Стёр оригинальные файлы. Восстановил бэкап. Восстановилось.

Заключение

В общем, кажется, всё работает. Довольно гибко. Позволяет полноценно пользоваться облачным хранилищем практически в любых сценариях.
Схема работы самого сервиса прозрачна и понятна. Бизнес модель логична, и адекватна. Спустя 10 лет существования на момент написания статьи, в сети Storj насчитывалось почти 24 000 нод.
Всё это внушает доверие и, вероятно займёт определённую нишу в моей инфраструктуре.
С радостью выслушаю ваше мнение и опыт в распределённых облачных системах хранения данных.

© Habrahabr.ru