Как обработать OffchainLookup из вложенного вызова ENS-резолвера
Во время eth_call клиент получил ошибку OffchainLookup. Если без проверки перейти по первому URL, вложенный контракт сможет перенаправить запрос, который клиент адресовал родителю.
Сверьте отправителя в данных ошибки
Декодируйте ошибку и сравните её поле sender с фактически вызванным адресом. Пример использует имена вместо разобранных адресов. Если ошибка пришла из другого контракта и просто поднялась по стеку, проверка не пройдёт. Для подходящего запроса получите ответ шлюза по заданному шаблону URL с исходными данными вызова.
const called = "resolver-A";
for (const sender of ["resolver-A","nested-contract-B"])
console.log(sender === called ? "continue with this lookup" : "reject bubbled lookup");
Верните ответ на проверку в контракт
Вызовите исходный контракт, передав селектор callback, ответ шлюза и исходное extraData. Значение записи даёт результат этого проверочного вызова. Ответ HTTP 200 подтверждает лишь успешную доставку байтов. При проверке клиента воспроизведите корректный ответ, изменённый ответ и ошибку вложенного контракта: это разные пути исполнения.