diff --git a/src/account/SemiModularAccountBase.sol b/src/account/SemiModularAccountBase.sol index 1605e9f5a..c206216d8 100644 --- a/src/account/SemiModularAccountBase.sol +++ b/src/account/SemiModularAccountBase.sol @@ -17,6 +17,14 @@ import {SignatureType} from "../helpers/SignatureType.sol"; import {RTCallBuffer, SigCallBuffer, UOCallBuffer} from "../libraries/ExecutionLib.sol"; import {ModularAccountBase} from "./ModularAccountBase.sol"; +/// @title SemiModularAccountBase +/// @author Alchemy +/// +/// @notice Abstract base contract for the Alchemy Semi-Modular Account variants. Includes fallback signer +/// functionality. +/// +/// @dev Inherits ModularAccountBase. Overrides certain functionality from ModularAccountBase, and exposes an +/// internal virtual getter for the fallback signer. abstract contract SemiModularAccountBase is ModularAccountBase { using MessageHashUtils for bytes32; using ModuleEntityLib for ModuleEntity; diff --git a/src/account/SemiModularAccountBytecode.sol b/src/account/SemiModularAccountBytecode.sol index b965f3494..115706d76 100644 --- a/src/account/SemiModularAccountBytecode.sol +++ b/src/account/SemiModularAccountBytecode.sol @@ -9,10 +9,11 @@ import {SemiModularAccountBase} from "./SemiModularAccountBase.sol"; /// @title SemiModularAccountBytecode /// @author Alchemy /// -/// @notice An implementation of a semi-modular account with a fallback that reads the signer from proxy bytecode. +/// @notice An implementation of a semi-modular account which reads the signer from proxy bytecode if it is not +/// disabled and zero in storage. /// -/// @dev This account requires that its proxy is compliant with Solady's LibClone ERC1967WithImmutableArgs -/// bytecode. +/// @dev Inherits SemiModularAccountBase. This account requires that its proxy is compliant with Solady's LibClone +/// ERC1967WithImmutableArgs bytecode with a bytecode-appended address to be used as the fallback signer. contract SemiModularAccountBytecode is SemiModularAccountBase { constructor(IEntryPoint anEntryPoint) SemiModularAccountBase(anEntryPoint) {} diff --git a/src/account/SemiModularAccountStorageOnly.sol b/src/account/SemiModularAccountStorageOnly.sol index a02a2acc3..69f3860bd 100644 --- a/src/account/SemiModularAccountStorageOnly.sol +++ b/src/account/SemiModularAccountStorageOnly.sol @@ -8,10 +8,12 @@ import {SemiModularAccountBase} from "./SemiModularAccountBase.sol"; /// @title SemiModularAccountStorageOnly /// @author Alchemy /// -/// @notice A basic Semi-Modular Account with an initializer to set the fallback signer in storage. +/// @notice An implementation of a semi-modular account which includes an initializer to set the fallback signer in +/// storage upon initialization. /// -/// @dev Note that the initializer has no access control and should be called via `upgradeToAndCall()`. -/// It's recommended to opt for the variant `SemiModularAccountBytecode` instead for new accounts. +/// @dev Inherits SemiModularAccountBase. Note that the initializer has no access control and should be called via `upgradeToAndCall()`. +/// Use the `SemiModularAccountBytecode` instead for new accounts, this implementation should only be used for +/// account upgrades. contract SemiModularAccountStorageOnly is SemiModularAccountBase { constructor(IEntryPoint anEntryPoint) SemiModularAccountBase(anEntryPoint) {} diff --git a/src/helpers/ExecutionInstallDelegate.sol b/src/helpers/ExecutionInstallDelegate.sol index c6cdd44c3..f423be993 100644 --- a/src/helpers/ExecutionInstallDelegate.sol +++ b/src/helpers/ExecutionInstallDelegate.sol @@ -172,7 +172,6 @@ contract ExecutionInstallDelegate { } function _removeExecHooks(LinkedListSet storage hooks, HookConfig hookConfig) internal { - // Todo: use predecessor hooks.tryRemove(toSetValue(hookConfig)); } } diff --git a/test/account/ModularAccount.t.sol b/test/account/ModularAccount.t.sol index 4bbc71846..a6db84147 100644 --- a/test/account/ModularAccount.t.sol +++ b/test/account/ModularAccount.t.sol @@ -396,7 +396,6 @@ contract ModularAccountTest is AccountTestBase { vm.stopPrank(); } - // TODO: Consider if this test belongs here or in the tests specific to the SingleSignerValidationModule function test_transferOwnership() public withSMATest { if (_isSMATest) { // Note: replaced "owner1" with address(0), this doesn't actually affect the account, but allows the