Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 81,311 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy New Insta... | 20852313 | 31 mins ago | IN | 0 ETH | 0.0007098 | ||||
Deploy New Insta... | 20851807 | 2 hrs ago | IN | 0 ETH | 0.0006884 | ||||
Deploy New Insta... | 20850496 | 6 hrs ago | IN | 0 ETH | 0.00092178 | ||||
Deploy New Insta... | 20850118 | 7 hrs ago | IN | 0 ETH | 0.00090661 | ||||
Deploy New Insta... | 20849893 | 8 hrs ago | IN | 0 ETH | 0.00107637 | ||||
Deploy New Insta... | 20849549 | 9 hrs ago | IN | 0 ETH | 0.00092843 | ||||
Deploy New Insta... | 20849225 | 10 hrs ago | IN | 0 ETH | 0.0009704 | ||||
Deploy New Insta... | 20849175 | 11 hrs ago | IN | 0 ETH | 0.00106071 | ||||
Deploy New Insta... | 20849160 | 11 hrs ago | IN | 0 ETH | 0.0010929 | ||||
Deploy New Insta... | 20848967 | 11 hrs ago | IN | 0 ETH | 0.00085426 | ||||
Deploy New Insta... | 20848877 | 12 hrs ago | IN | 0 ETH | 0.00087784 | ||||
Deploy New Insta... | 20848837 | 12 hrs ago | IN | 0 ETH | 0.00096141 | ||||
Deploy New Insta... | 20848822 | 12 hrs ago | IN | 0 ETH | 0.00073096 | ||||
Deploy New Insta... | 20848778 | 12 hrs ago | IN | 0 ETH | 0.00083395 | ||||
Deploy New Insta... | 20848777 | 12 hrs ago | IN | 0 ETH | 0.00083395 | ||||
Deploy New Insta... | 20848707 | 12 hrs ago | IN | 0 ETH | 0.00086921 | ||||
Deploy New Insta... | 20848528 | 13 hrs ago | IN | 0 ETH | 0.0009275 | ||||
Deploy New Insta... | 20848398 | 13 hrs ago | IN | 0 ETH | 0.00087 | ||||
Deploy New Insta... | 20848174 | 14 hrs ago | IN | 0 ETH | 0.00124537 | ||||
Deploy New Insta... | 20847745 | 15 hrs ago | IN | 0 ETH | 0.00080059 | ||||
Deploy New Insta... | 20847306 | 17 hrs ago | IN | 0 ETH | 0.00097997 | ||||
Deploy New Insta... | 20847227 | 17 hrs ago | IN | 0 ETH | 0.00086109 | ||||
Deploy New Insta... | 20847142 | 17 hrs ago | IN | 0 ETH | 0.00084736 | ||||
Deploy New Insta... | 20846557 | 19 hrs ago | IN | 0 ETH | 0.00094724 | ||||
Deploy New Insta... | 20846547 | 19 hrs ago | IN | 0 ETH | 0.00091171 |
Latest 25 internal transactions (View All)
Advanced mode:
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:
ProxyFactory
Compiler Version
v0.6.11+commit.5ef660b1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion, Audited
Contract Source Code (Solidity Standard Json-Input format)Audit Report
// SPDX-License-Identifier: MIT pragma solidity 0.6.11; contract ProxyFactory { /// @dev See comment below for explanation of the proxy INIT_CODE bytes private constant INIT_CODE = hex'604080600a3d393df3fe' hex'7300000000000000000000000000000000000000003d36602557' hex'3d3d3d3d34865af1603156' hex'5b363d3d373d3d363d855af4' hex'5b3d82803e603c573d81fd5b3d81f3'; /// @dev The main address that the deployed proxies will forward to. address payable public immutable mainAddress; constructor(address payable addr) public { require(addr != address(0), '0x0 is an invalid address'); mainAddress = addr; } /** * @dev This deploys an extremely minimalist proxy contract with the * mainAddress embedded within. * Note: The bytecode is explained in comments below this contract. * @return dst The new contract address. */ function deployNewInstance(bytes32 salt) external returns (address dst) { // copy init code into memory // and immutable ExchangeDeposit address onto stack bytes memory initCodeMem = INIT_CODE; address payable addrStack = mainAddress; assembly { // Get the position of the start of init code let pos := add(initCodeMem, 0x20) // grab the first 32 bytes let first32 := mload(pos) // shift the address bytes 8 bits left let addrBytesShifted := shl(8, addrStack) // bitwise OR them and add the address into the init code memory mstore(pos, or(first32, addrBytesShifted)) // create the contract dst := create2( 0, // Send no value to the contract pos, // Deploy code starts at pos 74, // Deploy + runtime code is 74 bytes salt // 32 byte salt ) // revert if failed if eq(dst, 0) { revert(0, 0) } } } } /* // PROXY CONTRACT EXPLANATION // DEPLOY CODE (will not be returned by web3.eth.getCode()) // STORE CONTRACT CODE IN MEMORY, THEN RETURN IT POS | OPCODE | OPCODE TEXT | STACK | 00 | 6040 | PUSH1 0x40 | 0x40 | 02 | 80 | DUP1 | 0x40 0x40 | 03 | 600a | PUSH1 0x0a | 0x0a 0x40 0x40 | 05 | 3d | RETURNDATASIZE | 0x0 0x0a 0x40 0x40 | 06 | 39 | CODECOPY | 0x40 | 07 | 3d | RETURNDATASIZE | 0x0 0x40 | 08 | f3 | RETURN | | 09 | fe | INVALID | | // START CONTRACT CODE // Push the ExchangeDeposit address on the stack for DUPing later // Also pushing a 0x0 for DUPing later. (saves runtime AND deploy gas) // Then use the calldata size as the decider for whether to jump or not POS | OPCODE | OPCODE TEXT | STACK | 00 | 73... | PUSH20 ... | {ADDR} | 15 | 3d | RETURNDATASIZE | 0x0 {ADDR} | 16 | 36 | CALLDATASIZE | CDS 0x0 {ADDR} | 17 | 6025 | PUSH1 0x25 | 0x25 CDS 0x0 {ADDR} | 19 | 57 | JUMPI | 0x0 {ADDR} | // If msg.data length === 0, CALL into address // This way, the proxy contract address becomes msg.sender and we can use // msg.sender in the Deposit Event // This also gives us access to our ExchangeDeposit storage (for forwarding address) POS | OPCODE | OPCODE TEXT | STACK | 1A | 3d | RETURNDATASIZE | 0x0 0x0 {ADDR} | 1B | 3d | RETURNDATASIZE | 0x0 0x0 0x0 {ADDR} | 1C | 3d | RETURNDATASIZE | 0x0 0x0 0x0 0x0 {ADDR} | 1D | 3d | RETURNDATASIZE | 0x0 0x0 0x0 0x0 0x0 {ADDR} | 1E | 34 | CALLVALUE | VALUE 0x0 0x0 0x0 0x0 0x0 {ADDR} | 1F | 86 | DUP7 | {ADDR} VALUE 0x0 0x0 0x0 0x0 0x0 {ADDR} | 20 | 5a | GAS | GAS {ADDR} VALUE 0x0 0x0 0x0 0x0 0x0 {ADDR} | 21 | f1 | CALL | {RES} 0x0 {ADDR} | 22 | 6031 | PUSH1 0x31 | 0x31 {RES} 0x0 {ADDR} | 24 | 56 | JUMP | {RES} 0x0 {ADDR} | // If msg.data length > 0, DELEGATECALL into address // This will allow us to call gatherErc20 using the context of the proxy // address itself. POS | OPCODE | OPCODE TEXT | STACK | 25 | 5b | JUMPDEST | 0x0 {ADDR} | 26 | 36 | CALLDATASIZE | CDS 0x0 {ADDR} | 27 | 3d | RETURNDATASIZE | 0x0 CDS 0x0 {ADDR} | 28 | 3d | RETURNDATASIZE | 0x0 0x0 CDS 0x0 {ADDR} | 29 | 37 | CALLDATACOPY | 0x0 {ADDR} | 2A | 3d | RETURNDATASIZE | 0x0 0x0 {ADDR} | 2B | 3d | RETURNDATASIZE | 0x0 0x0 0x0 {ADDR} | 2C | 36 | CALLDATASIZE | CDS 0x0 0x0 0x0 {ADDR} | 2D | 3d | RETURNDATASIZE | 0x0 CDS 0x0 0x0 0x0 {ADDR} | 2E | 85 | DUP6 | {ADDR} 0x0 CDS 0x0 0x0 0x0 {ADDR} | 2F | 5a | GAS | GAS {ADDR} 0x0 CDS 0x0 0x0 0x0 {ADDR} | 30 | f4 | DELEGATECALL | {RES} 0x0 {ADDR} | // We take the result of the call, load in the returndata, // If call result == 0, failure, revert // else success, return POS | OPCODE | OPCODE TEXT | STACK | 31 | 5b | JUMPDEST | {RES} 0x0 {ADDR} | 32 | 3d | RETURNDATASIZE | RDS {RES} 0x0 {ADDR} | 33 | 82 | DUP3 | 0x0 RDS {RES} 0x0 {ADDR} | 34 | 80 | DUP1 | 0x0 0x0 RDS {RES} 0x0 {ADDR} | 35 | 3e | RETURNDATACOPY | {RES} 0x0 {ADDR} | 36 | 603c | PUSH1 0x3c | 0x3c {RES} 0x0 {ADDR} | 38 | 57 | JUMPI | 0x0 {ADDR} | 39 | 3d | RETURNDATASIZE | RDS 0x0 {ADDR} | 3A | 81 | DUP2 | 0x0 RDS 0x0 {ADDR} | 3B | fd | REVERT | 0x0 {ADDR} | 3C | 5b | JUMPDEST | 0x0 {ADDR} | 3D | 3d | RETURNDATASIZE | RDS 0x0 {ADDR} | 3E | 81 | DUP2 | 0x0 RDS 0x0 {ADDR} | 3F | f3 | RETURN | 0x0 {ADDR} | */
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- Consensys - November 13th, 2020 - Security Audit Report
[{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"deployNewInstance","outputs":[{"internalType":"address","name":"dst","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mainAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516102513803806102518339818101604052602081101561003357600080fd5b50516001600160a01b038116610090576040805162461bcd60e51b815260206004820152601960248201527f30783020697320616e20696e76616c6964206164647265737300000000000000604482015290519081900360640190fd5b606081901b6001600160601b0319166080526001600160a01b031661018c6100c560003980607e528060c5525061018c6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630cdd42341461003b578063d508e6231461005f575b600080fd5b61004361007c565b604080516001600160a01b039092168252519081900360200190f35b6100436004803603602081101561007557600080fd5b50356100a0565b7f000000000000000000000000000000000000000000000000000000000000000081565b600060606040518060800160405280604a815260200161010d604a91396020810180517f0000000000000000000000000000000000000000000000000000000000000000600881901b909117825291925084604a826000f59350508261010557600080fd5b505091905056fe604080600a3d393df3fe7300000000000000000000000000000000000000003d366025573d3d3d3d34865af16031565b363d3d373d3d363d855af45b3d82803e603c573d81fd5b3d81f3a2646970667358221220461a41af528ee3f9d62d7ce59d78ed1b49049d7b1ae8257c4de2469de42759bc64736f6c634300060b0033000000000000000000000000265c27c849b0e1a62636f6007e8a74dc2a2584aa
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c80630cdd42341461003b578063d508e6231461005f575b600080fd5b61004361007c565b604080516001600160a01b039092168252519081900360200190f35b6100436004803603602081101561007557600080fd5b50356100a0565b7f000000000000000000000000265c27c849b0e1a62636f6007e8a74dc2a2584aa81565b600060606040518060800160405280604a815260200161010d604a91396020810180517f000000000000000000000000265c27c849b0e1a62636f6007e8a74dc2a2584aa600881901b909117825291925084604a826000f59350508261010557600080fd5b505091905056fe604080600a3d393df3fe7300000000000000000000000000000000000000003d366025573d3d3d3d34865af16031565b363d3d373d3d363d855af45b3d82803e603c573d81fd5b3d81f3a2646970667358221220461a41af528ee3f9d62d7ce59d78ed1b49049d7b1ae8257c4de2469de42759bc64736f6c634300060b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000265c27c849b0e1a62636f6007e8a74dc2a2584aa
-----Decoded View---------------
Arg [0] : addr (address): 0x265c27C849B0E1a62636f6007e8a74dC2a2584Aa
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000265c27c849b0e1a62636f6007e8a74dc2a2584aa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.