ETH Price: $2,022.37 (+0.39%)

Contract

0x48E516B34A1274f49457b9C6182097796D0498Cb
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy216883292025-01-23 16:16:47412 days ago1737649007IN
0x48E516B3...96D0498Cb
0 ETH0.1170017522.23714841
Update Best Addr...213383452024-12-05 19:20:59461 days ago1733426459IN
0x48E516B3...96D0498Cb
0 ETH0.0005450924.85141579
Update Best Addr...213122102024-12-02 3:41:59465 days ago1733110919IN
0x48E516B3...96D0498Cb
0 ETH0.0009752614.3457306
Update Best Addr...213026822024-11-30 19:48:47466 days ago1732996127IN
0x48E516B3...96D0498Cb
0 ETH0.0024000550
Update Best Addr...213026382024-11-30 19:39:59466 days ago1732995599IN
0x48E516B3...96D0498Cb
0 ETH0.0009338914.2
Update Best Addr...213021462024-11-30 18:01:11466 days ago1732989671IN
0x48E516B3...96D0498Cb
0 ETH0.0010105315.19439646
Update Best Addr...213021412024-11-30 18:00:11466 days ago1732989611IN
0x48E516B3...96D0498Cb
0 ETH0.0009495414.27744203
Deploy213021232024-11-30 17:56:35466 days ago1732989395IN
0x48E516B3...96D0498Cb
0 ETH0.0003558615.9445551
Update Best Addr...212990842024-11-30 7:44:35466 days ago1732952675IN
0x48E516B3...96D0498Cb
0 ETH0.000403236.09309244
Update Best Addr...212953862024-11-29 19:18:59467 days ago1732907939IN
0x48E516B3...96D0498Cb
0 ETH0.0009117314.15101852
Update Best Addr...212917512024-11-29 7:05:47467 days ago1732863947IN
0x48E516B3...96D0498Cb
0 ETH0.000479917.19854141
Update Best Addr...212917352024-11-29 7:02:35467 days ago1732863755IN
0x48E516B3...96D0498Cb
0 ETH0.000470847.0796047
Update Best Addr...212916602024-11-29 6:47:35467 days ago1732862855IN
0x48E516B3...96D0498Cb
0 ETH0.00032765.46010561
Update Best Addr...212881442024-11-28 18:59:59468 days ago1732820399IN
0x48E516B3...96D0498Cb
0 ETH0.0009177813.40357947
Update Best Addr...212810812024-11-27 19:09:59469 days ago1732734599IN
0x48E516B3...96D0498Cb
0 ETH0.001562224.1206943
Update Best Addr...212807572024-11-27 18:04:59469 days ago1732730699IN
0x48E516B3...96D0498Cb
0 ETH0.001303320
Update Best Addr...212672352024-11-25 20:44:59471 days ago1732567499IN
0x48E516B3...96D0498Cb
0 ETH0.000717715
Update Best Addr...212670712024-11-25 20:11:47471 days ago1732565507IN
0x48E516B3...96D0498Cb
0 ETH0.0003289815
Update Best Addr...212584192024-11-24 15:12:11472 days ago1732461131IN
0x48E516B3...96D0498Cb
0 ETH0.0005538.56764286
Update Best Addr...212561952024-11-24 7:44:35472 days ago1732434275IN
0x48E516B3...96D0498Cb
0 ETH0.000581458.71060295
Update Best Addr...212558882024-11-24 6:42:59472 days ago1732430579IN
0x48E516B3...96D0498Cb
0 ETH0.000526168.76935577
Update Best Addr...212558712024-11-24 6:39:35472 days ago1732430375IN
0x48E516B3...96D0498Cb
0 ETH0.000353657.85893418
Update Best Addr...212558622024-11-24 6:37:47472 days ago1732430267IN
0x48E516B3...96D0498Cb
0 ETH0.000199667.98677143
Update Best Addr...212524402024-11-23 19:10:23473 days ago1732389023IN
0x48E516B3...96D0498Cb
0 ETH0.0013177420
Update Best Addr...212524072024-11-23 19:03:35473 days ago1732388615IN
0x48E516B3...96D0498Cb
0 ETH0.0009533420
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60a03460216883292025-01-23 16:16:47412 days ago1737649007
0x48E516B3...96D0498Cb
 Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV4DeployerCompetition

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 44444444 runs

Other Settings:
cancun EvmVersion
// SPADIX-License-Identifier: UNLICENSED
pragma solidity 0.8.26;

import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
import {VanityAddressLib} from "./libraries/VanityAddressLib.sol";
import {IUniswapV4DeployerCompetition} from "./interfaces/IUniswapV4DeployerCompetition.sol";

/// @title UniswapV4DeployerCompetition
/// @notice A contract to crowdsource a salt for the best Uniswap V4 address
contract UniswapV4DeployerCompetition is IUniswapV4DeployerCompetition {
    using VanityAddressLib for address;

    /// @dev The salt for the best address found so far
    bytes32 public bestAddressSalt;
    /// @dev The submitter of the best address found so far
    address public bestAddressSubmitter;

    /// @dev The deadline for the competition
    uint256 public immutable competitionDeadline;
    /// @dev The init code hash of the V4 contract
    bytes32 public immutable initCodeHash;

    /// @dev The deployer who can initiate the deployment of the v4 PoolManager, until the exclusive deploy deadline.
    /// @dev After this deadline anyone can deploy.
    address public immutable deployer;
    /// @dev The deadline for exclusive deployment by deployer after deadline
    uint256 public immutable exclusiveDeployDeadline;

    constructor(
        bytes32 _initCodeHash,
        uint256 _competitionDeadline,
        address _exclusiveDeployer,
        uint256 _exclusiveDeployLength
    ) {
        initCodeHash = _initCodeHash;
        competitionDeadline = _competitionDeadline;
        exclusiveDeployDeadline = _competitionDeadline + _exclusiveDeployLength;
        deployer = _exclusiveDeployer;
    }

    /// @inheritdoc IUniswapV4DeployerCompetition
    function updateBestAddress(bytes32 salt) external {
        if (block.timestamp > competitionDeadline) {
            revert CompetitionOver(block.timestamp, competitionDeadline);
        }

        address saltSubAddress = address(bytes20(salt));
        if (saltSubAddress != msg.sender && saltSubAddress != address(0)) revert InvalidSender(salt, msg.sender);

        address newAddress = Create2.computeAddress(salt, initCodeHash);
        address _bestAddress = bestAddress();
        if (!newAddress.betterThan(_bestAddress)) {
            revert WorseAddress(newAddress, _bestAddress, newAddress.score(), _bestAddress.score());
        }

        bestAddressSalt = salt;
        bestAddressSubmitter = msg.sender;

        emit NewAddressFound(newAddress, msg.sender, newAddress.score());
    }

    /// @inheritdoc IUniswapV4DeployerCompetition
    function deploy(bytes memory bytecode) external {
        if (keccak256(bytecode) != initCodeHash) {
            revert InvalidBytecode();
        }

        if (block.timestamp <= competitionDeadline) {
            revert CompetitionNotOver(block.timestamp, competitionDeadline);
        }

        if (msg.sender != deployer && block.timestamp <= exclusiveDeployDeadline) {
            // anyone can deploy after the deadline
            revert NotAllowedToDeploy(msg.sender, deployer);
        }

        // the owner of the contract must be encoded in the bytecode
        Create2.deploy(0, bestAddressSalt, bytecode);
    }

    /// @dev returns the best address found so far
    function bestAddress() public view returns (address) {
        return Create2.computeAddress(bestAddressSalt, initCodeHash);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Create2.sol)

pragma solidity ^0.8.20;

/**
 * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.
 * `CREATE2` can be used to compute in advance the address where a smart
 * contract will be deployed, which allows for interesting new mechanisms known
 * as 'counterfactual interactions'.
 *
 * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more
 * information.
 */
library Create2 {
    /**
     * @dev Not enough balance for performing a CREATE2 deploy.
     */
    error Create2InsufficientBalance(uint256 balance, uint256 needed);

    /**
     * @dev There's no code to deploy.
     */
    error Create2EmptyBytecode();

    /**
     * @dev The deployment failed.
     */
    error Create2FailedDeployment();

    /**
     * @dev Deploys a contract using `CREATE2`. The address where the contract
     * will be deployed can be known in advance via {computeAddress}.
     *
     * The bytecode for a contract can be obtained from Solidity with
     * `type(contractName).creationCode`.
     *
     * Requirements:
     *
     * - `bytecode` must not be empty.
     * - `salt` must have not been used for `bytecode` already.
     * - the factory must have a balance of at least `amount`.
     * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.
     */
    function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {
        if (address(this).balance < amount) {
            revert Create2InsufficientBalance(address(this).balance, amount);
        }
        if (bytecode.length == 0) {
            revert Create2EmptyBytecode();
        }
        /// @solidity memory-safe-assembly
        assembly {
            addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)
        }
        if (addr == address(0)) {
            revert Create2FailedDeployment();
        }
    }

    /**
     * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the
     * `bytecodeHash` or `salt` will result in a new destination address.
     */
    function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {
        return computeAddress(salt, bytecodeHash, address(this));
    }

    /**
     * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at
     * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.
     */
    function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40) // Get free memory pointer

            // |                   | ↓ ptr ...  ↓ ptr + 0x0B (start) ...  ↓ ptr + 0x20 ...  ↓ ptr + 0x40 ...   |
            // |-------------------|---------------------------------------------------------------------------|
            // | bytecodeHash      |                                                        CCCCCCCCCCCCC...CC |
            // | salt              |                                      BBBBBBBBBBBBB...BB                   |
            // | deployer          | 000000...0000AAAAAAAAAAAAAAAAAAA...AA                                     |
            // | 0xFF              |            FF                                                             |
            // |-------------------|---------------------------------------------------------------------------|
            // | memory            | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |
            // | keccak(start, 85) |            ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |

            mstore(add(ptr, 0x40), bytecodeHash)
            mstore(add(ptr, 0x20), salt)
            mstore(ptr, deployer) // Right-aligned with 12 preceding garbage bytes
            let start := add(ptr, 0x0b) // The hashed data starts at the final garbage byte which we will set to 0xff
            mstore8(start, 0xff)
            addr := keccak256(start, 85)
        }
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

/// @title VanityAddressLib
/// @notice A library to score addresses based on their vanity
library VanityAddressLib {
    /// @notice Compares two addresses and returns true if the first address has a better vanity score
    /// @param first The first address to compare
    /// @param second The second address to compare
    /// @return better True if the first address has a better vanity score
    function betterThan(address first, address second) internal pure returns (bool better) {
        return score(first) > score(second);
    }

    /// @notice Scores an address based on its vanity
    /// @dev Scoring rules:
    ///    Requirement: The first nonzero nibble must be 4
    ///    10 points for every leading 0 nibble
    ///    40 points if the first 4 is followed by 3 more 4s
    ///    20 points if the first nibble after the 4 4s is NOT a 4
    ///    20 points if the last 4 nibbles are 4s
    ///    1 point for every 4
    /// @param addr The address to score
    /// @return calculatedScore The vanity score of the address
    function score(address addr) internal pure returns (uint256 calculatedScore) {
        // convert the address to bytes for easier parsing
        bytes20 addrBytes = bytes20(addr);

        unchecked {
            // 10 points per leading zero nibble
            uint256 leadingZeroCount = getLeadingNibbleCount(addrBytes, 0, 0);
            calculatedScore += (leadingZeroCount * 10);

            // special handling for 4s immediately after leading 0s
            uint256 leadingFourCount = getLeadingNibbleCount(addrBytes, leadingZeroCount, 4);
            // If the first nonzero nibble is not 4, return 0
            if (leadingFourCount == 0) {
                return 0;
            } else if (leadingFourCount == 4) {
                // 60 points if exactly 4 4s
                calculatedScore += 60;
            } else if (leadingFourCount > 4) {
                // 40 points if more than 4 4s
                calculatedScore += 40;
            }

            // handling for remaining nibbles
            for (uint256 i = 0; i < addrBytes.length * 2; i++) {
                uint8 currentNibble = getNibble(addrBytes, i);

                // 1 extra point for any 4 nibbles
                if (currentNibble == 4) {
                    calculatedScore += 1;
                }
            }

            // If the last 4 nibbles are 4s, add 20 points
            if (addrBytes[18] == 0x44 && addrBytes[19] == 0x44) {
                calculatedScore += 20;
            }
        }
    }

    /// @notice Returns the number of leading nibbles in an address that match a given value
    /// @param addrBytes The address to count the leading zero nibbles in
    function getLeadingNibbleCount(bytes20 addrBytes, uint256 startIndex, uint8 comparison)
        internal
        pure
        returns (uint256 count)
    {
        if (startIndex >= addrBytes.length * 2) {
            return count;
        }

        for (uint256 i = startIndex; i < addrBytes.length * 2; i++) {
            uint8 currentNibble = getNibble(addrBytes, i);
            if (currentNibble != comparison) {
                return count;
            }
            count += 1;
        }
    }

    /// @notice Returns the nibble at a given index in an address
    /// @param input The address to get the nibble from
    /// @param nibbleIndex The index of the nibble to get
    function getNibble(bytes20 input, uint256 nibbleIndex) internal pure returns (uint8 currentNibble) {
        uint8 currByte = uint8(input[nibbleIndex / 2]);
        if (nibbleIndex % 2 == 0) {
            // Get the higher nibble of the byte
            currentNibble = currByte >> 4;
        } else {
            // Get the lower nibble of the byte
            currentNibble = currByte & 0x0F;
        }
    }
}

// SPADIX-License-Identifier: UNLICENSED
pragma solidity 0.8.26;

/// @title UniswapV4DeployerCompetition
/// @notice A competition to deploy the UniswapV4 contract with the best address
interface IUniswapV4DeployerCompetition {
    event NewAddressFound(address indexed bestAddress, address indexed submitter, uint256 score);

    error InvalidBytecode();
    error CompetitionNotOver(uint256 currentTime, uint256 deadline);
    error CompetitionOver(uint256 currentTime, uint256 deadline);
    error NotAllowedToDeploy(address sender, address deployer);
    error WorseAddress(address newAddress, address bestAddress, uint256 newScore, uint256 bestScore);
    error InvalidSender(bytes32 salt, address sender);

    /// @notice Updates the best address if the new address has a better vanity score
    /// @param salt The salt to use to compute the new address with CREATE2
    /// @dev The first 20 bytes of the salt must be either address(0) or msg.sender
    function updateBestAddress(bytes32 salt) external;

    /// @notice deploys the Uniswap v4 PoolManager contract
    /// @param bytecode The bytecode of the Uniswap v4 PoolManager contract
    /// @dev The bytecode must match the initCodeHash
    function deploy(bytes memory bytecode) external;
}

Settings
{
  "remappings": [
    "@uniswap/v4-core/=lib/v4-core/",
    "forge-gas-snapshot/=lib/forge-gas-snapshot/src/",
    "ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/v4-core/lib/forge-std/src/",
    "openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/",
    "solmate/=lib/v4-core/lib/solmate/",
    "@ensdomains/=lib/v4-core/node_modules/@ensdomains/",
    "@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/",
    "@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/",
    "erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/",
    "hardhat/=lib/v4-core/node_modules/hardhat/",
    "permit2/=lib/permit2/",
    "v4-core/=lib/v4-core/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 44444444
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "none",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"bytes32","name":"_initCodeHash","type":"bytes32"},{"internalType":"uint256","name":"_competitionDeadline","type":"uint256"},{"internalType":"address","name":"_exclusiveDeployer","type":"address"},{"internalType":"uint256","name":"_exclusiveDeployLength","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"CompetitionNotOver","type":"error"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"CompetitionOver","type":"error"},{"inputs":[],"name":"Create2EmptyBytecode","type":"error"},{"inputs":[],"name":"Create2FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"Create2InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidBytecode","type":"error"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"}],"name":"InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"deployer","type":"address"}],"name":"NotAllowedToDeploy","type":"error"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address","name":"bestAddress","type":"address"},{"internalType":"uint256","name":"newScore","type":"uint256"},{"internalType":"uint256","name":"bestScore","type":"uint256"}],"name":"WorseAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bestAddress","type":"address"},{"indexed":true,"internalType":"address","name":"submitter","type":"address"},{"indexed":false,"internalType":"uint256","name":"score","type":"uint256"}],"name":"NewAddressFound","type":"event"},{"inputs":[],"name":"bestAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bestAddressSalt","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bestAddressSubmitter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"competitionDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"bytecode","type":"bytes"}],"name":"deploy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exclusiveDeployDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"updateBestAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}]

610100346100f057601f610b7538819003918201601f19168301916001600160401b038311848410176100f4578084926080946040528339810103126100f057805160208201516040830151929091906001600160a01b03841684036100f057606001519060a0528160805281018091116100dc5760e05260c052604051610a6c9081610109823960805181818160b2015281816104180152610601015260a05181818160ef015281816103520152818161047401526105db015260c0518181816103bf0152610640015260e0518181816104ec015261071d0152f35b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081627743601461050f5750806360f871bb146104b7578063756f06831461043b578063a94557b8146103e3578063d5f3948814610375578063db4c545e1461031d578063e87a6f84146102cc578063edb6e1ca146102925763fd3989f51461007e575f80fd5b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576004357f000000000000000000000000000000000000000000000000000000000000000080421161025f57508060601c338114159081610255575b50610226577f00000000000000000000000000000000000000000000000000000000000000009061012761011d30848461091a565b9230905f5461091a565b610130836107c8565b610139826107c8565b10156101ba57505f55337fffffffffffffffffffffffff00000000000000000000000000000000000000006001541617600155610175816107c8565b6040519081527f7e8d398a63ed37daa88e8998642ec9be730043b51e67affe790111f209e4046b602073ffffffffffffffffffffffffffffffffffffffff33941692a3005b826084916101c7826107c8565b73ffffffffffffffffffffffffffffffffffffffff6101e5836107c8565b9281604051957f29551db800000000000000000000000000000000000000000000000000000000875216600486015216602484015260448301526064820152fd5b7f8c7d9949000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b905015155f6100e8565b7fafa178b0000000000000000000000000000000000000000000000000000000005f524260045260245260445ffd5b5f80fd5b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760205f54604051908152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206104995f5430907f00000000000000000000000000000000000000000000000000000000000000009061091a565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760043567ffffffffffffffff811161028e573660238201121561028e57806004013567ffffffffffffffff811161079b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8401160116830183811067ffffffffffffffff82111761079b576040528083526020830191366024838301011161028e57815f92602460209301853784010152815181207f000000000000000000000000000000000000000000000000000000000000000003610773577f000000000000000000000000000000000000000000000000000000000000000080421115610744575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803314158061071a575b6106eb57505f54908251156106c35773ffffffffffffffffffffffffffffffffffffffff9251905ff5161561069b57005b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc419b2d2000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f000000000000000000000000000000000000000000000000000000000000000042111561066a565b7f0474c5c1000000000000000000000000000000000000000000000000000000005f524260045260245260445ffd5b7f23639643000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016906107f78261093a565b610805600a820291846109b1565b8061081157505f925050565b600481036109045750603c01915b5f5b602881106108dc57507f44000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008260121a60f81b1614908161088a575b5061088357565b9060140190565b60131a60f81b7fff00000000000000000000000000000000000000000000000000000000000000167f44000000000000000000000000000000000000000000000000000000000000001490505f61087c565b600460ff6108ea8385610a0b565b16146108f9575b600101610821565b6001909301926108f1565b600490939193111561081f57916028019161081f565b90605592600b92604051926040840152602083015281520160ff81532090565b5f919082906028905b81831061094f57505050565b9092919360ff61095f8684610a0b565b166109a9576001810180911161097c576001909401919290610943565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b925050915090565b915f9260ff6028169283811015610a02579192905b8183106109d257505050565b90929193600460ff6109e48785610a0b565b16036109a9576001810180911161097c5760019094019192906109c6565b50509150505f90565b8160011c906014821015610a3257901a90600116610a2c5760041c60ff1690565b600f1690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea164736f6c634300081a000a94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d900000000000000000000000000000000000000000000000000000000674d3ecf0000000000000000000000006b93e3bb9c0780c0f9042346ffc379530a5882c10000000000000000000000000000000000000000000000000000000000506b80

Deployed Bytecode

0x6080806040526004361015610012575f80fd5b5f3560e01c9081627743601461050f5750806360f871bb146104b7578063756f06831461043b578063a94557b8146103e3578063d5f3948814610375578063db4c545e1461031d578063e87a6f84146102cc578063edb6e1ca146102925763fd3989f51461007e575f80fd5b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e576004357f00000000000000000000000000000000000000000000000000000000674d3ecf80421161025f57508060601c338114159081610255575b50610226577f94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d99061012761011d30848461091a565b9230905f5461091a565b610130836107c8565b610139826107c8565b10156101ba57505f55337fffffffffffffffffffffffff00000000000000000000000000000000000000006001541617600155610175816107c8565b6040519081527f7e8d398a63ed37daa88e8998642ec9be730043b51e67affe790111f209e4046b602073ffffffffffffffffffffffffffffffffffffffff33941692a3005b826084916101c7826107c8565b73ffffffffffffffffffffffffffffffffffffffff6101e5836107c8565b9281604051957f29551db800000000000000000000000000000000000000000000000000000000875216600486015216602484015260448301526064820152fd5b7f8c7d9949000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b905015155f6100e8565b7fafa178b0000000000000000000000000000000000000000000000000000000005f524260045260245260445ffd5b5f80fd5b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760205f54604051908152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d98152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006b93e3bb9c0780c0f9042346ffc379530a5882c1168152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f00000000000000000000000000000000000000000000000000000000674d3ecf8152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206104995f5430907f94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d99061091a565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461028e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760206040517f00000000000000000000000000000000000000000000000000000000679daa4f8152f35b3461028e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028e5760043567ffffffffffffffff811161028e573660238201121561028e57806004013567ffffffffffffffff811161079b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8401160116830183811067ffffffffffffffff82111761079b576040528083526020830191366024838301011161028e57815f92602460209301853784010152815181207f94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d903610773577f00000000000000000000000000000000000000000000000000000000674d3ecf80421115610744575073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006b93e3bb9c0780c0f9042346ffc379530a5882c116803314158061071a575b6106eb57505f54908251156106c35773ffffffffffffffffffffffffffffffffffffffff9251905ff5161561069b57005b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc419b2d2000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f00000000000000000000000000000000000000000000000000000000679daa4f42111561066a565b7f0474c5c1000000000000000000000000000000000000000000000000000000005f524260045260245260445ffd5b7f23639643000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016906107f78261093a565b610805600a820291846109b1565b8061081157505f925050565b600481036109045750603c01915b5f5b602881106108dc57507f44000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008260121a60f81b1614908161088a575b5061088357565b9060140190565b60131a60f81b7fff00000000000000000000000000000000000000000000000000000000000000167f44000000000000000000000000000000000000000000000000000000000000001490505f61087c565b600460ff6108ea8385610a0b565b16146108f9575b600101610821565b6001909301926108f1565b600490939193111561081f57916028019161081f565b90605592600b92604051926040840152602083015281520160ff81532090565b5f919082906028905b81831061094f57505050565b9092919360ff61095f8684610a0b565b166109a9576001810180911161097c576001909401919290610943565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b925050915090565b915f9260ff6028169283811015610a02579192905b8183106109d257505050565b90929193600460ff6109e48785610a0b565b16036109a9576001810180911161097c5760019094019192906109c6565b50509150505f90565b8160011c906014821015610a3257901a90600116610a2c5760041c60ff1690565b600f1690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea164736f6c634300081a000a

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d900000000000000000000000000000000000000000000000000000000674D3ECF0000000000000000000000006B93E3bB9C0780C0f9042346Ffc379530a5882c10000000000000000000000000000000000000000000000000000000000506B80

-----Decoded View---------------
Arg [0] : _initCodeHash (bytes32): 0x94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d9
Arg [1] : _competitionDeadline (uint256): 1733115599
Arg [2] : _exclusiveDeployer (address): 0x6B93E3bB9C0780C0f9042346Ffc379530a5882c1
Arg [3] : _exclusiveDeployLength (uint256): 5270400

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 94d114296a5af85c1fd2dc039cdaa32f1ed4b0fe0868f02d888bfc91feb645d9
Arg [1] : 00000000000000000000000000000000000000000000000000000000674D3ECF
Arg [2] : 0000000000000000000000006B93E3bB9C0780C0f9042346Ffc379530a5882c1
Arg [3] : 0000000000000000000000000000000000000000000000000000000000506B80


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.