ETH Price: $2,634.27 (+0.10%)
Gas: 0.84 Gwei

Contract

0x4727270CbE069DC6E0738BC87018FCd01f3BFf2d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Owner Withdraw181868562023-09-21 21:13:59506 days ago1695330839IN
0x4727270C...01f3BFf2d
0 ETH0.0005061616.07136704
Mint181783742023-09-20 16:44:11508 days ago1695228251IN
0x4727270C...01f3BFf2d
0.3 ETH0.001405918.47419589
Mint181783712023-09-20 16:43:35508 days ago1695228215IN
0x4727270C...01f3BFf2d
0.3 ETH0.0015201619.97845209
Mint181752752023-09-20 6:19:35508 days ago1695190775IN
0x4727270C...01f3BFf2d
0.3 ETH0.000458427.77129515
Mint181741042023-09-20 2:23:59508 days ago1695176639IN
0x4727270C...01f3BFf2d
0.3 ETH0.000544549.2293587
Mint181737382023-09-20 1:09:47508 days ago1695172187IN
0x4727270C...01f3BFf2d
0.3 ETH0.0008775311.16439237
Mint181736112023-09-20 0:44:23508 days ago1695170663IN
0x4727270C...01f3BFf2d
0.3 ETH0.000675878.88260775
Owner Withdraw181728012023-09-19 22:01:11508 days ago1695160871IN
0x4727270C...01f3BFf2d
0 ETH0.0004213813.37423379
Owner Withdraw181727962023-09-19 22:00:11508 days ago1695160811IN
0x4727270C...01f3BFf2d
0 ETH0.0003488211.07560399
Mint181726762023-09-19 21:35:59508 days ago1695159359IN
0x4727270C...01f3BFf2d
0.3 ETH0.0008450911.10826609
Mint181726732023-09-19 21:35:23508 days ago1695159323IN
0x4727270C...01f3BFf2d
0.3 ETH0.0008546911.23289216
Mint181723782023-09-19 20:35:59508 days ago1695155759IN
0x4727270C...01f3BFf2d
0.3 ETH0.0011471514.59670442
Mint181717092023-09-19 18:21:47509 days ago1695147707IN
0x4727270C...01f3BFf2d
0.3 ETH0.0011952215.70809187
Mint181709972023-09-19 15:57:59509 days ago1695139079IN
0x4727270C...01f3BFf2d
0.3 ETH0.0019404931.55790613
Mint181709712023-09-19 15:52:47509 days ago1695138767IN
0x4727270C...01f3BFf2d
0.3 ETH0.0017127221.79318896
Mint181707312023-09-19 15:04:23509 days ago1695135863IN
0x4727270C...01f3BFf2d
0.3 ETH0.0012025915.80489112
Mint181703202023-09-19 13:41:35509 days ago1695130895IN
0x4727270C...01f3BFf2d
0.3 ETH0.000905111.89348438
Mint181684772023-09-19 7:29:35509 days ago1695108575IN
0x4727270C...01f3BFf2d
0.3 ETH0.0007636910.03675639
Mint181678402023-09-19 5:21:11509 days ago1695100871IN
0x4727270C...01f3BFf2d
0.3 ETH0.000628488.25975681
Mint181672352023-09-19 3:18:47509 days ago1695093527IN
0x4727270C...01f3BFf2d
0.3 ETH0.000552187.25693842
Mint181671512023-09-19 3:01:47509 days ago1695092507IN
0x4727270C...01f3BFf2d
0.3 ETH0.000764589.72873151
Mint181671082023-09-19 2:53:11509 days ago1695091991IN
0x4727270C...01f3BFf2d
0.3 ETH0.000563887.41082172
Mint181666402023-09-19 1:18:23509 days ago1695086303IN
0x4727270C...01f3BFf2d
0.3 ETH0.000566477.44477894
Mint181659722023-09-18 23:03:23509 days ago1695078203IN
0x4727270C...01f3BFf2d
0.3 ETH0.0010885213.84872008
Mint181658962023-09-18 22:48:11509 days ago1695077291IN
0x4727270C...01f3BFf2d
0.3 ETH0.0013841617.61007617
View all transactions

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
181868562023-09-21 21:13:59506 days ago1695330839
0x4727270C...01f3BFf2d
1.8 ETH
181728012023-09-19 22:01:11508 days ago1695160871
0x4727270C...01f3BFf2d
40.1 ETH
181727962023-09-19 22:00:11508 days ago1695160811
0x4727270C...01f3BFf2d
1 ETH
181579942023-09-17 20:05:23510 days ago1694981123
0x4727270C...01f3BFf2d
0.3 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UtherTrunksMinter

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion
File 1 of 7 : UtherTrunksMinter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./IUtherTrunks.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

contract UtherTrunksMinter is Ownable {

  using ECDSA for bytes32;

  uint256 public unitPrice = 0.3 ether;

  uint256 public startTime = block.timestamp;
  uint256 public privateStartTime = block.timestamp;


  uint256 public totalMinted = 0;
  address public signer;

  mapping(address => bool) wl;

  mapping(address =>  uint256) public usersMinted;
  IUtherTrunks public nftContract;

  constructor(
    address nftContractAddress,
    address _signer
  ){
    nftContract = IUtherTrunks(nftContractAddress);
    signer = _signer;
  }

  function privateMint(
    address _to,
    uint256 id,
    uint _count,
    uint mintableAmount,
    bytes calldata sig
  ) public payable {
    require(block.timestamp >= privateStartTime, "not started");
    require(msg.value >= price(_count), "value");
    bytes32 hash = keccak256(abi.encodePacked(_to, mintableAmount));
    hash = hash.toEthSignedMessageHash();
    address sigSigner = hash.recover(sig);
    require(sigSigner == signer, "!sig");
    require(_count + usersMinted[_to] <= mintableAmount, "exceeded balance");

    nftContract.mint(_to, id, _count, '0x');

    totalMinted += _count;
    usersMinted[_to] += _count;
  }

  function mint(
    address _to,
    uint256 id,
    uint _count
  ) public payable {
    require(block.timestamp >= startTime || wl[msg.sender], "not started");
    require(msg.value >= price(_count), "value");

    nftContract.mint(_to, id, _count, '0x');

    totalMinted += _count;
  }

  function price(uint _count) public view returns (uint256) {
    return _count * unitPrice;
  }

  function updateUnitPrice(uint256 _unitPrice) public onlyOwner {
    unitPrice = _unitPrice;
  }

  function updateStartTime(uint256 _startTime) public onlyOwner {
    startTime = _startTime;
  }

  function updatePrivateStartTime (uint256 _startTime) public onlyOwner {
    privateStartTime = _startTime;
  }

  function updateSigner(address _signer) public onlyOwner {
    signer = _signer;
  }

  function updateNftContrcat(IUtherTrunks _newAddress) public onlyOwner {
    nftContract = IUtherTrunks(_newAddress);
  }

  function updateWL(address addr, bool b) public onlyOwner {
    wl[addr] = b;
  }

  function setTotalMinted(uint256 b) public onlyOwner {
    totalMinted = b;
  }

  // allows the owner to withdraw tokens
  function ownerWithdraw(uint256 amount, address _to, address _tokenAddr) public onlyOwner{
    require(_to != address(0));
    if(_tokenAddr == address(0)){
      payable(_to).transfer(amount);
    }else{
      IERC20(_tokenAddr).transfer(_to, amount);
    }
  }
}

File 2 of 7 : IUtherTrunks.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IUtherTrunks {
    function mint(address to, uint256 id, uint256 amount, bytes memory data) external;
}

File 3 of 7 : ECDSA.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.0;

import "../Strings.sol";

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            /// @solidity memory-safe-assembly
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            /// @solidity memory-safe-assembly
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        uint8 v = uint8((uint256(vs) >> 255) + 27);
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from `s`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

File 4 of 7 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

File 5 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 6 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 7 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"nftContractAddress","type":"address"},{"internalType":"address","name":"_signer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"contract IUtherTrunks","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"ownerWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"mintableAmount","type":"uint256"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"privateMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"privateStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"b","type":"uint256"}],"name":"setTotalMinted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUtherTrunks","name":"_newAddress","type":"address"}],"name":"updateNftContrcat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"updatePrivateStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"}],"name":"updateSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"updateStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unitPrice","type":"uint256"}],"name":"updateUnitPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"updateWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052670429d069189e0000600155426002554260035560006004553480156200002a57600080fd5b50604051620012c9380380620012c98339810160408190526200004d9162000104565b620000616200005b62000093565b62000097565b600880546001600160a01b039384166001600160a01b031991821617909155600580549290931691161790556200013b565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ff57600080fd5b919050565b6000806040838503121562000117578182fd5b6200012283620000e7565b91506200013260208401620000e7565b90509250929050565b61117e806200014b6000396000f3fe60806040526004361061012a5760003560e01c806378e97925116100ab578063a7ecd37e1161006f578063a7ecd37e146102e5578063a9f2a15914610305578063cb2432a714610318578063d56d229d14610338578063e73faa2d1461034d578063f2fde38b146103625761012a565b806378e97925146102715780638152fa8e146102865780638a7c63c5146102a65780638da5cb5b146102bb578063a2309ff8146102d05761012a565b806326a49e37116100f257806326a49e37146101dc57806335f34fdc146101fc5780635f8a4c671461021c57806362beaba51461023c578063715018a61461025c5761012a565b806306bcf02f1461012f578063156e29f61461015157806316dbf90614610164578063180b418614610184578063238ac933146101ba575b600080fd5b34801561013b57600080fd5b5061014f61014a366004610da4565b610382565b005b61014f61015f366004610cb8565b61038f565b34801561017057600080fd5b5061014f61017f366004610da4565b61047e565b34801561019057600080fd5b506101a461019f366004610c5d565b61048b565b6040516101b191906110cf565b60405180910390f35b3480156101c657600080fd5b506101cf61049d565b6040516101b19190610e50565b3480156101e857600080fd5b506101a46101f7366004610da4565b6104ac565b34801561020857600080fd5b5061014f610217366004610c80565b6104c2565b34801561022857600080fd5b5061014f610237366004610dbc565b6104f5565b34801561024857600080fd5b5061014f610257366004610c5d565b6105e1565b34801561026857600080fd5b5061014f61060b565b34801561027d57600080fd5b506101a461061f565b34801561029257600080fd5b5061014f6102a1366004610da4565b610625565b3480156102b257600080fd5b506101a4610632565b3480156102c757600080fd5b506101cf610638565b3480156102dc57600080fd5b506101a4610647565b3480156102f157600080fd5b5061014f610300366004610c5d565b61064d565b61014f610313366004610cec565b610677565b34801561032457600080fd5b5061014f610333366004610da4565b610864565b34801561034457600080fd5b506101cf610871565b34801561035957600080fd5b506101a4610880565b34801561036e57600080fd5b5061014f61037d366004610c5d565b610886565b61038a6108c0565b600255565b600254421015806103af57503360009081526006602052604090205460ff165b6103d45760405162461bcd60e51b81526004016103cb906110aa565b60405180910390fd5b6103dd816104ac565b3410156103fc5760405162461bcd60e51b81526004016103cb90611014565b60085460405163731133e960e01b81526001600160a01b039091169063731133e99061043090869086908690600401610e7d565b600060405180830381600087803b15801561044a57600080fd5b505af115801561045e573d6000803e3d6000fd5b50505050806004600082825461047491906110d8565b9091555050505050565b6104866108c0565b600455565b60076020526000908152604090205481565b6005546001600160a01b031681565b6000600154826104bc91906110f0565b92915050565b6104ca6108c0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6104fd6108c0565b6001600160a01b03821661051057600080fd5b6001600160a01b03811661055a576040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015610554573d6000803e3d6000fd5b506105dc565b60405163a9059cbb60e01b81526001600160a01b0382169063a9059cbb906105889085908790600401610e64565b602060405180830381600087803b1580156105a257600080fd5b505af11580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190610d88565b505b505050565b6105e96108c0565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6106136108c0565b61061d60006108ff565b565b60025481565b61062d6108c0565b600355565b60035481565b6000546001600160a01b031690565b60045481565b6106556108c0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6003544210156106995760405162461bcd60e51b81526004016103cb906110aa565b6106a2846104ac565b3410156106c15760405162461bcd60e51b81526004016103cb90611014565b600086846040516020016106d6929190610dfd565b6040516020818303038152906040528051906020012090506106f78161094f565b9050600061073d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061097f9050565b6005549091506001600160a01b0380831691161461076d5760405162461bcd60e51b81526004016103cb90610ff6565b6001600160a01b038816600090815260076020526040902054859061079290886110d8565b11156107b05760405162461bcd60e51b81526004016103cb90610f44565b60085460405163731133e960e01b81526001600160a01b039091169063731133e9906107e4908b908b908b90600401610e7d565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b50505050856004600082825461082891906110d8565b90915550506001600160a01b038816600090815260076020526040812080548892906108559084906110d8565b90915550505050505050505050565b61086c6108c0565b600155565b6008546001600160a01b031681565b60015481565b61088e6108c0565b6001600160a01b0381166108b45760405162461bcd60e51b81526004016103cb90610f6e565b6108bd816108ff565b50565b6108c86109a3565b6001600160a01b03166108d9610638565b6001600160a01b03161461061d5760405162461bcd60e51b81526004016103cb90611075565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000816040516020016109629190610e1f565b604051602081830303815290604052805190602001209050919050565b600080600061098e85856109a7565b9150915061099b81610a17565b509392505050565b3390565b6000808251604114156109de5760208301516040840151606085015160001a6109d287828585610b44565b94509450505050610a10565b825160401415610a0857602083015160408401516109fd868383610c24565b935093505050610a10565b506000905060025b9250929050565b6000816004811115610a3957634e487b7160e01b600052602160045260246000fd5b1415610a44576108bd565b6001816004811115610a6657634e487b7160e01b600052602160045260246000fd5b1415610a845760405162461bcd60e51b81526004016103cb90610ed6565b6002816004811115610aa657634e487b7160e01b600052602160045260246000fd5b1415610ac45760405162461bcd60e51b81526004016103cb90610f0d565b6003816004811115610ae657634e487b7160e01b600052602160045260246000fd5b1415610b045760405162461bcd60e51b81526004016103cb90610fb4565b6004816004811115610b2657634e487b7160e01b600052602160045260246000fd5b14156108bd5760405162461bcd60e51b81526004016103cb90611033565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b7b5750600090506003610c1b565b8460ff16601b14158015610b9357508460ff16601c14155b15610ba45750600090506004610c1b565b600060018787878760405160008152602001604052604051610bc99493929190610eb8565b6020604051602081039080840390855afa158015610beb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c1457600060019250925050610c1b565b9150600090505b94509492505050565b6000806001600160ff1b03831681610c4160ff86901c601b6110d8565b9050610c4f87828885610b44565b935093505050935093915050565b600060208284031215610c6e578081fd5b8135610c7981611125565b9392505050565b60008060408385031215610c92578081fd5b8235610c9d81611125565b91506020830135610cad8161113a565b809150509250929050565b600080600060608486031215610ccc578081fd5b8335610cd781611125565b95602085013595506040909401359392505050565b60008060008060008060a08789031215610d04578182fd5b8635610d0f81611125565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff80821115610d40578384fd5b818901915089601f830112610d53578384fd5b813581811115610d61578485fd5b8a6020828501011115610d72578485fd5b6020830194508093505050509295509295509295565b600060208284031215610d99578081fd5b8151610c798161113a565b600060208284031215610db5578081fd5b5035919050565b600080600060608486031215610dd0578283fd5b833592506020840135610de281611125565b91506040840135610df281611125565b809150509250925092565b60609290921b6bffffffffffffffffffffffff19168252601482015260340190565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260806060820181905260029082015261060f60f31b60a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526010908201526f65786365656465642062616c616e636560801b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252600490820152632173696760e01b604082015260600190565b60208082526005908201526476616c756560d81b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201526a1b9bdd081cdd185c9d195960aa1b604082015260600190565b90815260200190565b600082198211156110eb576110eb61110f565b500190565b600081600019048311821515161561110a5761110a61110f565b500290565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146108bd57600080fd5b80151581146108bd57600080fdfea2646970667358221220bb9dfcd7876d9c86fff3f2e924704a470b2ef933cc7e6db9e0d7373ecda223cb64736f6c63430008010033000000000000000000000000f28cb3f0d7dc50826fcc8ab0d894a8d48a80b16a000000000000000000000000ed2f35894efc0766c942e91d8d0acc0da781aeaa

Deployed Bytecode

0x60806040526004361061012a5760003560e01c806378e97925116100ab578063a7ecd37e1161006f578063a7ecd37e146102e5578063a9f2a15914610305578063cb2432a714610318578063d56d229d14610338578063e73faa2d1461034d578063f2fde38b146103625761012a565b806378e97925146102715780638152fa8e146102865780638a7c63c5146102a65780638da5cb5b146102bb578063a2309ff8146102d05761012a565b806326a49e37116100f257806326a49e37146101dc57806335f34fdc146101fc5780635f8a4c671461021c57806362beaba51461023c578063715018a61461025c5761012a565b806306bcf02f1461012f578063156e29f61461015157806316dbf90614610164578063180b418614610184578063238ac933146101ba575b600080fd5b34801561013b57600080fd5b5061014f61014a366004610da4565b610382565b005b61014f61015f366004610cb8565b61038f565b34801561017057600080fd5b5061014f61017f366004610da4565b61047e565b34801561019057600080fd5b506101a461019f366004610c5d565b61048b565b6040516101b191906110cf565b60405180910390f35b3480156101c657600080fd5b506101cf61049d565b6040516101b19190610e50565b3480156101e857600080fd5b506101a46101f7366004610da4565b6104ac565b34801561020857600080fd5b5061014f610217366004610c80565b6104c2565b34801561022857600080fd5b5061014f610237366004610dbc565b6104f5565b34801561024857600080fd5b5061014f610257366004610c5d565b6105e1565b34801561026857600080fd5b5061014f61060b565b34801561027d57600080fd5b506101a461061f565b34801561029257600080fd5b5061014f6102a1366004610da4565b610625565b3480156102b257600080fd5b506101a4610632565b3480156102c757600080fd5b506101cf610638565b3480156102dc57600080fd5b506101a4610647565b3480156102f157600080fd5b5061014f610300366004610c5d565b61064d565b61014f610313366004610cec565b610677565b34801561032457600080fd5b5061014f610333366004610da4565b610864565b34801561034457600080fd5b506101cf610871565b34801561035957600080fd5b506101a4610880565b34801561036e57600080fd5b5061014f61037d366004610c5d565b610886565b61038a6108c0565b600255565b600254421015806103af57503360009081526006602052604090205460ff165b6103d45760405162461bcd60e51b81526004016103cb906110aa565b60405180910390fd5b6103dd816104ac565b3410156103fc5760405162461bcd60e51b81526004016103cb90611014565b60085460405163731133e960e01b81526001600160a01b039091169063731133e99061043090869086908690600401610e7d565b600060405180830381600087803b15801561044a57600080fd5b505af115801561045e573d6000803e3d6000fd5b50505050806004600082825461047491906110d8565b9091555050505050565b6104866108c0565b600455565b60076020526000908152604090205481565b6005546001600160a01b031681565b6000600154826104bc91906110f0565b92915050565b6104ca6108c0565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6104fd6108c0565b6001600160a01b03821661051057600080fd5b6001600160a01b03811661055a576040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015610554573d6000803e3d6000fd5b506105dc565b60405163a9059cbb60e01b81526001600160a01b0382169063a9059cbb906105889085908790600401610e64565b602060405180830381600087803b1580156105a257600080fd5b505af11580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190610d88565b505b505050565b6105e96108c0565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6106136108c0565b61061d60006108ff565b565b60025481565b61062d6108c0565b600355565b60035481565b6000546001600160a01b031690565b60045481565b6106556108c0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6003544210156106995760405162461bcd60e51b81526004016103cb906110aa565b6106a2846104ac565b3410156106c15760405162461bcd60e51b81526004016103cb90611014565b600086846040516020016106d6929190610dfd565b6040516020818303038152906040528051906020012090506106f78161094f565b9050600061073d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061097f9050565b6005549091506001600160a01b0380831691161461076d5760405162461bcd60e51b81526004016103cb90610ff6565b6001600160a01b038816600090815260076020526040902054859061079290886110d8565b11156107b05760405162461bcd60e51b81526004016103cb90610f44565b60085460405163731133e960e01b81526001600160a01b039091169063731133e9906107e4908b908b908b90600401610e7d565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b50505050856004600082825461082891906110d8565b90915550506001600160a01b038816600090815260076020526040812080548892906108559084906110d8565b90915550505050505050505050565b61086c6108c0565b600155565b6008546001600160a01b031681565b60015481565b61088e6108c0565b6001600160a01b0381166108b45760405162461bcd60e51b81526004016103cb90610f6e565b6108bd816108ff565b50565b6108c86109a3565b6001600160a01b03166108d9610638565b6001600160a01b03161461061d5760405162461bcd60e51b81526004016103cb90611075565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000816040516020016109629190610e1f565b604051602081830303815290604052805190602001209050919050565b600080600061098e85856109a7565b9150915061099b81610a17565b509392505050565b3390565b6000808251604114156109de5760208301516040840151606085015160001a6109d287828585610b44565b94509450505050610a10565b825160401415610a0857602083015160408401516109fd868383610c24565b935093505050610a10565b506000905060025b9250929050565b6000816004811115610a3957634e487b7160e01b600052602160045260246000fd5b1415610a44576108bd565b6001816004811115610a6657634e487b7160e01b600052602160045260246000fd5b1415610a845760405162461bcd60e51b81526004016103cb90610ed6565b6002816004811115610aa657634e487b7160e01b600052602160045260246000fd5b1415610ac45760405162461bcd60e51b81526004016103cb90610f0d565b6003816004811115610ae657634e487b7160e01b600052602160045260246000fd5b1415610b045760405162461bcd60e51b81526004016103cb90610fb4565b6004816004811115610b2657634e487b7160e01b600052602160045260246000fd5b14156108bd5760405162461bcd60e51b81526004016103cb90611033565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b7b5750600090506003610c1b565b8460ff16601b14158015610b9357508460ff16601c14155b15610ba45750600090506004610c1b565b600060018787878760405160008152602001604052604051610bc99493929190610eb8565b6020604051602081039080840390855afa158015610beb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c1457600060019250925050610c1b565b9150600090505b94509492505050565b6000806001600160ff1b03831681610c4160ff86901c601b6110d8565b9050610c4f87828885610b44565b935093505050935093915050565b600060208284031215610c6e578081fd5b8135610c7981611125565b9392505050565b60008060408385031215610c92578081fd5b8235610c9d81611125565b91506020830135610cad8161113a565b809150509250929050565b600080600060608486031215610ccc578081fd5b8335610cd781611125565b95602085013595506040909401359392505050565b60008060008060008060a08789031215610d04578182fd5b8635610d0f81611125565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff80821115610d40578384fd5b818901915089601f830112610d53578384fd5b813581811115610d61578485fd5b8a6020828501011115610d72578485fd5b6020830194508093505050509295509295509295565b600060208284031215610d99578081fd5b8151610c798161113a565b600060208284031215610db5578081fd5b5035919050565b600080600060608486031215610dd0578283fd5b833592506020840135610de281611125565b91506040840135610df281611125565b809150509250925092565b60609290921b6bffffffffffffffffffffffff19168252601482015260340190565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260806060820181905260029082015261060f60f31b60a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526010908201526f65786365656465642062616c616e636560801b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252600490820152632173696760e01b604082015260600190565b60208082526005908201526476616c756560d81b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201526a1b9bdd081cdd185c9d195960aa1b604082015260600190565b90815260200190565b600082198211156110eb576110eb61110f565b500190565b600081600019048311821515161561110a5761110a61110f565b500290565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146108bd57600080fd5b80151581146108bd57600080fdfea2646970667358221220bb9dfcd7876d9c86fff3f2e924704a470b2ef933cc7e6db9e0d7373ecda223cb64736f6c63430008010033

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

000000000000000000000000f28cb3f0d7dc50826fcc8ab0d894a8d48a80b16a000000000000000000000000ed2f35894efc0766c942e91d8d0acc0da781aeaa

-----Decoded View---------------
Arg [0] : nftContractAddress (address): 0xF28cb3F0D7dC50826fcc8Ab0D894a8d48A80B16a
Arg [1] : _signer (address): 0xed2f35894efc0766c942E91d8d0Acc0dA781aEaa

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f28cb3f0d7dc50826fcc8ab0d894a8d48a80b16a
Arg [1] : 000000000000000000000000ed2f35894efc0766c942e91d8d0acc0da781aeaa


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.