Как восстановить результат перевода ICRC-1 после потери ответа

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

Запишите запрос до отправки

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

attempt 1: destination D, amount 100, memo M, created_at_time T
retry:     destination D, amount 100, memo M, created_at_time T
Duplicate { duplicate_of = 746 }

Различайте повтор и истечение окна

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

Источники