Как раскрыть сокращённый индекс таблицы адресов Arbitrum
Некоторые форматы данных Arbitrum передают короткое число вместо зарегистрированного адреса. Если считать число младшими байтами Ethereum-адреса, декодер получит другого адресата.
Раскройте индекс в исходной цепочке
Когда формат явно указывает на индекс таблицы, запросите ArbAddressTable в той же дочерней сети. Пример использует Foundry cast и предполагает существование индекса 12. Если известен адрес, его зарегистрированный индекс вернёт lookup(address).
cast call 0x0000000000000000000000000000000000000066 \
"lookupIndex(uint256)(address)" 12 --rpc-url "$CHILD_RPC"
Свяжите полученный 20-байтовый адрес с исходным индексом и chain ID. Индекс тестовой сети может соответствовать другому адресу в рабочей сети при полностью одинаковых байтах сообщения.
Сначала определите вариант кодировки
Формат может поддерживать и буквальный адрес, и сокращённый индекс. До запроса таблицы разберите признак варианта. Для исторической проверки убедитесь в наличии регистрации на момент исполнения сообщения, если нода хранит нужное состояние. docs.arbitrum.io Arbitrum documentation