ETH Price: $2,054.75 (-1.91%)
 

Overview

ETH Balance

0.0363 ETH

Eth Value

$74.59 (@ $2,054.75/ETH)

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Amount:Between 1-10
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Amount:Between 1-10
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
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:
Punkoos

Compiler Version
v0.8.33+commit.64118f21

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.33;

contract Punkoos {
    // Errors
    error NotOwner();
    error NoScripts();
    error SoldOut();
    error FreeMintSoldOut();
    error AlreadyFreeMinted();
    error InsufficientPayment();
    error ZeroQuantity();
    error NonexistentToken();
    error NotApproved();
    error InvalidTransfer();

    // Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    // Constants
    uint256 public constant MAX_SUPPLY = 3333;
    uint256 public constant COST = 0.00015 ether;
    string public constant NAME = "Punkoos";
    string public constant SYMBOL = "PUNKOOS";

    // State - packed into fewer slots
    address private _owner;
    uint96 private _currentIndex;
    
    string private _baseURI = "bafybeifc5gqr7as6niupyujtrcpkpmc3goci6whyxc6dn2bc7guwa3z5sm";
    uint128 public MAX_FREE = 1234;
    uint128 public MAX_FREE_PER_WALLET = 1;
    

    // ERC721A-style: only store ownership at batch start
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    mapping(address => uint256) public minted;

    modifier onlyOwner() {
        if (msg.sender != _owner) revert NotOwner();
        _;
    }

    modifier noContracts() {
        if (tx.origin != msg.sender) revert NoScripts();
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    // ============ MINT FUNCTIONS ============

    function freemint() external noContracts {
        uint256 amount = MAX_FREE_PER_WALLET;
        uint256 current = _currentIndex;
        if (current + amount > MAX_FREE) revert FreeMintSoldOut();
        if (current + amount > MAX_SUPPLY) revert SoldOut();
        if (minted[msg.sender] != 0) revert AlreadyFreeMinted();

        minted[msg.sender] = amount;
        _mint(msg.sender, amount);
    }

    function mint(uint256 amount) external payable {
        if (_currentIndex + amount > MAX_SUPPLY) revert SoldOut();
        if (msg.value < amount * COST) revert InsufficientPayment();
        _mint(msg.sender, amount);
    }

    function teamMint(uint256 amount) external onlyOwner {
        if (_currentIndex + amount > MAX_SUPPLY) revert SoldOut();
        _mint(msg.sender, amount);
    }

    /// @dev ERC721A-style: only write owner at start of batch
    function _mint(address to, uint256 quantity) internal {
        if (quantity == 0) revert ZeroQuantity();
        
        uint256 startId = _currentIndex;
        
        // Single SSTORE for ownership (ERC721A optimization)
        _owners[startId] = to;
        _balances[to] += quantity;
        
        // Emit events (required by ERC721 spec)
        for (uint256 i; i < quantity;) {
            emit Transfer(address(0), to, startId + i);
            unchecked { ++i; }
        }
        
        _currentIndex = uint96(startId + quantity);
    }

    // ============ VIEW FUNCTIONS ============

    function totalSupply() public view returns (uint256) {
        return _currentIndex;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /// @dev ERC721A-style: walk backwards to find owner
    function ownerOf(uint256 tokenId) public view returns (address) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        
        // Walk backwards to find the owner
        for (uint256 i = tokenId; ; ) {
            address tokenOwner = _owners[i];
            if (tokenOwner != address(0)) {
                return tokenOwner;
            }
            unchecked { --i; }
        }
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function name() public pure returns (string memory) {
        return NAME;
    }

    function symbol() public pure returns (string memory) {
        return SYMBOL;
    }

    function tokenURI(uint256 tokenId) public view returns (string memory) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        return string(abi.encodePacked("ipfs://", _baseURI, "/", _toString(tokenId), ".json"));
    }

    // ============ APPROVALS ============

    function approve(address to, uint256 tokenId) public {
        address tokenOwner = ownerOf(tokenId);
        if (msg.sender != tokenOwner && !_operatorApprovals[tokenOwner][msg.sender]) 
            revert NotApproved();
        _tokenApprovals[tokenId] = to;
        emit Approval(tokenOwner, to, tokenId);
    }

    function setApprovalForAll(address operator, bool approved) public {
        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function getApproved(uint256 tokenId) public view returns (address) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        return _tokenApprovals[tokenId];
    }

    function isApprovedForAll(address account, address operator) public view returns (bool) {
        return _operatorApprovals[account][operator];
    }

    // ============ TRANSFERS ============

    function transferFrom(address from, address to, uint256 tokenId) public {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata) public {
        _transfer(from, to, tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal {
        if (ownerOf(tokenId) != from) revert InvalidTransfer();
        if (msg.sender != from && !_operatorApprovals[from][msg.sender] && _tokenApprovals[tokenId] != msg.sender)
            revert NotApproved();

        delete _tokenApprovals[tokenId];
        unchecked {
            --_balances[from];
            ++_balances[to];
        }
        
        // Write new owner
        _owners[tokenId] = to;
        
        // Initialize next slot if needed (ERC721A pattern)
        uint256 nextId = tokenId + 1;
        if (nextId < _currentIndex && _owners[nextId] == address(0)) {
            _owners[nextId] = from;
        }

        emit Transfer(from, to, tokenId);
    }

    // ============ ERC165 & ERC2981 ============

    function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
        return interfaceId == 0x01ffc9a7 || // ERC165
               interfaceId == 0x80ac58cd || // ERC721
               interfaceId == 0x5b5e139f || // ERC721Metadata
               interfaceId == 0x2a55205a;   // ERC2981
    }

    function royaltyInfo(uint256, uint256 salePrice) external view returns (address, uint256) {
        return (_owner, (salePrice * 500) / 10000);
    }

    // ============ ADMIN ============

    function setData(string calldata base, uint128 maxFree, uint128 maxFreePerWallet) external onlyOwner {
        _baseURI = base;
        MAX_FREE = maxFree;
        MAX_FREE_PER_WALLET = maxFreePerWallet;
    }

    function withdraw() external onlyOwner {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success);
    }

    // ============ UTILS ============

    function _toString(uint256 value) internal pure returns (string memory) {
        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) {
            buffer[--digits] = bytes1(uint8(48 + value % 10));
            value /= 10;
        }
        return string(buffer);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyFreeMinted","type":"error"},{"inputs":[],"name":"FreeMintSoldOut","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidTransfer","type":"error"},{"inputs":[],"name":"NoScripts","type":"error"},{"inputs":[],"name":"NonexistentToken","type":"error"},{"inputs":[],"name":"NotApproved","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"SoldOut","type":"error"},{"inputs":[],"name":"ZeroQuantity","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"COST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FREE","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FREE_PER_WALLET","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SYMBOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freemint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"uint128","name":"maxFree","type":"uint128"},{"internalType":"uint128","name":"maxFreePerWallet","type":"uint128"}],"name":"setData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"teamMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e0604052603b6080818152906116e060a03960019061001f90826100fa565b507001000000000000000000000000000004d2600255348015610040575f5ffd5b505f80546001600160a01b031916331790556101b8565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061007f57607f821691505b60208210810361009d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156100f557828211156100f557805f5260205f20601f840160051c60208510156100ce57505f5b90810190601f840160051c035f5b818110156100f1575f838201556001016100dc565b5050505b505050565b81516001600160401b0381111561011357610113610057565b61012781610121845461006b565b846100a3565b6020601f821160018114610159575f83156101425750848201515b5f19600385901b1c1916600184901b1784556101b1565b5f84815260208120601f198516915b828110156101885787850151825560209485019460019092019101610168565b50848210156101a557868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b61151b806101c55f395ff3fe6080604052600436106101af575f3560e01c80638da5cb5b116100e7578063b88d4fde11610087578063e985e9c511610062578063e985e9c51461052a578063ed6661c214610571578063f76f8d7814610590578063f9cb63ac146105c2575f5ffd5b8063b88d4fde146104d3578063bf8fbbd2146104f2578063c87b56dd1461050b575f5ffd5b8063a0712d68116100c2578063a0712d6814610450578063a22cb46514610463578063a3f4df7e14610482578063abd0a552146104b4575f5ffd5b80638da5cb5b146103c757806395d89b41146103e357806398710d1e14610412575f5ffd5b80632a55205a116101525780633ccfd60b1161012d5780633ccfd60b1461036057806342842e0e146102cf5780636352211e1461037457806370a0823114610393575f5ffd5b80632a55205a146102ee5780632fbba1151461032c57806332cb6b0c1461034b575f5ffd5b8063095ea7b31161018d578063095ea7b31461025657806318160ddd146102775780631e7269c5146102a457806323b872dd146102cf575f5ffd5b806301ffc9a7146101b357806306fdde03146101e7578063081812fc1461021f575b5f5ffd5b3480156101be575f5ffd5b506101d26101cd366004610f4d565b6105d6565b60405190151581526020015b60405180910390f35b3480156101f2575f5ffd5b5060408051808201909152600781526650756e6b6f6f7360c81b60208201525b6040516101de9190610f7b565b34801561022a575f5ffd5b5061023e610239366004610fb0565b610642565b6040516001600160a01b0390911681526020016101de565b348015610261575f5ffd5b50610275610270366004610fe2565b61068f565b005b348015610282575f5ffd5b505f54600160a01b90046001600160601b03165b6040519081526020016101de565b3480156102af575f5ffd5b506102966102be36600461100a565b60076020525f908152604090205481565b3480156102da575f5ffd5b506102756102e9366004611023565b610750565b3480156102f9575f5ffd5b5061030d61030836600461105d565b610760565b604080516001600160a01b0390931683526020830191909152016101de565b348015610337575f5ffd5b50610275610346366004610fb0565b610793565b348015610356575f5ffd5b50610296610d0581565b34801561036b575f5ffd5b5061027561080a565b34801561037f575f5ffd5b5061023e61038e366004610fb0565b610885565b34801561039e575f5ffd5b506102966103ad36600461100a565b6001600160a01b03165f9081526004602052604090205490565b3480156103d2575f5ffd5b505f546001600160a01b031661023e565b3480156103ee575f5ffd5b5060408051808201909152600781526650554e4b4f4f5360c81b6020820152610212565b34801561041d575f5ffd5b5060025461043890600160801b90046001600160801b031681565b6040516001600160801b0390911681526020016101de565b61027561045e366004610fb0565b6108e6565b34801561046e575f5ffd5b5061027561047d36600461107d565b610956565b34801561048d575f5ffd5b506102126040518060400160405280600781526020016650756e6b6f6f7360c81b81525081565b3480156104bf575f5ffd5b506102756104ce36600461110a565b6109c1565b3480156104de575f5ffd5b506102756104ed36600461116b565b610a14565b3480156104fd575f5ffd5b5061029665886c98b7600081565b348015610516575f5ffd5b50610212610525366004610fb0565b610a26565b348015610535575f5ffd5b506101d26105443660046111d5565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205460ff1690565b34801561057c575f5ffd5b50600254610438906001600160801b031681565b34801561059b575f5ffd5b506102126040518060400160405280600781526020016650554e4b4f4f5360c81b81525081565b3480156105cd575f5ffd5b50610275610a8c565b5f6301ffc9a760e01b6001600160e01b03198316148061060657506380ac58cd60e01b6001600160e01b03198316145b806106215750635b5e139f60e01b6001600160e01b03198316145b8061063c575063152a902d60e11b6001600160e01b03198316145b92915050565b5f8054600160a01b90046001600160601b031682106106745760405163163a09e160e31b815260040160405180910390fd5b505f908152600560205260409020546001600160a01b031690565b5f61069982610885565b9050336001600160a01b038216148015906106d757506001600160a01b0381165f90815260066020908152604080832033845290915290205460ff16155b156106f55760405163c19f17a960e01b815260040160405180910390fd5b5f8281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61075b838383610b78565b505050565b5f805481906001600160a01b031661271061077d856101f461121a565b6107879190611245565b915091505b9250929050565b5f546001600160a01b031633146107bd576040516330cd747160e01b815260040160405180910390fd5b5f54610d05906107de908390600160a01b90046001600160601b0316611258565b11156107fd576040516352df9fe560e01b815260040160405180910390fd5b6108073382610d46565b50565b5f546001600160a01b03163314610834576040516330cd747160e01b815260040160405180910390fd5b6040515f90339047908381818185875af1925050503d805f8114610873576040519150601f19603f3d011682016040523d82523d5f602084013e610878565b606091505b5050905080610807575f5ffd5b5f8054600160a01b90046001600160601b031682106108b75760405163163a09e160e31b815260040160405180910390fd5b815b5f818152600360205260409020546001600160a01b031680156108dd579392505050565b505f19016108b9565b5f54610d0590610907908390600160a01b90046001600160601b0316611258565b1115610926576040516352df9fe560e01b815260040160405180910390fd5b61093665886c98b760008261121a565b3410156107fd5760405163cd1c886760e01b815260040160405180910390fd5b335f8181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f546001600160a01b031633146109eb576040516330cd747160e01b815260040160405180910390fd5b60016109f884868361130d565b506001600160801b03908116600160801b029116176002555050565b610a1f858585610b78565b5050505050565b5f54606090600160a01b90046001600160601b03168210610a5a5760405163163a09e160e31b815260040160405180910390fd5b6001610a6583610e4a565b604051602001610a769291906113de565b6040516020818303038152906040529050919050565b323314610aac5760405163377401db60e11b815260040160405180910390fd5b6002545f54600160801b82046001600160801b0390811692600160a01b9092046001600160601b03169116610ae18383611258565b1115610b0057604051631fcc27c360e11b815260040160405180910390fd5b610d05610b0d8383611258565b1115610b2c576040516352df9fe560e01b815260040160405180910390fd5b335f9081526007602052604090205415610b59576040516398bdb27b60e01b815260040160405180910390fd5b335f818152600760205260409020839055610b749083610d46565b5050565b826001600160a01b0316610b8b82610885565b6001600160a01b031614610bb257604051632f35253160e01b815260040160405180910390fd5b336001600160a01b03841614801590610bee57506001600160a01b0383165f90815260066020908152604080832033845290915290205460ff16155b8015610c1057505f818152600560205260409020546001600160a01b03163314155b15610c2e5760405163c19f17a960e01b815260040160405180910390fd5b5f81815260056020908152604080832080546001600160a01b03199081169091556001600160a01b0387811685526004845282852080545f19019055861680855282852080546001908101909155868652600390945291842080549091169091179055610c9c908390611258565b5f54909150600160a01b90046001600160601b031681108015610cd357505f818152600360205260409020546001600160a01b0316155b15610cff575f81815260036020526040902080546001600160a01b0319166001600160a01b0386161790555b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b805f03610d665760405163f4f5b73360e01b815260040160405180910390fd5b5f8054600160a01b90046001600160601b031680825260036020908152604080842080546001600160a01b0319166001600160a01b038816908117909155845260049091528220805491928492610dbe908490611258565b909155505f90505b82811015610e1557610dd88183611258565b6040516001600160a01b038616905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4600101610dc6565b50610e208282611258565b5f60146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b6060815f03610e705750506040805180820190915260018152600360fc1b602082015290565b815f5b8115610e995780610e8381611491565b9150610e929050600a83611245565b9150610e73565b5f8167ffffffffffffffff811115610eb357610eb361126b565b6040519080825280601f01601f191660200182016040528015610edd576020820181803683370190505b5090505b8415610f4557610ef2600a866114a9565b610efd906030611258565b60f81b81610f0a846114bc565b93508381518110610f1d57610f1d6114d1565b60200101906001600160f81b03191690815f1a905350610f3e600a86611245565b9450610ee1565b949350505050565b5f60208284031215610f5d575f5ffd5b81356001600160e01b031981168114610f74575f5ffd5b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610fc0575f5ffd5b5035919050565b80356001600160a01b0381168114610fdd575f5ffd5b919050565b5f5f60408385031215610ff3575f5ffd5b610ffc83610fc7565b946020939093013593505050565b5f6020828403121561101a575f5ffd5b610f7482610fc7565b5f5f5f60608486031215611035575f5ffd5b61103e84610fc7565b925061104c60208501610fc7565b929592945050506040919091013590565b5f5f6040838503121561106e575f5ffd5b50508035926020909101359150565b5f5f6040838503121561108e575f5ffd5b61109783610fc7565b9150602083013580151581146110ab575f5ffd5b809150509250929050565b5f5f83601f8401126110c6575f5ffd5b50813567ffffffffffffffff8111156110dd575f5ffd5b60208301915083602082850101111561078c575f5ffd5b80356001600160801b0381168114610fdd575f5ffd5b5f5f5f5f6060858703121561111d575f5ffd5b843567ffffffffffffffff811115611133575f5ffd5b61113f878288016110b6565b90955093506111529050602086016110f4565b9150611160604086016110f4565b905092959194509250565b5f5f5f5f5f6080868803121561117f575f5ffd5b61118886610fc7565b945061119660208701610fc7565b935060408601359250606086013567ffffffffffffffff8111156111b8575f5ffd5b6111c4888289016110b6565b969995985093965092949392505050565b5f5f604083850312156111e6575f5ffd5b6111ef83610fc7565b91506111fd60208401610fc7565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761063c5761063c611206565b634e487b7160e01b5f52601260045260245ffd5b5f8261125357611253611231565b500490565b8082018082111561063c5761063c611206565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061129357607f821691505b6020821081036112b157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561075b578282111561075b57805f5260205f20601f840160051c60208510156112e257505f5b90810190601f840160051c035f5b81811015611305575f838201556001016112f0565b505050505050565b67ffffffffffffffff8311156113255761132561126b565b61133983611333835461127f565b836112b7565b5f601f84116001811461136a575f85156113535750838201355b5f19600387901b1c1916600186901b178355610a1f565b5f83815260208120601f198716915b828110156113995786850135825560209485019460019092019101611379565b50868210156113b5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f81518060208401855e5f93019283525090919050565b66697066733a2f2f60c81b81525f5f84546113f88161127f565b60018216801561140f576001811461142a5761145d565b60ff198316600787015260078215158302870101935061145d565b875f5260205f205f5b8381101561145257815488820160070152600190910190602001611433565b505060078287010193505b505050602f60f81b815261148861147760018301866113c7565b64173539b7b760d91b815260050190565b95945050505050565b5f600182016114a2576114a2611206565b5060010190565b5f826114b7576114b7611231565b500690565b5f816114ca576114ca611206565b505f190190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220c9031ebfbc2991a62121abe2231cef72f54828b5dc0b7a8640946789d18d789364736f6c6343000821003362616679626569666335677172376173366e69757079756a747263706b706d6333676f636936776879786336646e3262633767757761337a35736d

Deployed Bytecode

0x6080604052600436106101af575f3560e01c80638da5cb5b116100e7578063b88d4fde11610087578063e985e9c511610062578063e985e9c51461052a578063ed6661c214610571578063f76f8d7814610590578063f9cb63ac146105c2575f5ffd5b8063b88d4fde146104d3578063bf8fbbd2146104f2578063c87b56dd1461050b575f5ffd5b8063a0712d68116100c2578063a0712d6814610450578063a22cb46514610463578063a3f4df7e14610482578063abd0a552146104b4575f5ffd5b80638da5cb5b146103c757806395d89b41146103e357806398710d1e14610412575f5ffd5b80632a55205a116101525780633ccfd60b1161012d5780633ccfd60b1461036057806342842e0e146102cf5780636352211e1461037457806370a0823114610393575f5ffd5b80632a55205a146102ee5780632fbba1151461032c57806332cb6b0c1461034b575f5ffd5b8063095ea7b31161018d578063095ea7b31461025657806318160ddd146102775780631e7269c5146102a457806323b872dd146102cf575f5ffd5b806301ffc9a7146101b357806306fdde03146101e7578063081812fc1461021f575b5f5ffd5b3480156101be575f5ffd5b506101d26101cd366004610f4d565b6105d6565b60405190151581526020015b60405180910390f35b3480156101f2575f5ffd5b5060408051808201909152600781526650756e6b6f6f7360c81b60208201525b6040516101de9190610f7b565b34801561022a575f5ffd5b5061023e610239366004610fb0565b610642565b6040516001600160a01b0390911681526020016101de565b348015610261575f5ffd5b50610275610270366004610fe2565b61068f565b005b348015610282575f5ffd5b505f54600160a01b90046001600160601b03165b6040519081526020016101de565b3480156102af575f5ffd5b506102966102be36600461100a565b60076020525f908152604090205481565b3480156102da575f5ffd5b506102756102e9366004611023565b610750565b3480156102f9575f5ffd5b5061030d61030836600461105d565b610760565b604080516001600160a01b0390931683526020830191909152016101de565b348015610337575f5ffd5b50610275610346366004610fb0565b610793565b348015610356575f5ffd5b50610296610d0581565b34801561036b575f5ffd5b5061027561080a565b34801561037f575f5ffd5b5061023e61038e366004610fb0565b610885565b34801561039e575f5ffd5b506102966103ad36600461100a565b6001600160a01b03165f9081526004602052604090205490565b3480156103d2575f5ffd5b505f546001600160a01b031661023e565b3480156103ee575f5ffd5b5060408051808201909152600781526650554e4b4f4f5360c81b6020820152610212565b34801561041d575f5ffd5b5060025461043890600160801b90046001600160801b031681565b6040516001600160801b0390911681526020016101de565b61027561045e366004610fb0565b6108e6565b34801561046e575f5ffd5b5061027561047d36600461107d565b610956565b34801561048d575f5ffd5b506102126040518060400160405280600781526020016650756e6b6f6f7360c81b81525081565b3480156104bf575f5ffd5b506102756104ce36600461110a565b6109c1565b3480156104de575f5ffd5b506102756104ed36600461116b565b610a14565b3480156104fd575f5ffd5b5061029665886c98b7600081565b348015610516575f5ffd5b50610212610525366004610fb0565b610a26565b348015610535575f5ffd5b506101d26105443660046111d5565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205460ff1690565b34801561057c575f5ffd5b50600254610438906001600160801b031681565b34801561059b575f5ffd5b506102126040518060400160405280600781526020016650554e4b4f4f5360c81b81525081565b3480156105cd575f5ffd5b50610275610a8c565b5f6301ffc9a760e01b6001600160e01b03198316148061060657506380ac58cd60e01b6001600160e01b03198316145b806106215750635b5e139f60e01b6001600160e01b03198316145b8061063c575063152a902d60e11b6001600160e01b03198316145b92915050565b5f8054600160a01b90046001600160601b031682106106745760405163163a09e160e31b815260040160405180910390fd5b505f908152600560205260409020546001600160a01b031690565b5f61069982610885565b9050336001600160a01b038216148015906106d757506001600160a01b0381165f90815260066020908152604080832033845290915290205460ff16155b156106f55760405163c19f17a960e01b815260040160405180910390fd5b5f8281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61075b838383610b78565b505050565b5f805481906001600160a01b031661271061077d856101f461121a565b6107879190611245565b915091505b9250929050565b5f546001600160a01b031633146107bd576040516330cd747160e01b815260040160405180910390fd5b5f54610d05906107de908390600160a01b90046001600160601b0316611258565b11156107fd576040516352df9fe560e01b815260040160405180910390fd5b6108073382610d46565b50565b5f546001600160a01b03163314610834576040516330cd747160e01b815260040160405180910390fd5b6040515f90339047908381818185875af1925050503d805f8114610873576040519150601f19603f3d011682016040523d82523d5f602084013e610878565b606091505b5050905080610807575f5ffd5b5f8054600160a01b90046001600160601b031682106108b75760405163163a09e160e31b815260040160405180910390fd5b815b5f818152600360205260409020546001600160a01b031680156108dd579392505050565b505f19016108b9565b5f54610d0590610907908390600160a01b90046001600160601b0316611258565b1115610926576040516352df9fe560e01b815260040160405180910390fd5b61093665886c98b760008261121a565b3410156107fd5760405163cd1c886760e01b815260040160405180910390fd5b335f8181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f546001600160a01b031633146109eb576040516330cd747160e01b815260040160405180910390fd5b60016109f884868361130d565b506001600160801b03908116600160801b029116176002555050565b610a1f858585610b78565b5050505050565b5f54606090600160a01b90046001600160601b03168210610a5a5760405163163a09e160e31b815260040160405180910390fd5b6001610a6583610e4a565b604051602001610a769291906113de565b6040516020818303038152906040529050919050565b323314610aac5760405163377401db60e11b815260040160405180910390fd5b6002545f54600160801b82046001600160801b0390811692600160a01b9092046001600160601b03169116610ae18383611258565b1115610b0057604051631fcc27c360e11b815260040160405180910390fd5b610d05610b0d8383611258565b1115610b2c576040516352df9fe560e01b815260040160405180910390fd5b335f9081526007602052604090205415610b59576040516398bdb27b60e01b815260040160405180910390fd5b335f818152600760205260409020839055610b749083610d46565b5050565b826001600160a01b0316610b8b82610885565b6001600160a01b031614610bb257604051632f35253160e01b815260040160405180910390fd5b336001600160a01b03841614801590610bee57506001600160a01b0383165f90815260066020908152604080832033845290915290205460ff16155b8015610c1057505f818152600560205260409020546001600160a01b03163314155b15610c2e5760405163c19f17a960e01b815260040160405180910390fd5b5f81815260056020908152604080832080546001600160a01b03199081169091556001600160a01b0387811685526004845282852080545f19019055861680855282852080546001908101909155868652600390945291842080549091169091179055610c9c908390611258565b5f54909150600160a01b90046001600160601b031681108015610cd357505f818152600360205260409020546001600160a01b0316155b15610cff575f81815260036020526040902080546001600160a01b0319166001600160a01b0386161790555b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b805f03610d665760405163f4f5b73360e01b815260040160405180910390fd5b5f8054600160a01b90046001600160601b031680825260036020908152604080842080546001600160a01b0319166001600160a01b038816908117909155845260049091528220805491928492610dbe908490611258565b909155505f90505b82811015610e1557610dd88183611258565b6040516001600160a01b038616905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4600101610dc6565b50610e208282611258565b5f60146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b6060815f03610e705750506040805180820190915260018152600360fc1b602082015290565b815f5b8115610e995780610e8381611491565b9150610e929050600a83611245565b9150610e73565b5f8167ffffffffffffffff811115610eb357610eb361126b565b6040519080825280601f01601f191660200182016040528015610edd576020820181803683370190505b5090505b8415610f4557610ef2600a866114a9565b610efd906030611258565b60f81b81610f0a846114bc565b93508381518110610f1d57610f1d6114d1565b60200101906001600160f81b03191690815f1a905350610f3e600a86611245565b9450610ee1565b949350505050565b5f60208284031215610f5d575f5ffd5b81356001600160e01b031981168114610f74575f5ffd5b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610fc0575f5ffd5b5035919050565b80356001600160a01b0381168114610fdd575f5ffd5b919050565b5f5f60408385031215610ff3575f5ffd5b610ffc83610fc7565b946020939093013593505050565b5f6020828403121561101a575f5ffd5b610f7482610fc7565b5f5f5f60608486031215611035575f5ffd5b61103e84610fc7565b925061104c60208501610fc7565b929592945050506040919091013590565b5f5f6040838503121561106e575f5ffd5b50508035926020909101359150565b5f5f6040838503121561108e575f5ffd5b61109783610fc7565b9150602083013580151581146110ab575f5ffd5b809150509250929050565b5f5f83601f8401126110c6575f5ffd5b50813567ffffffffffffffff8111156110dd575f5ffd5b60208301915083602082850101111561078c575f5ffd5b80356001600160801b0381168114610fdd575f5ffd5b5f5f5f5f6060858703121561111d575f5ffd5b843567ffffffffffffffff811115611133575f5ffd5b61113f878288016110b6565b90955093506111529050602086016110f4565b9150611160604086016110f4565b905092959194509250565b5f5f5f5f5f6080868803121561117f575f5ffd5b61118886610fc7565b945061119660208701610fc7565b935060408601359250606086013567ffffffffffffffff8111156111b8575f5ffd5b6111c4888289016110b6565b969995985093965092949392505050565b5f5f604083850312156111e6575f5ffd5b6111ef83610fc7565b91506111fd60208401610fc7565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761063c5761063c611206565b634e487b7160e01b5f52601260045260245ffd5b5f8261125357611253611231565b500490565b8082018082111561063c5761063c611206565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061129357607f821691505b6020821081036112b157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561075b578282111561075b57805f5260205f20601f840160051c60208510156112e257505f5b90810190601f840160051c035f5b81811015611305575f838201556001016112f0565b505050505050565b67ffffffffffffffff8311156113255761132561126b565b61133983611333835461127f565b836112b7565b5f601f84116001811461136a575f85156113535750838201355b5f19600387901b1c1916600186901b178355610a1f565b5f83815260208120601f198716915b828110156113995786850135825560209485019460019092019101611379565b50868210156113b5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f81518060208401855e5f93019283525090919050565b66697066733a2f2f60c81b81525f5f84546113f88161127f565b60018216801561140f576001811461142a5761145d565b60ff198316600787015260078215158302870101935061145d565b875f5260205f205f5b8381101561145257815488820160070152600190910190602001611433565b505060078287010193505b505050602f60f81b815261148861147760018301866113c7565b64173539b7b760d91b815260050190565b95945050505050565b5f600182016114a2576114a2611206565b5060010190565b5f826114b7576114b7611231565b500690565b5f816114ca576114ca611206565b505f190190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220c9031ebfbc2991a62121abe2231cef72f54828b5dc0b7a8640946789d18d789364736f6c63430008210033

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

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.