Как построить доказательство Outbox Arbitrum для нужного листа вывода
Одна транзакция L2 может создать несколько сообщений родителю. Индекс транзакции в дочернем блоке не является позицией листа Merkle для исполнения Outbox.
Возьмите позицию из дочернего события отправки
Найдите событие ArbSys L2ToL1Tx нужного сообщения и сохраните позицию, отправителя, цель, сумму и данные. Выберите подтверждённый у родителя send root, дерево которого покрывает позицию. Запросите доказательство у дочерней ноды для соответствующего размера дерева и индекса листа.
child L2ToL1Tx event → message position i
confirmed send root → proof for leaf i
Если транзакция породила позиции 18 и 19, доказательство листа 18 не разрешает параметры сообщения 19. Восстановите лист из полей протокола и сверьте корень перед исполнением Outbox.
Проверьте подтверждение и расходование
Для обычного исполнения у родителя требуется подтверждённое assertion, покрывающее сообщение. Проверьте, не потрачен ли выбранный индекс на родительской цепочке. Замена аккаунта ретранслятора не позволяет исполнить один вывод дважды. docs.arbitrum.io Arbitrum documentation