Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 2 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
22523229 | 64 days ago | Contract Creation | 0 ETH | |||
22522021 | 64 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
FactoryClones
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at sepolia-optimism.etherscan.io on 2025-01-14 */ // File: @openzeppelin/contracts/proxy/Clones.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. * * _Available since v3.4._ */ library Clones { /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, which should never revert. */ function clone(address implementation) internal returns (address instance) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create(0, ptr, 0x37) } require(instance != address(0), "ERC1167: create failed"); } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create2(0, ptr, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) mstore(add(ptr, 0x38), shl(0x60, deployer)) mstore(add(ptr, 0x4c), salt) mstore(add(ptr, 0x6c), keccak256(ptr, 0x37)) predicted := keccak256(add(ptr, 0x37), 0x55) } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress(address implementation, bytes32 salt) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } } // File: contracts/FactoryClones.sol pragma solidity 0.8.4; contract FactoryClones { using Clones for address; function cloneDeterministic(address implementation, bytes32 salt) external returns (address) { return implementation.cloneDeterministic(salt); } function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) external pure returns (address){ return implementation.predictDeterministicAddress(salt, deployer); } function predictDeterministicAddress( address implementation, bytes32 salt ) external view returns (address){ return implementation.predictDeterministicAddress(salt); } }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"cloneDeterministic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictDeterministicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"name":"predictDeterministicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506102fb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063360d0fad1461004657806393a7e71114610075578063b86b2ceb14610088575b600080fd5b610059610054366004610261565b61009b565b6040516001600160a01b03909116815260200160405180910390f35b61005961008336600461028a565b61011a565b610059610096366004610261565b610191565b60006101116001600160a01b038416836000610111838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b90505b92915050565b60006101896001600160a01b0385168484604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b949350505050565b60006101116001600160a01b038416836000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166101145760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b80356001600160a01b038116811461025c57600080fd5b919050565b60008060408385031215610273578182fd5b61027c83610245565b946020939093013593505050565b60008060006060848603121561029e578081fd5b6102a784610245565b9250602084013591506102bc60408501610245565b9050925092509256fea2646970667358221220181ad8b3ede910e1372d63ce0c23d431466a308d907d164bc34288c7477dec2b64736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063360d0fad1461004657806393a7e71114610075578063b86b2ceb14610088575b600080fd5b610059610054366004610261565b61009b565b6040516001600160a01b03909116815260200160405180910390f35b61005961008336600461028a565b61011a565b610059610096366004610261565b610191565b60006101116001600160a01b038416836000610111838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b90505b92915050565b60006101896001600160a01b0385168484604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b949350505050565b60006101116001600160a01b038416836000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166101145760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b80356001600160a01b038116811461025c57600080fd5b919050565b60008060408385031215610273578182fd5b61027c83610245565b946020939093013593505050565b60008060006060848603121561029e578081fd5b6102a784610245565b9250602084013591506102bc60408501610245565b9050925092509256fea2646970667358221220181ad8b3ede910e1372d63ce0c23d431466a308d907d164bc34288c7477dec2b64736f6c63430008040033
Deployed Bytecode Sourcemap
3710:687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4189:205;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;968:32:1;;;950:51;;938:2;923:18;4189:205:0;;;;;;;3939:242;;;;;;:::i;:::-;;:::i;3773:158::-;;;;;;:::i;:::-;;:::i;4189:205::-;4312:7;4338:48;-1:-1:-1;;;;;4338:42:0;;4381:4;3523:17;3565:64;3593:14;3609:4;3623;2785;2779:11;-1:-1:-1;;;2804:79:0;;2924:4;2920:25;;;2913:4;2904:14;;2897:49;-1:-1:-1;;;2976:4:0;2967:14;;2960:90;3087:19;;3080:4;3071:14;;3064:43;3137:4;3128:14;;3121:28;3201:4;3186:20;;;3179:4;3170:14;;3163:44;3260:4;3244:14;;3234:31;;2753:523;4338:48;4331:55;;4189:205;;;;;:::o;3939:242::-;4089:7;4115:58;-1:-1:-1;;;;;4115:42:0;;4158:4;4164:8;2785:4;2779:11;-1:-1:-1;;;2804:79:0;;2924:4;2920:25;;;2913:4;2904:14;;2897:49;-1:-1:-1;;;2976:4:0;2967:14;;2960:90;3087:19;;3080:4;3071:14;;3064:43;3137:4;3128:14;;3121:28;3201:4;3186:20;;;3179:4;3170:14;;3163:44;3260:4;3244:14;;3234:31;;2753:523;4115:58;4108:65;3939:242;-1:-1:-1;;;;3939:242:0:o;3773:158::-;3857:7;3884:39;-1:-1:-1;;;;;3884:33:0;;3918:4;1974:16;2044:4;2038:11;-1:-1:-1;;;2070:3:0;2063:79;2189:14;2183:4;2179:25;2172:4;2167:3;2163:14;2156:49;-1:-1:-1;;;2235:4:0;2230:3;2226:14;2219:90;2357:4;2351;2346:3;2343:1;2335:27;2323:39;-1:-1:-1;;;;;;;2391:22:0;;2383:58;;;;-1:-1:-1;;;2383:58:0;;1214:2:1;2383:58:0;;;1196:21:1;1253:2;1233:18;;;1226:30;1292:25;1272:18;;;1265:53;1335:18;;2383:58:0;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:264::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:2;;;342:6;334;327:22;289:2;370:29;389:9;370:29;:::i;:::-;360:39;446:2;431:18;;;;418:32;;-1:-1:-1;;;279:177:1:o;461:338::-;538:6;546;554;607:2;595:9;586:7;582:23;578:32;575:2;;;628:6;620;613:22;575:2;656:29;675:9;656:29;:::i;:::-;646:39;;732:2;721:9;717:18;704:32;694:42;;755:38;789:2;778:9;774:18;755:38;:::i;:::-;745:48;;565:234;;;;;:::o
Swarm Source
ipfs://181ad8b3ede910e1372d63ce0c23d431466a308d907d164bc34288c7477dec2b
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.