Эксперимент с блокчейном на мобильной платформе. Часть 1.

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

Photo by rawpixel on Unsplash
Photo by rawpixel on Unsplash

Введение

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

Однако время шло, появлялись новые технологии и менялись привычки людей — теперь пользователь большую часть времени взаимодействует с мобильными устройствами. Эти изменения затронули и техническую сторону вопроса: всё меньше приложений создаётся исключительно для ПК, как правило, происходит разделение на общий бэкенд и фронтенд для различных устройств (телефон, планшет, периодически включаемый ноутбук). В случае с блокчейном это привело к тому, что люди всё реже разворачивают узлы на своих ПК, большинство узлов развёрнуты на специальных устройствах (майнерах), в облаках и т.д. Основной причиной этого процесса является то, что классические PoW-алгоритмы оптимальнее работают на специализированном оборудовании. Также, классические PoW блокчейны отличаются низкой пропускной способностью, по сравнению с набирающими популярность блокчейнами с выделенными валидаторами (dPOS, dBFT). В результате большое количество узлов может оказываться под контролем узкого круга лиц, создавая опасную централизацию, что противоречит принципам, положенным в основу технологии.

Размышляя над этими изменениями, мы задались вопросом: возможно ли адаптировать технологию под изменившуюся среду и в каких случаях это целесообразно?

Ограничения платформы

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

Слабые вычислительные мощности. Большинство широко распространённых публичных блокчейн сетей использует в качестве алгоритма консенсуса Proof of Work (PoW), основная идея которого, несколько упрощая, и заключается в том, чтобы заставить валидаторов потратить значительные вычислительные (и энергетические, как следствие) ресурсы на подтверждение транзакции. Мобильное устройство никогда не сравнится по вычислительной способности со специализированным оборудованием, в результате сеть мобильного PoW-блокечейна будет подвержена атакам с использованием такого рода оборудования с высоким хэшрейтом.

Низкая энергоэффективность. Если всё же решиться использоваться телефон для PoW вычислений, ограниченность ресурса батареи будет приводить к быстрой его разрядке. К тому же, организация постоянной работы мобильного устройства в режиме обслуживания p2p траффика также приведет к крайне быстрому расходу энергии батареи.

Малый объем хранилища. Полные узлы популярных блокчейн сетей могут занимать значительные объемы физической памяти (Bitcoin — более 100 GB, Ethereum — более 1TB), в то время как её объём в среднем телефоне редко превышает 64GB.

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

Области применения

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

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

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

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

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

Как обойти ограничения мобильной платформы?

Чтобы ответить на этот вопрос рассмотрим каждое ограничение отдельно:

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

Слабые вычислительные мощности. Чтобы это ограничение не было фатальным для всей системы, необходимо отказаться от «тяжелого» алгоритма консенсуса PoW в пользу более лёгких, например, Proof of Authority (PoA). PoA хорош тем, что не требует решения сложных математических задач, но в этом случае все узлы микрочейна должны доверять друг другу. Предлагаемая реализация: добавляемые в микрочейн узлы должны обменяться публичными ключами ЭП и внести, с разрешения оператора, полученный ключ в список доверенных.

Для систем, где между участниками нет доверия, можно использовать (d)PoS и (d)BFT алгоритмы, которые также как PoW требуют вычислений, но значительно более «лёгких».

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

1) Как устройства будут находить друг друга?

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

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

· Третий вариант — комбинированный, когда при подключении нового узла подключающий узел вместо прямых адресов участников посылает известные ему адреса discovery-серверов через локальные каналы (Wi-Fi/BT) или целевым сообщением (Push, SMS, etc)

2) По какому протоколу будет проходить связь?

· TCP/IP сокеты — вариант который первым приходит в голову, но выглядит трудным для реализации, так как пользователи в течении дня перемещаются между провайдерами связи (Wi-Fi/сотовая), а их устройства меняют свои IP адреса.

· WebSocket — те же недостатки, что и в первом варианте.

· Платформенные Push-сообщения– этот вариант выглядит наиболее перспективным, так как требует наименьших энергозатрат и выглядит наиболее эффективным из вышеперечисленных.

Итоговая концепция

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

1. Сеть состоит из мобильных устройств, на которых запущено приложение узла сети

2. Каждый узел сети может входить в 1 или более микрочейнов

3. Каждый микрочейн хранит свои данные на каждом устройстве, входящем в него

4. В качестве алгоритма консуса предлагаем использовать PoA

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

a. консенсусное решение о добавлении

b. личное решение и консенсус уже по результатам подписи транзакций (не добавившие отбрасывают транзакции)

c. личное решение о добавлении создателя микрочейна

6. Валидация в рамках PoA: каждый узел валидирует транзакции в микрочейне по ЭП инициатора и набору бизнес-правил, которые могут варьироваться между микрочейнами

7. Устройства в сети адресуются своими номерам и общаются P2P с помощью пуш-нотификаций

8. Устройства в сети находят друг друга через Wi-Fi/Bluetooth при подключении к микрочейну — подключаемый отправляет запрос подключающему, тот в ответ (при позитивном решении) высылает ему таблицу адресов других участников микрочейна

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