По ссылкам выше. Для того чтобы реализовать апргейд через create2 нужно чтобы иниткод запросил код у вызывающего контракта (или где то еще) нужный рантайм байткод (обычно рантайм байткод захаркожен в иникоде). насколько я понял
А можно ли тогда подгрузить код без всех этих махинаций в контракте "на ходу"?
Вот особый иниткод это и делает, он во время деплоя делает вызов в сторонний контракт запрашивает у него нужный байткод и разворачивает его
А после деплоя нельзя? В чем разница между выполнением опкода подгрузки кода иниткодом и уже опосля в результате вызова некого метода F? Вопрос скорее всем кто врубился адресован
это нужно чтобы initCode всегда был одинаковый, чтобы адрес в create2 не менялся. Так как адрес конечного контракта задеплоенного с помощью create2 зависит от 3х параметров: адреса деплоера, хэша иниткода и рандомного числа (соль)
А после деплоя нельзя? В чем разница между выполнением опкода подгрузки кода иниткодом и уже опосля в результате вызова некого метода F? Вопрос скорее всем кто врубился адресован
creationCode (он же initCode) развернет рантаймкод под адресом, в обычном случае рантаймкод захаркожен в инитКод. По ссылкам выше хак где инитКод обращается в сторонний контракт для получения рантаймкода который нужно ему развернуть. Таким образом под одним и тем же адресом может развернуться любая логика.