Skip to content

Commit cb0f1da

Browse files
authored
Account factory: update constructor params (#556)
* update constructor params * fix tests
1 parent e315dbe commit cb0f1da

File tree

10 files changed

+36
-23
lines changed

10 files changed

+36
-23
lines changed

contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,19 @@ import { DynamicAccount, IEntryPoint } from "./DynamicAccount.sol";
2222
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
2323

2424
contract DynamicAccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnumerable {
25+
address public constant ENTRYPOINT_ADDRESS = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789;
26+
2527
/*///////////////////////////////////////////////////////////////
2628
Constructor
2729
//////////////////////////////////////////////////////////////*/
2830

29-
constructor(IEntryPoint _entrypoint, IExtension.Extension[] memory _defaultExtensions)
30-
BaseAccountFactory(payable(address(new DynamicAccount(_entrypoint, _defaultExtensions))), address(_entrypoint))
31+
constructor(address _defaultAdmin, IExtension.Extension[] memory _defaultExtensions)
32+
BaseAccountFactory(
33+
payable(address(new DynamicAccount(IEntryPoint(ENTRYPOINT_ADDRESS), _defaultExtensions))),
34+
ENTRYPOINT_ADDRESS
35+
)
3136
{
32-
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
37+
_setupRole(DEFAULT_ADMIN_ROLE, _defaultAdmin);
3338
}
3439

3540
/*///////////////////////////////////////////////////////////////

contracts/prebuilts/account/managed/ManagedAccountFactory.sol

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,19 @@ contract ManagedAccountFactory is BaseAccountFactory, ContractMetadata, Permissi
2626
Constructor
2727
//////////////////////////////////////////////////////////////*/
2828

29-
constructor(IEntryPoint _entrypoint, Extension[] memory _defaultExtensions)
29+
constructor(
30+
address _defaultAdmin,
31+
IEntryPoint _entrypoint,
32+
Extension[] memory _defaultExtensions
33+
)
3034
BaseRouter(_defaultExtensions)
3135
BaseAccountFactory(payable(address(new ManagedAccount(_entrypoint, address(this)))), address(_entrypoint))
3236
{
3337
__BaseRouter_init();
34-
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
38+
_setupRole(DEFAULT_ADMIN_ROLE, _defaultAdmin);
3539

3640
bytes32 _extensionRole = keccak256("EXTENSION_ROLE");
37-
_setupRole(_extensionRole, msg.sender);
41+
_setupRole(_extensionRole, _defaultAdmin);
3842
_setRoleAdmin(_extensionRole, _extensionRole);
3943
}
4044

contracts/prebuilts/account/non-upgradeable/AccountFactory.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ contract AccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnum
3030
Constructor
3131
//////////////////////////////////////////////////////////////*/
3232

33-
constructor(IEntryPoint _entrypoint)
33+
constructor(address _defaultAdmin, IEntryPoint _entrypoint)
3434
BaseAccountFactory(address(new Account(_entrypoint, address(this))), address(_entrypoint))
3535
{
36-
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
36+
_setupRole(DEFAULT_ADMIN_ROLE, _defaultAdmin);
3737
}
3838

3939
/*///////////////////////////////////////////////////////////////

src/test/benchmark/AccountBenchmark.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ contract AccountBenchmarkTest is BaseTest {
181181
// Setup contracts
182182
entrypoint = new EntryPoint();
183183
// deploy account factory
184-
accountFactory = new AccountFactory(IEntryPoint(payable(address(entrypoint))));
184+
accountFactory = new AccountFactory(deployer, IEntryPoint(payable(address(entrypoint))));
185185
// deploy dummy contract
186186
numberContract = new Number();
187187
}

src/test/smart-wallet/Account.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ contract SimpleAccountTest is BaseTest {
188188
// Setup contracts
189189
entrypoint = new EntryPoint();
190190
// deploy account factory
191-
accountFactory = new AccountFactory(IEntryPoint(payable(address(entrypoint))));
191+
accountFactory = new AccountFactory(deployer, IEntryPoint(payable(address(entrypoint))));
192192
// deploy dummy contract
193193
numberContract = new Number();
194194
}

src/test/smart-wallet/AccountVulnPOC.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ contract SimpleAccountVulnPOCTest is BaseTest {
212212
// Setup contracts
213213
entrypoint = new EntryPoint();
214214
// deploy account factory
215-
accountFactory = new AccountFactory(IEntryPoint(payable(address(entrypoint))));
215+
accountFactory = new AccountFactory(deployer, IEntryPoint(payable(address(entrypoint))));
216216
// deploy dummy contract
217217
numberContract = new Number();
218218
}

src/test/smart-wallet/DynamicAccount.t.sol

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ contract NFTRejector {
4646

4747
contract DynamicAccountTest is BaseTest {
4848
// Target contracts
49-
EntryPoint private entrypoint;
49+
EntryPoint private constant entrypoint = EntryPoint(payable(0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789));
5050
DynamicAccountFactory private accountFactory;
5151

5252
// Mocks
@@ -202,7 +202,8 @@ contract DynamicAccountTest is BaseTest {
202202
nonSigner = vm.addr(nonSignerPKey);
203203

204204
// Setup contracts
205-
entrypoint = new EntryPoint();
205+
address _deployedEntrypoint = address(new EntryPoint());
206+
vm.etch(address(entrypoint), bytes(_deployedEntrypoint.code));
206207

207208
// Setting up default extension.
208209
IExtension.Extension memory defaultExtension;
@@ -248,7 +249,7 @@ contract DynamicAccountTest is BaseTest {
248249
extensions[0] = defaultExtension;
249250

250251
// deploy account factory
251-
accountFactory = new DynamicAccountFactory(IEntryPoint(payable(address(entrypoint))), extensions);
252+
accountFactory = new DynamicAccountFactory(deployer, extensions);
252253
// deploy dummy contract
253254
numberContract = new Number();
254255
}
@@ -303,10 +304,7 @@ contract DynamicAccountTest is BaseTest {
303304
extensions[0] = defaultExtension;
304305

305306
// deploy account factory
306-
DynamicAccountFactory factory = new DynamicAccountFactory(
307-
IEntryPoint(payable(address(entrypoint))),
308-
extensions
309-
);
307+
DynamicAccountFactory factory = new DynamicAccountFactory(deployer, extensions);
310308
}
311309

312310
/// @dev Create an account by directly calling the factory.

src/test/smart-wallet/ManagedAccount.t.sol

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,11 @@ contract ManagedAccountTest is BaseTest {
250250

251251
// deploy account factory
252252
vm.prank(factoryDeployer);
253-
accountFactory = new ManagedAccountFactory(IEntryPoint(payable(address(entrypoint))), extensions);
253+
accountFactory = new ManagedAccountFactory(
254+
factoryDeployer,
255+
IEntryPoint(payable(address(entrypoint))),
256+
extensions
257+
);
254258
// deploy dummy contract
255259
numberContract = new Number();
256260
}
@@ -303,6 +307,7 @@ contract ManagedAccountTest is BaseTest {
303307
// deploy account factory
304308
vm.prank(factoryDeployer);
305309
ManagedAccountFactory factory = new ManagedAccountFactory(
310+
factoryDeployer,
306311
IEntryPoint(payable(address(entrypoint))),
307312
extensions
308313
);

src/test/smart-wallet/account-core/isValidSigner.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ contract AccountCoreTest_isValidSigner is BaseTest {
190190
IExtension.Extension[] memory extensions;
191191

192192
// deploy account factory
193-
accountFactory = new DynamicAccountFactory(IEntryPoint(payable(address(entrypoint))), extensions);
193+
accountFactory = new DynamicAccountFactory(deployer, extensions);
194194
// deploy dummy contract
195195
numberContract = new Number();
196196

src/test/smart-wallet/account-permissions/setPermissionsForSigner.t.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ contract AccountPermissionsTest_setPermissionsForSigner is BaseTest {
5454
);
5555

5656
// Target contracts
57-
EntryPoint private entrypoint;
57+
EntryPoint private constant entrypoint = EntryPoint(payable(0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789));
5858
DynamicAccountFactory private accountFactory;
5959

6060
// Mocks
@@ -220,7 +220,8 @@ contract AccountPermissionsTest_setPermissionsForSigner is BaseTest {
220220
nonSigner = vm.addr(nonSignerPKey);
221221

222222
// Setup contracts
223-
entrypoint = new EntryPoint();
223+
address _deployedEntrypoint = address(new EntryPoint());
224+
vm.etch(address(entrypoint), bytes(_deployedEntrypoint.code));
224225

225226
// Setting up default extension.
226227
IExtension.Extension memory defaultExtension;
@@ -266,7 +267,7 @@ contract AccountPermissionsTest_setPermissionsForSigner is BaseTest {
266267
extensions[0] = defaultExtension;
267268

268269
// deploy account factory
269-
accountFactory = new DynamicAccountFactory(IEntryPoint(payable(address(entrypoint))), extensions);
270+
accountFactory = new DynamicAccountFactory(deployer, extensions);
270271
// deploy dummy contract
271272
numberContract = new Number();
272273
}

0 commit comments

Comments
 (0)