false
false

Contract Address Details

0xDe312a6f7fA35320E8DD109c8ea42e82806DC45b

Contract Name
Create2Factory
Creator
0x73f1ba–3889e7 at 0xbafbd2–20cdeb
Balance
0 KCS ( )
Tokens
Fetching tokens...
Transactions
5 Transactions
Transfers
0 Transfers
Gas Used
2,783,110
Last Balance Update
44206875
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Create2Factory




Optimization enabled
true
Compiler version
v0.8.17+commit.8df45f5f




Optimization runs
200
EVM Version
london




Verified at
2023-08-01T09:30:10.708741Z

/contracts/patterns/Create2Factory.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

/// @title Based on Singleton Factory (EIP-2470), authored by Guilherme Schmidt (Status Research & Development GmbH)
/// @notice Exposes CREATE2 (EIP-1014) to deploy bytecode on deterministic addresses based on initialization code and salt.

contract Create2Factory {

    /// @notice Deploys `_initCode` using `_salt` for defining the deterministic address.
    /// @param _initCode Initialization code.
    /// @param _salt Arbitrary value to modify resulting address.
    /// @return createdContract Created contract address.
    function deploy(bytes memory _initCode, bytes32 _salt)
        public
        returns (address payable createdContract)
    {
        assembly {
            createdContract := create2(0, add(_initCode, 0x20), mload(_initCode), _salt)
        }
    }

    /// @notice Determine singleton contract address that might be created from this factory, given its `_initCode` and a `_salt`.
    /// @param _initCode Initialization code.
    /// @param _salt Arbitrary value to modify resulting address.
    /// @return expectedAddr Expected contract address.
    function determineAddr(bytes memory _initCode, bytes32 _salt)
        public
        view
        returns (address)
    {
        return address(
            uint160(uint(keccak256(
                abi.encodePacked(
                    bytes1(0xff),
                    address(this),
                    _salt,
                    keccak256(_initCode)
                )
            )))
        );
    }

}
        

Compiler Settings

{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers"]}},"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"london"}
              

Contract ABI

[{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"createdContract","internalType":"address payable"}],"name":"deploy","inputs":[{"type":"bytes","name":"_initCode","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"determineAddr","inputs":[{"type":"bytes","name":"_initCode","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"}]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b506101e8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634af63f021461003b578063d3933c291461006a575b600080fd5b61004e6100493660046100fd565b6100d4565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046100fd565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6000818351602085016000f59392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561011057600080fd5b823567ffffffffffffffff8082111561012857600080fd5b818501915085601f83011261013c57600080fd5b81358181111561014e5761014e6100e7565b604051601f8201601f19908116603f01168101908382118183101715610176576101766100e7565b8160405282815288602084870101111561018f57600080fd5b82602086016020830137600060209382018401529896909101359650505050505056fea2646970667358221220edfbe1be27e3eea3caaaae26d5d9e5b895a5f34558ed1efa4a8c100d6643aca064736f6c63430008110033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634af63f021461003b578063d3933c291461006a575b600080fd5b61004e6100493660046100fd565b6100d4565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046100fd565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6000818351602085016000f59392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561011057600080fd5b823567ffffffffffffffff8082111561012857600080fd5b818501915085601f83011261013c57600080fd5b81358181111561014e5761014e6100e7565b604051601f8201601f19908116603f01168101908382118183101715610176576101766100e7565b8160405282815288602084870101111561018f57600080fd5b82602086016020830137600060209382018401529896909101359650505050505056fea2646970667358221220edfbe1be27e3eea3caaaae26d5d9e5b895a5f34558ed1efa4a8c100d6643aca064736f6c63430008110033