diff --git a/.gasestimates.md b/.gasestimates.md index 4bca22c50..3fc508476 100644 --- a/.gasestimates.md +++ b/.gasestimates.md @@ -4,537 +4,1027 @@ Generated via `bash utils/inspect.sh`. --- `forge test --gas-report --no-match-path "test/invariant/**/*"` -| PRECOMPILES contract | | | | | | -|----------------------|-----------------|------|--------|------|---------| -| Deployment Cost | Deployment Size | | | | | -| 0 | 0 | | | | | -| Function Name | min | avg | median | max | # calls | -| ecrecover | 3000 | 3000 | 3000 | 3000 | 70 | - - + | +32 | contract Deploy is Script { + | ^ (Relevant source part starts here and spans across multiple lines). + + +Running 17 tests for test/libraries/AssociatedLinkedListSetLib.t.sol:AssociatedLinkedListSetLibTest +[PASS] test_add_contains() (gas: 47488) +[PASS] test_add_remove_add() (gas: 52127) +[PASS] test_add_remove_add_empty() (gas: 52002) +[PASS] test_clear() (gas: 35277) +[PASS] test_empty() (gas: 7286) +[PASS] test_getAll() (gas: 71312) +[PASS] test_getAll2() (gas: 94614) +[PASS] test_getAll_empty() (gas: 4793) +[PASS] test_no_address_collision() (gas: 50116) +[PASS] test_remove() (gas: 35074) +[PASS] test_remove_empty() (gas: 4983) +[PASS] test_remove_nonexistent() (gas: 50151) +[PASS] test_remove_nonexistent_empty() (gas: 5095) +[PASS] test_remove_nonexistent_empty2() (gas: 50251) +[PASS] test_tryRemoveKnown1() (gas: 35294) +[PASS] test_tryRemoveKnown2() (gas: 57256) +[PASS] test_tryRemoveKnown_invalid1() (gas: 71468) +Test result: ok. 17 passed; 0 failed; 0 skipped; finished in 1.68ms + +Running 5 tests for test/account/AccountReturnData.t.sol:AccountReturnDataTest +[PASS] test_returnData_execFromPlugin_execute() (gas: 37230) +[PASS] test_returnData_execFromPlugin_fallback() (gas: 38871) +[PASS] test_returnData_executeBatch() (gas: 38199) +[PASS] test_returnData_fallback() (gas: 20430) +[PASS] test_returnData_singular_execute() (gas: 30745) +Test result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.14ms + +Running 8 tests for test/account/AccountLoupe.t.sol:AccountLoupeTest +[PASS] test_pluginLoupe_getExecutionFunctionConfig_native() (gas: 54780) +[PASS] test_pluginLoupe_getExecutionFunctionConfig_plugin() (gas: 39995) +[PASS] test_pluginLoupe_getExecutionHooks() (gas: 27850) +[PASS] test_pluginLoupe_getExecutionHooks_overlapping() (gas: 2395104) +[PASS] test_pluginLoupe_getHooks_multiple() (gas: 1413255) +[PASS] test_pluginLoupe_getInstalledPlugins_initial() (gas: 21588) +[PASS] test_pluginLoupe_getPreValidationHooks() (gas: 26052) +[PASS] test_trace_comprehensivePlugin() (gas: 40594) +Test result: ok. 8 passed; 0 failed; 0 skipped; finished in 4.27ms + +Running 2 tests for test/upgrade/LightAccountToMA.t.sol:LightAccountToMSCATest +[PASS] test_upgrade() (gas: 761649) +[PASS] test_verifySetup() (gas: 30117) +Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.70ms + +Running 8 tests for test/account/ManifestValidity.t.sol:ManifestValidityTest +[PASS] test_ManifestValidity_invalid_HookAlwaysDeny_PostExecHook() (gas: 590671) +[PASS] test_ManifestValidity_invalid_HookAlwaysDeny_RuntimeValidationFunction() (gas: 576919) +[PASS] test_ManifestValidity_invalid_HookAlwaysDeny_UserOpValidation() (gas: 576611) +[PASS] test_ManifestValidity_invalid_ValidationAlwaysAllow_PostExecHook() (gas: 589987) +[PASS] test_ManifestValidity_invalid_ValidationAlwaysAllow_PreExecHook() (gas: 589627) +[PASS] test_ManifestValidity_invalid_ValidationAlwaysAllow_PreRuntimeValidationHook() (gas: 621290) +[PASS] test_ManifestValidity_invalid_ValidationAlwaysAllow_PreUserOpValidationHook() (gas: 621526) +[PASS] test_ManifestValidity_invalid_ValidationAlwaysAllow_UserOpValidationFunction() (gas: 576359) +Test result: ok. 8 passed; 0 failed; 0 skipped; finished in 7.10ms + +Running 24 tests for test/account/phases/AccountStatePhasesExec.t.sol:AccountStatePhasesUOValidationTest +[PASS] test_ASP_exec_add_postExec_associated_firstElement() (gas: 1876601) +[PASS] test_ASP_exec_add_postExec_associated_notFirstElement() (gas: 1983829) +[PASS] test_ASP_exec_add_postExec_firstElement() (gas: 1771923) +[PASS] test_ASP_exec_add_postExec_notFirstElement() (gas: 1828373) +[PASS] test_ASP_exec_remove_postExec_associated_firstElement() (gas: 1846510) +[PASS] test_ASP_exec_remove_postExec_associated_notFirstElement() (gas: 1953167) +[PASS] test_ASP_exec_remove_postExec_firstElement() (gas: 1751780) +[PASS] test_ASP_exec_remove_postExec_notFirstElement() (gas: 1807158) +[PASS] test_ASP_postExec_add_postExec_associated_notFirstElement() (gas: 1983982) +[PASS] test_ASP_postExec_add_postExec_firstElement() (gas: 1900973) +[PASS] test_ASP_postExec_add_postExec_notFirstElement() (gas: 1827822) +[PASS] test_ASP_postExec_remove_postExec_associated_notFirstElement() (gas: 1953232) +[PASS] test_ASP_postExec_remove_postExec_firstElement() (gas: 1880617) +[PASS] test_ASP_postExec_remove_postExec_notFirstElement() (gas: 1807398) +[PASS] test_ASP_preExec_add_postExec_associated_notFirstElement() (gas: 1932277) +[PASS] test_ASP_preExec_add_postExec_firstElement() (gas: 1848674) +[PASS] test_ASP_preExec_add_postExec_notFirstElement() (gas: 3211690) +[PASS] test_ASP_preExec_add_preExec_notFirstElement() (gas: 1827324) +[PASS] test_ASP_preExec_remove_exec() (gas: 310386) +[PASS] test_ASP_preExec_remove_postExec_associated_notFirstElement() (gas: 1901674) +[PASS] test_ASP_preExec_remove_postExec_firstElement() (gas: 1829301) +[PASS] test_ASP_preExec_remove_postExec_notFirstElement() (gas: 3139409) +[PASS] test_ASP_preExec_remove_preExec() (gas: 1807785) +[PASS] test_ASP_preExec_replace_exec() (gas: 2044824) +Test result: ok. 24 passed; 0 failed; 0 skipped; finished in 26.20ms + +Running 2 tests for test/mocks/Counter.t.sol:CounterTest +[PASS] testIncrement() (gas: 28494) +[PASS] testSetNumber(uint256) (runs: 500, μ: 27665, ~: 28382) +Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 37.93ms + +Running 4 tests for test/comparison/CompareSimpleAccount.t.sol:CompareSimpleAccountTest +[PASS] test_SimpleAccount_deploy_basicSend() (gas: 272499) +[PASS] test_SimpleAccount_deploy_empty() (gas: 263172) +[PASS] test_SimpleAccount_postDeploy_basicSend() (gas: 110142) +[PASS] test_SimpleAccount_postDeploy_contractInteraction() (gas: 114643) +Test result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.65ms + +Running 24 tests for test/libraries/LinkedListSetLib.t.sol:LinkedListSetLibTest +[PASS] test_add_contains() (gas: 45221) +[PASS] test_add_remove_add() (gas: 49861) +[PASS] test_add_remove_add_empty() (gas: 49736) +[PASS] test_clear() (gas: 32940) +[PASS] test_empty() (gas: 4876) +[PASS] test_getAll() (gas: 68824) +[PASS] test_getAll2() (gas: 91910) +[PASS] test_getAll_empty() (gas: 2565) +[PASS] test_isSentinel() (gas: 305) +[PASS] test_remove() (gas: 33044) +[PASS] test_remove_empty() (gas: 2896) +[PASS] test_remove_nonexistent() (gas: 47433) +[PASS] test_remove_nonexistent_empty() (gas: 3008) +[PASS] test_remove_nonexistent_empty2() (gas: 47577) +[PASS] test_tryRemoveKnown1() (gas: 33075) +[PASS] test_tryRemoveKnown2() (gas: 53806) +[PASS] test_tryRemoveKnown_invalid1() (gas: 68300) +[PASS] test_userFlags_basic() (gas: 68468) +[PASS] test_userFlags_fail_does_not_contain() (gas: 69973) +[PASS] test_userFlags_flagsDisabled() (gas: 46468) +[PASS] test_userFlags_flagsEnabled() (gas: 46500) +[PASS] test_userFlags_getAll() (gas: 70269) +[PASS] test_userFlags_tryDisable() (gas: 45894) +[PASS] test_userFlags_tryEnable() (gas: 46277) +Test result: ok. 24 passed; 0 failed; 0 skipped; finished in 1.34ms + +Running 2 tests for test/upgrade/MAToMA.t.sol:MAToMATest +[PASS] test_sameStorageSlot_reinstallUpgradeToAndCall() (gas: 192100) +[PASS] test_sameStorageSlot_upgradeToAndCall() (gas: 112217) +Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.05ms + +Running 15 tests for test/factory/MultiOwnerMAFactoryTest.t.sol:MultiOwnerModularAccountFactoryTest +[PASS] test_2StepOwnershipTransfer() (gas: 32477) +[PASS] test_addStake() (gas: 80810) +[PASS] test_addressMatch() (gas: 747775) +[PASS] test_badOwnersArray() (gas: 14300) +[PASS] test_deploy() (gas: 752699) +[PASS] test_deployCollision() (gas: 748104) +[PASS] test_deployWithDuplicateOwners() (gas: 10161) +[PASS] test_deployWithUnsortedOwners() (gas: 10403) +[PASS] test_deployedAccountHasCorrectPlugins() (gas: 744613) +[PASS] test_getAddressWithMaxOwnersAndDeploy() (gas: 3405993) +[PASS] test_getAddressWithTooManyOwners() (gas: 257147) +[PASS] test_getAddressWithUnsortedOwners() (gas: 10536) +[PASS] test_unlockStake() (gas: 87509) +[PASS] test_withdraw() (gas: 80979) +[PASS] test_withdrawStake() (gas: 78699) +Test result: ok. 15 passed; 0 failed; 0 skipped; finished in 9.85ms + +Running 13 tests for test/account/ExecuteFromPluginPermissions.t.sol:ExecuteFromPluginPermissionsTest +[PASS] test_executeFromPluginAllowed() (gas: 52564) +[PASS] test_executeFromPluginExternal_Allowed_AllSelectors() (gas: 84025) +[PASS] test_executeFromPluginExternal_Allowed_AnyContract() (gas: 150664) +[PASS] test_executeFromPluginExternal_Allowed_AnyContractButSelf() (gas: 103317) +[PASS] test_executeFromPluginExternal_Allowed_IndividualSelectors() (gas: 74066) +[PASS] test_executeFromPluginExternal_Allowed_NativeTokenSpending() (gas: 107416) +[PASS] test_executeFromPluginExternal_NotAllowed_AllSelectors() (gas: 89322) +[PASS] test_executeFromPluginExternal_NotAllowed_NativeTokenSpending() (gas: 63038) +[PASS] test_executeFromPluginExternal_NotAlowed_IndividualSelectors() (gas: 95810) +[PASS] test_executeFromPluginNotAllowed() (gas: 32362) +[PASS] test_executeFromPluginUnrecognizedFunction() (gas: 55133) +[PASS] test_executeFromPlugin_ExecutionHooks() (gas: 59444) +[PASS] test_getPermissionsTestAddresses() (gas: 14284) +Test result: ok. 13 passed; 0 failed; 0 skipped; finished in 5.33ms + +Running 3 tests for test/libraries/CountableLinkedListSetLib.t.sol:CountableLinkedListSetLibTest +[PASS] test_getCount() (gas: 45785) +[PASS] test_tryDecrement() (gas: 440530) +[PASS] test_tryIncrement() (gas: 313554) +Test result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.29ms + +Running 30 tests for test/account/phases/AccountStatePhasesRTValidation.t.sol:AccountStatePhasesRTValidationTest +[PASS] test_ASP_RTValidation_add_postExec_associated_firstElement() (gas: 1938796) +[PASS] test_ASP_RTValidation_add_postExec_associated_notFirstElement() (gas: 1973456) +[PASS] test_ASP_RTValidation_add_postExec_firstElement() (gas: 1825835) +[PASS] test_ASP_RTValidation_add_postExec_notFirstElement() (gas: 1862033) +[PASS] test_ASP_RTValidation_add_preExec_firstElement() (gas: 1826614) +[PASS] test_ASP_RTValidation_add_preExec_notFirstElement() (gas: 1862849) +[PASS] test_ASP_RTValidation_remove_exec() (gas: 357706) +[PASS] test_ASP_RTValidation_remove_postExec_associated_firstElement() (gas: 1882398) +[PASS] test_ASP_RTValidation_remove_postExec_associated_notFirstElement() (gas: 1918462) +[PASS] test_ASP_RTValidation_remove_postExec_firstElement() (gas: 1795621) +[PASS] test_ASP_RTValidation_remove_postExec_notFirstElement() (gas: 1832316) +[PASS] test_ASP_RTValidation_remove_preExec() (gas: 1795122) +[PASS] test_ASP_RTValidation_replace_exec() (gas: 2012382) +[PASS] test_ASP_preRTValidation_add_postExec_associated_firstElement() (gas: 1992732) +[PASS] test_ASP_preRTValidation_add_postExec_associated_notFirstElement() (gas: 2027573) +[PASS] test_ASP_preRTValidation_add_postExec_firstElement() (gas: 1880321) +[PASS] test_ASP_preRTValidation_add_postExec_notFirstElement() (gas: 1915798) +[PASS] test_ASP_preRTValidation_add_preExec_firstElement() (gas: 1880770) +[PASS] test_ASP_preRTValidation_add_preExec_notFirstElement() (gas: 1916791) +[PASS] test_ASP_preRTValidation_add_preRTValidation() (gas: 1837786) +[PASS] test_ASP_preRTValidation_remove_RTValidation() (gas: 2050364) +[PASS] test_ASP_preRTValidation_remove_exec() (gas: 416337) +[PASS] test_ASP_preRTValidation_remove_postExec_associated_firstElement() (gas: 1936994) +[PASS] test_ASP_preRTValidation_remove_postExec_associated_notFirstElement() (gas: 1972447) +[PASS] test_ASP_preRTValidation_remove_postExec_firstElement() (gas: 1850063) +[PASS] test_ASP_preRTValidation_remove_postExec_notFirstElement() (gas: 1886499) +[PASS] test_ASP_preRTValidation_remove_preExec() (gas: 1850092) +[PASS] test_ASP_preRTValidation_remove_preRTValidation() (gas: 1815289) +[PASS] test_ASP_preRTValidation_replace_RTValidation() (gas: 2233976) +[PASS] test_ASP_preRTValidation_replace_exec() (gas: 2051505) +Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 32.10ms + +Running 14 tests for test/plugin/session/permissions/SessionKeyNativeTokenSpendLimits.t.sol:SessionKeyNativeTokenSpendLimitsTest +[PASS] testFuzz_sessionKeyNativeTokenSpendLimits_setLimits(uint256,uint48,uint48) (runs: 500, μ: 97592, ~: 101290) +[PASS] test_sessionKeyNativeTokenSpendLimits_basic_multi() (gas: 381219) +[PASS] test_sessionKeyNativeTokenSpendLimits_basic_refreshInterval_takeMaxStartTime() (gas: 386672) +[PASS] test_sessionKeyNativeTokenSpendLimits_basic_single() (gas: 305813) +[PASS] test_sessionKeyNativeTokenSpendLimits_enforceLimit_none() (gas: 363647) +[PASS] test_sessionKeyNativeTokenSpendLimits_exceedLimit_multi() (gas: 185953) +[PASS] test_sessionKeyNativeTokenSpendLimits_exceedLimit_single() (gas: 305905) +[PASS] test_sessionKeyNativeTokenSpendLimits_multiUserOpBundle_check_noInterval() (gas: 358023) +[PASS] test_sessionKeyNativeTokenSpendLimits_overflowBatch() (gas: 130815) +[PASS] test_sessionKeyNativeTokenSpendLimits_overflowState() (gas: 300179) +[PASS] test_sessionKeyNativeTokenSpendLimits_refreshInterval_exceedNewInterval() (gas: 330628) +[PASS] test_sessionKeyNativeTokenSpendLimits_refreshInterval_multi() (gas: 471454) +[PASS] test_sessionKeyNativeTokenSpendLimits_refreshInterval_single() (gas: 415237) +[PASS] test_sessionKeyNativeTokenSpendLimits_validateSetUp() (gas: 18794) +Test result: ok. 14 passed; 0 failed; 0 skipped; finished in 114.14ms + +Running 4 tests for test/plugin/owner/MultiOwnerPluginIntegration.t.sol:MultiOwnerPluginIntegration +[PASS] test_ownerPlugin_successInstallation() (gas: 36856) +[PASS] test_runtimeValidation_alwaysAllow_isValidSignature() (gas: 97338) +[PASS] test_runtimeValidation_ownerOrSelf_standardExecute() (gas: 80692) +[PASS] test_userOpValidation_owner_standardExecute() (gas: 229855) +Test result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.71ms + +Running 3 tests for test/helpers/KnownSelectors.t.sol:KnownSelectorsTest +[PASS] test_isErc4337Function() (gas: 373) +[PASS] test_isIPluginFunction() (gas: 151) +[PASS] test_isNativeFunction() (gas: 129) +Test result: ok. 3 passed; 0 failed; 0 skipped; finished in 201.46µs + +Running 2 tests for test/helpers/FunctionReferenceLib.t.sol:FunctionReferenceLibTest +[PASS] testFuzz_functionReference_operators(bytes21,bytes21) (runs: 500, μ: 366, ~: 338) +[PASS] testFuzz_functionReference_packing(address,uint8) (runs: 500, μ: 517, ~: 517) +Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 51.34ms + +Running 30 tests for test/account/phases/AccountStatePhasesUOValidation.t.sol:AccountStatePhasesUOValidationTest +[PASS] test_ASP_UOValidation_add_postExec_associated_firstElement() (gas: 2064659) +[PASS] test_ASP_UOValidation_add_postExec_associated_notFirstElement() (gas: 2100127) +[PASS] test_ASP_UOValidation_add_postExec_firstElement() (gas: 1951918) +[PASS] test_ASP_UOValidation_add_postExec_notFirstElement() (gas: 1988839) +[PASS] test_ASP_UOValidation_add_preExec_firstElement() (gas: 1953753) +[PASS] test_ASP_UOValidation_add_preExec_notFirstElement() (gas: 1989699) +[PASS] test_ASP_UOValidation_remove_exec() (gas: 404022) +[PASS] test_ASP_UOValidation_remove_postExec_associated_firstElement() (gas: 2009699) +[PASS] test_ASP_UOValidation_remove_postExec_associated_notFirstElement() (gas: 2045779) +[PASS] test_ASP_UOValidation_remove_postExec_firstElement() (gas: 1922130) +[PASS] test_ASP_UOValidation_remove_postExec_notFirstElement() (gas: 1958844) +[PASS] test_ASP_UOValidation_remove_preExec() (gas: 1921763) +[PASS] test_ASP_UOValidation_replace_exec() (gas: 2139133) +[PASS] test_ASP_preUOValidation_add_postExec_associated_firstElement() (gas: 2119635) +[PASS] test_ASP_preUOValidation_add_postExec_associated_notFirstElement() (gas: 2155349) +[PASS] test_ASP_preUOValidation_add_postExec_firstElement() (gas: 2007421) +[PASS] test_ASP_preUOValidation_add_postExec_notFirstElement() (gas: 2043951) +[PASS] test_ASP_preUOValidation_add_preExec_firstElement() (gas: 2008530) +[PASS] test_ASP_preUOValidation_add_preExec_notFirstElement() (gas: 2045053) +[PASS] test_ASP_preUOValidation_add_preUOValidation() (gas: 1965288) +[PASS] test_ASP_preUOValidation_remove_UOValidation() (gas: 451860) +[PASS] test_ASP_preUOValidation_remove_exec() (gas: 451191) +[PASS] test_ASP_preUOValidation_remove_postExec_associated_firstElement() (gas: 2065045) +[PASS] test_ASP_preUOValidation_remove_postExec_associated_notFirstElement() (gas: 2100756) +[PASS] test_ASP_preUOValidation_remove_postExec_firstElement() (gas: 1977652) +[PASS] test_ASP_preUOValidation_remove_postExec_notFirstElement() (gas: 2013997) +[PASS] test_ASP_preUOValidation_remove_preExec() (gas: 1977989) +[PASS] test_ASP_preUOValidation_remove_preUOValidation() (gas: 1947557) +[PASS] test_ASP_preUOValidation_replace_UOValidation() (gas: 2255381) +[PASS] test_ASP_preUOValidation_replace_exec() (gas: 2179726) +Test result: ok. 30 passed; 0 failed; 0 skipped; finished in 60.19ms + +Running 4 tests for test/account/AccountStorage.t.sol:AccountStorageTest +[PASS] testFuzz_permittedCallKey(address,bytes4) (runs: 500, μ: 651, ~: 651) +[PASS] test_storageSlotErc7201Formula() (gas: 486) +[PASS] test_storageSlotImpl() (gas: 6965) +[PASS] test_storageSlotProxy() (gas: 31967) +Test result: ok. 4 passed; 0 failed; 0 skipped; finished in 23.97ms + +Running 20 tests for test/account/UpgradeableModularAccountPluginManager.t.sol:UpgradeableModularAccountPluginManagerTest +[PASS] test_deployAccount() (gas: 713424) +[PASS] test_forceOnUninstall() (gas: 654016) +[PASS] test_installPlugin_ExecuteFromPlugin_PermittedExecSelectorNotInstalled() (gas: 1281725) +[PASS] test_installPlugin_alreadyInstalled() (gas: 76822) +[PASS] test_installPlugin_failIfAddingIPluginInterfaceId() (gas: 1230185) +[PASS] test_installPlugin_failWithIPluginFunctionSelector() (gas: 1233166) +[PASS] test_installPlugin_failWithNativeFunctionSelector() (gas: 1230982) +[PASS] test_installPlugin_failWtihErc4337FunctionSelector() (gas: 1233969) +[PASS] test_installPlugin_interfaceNotSupported() (gas: 61483) +[PASS] test_installPlugin_invalidManifest() (gas: 102347) +[PASS] test_installPlugin_missingDependency() (gas: 2507935) +[PASS] test_installPlugin_standard() (gas: 782703) +[PASS] test_noNonSelfInstallAfterUninstall() (gas: 1019629) +[PASS] test_onUninstallGasLimit() (gas: 845194) +[PASS] test_uninstallAndInstallInBatch() (gas: 1660275) +[PASS] test_uninstallAndInstallInBatch_failwithOtherCalls() (gas: 226405) +[PASS] test_uninstallPlugin_default() (gas: 1323322) +[PASS] test_uninstallPlugin_invalidManifestFails() (gas: 1632034) +[PASS] test_uninstallPlugin_manifestHasChanged() (gas: 4109348) +[PASS] test_uninstallPlugin_manifestParameter() (gas: 1321202) +Test result: ok. 20 passed; 0 failed; 0 skipped; finished in 16.56ms + +Running 2 tests for test/libraries/PluginStorageLib.t.sol:PluginStorageLibTest +[PASS] testFuzz_storagePointer(address,uint256,bytes32,uint256[32]) (runs: 500, μ: 724456, ~: 731620) +[PASS] test_storagePointer() (gas: 52757) +Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 189.29ms + +Running 15 tests for test/account/AccountPreValidationHooks.t.sol:UpgradeableModularAccountPreValidationHooksTest +[PASS] testFuzz_preRuntimeValidationHooks_revert(bytes) (runs: 500, μ: 1733038, ~: 1727732) +[PASS] test_overlappingPreRuntimeValidationHookAlwaysDeny_install() (gas: 3069100) +[PASS] test_overlappingPreRuntimeValidationHookAlwaysDeny_revert() (gas: 3075495) +[PASS] test_overlappingPreRuntimeValidationHookAlwaysDeny_uninstallPlugin1() (gas: 3069588) +[PASS] test_overlappingPreRuntimeValidationHookAlwaysDeny_uninstallPlugin2() (gas: 3085644) +[PASS] test_overlappingPreRuntimeValidationHook_invalid() (gas: 3144799) +[PASS] test_overlappingPreUserOpValidationHookAlwaysDeny_install() (gas: 3389917) +[PASS] test_preRuntimeValidationHooks_install() (gas: 3130700) +[PASS] test_preRuntimeValidationHooks_revertAlwaysDeny() (gas: 1662040) +[PASS] test_preRuntimeValidationHooks_run() (gas: 3151930) +[PASS] test_preRuntimeValidationHooks_uninstall() (gas: 3089827) +[PASS] test_preUserOpValidationHooks_install() (gas: 3451193) +[PASS] test_preUserOpValidationHooks_revertAlwaysDeny() (gas: 1997410) +[PASS] test_preUserOpValidationHooks_run() (gas: 3575468) +[PASS] test_preUserOpValidationHooks_uninstall() (gas: 3431754) +Test result: ok. 15 passed; 0 failed; 0 skipped; finished in 377.57ms + +Running 10 tests for test/account/ValidationIntersection.t.sol:ValidationIntersectionTest +[PASS] testFuzz_validationIntersect_single(uint256) (runs: 500, μ: 86965, ~: 87801) +[PASS] test_validationIntersect_authorizerAndTimeRange() (gas: 116298) +[PASS] test_validationIntersect_authorizer_sigfail_hook() (gas: 94361) +[PASS] test_validationIntersect_authorizer_sigfail_validationFunction() (gas: 94781) +[PASS] test_validationIntersect_multiplePreValidationHooksIntersect() (gas: 121042) +[PASS] test_validationIntersect_multiplePreValidationHooksSigFail() (gas: 100825) +[PASS] test_validationIntersect_revert_unexpectedAuthorizer() (gas: 64138) +[PASS] test_validationIntersect_timeBounds_intersect_1() (gas: 114382) +[PASS] test_validationIntersect_timeBounds_intersect_2() (gas: 114539) +[PASS] test_validationIntersect_validAuthorizer() (gas: 96475) +Test result: ok. 10 passed; 0 failed; 0 skipped; finished in 72.78ms + +Running 16 tests for test/account/AccountExecHooks.t.sol:UpgradeableModularAccountExecHooksTest +[PASS] testFuzz_preExecHook_revertData(bytes) (runs: 500, μ: 1751154, ~: 1745848) +[PASS] test_execHookPair_install() (gas: 1797876) +[PASS] test_execHookPair_run() (gas: 1822634) +[PASS] test_execHookPair_uninstall() (gas: 1736712) +[PASS] test_overlappingPreExecHookAlwaysDeny_install() (gas: 3101652) +[PASS] test_overlappingPreExecHookAlwaysDeny_revert() (gas: 3109875) +[PASS] test_overlappingPreExecHookAlwaysDeny_uninstallPlugin1() (gas: 3103393) +[PASS] test_overlappingPreExecHookAlwaysDeny_uninstallPlugin2() (gas: 3123001) +[PASS] test_overlappingPreExecHook_invalid() (gas: 3177659) +[PASS] test_postOnlyExecHook_install() (gas: 1692538) +[PASS] test_postOnlyExecHook_run() (gas: 1706293) +[PASS] test_postOnlyExecHook_uninstall() (gas: 1649451) +[PASS] test_preExecHook_install() (gas: 1692835) +[PASS] test_preExecHook_revertAlwaysDeny() (gas: 1680110) +[PASS] test_preExecHook_run() (gas: 1708138) +[PASS] test_preExecHook_uninstall() (gas: 1648908) +Test result: ok. 16 passed; 0 failed; 0 skipped; finished in 413.22ms + +Running 8 tests for test/account/TokenReceiver.t.sol:TokenReceiverTest +[PASS] test_hookOnERC1155BatchTransfer() (gas: 1635564) +[PASS] test_hookOnERC1155Transfer() (gas: 1532415) +[PASS] test_hookOnERC721Transfer() (gas: 1548220) +[PASS] test_hookOnERC777Transfer() (gas: 1529684) +[PASS] test_passERC1155Transfer() (gas: 200535) +[PASS] test_passERC721Transfer() (gas: 66335) +[PASS] test_passERC777Transfer() (gas: 47850) +[PASS] test_passIntrospection() (gas: 13784) +Test result: ok. 8 passed; 0 failed; 0 skipped; finished in 8.59ms + +Running 19 tests for test/account/UpgradeableModularAccount.t.sol:UpgradeableModularAccountTest +[PASS] testFuzz_runtime_revert(bytes) (runs: 500, μ: 34037, ~: 33900) +[PASS] test_basicUserOp() (gas: 867909) +[PASS] test_batchExecute() (gas: 162248) +[PASS] test_contractInteraction() (gas: 144743) +[PASS] test_debug_upgradeableModularAccount_storageAccesses() (gas: 166323) +[PASS] test_deployAccount() (gas: 713292) +[PASS] test_initialize_revertArrayLengthMismatch() (gas: 167706) +[PASS] test_postDeploy_ethSend() (gas: 144762) +[PASS] test_runtime_batchExecute() (gas: 59853) +[PASS] test_runtime_contractInteraction() (gas: 742248) +[PASS] test_runtime_debug_upgradeableModularAccount_storageAccesses() (gas: 43057) +[PASS] test_runtime_revertPluginCall() (gas: 752283) +[PASS] test_runtime_standardExecuteEthSend() (gas: 766480) +[PASS] test_standardExecuteEthSend() (gas: 876025) +[PASS] test_validateUserOp_revertFunctionMissing() (gas: 1303521) +[PASS] test_validateUserOp_revertNotFromEntryPoint() (gas: 30376) +[PASS] test_validateUserOp_revertUnrecognizedFunction() (gas: 29565) +[PASS] test_view_entryPoint() (gas: 719260) +[PASS] test_view_getNonce() (gas: 849182) +Test result: ok. 19 passed; 0 failed; 0 skipped; finished in 588.09ms + +Running 18 tests for test/plugin/owner/MultiOwnerPlugin.t.sol:MultiOwnerPluginTest +[PASS] testFuzz_isValidSignature_ContractOwner(bytes32) (runs: 500, μ: 61941, ~: 61941) +[PASS] testFuzz_isValidSignature_ContractOwnerWithEOAOwner(bytes32) (runs: 500, μ: 77383, ~: 77383) +[PASS] testFuzz_isValidSignature_EOAOwner(string,bytes32) (runs: 500, μ: 81299, ~: 81229) +[PASS] testFuzz_userOpValidationFunction_ContractOwner((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)) (runs: 500, μ: 84714, ~: 84643) +[PASS] testFuzz_userOpValidationFunction_ContractOwnerWithEOAOwner((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)) (runs: 500, μ: 103770, ~: 103808) +[PASS] testFuzz_userOpValidationFunction_EOAOwner(string,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)) (runs: 500, μ: 90459, ~: 90443) +[PASS] test_eip712Domain() (gas: 24720) +[PASS] test_multiOwnerPlugin_sentinelIsNotOwner() (gas: 10805) +[PASS] test_onInstall_success() (gas: 66256) +[PASS] test_onUninstall_success() (gas: 34587) +[PASS] test_pluginInitializeGuards() (gas: 57381) +[PASS] test_pluginManifest() (gas: 35717) +[PASS] test_runtimeValidationFunction_OwnerOrSelf() (gas: 19638) +[PASS] test_updateOwners_failWithDuplicatedAddresses() (gas: 42008) +[PASS] test_updateOwners_failWithEmptyOwners() (gas: 30396) +[PASS] test_updateOwners_failWithNotExist() (gas: 17467) +[PASS] test_updateOwners_failWithZeroAddressOwner() (gas: 13723) +[PASS] test_updateOwners_success() (gas: 60909) +Test result: ok. 18 passed; 0 failed; 0 skipped; finished in 741.34ms + +Running 16 tests for test/plugin/session/permissions/SessionKeyGasLimits.t.sol:SessionKeyGasLimitsTest +[PASS] testFuzz_sessionKeyGasLimits_nolimit(uint256) (runs: 500, μ: 169525, ~: 169431) +[PASS] testFuzz_sessionKeyGasLimits_requireNonceAsAddress(uint192) (runs: 500, μ: 195193, ~: 195193) +[PASS] testFuzz_sessionKeyGasLimits_setLimits(uint256,uint48,uint48) (runs: 500, μ: 100115, ~: 104021) +[PASS] test_sessionKeyGasLimits_enforceLimit_basic_multipleInBundle() (gas: 313917) +[PASS] test_sessionKeyGasLimits_enforceLimit_basic_single() (gas: 274102) +[PASS] test_sessionKeyGasLimits_enforceLimit_none() (gas: 154910) +[PASS] test_sessionKeyGasLimits_exceedLimit_multipleInBundle() (gas: 243929) +[PASS] test_sessionKeyGasLimits_exceedLimit_single() (gas: 174855) +[PASS] test_sessionKeyGasLimits_refreshInterval_inspectValidationData() (gas: 303009) +[PASS] test_sessionKeyGasLimits_refreshInterval_multipleInBundle() (gas: 444977) +[PASS] test_sessionKeyGasLimits_refreshInterval_multipleInBundle_tryExceedFails() (gas: 407944) +[PASS] test_sessionKeyGasLimits_refreshInterval_resetFlagTracking() (gas: 336201) +[PASS] test_sessionKeyGasLimits_refreshInterval_resetFlag_fixWithExtraUO() (gas: 401191) +[PASS] test_sessionKeyGasLimits_refreshInterval_resetFlag_fixWithOwnerReset() (gas: 354893) +[PASS] test_sessionKeyGasLimits_refreshInterval_resetFlag_fixWithPublicReset() (gas: 342042) +[PASS] test_sessionKeyGasLimits_refreshInterval_single() (gas: 360302) +Test result: ok. 16 passed; 0 failed; 0 skipped; finished in 1.20s + +Running 17 tests for test/plugin/session/SessionKeyPluginWithMultiOwner.t.sol:SessionKeyPluginWithMultiOwnerTest +[PASS] testFuzz_sessionKey_addKeysDuringInstall(uint8) (runs: 500, μ: 755809, ~: 728126) +[PASS] testFuzz_sessionKey_invalidFunctionId(uint8,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)) (runs: 500, μ: 22768, ~: 22728) +[PASS] testFuzz_sessionKey_userOpValidation_invalidSig(uint8,uint64) (runs: 500, μ: 833476, ~: 686236) +[PASS] testFuzz_sessionKey_userOpValidation_mismathcedSig(uint8,uint64) (runs: 500, μ: 887717, ~: 884406) +[PASS] testFuzz_sessionKey_userOpValidation_valid(uint16) (runs: 500, μ: 849460, ~: 785547) +[PASS] test_sessionKey_addAndRemoveKeys() (gas: 175810) +[PASS] test_sessionKey_addKeyFailure() (gas: 163295) +[PASS] test_sessionKey_addKeySuccess() (gas: 134287) +[PASS] test_sessionKey_doesNotContainSentinelValue() (gas: 132228) +[PASS] test_sessionKey_getPredecessor_address() (gas: 165741) +[PASS] test_sessionKey_getPredecessor_missing() (gas: 132366) +[PASS] test_sessionKey_getPredecessor_sentinel() (gas: 165753) +[PASS] test_sessionKey_rotate_existing() (gas: 199544) +[PASS] test_sessionKey_rotate_invalid() (gas: 142593) +[PASS] test_sessionKey_rotate_valid() (gas: 159477) +[PASS] test_sessionKey_useSessionKey() (gas: 318365) +[PASS] test_sessionKey_useSessionKey_failInRuntime() (gas: 139172) +Test result: ok. 17 passed; 0 failed; 0 skipped; finished in 1.29s + +Running 16 tests for test/plugin/session/permissions/SessionKeyPermissions.t.sol:SessionKeyPermissionsTest +[PASS] testFuzz_initialSessionKeysWithPermissions(uint256) (runs: 500, μ: 631073, ~: 695936) +[PASS] testFuzz_sessionKeyPermissions_checkRequiredPaymaster(address,address) (runs: 500, μ: 164178, ~: 164404) +[PASS] testFuzz_sessionKeyPermissions_setRequiredPaymaster(address) (runs: 500, μ: 87336, ~: 87648) +[PASS] testFuzz_sessionKeyTimeRange(uint48,uint48) (runs: 500, μ: 110667, ~: 110712) +[PASS] test_rotateKey_basic() (gas: 362006) +[PASS] test_rotateKey_permissionsTransfer() (gas: 136019) +[PASS] test_sessionKeyPerms_independentKeyStorage() (gas: 147427) +[PASS] test_sessionKeyPerms_reinstallResets() (gas: 340983) +[PASS] test_sessionKeyPerms_requiredPaymaster_partialAddressFails() (gas: 132731) +[PASS] test_sessionKeyPerms_updatePermissions_invalidUpdates() (gas: 66546) +[PASS] test_sessionPerms_contractAllowList() (gas: 272237) +[PASS] test_sessionPerms_contractDefaultAllowList() (gas: 323505) +[PASS] test_sessionPerms_contractDenyList() (gas: 340630) +[PASS] test_sessionPerms_selectorAllowList() (gas: 298637) +[PASS] test_sessionPerms_selectorDenyList() (gas: 361806) +[PASS] test_sessionPerms_validateSetUp() (gas: 15543) +Test result: ok. 16 passed; 0 failed; 0 skipped; finished in 1.24s + +Running 23 tests for test/plugin/session/permissions/SessionKeyERC20SpendLimits.t.sol:SessionKeyERC20SpendLimitsTest +[PASS] testFuzz_sessionKeyERC20SpendLimits_setLimits(address,uint256,uint48,uint48) (runs: 500, μ: 119359, ~: 122790) +[PASS] test_executeWithSessionKey_approveOnlyCountsIncrease() (gas: 351072) +[PASS] test_executeWithSessionKey_failWithExceedLimit_multipleSpendFunctions() (gas: 332677) +[PASS] test_executeWithSessionKey_failWithExceedLimit_multipleTokens() (gas: 418501) +[PASS] test_executeWithSessionKey_failWithExceedLimit_multipleTransfer() (gas: 327439) +[PASS] test_executeWithSessionKey_failWithExceedLimit_overflow() (gas: 308377) +[PASS] test_executeWithSessionKey_refreshInterval_failWithSomeTokenLimit() (gas: 795958) +[PASS] test_executeWithSessionKey_refreshInterval_multipleApprove() (gas: 589484) +[PASS] test_executeWithSessionKey_refreshInterval_multipleSpendFunctions() (gas: 591517) +[PASS] test_executeWithSessionKey_refreshInterval_multipleTransfer() (gas: 567542) +[PASS] test_executeWithSessionKey_refreshInterval_singleTransfer() (gas: 529853) +[PASS] test_executeWithSessionKey_success_multipleApprove() (gas: 408253) +[PASS] test_executeWithSessionKey_success_multipleSpendFunctions() (gas: 431506) +[PASS] test_executeWithSessionKey_success_multipleTokens() (gas: 560883) +[PASS] test_executeWithSessionKey_success_multipleTransfer() (gas: 408974) +[PASS] test_sessionKeyERC20Limits_refreshInterval_failWithExceedNextLimit() (gas: 446742) +[PASS] test_sessionKeyERC20SpendLimits_basic_single() (gas: 350081) +[PASS] test_sessionKeyERC20SpendLimits_enforceLimit_none_basic() (gas: 360384) +[PASS] test_sessionKeyERC20SpendLimits_enforceLimit_none_batch() (gas: 322381) +[PASS] test_sessionKeyERC20SpendLimits_exceedLimit_single() (gas: 426039) +[PASS] test_sessionKeyERC20SpendLimits_tokenAddressZeroFails() (gas: 39751) +[PASS] test_sessionKeyERC20SpendLimits_unknownSelectorFails() (gas: 237532) +[PASS] test_sessionKeyERC20SpendLimits_validateSetUp() (gas: 19195) +Test result: ok. 23 passed; 0 failed; 0 skipped; finished in 1.29s | lib/account-abstraction/contracts/core/EntryPoint.sol:EntryPoint contract | | | | | | |---------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 3619955 | 17979 | | | | | +| 3839035 | 19073 | | | | | | Function Name | min | avg | median | max | # calls | -| addStake | 46058 | 46558 | 46058 | 48058 | 8 | -| balanceOf | 2644 | 2644 | 2644 | 2644 | 6 | -| depositTo | 24642 | 24642 | 24642 | 24642 | 83 | -| getDepositInfo | 1375 | 1375 | 1375 | 1375 | 10 | -| getNonce | 2729 | 2729 | 2729 | 2729 | 50 | -| getUserOpHash | 2226 | 2309 | 2298 | 2507 | 89 | -| handleOps | 7342 | 190443 | 173293 | 943657 | 65 | -| receive | 24232 | 24232 | 24232 | 24232 | 9 | -| unlockStake | 2857 | 2857 | 2857 | 2857 | 4 | -| withdrawStake | 1248 | 4762 | 4762 | 8276 | 4 | +| addStake | 45926 | 46426 | 45926 | 47926 | 4 | +| balanceOf | 2626 | 2626 | 2626 | 2626 | 3 | +| depositTo | 24588 | 24588 | 24588 | 24588 | 35 | +| getDepositInfo | 1336 | 1336 | 1336 | 1336 | 5 | +| getNonce | 738 | 2154 | 2738 | 2738 | 120 | +| getUserOpHash | 2142 | 2215 | 2214 | 2423 | 171 | +| handleOps | 7255 | 146885 | 140611 | 843630 | 141 | +| innerHandleOp | 9425 | 57090 | 44488 | 189624 | 117 | +| receive | 2278 | 18039 | 22178 | 24178 | 142 | +| unlockStake | 2851 | 2851 | 2851 | 2851 | 2 | +| withdrawStake | 1233 | 4736 | 4736 | 8240 | 2 | | lib/account-abstraction/contracts/core/SenderCreator.sol:SenderCreator contract | | | | | | |---------------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 75329 | 404 | | | | | +| 82935 | 442 | | | | | | Function Name | min | avg | median | max | # calls | -| createSender | 136618 | 468405 | 468405 | 800192 | 4 | +| createSender | 141050 | 422624 | 422624 | 704198 | 4 | | lib/account-abstraction/contracts/samples/SimpleAccount.sol:SimpleAccount contract | | | | | | |------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 1220453 | 6389 | | | | | +| 1320562 | 6889 | | | | | | Function Name | min | avg | median | max | # calls | -| initialize | 26286 | 26286 | 26286 | 26286 | 6 | -| validateUserOp | 18814 | 26364 | 26364 | 33914 | 4 | +| execute | 8969 | 9953 | 10445 | 10445 | 3 | +| initialize | 26250 | 26250 | 26250 | 26250 | 6 | +| validateUserOp | 18700 | 26250 | 26250 | 33800 | 4 | | lib/account-abstraction/contracts/samples/SimpleAccountFactory.sol:SimpleAccountFactory contract | | | | | | |--------------------------------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 1645948 | 8556 | | | | | +| 1754770 | 9099 | | | | | | Function Name | min | avg | median | max | # calls | -| createAccount | 133329 | 133329 | 133329 | 133329 | 6 | -| getAddress | 4678 | 4678 | 4678 | 4678 | 4 | +| createAccount | 137773 | 137773 | 137773 | 137773 | 6 | +| getAddress | 4744 | 4744 | 4744 | 4744 | 4 | | lib/light-account/src/LightAccount.sol:LightAccount contract | | | | | | |--------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 1435564 | 7455 | | | | | +| 1571110 | 8134 | | | | | | Function Name | min | avg | median | max | # calls | -| initialize | 49861 | 49861 | 49861 | 49861 | 2 | -| upgradeToAndCall | 698183 | 698183 | 698183 | 698183 | 1 | +| initialize | 49729 | 49729 | 49729 | 49729 | 2 | +| upgradeToAndCall | 597097 | 597097 | 597097 | 597097 | 1 | | lib/light-account/src/LightAccountFactory.sol:LightAccountFactory contract | | | | | | |----------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 1861286 | 9622 | | | | | +| 2005589 | 10344 | | | | | | Function Name | min | avg | median | max | # calls | -| createAccount | 156904 | 156904 | 156904 | 156904 | 2 | +| createAccount | 161252 | 161252 | 161252 | 161252 | 2 | | lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy contract | | | | | | |-------------------------------------------------------------------------------------------|-----------------|--------|--------|---------|---------| | Deployment Cost | Deployment Size | | | | | -| 66027 | 1142 | | | | | +| 70433 | 1164 | | | | | | Function Name | min | avg | median | max | # calls | -| changeManifest | 506297 | 506297 | 506297 | 506297 | 1 | -| checkResultEFPExternal | 38474 | 38474 | 38474 | 38474 | 1 | -| checkResultEFPFallback | 31424 | 31424 | 31424 | 31424 | 1 | -| entryPoint | 800 | 800 | 800 | 800 | 3 | -| execute | 6175 | 28749 | 30343 | 54188 | 11 | -| executeBatch | 10778 | 242509 | 35081 | 889097 | 4 | -| executeFromPlugin | 1153 | 20927 | 22242 | 68012 | 17 | -| executeFromPluginExternal | 3260 | 20530 | 9365 | 51297 | 24 | -| foo | 5304 | 9804 | 9804 | 14304 | 2 | -| getExecutionFunctionConfig | 6259 | 8388 | 6451 | 13457 | 7 | -| getExecutionHooks | 14851 | 18783 | 18432 | 23068 | 3 | -| getInstalledPlugins | 1599 | 3122 | 1967 | 10836 | 8 | -| getNonce | 6514 | 6514 | 6514 | 6514 | 1 | -| getNumberCounter1 | 19445 | 19445 | 19445 | 19445 | 2 | -| getNumberCounter2 | 16968 | 16968 | 16968 | 16968 | 1 | -| getNumberCounter3 | 20870 | 20870 | 20870 | 20870 | 1 | -| getPermittedCallHooks | 9949 | 14181 | 14181 | 18414 | 2 | -| getPreValidationHooks | 16167 | 16167 | 16167 | 16167 | 1 | -| getSessionKeys | 9170 | 9233 | 9233 | 9296 | 4 | -| incrementCounter1 | 12339 | 12339 | 12339 | 12339 | 1 | -| incrementCounter2 | 16350 | 16350 | 16350 | 16350 | 1 | -| incrementCounter3 | 20603 | 20603 | 20603 | 20603 | 1 | -| initialize() | 25584 | 25584 | 25584 | 25584 | 1 | -| initialize(address[],bytes) | 25926 | 688643 | 684666 | 1048560 | 271 | -| installPlugin | 2852 | 313521 | 264953 | 811261 | 438 | -| isOwner | 5605 | 11105 | 11105 | 16605 | 2 | -| isSessionKey | 16827 | 16827 | 16827 | 16827 | 2 | -| isValidSignature | 19014 | 19014 | 19014 | 19014 | 1 | -| onERC1155BatchReceived | 4257 | 5441 | 4257 | 7809 | 3 | -| onERC1155Received | 3808 | 5121 | 3808 | 7749 | 3 | -| onERC721Received | 3559 | 4953 | 3559 | 7743 | 3 | -| onInstall | 891 | 891 | 891 | 891 | 1 | -| onUninstall | 891 | 891 | 891 | 891 | 1 | -| owners | 12307 | 13307 | 13307 | 14307 | 2 | -| passthroughExecute | 12570 | 23984 | 12887 | 59932 | 7 | -| passthroughExecuteFromPlugin | 16096 | 18622 | 18622 | 21149 | 2 | -| passthroughExecuteWith1Eth | 22380 | 46691 | 46691 | 71003 | 2 | -| passthroughExecuteWithNativeTokenSpendPermission | 33433 | 33433 | 33433 | 33433 | 1 | -| performEFPCall | 81171 | 81171 | 81171 | 81171 | 1 | -| performEFPCallWithExecHooks | 44051 | 44051 | 44051 | 44051 | 1 | -| performIncrement | 64136 | 64136 | 64136 | 64136 | 1 | -| pluginManifest | 2951 | 4002 | 4528 | 4528 | 3 | -| registerKey | 51758 | 51758 | 51758 | 51758 | 59 | -| rotateKey | 31937 | 31937 | 31937 | 31937 | 2 | -| setNumberCounter1 | 60374 | 60374 | 60374 | 60374 | 2 | -| setNumberCounter2 | 57660 | 57660 | 57660 | 57660 | 1 | -| setNumberCounter3 | 20621 | 20621 | 20621 | 20621 | 1 | -| someExecutionFunction | 556 | 1729 | 1219 | 3413 | 3 | -| supportsInterface | 582 | 1605 | 887 | 7387 | 15 | -| tokensReceived | 3682 | 5041 | 3682 | 7761 | 3 | -| uninstallPlugin | 21071 | 53165 | 46960 | 172143 | 54 | -| updateKeyPermissions | 8579 | 52955 | 41338 | 165196 | 102 | -| updateSessionKeys | 5335 | 52683 | 48299 | 226352 | 72 | -| upgradeToAndCall | 28099 | 365610 | 365610 | 703122 | 2 | -| useEFPPermissionAllowed | 46629 | 46629 | 46629 | 46629 | 1 | -| useEFPPermissionNotAllowed | 18375 | 18375 | 18375 | 18375 | 1 | -| validateUserOp | 3780 | 55800 | 59511 | 84922 | 80 | +| addSessionKey | 6535 | 84059 | 95220 | 112720 | 120 | +| changeManifest | 511748 | 511748 | 511748 | 511748 | 1 | +| checkResultEFPExternal | 29637 | 29637 | 29637 | 29637 | 1 | +| checkResultEFPFallback | 33562 | 33562 | 33562 | 33562 | 1 | +| entryPoint | 757 | 757 | 757 | 757 | 2 | +| execute | 2417 | 21580 | 14890 | 51008 | 20 | +| executeBatch | 10324 | 153465 | 136001 | 719604 | 15 | +| executeFromPlugin | 1108 | 15577 | 10707 | 29948 | 7 | +| executeFromPluginExternal | 1303 | 19646 | 12888 | 44633 | 108 | +| executeWithSessionKey | 6369 | 42932 | 24680 | 163212 | 74 | +| executionFunction | 1638 | 71813 | 52911 | 204262 | 84 | +| foo | 6156 | 10656 | 10656 | 15156 | 2 | +| getExecutionFunctionConfig | 6247 | 8386 | 6415 | 13508 | 7 | +| getExecutionHooks | 14899 | 18828 | 18437 | 23149 | 3 | +| getInstalledPlugins | 1578 | 3104 | 1578 | 10806 | 7 | +| getNonce | 2028 | 4278 | 4278 | 6528 | 2 | +| getNumberCounter1 | 16573 | 16573 | 16573 | 16573 | 2 | +| getNumberCounter2 | 14286 | 14286 | 14286 | 14286 | 1 | +| getNumberCounter3 | 21764 | 21764 | 21764 | 21764 | 1 | +| getPreValidationHooks | 16218 | 16218 | 16218 | 16218 | 1 | +| incrementCounter1 | 12745 | 12745 | 12745 | 12745 | 1 | +| incrementCounter2 | 13712 | 13712 | 13712 | 13712 | 1 | +| incrementCounter3 | 21541 | 21541 | 21541 | 21541 | 1 | +| initialize() | 25566 | 25566 | 25566 | 25566 | 1 | +| initialize(address[],bytes) | 25345 | 594657 | 583729 | 2901470 | 314 | +| installPlugin | 2638 | 281809 | 185993 | 810641 | 448 | +| isValidSignature | 9725 | 16949 | 12574 | 32923 | 4 | +| onERC1155BatchReceived | 5044 | 12662 | 12662 | 20280 | 2 | +| onERC1155Received | 9154 | 13180 | 13180 | 17207 | 2 | +| onERC721Received | 8756 | 12648 | 12648 | 16541 | 2 | +| onInstall | 831 | 831 | 831 | 831 | 1 | +| onUninstall | 810 | 810 | 810 | 810 | 1 | +| passthroughExecute | 6168 | 20615 | 10482 | 51551 | 11 | +| passthroughExecuteFromPlugin | 16937 | 19970 | 19970 | 23004 | 2 | +| passthroughExecuteWith1Eth | 23207 | 42914 | 42914 | 62621 | 2 | +| passthroughExecuteWithNativeTokenSpendPermission | 27095 | 27095 | 27095 | 27095 | 1 | +| performEFPCallWithExecHooks | 43941 | 43941 | 43941 | 43941 | 1 | +| pluginManifest | 2668 | 3675 | 4179 | 4179 | 3 | +| removeSessionKey | 9990 | 9990 | 9990 | 9990 | 3 | +| rotateSessionKey | 10906 | 37456 | 46744 | 59229 | 5 | +| setNumberCounter1 | 51547 | 51547 | 51547 | 51547 | 2 | +| setNumberCounter2 | 49044 | 49044 | 49044 | 49044 | 1 | +| setNumberCounter3 | 21558 | 21558 | 21558 | 21558 | 1 | +| someExecutionFunction | 541 | 2313 | 2094 | 4305 | 3 | +| supportsInterface | 570 | 1185 | 759 | 5291 | 72 | +| tokensReceived | 8945 | 13242 | 13242 | 17539 | 2 | +| uninstallPlugin | 24303 | 50096 | 41115 | 170435 | 76 | +| updateKeyPermissions | 9136 | 48908 | 37924 | 165898 | 155 | +| updateOwners | 30687 | 30687 | 30687 | 30687 | 1 | +| upgradeToAndCall | 12605 | 213218 | 25031 | 602018 | 3 | +| useEFPPermissionAllowed | 46515 | 46515 | 46515 | 46515 | 1 | +| useEFPPermissionNotAllowed | 19157 | 19157 | 19157 | 19157 | 1 | +| validateUserOp | 3567 | 55848 | 50354 | 218696 | 168 | | lib/openzeppelin-contracts/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol:ERC721PresetMinterPauserAutoId contract | | | | | | |--------------------------------------------------------------------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 2170901 | 11354 | | | | | +| 2306253 | 12030 | | | | | | Function Name | min | avg | median | max | # calls | -| mint | 101769 | 101769 | 101769 | 101769 | 17 | -| ownerOf | 798 | 1798 | 1798 | 2798 | 4 | -| safeTransferFrom | 45986 | 48872 | 45986 | 54644 | 3 | +| mint | 101681 | 101681 | 101681 | 101681 | 8 | +| ownerOf | 789 | 1789 | 1789 | 2789 | 2 | +| safeTransferFrom | 53614 | 57256 | 57256 | 60899 | 2 | | src/account/UpgradeableModularAccount.sol:UpgradeableModularAccount contract | | | | | | |------------------------------------------------------------------------------|-----------------|--------|--------|---------|---------| | Deployment Cost | Deployment Size | | | | | -| 4829417 | 24327 | | | | | +| 4890098 | 24630 | | | | | | Function Name | min | avg | median | max | # calls | -| checkResultEFPExternal | 33634 | 33634 | 33634 | 33634 | 1 | -| checkResultEFPFallback | 26587 | 26587 | 26587 | 26587 | 1 | -| entryPoint | 466 | 466 | 466 | 466 | 3 | -| execute | 5804 | 26752 | 26833 | 49333 | 11 | -| executeBatch | 10404 | 238698 | 30154 | 884079 | 4 | -| executeFromPlugin | 803 | 20577 | 21893 | 67660 | 17 | -| executeFromPluginExternal | 2904 | 20164 | 9001 | 50936 | 24 | -| foo | 4970 | 7220 | 7220 | 9470 | 2 | -| getExecutionFunctionConfig | 5916 | 6760 | 6076 | 8614 | 7 | -| getExecutionHooks | 13571 | 16898 | 14478 | 22647 | 3 | -| getInstalledPlugins | 1259 | 2215 | 1624 | 5990 | 8 | -| getNonce | 6180 | 6180 | 6180 | 6180 | 1 | -| getNumberCounter1 | 19111 | 19111 | 19111 | 19111 | 2 | -| getNumberCounter2 | 16634 | 16634 | 16634 | 16634 | 1 | -| getNumberCounter3 | 16005 | 16005 | 16005 | 16005 | 1 | -| getPermittedCallHooks | 9585 | 11567 | 11567 | 13550 | 2 | -| getPreValidationHooks | 11294 | 11294 | 11294 | 11294 | 1 | -| getSessionKeys | 8830 | 8893 | 8893 | 8956 | 4 | -| incrementCounter1 | 11974 | 11974 | 11974 | 11974 | 1 | -| incrementCounter2 | 16019 | 16019 | 16019 | 16019 | 1 | -| incrementCounter3 | 15738 | 15738 | 15738 | 15738 | 1 | -| initialize | 25519 | 688213 | 684251 | 1048115 | 272 | -| installPlugin | 2472 | 311939 | 264580 | 810888 | 438 | -| isOwner | 5268 | 8518 | 8518 | 11768 | 2 | -| isSessionKey | 11990 | 11990 | 11990 | 11990 | 2 | -| isValidSignature | 14150 | 14150 | 14150 | 14150 | 1 | -| onERC1155BatchReceived | 2881 | 3515 | 3833 | 3833 | 3 | -| onERC1155Received | 2881 | 3256 | 3444 | 3444 | 3 | -| onERC721Received | 2881 | 3094 | 3201 | 3201 | 3 | -| owners | 11961 | 12961 | 12961 | 13961 | 2 | -| passthroughExecute | 12209 | 22336 | 12523 | 55065 | 7 | -| passthroughExecuteFromPlugin | 11246 | 13772 | 13772 | 16299 | 2 | -| passthroughExecuteWith1Eth | 17524 | 41836 | 41836 | 66148 | 2 | -| passthroughExecuteWithNativeTokenSpendPermission | 33078 | 33078 | 33078 | 33078 | 1 | -| performEFPCall | 76331 | 76331 | 76331 | 76331 | 1 | -| performEFPCallWithExecHooks | 39211 | 39211 | 39211 | 39211 | 1 | -| performIncrement | 59305 | 59305 | 59305 | 59305 | 1 | -| proxiableUUID | 334 | 334 | 334 | 334 | 2 | -| registerKey | 51421 | 51421 | 51421 | 51421 | 59 | -| rotateKey | 31600 | 31600 | 31600 | 31600 | 2 | -| setNumberCounter1 | 55540 | 55540 | 55540 | 55540 | 2 | -| setNumberCounter2 | 52826 | 52826 | 52826 | 52826 | 1 | -| setNumberCounter3 | 15747 | 15747 | 15747 | 15747 | 1 | -| someExecutionFunction | 881 | 1981 | 1981 | 3082 | 2 | -| supportsInterface | 322 | 1144 | 550 | 2550 | 12 | -| tokensReceived | 2881 | 3166 | 3309 | 3309 | 3 | -| uninstallPlugin | 16415 | 50859 | 46149 | 168249 | 54 | -| updateKeyPermissions | 8285 | 50243 | 36465 | 160281 | 102 | -| updateSessionKeys | 5046 | 51767 | 47944 | 221455 | 72 | -| upgradeToAndCall | 23256 | 23256 | 23256 | 23256 | 1 | -| useEFPPermissionAllowed | 41789 | 41789 | 41789 | 41789 | 1 | -| useEFPPermissionNotAllowed | 13534 | 13534 | 13534 | 13534 | 1 | -| validateUserOp | 412 | 55506 | 61509 | 84413 | 76 | - - -| src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory contract | | | | | | -|----------------------------------------------------------------------|-----------------|--------|--------|--------|---------| -| Deployment Cost | Deployment Size | | | | | -| 991201 | 5345 | | | | | -| Function Name | min | avg | median | max | # calls | -| addStake | 55742 | 56867 | 55742 | 60242 | 4 | -| createAccount | 5992 | 792303 | 794391 | 822792 | 264 | -| getAddress | 5400 | 5421 | 5400 | 5616 | 50 | -| unlockStake | 3653 | 3653 | 3653 | 3653 | 2 | -| withdraw | 7555 | 7555 | 7555 | 7555 | 1 | -| withdrawStake | 2141 | 5583 | 5583 | 9026 | 2 | - - -| src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin contract | | | | | | -|------------------------------------------------------------------|-----------------|-------|--------|-------|---------| -| Deployment Cost | Deployment Size | | | | | -| 1685744 | 9757 | | | | | -| Function Name | min | avg | median | max | # calls | -| eip712Domain | 1609 | 1609 | 1609 | 1609 | 1 | -| getMessageHash | 1767 | 1767 | 1767 | 1767 | 3 | -| isOwner | 730 | 1587 | 730 | 2730 | 7 | -| isOwnerOf | 1088 | 2421 | 3088 | 3088 | 6 | -| isValidSignature | 5582 | 8456 | 7582 | 12204 | 3 | -| onInstall | 1076 | 49531 | 46421 | 92365 | 287 | -| onUninstall | 7492 | 12442 | 12442 | 17392 | 4 | -| owners | 1540 | 3959 | 3475 | 7411 | 6 | -| ownersOf | 1259 | 3436 | 2709 | 10101 | 8 | -| pluginManifest | 19107 | 19107 | 19107 | 19107 | 542 | -| runtimeValidationFunction | 0 | 1854 | 1345 | 3373 | 743 | -| supportsInterface | 296 | 317 | 328 | 328 | 1611 | -| updateOwners | 1630 | 17787 | 17837 | 32518 | 6 | -| userOpValidationFunction | 5224 | 7200 | 5225 | 21756 | 15 | +| addSessionKey | 6197 | 83091 | 94889 | 107889 | 120 | +| checkResultEFPExternal | 24815 | 24815 | 24815 | 24815 | 1 | +| checkResultEFPFallback | 28743 | 28743 | 28743 | 28743 | 1 | +| entryPoint | 441 | 441 | 441 | 441 | 2 | +| execute | 2079 | 22173 | 14553 | 46171 | 17 | +| executeBatch | 9968 | 148956 | 135620 | 714628 | 15 | +| executeFromPlugin | 776 | 14601 | 10373 | 29614 | 7 | +| executeFromPluginExternal | 914 | 19298 | 12537 | 44296 | 108 | +| executeWithSessionKey | 6004 | 42533 | 24286 | 162773 | 74 | +| executionFunction | 1318 | 71302 | 52661 | 203949 | 84 | +| foo | 5840 | 8090 | 8090 | 10340 | 2 | +| getExecutionFunctionConfig | 5922 | 6775 | 6064 | 8683 | 7 | +| getExecutionHooks | 13594 | 16961 | 14544 | 22746 | 3 | +| getInstalledPlugins | 1256 | 2136 | 1256 | 5978 | 7 | +| getNonce | 1712 | 3962 | 3962 | 6212 | 2 | +| getNumberCounter1 | 16257 | 16257 | 16257 | 16257 | 2 | +| getNumberCounter2 | 13970 | 13970 | 13970 | 13970 | 1 | +| getNumberCounter3 | 16917 | 16917 | 16917 | 16917 | 1 | +| getPreValidationHooks | 11363 | 11363 | 11363 | 11363 | 1 | +| incrementCounter1 | 12398 | 12398 | 12398 | 12398 | 1 | +| incrementCounter2 | 13399 | 13399 | 13399 | 13399 | 1 | +| incrementCounter3 | 16694 | 16694 | 16694 | 16694 | 1 | +| initialize | 24956 | 594222 | 583332 | 2900454 | 315 | +| installPlugin | 2288 | 279978 | 181150 | 810298 | 448 | +| isValidSignature | 9379 | 15478 | 12228 | 28077 | 4 | +| onERC1155BatchReceived | 4638 | 12256 | 12256 | 19874 | 2 | +| onERC1155Received | 4308 | 10584 | 10584 | 16861 | 2 | +| onERC721Received | 3916 | 10058 | 10058 | 16201 | 2 | +| passthroughExecute | 5779 | 19039 | 10136 | 46702 | 11 | +| passthroughExecuteFromPlugin | 12105 | 15138 | 15138 | 18172 | 2 | +| passthroughExecuteWith1Eth | 18369 | 38076 | 38076 | 57784 | 2 | +| passthroughExecuteWithNativeTokenSpendPermission | 26758 | 26758 | 26758 | 26758 | 1 | +| performEFPCallWithExecHooks | 39119 | 39119 | 39119 | 39119 | 1 | +| proxiableUUID | 356 | 356 | 356 | 356 | 3 | +| removeSessionKey | 9735 | 9735 | 9735 | 9735 | 3 | +| rotateSessionKey | 10574 | 37142 | 46484 | 58904 | 5 | +| setNumberCounter1 | 46731 | 46731 | 46731 | 46731 | 2 | +| setNumberCounter2 | 44228 | 44228 | 44228 | 44228 | 1 | +| setNumberCounter3 | 16702 | 16702 | 16702 | 16702 | 1 | +| someExecutionFunction | 1774 | 2883 | 2883 | 3992 | 2 | +| supportsInterface | 347 | 826 | 440 | 2738 | 69 | +| tokensReceived | 4090 | 10637 | 10637 | 17184 | 2 | +| uninstallPlugin | 19034 | 48873 | 40845 | 166565 | 76 | +| updateKeyPermissions | 8856 | 46719 | 37545 | 161001 | 155 | +| updateOwners | 30350 | 30350 | 30350 | 30350 | 1 | +| upgradeToAndCall | 12280 | 16243 | 16243 | 20206 | 2 | +| useEFPPermissionAllowed | 41693 | 41693 | 41693 | 41693 | 1 | +| useEFPPermissionNotAllowed | 14334 | 14334 | 14334 | 14334 | 1 | +| validateUserOp | 413 | 55446 | 49863 | 218253 | 164 | + + +| src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory contract | | | | | | +|------------------------------------------------------------------------------------------|-----------------|--------|--------|---------|---------| +| Deployment Cost | Deployment Size | | | | | +| 1134166 | 6072 | | | | | +| Function Name | min | avg | median | max | # calls | +| acceptOwnership | 4009 | 4009 | 4009 | 4009 | 1 | +| addStake | 55648 | 56773 | 55648 | 60148 | 4 | +| createAccount | 1067 | 706738 | 698409 | 3091701 | 315 | +| getAddress | 571 | 6746 | 6012 | 65265 | 50 | +| owner | 394 | 1060 | 394 | 2394 | 3 | +| transferOwnership | 24405 | 24405 | 24405 | 24405 | 1 | +| unlockStake | 3663 | 3663 | 3663 | 3663 | 2 | +| withdraw | 7595 | 7595 | 7595 | 7595 | 1 | +| withdrawStake | 2142 | 5572 | 5572 | 9003 | 2 | + + +| src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin contract | | | | | | +|------------------------------------------------------------------|-----------------|-------|--------|---------|---------| +| Deployment Cost | Deployment Size | | | | | +| 1677439 | 8439 | | | | | +| Function Name | min | avg | median | max | # calls | +| eip712Domain | 1419 | 1419 | 1419 | 1419 | 1 | +| getMessageHash | 2055 | 2055 | 2055 | 2055 | 4 | +| isOwnerOf | 2987 | 2987 | 2987 | 2987 | 7 | +| isValidSignature | 5886 | 13802 | 11313 | 24879 | 8 | +| onInstall | 998 | 64926 | 49176 | 2356160 | 334 | +| onUninstall | 10416 | 14243 | 12872 | 21842 | 6 | +| ownersOf | 931 | 3860 | 2547 | 8855 | 10 | +| pluginManifest | 16109 | 16109 | 16109 | 16109 | 633 | +| runtimeValidationFunction | 0 | 2018 | 1244 | 3254 | 832 | +| supportsInterface | 296 | 313 | 322 | 322 | 1500 | +| updateOwners | 1435 | 22167 | 28356 | 32356 | 13 | +| userOpValidationFunction | 5108 | 10633 | 7108 | 26345 | 17 | | src/plugins/session/SessionKeyPlugin.sol:SessionKeyPlugin contract | | | | | | |--------------------------------------------------------------------|-----------------|-------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 1462737 | 7334 | | | | | +| 2921406 | 14619 | | | | | | Function Name | min | avg | median | max | # calls | -| findPredecessor | 2387 | 2949 | 3087 | 3373 | 3 | -| getSessionKeys | 2286 | 2349 | 2349 | 2412 | 4 | -| isSessionKey | 2952 | 2952 | 2952 | 2952 | 2 | -| isSessionKeyOf | 721 | 2054 | 2721 | 2721 | 3 | -| onInstall | 3478 | 4091 | 3478 | 46407 | 70 | -| pluginManifest | 9625 | 9625 | 9625 | 9625 | 142 | -| supportsInterface | 296 | 317 | 328 | 328 | 213 | -| updateSessionKeys | 1688 | 46179 | 43752 | 206220 | 72 | -| userOpValidationFunction | 699 | 8755 | 8711 | 10343 | 53 | - - -| src/plugins/session/permissions/SessionKeyPermissionsPlugin.sol:SessionKeyPermissionsPlugin contract | | | | | | -|------------------------------------------------------------------------------------------------------|-----------------|-------|--------|--------|---------| -| Deployment Cost | Deployment Size | | | | | -| 2018553 | 10110 | | | | | -| Function Name | min | avg | median | max | # calls | -| getAccessControlType | 5576 | 5576 | 5576 | 5576 | 3 | -| getERC20SpendLimitInfo | 2511 | 7511 | 7511 | 12511 | 2 | -| getGasSpendLimit | 4507 | 5336 | 5336 | 6165 | 2 | -| getKeyTimeRange | 1494 | 1494 | 1494 | 1494 | 1 | -| getNativeTokenSpendLimitInfo | 2543 | 7543 | 7543 | 12543 | 2 | -| getRequiredPaymaster | 1744 | 1799 | 1799 | 1854 | 2 | -| onInstall | 517 | 517 | 517 | 517 | 59 | -| pluginManifest | 13092 | 13092 | 13092 | 13092 | 118 | -| preUserOpValidationHook | 2517 | 17996 | 14286 | 34296 | 49 | -| registerKey | 47247 | 47247 | 47247 | 47247 | 59 | -| rotateKey | 23426 | 23426 | 23426 | 23426 | 2 | -| supportsInterface | 299 | 320 | 331 | 331 | 177 | -| updateKeyPermissions | 4339 | 40400 | 28026 | 145028 | 102 | +| addSessionKey | 972 | 76553 | 89879 | 91879 | 120 | +| executeWithSessionKey | 3246 | 38854 | 21662 | 157850 | 73 | +| findPredecessor | 1553 | 2369 | 2420 | 3553 | 9 | +| getAccessControlEntry | 1727 | 3727 | 3727 | 5727 | 4 | +| getAccessControlType | 1449 | 4020 | 5449 | 5449 | 7 | +| getERC20SpendLimitInfo | 2145 | 2700 | 2145 | 12145 | 36 | +| getGasSpendLimit | 2220 | 2640 | 2220 | 5797 | 18 | +| getKeyTimeRange | 1372 | 2038 | 1372 | 3372 | 3 | +| getNativeTokenSpendLimitInfo | 2271 | 3021 | 2271 | 12271 | 16 | +| getRequiredPaymaster | 1617 | 1672 | 1672 | 1727 | 2 | +| isSelectorOnAccessControlList | 1814 | 2814 | 2814 | 3814 | 2 | +| isSessionKeyOf | 703 | 1015 | 703 | 2703 | 32 | +| onInstall | 2302 | 16723 | 4302 | 723420 | 90 | +| onUninstall | 3754 | 10904 | 13639 | 15319 | 3 | +| pluginManifest | 13991 | 13991 | 13991 | 13991 | 184 | +| removeSessionKey | 2536 | 2536 | 2536 | 2536 | 3 | +| resetSessionKeyGasLimitTimestamp | 1590 | 1590 | 1590 | 1590 | 1 | +| rotateSessionKey | 1305 | 28381 | 39280 | 49900 | 5 | +| sessionKeysOf | 1614 | 2869 | 1677 | 10703 | 8 | +| supportsInterface | 299 | 316 | 325 | 325 | 273 | +| updateKeyPermissions | 3836 | 37168 | 32486 | 144924 | 155 | +| userOpValidationFunction | 850 | 17853 | 15432 | 42865 | 113 | | test/Utils.sol:Utils contract | | | | | | |-------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 111774 | 590 | | | | | +| 111574 | 589 | | | | | | Function Name | min | avg | median | max | # calls | -| reverseAddressArray | 1513 | 1652 | 1513 | 1930 | 3 | +| reverseAddressArray | 1415 | 1537 | 1415 | 1783 | 3 | + + +| test/account/AccountExecHooks.t.sol:UpgradeableModularAccountExecHooksTest contract | | | | | | +|-------------------------------------------------------------------------------------|-----------------|---------|---------|---------|---------| +| Deployment Cost | Deployment Size | | | | | +| 18224465 | 90790 | | | | | +| Function Name | min | avg | median | max | # calls | +| installPlugin2WithHooksNoSuccessCheck | 1502299 | 1502299 | 1502299 | 1502299 | 1 | + + +| test/account/AccountPreValidationHooks.t.sol:UpgradeableModularAccountPreValidationHooksTest contract | | | | | | +|-------------------------------------------------------------------------------------------------------|-----------------|---------|---------|---------|---------| +| Deployment Cost | Deployment Size | | | | | +| 19808006 | 98687 | | | | | +| Function Name | min | avg | median | max | # calls | +| installPlugin2WithpreRuntimeValidationHookNoSuccessCheck | 1486520 | 1486520 | 1486520 | 1486520 | 1 | -| test/factory/MultiOwnerModularAccountFactoryTest.t.sol:MultiOwnerModularAccountFactoryTest contract | | | | | | -|---------------------------------------------------------------------------------|-----------------|-----|--------|-----|---------| -| Deployment Cost | Deployment Size | | | | | -| 14310646 | 70879 | | | | | -| Function Name | min | avg | median | max | # calls | -| receive | 67 | 67 | 67 | 67 | 2 | +| test/account/TokenReceiver.t.sol:TokenReceiverTest contract | | | | | | +|-------------------------------------------------------------|-----------------|------|--------|------|---------| +| Deployment Cost | Deployment Size | | | | | +| 20998014 | 104619 | | | | | +| Function Name | min | avg | median | max | # calls | +| onERC1155Received | 1198 | 1198 | 1198 | 1198 | 40 | -| test/mocks/ContractOwner.sol:ContractOwner contract | | | | | | -|-----------------------------------------------------|-----------------|-----|--------|-----|---------| -| Deployment Cost | Deployment Size | | | | | -| 106959 | 562 | | | | | -| Function Name | min | avg | median | max | # calls | -| isValidSignature | 803 | 803 | 803 | 803 | 2 | -| sign | 635 | 635 | 635 | 635 | 2 | +| test/factory/MultiOwnerMAFactoryTest.t.sol:MultiOwnerModularAccountFactoryTest contract | | | | | | +|-----------------------------------------------------------------------------------------|-----------------|-----|--------|-----|---------| +| Deployment Cost | Deployment Size | | | | | +| 15313995 | 75884 | | | | | +| Function Name | min | avg | median | max | # calls | +| receive | 67 | 67 | 67 | 67 | 2 | + + +| test/mocks/ContractOwner.sol:ContractOwner contract | | | | | | +|-----------------------------------------------------|-----------------|------|--------|------|---------| +| Deployment Cost | Deployment Size | | | | | +| 209775 | 1112 | | | | | +| Function Name | min | avg | median | max | # calls | +| isValidSignature | 779 | 3571 | 3571 | 6364 | 4 | +| sign | 638 | 638 | 638 | 638 | 2 | | test/mocks/Counter.sol:Counter contract | | | | | | |-----------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 44699 | 250 | | | | | +| 49705 | 275 | | | | | | Function Name | min | avg | median | max | # calls | -| increment | 418 | 20578 | 22318 | 22318 | 81 | -| number | 280 | 530 | 280 | 2280 | 16 | -| setNumber | 2350 | 17827 | 22250 | 22250 | 9 | -| supportsInterface | 138 | 138 | 138 | 138 | 17 | +| increment | 418 | 19400 | 22318 | 22318 | 90 | +| number | 280 | 667 | 280 | 2280 | 31 | +| setNumber | 2350 | 16350 | 22250 | 22250 | 10 | +| supportsInterface | 138 | 138 | 138 | 138 | 26 | | test/mocks/MockDiamondStorageContract.sol:MockDiamondStorageContract contract | | | | | | |-------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 76923 | 395 | | | | | +| 82129 | 421 | | | | | | Function Name | min | avg | median | max | # calls | -| initialize | 502 | 10627 | 10627 | 20753 | 2 | +| initialize | 496 | 10624 | 10624 | 20753 | 2 | | test/mocks/MockPlugin.sol:MockPlugin contract | | | | | | |-----------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 1258990 | 7651 | | | | | +| 1094762 | 7309 | | | | | | Function Name | min | avg | median | max | # calls | -| onHookApply | 3892 | 3935 | 3892 | 4154 | 6 | -| onHookUnapply | 3892 | 4023 | 4023 | 4154 | 2 | -| onInstall | 2844 | 2844 | 2844 | 2844 | 132 | -| onUninstall | 2844 | 2844 | 2844 | 2844 | 37 | -| pluginManifest | 12781 | 16763 | 17305 | 35875 | 311 | -| postExecutionHook | 3106 | 3300 | 3368 | 3368 | 31 | -| preExecutionHook | 0 | 4336 | 4407 | 5717 | 29 | -| preRuntimeValidationHook | 0 | 3243 | 3892 | 3892 | 6 | -| preUserOpValidationHook | 8083 | 8083 | 8083 | 8083 | 5 | -| supportsInterface | 238 | 238 | 238 | 238 | 501 | +| executionFunction | 2302 | 2302 | 2302 | 2302 | 6 | +| onInstall | 2826 | 2826 | 2826 | 2826 | 134 | +| onUninstall | 2826 | 2826 | 2826 | 2826 | 44 | +| pluginManifest | 11925 | 14401 | 14043 | 34358 | 243 | +| postExecutionHook | 3088 | 3219 | 3219 | 3350 | 34 | +| preExecutionHook | 0 | 4542 | 4371 | 8564 | 28 | +| preRuntimeValidationHook | 0 | 3099 | 3874 | 3874 | 5 | +| preUserOpValidationHook | 8065 | 8065 | 8065 | 8065 | 4 | +| supportsInterface | 247 | 247 | 247 | 247 | 432 | + + +| test/mocks/plugins/AccountStateMutatingPlugin.sol:AccountStateMutatingPlugin contract | | | | | | +|---------------------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| +| Deployment Cost | Deployment Size | | | | | +| 1526206 | 7651 | | | | | +| Function Name | min | avg | median | max | # calls | +| configureInstall | 2967 | 21919 | 22867 | 22867 | 84 | +| executionFunction | 2467 | 12772 | 2467 | 180600 | 72 | +| onInstall | 458 | 458 | 458 | 458 | 84 | +| onUninstall | 502 | 502 | 502 | 502 | 14 | +| pluginManifest | 3559 | 5671 | 5945 | 7627 | 182 | +| postExecutionHook | 2689 | 30162 | 2689 | 158909 | 19 | +| preExecutionHook | 3065 | 33101 | 3065 | 159285 | 28 | +| preRuntimeValidationHook | 35020 | 99065 | 113542 | 180882 | 17 | +| preUserOpValidationHook | 35042 | 91784 | 111397 | 180909 | 17 | +| runtimeValidationFunction | 2949 | 42542 | 2949 | 181080 | 30 | +| setCallback | 116345 | 158996 | 138527 | 460837 | 84 | +| supportsInterface | 254 | 271 | 280 | 280 | 252 | +| userOpValidationFunction | 2824 | 42426 | 2824 | 180961 | 30 | | test/mocks/plugins/ChangingManifestPlugin.sol:CanChangeManifestPlugin contract | | | | | | |--------------------------------------------------------------------------------|-----------------|--------|--------|--------|---------| | Deployment Cost | Deployment Size | | | | | -| 1441976 | 7257 | | | | | +| 1479810 | 7446 | | | | | | Function Name | min | avg | median | max | # calls | -| changeManifest | 505966 | 505966 | 505966 | 505966 | 1 | -| onInstall | 554 | 554 | 554 | 554 | 1 | -| pluginManifest | 4025 | 4025 | 4025 | 4025 | 2 | -| supportsInterface | 245 | 266 | 277 | 277 | 3 | +| changeManifest | 511435 | 511435 | 511435 | 511435 | 1 | +| onInstall | 512 | 512 | 512 | 512 | 1 | +| pluginManifest | 3706 | 3706 | 3706 | 3706 | 2 | +| supportsInterface | 251 | 268 | 277 | 277 | 3 | | test/mocks/plugins/ChangingManifestPlugin.sol:CanChangeManifestPluginFactory contract | | | | | | |---------------------------------------------------------------------------------------|-----------------|---------|---------|---------|---------| | Deployment Cost | Deployment Size | | | | | -| 1742637 | 8732 | | | | | +| 1787487 | 8956 | | | | | | Function Name | min | avg | median | max | # calls | -| newPlugin | 1574162 | 1574162 | 1574162 | 1574162 | 1 | +| newPlugin | 1616431 | 1616431 | 1616431 | 1616431 | 1 | | test/mocks/plugins/ChangingManifestPlugin.sol:DidChangeManifestPlugin contract | | | | | | |--------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 471312 | 2382 | | | | | +| 476919 | 2410 | | | | | | Function Name | min | avg | median | max | # calls | -| onUninstall | 554 | 554 | 554 | 554 | 1 | -| pluginManifest | 2478 | 2478 | 2478 | 2478 | 1 | -| someExecutionFunction | 225 | 225 | 225 | 225 | 1 | +| onUninstall | 491 | 491 | 491 | 491 | 1 | +| pluginManifest | 2225 | 2225 | 2225 | 2225 | 1 | +| someExecutionFunction | 228 | 228 | 228 | 228 | 1 | | test/mocks/plugins/ComprehensivePlugin.sol:ComprehensivePlugin contract | | | | | | |-------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 848491 | 4266 | | | | | +| 848891 | 4268 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 470 | 470 | 470 | 470 | 12 | -| onUninstall | 536 | 536 | 536 | 536 | 2 | -| pluginManifest | 20888 | 20888 | 20888 | 20888 | 26 | -| supportsInterface | 239 | 260 | 271 | 271 | 36 | +| foo | 351 | 351 | 351 | 351 | 1 | +| onInstall | 424 | 424 | 424 | 424 | 12 | +| onUninstall | 468 | 468 | 468 | 468 | 2 | +| pluginManifest | 16903 | 16903 | 16903 | 16903 | 26 | +| postExecutionHook | 446 | 446 | 446 | 446 | 2 | +| preExecutionHook | 860 | 860 | 860 | 860 | 1 | +| supportsInterface | 242 | 259 | 268 | 268 | 36 | | test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPCallerPlugin contract | | | | | | |--------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 923970 | 4643 | | | | | +| 969016 | 4868 | | | | | | Function Name | min | avg | median | max | # calls | -| getNumberCounter1 | 12579 | 12579 | 12579 | 12579 | 2 | -| getNumberCounter2 | 10102 | 10102 | 10102 | 10102 | 1 | -| getNumberCounter3 | 7060 | 7060 | 7060 | 7060 | 1 | -| incrementCounter1 | 5529 | 5529 | 5529 | 5529 | 1 | -| incrementCounter2 | 9493 | 9493 | 9493 | 9493 | 1 | -| incrementCounter3 | 6793 | 6793 | 6793 | 6793 | 1 | -| onInstall | 630 | 630 | 630 | 630 | 14 | -| passthroughExecuteFromPlugin | 2313 | 4839 | 4839 | 7366 | 2 | -| pluginManifest | 21408 | 21408 | 21408 | 21408 | 28 | -| setNumberCounter1 | 46508 | 46508 | 46508 | 46508 | 2 | -| setNumberCounter2 | 43794 | 43794 | 43794 | 43794 | 1 | -| setNumberCounter3 | 6790 | 6790 | 6790 | 6790 | 1 | -| supportsInterface | 245 | 266 | 277 | 277 | 42 | -| useEFPPermissionAllowed | 32745 | 32745 | 32745 | 32745 | 1 | -| useEFPPermissionNotAllowed | 4613 | 4613 | 4613 | 4613 | 1 | +| getNumberCounter1 | 8800 | 8800 | 8800 | 8800 | 2 | +| getNumberCounter2 | 6513 | 6513 | 6513 | 6513 | 1 | +| getNumberCounter3 | 6997 | 6997 | 6997 | 6997 | 1 | +| incrementCounter1 | 4978 | 4978 | 4978 | 4978 | 1 | +| incrementCounter2 | 5948 | 5948 | 5948 | 5948 | 1 | +| incrementCounter3 | 6774 | 6774 | 6774 | 6774 | 1 | +| onInstall | 583 | 583 | 583 | 583 | 13 | +| passthroughExecuteFromPlugin | 2197 | 5230 | 5230 | 8264 | 2 | +| pluginManifest | 20367 | 20367 | 20367 | 20367 | 26 | +| setNumberCounter1 | 36774 | 36774 | 36774 | 36774 | 2 | +| setNumberCounter2 | 34271 | 34271 | 34271 | 34271 | 1 | +| setNumberCounter3 | 6769 | 6769 | 6769 | 6769 | 1 | +| supportsInterface | 245 | 262 | 271 | 271 | 39 | +| useEFPPermissionAllowed | 31724 | 31724 | 31724 | 31724 | 1 | +| useEFPPermissionNotAllowed | 4438 | 4438 | 4438 | 4438 | 1 | | test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPCallerPluginAnyExternal contract | | | | | | |-------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 566207 | 2856 | | | | | +| 577420 | 2912 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 488 | 488 | 488 | 488 | 14 | -| passthroughExecute | 4319 | 17925 | 9949 | 45991 | 7 | -| passthroughExecuteWith1Eth | 11085 | 35335 | 35335 | 59586 | 2 | -| pluginManifest | 5706 | 5706 | 5706 | 5706 | 28 | -| supportsInterface | 258 | 279 | 290 | 290 | 42 | +| onInstall | 432 | 432 | 432 | 432 | 13 | +| passthroughExecute | 2291 | 13777 | 6636 | 36702 | 11 | +| passthroughExecuteWith1Eth | 10955 | 30626 | 30626 | 50297 | 2 | +| pluginManifest | 5159 | 5159 | 5159 | 5159 | 26 | +| supportsInterface | 248 | 265 | 274 | 274 | 39 | | test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPCallerPluginAnyExternalCanSpendNativeToken contract | | | | | | |--------------------------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 526369 | 2657 | | | | | +| 526569 | 2658 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 485 | 485 | 485 | 485 | 14 | -| passthroughExecuteWithNativeTokenSpendPermission | 24016 | 24016 | 24016 | 24016 | 1 | -| pluginManifest | 4446 | 4446 | 4446 | 4446 | 28 | -| supportsInterface | 258 | 279 | 290 | 290 | 42 | +| onInstall | 435 | 435 | 435 | 435 | 13 | +| passthroughExecuteWithNativeTokenSpendPermission | 16771 | 16771 | 16771 | 16771 | 1 | +| pluginManifest | 3975 | 3975 | 3975 | 3975 | 26 | +| supportsInterface | 251 | 268 | 277 | 277 | 39 | | test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPExecutionHookPlugin contract | | | | | | |---------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 589633 | 2973 | | | | | +| 597639 | 3013 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 497 | 497 | 497 | 497 | 14 | -| performEFPCallWithExecHooks | 30167 | 30167 | 30167 | 30167 | 1 | -| pluginManifest | 7855 | 7855 | 7855 | 7855 | 28 | -| postExecutionHook | 404 | 404 | 404 | 404 | 6 | -| preExecutionHook | 962 | 962 | 962 | 962 | 3 | -| supportsInterface | 242 | 263 | 274 | 274 | 42 | - - -| test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPExternalPermittedCallHookPlugin contract | | | | | | -|---------------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| -| Deployment Cost | Deployment Size | | | | | -| 624465 | 3147 | | | | | -| Function Name | min | avg | median | max | # calls | -| onInstall | 528 | 528 | 528 | 528 | 14 | -| performIncrement | 52779 | 52779 | 52779 | 52779 | 1 | -| pluginManifest | 6080 | 6080 | 6080 | 6080 | 28 | -| postExecHookCalled | 379 | 379 | 379 | 379 | 2 | -| postExecutionHook | 1004 | 1004 | 1004 | 1004 | 1 | -| preExecHookCalled | 611 | 1611 | 1611 | 2611 | 2 | -| preExecutionHook | 21119 | 21119 | 21119 | 21119 | 1 | -| supportsInterface | 252 | 272 | 283 | 283 | 42 | - - -| test/mocks/plugins/ExecFromPluginPermissionsMocks.sol:EFPPermittedCallHookPlugin contract | | | | | | -|-------------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| -| Deployment Cost | Deployment Size | | | | | -| 628471 | 3167 | | | | | -| Function Name | min | avg | median | max | # calls | -| onInstall | 528 | 528 | 528 | 528 | 14 | -| performEFPCall | 69787 | 69787 | 69787 | 69787 | 1 | -| pluginManifest | 6382 | 6382 | 6382 | 6382 | 28 | -| postExecHookCalled | 402 | 402 | 402 | 402 | 2 | -| postExecutionHook | 1004 | 1004 | 1004 | 1004 | 1 | -| preExecHookCalled | 611 | 1611 | 1611 | 2611 | 2 | -| preExecutionHook | 21136 | 21136 | 21136 | 21136 | 1 | -| supportsInterface | 252 | 272 | 283 | 283 | 42 | +| onInstall | 456 | 456 | 456 | 456 | 13 | +| performEFPCallWithExecHooks | 29150 | 29150 | 29150 | 29150 | 1 | +| pluginManifest | 7353 | 7353 | 7353 | 7353 | 26 | +| postExecutionHook | 385 | 385 | 385 | 385 | 4 | +| preExecutionHook | 919 | 919 | 919 | 919 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 39 | | test/mocks/plugins/ManifestValidityMocks.sol:BadHookMagicValue_PostExecHook_Plugin contract | | | | | | |---------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 457500 | 2313 | | | | | +| 448087 | 2266 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4974 | 4974 | 4974 | 4974 | 2 | -| supportsInterface | 258 | 279 | 290 | 290 | 3 | +| pluginManifest | 4482 | 4482 | 4482 | 4482 | 2 | +| supportsInterface | 251 | 268 | 277 | 277 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadHookMagicValue_RuntimeValidationFunction_Plugin contract | | | | | | |----------------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 447687 | 2264 | | | | | +| 437081 | 2211 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4442 | 4442 | 4442 | 4442 | 2 | -| supportsInterface | 261 | 282 | 293 | 293 | 3 | +| pluginManifest | 3976 | 3976 | 3976 | 3976 | 2 | +| supportsInterface | 251 | 268 | 277 | 277 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadHookMagicValue_UserOpValidationFunction_Plugin contract | | | | | | |---------------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 446087 | 2256 | | | | | +| 437081 | 2211 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4433 | 4433 | 4433 | 4433 | 2 | -| supportsInterface | 262 | 283 | 294 | 294 | 3 | +| pluginManifest | 3983 | 3983 | 3983 | 3983 | 2 | +| supportsInterface | 251 | 268 | 277 | 277 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadValidationMagicValue_PostExecHook_Plugin contract | | | | | | |---------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 458500 | 2318 | | | | | +| 447887 | 2265 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4979 | 4979 | 4979 | 4979 | 2 | -| supportsInterface | 258 | 279 | 290 | 290 | 3 | +| pluginManifest | 4482 | 4482 | 4482 | 4482 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadValidationMagicValue_PreExecHook_Plugin contract | | | | | | |--------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 458500 | 2318 | | | | | +| 447887 | 2265 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4979 | 4979 | 4979 | 4979 | 2 | -| supportsInterface | 258 | 279 | 290 | 290 | 3 | +| pluginManifest | 4482 | 4482 | 4482 | 4482 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadValidationMagicValue_PreRuntimeValidationHook_Plugin contract | | | | | | |---------------------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 465106 | 2351 | | | | | +| 454493 | 2298 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 5612 | 5612 | 5612 | 5612 | 2 | -| supportsInterface | 252 | 272 | 283 | 283 | 3 | +| pluginManifest | 5140 | 5140 | 5140 | 5140 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadValidationMagicValue_PreUserOpValidationHook_Plugin contract | | | | | | |--------------------------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 461706 | 2334 | | | | | +| 454493 | 2298 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 5619 | 5619 | 5619 | 5619 | 2 | -| supportsInterface | 258 | 279 | 290 | 290 | 3 | +| pluginManifest | 5155 | 5155 | 5155 | 5155 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 3 | | test/mocks/plugins/ManifestValidityMocks.sol:BadValidationMagicValue_UserOp_Plugin contract | | | | | | |---------------------------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 445487 | 2253 | | | | | +| 436681 | 2209 | | | | | | Function Name | min | avg | median | max | # calls | -| pluginManifest | 4423 | 4423 | 4423 | 4423 | 2 | -| supportsInterface | 256 | 277 | 288 | 288 | 3 | +| pluginManifest | 3980 | 3980 | 3980 | 3980 | 2 | +| supportsInterface | 248 | 265 | 274 | 274 | 3 | | test/mocks/plugins/ReturnDataPluginMocks.sol:RegularResultContract contract | | | | | | @@ -550,116 +1040,116 @@ Generated via `bash utils/inspect.sh`. | test/mocks/plugins/ReturnDataPluginMocks.sol:ResultConsumerPlugin contract | | | | | | |----------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 684033 | 3647 | | | | | +| 675827 | 3606 | | | | | | Function Name | min | avg | median | max | # calls | -| checkResultEFPExternal | 24590 | 24590 | 24590 | 24590 | 1 | -| checkResultEFPFallback | 17549 | 17549 | 17549 | 17549 | 1 | -| onInstall | 526 | 526 | 526 | 526 | 5 | -| pluginManifest | 7713 | 7713 | 7713 | 7713 | 10 | -| supportsInterface | 252 | 272 | 283 | 283 | 15 | +| checkResultEFPExternal | 14846 | 14846 | 14846 | 14846 | 1 | +| checkResultEFPFallback | 18780 | 18780 | 18780 | 18780 | 1 | +| onInstall | 476 | 476 | 476 | 476 | 5 | +| pluginManifest | 7051 | 7051 | 7051 | 7051 | 10 | +| supportsInterface | 248 | 265 | 274 | 274 | 15 | | test/mocks/plugins/ReturnDataPluginMocks.sol:ResultCreatorPlugin contract | | | | | | |---------------------------------------------------------------------------|-----------------|------|--------|------|---------| | Deployment Cost | Deployment Size | | | | | -| 471112 | 2381 | | | | | +| 465506 | 2353 | | | | | | Function Name | min | avg | median | max | # calls | -| foo | 438 | 438 | 438 | 438 | 6 | -| onInstall | 485 | 485 | 485 | 485 | 19 | -| pluginManifest | 4631 | 4631 | 4631 | 4631 | 38 | -| supportsInterface | 256 | 277 | 288 | 288 | 57 | +| foo | 383 | 383 | 383 | 383 | 5 | +| onInstall | 432 | 432 | 432 | 432 | 18 | +| pluginManifest | 4136 | 4136 | 4136 | 4136 | 36 | +| supportsInterface | 248 | 265 | 274 | 274 | 54 | | test/mocks/plugins/UninstallErrorsPlugin.sol:UninstallErrorsPlugin contract | | | | | | |-----------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 509638 | 2596 | | | | | +| 510838 | 2602 | | | | | | Function Name | min | avg | median | max | # calls | -| onHookApply | 603 | 603 | 603 | 603 | 2 | -| onHookUnapply | 746 | 12439 | 791 | 47429 | 4 | -| onInstall | 588 | 588 | 588 | 588 | 4 | -| onUninstall | 715 | 19406 | 806 | 47398 | 5 | -| pluginManifest | 2456 | 2456 | 2456 | 2456 | 13 | -| supportsInterface | 245 | 266 | 277 | 277 | 12 | +| onInstall | 542 | 542 | 542 | 542 | 2 | +| onUninstall | 615 | 27755 | 718 | 69474 | 5 | +| pluginManifest | 2198 | 2198 | 2198 | 2198 | 9 | +| supportsInterface | 248 | 265 | 274 | 274 | 6 | | test/mocks/plugins/ValidationPluginMocks.sol:MockUserOpValidation1HookPlugin contract | | | | | | |---------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 492131 | 2486 | | | | | +| 494738 | 2499 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 482 | 482 | 482 | 482 | 10 | -| pluginManifest | 5614 | 5614 | 5614 | 5614 | 20 | -| preUserOpValidationHook | 672 | 672 | 672 | 672 | 7 | -| setValidationData | 24686 | 33214 | 24686 | 44586 | 7 | -| supportsInterface | 252 | 272 | 283 | 283 | 30 | -| userOpValidationFunction | 732 | 732 | 732 | 732 | 6 | +| onInstall | 432 | 432 | 432 | 432 | 10 | +| pluginManifest | 5158 | 5158 | 5158 | 5158 | 20 | +| preUserOpValidationHook | 614 | 614 | 614 | 614 | 7 | +| setValidationData | 24630 | 33158 | 24630 | 44530 | 7 | +| supportsInterface | 248 | 265 | 274 | 274 | 30 | +| userOpValidationFunction | 675 | 675 | 675 | 675 | 6 | | test/mocks/plugins/ValidationPluginMocks.sol:MockUserOpValidation2HookPlugin contract | | | | | | |---------------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 523363 | 2642 | | | | | +| 525163 | 2651 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 479 | 479 | 479 | 479 | 10 | -| pluginManifest | 6608 | 6608 | 6608 | 6608 | 20 | -| preUserOpValidationHook | 669 | 678 | 678 | 688 | 4 | -| setValidationData | 26972 | 36922 | 36922 | 46872 | 2 | -| supportsInterface | 252 | 272 | 283 | 283 | 30 | -| userOpValidationFunction | 728 | 728 | 728 | 728 | 2 | +| onInstall | 435 | 435 | 435 | 435 | 10 | +| pluginManifest | 6034 | 6034 | 6034 | 6034 | 20 | +| preUserOpValidationHook | 617 | 626 | 626 | 636 | 4 | +| setValidationData | 26927 | 36877 | 36877 | 46827 | 2 | +| supportsInterface | 251 | 268 | 277 | 277 | 30 | +| userOpValidationFunction | 676 | 676 | 676 | 676 | 2 | | test/mocks/plugins/ValidationPluginMocks.sol:MockUserOpValidationPlugin contract | | | | | | |----------------------------------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 470712 | 2379 | | | | | +| 475719 | 2404 | | | | | | Function Name | min | avg | median | max | # calls | -| onInstall | 509 | 509 | 509 | 509 | 10 | -| pluginManifest | 4445 | 4445 | 4445 | 4445 | 20 | -| setValidationData | 22349 | 22349 | 22349 | 22349 | 1 | -| supportsInterface | 256 | 277 | 288 | 288 | 30 | -| userOpValidationFunction | 738 | 738 | 738 | 738 | 1 | +| onInstall | 456 | 456 | 456 | 456 | 10 | +| pluginManifest | 4002 | 4002 | 4002 | 4002 | 20 | +| setValidationData | 22333 | 22333 | 22333 | 22333 | 1 | +| supportsInterface | 248 | 265 | 274 | 274 | 30 | +| userOpValidationFunction | 675 | 675 | 675 | 675 | 1 | -| test/mocks/tokens/MockERC1155.sol:MockERC1155 contract | | | | | | -|--------------------------------------------------------|-----------------|-------|--------|--------|---------| -| Deployment Cost | Deployment Size | | | | | -| 901342 | 4711 | | | | | -| Function Name | min | avg | median | max | # calls | -| balanceOf | 544 | 1544 | 1544 | 2544 | 40 | -| mint | 25610 | 26566 | 25610 | 27643 | 85 | -| safeBatchTransferFrom | 90663 | 97980 | 90663 | 112616 | 3 | -| safeTransferFrom | 27352 | 30797 | 27352 | 37689 | 3 | +| test/mocks/tokens/MockERC1155.sol:MockERC1155 contract | | | | | | +|--------------------------------------------------------|-----------------|--------|--------|--------|---------| +| Deployment Cost | Deployment Size | | | | | +| 974215 | 5076 | | | | | +| Function Name | min | avg | median | max | # calls | +| balanceOf | 544 | 1544 | 1544 | 2544 | 20 | +| mint | 27565 | 27565 | 27565 | 27565 | 40 | +| safeBatchTransferFrom | 91140 | 106758 | 106758 | 122376 | 2 | +| safeTransferFrom | 35123 | 39899 | 39899 | 44676 | 2 | | test/mocks/tokens/MockERC20.sol:MockERC20 contract | | | | | | |----------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 520528 | 3351 | | | | | +| 561766 | 3557 | | | | | | Function Name | min | avg | median | max | # calls | -| approve | 24387 | 24387 | 24387 | 24387 | 1 | -| balanceOf | 2585 | 2585 | 2585 | 2585 | 4 | -| mint | 46550 | 46550 | 46550 | 46550 | 24 | +| approve | 2387 | 16679 | 24387 | 24387 | 14 | +| balanceOf | 2582 | 2582 | 2582 | 2582 | 4 | +| mint | 46550 | 46550 | 46550 | 46550 | 27 | +| supportsInterface | 347 | 347 | 347 | 347 | 38 | +| transfer | 2988 | 16288 | 24888 | 24888 | 25 | | test/mocks/tokens/MockERC777.sol:MockERC777 contract | | | | | | |------------------------------------------------------|-----------------|-------|--------|-------|---------| | Deployment Cost | Deployment Size | | | | | -| 450893 | 2280 | | | | | +| 465706 | 2354 | | | | | | Function Name | min | avg | median | max | # calls | -| balanceOf | 586 | 1586 | 1586 | 2586 | 8 | -| mint | 22563 | 22563 | 22563 | 22563 | 17 | -| transfer | 11782 | 19822 | 23843 | 23843 | 3 | +| balanceOf | 586 | 1586 | 1586 | 2586 | 4 | +| mint | 22563 | 22563 | 22563 | 22563 | 8 | +| transfer | 31564 | 36611 | 36611 | 41658 | 2 | -| test/plugin/TokenReceiverPlugin.t.sol:TokenReceiverPluginTest contract | | | | | | -|------------------------------------------------------------------------|-----------------|------|--------|------|---------| -| Deployment Cost | Deployment Size | | | | | -| 19205126 | 95680 | | | | | -| Function Name | min | avg | median | max | # calls | -| onERC1155Received | 1225 | 1225 | 1225 | 1225 | 40 | +| test/plugin/session/permissions/SessionKeyGasLimits.t.sol:SessionKeyGasLimitsTest contract | | | | | | +|--------------------------------------------------------------------------------------------|-----------------|-----|--------|-----|---------| +| Deployment Cost | Deployment Size | | | | | +| 22069805 | 109963 | | | | | +| Function Name | min | avg | median | max | # calls | +| supportsInterface | 732 | 732 | 732 | 732 | 4 | -Ran 31 test suites: 344 tests passed, 0 failed, 0 skipped (344 total tests) +Ran 32 test suites: 394 tests passed, 0 failed, 0 skipped (394 total tests) diff --git a/.storagelayout.md b/.storagelayout.md index 189a3cc85..b89b6f2dc 100644 --- a/.storagelayout.md +++ b/.storagelayout.md @@ -15,6 +15,10 @@ Generated via `bash utils/inspect.sh`. | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| +`forge inspect --pretty src/account/AccountStorageV1.sol:AccountStorageV1 storage-layout` +| Name | Type | Slot | Offset | Bytes | Contract | +|------|------|------|--------|-------|----------| + `forge inspect --pretty src/account/PluginManagerInternals.sol:PluginManagerInternals storage-layout` | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| @@ -24,33 +28,30 @@ Generated via `bash utils/inspect.sh`. |------|------|------|--------|-------|----------| `forge inspect --pretty src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|--------|---------|------|--------|-------|-------------------------------------------------------------| -| _owner | address | 0 | 0 | 20 | src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory | - -`forge inspect --pretty src/libraries/AccountStorageV1.sol:AccountStorageV1 storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|------|------|------|--------|-------|----------| +| Name | Type | Slot | Offset | Bytes | Contract | +|---------------|---------|------|--------|-------|---------------------------------------------------------------------------------| +| _owner | address | 0 | 0 | 20 | src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory | +| _pendingOwner | address | 1 | 0 | 20 | src/factory/MultiOwnerModularAccountFactory.sol:MultiOwnerModularAccountFactory | `forge inspect --pretty src/plugins/BasePlugin.sol:BasePlugin storage-layout` | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| -`forge inspect --pretty src/plugins/TokenReceiverPlugin.sol:TokenReceiverPlugin storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|------|------|------|--------|-------|----------| - `forge inspect --pretty src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|------------------|--------------------------------|------|--------|-------|---------------------------------------------------------| -| _nameFallback | string | 0 | 0 | 32 | src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin | -| _versionFallback | string | 1 | 0 | 32 | src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin | -| _owners | struct AssociatedLinkedListSet | 2 | 0 | 32 | src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin | +| Name | Type | Slot | Offset | Bytes | Contract | +|---------|--------------------------------|------|--------|-------|---------------------------------------------------------| +| _owners | struct AssociatedLinkedListSet | 0 | 0 | 32 | src/plugins/owner/MultiOwnerPlugin.sol:MultiOwnerPlugin | `forge inspect --pretty src/plugins/session/SessionKeyPlugin.sol:SessionKeyPlugin storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|--------------|--------------------------------|------|--------|-------|-----------------------------------------------------------| -| _sessionKeys | struct AssociatedLinkedListSet | 0 | 0 | 32 | src/plugins/session/SessionKeyPlugin.sol:SessionKeyPlugin | +| Name | Type | Slot | Offset | Bytes | Contract | +|---------------|--------------------------------|------|--------|-------|-----------------------------------------------------------| +| _keyIdCounter | mapping(address => uint256) | 0 | 0 | 32 | src/plugins/session/SessionKeyPlugin.sol:SessionKeyPlugin | +| _sessionKeys | struct AssociatedLinkedListSet | 1 | 0 | 32 | src/plugins/session/SessionKeyPlugin.sol:SessionKeyPlugin | + +`forge inspect --pretty src/plugins/session/permissions/SessionKeyPermissions.sol:SessionKeyPermissions storage-layout` +| Name | Type | Slot | Offset | Bytes | Contract | +|---------------|-----------------------------|------|--------|-------|---------------------------------------------------------------------------------| +| _keyIdCounter | mapping(address => uint256) | 0 | 0 | 32 | src/plugins/session/permissions/SessionKeyPermissions.sol:SessionKeyPermissions | `forge inspect --pretty src/plugins/session/permissions/SessionKeyPermissionsBase.sol:SessionKeyPermissionsBase storage-layout` | Name | Type | Slot | Offset | Bytes | Contract | @@ -62,8 +63,3 @@ Generated via `bash utils/inspect.sh`. |---------------|-----------------------------|------|--------|-------|-------------------------------------------------------------------------------------------| | _keyIdCounter | mapping(address => uint256) | 0 | 0 | 32 | src/plugins/session/permissions/SessionKeyPermissionsLoupe.sol:SessionKeyPermissionsLoupe | -`forge inspect --pretty src/plugins/session/permissions/SessionKeyPermissionsPlugin.sol:SessionKeyPermissionsPlugin storage-layout` -| Name | Type | Slot | Offset | Bytes | Contract | -|---------------|-----------------------------|------|--------|-------|---------------------------------------------------------------------------------------------| -| _keyIdCounter | mapping(address => uint256) | 0 | 0 | 32 | src/plugins/session/permissions/SessionKeyPermissionsPlugin.sol:SessionKeyPermissionsPlugin | -