ADAMANT Messenger поддерживает бесшовные переводы криптовалют как внутри чатов, так и напрямую с экрана Кошелька, все операции отслеживаются в Истории транзакций.
Переводы криптовалют в чате
Перед отправкой приложение проверяет баланс ADM пользователя, подключение к интернету, доступность узла ADM и доступность узла криптовалюты с помощью проверок работоспособности. Если какая-либо проверка не проходит, приложение показывает ошибку и предлагает повторить попытку.
Процесс транзакции начинается с локальной генерации как криптовалютной, так и ADM-транзакции. Для блокчейнов с nonce, таких как ETH, приложение проверяет локальное хранилище, чтобы убедиться, что транзакция с таким же nonce ещё не была успешно выполнена. Для блокчейнов без nonce, таких как BTC, DOGE или DASH, оно проверяет локальное хранилище и запрашивает блокчейн на наличие ожидающих транзакций. Если найдена ожидающая или уже выполненная дублирующая транзакция, процесс останавливается.
Далее ADM-транзакция отправляется на узел ADM. Если она принимается, она добавляется в чат, и приложение остаётся на экране Отправки. Криптовалютная транзакция затем сохраняется в локальной базе данных и отображается в истории транзакций со статусом «Ожидание». Приложение полагается на локально сохранённую метку времени для упорядочивания до тех пор, пока не станет доступна фактическая метка времени блокчейна. Такое немедленное отображение критически важно для переводов монет, отличных от ADM, поскольку узел монеты ещё не вернул данные, но пользователь должен получить мгновенную обратную связь.
Затем криптовалютная транзакция отправляется на узел монеты. Любой положительный ответ помечает транзакцию как ожидающую, и пользователь перенаправляется на экран чата или деталей транзакции. Если отправка не удалась, отображается ошибка в виде snackbar, и пользователь может повторить попытку, что приведёт к созданию совершенно новой транзакции. Если пользователь возвращается в чат без повторной отправки, неудачная транзакция всё равно остаётся в чате и истории, поскольку ADM-сообщение уже было отправлено. Обновления транзакций продолжаются в фоновом режиме.
Генерация ADM-транзакции до отправки криптовалютной транзакции гарантирует, что перевод криптовалюты никогда не будет осуществлён без записи в чате, предотвращая ситуацию, при которой пользователь потратит криптовалюту, не увидев этого, и случайно отправит её повторно.
Прямые переводы криптовалют (экран Кошелька)
Сценарий прямого перевода с экрана Кошелька идентичен переводам в чате за несколькими исключениями. Он пропускает проверку баланса ADM, проверку узла ADM и создание ADM-транзакции. После завершения пользователь перенаправляется в историю транзакций вместо чата.
История транзакций
История транзакций объединяет локально сохранённые транзакции с данными, синхронизированными с API узла блокчейна. Локально сохранённые транзакции сохраняются даже после перезапуска приложения, но должны быть очищены при выходе из аккаунта или повторном входе, чтобы избежать отображения истории другого аккаунта. Это сочетание обеспечивает точный и актуальный обзор переводов пользователя. По возможности приложение использует локальные вычисления и проверки для генерации транзакций, балансов, nonce, дубликатов и меток времени, чтобы обеспечить отзывчивый пользовательский интерфейс без ожидания сетевых запросов.
