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