Децентрализованный способ хранения информации

Децентрализованное хранение файлов

Если вы все еще храните все файлы у себя на устройстве, эта статья для вас. На протяжении последних лет все большую популярность приобретают облачные сервисы, такие как Dropbox, Google Drive, Yandex Disc и Evernote. Они позволяют избавиться от необходимости покупать физические носители для хранения большого объема данных, чем и полюбились миллионам пользователей со всего мира.

Однако мир не стоит на месте: на смену централизованным сервисам приходят децентрализованные.

Они позволяют арендовать свободное пространство для хранения не у крупных гигантов, которые могут закрыть вам доступ к важным файлам, поднять тарифы и другими способами повлиять на вашу жизнь, а у других пользователей peer-to-peer cети (одноранговая сеть, все участники которой наделены равными правами). Итак, в чем особенности и сложности поставленной задачи?

Базовые принципы децентрализованного хранения файлов

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

Полученные фрагменты рассылаются различным участникам peer-to-peer сети.

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

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

Потенциал рынка

Стоит ли игра свеч? Определенно, да.

Спрос на подобные услуги возрастет к 2021 году до отметки в $75 млрд. В 2022 — до $93 млрд.

На данный момент ключевыми игроками является Amazon и Google, однако все может измениться. Кто же может прийти на смену мастодонтам рынка?

Крупнейшие игроки рынки децентрализованного хранения файлов

Storj

Самый популярный и старейший проект в сфере децентрализованного хранения файлов. Он объединяет более 40 тысяч людей. Работает Storj на открытом исходном коде и имеет понятный интерфейс, позволяющий охватить широкую аудиторию. Подробный обзор от Chain Media читайте по ссылке.

Sia

Основной конкурент Storj с успешно функционирующем готовым продуктом. Sia предполагает деление файлов на 30 шардов (3 копии каждого сегмента). Такой подход снижает риски утери отдельных частей файла из-за высокой «избыточности». Присутствует шифрование данных перед отправкой.

Главное отличие от Storj заключается в том, что команда проекта разработала собственный блокчейн.

Он не предназначен для использования участниками сети напрямую: с помощью него функционируют смарт-контракты (Что такое смарт-контракты простым языком?)

В отличие от Storj, услуги Sia нельзя оплатить фиатными деньгами. В качестве платежного средства сервиса были разработаны токены Siacoin (SC), которые также используются для вознаграждения работы майнеров, поддерживающих блокчейн (которые зачастую объединяются в пулы). Для лучшего понимания майнинга читайте FAQ.

За 2017 год проект вырос в десятки раз. Вместо 75 хостов на данным момент в сети присутствуют более 1000, а объем доступного хранилища вырос в 7 раз до 3.3 Петабайт (3.3 млн Гб). Этого все еще недостаточно, чтобы сравняться с Storj, но темпы роста увеличиваются.

Filecoin

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

С этим сложно спорить: достаточно лишь посмотреть, кто стоит за проектом. Protocol Labs. Та самая команда, которая реализовала и запустила одноранговый гипермедийный протокол связи IPFS. Это позволило создателям проекта, который поддерживают такие влиятельные фигуры индустрии, как венчурный фонд Andreessen Horowitz (Skype, Foursquare, Twitter, Facebook, Groupon) и Naval Ravikant, провести одно из самый успешных ICO в истории, собрав более $200 млн.

Читайте также:  Через сколько можно есть горбушу после засолки сухим способом

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

Первый — аналог узлов в Sia и Storj, предназначенный для хранения файлов. Отличием является желание Filecoin отдавать приоритет крупным игрокам с большими объемами доступных для использования хранилищ.

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

MaidSafe

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

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

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

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

Проект находится на стадии разработки альфа-версии.

Заключение

Рынок децентрализованного хранения и вычислений развивается семимильными шагами. Спрос на подобные решения растет, и разработчики со всего мира не покладая рук стараются предложить лучший продукт и привлечь пользователей. Конкуренция очень высока, что традиционно приводит к появлению все более совершенных продуктов и внедрению инноваций. Несмотря на то, что пока такие интернет-гиганты, как Google и Amazon кажутся недосягаемыми, через пару лет все может измениться.

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

Почему децентрализация настолько важна и как она способна преобразовать наш мир читайте в статье.

Источник

Часть 2. Где хранить данные децентрализованным приложениям на блокчейне?

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

Итак, если у нас есть децентрализованное приложение, какие требования к хранилищу данных стоило бы предъявить? Мы предлагаем следующие требования

  • Распределенность — поскольку вся инфраструктура блокчейна и приложений на нем распределенная, хранилище данных также должно быть распределенное и децентрализованное.
  • Публичность — блокчейн позволяет всем желающим добавлять своё оборудование в сеть. Логично было бы ожидать того же от хранилища данных.
  • Устойчивость к проблеме византийских генералов и другим типам атак в публичной сети — в публичной распределенной сети без этого никак.
  • Поддержка шардинга — если мы ожидаем, что приложение будет популярно и будет хранить огромные объемы данных, то хорошо бы воспользоваться мощностью сети, чтобы увеличить максимальные объемы хранения. Полная репликация данных на каждом узле, разумеется, уменьшает шансы потери данных в случае проблем с отдельными узлами. Однако в случае большой мощности сети, например, сотни или тысячи серверов, дублировать все данные на всех серверах чрезвычайно избыточно, и можно уменьшить уровень репликации в пользу увеличения максимального суммарного объема данных. То есть, если у нас N серверов, то каждая запись должна реплицироваться только на m из них, m

Источник

Децентрализованное хранилище данных Ethereum Swarm

Блокчейн Ethereum интересен своими смарт-контрактами, а также возможностью создания децентрализованных приложений DApp (Decentralized Application). Однако такому приложению необходимо децентрализованное хранилище данных.

Хранение данных большого объема в блокчейне может стоить немалых денег. На помощь приходят такие децентрализованные хранилища, как Ethereum Swarm («swarm» переводится как «рой», «куча»). Если кратко, то Ethereum Swarm представляет собой программный код, работающий на пиринговой сети Ethereum. Он обеспечивает децентрализованное хранение данных на дисках узлов, владельцы которых отдают свои ресурсы в общее пользование.

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

Почему для DApp нужно децентрализованное хранилище данных

Блокчейн Ethereum (как и другие блокчейны) представляет собой распределенный журнал, очень хорошо защищенный от подделок и атак со стороны злоумышленников.

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

«SkyNet всюду и нигде единого центра нет. Отключать нечего.» (Терминатор-3: Восстание машин)

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

Где же хранить данные DApp большого объема?

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

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

При использовании централизованного хранилища теряется основное преимущество DApp — устойчивость к атакам и действиям злоумышленников. Более того, ваше приложение перестает быть децентрализованным. А значит теряется и доверие к DApp. Ведь если заблокировать или нарушить работу централизованного хранилища, пропадет доступ к части информации, зафиксированной DApp при помощи блокчейна, и пропадет весь смысл использования DApp.

Как работает Ethereum Swarm

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

Когда пользователь загружает файл в сеть Ethereum Swarm, этот файл сначала попадает на один из узлов. Далее файл реплицируется на остальные узлы сети в процессе синхронизации. При этом используется протокол bzz, работающий поверх сети Ethereum.

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

Подробнее обо все этом вы сможете прочитать на сайте Ethereum Swarm.

В документации отмечено, что к настоящему моменту Ethereum Swarm реализован в версии 0.2 как доказательство концепции (POC, proof of concept). В этой версии сохранность загруженных данных не гарантируется. Стабильный релиз ожидается во втором квартале 2018 года, так что ждать осталось недолго. Тогда же планируется создание системы вознаграждений за предоставление ресурсов для сети Ethereum Swarm.

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

Установка Ethereum Swarm и Geth на Debian и Ubuntu

Я расскажу об установке Ethereum Swarm на серверах Debian и Ubuntu. В целом нужно действовать по этой инструкции, но есть некоторые нюансы.

Установка Go

Очень важно перед началом работ установить Go новой версии, не ниже 1.9.2. В репозитории Debian и Ubuntu могут быть старые версии Go, поэтому устанавливаем из исходников.

Скачиваем и распаковываем исходники под непривилегированным пользователем:

Создаем у пользователя каталог go и устанавливаем переменные окружения:

Проверяем, что переменные окружения установлены:

В операционной системе Debian вместо файла .bashrc используйте файл .profile. Можно просто скопировать:

Проверяем версию go:

Версия go должна быть не ниже 1.9.2.

Если ранее была установлена старая версия go из репозитория ОС, удаляем ее так:

Устанавливаем Geth и Ethereum Swarm

Загружаем исходный код из репозитория:

Запускаем компиляцию клиента geth и демона swarm:

Проверяем версию установленного geth и swarm:

Подготовка приватного блокчейна для запуска Ethereum Swarm

Прежде всего, создайте в домашнем каталоге пользователя файл genesis.json:

Далее создайте в домашнем каталоге подкаталог node1:

Инициализацию узла можно сделать при помощи пакетного файла init_node.sh:

При запуске этого файла будет создан аккаунт и запрошен пароль, который вам необходимо сохранить в безопасном месте.

Создайте файл start_node.sh для запуска узла:

Запустите этот файл и дождитесь завершения генерации DAG.

С помощью файла attach_node.sh вы сможете открыть консоль geth и подключиться к приватному узлу:

Запуск демона swarm

Здесь вам потребуется адрес аккаунта, созданного на этапе инициализации узла. Если вы его не сохранили, ничего страшного. Просто зайтите в консоль geth, открытую с помощью скрипта attach_node.sh, и выдайте там следующую команду:

Команда покажет адрес созданных учетных записей. Сразу после инициализации там будет только один адрес.

Для запуска демона Ethereum Swarm в режиме единственного узла (Singleton) подготовьте командный файл swarm_start.sh:

Укажите в нем адрес аккаунта, созданного на вашем узле, без «0x».

При запуске демона вам будет нужно ввести пароль от созданного ранее аккаунта:

Загружаем файл в Ethereum Swarm

Проще всего загрузить файл с помощью команды swarm с параметром up. Дополнительно нужно указать путь к загружаемому файлу:

Данная команда вернет хеш загруженного файла. Хеш можно использовать для чтения файла. Вы можете это сделать с помощью команд wget или curl:

Команда wget позволяет сохранить содержимое файла на локальном диске. Используйте параметр -O, чтобы задать имя файла. Команда curl выведет содержимое файла на консоль, поэтому в таком виде ее не следует использовать для просмотра содержимого бинарных файлов. В конце URL необходим слеш, иначе произойдет редирект.

Когда файл загружается в Ethereum Swarm описанным выше образом, для него создается и сохраняется так называемый манифест. Это заголовок, описывающий содержимое, доступное в хранилище по заданному идентификатору.

Ниже мы загрузили файл Net-Ethereum-0.28.tar.gz с помощью простой команды swarm up:

Теперь, указав протокол bzz-list, мы можем просмотреть манифест:

Манифест будет показан в формате JSON.

В манифесте хранится пусть к файлу (имя файла), его размер, тип (Content Type), дата и время модификации, а также хеш файла.

Чтобы извлечь содержимое файла по его идентификатору и сохранить под именем t.tar.gz, сделайте так:

Загрузка каталогов с подкаталогами

Для рекурсивной загрузки каталога вместе с его содержимым в хранилище Ethereum Swarm укажите параметр —recursive:

В манифесте будет показана информация обо всех файлах загруженного подкаталога:

Другие возможности Ethereum Swarm

В этой статье я не рассказал обо всех возможностях Ethereum Swarm, ограничившись лишь самым необходимым.

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

Есть возможность загружать файлы без манифеста, а также считывать их в так называемом «сыром» (raw) виде.

При считывании файла можно указывать его имя (полностью или частично). При этом будет задействован сервис имен ENS (Ethereum Name Service). Такая возможность позволит вам получить только некоторые файлы из блока, объединенного общим манифестом.

Я также не описал SWarm Accounting Protocol (SWAP) и некоторые другие возможности. Проект Ethereum Swarm активно развивается, в нем обязательно появится еще что-нибудь интересное для разработчиков децентрализованных приложений.

Модуль Perl Net::Ethereum::Swarm

Для того чтобы работать с децентрализованным хранилищем данных Ethereum Swarm в системах, написанных на языке Perl, я разработал и выложил на CPAN модуль Net::Ethereum::Swarm.

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

Модуль Net::Ethereum::Swarm работает с узлом Ethereum Swarm с помощью HTTP-запросов GET и POST. Использование запросов описано в разделе The HTTP API документации.

Взаимодействие через HTTP-запросы можно легко реализовать практически на любом языке программирования.

Источник

Читайте также:  Способы ведения бухгалтерского учета регистры налогового учета
Оцените статью
Разные способы