Overview
APE Balance
0 APE
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy Clone | 7967791 | 23 days ago | IN | 0 APE | 0.0086925 |
Latest 2 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7967791 | 23 days ago | Contract Creation | 0 APE | |||
7844635 | 25 days ago | Contract Creation | 0 APE |
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 Source Code Verified (Exact Match)
Contract Name:
Factory
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-01-10 */ // SPDX-License-Identifier: MIT pragma solidity <0.9.0 >=0.8.4; // src/Factory.sol contract Factory { address[] public proxies; function deployClone(address implementationContract_, bytes calldata deploymentData_) external returns (address) { // convert the address to 20 bytes bytes20 implementationContractInBytes = bytes20(implementationContract_); //address to assign a cloned proxy address proxy; // as stated earlier, the minimal proxy has this bytecode // <3d602d80600a3d3981f3363d3d373d3d3d363d73><address of implementation contract><5af43d82803e903d91602b57fd5bf3> // <3d602d80600a3d3981f3> == creation code which copies runtime code into memory and deploys it // <363d3d373d3d3d363d73> <address of implementation contract> <5af43d82803e903d91602b57fd5bf3> == runtime code that makes a delegatecall to the implentation contract assembly { /* reads the 32 bytes of memory starting at the pointer stored in 0x40 In solidity, the 0x40 slot in memory is special: it contains the "free memory pointer" which points to the end of the currently allocated memory. */ let clone := mload(0x40) // store 32 bytes to memory starting at "clone" mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) /* | 20 bytes | 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 ^ pointer */ // store 32 bytes to memory starting at "clone" + 20 bytes // 0x14 = 20 mstore(add(clone, 0x14), implementationContractInBytes) /* | 20 bytes | 20 bytes | 0x3d602d80600a3d3981f3363d3d373d3d3d363d73bebebebebebebebebebebebebebebebebebebebe ^ pointer */ // store 32 bytes to memory starting at "clone" + 40 bytes // 0x28 = 40 mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) /* | 20 bytes | 20 bytes | 15 bytes | 0x3d602d80600a3d3981f3363d3d373d3d3d363d73b<implementationContractInBytes>5af43d82803e903d91602b57fd5bf3 == 45 bytes in total */ // create a new contract // send 0 Ether // code starts at the pointer stored in "clone" // code size == 0x37 (55 bytes) proxy := create(0, clone, 0x37) // Call initialization // Get the size of deploymentData_ // revert if call reverts // The following list explains what the arguments are to the `staticcall` function below // first, we use staticcall to ensure read-only behavior // gas() : forward all gas // proxy : contract we are calling // 0x00 : no ether is sent with the call // deploymentData_ : our calldata start location // deploymentDataSize : make sure we send all the calldata // 0x00 : where the return data starts in memory // 0x20 : the offset of where the return data ends in memory calldatacopy(mload(0x40), deploymentData_.offset, deploymentData_.length) if iszero(call(gas(), proxy, 0x00, mload(0x40), deploymentData_.length, 0x00, 0x20)) { returndatacopy(0x00, 0x00, returndatasize()) revert(0x00, returndatasize()) } } proxies.push(proxy); return proxy; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"implementationContract_","type":"address"},{"internalType":"bytes","name":"deploymentData_","type":"bytes"}],"name":"deployClone","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proxies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506102ab806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063abd90f851461003b578063b6d3ef3714610077575b600080fd5b61004e6100493660046101be565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046101d7565b6100c1565b6000818154811061009a57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000808460601b905060006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505083856040513760206000856040516000855af1610148573d6000803e3d6000fd5b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905595945050505050565b6000602082840312156101d057600080fd5b5035919050565b6000806000604084860312156101ec57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461021057600080fd5b9250602084013567ffffffffffffffff8082111561022d57600080fd5b818601915086601f83011261024157600080fd5b81358181111561025057600080fd5b87602082850101111561026257600080fd5b602083019450809350505050925092509256fea264697066735822122055534a50bd0c95ba17a8d2660116d520d214072fa3e04d3c0dadf9438e491fd664736f6c63430008180033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063abd90f851461003b578063b6d3ef3714610077575b600080fd5b61004e6100493660046101be565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046101d7565b6100c1565b6000818154811061009a57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000808460601b905060006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505083856040513760206000856040516000855af1610148573d6000803e3d6000fd5b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905595945050505050565b6000602082840312156101d057600080fd5b5035919050565b6000806000604084860312156101ec57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461021057600080fd5b9250602084013567ffffffffffffffff8082111561022d57600080fd5b818601915086601f83011261024157600080fd5b81358181111561025057600080fd5b87602082850101111561026257600080fd5b602083019450809350505050925092509256fea264697066735822122055534a50bd0c95ba17a8d2660116d520d214072fa3e04d3c0dadf9438e491fd664736f6c63430008180033
Deployed Bytecode Sourcemap
90:3618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;112:24;;;;;;:::i;:::-;;:::i;:::-;;;375:42:1;363:55;;;345:74;;333:2;318:18;112:24:0;;;;;;;143:3562;;;;;;:::i;:::-;;:::i;112:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;112:24:0;:::o;143:3562::-;247:7;303:37;351:23;343:32;;303:72;;422:13;1197:4;1191:11;1279:66;1272:5;1265:81;1679:29;1672:4;1665:5;1661:16;1654:55;2138:66;2131:4;2124:5;2120:16;2113:92;2657:4;2650:5;2647:1;2640:22;2631:31;;;3428:22;3404;3397:4;3391:11;3378:73;3537:4;3531;3507:22;3500:4;3494:11;3488:4;3481:5;3474;3469:73;3459:189;;3582:16;3576:4;3570;3555:44;3622:16;3616:4;3609:30;3459:189;3661:7;:19;;;;;;;;;;;;;;;;;;;;;;;143:3562;-1:-1:-1;;;;;143:3562:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;430:788::-;509:6;517;525;578:2;566:9;557:7;553:23;549:32;546:52;;;594:1;591;584:12;546:52;633:9;620:23;683:42;676:5;672:54;665:5;662:65;652:93;;741:1;738;731:12;652:93;764:5;-1:-1:-1;820:2:1;805:18;;792:32;843:18;873:14;;;870:34;;;900:1;897;890:12;870:34;938:6;927:9;923:22;913:32;;983:7;976:4;972:2;968:13;964:27;954:55;;1005:1;1002;995:12;954:55;1045:2;1032:16;1071:2;1063:6;1060:14;1057:34;;;1087:1;1084;1077:12;1057:34;1132:7;1127:2;1118:6;1114:2;1110:15;1106:24;1103:37;1100:57;;;1153:1;1150;1143:12;1100:57;1184:2;1180;1176:11;1166:21;;1206:6;1196:16;;;;;430:788;;;;;:::o
Swarm Source
ipfs://55534a50bd0c95ba17a8d2660116d520d214072fa3e04d3c0dadf9438e491fd6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.