Hi @kseniya,
The minimal proxy is a simple contract that just delegates all calls to a logic contract. A delegate call is similar to a regular call, except that all code is executed in the context of the caller, not of the callee. Meaning that the state is with the minimal proxy and there can be multiple minimal proxies all pointing to the one logic contract.
The logic contract doesn’t need any proxy functionality. The only thing it may need is an initialize
function, and so can inherit from Initializable
to use the initializer
modifier to ensure that initialize
is only called once.
I suggest reading (if you haven’t already): Deep dive into the Minimal Proxy contract
Feel free to ask all the questions that you need.