Hi @DarkPay,
The lack of the gap variable in the new Initializable
makes it incompatible with ethereum package deployments. We’re really sorry about this inconvenience. The fact that you were able to deploy using --force
does not mean it is safe at all; it is not safe.
Fortunately it’s possible to insert the gap in the right place using multiple inheritance so that the new layouts match with the old one. You should define the following contract:
import '@openzeppelin/contracts-upgradeable/proxy/Initializable.sol';
contract InitializableGap is Initializable {
uint256[50] ____gap;
}
You can include this in your inheritance immediately after Initializable
like this:
contract DarkPay is Initializable, InitializableGap, [...] ERC20PermitUpgradeable { ... }
This will insert the gap so that storage layout matches the layout from contracts-ethereum-package.
Again, we’re sorry about this inconvenience but let us know if you try this workaround and if it works for you.