Skip to content

Latest commit

 

History

History
373 lines (329 loc) · 23.8 KB

.gasestimates.md

File metadata and controls

373 lines (329 loc) · 23.8 KB

Gas Estimates

Generated via bash utils/inspect.sh.


forge test --gas-report --no-match-path "test/script/**/*"

lib/account-abstraction/contracts/core/EntryPoint.sol:EntryPoint contract
Deployment Cost Deployment Size
3641750 16650
Function Name min avg median max # calls
balanceOf 572 1572 1572 2572 16
getDepositInfo 1162 1162 1162 1162 10
getUserOpHash 1534 1575 1570 1624 20
handleOps 46248 148656 159651 204479 23
lib/account-abstraction/contracts/samples/SimpleAccount.sol:SimpleAccount contract
Deployment Cost Deployment Size
1532409 7166
Function Name min avg median max # calls
entryPoint 382 382 382 382 6
initialize 48079 48079 48079 48079 6
proxiableUUID 337 337 337 337 6
lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy contract
Deployment Cost Deployment Size
145164 862
Function Name min avg median max # calls
disableInitializers 32143 32143 32143 32143 1
getInitializedVersion 659 659 659 659 1
upgradeToAndCall 32662 38282 37813 41604 5
src/LightAccount.sol:LightAccount contract
Deployment Cost Deployment Size
0 0
Function Name min avg median max # calls
addDeposit 34019 34019 34019 34019 5
eip712Domain 1270 1270 1270 1270 9
entryPoint 448 448 448 448 1
execute 2968 25453 26074 57668 9
executeBatch(address[],bytes[]) 2886 15726 15726 28567 2
executeBatch(address[],uint256[],bytes[]) 3165 19406 19406 35647 2
getDeposit 1463 2963 1463 5963 3
initialize 23064 48839 49453 49453 43
isValidSignature 1059 2748 1126 7091 10
owner 532 532 532 532 3
transferOwnership 2915 5294 5385 7532 10
upgradeToAndCall 2874 43271 56021 58168 4
validateUserOp 620 26385 35542 36228 10
withdrawDepositTo 2641 31501 38139 47086 4
src/LightAccountFactory.sol:LightAccountFactory contract
Deployment Cost Deployment Size
2482191 11934
Function Name min avg median max # calls
acceptOwnership 28076 28076 28076 28076 1
addStake 60756 60756 60756 60756 4
createAccount 24600 140503 143831 143831 44
getAddress 625 625 625 625 1
owner 387 1053 387 2387 3
renounceOwnership 2360 2360 2360 2360 1
transferOwnership 47557 47557 47557 47557 1
unlockStake 33544 33544 33544 33544 2
withdraw 31284 31284 31284 31284 1
withdrawStake 29698 33088 33088 36478 2
src/MultiOwnerLightAccount.sol:MultiOwnerLightAccount contract
Deployment Cost Deployment Size
0 0
Function Name min avg median max # calls
addDeposit 34047 34047 34047 34047 5
eip712Domain 1284 1284 1284 1284 13
entryPoint 486 486 486 486 1
execute 3058 28642 27215 57706 10
executeBatch(address[],bytes[]) 2936 15776 15776 28617 2
executeBatch(address[],uint256[],bytes[]) 3243 19484 19484 35725 2
getDeposit 1499 2999 1499 5999 3
initialize 74505 118169 74505 2432375 54
isValidSignature 1050 4182 3914 7839 14
owners 1567 1567 1567 1567 4
updateOwners 3501 25162 36037 38231 17
upgradeToAndCall 2941 43308 56029 58235 4
validateUserOp 652 26100 35598 37219 13
withdrawDepositTo 2712 31542 38151 47157 4
src/MultiOwnerLightAccountFactory.sol:MultiOwnerLightAccountFactory contract
Deployment Cost Deployment Size
3163318 15122
Function Name min avg median max # calls
acceptOwnership 28076 28076 28076 28076 1
addStake 60778 60778 60778 60778 4
createAccount 22252 370044 25206 2620802 8
createAccountSingle 21926 162007 170029 170029 55
getAddress 700 8926 1816 48969 8
owner 365 1031 365 2365 3
renounceOwnership 2360 2360 2360 2360 1
transferOwnership 47579 47579 47579 47579 1
unlockStake 33566 33566 33566 33566 2
withdraw 31298 31298 31298 31298 1
withdrawStake 29720 33107 33107 36495 2
test/CustomSlotInitializable.t.sol:DisablesInitializersWhileInitializing contract
Deployment Cost Deployment Size
187824 697
Function Name min avg median max # calls
initialize 43784 43784 43784 43784 1
test/CustomSlotInitializable.t.sol:IsInitializingChecker contract
Deployment Cost Deployment Size
210601 809
Function Name min avg median max # calls
initialize 67172 67172 67172 67172 1
isInitializing 306 306 306 306 1
wasInitializing 271 271 271 271 1
test/CustomSlotInitializable.t.sol:V1 contract
Deployment Cost Deployment Size
595231 2640
Function Name min avg median max # calls
disableInitializers 6296 6296 6296 6296 1
getInitializedVersion 388 388 388 388 1
initialize 2487 21739 23904 44968 10
proxiableUUID 246 246 246 246 2
upgradeToAndCall 5957 11696 12962 14903 4
test/CustomSlotInitializable.t.sol:V2 contract
Deployment Cost Deployment Size
508142 2226
Function Name min avg median max # calls
getInitializedVersion 361 361 361 361 1
initialize 2401 5025 6338 6338 3
proxiableUUID 219 219 219 219 3
upgradeToAndCall 11108 11108 11108 11108 1
test/LightAccount.t.sol:LightSwitch contract
Deployment Cost Deployment Size
108729 284
Function Name min avg median max # calls
on 267 267 267 267 6
test/LightAccount.t.sol:Owner contract
Deployment Cost Deployment Size
224260 828
Function Name min avg median max # calls
isValidSignature 767 767 767 767 3
sign 623 623 623 623 3
test/MultiOwnerLightAccount.t.sol:LightSwitch contract
Deployment Cost Deployment Size
108729 284
Function Name min avg median max # calls
on 267 711 267 2267 9
test/MultiOwnerLightAccount.t.sol:Owner contract
Deployment Cost Deployment Size
224272 828
Function Name min avg median max # calls
isValidSignature 767 767 767 767 7
sign 623 623 623 623 8

Ran 5 test suites in 1.52s (3.44s CPU time): 118 tests passed, 0 failed, 0 skipped (118 total tests) forge inspect src/LightAccount.sol:LightAccount gasestimates

{
  "creation": {
    "codeDepositCost": "1503600",
    "executionCost": "infinite",
    "totalCost": "infinite"
  },
  "external": {
    "addDeposit()": "infinite",
    "eip712Domain()": "infinite",
    "entryPoint()": "infinite",
    "execute(address,uint256,bytes)": "infinite",
    "executeBatch(address[],bytes[])": "infinite",
    "executeBatch(address[],uint256[],bytes[])": "infinite",
    "getDeposit()": "infinite",
    "getNonce()": "infinite",
    "initialize(address)": "infinite",
    "isValidSignature(bytes32,bytes)": "infinite",
    "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "infinite",
    "onERC1155Received(address,address,uint256,uint256,bytes)": "876",
    "onERC721Received(address,address,uint256,bytes)": "497",
    "owner()": "2532",
    "proxiableUUID()": "infinite",
    "supportsInterface(bytes4)": "316",
    "transferOwnership(address)": "infinite",
    "upgradeToAndCall(address,bytes)": "infinite",
    "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "infinite",
    "withdrawDepositTo(address,uint256)": "infinite"
  },
  "internal": {
    "_domainNameAndVersion()": "infinite",
    "_getStorage()": "infinite",
    "_initialize(address)": "infinite",
    "_isFromOwner()": "infinite",
    "_isValidContractOwnerSignatureNow(bytes32,bytes memory)": "infinite",
    "_isValidEOAOwnerSignature(bytes32,bytes memory)": "infinite",
    "_isValidSignature(bytes32,bytes calldata)": "infinite",
    "_transferOwnership(address)": "infinite",
    "_validateSignature(struct PackedUserOperation calldata,bytes32)": "infinite"
  }
}

forge inspect src/LightAccountFactory.sol:LightAccountFactory gasestimates

{
  "creation": {
    "codeDepositCost": "673600",
    "executionCost": "infinite",
    "totalCost": "infinite"
  },
  "external": {
    "ACCOUNT_IMPLEMENTATION()": "infinite",
    "ENTRY_POINT()": "infinite",
    "acceptOwnership()": "50212",
    "addStake(uint32,uint256)": "infinite",
    "createAccount(address,uint256)": "infinite",
    "getAddress(address,uint256)": "infinite",
    "owner()": "2387",
    "pendingOwner()": "2505",
    "renounceOwnership()": "2375",
    "transferOwnership(address)": "30453",
    "unlockStake()": "infinite",
    "withdraw(address,address,uint256)": "infinite",
    "withdrawStake(address)": "infinite"
  },
  "internal": {
    "_getCombinedSalt(address,uint256)": "infinite"
  }
}

forge inspect src/MultiOwnerLightAccount.sol:MultiOwnerLightAccount gasestimates

{
  "creation": {
    "codeDepositCost": "1840600",
    "executionCost": "infinite",
    "totalCost": "infinite"
  },
  "external": {
    "addDeposit()": "infinite",
    "eip712Domain()": "infinite",
    "entryPoint()": "infinite",
    "execute(address,uint256,bytes)": "infinite",
    "executeBatch(address[],bytes[])": "infinite",
    "executeBatch(address[],uint256[],bytes[])": "infinite",
    "getDeposit()": "infinite",
    "getNonce()": "infinite",
    "initialize(address[])": "infinite",
    "isValidSignature(bytes32,bytes)": "infinite",
    "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "infinite",
    "onERC1155Received(address,address,uint256,uint256,bytes)": "884",
    "onERC721Received(address,address,uint256,bytes)": "494",
    "owners()": "infinite",
    "proxiableUUID()": "infinite",
    "supportsInterface(bytes4)": "315",
    "updateOwners(address[],address[])": "infinite",
    "upgradeToAndCall(address,bytes)": "infinite",
    "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "infinite",
    "withdrawDepositTo(address,uint256)": "infinite"
  },
  "internal": {
    "_addOwnersOrRevert(address[] memory)": "infinite",
    "_domainNameAndVersion()": "infinite",
    "_getStorage()": "infinite",
    "_initialize(address[] calldata)": "infinite",
    "_isFromOwner()": "infinite",
    "_isValidContractOwnerSignatureNowLoop(bytes32,bytes memory)": "infinite",
    "_isValidContractOwnerSignatureNowSingle(address,bytes32,bytes memory)": "infinite",
    "_isValidEOAOwnerSignature(bytes32,bytes memory)": "infinite",
    "_isValidSignature(bytes32,bytes calldata)": "infinite",
    "_removeOwnersOrRevert(address[] memory)": "infinite",
    "_updateOwners(address[] memory,address[] memory)": "infinite",
    "_validateSignature(struct PackedUserOperation calldata,bytes32)": "infinite"
  }
}

forge inspect src/MultiOwnerLightAccountFactory.sol:MultiOwnerLightAccountFactory gasestimates

{
  "creation": {
    "codeDepositCost": "969400",
    "executionCost": "infinite",
    "totalCost": "infinite"
  },
  "external": {
    "ACCOUNT_IMPLEMENTATION()": "infinite",
    "ENTRY_POINT()": "infinite",
    "acceptOwnership()": "50212",
    "addStake(uint32,uint256)": "infinite",
    "createAccount(address[],uint256)": "infinite",
    "createAccountSingle(address,uint256)": "infinite",
    "getAddress(address[],uint256)": "infinite",
    "owner()": "2365",
    "pendingOwner()": "2527",
    "renounceOwnership()": "2375",
    "transferOwnership(address)": "30475",
    "unlockStake()": "infinite",
    "withdraw(address,address,uint256)": "infinite",
    "withdrawStake(address)": "infinite"
  },
  "internal": {
    "_getCombinedSalt(address[] memory,uint256)": "infinite",
    "_validateOwnersArray(address[] memory)": "infinite"
  }
}

forge inspect src/common/BaseLightAccount.sol:BaseLightAccount gasestimates

null

forge inspect src/common/BaseLightAccountFactory.sol:BaseLightAccountFactory gasestimates

null

forge inspect src/common/CustomSlotInitializable.sol:CustomSlotInitializable gasestimates

null

forge inspect src/common/ERC1271.sol:ERC1271 gasestimates

null

forge inspect src/external/solady/EIP712.sol:EIP712 gasestimates

null

forge inspect src/external/solady/UUPSUpgradeable.sol:UUPSUpgradeable gasestimates

null