From f61cd740e4abc458354795d940812b93e51c357f Mon Sep 17 00:00:00 2001 From: ernestognw Date: Fri, 29 Aug 2025 12:14:31 -1000 Subject: [PATCH] Add an initializer to non upgradeable AccountERC7579 variants --- .changeset/metal-ghosts-listen.md | 5 ++ packages/core/solidity/src/account.test.ts.md | 76 +++++++++++++++--- .../core/solidity/src/account.test.ts.snap | Bin 12030 -> 12042 bytes packages/core/solidity/src/account.ts | 33 ++++---- packages/core/solidity/src/signer.ts | 2 +- 5 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 .changeset/metal-ghosts-listen.md diff --git a/.changeset/metal-ghosts-listen.md b/.changeset/metal-ghosts-listen.md new file mode 100644 index 000000000..6aea76406 --- /dev/null +++ b/.changeset/metal-ghosts-listen.md @@ -0,0 +1,5 @@ +--- +'@openzeppelin/wizard': patch +--- + +Add initializers to ERC-7579 non-upgradeable accounts diff --git a/packages/core/solidity/src/account.test.ts.md b/packages/core/solidity/src/account.test.ts.md index 59f7f04d9..cb107593f 100644 --- a/packages/core/solidity/src/account.test.ts.md +++ b/packages/core/solidity/src/account.test.ts.md @@ -225,11 +225,20 @@ Generated by [AVA](https://avajs.dev). import {AccountERC7579} from "@openzeppelin/contracts/account/extensions/draft-AccountERC7579.sol";␊ import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊ import {ERC7739} from "@openzeppelin/contracts/utils/cryptography/signers/draft-ERC7739.sol";␊ + import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ - contract MyAccount is Account, EIP712, ERC7739, AccountERC7579 {␊ - constructor(uint256 moduleTypeId, address module, bytes calldata initData)␊ - EIP712("MyAccount", "1")␊ + contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579 {␊ + /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ + constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ + _disableInitializers();␊ + }␊ + ␊ + function initialize(uint256 moduleTypeId, address module, bytes calldata initData)␊ + public␊ + initializer␊ {␊ require(moduleTypeId == MODULE_TYPE_VALIDATOR || moduleTypeId == MODULE_TYPE_EXECUTOR);␊ _installModule(moduleTypeId, module, initData);␊ @@ -270,10 +279,21 @@ Generated by [AVA](https://avajs.dev). import {Account} from "@openzeppelin/contracts/account/Account.sol";␊ import {AccountERC7579} from "@openzeppelin/contracts/account/extensions/draft-AccountERC7579.sol";␊ import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol";␊ + import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ - contract MyAccount is Account, IERC1271, AccountERC7579 {␊ - constructor(uint256 moduleTypeId, address module, bytes calldata initData) {␊ + contract MyAccount is Initializable, Account, IERC1271, AccountERC7579 {␊ + /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ + constructor() {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ + _disableInitializers();␊ + }␊ + ␊ + function initialize(uint256 moduleTypeId, address module, bytes calldata initData)␊ + public␊ + initializer␊ + {␊ require(moduleTypeId == MODULE_TYPE_VALIDATOR || moduleTypeId == MODULE_TYPE_EXECUTOR);␊ _installModule(moduleTypeId, module, initData);␊ }␊ @@ -311,11 +331,20 @@ Generated by [AVA](https://avajs.dev). import {AccountERC7579} from "@openzeppelin/contracts/account/extensions/draft-AccountERC7579.sol";␊ import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊ import {ERC7739} from "@openzeppelin/contracts/utils/cryptography/signers/draft-ERC7739.sol";␊ + import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ - contract MyAccount is Account, EIP712, ERC7739, AccountERC7579 {␊ - constructor(uint256 moduleTypeId, address module, bytes calldata initData)␊ - EIP712("MyAccount", "1")␊ + contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579 {␊ + /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ + constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ + _disableInitializers();␊ + }␊ + ␊ + function initialize(uint256 moduleTypeId, address module, bytes calldata initData)␊ + public␊ + initializer␊ {␊ require(moduleTypeId == MODULE_TYPE_VALIDATOR || moduleTypeId == MODULE_TYPE_EXECUTOR);␊ _installModule(moduleTypeId, module, initData);␊ @@ -358,11 +387,20 @@ Generated by [AVA](https://avajs.dev). import {AccountERC7579Hooked} from "@openzeppelin/contracts/account/extensions/draft-AccountERC7579Hooked.sol";␊ import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊ import {ERC7739} from "@openzeppelin/contracts/utils/cryptography/signers/draft-ERC7739.sol";␊ + import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ - contract MyAccount is Account, EIP712, ERC7739, AccountERC7579Hooked {␊ - constructor(uint256 moduleTypeId, address module, bytes calldata initData)␊ - EIP712("MyAccount", "1")␊ + contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked {␊ + /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ + constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ + _disableInitializers();␊ + }␊ + ␊ + function initialize(uint256 moduleTypeId, address module, bytes calldata initData)␊ + public␊ + initializer␊ {␊ require(moduleTypeId == MODULE_TYPE_VALIDATOR || moduleTypeId == MODULE_TYPE_EXECUTOR);␊ _installModule(moduleTypeId, module, initData);␊ @@ -699,6 +737,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Upgradeable, UUPSUpgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -758,6 +798,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, IERC1271, AccountERC7579Upgradeable, UUPSUpgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -815,6 +857,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Upgradeable, UUPSUpgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -876,6 +920,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579HookedUpgradeable, UUPSUpgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -1174,6 +1220,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Upgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -1226,6 +1274,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, IERC1271, AccountERC7579Upgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -1276,6 +1326,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Upgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ @@ -1330,6 +1382,8 @@ Generated by [AVA](https://avajs.dev). contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579HookedUpgradeable {␊ /// @custom:oz-upgrades-unsafe-allow-reachable constructor␊ constructor() EIP712("MyAccount", "1") {␊ + // Accounts are typically deployed and initialized as clones during their first user op,␊ + // therefore, initializers are disabled for the implementation contract␊ _disableInitializers();␊ }␊ ␊ diff --git a/packages/core/solidity/src/account.test.ts.snap b/packages/core/solidity/src/account.test.ts.snap index 8539b23ac06b570f8ab57d81626c6000c8ca4d5e..3e40ed318486df46c7d3f5bf3e2b4f41a6498f6e 100644 GIT binary patch literal 12042 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 SJNo($pYb*G_P!sGApZ|zuNOxE literal 12030 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 c.addConstructorCode(comment)); - c.addConstructorCode(disableInitializers); + c.addConstructorCode(`_disableInitializers();`); } }