UNPKG

@owlprotocol/contracts-account-abstraction

Version:

ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.

82 lines (81 loc) 3.22 kB
const SenderCreator = { compiler: { version: "0.8.23+commit.f704f362" }, language: "Solidity", output: { abi: [ { inputs: [ { internalType: "bytes", name: "initCode", type: "bytes" } ], name: "createSender", outputs: [ { internalType: "address", name: "sender", type: "address" } ], stateMutability: "nonpayable", type: "function" } ], devdoc: { kind: "dev", methods: { "createSender(bytes)": { params: { initCode: "- The initCode value from a UserOp. contains 20 bytes of factory address, followed by calldata." }, returns: { sender: " - The returned address of the created account, or zero address on failure." } } }, version: 1 }, userdoc: { kind: "user", methods: { "createSender(bytes)": { notice: 'Call the "initCode" factory to create and return the sender account address.' } }, notice: 'Helper contract for EntryPoint, to call userOp.initCode from a "neutral" address, which is explicitly not the entryPoint itself.', version: 1 } }, settings: { compilationTarget: { "@account-abstraction/contracts/core/SenderCreator.sol": "SenderCreator" }, evmVersion: "paris", libraries: {}, metadata: { bytecodeHash: "ipfs", useLiteralContent: true }, optimizer: { enabled: true, runs: 1e6 }, remappings: [], viaIR: true }, sources: { "@account-abstraction/contracts/core/SenderCreator.sol": { content: '// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.23;\n\n/**\n * Helper contract for EntryPoint, to call userOp.initCode from a "neutral" address,\n * which is explicitly not the entryPoint itself.\n */\ncontract SenderCreator {\n /**\n * Call the "initCode" factory to create and return the sender account address.\n * @param initCode - The initCode value from a UserOp. contains 20 bytes of factory address,\n * followed by calldata.\n * @return sender - The returned address of the created account, or zero address on failure.\n */\n function createSender(\n bytes calldata initCode\n ) external returns (address sender) {\n address factory = address(bytes20(initCode[0:20]));\n bytes memory initCallData = initCode[20:];\n bool success;\n /* solhint-disable no-inline-assembly */\n assembly ("memory-safe") {\n success := call(\n gas(),\n factory,\n 0,\n add(initCallData, 0x20),\n mload(initCallData),\n 0,\n 32\n )\n sender := mload(0)\n }\n if (!success) {\n sender = address(0);\n }\n }\n}\n', keccak256: "0xeb95afb6e4cf921c1ed105ecb9f549ca46bee57f68acd1d2f4f84607ac0db5c5", license: "GPL-3.0" } }, version: 1 }; export { SenderCreator };