Skip to content

Commit 7825602

Browse files
getAddress to use _data param and _generateSalt (#398)
* use internal function to generate salt in getAddress * fix tests
1 parent ae577a0 commit 7825602

File tree

5 files changed

+32
-32
lines changed

5 files changed

+32
-32
lines changed

contracts/smart-wallet/interfaces/IAccountFactory.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ interface IAccountFactory {
3636
function accountImplementation() external view returns (address);
3737

3838
/// @notice Returns the address of an Account that would be deployed with the given admin signer.
39-
function getAddress(address adminSigner) external view returns (address);
39+
function getAddress(address adminSigner, bytes calldata data) external view returns (address);
4040

4141
/// @notice Returns all signers of an account.
4242
function getSignersOfAccount(address account) external view returns (address[] memory signers);

contracts/smart-wallet/utils/BaseAccountFactory.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ abstract contract BaseAccountFactory is IAccountFactory, Multicall {
9696
//////////////////////////////////////////////////////////////*/
9797

9898
/// @notice Returns the address of an Account that would be deployed with the given admin signer.
99-
function getAddress(address _adminSigner) public view returns (address) {
100-
bytes32 salt = keccak256(abi.encode(_adminSigner));
99+
function getAddress(address _adminSigner, bytes calldata _data) public view returns (address) {
100+
bytes32 salt = _generateSalt(_adminSigner, _data);
101101
return Clones.predictDeterministicAddress(accountImplementation, salt);
102102
}
103103

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ contract AccountTest is BaseTest {
196196
function test_state_executeTransaction() public {
197197
_setup_executeTransaction();
198198

199-
address account = accountFactory.getAddress(accountAdmin);
199+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
200200

201201
assertEq(numberContract.num(), 0);
202202

@@ -210,7 +210,7 @@ contract AccountTest is BaseTest {
210210
function test_state_executeBatchTransaction() public {
211211
_setup_executeTransaction();
212212

213-
address account = accountFactory.getAddress(accountAdmin);
213+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
214214

215215
assertEq(numberContract.num(), 0);
216216

@@ -284,7 +284,7 @@ contract AccountTest is BaseTest {
284284
function test_state_executeTransaction_viaAccountSigner() public {
285285
_setup_executeTransaction();
286286

287-
address account = accountFactory.getAddress(accountAdmin);
287+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
288288

289289
vm.prank(accountAdmin);
290290
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -326,7 +326,7 @@ contract AccountTest is BaseTest {
326326
function test_revert_executeTransaction_nonSigner_viaDirectCall() public {
327327
_setup_executeTransaction();
328328

329-
address account = accountFactory.getAddress(accountAdmin);
329+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
330330

331331
vm.prank(accountAdmin);
332332
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -346,7 +346,7 @@ contract AccountTest is BaseTest {
346346
function test_state_accountReceivesNativeTokens() public {
347347
_setup_executeTransaction();
348348

349-
address account = accountFactory.getAddress(accountAdmin);
349+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
350350

351351
assertEq(address(account).balance, 0);
352352

@@ -362,7 +362,7 @@ contract AccountTest is BaseTest {
362362

363363
uint256 value = 1000;
364364

365-
address account = accountFactory.getAddress(accountAdmin);
365+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
366366
vm.prank(accountAdmin);
367367
payable(account).call{ value: value }("");
368368
assertEq(address(account).balance, value);
@@ -381,7 +381,7 @@ contract AccountTest is BaseTest {
381381
function test_state_addAndWithdrawDeposit() public {
382382
_setup_executeTransaction();
383383

384-
address account = accountFactory.getAddress(accountAdmin);
384+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
385385

386386
assertEq(Account(payable(account)).getDeposit(), 0);
387387

@@ -401,7 +401,7 @@ contract AccountTest is BaseTest {
401401
/// @dev Send an ERC-721 NFT to an account.
402402
function test_state_receiveERC721NFT() public {
403403
_setup_executeTransaction();
404-
address account = accountFactory.getAddress(accountAdmin);
404+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
405405

406406
assertEq(erc721.balanceOf(account), 0);
407407

@@ -413,7 +413,7 @@ contract AccountTest is BaseTest {
413413
/// @dev Send an ERC-1155 NFT to an account.
414414
function test_state_receiveERC1155NFT() public {
415415
_setup_executeTransaction();
416-
address account = accountFactory.getAddress(accountAdmin);
416+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
417417

418418
assertEq(erc1155.balanceOf(account, 0), 0);
419419

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ contract DynamicAccountTest is BaseTest {
211211
function test_state_executeTransaction() public {
212212
_setup_executeTransaction();
213213

214-
address account = accountFactory.getAddress(accountAdmin);
214+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
215215

216216
assertEq(numberContract.num(), 0);
217217

@@ -225,7 +225,7 @@ contract DynamicAccountTest is BaseTest {
225225
function test_state_executeBatchTransaction() public {
226226
_setup_executeTransaction();
227227

228-
address account = accountFactory.getAddress(accountAdmin);
228+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
229229

230230
assertEq(numberContract.num(), 0);
231231

@@ -299,7 +299,7 @@ contract DynamicAccountTest is BaseTest {
299299
function test_state_executeTransaction_viaAccountSigner() public {
300300
_setup_executeTransaction();
301301

302-
address account = accountFactory.getAddress(accountAdmin);
302+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
303303

304304
vm.prank(accountAdmin);
305305
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -341,7 +341,7 @@ contract DynamicAccountTest is BaseTest {
341341
function test_revert_executeTransaction_nonSigner_viaDirectCall() public {
342342
_setup_executeTransaction();
343343

344-
address account = accountFactory.getAddress(accountAdmin);
344+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
345345

346346
vm.prank(accountAdmin);
347347
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -361,7 +361,7 @@ contract DynamicAccountTest is BaseTest {
361361
function test_state_accountReceivesNativeTokens() public {
362362
_setup_executeTransaction();
363363

364-
address account = accountFactory.getAddress(accountAdmin);
364+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
365365

366366
assertEq(address(account).balance, 0);
367367

@@ -377,7 +377,7 @@ contract DynamicAccountTest is BaseTest {
377377

378378
uint256 value = 1000;
379379

380-
address account = accountFactory.getAddress(accountAdmin);
380+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
381381
vm.prank(accountAdmin);
382382
payable(account).call{ value: value }("");
383383
assertEq(address(account).balance, value);
@@ -396,7 +396,7 @@ contract DynamicAccountTest is BaseTest {
396396
function test_state_addAndWithdrawDeposit() public {
397397
_setup_executeTransaction();
398398

399-
address account = accountFactory.getAddress(accountAdmin);
399+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
400400

401401
assertEq(Account(payable(account)).getDeposit(), 0);
402402

@@ -416,7 +416,7 @@ contract DynamicAccountTest is BaseTest {
416416
/// @dev Send an ERC-721 NFT to an account.
417417
function test_state_receiveERC721NFT() public {
418418
_setup_executeTransaction();
419-
address account = accountFactory.getAddress(accountAdmin);
419+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
420420

421421
assertEq(erc721.balanceOf(account), 0);
422422

@@ -428,7 +428,7 @@ contract DynamicAccountTest is BaseTest {
428428
/// @dev Send an ERC-1155 NFT to an account.
429429
function test_state_receiveERC1155NFT() public {
430430
_setup_executeTransaction();
431-
address account = accountFactory.getAddress(accountAdmin);
431+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
432432

433433
assertEq(erc1155.balanceOf(account, 0), 0);
434434

@@ -444,7 +444,7 @@ contract DynamicAccountTest is BaseTest {
444444
/// @dev Make the account reject ERC-721 NFTs instead of accepting them.
445445
function test_scenario_changeExtensionForFunction() public {
446446
_setup_executeTransaction();
447-
address account = accountFactory.getAddress(accountAdmin);
447+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
448448

449449
// The account can initially receive NFTs.
450450
assertEq(erc721.balanceOf(account), 0);

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ contract ManagedAccountTest is BaseTest {
213213
function test_state_executeTransaction() public {
214214
_setup_executeTransaction();
215215

216-
address account = accountFactory.getAddress(accountAdmin);
216+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
217217

218218
assertEq(numberContract.num(), 0);
219219

@@ -227,7 +227,7 @@ contract ManagedAccountTest is BaseTest {
227227
function test_state_executeBatchTransaction() public {
228228
_setup_executeTransaction();
229229

230-
address account = accountFactory.getAddress(accountAdmin);
230+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
231231

232232
assertEq(numberContract.num(), 0);
233233

@@ -301,7 +301,7 @@ contract ManagedAccountTest is BaseTest {
301301
function test_state_executeTransaction_viaAccountSigner() public {
302302
_setup_executeTransaction();
303303

304-
address account = accountFactory.getAddress(accountAdmin);
304+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
305305

306306
vm.prank(accountAdmin);
307307
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -343,7 +343,7 @@ contract ManagedAccountTest is BaseTest {
343343
function test_revert_executeTransaction_nonSigner_viaDirectCall() public {
344344
_setup_executeTransaction();
345345

346-
address account = accountFactory.getAddress(accountAdmin);
346+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
347347

348348
vm.prank(accountAdmin);
349349
Account(payable(account)).grantRole(keccak256("SIGNER_ROLE"), accountSigner);
@@ -363,7 +363,7 @@ contract ManagedAccountTest is BaseTest {
363363
function test_state_accountReceivesNativeTokens() public {
364364
_setup_executeTransaction();
365365

366-
address account = accountFactory.getAddress(accountAdmin);
366+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
367367

368368
assertEq(address(account).balance, 0);
369369

@@ -379,7 +379,7 @@ contract ManagedAccountTest is BaseTest {
379379

380380
uint256 value = 1000;
381381

382-
address account = accountFactory.getAddress(accountAdmin);
382+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
383383
vm.prank(accountAdmin);
384384
payable(account).call{ value: value }("");
385385
assertEq(address(account).balance, value);
@@ -398,7 +398,7 @@ contract ManagedAccountTest is BaseTest {
398398
function test_state_addAndWithdrawDeposit() public {
399399
_setup_executeTransaction();
400400

401-
address account = accountFactory.getAddress(accountAdmin);
401+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
402402

403403
assertEq(Account(payable(account)).getDeposit(), 0);
404404

@@ -418,7 +418,7 @@ contract ManagedAccountTest is BaseTest {
418418
/// @dev Send an ERC-721 NFT to an account.
419419
function test_state_receiveERC721NFT() public {
420420
_setup_executeTransaction();
421-
address account = accountFactory.getAddress(accountAdmin);
421+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
422422

423423
assertEq(erc721.balanceOf(account), 0);
424424

@@ -430,7 +430,7 @@ contract ManagedAccountTest is BaseTest {
430430
/// @dev Send an ERC-1155 NFT to an account.
431431
function test_state_receiveERC1155NFT() public {
432432
_setup_executeTransaction();
433-
address account = accountFactory.getAddress(accountAdmin);
433+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
434434

435435
assertEq(erc1155.balanceOf(account, 0), 0);
436436

@@ -446,7 +446,7 @@ contract ManagedAccountTest is BaseTest {
446446
/// @dev Make the account reject ERC-721 NFTs instead of accepting them.
447447
function test_scenario_changeExtensionForFunction() public {
448448
_setup_executeTransaction();
449-
address account = accountFactory.getAddress(accountAdmin);
449+
address account = accountFactory.getAddress(accountAdmin, bytes(""));
450450

451451
// The account can initially receive NFTs.
452452
assertEq(erc721.balanceOf(account), 0);

0 commit comments

Comments
 (0)