Contract

0x6B95fAe0cc2295b42fc206772A67cdc7Bf36A435

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Token9317272024-12-20 21:32:036 hrs ago1734730323IN
0x6B95fAe0...7Bf36A435
0 S0.001261831.1

Latest 1 internal transaction

Parent Transaction Hash Block From To
9317272024-12-20 21:32:036 hrs ago1734730323
0x6B95fAe0...7Bf36A435
 Contract Creation0 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SubderpTokenFactory

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-20
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

contract SubderpTokenV0 is ERC20 {    
    address treasury = 0x68705637c16bF32A28a82914f7aADEFB3aBE31CD;
    address derp = 0x8500d84b203775FC8B418148223872b35c43B050;
    uint256 maxSupply;
    uint256 creatorAllocation;
    uint256 treasuryAllocation;
    uint256 airdropAllocation;
    address creator;
    constructor (
        address _creator,
        uint256 _maxSupply, 
        string memory name, 
        string memory symbol) ERC20(name, symbol) {   
        maxSupply = _maxSupply;
        creatorAllocation = _maxSupply / 3;
        treasuryAllocation = _maxSupply / 3;
        airdropAllocation = _maxSupply - maxSupply / 3 - maxSupply / 3;
        creator = _creator;
    }

    mapping (uint256 => bool) claimedById;

    function airdrop(uint256 id) public {
        require(!claimedById[id], "already claimed");
        _mint(IERC721(derp).ownerOf(id), airdropAllocation / 2000);
        claimedById[id] = true;
    }

    function airdropRange(uint256 start, uint256 end) public {
        for (uint256 i = start; i < end + 1; i++) {
            airdrop(i);
        }
    }
    
    function airdropRemaining () public {
        for (uint256 i = 1; i < 2001; i++) {
            airdrop(i);
        }
    }

     function treasuryClaim () public {
        require (totalSupply() >= airdropAllocation, "call airdrop first");
        require ( totalSupply() < airdropAllocation + treasuryAllocation, "treasury claimed");
        _mint(treasury, treasuryAllocation);
    }

    function creatorClaim () public {
        require (totalSupply() >= airdropAllocation + treasuryAllocation, "call airdrop and treasuryClaim first");
        require (totalSupply() <= maxSupply, "maxSupply reached");
        _mint(creator, creatorAllocation);
        
    }
   
}

contract SubderpTokenFactory {
    address derp = 0x8500d84b203775FC8B418148223872b35c43B050;
    event TokenCreated(address indexed tokenAddress, address indexed owner, uint256 initialSupply);

    function createToken( 
        uint256 supplyDisplayAmount, 
        string memory name, 
        string memory symbol) public returns (address) {

        require(IERC721(derp).balanceOf(msg.sender) > 10, "you need ten derps little buddy");

        SubderpTokenV0 newToken = new SubderpTokenV0(msg.sender, supplyDisplayAmount * 1e18, name, symbol);
        emit TokenCreated(address(newToken), msg.sender, supplyDisplayAmount * 1e18);
        return address(newToken);
        
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"initialSupply","type":"uint256"}],"name":"TokenCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"supplyDisplayAmount","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}]

60806040525f80546001600160a01b031916738500d84b203775fc8b418148223872b35c43b0501790553480156033575f5ffd5b50611998806100415f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063b1037e781461002d575b5f5ffd5b61004061003b366004610316565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f80546040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152600a9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156100d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610383565b11610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f796f75206e6565642074656e206465727073206c6974746c6520627564647900604482015260640160405180910390fd5b5f3361017986670de0b6b3a764000061039a565b858560405161018790610214565b6101949493929190610428565b604051809103905ff0801580156101ad573d5f5f3e3d5ffd5b5090503373ffffffffffffffffffffffffffffffffffffffff82167ffde888083b38fe6deac8498d5daebda0d38d0d3e6167e434b633f955152766fa6101fb88670de0b6b3a764000061039a565b60405190815260200160405180910390a3949350505050565b6114e98061047a83390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261025d575f5ffd5b813567ffffffffffffffff81111561027757610277610221565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156102e3576102e3610221565b6040528181528382016020018510156102fa575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215610328575f5ffd5b83359250602084013567ffffffffffffffff811115610345575f5ffd5b6103518682870161024e565b925050604084013567ffffffffffffffff81111561036d575f5ffd5b6103798682870161024e565b9150509250925092565b5f60208284031215610393575f5ffd5b5051919050565b80820281158282048414176103d6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f61045c60808301856103dc565b828103606084015261046e81856103dc565b97965050505050505056fe6080604052600580546001600160a01b03199081167368705637c16bf32a28a82914f7aadefb3abe31cd1790915560068054909116738500d84b203775fc8b418148223872b35c43b050179055348015610057575f5ffd5b506040516114e93803806114e9833981016040819052610076916101b0565b8181600361008483826102c0565b50600461009182826102c0565b50505060078390556100a460038461037a565b6008556100b260038461037a565b6009556007546100c49060039061037a565b60036007546100d3919061037a565b6100dd9085610399565b6100e79190610399565b600a555050600b80546001600160a01b0319166001600160a01b039390931692909217909155506103be565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610136575f5ffd5b81516001600160401b0381111561014f5761014f610113565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017d5761017d610113565b604052818152838201602001851015610194575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101c3575f5ffd5b84516001600160a01b03811681146101d9575f5ffd5b6020860151604087015191955093506001600160401b038111156101fb575f5ffd5b61020787828801610127565b606087015190935090506001600160401b03811115610224575f5ffd5b61023087828801610127565b91505092959194509250565b600181811c9082168061025057607f821691505b60208210810361026e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102bb57805f5260205f20601f840160051c810160208510156102995750805b601f840160051c820191505b818110156102b8575f81556001016102a5565b50505b505050565b81516001600160401b038111156102d9576102d9610113565b6102ed816102e7845461023c565b84610274565b6020601f82116001811461031f575f83156103085750848201515b5f19600385901b1c1916600184901b1784556102b8565b5f84815260208120601f198516915b8281101561034e578785015182556020948501946001909201910161032e565b508482101561036b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8261039457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103b857634e487b7160e01b5f52601160045260245ffd5b92915050565b61111e806103cb5f395ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c8063837af7351161009357806397dc4a131161006357806397dc4a13146101f1578063a457c2d714610204578063a9059cbb14610217578063dd62ed3e1461022a575f5ffd5b8063837af735146101c657806384400585146101d95780639380b1cf146101e157806395d89b41146101e9575f5ffd5b8063313ce567116100ce578063313ce5671461016557806339509351146101745780635475a7be1461018757806370a0823114610191575f5ffd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610152575b5f5ffd5b61010761026f565b6040516101149190610ea0565b60405180910390f35b61013061012b366004610f14565b6102ff565b6040519015158152602001610114565b6002545b604051908152602001610114565b610130610160366004610f3e565b610315565b60405160128152602001610114565b610130610182366004610f14565b6103fe565b61018f610446565b005b61014461019f366004610f7c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b61018f6101d4366004610f9e565b610556565b61018f610580565b61018f6105a1565b6101076106d5565b61018f6101ff366004610fbe565b6106e4565b610130610212366004610f14565b61083c565b610130610225366004610f14565b610913565b610144610238366004610fd5565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b60606003805461027e9061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa9061100c565b80156102f55780601f106102cc576101008083540402835291602001916102f5565b820191905f5260205f20905b8154815290600101906020018083116102d857829003601f168201915b5050505050905090565b5f61030b33848461091f565b5060015b92915050565b5f610321848484610ad1565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160209081526040808320338452909152902054828110156103e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103f3853385840361091f565b506001949350505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161030b91859061044190869061105d565b61091f565b600a5460025410156104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f63616c6c2061697264726f70206669727374000000000000000000000000000060448201526064016103dd565b600954600a546104c4919061105d565b6002541061052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f747265617375727920636c61696d65640000000000000000000000000000000060448201526064016103dd565b6005546009546105549173ffffffffffffffffffffffffffffffffffffffff1690610d83565b565b815b61056382600161105d565b81101561057b57610573816106e4565b600101610558565b505050565b60015b6107d181101561059e57610596816106e4565b600101610583565b50565b600954600a546105b1919061105d565b6002541015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f63616c6c2061697264726f7020616e64207472656173757279436c61696d206660448201527f697273740000000000000000000000000000000000000000000000000000000060648201526084016103dd565b60075460025411156106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6d6178537570706c79207265616368656400000000000000000000000000000060448201526064016103dd565b600b546008546105549173ffffffffffffffffffffffffffffffffffffffff1690610d83565b60606004805461027e9061100c565b5f818152600c602052604090205460ff161561075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f616c726561647920636c61696d6564000000000000000000000000000000000060448201526064016103dd565b6006546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526108049173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa1580156107cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ef9190611095565b6107d0600a546107ff91906110b0565b610d83565b5f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156108fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103dd565b610909338585840361091f565b5060019392505050565b5f61030b338484610ad1565b73ffffffffffffffffffffffffffffffffffffffff83166109c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8216610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8216610c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015610ccc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8085165f90815260208190526040808220858503905591851681529081208054849290610d0f90849061105d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103dd565b8060025f828254610e11919061105d565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604081208054839290610e4a90849061105d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059e575f5ffd5b5f5f60408385031215610f25575f5ffd5b8235610f3081610ef3565b946020939093013593505050565b5f5f5f60608486031215610f50575f5ffd5b8335610f5b81610ef3565b92506020840135610f6b81610ef3565b929592945050506040919091013590565b5f60208284031215610f8c575f5ffd5b8135610f9781610ef3565b9392505050565b5f5f60408385031215610faf575f5ffd5b50508035926020909101359150565b5f60208284031215610fce575f5ffd5b5035919050565b5f5f60408385031215610fe6575f5ffd5b8235610ff181610ef3565b9150602083013561100181610ef3565b809150509250929050565b600181811c9082168061102057607f821691505b602082108103611057577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b8082018082111561030f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f602082840312156110a5575f5ffd5b8151610f9781610ef3565b5f826110e3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122014a2a719859936a626c91762993e75bf851a899fadcf07dfed85eb49fedee01e64736f6c634300081c0033a2646970667358221220cb4df6fb31da15e39566bcb9de8939f20f42227eeac63e21ff6d1c7a2688b31764736f6c634300081c0033

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063b1037e781461002d575b5f5ffd5b61004061003b366004610316565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f80546040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152600a9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156100d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fa9190610383565b11610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f796f75206e6565642074656e206465727073206c6974746c6520627564647900604482015260640160405180910390fd5b5f3361017986670de0b6b3a764000061039a565b858560405161018790610214565b6101949493929190610428565b604051809103905ff0801580156101ad573d5f5f3e3d5ffd5b5090503373ffffffffffffffffffffffffffffffffffffffff82167ffde888083b38fe6deac8498d5daebda0d38d0d3e6167e434b633f955152766fa6101fb88670de0b6b3a764000061039a565b60405190815260200160405180910390a3949350505050565b6114e98061047a83390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261025d575f5ffd5b813567ffffffffffffffff81111561027757610277610221565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156102e3576102e3610221565b6040528181528382016020018510156102fa575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215610328575f5ffd5b83359250602084013567ffffffffffffffff811115610345575f5ffd5b6103518682870161024e565b925050604084013567ffffffffffffffff81111561036d575f5ffd5b6103798682870161024e565b9150509250925092565b5f60208284031215610393575f5ffd5b5051919050565b80820281158282048414176103d6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f61045c60808301856103dc565b828103606084015261046e81856103dc565b97965050505050505056fe6080604052600580546001600160a01b03199081167368705637c16bf32a28a82914f7aadefb3abe31cd1790915560068054909116738500d84b203775fc8b418148223872b35c43b050179055348015610057575f5ffd5b506040516114e93803806114e9833981016040819052610076916101b0565b8181600361008483826102c0565b50600461009182826102c0565b50505060078390556100a460038461037a565b6008556100b260038461037a565b6009556007546100c49060039061037a565b60036007546100d3919061037a565b6100dd9085610399565b6100e79190610399565b600a555050600b80546001600160a01b0319166001600160a01b039390931692909217909155506103be565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610136575f5ffd5b81516001600160401b0381111561014f5761014f610113565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017d5761017d610113565b604052818152838201602001851015610194575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101c3575f5ffd5b84516001600160a01b03811681146101d9575f5ffd5b6020860151604087015191955093506001600160401b038111156101fb575f5ffd5b61020787828801610127565b606087015190935090506001600160401b03811115610224575f5ffd5b61023087828801610127565b91505092959194509250565b600181811c9082168061025057607f821691505b60208210810361026e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102bb57805f5260205f20601f840160051c810160208510156102995750805b601f840160051c820191505b818110156102b8575f81556001016102a5565b50505b505050565b81516001600160401b038111156102d9576102d9610113565b6102ed816102e7845461023c565b84610274565b6020601f82116001811461031f575f83156103085750848201515b5f19600385901b1c1916600184901b1784556102b8565b5f84815260208120601f198516915b8281101561034e578785015182556020948501946001909201910161032e565b508482101561036b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8261039457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156103b857634e487b7160e01b5f52601160045260245ffd5b92915050565b61111e806103cb5f395ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c8063837af7351161009357806397dc4a131161006357806397dc4a13146101f1578063a457c2d714610204578063a9059cbb14610217578063dd62ed3e1461022a575f5ffd5b8063837af735146101c657806384400585146101d95780639380b1cf146101e157806395d89b41146101e9575f5ffd5b8063313ce567116100ce578063313ce5671461016557806339509351146101745780635475a7be1461018757806370a0823114610191575f5ffd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610152575b5f5ffd5b61010761026f565b6040516101149190610ea0565b60405180910390f35b61013061012b366004610f14565b6102ff565b6040519015158152602001610114565b6002545b604051908152602001610114565b610130610160366004610f3e565b610315565b60405160128152602001610114565b610130610182366004610f14565b6103fe565b61018f610446565b005b61014461019f366004610f7c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b61018f6101d4366004610f9e565b610556565b61018f610580565b61018f6105a1565b6101076106d5565b61018f6101ff366004610fbe565b6106e4565b610130610212366004610f14565b61083c565b610130610225366004610f14565b610913565b610144610238366004610fd5565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b60606003805461027e9061100c565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa9061100c565b80156102f55780601f106102cc576101008083540402835291602001916102f5565b820191905f5260205f20905b8154815290600101906020018083116102d857829003601f168201915b5050505050905090565b5f61030b33848461091f565b5060015b92915050565b5f610321848484610ad1565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160209081526040808320338452909152902054828110156103e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103f3853385840361091f565b506001949350505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161030b91859061044190869061105d565b61091f565b600a5460025410156104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f63616c6c2061697264726f70206669727374000000000000000000000000000060448201526064016103dd565b600954600a546104c4919061105d565b6002541061052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f747265617375727920636c61696d65640000000000000000000000000000000060448201526064016103dd565b6005546009546105549173ffffffffffffffffffffffffffffffffffffffff1690610d83565b565b815b61056382600161105d565b81101561057b57610573816106e4565b600101610558565b505050565b60015b6107d181101561059e57610596816106e4565b600101610583565b50565b600954600a546105b1919061105d565b6002541015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f63616c6c2061697264726f7020616e64207472656173757279436c61696d206660448201527f697273740000000000000000000000000000000000000000000000000000000060648201526084016103dd565b60075460025411156106af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6d6178537570706c79207265616368656400000000000000000000000000000060448201526064016103dd565b600b546008546105549173ffffffffffffffffffffffffffffffffffffffff1690610d83565b60606004805461027e9061100c565b5f818152600c602052604090205460ff161561075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f616c726561647920636c61696d6564000000000000000000000000000000000060448201526064016103dd565b6006546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526108049173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa1580156107cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ef9190611095565b6107d0600a546107ff91906110b0565b610d83565b5f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156108fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103dd565b610909338585840361091f565b5060019392505050565b5f61030b338484610ad1565b73ffffffffffffffffffffffffffffffffffffffff83166109c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8216610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8216610c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015610ccc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103dd565b73ffffffffffffffffffffffffffffffffffffffff8085165f90815260208190526040808220858503905591851681529081208054849290610d0f90849061105d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103dd565b8060025f828254610e11919061105d565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604081208054839290610e4a90849061105d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059e575f5ffd5b5f5f60408385031215610f25575f5ffd5b8235610f3081610ef3565b946020939093013593505050565b5f5f5f60608486031215610f50575f5ffd5b8335610f5b81610ef3565b92506020840135610f6b81610ef3565b929592945050506040919091013590565b5f60208284031215610f8c575f5ffd5b8135610f9781610ef3565b9392505050565b5f5f60408385031215610faf575f5ffd5b50508035926020909101359150565b5f60208284031215610fce575f5ffd5b5035919050565b5f5f60408385031215610fe6575f5ffd5b8235610ff181610ef3565b9150602083013561100181610ef3565b809150509250929050565b600181811c9082168061102057607f821691505b602082108103611057577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b8082018082111561030f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f602082840312156110a5575f5ffd5b8151610f9781610ef3565b5f826110e3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122014a2a719859936a626c91762993e75bf851a899fadcf07dfed85eb49fedee01e64736f6c634300081c0033a2646970667358221220cb4df6fb31da15e39566bcb9de8939f20f42227eeac63e21ff6d1c7a2688b31764736f6c634300081c0033

Deployed Bytecode Sourcemap

13198:702:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13401:496;;;;;;:::i;:::-;;:::i;:::-;;;1839:42:1;1827:55;;;1809:74;;1797:2;1782:18;13401:496:0;;;;;;;;13540:7;13578:4;;13570:35;;;;;13594:10;13570:35;;;1809:74:1;13608:2:0;;13578:4;;;13570:23;;1782:18:1;;13570:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;13562:84;;;;;;;2285:2:1;13562:84:0;;;2267:21:1;2324:2;2304:18;;;2297:30;2363:33;2343:18;;;2336:61;2414:18;;13562:84:0;;;;;;;;13659:23;13704:10;13716:26;:19;13738:4;13716:26;:::i;:::-;13744:4;13750:6;13685:72;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13659:98:0;-1:-1:-1;13805:10:0;13773:71;;;;13817:26;:19;13839:4;13817:26;:::i;:::-;13773:71;;3850:25:1;;;3838:2;3823:18;13773:71:0;;;;;;;13870:8;13401:496;-1:-1:-1;;;;13401:496:0:o;-1:-1:-1:-;;;;;;;;:::o;14:184:1:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:844;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;357:6;344:20;387:18;379:6;376:30;373:56;;;409:18;;:::i;:::-;458:2;452:9;605:66;600:2;531:66;524:4;516:6;512:17;508:90;504:99;500:172;492:6;488:185;739:6;727:10;724:22;703:18;691:10;688:34;685:62;682:88;;;750:18;;:::i;:::-;786:2;779:22;810;;;851:19;;;872:4;847:30;844:39;-1:-1:-1;841:59:1;;;896:1;893;886:12;841:59;960:6;953:4;945:6;941:17;934:4;926:6;922:17;909:58;1015:1;987:19;;;1008:4;983:30;976:41;;;;991:6;203:844;-1:-1:-1;;;203:844:1:o;1052:606::-;1149:6;1157;1165;1218:2;1206:9;1197:7;1193:23;1189:32;1186:52;;;1234:1;1231;1224:12;1186:52;1270:9;1257:23;1247:33;;1331:2;1320:9;1316:18;1303:32;1358:18;1350:6;1347:30;1344:50;;;1390:1;1387;1380:12;1344:50;1413;1455:7;1446:6;1435:9;1431:22;1413:50;:::i;:::-;1403:60;;;1516:2;1505:9;1501:18;1488:32;1545:18;1535:8;1532:32;1529:52;;;1577:1;1574;1567:12;1529:52;1600;1644:7;1633:8;1622:9;1618:24;1600:52;:::i;:::-;1590:62;;;1052:606;;;;;:::o;1894:184::-;1964:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:52;;;2033:1;2030;2023:12;1985:52;-1:-1:-1;2056:16:1;;1894:184;-1:-1:-1;1894:184:1:o;2443:322::-;2516:9;;;2547;;2564:15;;;2558:22;;2544:37;2534:225;;2615:77;2612:1;2605:88;2716:4;2713:1;2706:15;2744:4;2741:1;2734:15;2534:225;2443:322;;;;:::o;2770:348::-;2812:3;2850:5;2844:12;2877:6;2872:3;2865:19;2933:6;2926:4;2919:5;2915:16;2908:4;2903:3;2899:14;2893:47;2985:1;2978:4;2969:6;2964:3;2960:16;2956:27;2949:38;3107:4;3037:66;3032:2;3024:6;3020:15;3016:88;3011:3;3007:98;3003:109;2996:116;;;2770:348;;;;:::o;3123:576::-;3388:42;3380:6;3376:55;3365:9;3358:74;3468:6;3463:2;3452:9;3448:18;3441:34;3511:3;3506:2;3495:9;3491:18;3484:31;3339:4;3538:46;3579:3;3568:9;3564:19;3556:6;3538:46;:::i;:::-;3632:9;3624:6;3620:22;3615:2;3604:9;3600:18;3593:50;3660:33;3686:6;3678;3660:33;:::i;:::-;3652:41;3123:576;-1:-1:-1;;;;;;;3123:576:1:o

Swarm Source

ipfs://cb4df6fb31da15e39566bcb9de8939f20f42227eeac63e21ff6d1c7a2688b317

Block Transaction 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
[ 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.