Size: a a a

2021 February 26

A

Alex in Ethereum Russia
Vladimir
есть какой-нибудь бойлерплейт для ethers/hardhat/truffle чтобы деплоить апгрейдбл контракты не через openzeppelin proxy, а через create2/selfdestruct?
чото сходу не нашел
апгрейдбл через create2 ?
источник

V

Vladimir in Ethereum Russia
мало конструктива в вопросе. что именно тебя смущает?
источник

A

Alex in Ethereum Russia
Не понимаю как это видится. через create2/selfdestruct можно редеплоить один и тот же контракт
источник

RM

Ruslan Mirov in Ethereum Russia
Vladimir
главное не пиши свой кошелек, будучи нубом
А как тогда учится, если не пробовать ???
источник

A

Alex in Ethereum Russia
задеплоить другой код под этим адресом не получится
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Alex
Не понимаю как это видится. через create2/selfdestruct можно редеплоить один и тот же контракт
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Vladimir
есть какой-нибудь бойлерплейт для ethers/hardhat/truffle чтобы деплоить апгрейдбл контракты не через openzeppelin proxy, а через create2/selfdestruct?
чото сходу не нашел
не бойлерплейт, но пример реализации можно у нас подсмотреть - https://github.com/LinkdropHQ/linkdrop-monorepo/blob/master/packages/contracts/contracts/factory/LinkdropFactoryCommon.sol#L76
источник

V

Vladimir in Ethereum Russia
Alex
задеплоить другой код под этим адресом не получится
источник

V

Vladimir in Ethereum Russia
спасибо, еще одну нашел: https://github.com/thegostep/solidity-create2-deployer
там используется уже задеплоеная фабрика по адресу 0x4a27c059fd7e383854ea7de6be9c390a795f6ee3, можно сэкономить немного газа
источник

MD

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

A

Alex in Ethereum Russia
Был не прав да, но это прям не баг а monstrosity’s a caterpillar that turns into a tarantula with six heads: in other words, a metamorphic contract.
источник

V

Vladimir in Ethereum Russia
кто говорил о баге? В том числе для этого CREATE2 и задумывался.
имхо изящное решение если не нужно хранить стейт контракта между апгрейдами. Заодно блокчейн меньше засоряется хламом
источник

A

Alex in Ethereum Russia
Vladimir
кто говорил о баге? В том числе для этого CREATE2 и задумывался.
имхо изящное решение если не нужно хранить стейт контракта между апгрейдами. Заодно блокчейн меньше засоряется хламом
Нашел только один вариант “хакнутого” иниткода. Есть что то более проверенное чем PoC ?
источник

V

Vladimir in Ethereum Russia
о чем речь? какой хакнутый иниткод?
источник

AZ

Alexey Zhdanov in Ethereum Russia
Жесть, даже не думал о таком
источник

A

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

A

Alex in Ethereum Russia
источник

V

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

A

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

AZ

Alexey Zhdanov in Ethereum Russia
Вспомнилось
источник