Как сверить частично выполненный пакет utility в Substrate
Пакет выплат utility.batch может остановиться на середине с сохранением предыдущих изменений. Повтор всех элементов создаёт риск заплатить успешным получателям дважды.
Установите тип отправленного пакета
При наличии pallet utility два конструктора ниже по-разному объединяют три подготовленных вызова. До разбора событий прочитайте section и method реально отправленного extrinsic. Пример формирует оба варианта локально.
const calls = [firstCall, secondCall, thirdCall]
const stopOnFailure = api.tx.utility.batch(calls)
const atomic = api.tx.utility.batchAll(calls)
console.log(stopOnFailure.method.toHex(), atomic.method.toHex())
Определите точку остановки по индексу
Для utility.batch событие BatchInterrupted с индексом 1 означает, что первый вызов выполнен, второй завершился ошибкой, а третий не запускался. Изучите ошибку второго и сверьте состояние первого получателя перед подготовкой нового списка. Успех внешнего вызова сам по себе не показывает оплаченных получателей.
При batchAll ошибка внутреннего вызова откатывает изменения пакета. У forceBatch другая модель: выполнение может продолжаться после ошибок. Храните имя обёртки в записях сверки.