Size: a a a

2021 February 26

AZ

Alexey Zhdanov in Ethereum Russia
Ну мы в TurboGeth наелись ложкой selfdestruct, потому что фича непростая, а лежит под консенсусом
источник

AZ

Alexey Zhdanov in Ethereum Russia
Это хорошо, а газтокены должны гореть в аду )
источник

AZ

Alexey Zhdanov in Ethereum Russia
Ранее обсуждалось
источник

AZ

Alexey Zhdanov in Ethereum Russia
Alex
По ссылкам выше. Для того чтобы реализовать апргейд через create2 нужно чтобы иниткод запросил код у вызывающего контракта (или где  то еще) нужный рантайм байткод (обычно рантайм байткод захаркожен в  иникоде). насколько я понял
А можно ли тогда подгрузить код без всех этих махинаций в контракте "на ходу"?
источник

AZ

Alexey Zhdanov in Ethereum Russia
Инициализация же сродне выполнению конструктора? (вообще из последнего следует первое)
источник

A

Alex in Ethereum Russia
Alexey Zhdanov
А можно ли тогда подгрузить код без всех этих махинаций в контракте "на ходу"?
Вот особый иниткод это и делает, он во время деплоя делает вызов в сторонний контракт запрашивает у него нужный байткод и разворачивает его
источник

A

Alex in Ethereum Russia
Alexey Zhdanov
Ранее обсуждалось
это про то что из-за selfdestruct нода должна проверять есть ли там код или нет?
источник

AZ

Alexey Zhdanov in Ethereum Russia
Alex
это про то что из-за selfdestruct нода должна проверять есть ли там код или нет?
Угу
источник

AZ

Alexey Zhdanov in Ethereum Russia
Alex
Вот особый иниткод это и делает, он во время деплоя делает вызов в сторонний контракт запрашивает у него нужный байткод и разворачивает его
А после деплоя нельзя? В чем разница между выполнением опкода подгрузки кода иниткодом и уже опосля в результате вызова некого метода F? Вопрос скорее всем кто врубился адресован
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
это нужно чтобы initCode всегда был одинаковый, чтобы адрес в create2 не менялся. Так как адрес конечного контракта задеплоенного с помощью create2 зависит от 3х параметров: адреса деплоера, хэша иниткода и рандомного числа (соль)
источник

A

Alex in Ethereum Russia
Alexey Zhdanov
А после деплоя нельзя? В чем разница между выполнением опкода подгрузки кода иниткодом и уже опосля в результате вызова некого метода F? Вопрос скорее всем кто врубился адресован
после деплоя ты рантаймкод уже не изменишь,
источник

A

Alex in Ethereum Russia
creationCode (он же initCode) развернет рантаймкод под адресом, в обычном случае рантаймкод захаркожен в инитКод. По ссылкам выше хак где инитКод обращается в сторонний контракт для получения рантаймкода который нужно ему развернуть. Таким образом под одним и тем же адресом может развернуться любая логика.
источник

A

Alex in Ethereum Russia
Вот только стандартым путем такой иниткод не написать как я вижу, все примеры написаны сразу опкодом
источник

A

Alex in Ethereum Russia
Vladimir
это неверно. достаточно дернуть selfdestruct у контракта и можно деплоить новую версию по тому же адресу через обычную create2 фабрику
но для этого ты должен передать тот же initCode
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Alex
Вот только стандартым путем такой иниткод не написать как я вижу, все примеры написаны сразу опкодом
что значит стандартным путем? через код solidity?
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
create2 нужен для детерменированных адресов - https://eips.ethereum.org/EIPS/eip-1014
источник

A

Alex in Ethereum Russia
Mikhail Dobrokhvalov
что значит стандартным путем? через код solidity?
Да имею ввиду через солидити или ассембли/yul
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
трюк по ссылкам выше, заключается в том чтобы один и тотже initCode мог возвращать разный bytecode
источник

A

Alex in Ethereum Russia
Mikhail Dobrokhvalov
трюк по ссылкам выше, заключается в том чтобы один и тотже initCode мог возвращать разный bytecode
путем запроса нужного кода у другого контракта, так?
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
да
источник