From bdb2a1404bb8a946ccc46f4d92059e36b88a4f73 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Thu, 12 Jun 2025 12:02:12 -0600 Subject: [PATCH 1/9] Add _disableInitializer to Accounts constructor --- packages/core/solidity/src/account.test.ts.md | 220 ++++++++++++++---- .../core/solidity/src/account.test.ts.snap | Bin 4560 -> 4615 bytes packages/core/solidity/src/signer.ts | 8 + 3 files changed, 183 insertions(+), 45 deletions(-) diff --git a/packages/core/solidity/src/account.test.ts.md b/packages/core/solidity/src/account.test.ts.md index 0e25e37f3..04df33895 100644 --- a/packages/core/solidity/src/account.test.ts.md +++ b/packages/core/solidity/src/account.test.ts.md @@ -754,7 +754,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract CustomAccountWithSignerECDSA is Initializable, Account, EIP712, ERC7739, SignerECDSA {␊ - constructor() EIP712("CustomAccount with SignerECDSA", "1") {}␊ + constructor() EIP712("CustomAccount with SignerECDSA", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -776,6 +778,10 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract CustomAccountWithSignerECDSAERC1271 is Initializable, Account, IERC1271, SignerECDSA {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ view␊ @@ -806,7 +812,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract CustomAccountWithSignerECDSAERC7739 is Initializable, Account, EIP712, ERC7739, SignerECDSA {␊ - constructor() EIP712("CustomAccount with SignerECDSAERC7739", "1") {}␊ + constructor() EIP712("CustomAccount with SignerECDSAERC7739", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -830,7 +838,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract CustomAccountWithSignerECDSAERC721Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC721Holder {␊ - constructor() EIP712("CustomAccount with SignerECDSAERC721Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerECDSAERC721Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -854,7 +864,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract CustomAccountWithSignerECDSAERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC1155Holder {␊ - constructor() EIP712("CustomAccount with SignerECDSAERC1155Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerECDSAERC1155Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -881,7 +893,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerECDSAERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerECDSAERC721HolderERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -905,7 +919,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC7821 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ @@ -940,7 +956,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerECDSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1000,6 +1018,10 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerECDSA {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function initializeECDSA(address signer) public initializer {␊ _setSigner(signer);␊ }␊ @@ -1056,7 +1078,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerECDSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1118,7 +1142,9 @@ Generated by [AVA](https://avajs.dev). import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerECDSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1176,7 +1202,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract CustomAccountWithSignerP256 is Initializable, Account, EIP712, ERC7739, SignerP256 {␊ - constructor() EIP712("CustomAccount with SignerP256", "1") {}␊ + constructor() EIP712("CustomAccount with SignerP256", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1198,6 +1226,10 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract CustomAccountWithSignerP256ERC1271 is Initializable, Account, IERC1271, SignerP256 {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ view␊ @@ -1228,7 +1260,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract CustomAccountWithSignerP256ERC7739 is Initializable, Account, EIP712, ERC7739, SignerP256 {␊ - constructor() EIP712("CustomAccount with SignerP256ERC7739", "1") {}␊ + constructor() EIP712("CustomAccount with SignerP256ERC7739", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1252,7 +1286,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract CustomAccountWithSignerP256ERC721Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC721Holder {␊ - constructor() EIP712("CustomAccount with SignerP256ERC721Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerP256ERC721Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1276,7 +1312,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract CustomAccountWithSignerP256ERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC1155Holder {␊ - constructor() EIP712("CustomAccount with SignerP256ERC1155Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerP256ERC1155Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1303,7 +1341,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerP256ERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerP256ERC721HolderERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1327,7 +1367,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerP256, ERC7821 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ @@ -1362,7 +1404,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerP256 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1422,6 +1466,10 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerP256 {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function initializeP256(bytes32 qx, bytes32 qy) public initializer {␊ _setSigner(qx, qy);␊ }␊ @@ -1478,7 +1526,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerP256 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1540,7 +1590,9 @@ Generated by [AVA](https://avajs.dev). import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerP256 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1598,7 +1650,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract CustomAccountWithSignerRSA is Initializable, Account, EIP712, ERC7739, SignerRSA {␊ - constructor() EIP712("CustomAccount with SignerRSA", "1") {}␊ + constructor() EIP712("CustomAccount with SignerRSA", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1620,6 +1674,10 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract CustomAccountWithSignerRSAERC1271 is Initializable, Account, IERC1271, SignerRSA {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ view␊ @@ -1650,7 +1708,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract CustomAccountWithSignerRSAERC7739 is Initializable, Account, EIP712, ERC7739, SignerRSA {␊ - constructor() EIP712("CustomAccount with SignerRSAERC7739", "1") {}␊ + constructor() EIP712("CustomAccount with SignerRSAERC7739", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1674,7 +1734,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract CustomAccountWithSignerRSAERC721Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC721Holder {␊ - constructor() EIP712("CustomAccount with SignerRSAERC721Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerRSAERC721Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1698,7 +1760,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract CustomAccountWithSignerRSAERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC1155Holder {␊ - constructor() EIP712("CustomAccount with SignerRSAERC1155Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerRSAERC1155Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1725,7 +1789,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerRSAERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerRSAERC721HolderERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1749,7 +1815,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC7821 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ @@ -1784,7 +1852,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerRSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1844,6 +1914,10 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerRSA {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function initializeRSA(bytes memory e, bytes memory n) public initializer {␊ _setSigner(e, n);␊ }␊ @@ -1900,7 +1974,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerRSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -1962,7 +2038,9 @@ Generated by [AVA](https://avajs.dev). import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerRSA {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -2020,7 +2098,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract CustomAccountWithSignerMultisig is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913 {␊ - constructor() EIP712("CustomAccount with SignerMultisig", "1") {}␊ + constructor() EIP712("CustomAccount with SignerMultisig", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2058,6 +2138,10 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract CustomAccountWithSignerMultisigERC1271 is Initializable, Account, IERC1271, MultiSignerERC7913 {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ view␊ @@ -2104,7 +2188,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract CustomAccountWithSignerMultisigERC7739 is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913 {␊ - constructor() EIP712("CustomAccount with SignerMultisigERC7739", "1") {}␊ + constructor() EIP712("CustomAccount with SignerMultisigERC7739", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2144,7 +2230,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract CustomAccountWithSignerMultisigERC721Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC721Holder {␊ - constructor() EIP712("CustomAccount with SignerMultisigERC721Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerMultisigERC721Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2184,7 +2272,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract CustomAccountWithSignerMultisigERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC1155Holder {␊ - constructor() EIP712("CustomAccount with SignerMultisigERC1155Holder", "1") {}␊ + constructor() EIP712("CustomAccount with SignerMultisigERC1155Holder", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2227,7 +2317,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerMultisigERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigERC721HolderERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2267,7 +2359,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC7821 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ @@ -2318,7 +2412,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -2394,6 +2490,10 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, MultiSignerERC7913 {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function initializeMultisig(bytes[] memory signers, uint256 threshold)␊ public␊ initializer␊ @@ -2466,7 +2566,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -2544,7 +2646,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, MultiSignerERC7913 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -2618,7 +2722,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ contract CustomAccountWithSignerMultisigWeighted is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted {␊ - constructor() EIP712("CustomAccount with SignerMultisigWeighted", "1") {}␊ + constructor() EIP712("CustomAccount with SignerMultisigWeighted", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2664,6 +2770,10 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ contract CustomAccountWithSignerMultisigWeightedERC1271 is Initializable, Account, IERC1271, MultiSignerERC7913Weighted {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ view␊ @@ -2720,7 +2830,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerMultisigWeightedERC7739 is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC7739", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2770,7 +2882,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerMultisigWeightedERC721Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC721Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC721Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2820,7 +2934,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerMultisigWeightedERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2871,7 +2987,9 @@ Generated by [AVA](https://avajs.dev). contract CustomAccountWithSignerMultisigWeightedERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC721HolderERC1155Holder", "1")␊ - {}␊ + {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2919,7 +3037,9 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC7821 {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ @@ -2979,7 +3099,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913Weighted {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -3064,6 +3186,10 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, MultiSignerERC7913Weighted {␊ + constructor() {␊ + _disableInitializers();␊ + }␊ + ␊ function initializeMultisigWeighted(bytes[] memory signers, uint256[] memory weights, uint256 threshold)␊ public␊ initializer␊ @@ -3145,7 +3271,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913Weighted {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ @@ -3232,7 +3360,9 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, MultiSignerERC7913Weighted {␊ - constructor() EIP712("MyAccount", "1") {}␊ + constructor() EIP712("MyAccount", "1") {␊ + _disableInitializers();␊ + }␊ ␊ function isValidSignature(bytes32 hash, bytes calldata signature)␊ public␊ diff --git a/packages/core/solidity/src/account.test.ts.snap b/packages/core/solidity/src/account.test.ts.snap index dcc00923870cd1622088516267b1a2e7dc7e124f..7c85ffb78c39a44fda2a66115a237d0a4e65d588 100644 GIT binary patch literal 4615 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 literal 4560 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 diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index b5441e6f0..1a5875a44 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -25,16 +25,19 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { c.addModifier('initializer', fn); const args = fn.args; + let disableInitializers = false; switch (signer) { case 'Multisig': c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); c.addFunctionCode(`_setThreshold(${args[1]!.name});`, fn); + disableInitializers = true; break; case 'MultisigWeighted': c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); c.addFunctionCode(`_setSignerWeights(${args[0]!.name}, ${args[1]!.name});`, fn); c.addFunctionCode(`_setThreshold(${args[2]!.name});`, fn); + disableInitializers = true; break; case 'ECDSA': case 'P256': @@ -46,6 +49,11 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { .trimEnd()});`, fn, ); + disableInitializers = true; + } + + if (disableInitializers) { + c.addConstructorCode('_disableInitializers();'); } } From 1411fa3a8a95f84b7518363e45de9a3341f8bce9 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Thu, 12 Jun 2025 12:07:34 -0600 Subject: [PATCH 2/9] up --- packages/core/solidity/src/signer.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index 1a5875a44..2e7458577 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -53,7 +53,8 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { } if (disableInitializers) { - c.addConstructorCode('_disableInitializers();'); + c.addNatspecTag('@custom:oz-upgrades-unsafe-allow', 'constructor'); + c.addConstructorCode(`_disableInitializers();`); } } From 203a35c8290f57baa558da0acd8f80da1a4e8b00 Mon Sep 17 00:00:00 2001 From: ernestognw Date: Thu, 12 Jun 2025 12:10:19 -0600 Subject: [PATCH 3/9] Add changeset --- .changeset/cyan-rivers-fold.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cyan-rivers-fold.md diff --git a/.changeset/cyan-rivers-fold.md b/.changeset/cyan-rivers-fold.md new file mode 100644 index 000000000..8f1713534 --- /dev/null +++ b/.changeset/cyan-rivers-fold.md @@ -0,0 +1,5 @@ +--- +'@openzeppelin/wizard': patch +--- + +`Accounts`: Add `_disableInitializers()` to account implementations From 8c2e1a3d0b053a6481cf9f038eec0d713865dfcd Mon Sep 17 00:00:00 2001 From: ernestognw Date: Thu, 12 Jun 2025 12:49:01 -0600 Subject: [PATCH 4/9] Review suggestions --- packages/core/solidity/src/account.test.ts.md | 55 ++++++++++++++++++ .../core/solidity/src/account.test.ts.snap | Bin 4615 -> 4663 bytes packages/core/solidity/src/signer.ts | 18 +++--- 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/packages/core/solidity/src/account.test.ts.md b/packages/core/solidity/src/account.test.ts.md index 04df33895..da256f549 100644 --- a/packages/core/solidity/src/account.test.ts.md +++ b/packages/core/solidity/src/account.test.ts.md @@ -753,6 +753,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSA is Initializable, Account, EIP712, ERC7739, SignerECDSA {␊ constructor() EIP712("CustomAccount with SignerECDSA", "1") {␊ _disableInitializers();␊ @@ -777,6 +778,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSAERC1271 is Initializable, Account, IERC1271, SignerECDSA {␊ constructor() {␊ _disableInitializers();␊ @@ -811,6 +813,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSAERC7739 is Initializable, Account, EIP712, ERC7739, SignerECDSA {␊ constructor() EIP712("CustomAccount with SignerECDSAERC7739", "1") {␊ _disableInitializers();␊ @@ -837,6 +840,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSAERC721Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC721Holder {␊ constructor() EIP712("CustomAccount with SignerECDSAERC721Holder", "1") {␊ _disableInitializers();␊ @@ -863,6 +867,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSAERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC1155Holder {␊ constructor() EIP712("CustomAccount with SignerECDSAERC1155Holder", "1") {␊ _disableInitializers();␊ @@ -890,6 +895,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerECDSAERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerECDSAERC721HolderERC1155Holder", "1")␊ @@ -918,6 +924,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerECDSA, ERC7821 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -955,6 +962,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerECDSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1017,6 +1025,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerECDSA {␊ constructor() {␊ _disableInitializers();␊ @@ -1077,6 +1086,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerECDSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1141,6 +1151,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerECDSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerECDSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1201,6 +1212,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256 is Initializable, Account, EIP712, ERC7739, SignerP256 {␊ constructor() EIP712("CustomAccount with SignerP256", "1") {␊ _disableInitializers();␊ @@ -1225,6 +1237,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256ERC1271 is Initializable, Account, IERC1271, SignerP256 {␊ constructor() {␊ _disableInitializers();␊ @@ -1259,6 +1272,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256ERC7739 is Initializable, Account, EIP712, ERC7739, SignerP256 {␊ constructor() EIP712("CustomAccount with SignerP256ERC7739", "1") {␊ _disableInitializers();␊ @@ -1285,6 +1299,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256ERC721Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC721Holder {␊ constructor() EIP712("CustomAccount with SignerP256ERC721Holder", "1") {␊ _disableInitializers();␊ @@ -1311,6 +1326,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256ERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC1155Holder {␊ constructor() EIP712("CustomAccount with SignerP256ERC1155Holder", "1") {␊ _disableInitializers();␊ @@ -1338,6 +1354,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerP256ERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerP256, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerP256ERC721HolderERC1155Holder", "1")␊ @@ -1366,6 +1383,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerP256, ERC7821 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1403,6 +1421,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerP256 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1465,6 +1484,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerP256 {␊ constructor() {␊ _disableInitializers();␊ @@ -1525,6 +1545,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerP256 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1589,6 +1610,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerP256} from "@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerP256 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1649,6 +1671,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSA is Initializable, Account, EIP712, ERC7739, SignerRSA {␊ constructor() EIP712("CustomAccount with SignerRSA", "1") {␊ _disableInitializers();␊ @@ -1673,6 +1696,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSAERC1271 is Initializable, Account, IERC1271, SignerRSA {␊ constructor() {␊ _disableInitializers();␊ @@ -1707,6 +1731,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSAERC7739 is Initializable, Account, EIP712, ERC7739, SignerRSA {␊ constructor() EIP712("CustomAccount with SignerRSAERC7739", "1") {␊ _disableInitializers();␊ @@ -1733,6 +1758,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSAERC721Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC721Holder {␊ constructor() EIP712("CustomAccount with SignerRSAERC721Holder", "1") {␊ _disableInitializers();␊ @@ -1759,6 +1785,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSAERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC1155Holder {␊ constructor() EIP712("CustomAccount with SignerRSAERC1155Holder", "1") {␊ _disableInitializers();␊ @@ -1786,6 +1813,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerRSAERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerRSAERC721HolderERC1155Holder", "1")␊ @@ -1814,6 +1842,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, SignerRSA, ERC7821 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1851,6 +1880,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerRSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -1913,6 +1943,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, SignerRSA {␊ constructor() {␊ _disableInitializers();␊ @@ -1973,6 +2004,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, SignerRSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2037,6 +2069,7 @@ Generated by [AVA](https://avajs.dev). import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ import {SignerRSA} from "@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, SignerRSA {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2097,6 +2130,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisig is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913 {␊ constructor() EIP712("CustomAccount with SignerMultisig", "1") {␊ _disableInitializers();␊ @@ -2137,6 +2171,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigERC1271 is Initializable, Account, IERC1271, MultiSignerERC7913 {␊ constructor() {␊ _disableInitializers();␊ @@ -2187,6 +2222,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigERC7739 is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913 {␊ constructor() EIP712("CustomAccount with SignerMultisigERC7739", "1") {␊ _disableInitializers();␊ @@ -2229,6 +2265,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigERC721Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC721Holder {␊ constructor() EIP712("CustomAccount with SignerMultisigERC721Holder", "1") {␊ _disableInitializers();␊ @@ -2271,6 +2308,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC1155Holder {␊ constructor() EIP712("CustomAccount with SignerMultisigERC1155Holder", "1") {␊ _disableInitializers();␊ @@ -2314,6 +2352,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigERC721HolderERC1155Holder", "1")␊ @@ -2358,6 +2397,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913, ERC7821 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2411,6 +2451,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2489,6 +2530,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, MultiSignerERC7913 {␊ constructor() {␊ _disableInitializers();␊ @@ -2565,6 +2607,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2645,6 +2688,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, MultiSignerERC7913 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -2721,6 +2765,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeighted is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted {␊ constructor() EIP712("CustomAccount with SignerMultisigWeighted", "1") {␊ _disableInitializers();␊ @@ -2769,6 +2814,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeightedERC1271 is Initializable, Account, IERC1271, MultiSignerERC7913Weighted {␊ constructor() {␊ _disableInitializers();␊ @@ -2827,6 +2873,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeightedERC7739 is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC7739", "1")␊ @@ -2879,6 +2926,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeightedERC721Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC721Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC721Holder", "1")␊ @@ -2931,6 +2979,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeightedERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC1155Holder", "1")␊ @@ -2984,6 +3033,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract CustomAccountWithSignerMultisigWeightedERC721HolderERC1155Holder is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC721Holder, ERC1155Holder {␊ constructor()␊ EIP712("CustomAccount with SignerMultisigWeightedERC721HolderERC1155Holder", "1")␊ @@ -3036,6 +3086,7 @@ Generated by [AVA](https://avajs.dev). import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";␊ import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, MultiSignerERC7913Weighted, ERC7821 {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -3098,6 +3149,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913Weighted {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -3185,6 +3237,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, IERC1271, AccountERC7579, MultiSignerERC7913Weighted {␊ constructor() {␊ _disableInitializers();␊ @@ -3270,6 +3323,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579, MultiSignerERC7913Weighted {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ @@ -3359,6 +3413,7 @@ Generated by [AVA](https://avajs.dev). import {MultiSignerERC7913Weighted} from "@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol";␊ import {PackedUserOperation} from "@openzeppelin/contracts/interfaces/draft-IERC4337.sol";␊ ␊ + /// @custom:oz-upgrades-unsafe-allow constructor␊ contract MyAccount is Initializable, Account, EIP712, ERC7739, AccountERC7579Hooked, MultiSignerERC7913Weighted {␊ constructor() EIP712("MyAccount", "1") {␊ _disableInitializers();␊ diff --git a/packages/core/solidity/src/account.test.ts.snap b/packages/core/solidity/src/account.test.ts.snap index 7c85ffb78c39a44fda2a66115a237d0a4e65d588..13cd60956792ba4ab73a8e9966cf71986f29a80f 100644 GIT binary patch literal 4663 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%0A6LfW*gsE5QY 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 diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index 2e7458577..3ee0bcbfd 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -25,19 +25,16 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { c.addModifier('initializer', fn); const args = fn.args; - let disableInitializers = false; switch (signer) { case 'Multisig': c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); c.addFunctionCode(`_setThreshold(${args[1]!.name});`, fn); - disableInitializers = true; break; case 'MultisigWeighted': c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); c.addFunctionCode(`_setSignerWeights(${args[0]!.name}, ${args[1]!.name});`, fn); c.addFunctionCode(`_setThreshold(${args[2]!.name});`, fn); - disableInitializers = true; break; case 'ECDSA': case 'P256': @@ -49,13 +46,18 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { .trimEnd()});`, fn, ); - disableInitializers = true; } - if (disableInitializers) { - c.addNatspecTag('@custom:oz-upgrades-unsafe-allow', 'constructor'); - c.addConstructorCode(`_disableInitializers();`); - } + if (shouldDisableInitializer(signer)) addDisableInitializersConstructor(c); +} + +function shouldDisableInitializer(signer: SignerOptions): boolean { + return (['Multisig', 'MultisigWeighted', 'ECDSA', 'P256', 'RSA'] as SignerOptions[]).includes(signer); +} + +function addDisableInitializersConstructor(c: ContractBuilder): void { + c.addNatspecTag('@custom:oz-upgrades-unsafe-allow', 'constructor'); + c.addConstructorCode(`_disableInitializers();`); } export const signers = { From fb8c5add25917d9c8c8944450925e42eba85ee67 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 13 Jun 2025 14:42:33 +0200 Subject: [PATCH 5/9] update --- packages/core/solidity/src/signer.ts | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index 3ee0bcbfd..a2abc53a6 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -21,10 +21,15 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { name: 'Initializable', path: '@openzeppelin/contracts/proxy/utils/Initializable.sol', }); - const fn = signerFunctions[`initialize${signer}`]; - c.addModifier('initializer', fn); + // Add locking constructor + c.addNatspecTag('@custom:oz-upgrades-unsafe-allow', 'constructor'); + c.addConstructorCode(`_disableInitializers();`); + + // Add initializer + const fn = signerFunctions[`initialize${signer}`]; const args = fn.args; + c.addModifier('initializer', fn); switch (signer) { case 'Multisig': @@ -47,17 +52,6 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { fn, ); } - - if (shouldDisableInitializer(signer)) addDisableInitializersConstructor(c); -} - -function shouldDisableInitializer(signer: SignerOptions): boolean { - return (['Multisig', 'MultisigWeighted', 'ECDSA', 'P256', 'RSA'] as SignerOptions[]).includes(signer); -} - -function addDisableInitializersConstructor(c: ContractBuilder): void { - c.addNatspecTag('@custom:oz-upgrades-unsafe-allow', 'constructor'); - c.addConstructorCode(`_disableInitializers();`); } export const signers = { From 68bd636151956c8a890fcc32c15749803e6a1019 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 13 Jun 2025 14:43:59 +0200 Subject: [PATCH 6/9] update --- packages/core/solidity/src/signer.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index a2abc53a6..e38f946cf 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -28,18 +28,17 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { // Add initializer const fn = signerFunctions[`initialize${signer}`]; - const args = fn.args; c.addModifier('initializer', fn); switch (signer) { case 'Multisig': - c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); - c.addFunctionCode(`_setThreshold(${args[1]!.name});`, fn); + c.addFunctionCode(`_addSigners(${fn.args[0]!.name});`, fn); + c.addFunctionCode(`_setThreshold(${fn.args[1]!.name});`, fn); break; case 'MultisigWeighted': - c.addFunctionCode(`_addSigners(${args[0]!.name});`, fn); - c.addFunctionCode(`_setSignerWeights(${args[0]!.name}, ${args[1]!.name});`, fn); - c.addFunctionCode(`_setThreshold(${args[2]!.name});`, fn); + c.addFunctionCode(`_addSigners(${fn.args[0]!.name});`, fn); + c.addFunctionCode(`_setSignerWeights(${fn.args[0]!.name}, ${fn.args[1]!.name});`, fn); + c.addFunctionCode(`_setThreshold(${fn.args[2]!.name});`, fn); break; case 'ECDSA': case 'P256': From a7197c65a9f4c974a6bc54ae5c2e7bdad526a651 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 13 Jun 2025 14:46:21 +0200 Subject: [PATCH 7/9] simplify --- packages/core/solidity/src/signer.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index e38f946cf..cc48501aa 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -43,13 +43,7 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void { case 'ECDSA': case 'P256': case 'RSA': - c.addFunctionCode( - `_setSigner(${fn.args - .map(({ name }) => name) - .join(', ') - .trimEnd()});`, - fn, - ); + c.addFunctionCode(`_setSigner(${fn.args.map(({ name }) => name).join(', ')});`, fn); } } From 6cf6c69cd2f8d38fe07d6176188a6acabb30e84c Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 13 Jun 2025 14:48:01 +0200 Subject: [PATCH 8/9] simplify --- packages/core/solidity/src/signer.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index cc48501aa..54988015a 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -6,11 +6,10 @@ export type SignerOptions = (typeof SignerOptions)[number]; export function addSigner(c: ContractBuilder, signer: SignerOptions): void { if (!signer) return; - const parent = signers[signer]; - const name = parent.name; - c.addParent(parent); + + c.addParent(signers[signer]); c.addOverride( - { name: name === signers.MultisigWeighted.name ? signers.Multisig.name : name }, + { name: signer === 'MultisigWeighted' ? signers.Multisig.name : signers[signer].name }, signerFunctions._rawSignatureValidation, ); From f0d5d0a478ee0e45037933720708e1e29b74c29c Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 13 Jun 2025 14:54:43 +0200 Subject: [PATCH 9/9] simplify --- packages/core/solidity/src/signer.ts | 90 ++++++++++++++-------------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/packages/core/solidity/src/signer.ts b/packages/core/solidity/src/signer.ts index 54988015a..09e2cd111 100644 --- a/packages/core/solidity/src/signer.ts +++ b/packages/core/solidity/src/signer.ts @@ -73,49 +73,47 @@ export const signers = { }, }; -export const signerFunctions = { - ...defineFunctions({ - initializeECDSA: { - kind: 'public' as const, - args: [{ name: 'signer', type: 'address' }], - }, - initializeP256: { - kind: 'public' as const, - args: [ - { name: 'qx', type: 'bytes32' }, - { name: 'qy', type: 'bytes32' }, - ], - }, - initializeRSA: { - kind: 'public' as const, - args: [ - { name: 'e', type: 'bytes memory' }, - { name: 'n', type: 'bytes memory' }, - ], - }, - initializeMultisig: { - kind: 'public' as const, - args: [ - { name: 'signers', type: 'bytes[] memory' }, - { name: 'threshold', type: 'uint256' }, - ], - }, - initializeMultisigWeighted: { - kind: 'public' as const, - args: [ - { name: 'signers', type: 'bytes[] memory' }, - { name: 'weights', type: 'uint256[] memory' }, - { name: 'threshold', type: 'uint256' }, - ], - }, - _rawSignatureValidation: { - kind: 'internal' as const, - args: [ - { name: 'hash', type: 'bytes32' }, - { name: 'signature', type: 'bytes calldata' }, - ], - returns: ['bool'], - mutability: 'view' as const, - }, - }), -}; +export const signerFunctions = defineFunctions({ + initializeECDSA: { + kind: 'public' as const, + args: [{ name: 'signer', type: 'address' }], + }, + initializeP256: { + kind: 'public' as const, + args: [ + { name: 'qx', type: 'bytes32' }, + { name: 'qy', type: 'bytes32' }, + ], + }, + initializeRSA: { + kind: 'public' as const, + args: [ + { name: 'e', type: 'bytes memory' }, + { name: 'n', type: 'bytes memory' }, + ], + }, + initializeMultisig: { + kind: 'public' as const, + args: [ + { name: 'signers', type: 'bytes[] memory' }, + { name: 'threshold', type: 'uint256' }, + ], + }, + initializeMultisigWeighted: { + kind: 'public' as const, + args: [ + { name: 'signers', type: 'bytes[] memory' }, + { name: 'weights', type: 'uint256[] memory' }, + { name: 'threshold', type: 'uint256' }, + ], + }, + _rawSignatureValidation: { + kind: 'internal' as const, + args: [ + { name: 'hash', type: 'bytes32' }, + { name: 'signature', type: 'bytes calldata' }, + ], + returns: ['bool'], + mutability: 'view' as const, + }, +});