Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/account/SemiModularAccount.sol
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ contract SemiModularAccount is ReferenceModularAccount {
}

/// @inheritdoc IModularAccount
function accountId() external pure override returns (string memory) {
function accountId() external pure virtual override returns (string memory) {
return "erc6900.reference-semi-modular-account.0.8.0";
}

Expand Down Expand Up @@ -177,6 +177,7 @@ contract SemiModularAccount is ReferenceModularAccount {
function _retrieveFallbackSignerUnchecked(SemiModularAccountStorage storage _storage)
internal
view
virtual
returns (address)
{
address storageFallbackSigner = _storage.fallbackSigner;
Expand Down
31 changes: 31 additions & 0 deletions src/account/SemiModularAccount7702.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.20;

import {IModularAccount} from "../interfaces/IModularAccount.sol";
import {SemiModularAccount} from "./SemiModularAccount.sol";
import {IEntryPoint} from "@eth-infinitism/account-abstraction/interfaces/IEntryPoint.sol";

contract SemiModularAccount7702 is SemiModularAccount {
constructor(IEntryPoint anEntryPoint) SemiModularAccount(anEntryPoint) {}

/// @inheritdoc IModularAccount
function accountId() external pure virtual override returns (string memory) {
return "erc6900.reference-semi-modular-account-7702.0.8.0";
}

/// @dev If the fallback signer is set in storage, ignore the 7702 signer.
function _retrieveFallbackSignerUnchecked(SemiModularAccountStorage storage _storage)
internal
view
override
returns (address)
{
address storageFallbackSigner = _storage.fallbackSigner;
if (storageFallbackSigner != address(0)) {
return storageFallbackSigner;
}

// To support 7702, we default to address(this) as the fallback signer.
return address(this);
}
}