From 0dad41e7c04fac9cc32a5886d0dc62256843bd35 Mon Sep 17 00:00:00 2001 From: 0xcy <993921@qq.com> Date: Thu, 3 Oct 2024 20:13:57 +0800 Subject: [PATCH] sol for bls --- cache/solidity-files-cache.json | 1 + src/BLSLightAccount.sol | 109 ++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 cache/solidity-files-cache.json create mode 100644 src/BLSLightAccount.sol diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 0000000..32f8204 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1 @@ +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1727956088662,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.27":{"path":"Base.sol\\CommonBase.json","build_id":"14a03844074d052d409b885176959fa8"}},"ScriptBase":{"0.8.27":{"path":"Base.sol\\ScriptBase.json","build_id":"14a03844074d052d409b885176959fa8"}},"TestBase":{"0.8.27":{"path":"Base.sol\\TestBase.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1727956088662,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.27":{"path":"Script.sol\\Script.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1727956088663,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.27":{"path":"StdAssertions.sol\\StdAssertions.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1727956088663,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.27":{"path":"StdChains.sol\\StdChains.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1727956088663,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.27":{"path":"StdCheats.sol\\StdCheats.json","build_id":"14a03844074d052d409b885176959fa8"}},"StdCheatsSafe":{"0.8.27":{"path":"StdCheats.sol\\StdCheatsSafe.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1727956088664,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.27":{"path":"StdError.sol\\stdError.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1727956088664,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.27":{"path":"StdInvariant.sol\\StdInvariant.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1727956088664,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.27":{"path":"StdJson.sol\\stdJson.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1727956088664,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.27":{"path":"StdMath.sol\\stdMath.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1727956088665,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.27":{"path":"StdStorage.sol\\stdStorage.json","build_id":"14a03844074d052d409b885176959fa8"}},"stdStorageSafe":{"0.8.27":{"path":"StdStorage.sol\\stdStorageSafe.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1727956088665,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.27":{"path":"StdStyle.sol\\StdStyle.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1727956088665,"contentHash":"4bce85a4c60f2c073e651ee8140bcb4d","sourceName":"lib/forge-std/src/StdToml.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.27":{"path":"StdToml.sol\\stdToml.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1727956088666,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.27":{"path":"StdUtils.sol\\StdUtils.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1727956088666,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.27":{"path":"Test.sol\\Test.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1727956088667,"contentHash":"5928f469b3646114f329b4129fcf2401","sourceName":"lib/forge-std/src/Vm.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.27":{"path":"Vm.sol\\Vm.json","build_id":"14a03844074d052d409b885176959fa8"}},"VmSafe":{"0.8.27":{"path":"Vm.sol\\VmSafe.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1727956088667,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.27":{"path":"console.sol\\console.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1727956088668,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1727956088668,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.27":{"path":"IERC165.sol\\IERC165.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1727956088668,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.27":{"path":"IERC20.sol\\IERC20.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1727956088669,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.27":{"path":"IERC721.sol\\IERC721.json","build_id":"14a03844074d052d409b885176959fa8"}},"IERC721Enumerable":{"0.8.27":{"path":"IERC721.sol\\IERC721Enumerable.json","build_id":"14a03844074d052d409b885176959fa8"}},"IERC721Metadata":{"0.8.27":{"path":"IERC721.sol\\IERC721Metadata.json","build_id":"14a03844074d052d409b885176959fa8"}},"IERC721TokenReceiver":{"0.8.27":{"path":"IERC721.sol\\IERC721TokenReceiver.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1727956088670,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.27":{"path":"IMulticall3.sol\\IMulticall3.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1727956088670,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.27":{"path":"MockERC20.sol\\MockERC20.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1727956088670,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.27":{"path":"MockERC721.sol\\MockERC721.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1727956088671,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.27":{"path":"safeconsole.sol\\safeconsole.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/core/BaseAccount.sol":{"lastModificationDate":1727956670143,"contentHash":"72f8c2b16f0bd40a373c86ecc12facb3","sourceName":"lib/light-account/lib/account-abstraction/contracts/core/BaseAccount.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts\\core/Helpers.sol","lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"],"versionRequirement":"^0.8.23","artifacts":{"BaseAccount":{"0.8.27":{"path":"BaseAccount.sol\\BaseAccount.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/core/Helpers.sol":{"lastModificationDate":1727956670144,"contentHash":"d9a3c7fc04ae5f3fc8011d8792e8cb18","sourceName":"lib/light-account/lib/account-abstraction/contracts/core/Helpers.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.23","artifacts":{},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol":{"lastModificationDate":1727956670145,"contentHash":"49e8ce45c96e09cb83ff7d1d2e72e448","sourceName":"lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts\\core/Helpers.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"],"versionRequirement":"^0.8.23","artifacts":{"UserOperationLib":{"0.8.27":{"path":"UserOperationLib.sol\\UserOperationLib.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol":{"lastModificationDate":1727956670146,"contentHash":"1f8a384da0da6354fdd834d63b24dfd4","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"],"versionRequirement":">=0.7.5","artifacts":{"IAccount":{"0.8.27":{"path":"IAccount.sol\\IAccount.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol":{"lastModificationDate":1727956670146,"contentHash":"ea70aa8db36795540523cebf73f66469","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"],"versionRequirement":">=0.7.5","artifacts":{"IAggregator":{"0.8.27":{"path":"IAggregator.sol\\IAggregator.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol":{"lastModificationDate":1727956670147,"contentHash":"d201c25e2806de5038e53c646f93810c","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"],"versionRequirement":">=0.7.5","artifacts":{"IEntryPoint":{"0.8.27":{"path":"IEntryPoint.sol\\IEntryPoint.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol":{"lastModificationDate":1727956670147,"contentHash":"2865a605d4aece6b0d511f573003d167","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.7.5","artifacts":{"INonceManager":{"0.8.27":{"path":"INonceManager.sol\\INonceManager.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol":{"lastModificationDate":1727956670148,"contentHash":"8a37b39cb2b2d53efcd76e8d6af616ff","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.7.5","artifacts":{"IStakeManager":{"0.8.27":{"path":"IStakeManager.sol\\IStakeManager.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol":{"lastModificationDate":1727956670149,"contentHash":"6cdfe05be923cdc6051633ff1614e956","sourceName":"lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.7.5","artifacts":{},"seenByCompiler":true},"lib/light-account/lib/account-abstraction/contracts/samples/callback/TokenCallbackHandler.sol":{"lastModificationDate":1727956670155,"contentHash":"7c2d395a28e99da6bca5756ead9bbf8e","sourceName":"lib/light-account/lib/account-abstraction/contracts/samples/callback/TokenCallbackHandler.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC1155/IERC1155Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC721/IERC721Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.23","artifacts":{"TokenCallbackHandler":{"0.8.27":{"path":"TokenCallbackHandler.sol\\TokenCallbackHandler.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"lastModificationDate":1727956726452,"contentHash":"12a8c0358597a0dc191410b1259e61ee","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1271":{"0.8.27":{"path":"IERC1271.sol\\IERC1271.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"lastModificationDate":1727956726506,"contentHash":"d14616defa6d417fafa47e416e3cec73","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/openzeppelin-contracts\\contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Receiver":{"0.8.27":{"path":"IERC1155Receiver.sol\\IERC1155Receiver.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"lastModificationDate":1727956726517,"contentHash":"fc8a9841f4bdd6329c26a00d5e75f4b3","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC721Receiver":{"0.8.27":{"path":"IERC721Receiver.sol\\IERC721Receiver.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1727956726529,"contentHash":"ba57ff4ddf1d9cae9d2009792795b7f6","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/Strings.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"Strings":{"0.8.27":{"path":"Strings.sol\\Strings.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"lastModificationDate":1727956726530,"contentHash":"b96e0d7a3c2b185342c7d083d765b61f","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"ECDSA":{"0.8.27":{"path":"ECDSA.sol\\ECDSA.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"lastModificationDate":1727956726531,"contentHash":"9e5eec59eaffa554d6cca561dcb914eb","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"],"versionRequirement":"^0.8.20","artifacts":{"MessageHashUtils":{"0.8.27":{"path":"MessageHashUtils.sol\\MessageHashUtils.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol":{"lastModificationDate":1727956726531,"contentHash":"67e1b232791e1ea1cf6475bd4aaed191","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/ECDSA.sol"],"versionRequirement":"^0.8.20","artifacts":{"SignatureChecker":{"0.8.27":{"path":"SignatureChecker.sol\\SignatureChecker.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1727956726533,"contentHash":"de0163561b417b800d01749cbbe2147e","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.27":{"path":"introspection\\IERC165.sol\\IERC165.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1727956726534,"contentHash":"718fa8ba0ff269c92e364c1429d9de57","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.27":{"path":"Math.sol\\Math.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"lastModificationDate":1727956726535,"contentHash":"b6c6bdc7aaca4fe5b680760a72e09d3e","sourceName":"lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SignedMath":{"0.8.27":{"path":"SignedMath.sol\\SignedMath.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/LightAccount.sol":{"lastModificationDate":1727956616524,"contentHash":"32b2fcc29b88411f607670bf114ddc8e","sourceName":"lib/light-account/src/LightAccount.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts\\core/BaseAccount.sol","lib/light-account/lib/account-abstraction/contracts\\core/Helpers.sol","lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol","lib/light-account/lib/account-abstraction/contracts\\samples/callback/TokenCallbackHandler.sol","lib/light-account/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC1155/IERC1155Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC721/IERC721Receiver.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/ECDSA.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/MessageHashUtils.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/SignatureChecker.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/introspection/IERC165.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","lib/light-account/src/common/BaseLightAccount.sol","lib/light-account/src/common/CustomSlotInitializable.sol","lib/light-account/src/common/ERC1271.sol","lib/light-account/src/external/solady/EIP712.sol","lib/light-account/src/external/solady/UUPSUpgradeable.sol"],"versionRequirement":"^0.8.23","artifacts":{"LightAccount":{"0.8.27":{"path":"LightAccount.sol\\LightAccount.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/common/BaseLightAccount.sol":{"lastModificationDate":1727956616525,"contentHash":"10430e8b579896a36ad3e72786325afa","sourceName":"lib/light-account/src/common/BaseLightAccount.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts\\core/BaseAccount.sol","lib/light-account/lib/account-abstraction/contracts\\core/Helpers.sol","lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol","lib/light-account/lib/account-abstraction/contracts\\samples/callback/TokenCallbackHandler.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC1155/IERC1155Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC721/IERC721Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/introspection/IERC165.sol","lib/light-account/src/common/ERC1271.sol","lib/light-account/src/external/solady/EIP712.sol","lib/light-account/src/external/solady/UUPSUpgradeable.sol"],"versionRequirement":"^0.8.23","artifacts":{"BaseLightAccount":{"0.8.27":{"path":"BaseLightAccount.sol\\BaseLightAccount.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/common/CustomSlotInitializable.sol":{"lastModificationDate":1727956616526,"contentHash":"8859a8695544b7172e42909247381af8","sourceName":"lib/light-account/src/common/CustomSlotInitializable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.23","artifacts":{"CustomSlotInitializable":{"0.8.27":{"path":"CustomSlotInitializable.sol\\CustomSlotInitializable.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/common/ERC1271.sol":{"lastModificationDate":1727956616526,"contentHash":"828b969da0a7b81f890268426cb00aae","sourceName":"lib/light-account/src/common/ERC1271.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/src/external/solady/EIP712.sol"],"versionRequirement":"^0.8.23","artifacts":{"ERC1271":{"0.8.27":{"path":"ERC1271.sol\\ERC1271.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/external/solady/EIP712.sol":{"lastModificationDate":1727956616527,"contentHash":"ee0cad211cd123b2053980c48786b9c6","sourceName":"lib/light-account/src/external/solady/EIP712.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.4","artifacts":{"EIP712":{"0.8.27":{"path":"EIP712.sol\\EIP712.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"lib/light-account/src/external/solady/UUPSUpgradeable.sol":{"lastModificationDate":1727956616527,"contentHash":"6b4de3aa02b577c654ec91ca7520798b","sourceName":"lib/light-account/src/external/solady/UUPSUpgradeable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.4","artifacts":{"UUPSUpgradeable":{"0.8.27":{"path":"UUPSUpgradeable.sol\\UUPSUpgradeable.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"script/Counter.s.sol":{"lastModificationDate":1727956079201,"contentHash":"a3f39f45f6d251978d0155b376261aca","sourceName":"script/Counter.s.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src\\Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src\\Counter.sol"],"versionRequirement":"^0.8.13","artifacts":{"CounterScript":{"0.8.27":{"path":"Counter.s.sol\\CounterScript.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"src/BLSLightAccount.sol":{"lastModificationDate":1727957612118,"contentHash":"483dd522f0f19d0c4e688e58974a5352","sourceName":"src/BLSLightAccount.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/light-account/lib/account-abstraction/contracts\\core/BaseAccount.sol","lib/light-account/lib/account-abstraction/contracts\\core/Helpers.sol","lib/light-account/lib/account-abstraction/contracts/core/UserOperationLib.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAccount.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IAggregator.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/INonceManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/IStakeManager.sol","lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol","lib/light-account/lib/account-abstraction/contracts\\samples/callback/TokenCallbackHandler.sol","lib/light-account/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC1155/IERC1155Receiver.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/token/ERC721/IERC721Receiver.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/ECDSA.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/MessageHashUtils.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/cryptography/SignatureChecker.sol","lib/light-account/lib/openzeppelin-contracts\\contracts/utils/introspection/IERC165.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/light-account/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol","lib/light-account/src/LightAccount.sol","lib/light-account/src/common/BaseLightAccount.sol","lib/light-account/src/common/CustomSlotInitializable.sol","lib/light-account/src/common/ERC1271.sol","lib/light-account/src/external/solady/EIP712.sol","lib/light-account/src/external/solady/UUPSUpgradeable.sol"],"versionRequirement":"^0.8.23","artifacts":{"BLSLightAccount":{"0.8.27":{"path":"BLSLightAccount.sol\\BLSLightAccount.json","build_id":"20478e4aeef34e108b7133ff04a3a4fa"}}},"seenByCompiler":true},"src/Counter.sol":{"lastModificationDate":1727956079201,"contentHash":"ae6c800a2b4c57768024d6e9423d39e8","sourceName":"src/Counter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.13","artifacts":{"Counter":{"0.8.27":{"path":"Counter.sol\\Counter.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true},"test/Counter.t.sol":{"lastModificationDate":1727956079201,"contentHash":"9d959b237381565c33e0fda71b690f32","sourceName":"test/Counter.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src\\Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src\\Counter.sol"],"versionRequirement":"^0.8.13","artifacts":{"CounterTest":{"0.8.27":{"path":"Counter.t.sol\\CounterTest.json","build_id":"14a03844074d052d409b885176959fa8"}}},"seenByCompiler":true}},"builds":["14a03844074d052d409b885176959fa8","20478e4aeef34e108b7133ff04a3a4fa"]} \ No newline at end of file diff --git a/src/BLSLightAccount.sol b/src/BLSLightAccount.sol new file mode 100644 index 0000000..7e0e803 --- /dev/null +++ b/src/BLSLightAccount.sol @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.23; + +//the key components of this new BLSLightAccount contract: +// We inherit from LightAccount to maintain all original functionality. +// We introduce a new storage struct BLSAccountStorage to store the BLS public key. +// We override the initialize function to include setting the BLS public key. +// We add a setBlsPublicKey function to allow updating the BLS public key. +// We override the _validateSignature function to handle BLS signatures. +// We introduce a placeholder _validateBLSSignature function that needs to be implemented. + +// TODO: Implement the BLS signature validation logic in _validateBLSSignature. +// Done: Update the SignatureType enum in BaseLightAccount to include the BLS type. +// Possibly integrate with a BLS library for the necessary cryptographic operations. + +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import {LightAccount} from "../lib/light-account/src/LightAccount.sol"; +import {IEntryPoint} from "../lib/light-account/lib/account-abstraction/contracts/interfaces/IEntryPoint.sol"; +import {PackedUserOperation} from "../lib/light-account/lib/account-abstraction/contracts/interfaces/PackedUserOperation.sol"; + +/// @title A LightAccount with added BLS signature support +/// @dev Extends LightAccount to support BLS signatures for user operations +contract BLSLightAccount is LightAccount { + // BLS-specific storage + struct BLSAccountStorage { + bytes32 blsPublicKey; + } + + /// @dev keccak256(abi.encode(uint256(keccak256("bls_light_account_v1.storage")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 private constant _BLS_STORAGE_POSITION = 0x3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e00; + + event BLSPublicKeySet(bytes32 indexed blsPublicKey); + + error InvalidBLSSignature(); + + constructor(IEntryPoint entryPoint_) LightAccount(entryPoint_) {} + + /// @notice Initializes the BLSLightAccount with an owner and a BLS public key + /// @param owner_ The initial owner of the account + /// @param blsPublicKey_ The BLS public key for this account + function initialize(address owner_, bytes32 blsPublicKey_) external initializer { + super._initialize(owner_); + _setBlsPublicKey(blsPublicKey_); + } + + /// @notice Sets or updates the BLS public key for this account + /// @param blsPublicKey_ The new BLS public key + function setBlsPublicKey(bytes32 blsPublicKey_) external onlyAuthorized { + _setBlsPublicKey(blsPublicKey_); + } + + /// @notice Returns the current BLS public key for this account + function blsPublicKey() public view returns (bytes32) { + return _getBLSStorage().blsPublicKey; + } + + /// @dev Overrides the _validateSignature function to support BLS signatures + function _validateSignature(PackedUserOperation calldata userOp, bytes32 userOpHash) + internal + virtual + override + returns (uint256 validationData) + { + // if (userOp.signature.length >= 1) { + // uint8 signatureType = uint8(userOp.signature[0]); + // if (signatureType == uint8(SignatureType.BLS)) { + // // BLS signature validation + // return _validateBLSSignature(userOp, userOpHash); + // } + // } + // If not a BLS signature, fall back to the original validation + return super._validateSignature(userOp, userOpHash); + } + + /// @dev Validates a BLS signature + function _validateBLSSignature(PackedUserOperation calldata userOp, bytes32 userOpHash) + internal + view + returns (uint256) + { + if (userOp.signature.length < 1) { + revert InvalidSignatureType(); + } + uint8 signatureType = uint8(userOp.signature[0]); + if (signatureType == uint8(SignatureType.EOA)) { + // EOA signature + bytes32 signedHash = MessageHashUtils.toEthSignedMessageHash(userOpHash); + bytes memory signature = userOp.signature[1:]; + return _successToValidationData(_isValidEOAOwnerSignature(signedHash, signature)); + } else if (signatureType == uint8(SignatureType.CONTRACT)) { + // Contract signature without address + bytes memory signature = userOp.signature[1:]; + return _successToValidationData(_isValidContractOwnerSignatureNow(userOpHash, signature)); + } + revert InvalidSignatureType(); + } + + function _setBlsPublicKey(bytes32 blsPublicKey_) internal { + _getBLSStorage().blsPublicKey = blsPublicKey_; + emit BLSPublicKeySet(blsPublicKey_); + } + + function _getBLSStorage() internal pure returns (BLSAccountStorage storage blsStorageStruct) { + bytes32 position = _BLS_STORAGE_POSITION; + assembly ("memory-safe") { + blsStorageStruct.slot := position + } + } +} \ No newline at end of file