What happens to clones if the initialize function is called on the implementation contract?

contract ContractA {
  uint a;

  function initialize(uint _a) public initializer {
    a = _a;
  }
}

If ContractA is being used as an implementation contract to generate clones, then each clone will set the value of "a" when initialize() is called. What happens if initialize() is called on the implementation contract after the clones have been created? Will this have any effect on the values stored in the clones?

It would not have any effect on the values stored in the clones. The storage is completely independent for each clone and the implementation.

1 Like