Multisignature deposit / withdrawal system on Cardano

Задача

Разработать систему для получения депозитов от многих пользователей и кастодиального хранения средств в блокчейне Cardano.

Результат

Нулевой спринт

Процесс работы был построен по SCRUM методологии и разбит на двухнедельные спринты. Первым этапом мы провели “нулевой спринт”, в ходе которого были решены следующие задачи: 

  • выбран метод кастодиального хранения с использованием алгоритма мультиподписей 
  • проведено исследование существующих решений для блокчейна Cardano
  • определены основные сущности и пользовательские сценарии, на их основе сделана спецификация системы и описание API
  • сделана оценка разработки системы по составленной спецификации

 

Процесс работы

Выполнение проекта заняло 4 спринта. 

AXIOMA разработала систему получения депозитов от ногих пользователей и кастодиального хранения средств. Это было достигнуто путем использования алгоритма мультиподписи "2 из 3": каждый адрес депозита генерируется основываясь на одном горячем и двух холодных кошельках. Горячий кошелек генерируется в соотвтствии с принципом HD-кошелька, холодные кошельки фиксированные.  

Благодаря этому, у нас есть одновременно преимущества использования горячих и холодных кошельков:  

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

Приложение состоит из 4 модулей:

  1. сновная библиотека. Она может быть использована как JS-модуль и предоставляет всю функциональность, описанную в спецификации. 
  2. REST-API. Является оберткой для основной библиотеки предлагая все ее методы как API плюс добавляет уровень авторизации. 
  3. UI для REST-API для получения ожидающих транзакций и отправки подписанных транзакций в блокчейн.
  4. UI бухгалтера для подписания транзакций. Он сделан как отдельное приложение с минимальными зависимостями, потому что оно работает с конфиденциальными данными.

Также была создана полная спецификация системы, включая BPM, Use Case, Activity и ER диаграмы. Кроме того, было создано руководство пользователя. 

 

Изменения в ходе работы

Работа по гибкой методологии позволяет изменять принятые ранее решения “на лету”, и внедрять улучшения без потери темпа работы.

В данном проекте изначально планировалось, что приложение будет работать как микросервис, но в итоге оно может быть использовано также и в качестве Javascript-библиотеки. Также изначально планировалась работа только с отдельной Cardano-ноды, но в итоге для взаимодействия с блокчейном было сделано несколько реализаций (отдельная нода, blockfrost.io, cardano-graphql API), которые можно выбирать через конфигурацию.

 

Стек технологий 

  • Typescript
  • OpenAPI
  • Cardano-serialization-lib
  • Mongo
  • Docker

 

Результат работы

  • Приложение в виде отдельной JS библиотеки и набор микросервисов, готовых к работе с Docker-compose
  • Подробное руководство пользователя, включающее, среди прочего, описание и требование к производственной инфраструктуре, а также рекомендации по безопасности