Всем привет!
У всех нас есть данные, которые хочется держать под контролем. Мы не хотим потерять к ним доступ и не хотим, чтобы доступ был у кого-то ещё. Где хранить такие данные? Я считаю, что Sia может стать идеальным местом для этого и расскажу, почему.
Disclaimer: Sia активно развивается и, по словам разработчиков, всё ещё не подходит для того, чтобы быть единственным местом для бекапа.
Sia (произносится "Сая") — это распределённая система на основе блокчейна, участники которой хранят информацию на жестких дисках друг друга за плату. Участник системы может решить быть только пользователем, загружающим данные (в терминологии Sia — renter), или же сервером, принимающим данные (в терминологии Sia — host), или совмещать эти две роли. Хосты заинтересованы в хранении данных, так как они уходят в убыток, если теряют данные. Это обеспечивается следующим образом: при заключении контракта на хранение данных хост вносит депозит и ежедневно подтверждает факт хранения загруженных данных; если он этого не делает, то лишается части депозита. Подробности процесса оставим на десерт :-)
Чтобы данные уцелели даже в случае отказа нескольких хостов, используются коды Рида — Соломона. Данные загружаются на 40 хостов и остаются доступными, если хотя бы 10 из этих хостов доступны. Избыточность хранения составляет 3x. В будущем ожидается рост uptime хостов, после чего избыточность можно будет снизить.
В Sia используется свой альткоин — Siacoin. Есть свой блокчейн, в котором хранятся как обычные транзакции, так и контракты на хранение файлов. (Блокчейн биткоина не подошёл бы для Sia, так как в нём нет возможности заключать такие контракты.) Есть и свой explorer, и майнеры, и биржи для обмена — одним словом, всё, что прилагается к альткоину.
Страница Siacoin на бирже Poloniex.
Так почему мне нравится хранить данные в такой системе? А вы не задумывались, какие ещё способы есть в нашем распоряжении? Есть огромное количество способов, имещих единую точку отказа. А единая точка отказа оправдывает своё название и рано или поздно отказывает. Кроме того, такие системы тяготеют к централизации и отказу от анонимности и становятся удобным местом для насаждения государственного контроля за данными пользователя. Мне претит мысль о том, что кто-то может лишить меня доступа к моим же данным. Какой же выбор остаётся у людей, желающих децентрализованно хранить данные? Например, покупать место или серверы в нескольких централизованных системах. Для большинства людей это означает огромные накладные расходы в виде потраченного времени и денег, особенно если делать это анонимно.
Пара слов о том, почему так важна анонимность при хранении данных. Если государство знает о твоей собственности, то на самом деле она тебе не принадлежит, так как государство определяет правила игры и завтра может решить забрать её у тебя (или частично забрать, обложив налогом). Например, в США изымали золото у людей во времена Великой депрессии. Единственный надёжный способ обезопасить собственность — это отвязать её от любой информации, которой располагает государство.
Когда я осознал это, я решил было сделать систему, лишённую этих недостатков: децентрализованную, анонимную и надёжную. Сначала я решил проверить, нет ли чего готового на гитхабе. И нашёл Sia — именно то, что нужно! С точки зрения пользователя, Sia — это готовый аналог покупки кучи серверов для ручной загрузки данных. И аналог более эффективный, так как один сервер хранит данные тысяч пользователей. Калькулятор стоимости хранения на сайте Sia показывает, что хранение 5Тб в течение месяца обойдётся в 10 долларов. (Disclaimer: реальная цена будет выше из-за комиссий на создание контрактов и тройной избыточности хранения, но всё равно остаётся очень и очень привлекательной.)
Как загрузить файлы в Sia
См. также руководство на официальном сайте.
- Скачать и запустить Sia-UI.
- Купить сиакоины.
- Загрузить файлы, используя интерфейс Sia-UI.
Все приватные ключи, использующиеся в кошельке, получаются из seed, который программа выдаёт в начале работы. Для восстановления доступа к сиакоинам кошелька (но пока, к сожалению, не к файлам) достаточно знать этот seed.
Если честно, Sia-UI я ни разу не запускал, так как я живу в командной строке, а Sia предоставляет отличные инструменты для этого: siad и siac. (Кстати, весь код Sia написан на Go, что не может не радовать.) Основы работы с siad
и siac
можно почерпнуть из статьи про запуск хоста и из хеплов этих программ. Программу siad
обычно достаточно просто запустить, а взаимодействовать с ним уже через siac
.
Примеры команд:
siac wallet unlock
— разблокировать кошелёк (требуется ввод seed),siac wallet balance
— показать текущий баланс кошелька,siac renter setallowance money time_period
— заключить контракты с хостами,siac renter upload /path/to/source/file path/in/sia
— загрузить файл в Sia,siac renter contracts
— вывести все заключённые контракты с хостами.
siac
взаимодействует с siad
через HTTP API. С помощью него можно строить свои системы, использующие Sia в качестве хранилища. Команда Sia делает ставку на то, что в будущем компании будут хранить свои данные в Sia.
Для хранения данных необходима информация, находящаяся в папке renter/
. Есть планы о восстановлении данных исключительно из seed (см. в разделе "планы").
По желанию можно сохранить информацию об объёме загруженного с помощью siac renter export
и загрузить её в "пузомерку": rankings.sia.tech.
Как запустить свой хост Sia
Хост Sia будет приносить доход в сиакоинах своему владельцу. Это неплохой способ монетизировать неиспользуемые части жестких дисков. Оплачивается не только хранение, но и трафик.
Про запуск своего сервера есть целая статья. Я тут опять пробегусь по верхам.
- Нужны программы
siad
иsiac
. Программаsiad
запускается, а все действия осуществляются черезsiac
. Надо подождать, покаsiad
скачает блокчейн. Это занимает несколько часов, есть планы по значительному ускорению. - Завести адрес (
siac wallet address
), закинуть на него сиакоинов, купленных любым способом. - Добавить папку:
siac host folder add /path/to/dir size
- Назначить цену за хранение, загрузку и выгрузку данных:
siac config
. - Опубликовать информацию о хосте:
siac host announce
.
Через некоторое время хост начнёт получать контракты и на него будут загружать данные.
Доходы хостеров можно посмотреть на сайте siahub.info. Пример графика доходов хоста, на который загружено 585 из доступных 999 Гб:
Данный хост получает 57 сиакоинов каждый день. 1 сиакоин сегодня стоит примерно 1.5 цента, а значит этот хост ежедневно получает примерно 50 рублей. Пусть есть NAS на 4Тб за 20к рублей. При аналогичном проценте заполнения он выдавал бы примерно 200 рублей в день, то есть 6к рублей в месяц — неплохая окупаемость.
Доказательство хранения
В Sia хосты регулярно доказывают, что хранят загруженные данные. Это важный момент, так как иначе недобросовестные хосты могли бы сбрасывать все данные в /dev/null, продолжая получать плату. Выше я обещал рассказать, как устроено доказательство хранения. Это подробно описано в статье от создателя Sia. Ниже моё объяснение на пальцах.
Данные контракта можно представить как массив из фрагментов одинакового размера. Устроим древовидное хеширование этих фрагментов. Для этого рассчитаем сильные криптографические хеши этих фрагментов. Потом разобъем полученные хеши на пары и рассчитаем хеши от соединённых хешей каждой пары. Полученные хеши снова разобьём на пары и так, пока не получим один хеш. Он-то и хранится в контракте и обновляется, когда пользователь загружает новые данные по этому контракту. Теперь вернёмся к отдельному фрагменту файла и проследим его "путь" до корня дерева. На каждом шагу в хеширование будет "примешиваться" хеш, приходящий от другой группы фрагментов. Если мы предоставим данный фрагмент и эти дополнительные хеши, находящиеся на пути от фрагмента до корня, то сможем доказать, что данный фрагмент присутствует на данной позиции в данных. Подделка такого доказательства равносильна нахождению коллизии хеш-функции.
Как же это применяется в Sia? Номер фрагмента, хранение которого хост должен доказать, определяется в зависимости от хешей предыдущих блоков, поэтому его сложно предсказать заранее. В определённый промежуток времени (по блокам, а не по часам) хост должен загрузить доказательство хранения выбранного фрагмента, иначе он теряет деньги.
У внимательного читателя мог возникнуть вопрос — а что, если зловредный хост будет хранить данные, но не будет давать их скачивать пользователю? Или просто иметь низкий uptime, из-за чего пользоваться им будет невозможно. Для борьбы с этим в Sia придумали систему рейтинга хостов. Каждый запущенный клиент вычисляет этот рейтинг независимо, в том числе измеряет uptime, поэтому лучше дать программе поработать вхолостую перед заключением контрактов, чтобы набралась статистика по хостам. Все факторы, влияющие на рейтинг, разбираются в статье про рейтинг. Рейтинги хостов можно смотреть командой siac hostdb -v
и на сайте siahub.info.
Siafund
В Siacoin есть одна особенность, которую я не встречал раньше в альткоинах. Siafund — это особый вид ресурсов, который может храниться в том же блокчейне и на таких же адресах, как и Siacoin. Адреса, на которых хранится Siafund, получают часть доходов хостов. Отчисления в размере 3.9% от выплат по успешным контрактам распределяются пропорционально между держателями Siafund. В природе существует ровно 10к Siafund. Большая их часть находится у разработчиков (Nebulous Inc.), но немногим больше 1000 были в своё время распроданы. Siafund продаются на бирже bitsquare.io и на канале #siafunds Slack-чата. В настоящее время цена одного Siafund составлет примерно 2 биткоина. Siafund'ы неделимы.
Siafund — это альтернатива предмайнингу собственной криптовалюты разработчиками альткоина. По задумке создателей, из-за высокой цены обладателями Siafund будут только люди, приверженные идеям проекта, включая разработчиков. Чем больше Sia будет использоваться для хранения файлов, тем больший доход будeт приносить Siafund.
Обозреватели сети
На siapulse.com и siahub.info есть красивые карты хостов.
Хосты уже есть на всех материках, кроме Африки. Общее количество активных — 275. В том числе хосты есть в нескольких городах России и Украины. Приглашаю всех, кому нужна помощь с запуском хоста и вообще с Sia, на каналы Slack-чата, включая #help, #russian и #farming.
Планы
Некоторые планы из официального roadmap:
- возможность поделиться загруженным файлом с другим пользователем Sia (в следующем релизе) и с кем угодно (через 2 года).
- Загрузка частей файла.
- Эффективное хранение маленьких файлов.
- Стримминг видео.
- Автоматическое назначение цены хостом.
- Восстановление файлов из seed.
- Поддержка мобильных и других легковесных клиентов.
Сообщество
- Slack-чат — очень интересное место, среди каналов есть #russian.
- Блог, форум и Twitter.
- Github — код, баг-репорты и пул-реквесты.
Жду всех в Slack-чате. Спасибо всем, кто дочитал до конца!
Автор: Boris Nagaev