Как восстановить адрес контракта, создаваемого депозитом OP Stack
У типизированного депозита OP нет обычного поля nonce транзакции. Подстановка нуля для вычисления адреса создания ломается, если у отправителя L2 уже есть история счётчика.
Прочитайте квитанцию с учётом форка
Проверьте отсутствие адреса назначения и откройте L2-квитанцию депозита. Начиная с Regolith поле depositNonce содержит нужный для этого депозита nonce отправителя. Используйте фактический L2-адрес отправителя с учётом применимого алиаса.
Regolith-or-later deposit receipt
to: null
depositNonce: 5
В примере вычислите адрес CREATE из RLP-списка адреса отправителя и целого 5, возьмите Keccak-256 и последние двадцать байт. Сравните с contractAddress квитанции. Уникальный sourceHash для этого вычисления не нужен.
Проверьте успешность развёртывания
Расчёт даёт адрес попытки создания. До сообщения о работающем контракте проверьте статус квитанции и код на адресе в соответствующем блоке. Квитанции до Regolith не содержат добавленного поля nonce и требуют исторического контекста исполнения. specs.optimism.io OP Stack specification