Skip to content

Commit

Permalink
feat: 7702 sma
Browse files Browse the repository at this point in the history
  • Loading branch information
Zer0dot committed Jan 31, 2025
1 parent c9b256c commit 64571c5
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
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);
}
}

0 comments on commit 64571c5

Please sign in to comment.