изучено: create2 и детерминированные адреса, minimal proxy (EIP-1167). И создал GitHub на который вы обязаны подписаться
🤔 выжимка изученного:
🟠create2 и детерминированные адреса
обычно когда контракт деплоится в сеть, его адрес создаётся автоматически и заранее его узнать нельзя
но есть специальный opcode CREATE2, который позволяет создавать контракт по предсказуемому адресу
это называется детерминированный адрес. То есть адрес можно вычислить ещё до деплоя контракта
адрес в CREATE2 зависит от нескольких вещей: адрес контракта который делает деплой специальное значение salt bytecode контракта
если эти параметры одинаковые, адрес контракта всегда будет одинаковым. Это даёт интересные возможности
например можно заранее знать адрес будущего контракта и отправить туда средства ещё до того как контракт будет создан
также это используется в некоторых dapp чтобы заранее строить архитектуру системы и знать где будут находиться контракты
простой пример: допустим приложение создаёт персональный контракт кошелька для каждого пользователя. С помощью CREATE2 можно заранее вычислить адрес будущего кошелька пользователя еще до его деплоя
🟠minimal proxy (EIP-1167)
иногда системе нужно создавать много одинаковых контрактов. Например:
>персональные кошельки
>контракты для пользователей
>пулы ликвидности
>отдельные vault контракты
но если каждый раз деплоить полный контракт, это будет стоить очень много газа.
Поэтому используют minimal proxy
minimal proxy это очень маленький контракт, который не содержит всю логику, а просто перенаправляет все вызовы в основной контракт.
То есть есть один основной контракт с логикой. Его иногда называют implementation контрактом
а proxy контракты просто говорят EVM примерно следующее. Если кто-то вызывает функцию у меня, просто передай этот вызов в основной контракт
таким образом можно создавать сотни и тысячи контрактов, которые используют одну и ту же логику. Это сильно экономит газ и делает систему более масштабируемой
minimal proxy стандартизирован в EIP-1167 и часто используется в factory контрактах, когда нужно быстро и дешево создавать много экземпляров одного и того же контракта