Как построить доказательство 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