Как раскрыть сокращённый индекс таблицы адресов 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