Как определить реализацию прокси ERC-1967 на блоке инцидента

Разбор старой транзакции по сегодняшнему коду может привести к правдоподобному, но ошибочному выводу. Прочитайте слот реализации прокси на высоте инцидента.

Прочитайте хранилище прокси

Вызовите eth_getStorageAt, передав адрес прокси, слот ниже и нужный блок. Адрес реализации занимает крайние правые 20 байт в полученном 32-байтовом слове.

0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc

Если слово заканчивается на 0000000000000000000000000000000000000042, а старшие байты нулевые, исследуйте код по адресу, заканчивающемуся на 42. Для воспроизведения вызова приложения через fallback по-прежнему обращайтесь к самому прокси.

Разберите случай с пустым слотом

Нулевое слово возможно у прокси с маяком. Тогда проверьте слот маяка ERC-1967 и вызовите у маяка implementation() на той же высоте. Другие типы прокси могут хранить реализацию иначе. Снимок на конец блока уже включает обновления, выполненные позднее в этом же блоке. eips.ethereum.org EIP-1967