Криптокошелёк Multy против блокчейна. Спикер: Вадим Маковский

4 месяца назад
65 в блокчейн

О разработке мульти-криптовалютного мобильного кошелька Multy, а также о возникающих в данном процессе сложностях расскажет CEO проекта Multy Вадим Маковский.

Для погружения в контекст проблем, с которыми приходится сталкиваться разработчикам Multy, рассмотрим идеологию проекта

Базовая миссия проекта - сделать криптовалюты легкими в использовании и доступными для широких масс, придерживаясь определенным принципам:

  • Поддерживать идеи Блокчейн технологии - открытости, распространенности и безопасности
  • Проект должен быть open-source
  • Приложение должно быстро работать, быть несложным и обеспечивать дополнительную безопасность и надежность

На сегодняшний день архитектура проекта выглядит следующим образом:

Multy vs Blockchains | Вадим Маковский.pptx.jpg

  • Приложения Android, iOS
  • Firebase - инструмент для отправки push уведомлений
  • В центре проекта находится основной backend, написанный на Goland
  • Нативные ноды - Bitcoin, Ethereum, Golos
  • Между нативными нодами и основным backend - клиенты (унифицированные структуры, позволяющие пользователям работать с интерфейсами, а не с бинарными данными транзакций)
  • Сторонние сервисы - Blocksafe (предоставляет данные по блокчейн цепочкам), Poloniex (поставляют данные о криптовалютных парах)

Теперь рассмотрим проблемы, которые возникли у разработчиков проекта

Выбор клиента нод для работы с конкретными цепочками

Multy vs Blockchains | Вадим Маковский.pptx-2.jpg

  • В цепочке Биткоин на данный момент есть два ярких представителя - bitcoinD и btcd. Протестировав два клиента, выбор был сделан в пользу btcd
  • Для цепочки Эфириум можно выделить два основных клиента Geth и Parity. В данном случае Geth подходит проекту в большей мере, поскольку написан на Goland, а также более удобен с точки зрения использования тестнета
  • В системе Голос выбор клиента не стоял, но необходимо было определиться с нодой - ставить полную ноду, ноду делегата или клиентскую ноду

Более подробно разберем проблемы, которые возникли с клиентами

Клиент btcd

  • Жестко конфигурируется
  • Нет метода отправки сырой транзакции для Go клиента
  • btcd поддерживает сокет подключение, но данные сокеты реализованы с помощью TLS (криптографический протокол, обеспечивающий защищённую передачу данных). Дело в том, что сокет соединения организующиеся через TLS, которые созданы в не докер контейнеров, не принимаются и к ноде невозможно подключиться.

Клиент Geth

  • Жестко конфигурируется
  • Необходимо вручную проводить манипуляции с генезис блоком самой цепочки
  • Несколько раз нода переставала синхронизироваться
  • Веб сокеты не всегда корректно работают

Голос

  • Легкая конфигурация как плюс
  • На сегодняшний день нет детальной инструкции по запуску ноды Голос

В процессе тестирования были выявлены следующие проблемы протоколов самих цепочек

В сети Биткоин

  • Существует 3 версии официальной документации по сериализации транзакций, но ни одна из них не работает (разработчики Multy использовали дополнительный источник информации - пост на stackoverflow)
  • Сложная система input/output
  • Ни один кошелек, кроме Multy, не может гарантировать полный контроль средств вплоть до сатоши, поскольку комиссия за транзакцию устанавливается после того, как данная транзакция была сформирована. Другими словами пользователь не может совершить трату в Биткоин сети с точностью до сатоши

В сети Эфириум

  • Использование нестандартной SHA-3 имплементации
  • Также как и в сети Биткоин пользователь не может совершить транзакцию с точностью вплоть до сатоши
  • Существуют кейсы отмены транзакции
  • В одну транзакцию нельзя включить несколько получателей
    592 Gb - вес сети
  • Токены не прописываются в балансе пользователей, а хранятся в смарт-контрактах

В сети Голос

  • Несистематизированная, неполная документация (Команда Голос работает над исправлением данного недостатка)
  • Нода Голос занимает значительное место оперативной памяти (64Gb)

Работая над решением вышеперечисленных проблем, пытаясь упростить процессы взаимодействия и сделать использования приложения более функциональным, разработчики Multy разбили процесс проведения транзакции на логические блоки - теперь отправка биткоина располагается на 5 экранах

Multy vs Blockchains | Вадим Маковский.pptx-6.jpg

  • В первом блоке подставляем адрес
  • Далее делается 2 запроса на сервер, где определяется размер комиссии
  • После пользователь выставляет сумму транзакции
  • Финальный экран

Также отметим общие проблемы Блокчейн технологии

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

Если у вас остались вопрос, можете задать их непосредственно спикеру лекции

Multy vs Blockchains | Вадим Маковский.pptx-4.jpg

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.