ETH Price: $1,881.47 (+0.12%)Gas: 0.031 GweiBase: 0.0311 GweiPriority: 0.0000 GweiTotal: 0.0311 Gwei

Contract

MOG(MOG)0x5ff24CCDFd09Bb1c0e8A0E80b5aBfb85b2e86c19
Overview
ETH Balance
0 ETH
ETH Value
$0.00 (@ $1,881/ETH)
Token Holdings
More Info
Private Name Tags
Token Tracker
Contract Creator
Additional Info
Funded By
0x8355…f5f3 · 36 days ago
Token Approvals
AnalyticsHolders
✓ VerifiedExact MatchMOG⤢ Open full
Contract Name
LaunchToken (MOG)
Compiler
solidity · v0.8.30+commit.73712a01
Optimization
Yes · 200 runs
EVM Version
shanghai
Source
Mirrored from Robinhood Chain explorer
Contract Source Code
Outline
I IUniswapV3Factory
ƒ getPool
L LauncherTypes
C LaunchToken
ƒ liquidityPool
ƒ maxWalletLimit
ƒ maxTxLimit
ƒ getTokenInfo
ƒ deployer
ƒ logo
ƒ description
ƒ socials
ƒ _update
LaunchToken.sol
// SPDX-License-Identifier: MIT

// throbbin.xyz
// x.com/throbbinxyz
// the bird with a boner

pragma solidity ^0.8.30;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";

interface IUniswapV3Factory {
    function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);
}

library LauncherTypes {
    struct Socials {
        string telegram;
        string twitter;
        string discord;
        string website;
        string farcaster;
    }

    struct TokenConfig {
        string name;
        string symbol;
        uint256 supply;
        address pairToken;
        address positionManager;
        address dexFactory;
        uint24 poolFee;
        uint16 maxWalletBps;
        uint16 maxTxBps;
        uint32 restrictionBlocks;
    }

    struct TokenInfo {
        address deployer;
        string logo;
        string description;
        Socials socials;
    }
}

contract LaunchToken is ERC20 {
    error MaxWalletExceeded(address account, uint256 balanceAfter, uint256 maxWallet);
    error MaxTxExceeded(address account, uint256 amount, uint256 maxTx);
    error LaunchBlockBuyBlocked(address account);

    LauncherTypes.TokenInfo private _tokenInfo;
    mapping(address account => uint256 amount) private _originBought;

    address public immutable launchFactory;
    address public immutable pairToken;
    address public immutable positionManager;
    address public immutable dexFactory;
    uint24 public immutable poolFee;
    uint16 public immutable maxWalletBps;
    uint16 public immutable maxTxBps;
    uint32 public immutable restrictionBlocks;
    uint256 public immutable launchBlock;
    uint256 public immutable restrictionEndBlock;
    uint256 public immutable maxWalletAmount;
    uint256 public immutable maxTxAmount;

    constructor(LauncherTypes.TokenConfig memory config, LauncherTypes.TokenInfo memory info)
        ERC20(config.name, config.symbol)
    {
        launchFactory = msg.sender;
        pairToken = config.pairToken;
        positionManager = config.positionManager;
        dexFactory = config.dexFactory;
        poolFee = config.poolFee;
        maxWalletBps = config.maxWalletBps;
        maxTxBps = config.maxTxBps;
        restrictionBlocks = config.restrictionBlocks;
        launchBlock = block.number;
        restrictionEndBlock = config.restrictionBlocks == 0 ? block.number : block.number + config.restrictionBlocks;
        maxWalletAmount = (config.supply * config.maxWalletBps) / 10_000;
        maxTxAmount = (config.supply * config.maxTxBps) / 10_000;

        _tokenInfo = info;

        _mint(msg.sender, config.supply);
    }

    function liquidityPool() public view returns (address) {
        return IUniswapV3Factory(dexFactory).getPool(address(this), pairToken, poolFee);
    }

    function maxWalletLimit() external view returns (uint256) {
        return maxWalletAmount;
    }

    function maxTxLimit() external view returns (uint256) {
        return maxTxAmount;
    }

    function getTokenInfo() external view returns (LauncherTypes.TokenInfo memory) {
        return _tokenInfo;
    }

    function deployer() external view returns (address) {
        return _tokenInfo.deployer;
    }

    function logo() external view returns (string memory) {
        return _tokenInfo.logo;
    }

    function description() external view returns (string memory) {
        return _tokenInfo.description;
    }

    function socials() external view returns (LauncherTypes.Socials memory) {
        return _tokenInfo.socials;
    }

    function _update(address from, address to, uint256 value) internal override {
        bool restrictionsActive = block.number > launchBlock && block.number <= restrictionEndBlock;
        address pool;
        bool onLaunchBlock = block.number == launchBlock;
        if (restrictionsActive || onLaunchBlock) {
            pool = liquidityPool();
            if (pool == address(0)) {
                restrictionsActive = false;
                onLaunchBlock = false;
            }
        }

        if (
            onLaunchBlock &&
            value > 0 &&
            from == pool &&
            to != launchFactory &&
            to != _tokenInfo.deployer
        ) {
            revert LaunchBlockBuyBlocked(to);
        }

        if (restrictionsActive && value > 0) {
            if (from == pool && to != launchFactory && to != _tokenInfo.deployer) {
                uint256 bought = _originBought[tx.origin] + value;
                _originBought[tx.origin] = bought;
                uint256 maxBuy = (maxTxAmount * 11_000) / 10_000;
                if (maxBuy == 0 || bought > maxBuy) {
                    revert MaxTxExceeded(tx.origin, bought, maxBuy);
                }
            }

            if (
                from != address(0) &&
                to != launchFactory &&
                to != _tokenInfo.deployer &&
                to != pool
            ) {
                uint256 balanceAfter = balanceOf(to) + value;
                if (balanceAfter > maxWalletAmount) {
                    revert MaxWalletExceeded(to, balanceAfter, maxWalletAmount);
                }
            }
        }

        super._update(from, to, value);
    }
}
Contract ABI
[
 {
  "type": "constructor",
  "inputs": [
   {
    "name": "config",
    "type": "tuple",
    "components": [
     {
      "name": "name",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "symbol",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "supply",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "pairToken",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "positionManager",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "dexFactory",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "poolFee",
      "type": "uint24",
      "internalType": "uint24"
     },
     {
      "name": "maxWalletBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "maxTxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "restrictionBlocks",
      "type": "uint32",
      "internalType": "uint32"
     }
    ],
    "internalType": "struct LauncherTypes.TokenConfig"
   },
   {
    "name": "info",
    "type": "tuple",
    "components": [
     {
      "name": "deployer",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "logo",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "description",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "socials",
      "type": "tuple",
      "components": [
       {
        "name": "telegram",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "twitter",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "discord",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "website",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "farcaster",
        "type": "string",
        "internalType": "string"
       }
      ],
      "internalType": "struct LauncherTypes.Socials"
     }
    ],
    "internalType": "struct LauncherTypes.TokenInfo"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "name": "ERC20InsufficientAllowance",
  "type": "error",
  "inputs": [
   {
    "name": "spender",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "allowance",
    "type": "uint256",
    "internalType": "uint256"
   },
   {
    "name": "needed",
    "type": "uint256",
    "internalType": "uint256"
   }
  ]
 },
 {
  "name": "ERC20InsufficientBalance",
  "type": "error",
  "inputs": [
   {
    "name": "sender",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "balance",
    "type": "uint256",
    "internalType": "uint256"
   },
   {
    "name": "needed",
    "type": "uint256",
    "internalType": "uint256"
   }
  ]
 },
 {
  "name": "ERC20InvalidApprover",
  "type": "error",
  "inputs": [
   {
    "name": "approver",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "name": "ERC20InvalidReceiver",
  "type": "error",
  "inputs": [
   {
    "name": "receiver",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "name": "ERC20InvalidSender",
  "type": "error",
  "inputs": [
   {
    "name": "sender",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "name": "ERC20InvalidSpender",
  "type": "error",
  "inputs": [
   {
    "name": "spender",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "name": "LaunchBlockBuyBlocked",
  "type": "error",
  "inputs": [
   {
    "name": "account",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "name": "MaxTxExceeded",
  "type": "error",
  "inputs": [
   {
    "name": "account",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "amount",
    "type": "uint256",
    "internalType": "uint256"
   },
   {
    "name": "maxTx",
    "type": "uint256",
    "internalType": "uint256"
   }
  ]
 },
 {
  "name": "MaxWalletExceeded",
  "type": "error",
  "inputs": [
   {
    "name": "account",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "balanceAfter",
    "type": "uint256",
    "internalType": "uint256"
   },
   {
    "name": "maxWallet",
    "type": "uint256",
    "internalType": "uint256"
   }
  ]
 },
 {
  "name": "Approval",
  "type": "event",
  "inputs": [
   {
    "name": "owner",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "spender",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "value",
    "type": "uint256",
    "indexed": false,
    "internalType": "uint256"
   }
  ],
  "anonymous": false
 },
 {
  "name": "Transfer",
  "type": "event",
  "inputs": [
   {
    "name": "from",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "to",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "value",
    "type": "uint256",
    "indexed": false,
    "internalType": "uint256"
   }
  ],
  "anonymous": false
 },
 {
  "name": "allowance",
  "type": "function",
  "inputs": [
   {
    "name": "owner",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "spender",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "approve",
  "type": "function",
  "inputs": [
   {
    "name": "spender",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "value",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "name": "balanceOf",
  "type": "function",
  "inputs": [
   {
    "name": "account",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "decimals",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint8",
    "internalType": "uint8"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "deployer",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "description",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "dexFactory",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "getTokenInfo",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "components": [
     {
      "name": "deployer",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "logo",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "description",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "socials",
      "type": "tuple",
      "components": [
       {
        "name": "telegram",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "twitter",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "discord",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "website",
        "type": "string",
        "internalType": "string"
       },
       {
        "name": "farcaster",
        "type": "string",
        "internalType": "string"
       }
      ],
      "internalType": "struct LauncherTypes.Socials"
     }
    ],
    "internalType": "struct LauncherTypes.TokenInfo"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "launchBlock",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "launchFactory",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "liquidityPool",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "logo",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxTxAmount",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxTxBps",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint16",
    "internalType": "uint16"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxTxLimit",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxWalletAmount",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxWalletBps",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint16",
    "internalType": "uint16"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "maxWalletLimit",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "name",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "pairToken",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "poolFee",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint24",
    "internalType": "uint24"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "positionManager",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "restrictionBlocks",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint32",
    "internalType": "uint32"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "restrictionEndBlock",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "socials",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "components": [
     {
      "name": "telegram",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "twitter",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "discord",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "website",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "farcaster",
      "type": "string",
      "internalType": "string"
     }
    ],
    "internalType": "struct LauncherTypes.Socials"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "symbol",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "totalSupply",
  "type": "function",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "name": "transfer",
  "type": "function",
  "inputs": [
   {
    "name": "to",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "value",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "name": "transferFrom",
  "type": "function",
  "inputs": [
   {
    "name": "from",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "to",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "value",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "nonpayable"
 }
]
Creation code isn’t shown — this contract was deployed by a factory (internal CREATE), so it has no standalone creation transaction.
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146108e15780630861ac61146108a7578063089fe6aa14610868578063095ea7b3146107e657806312f16a07146107a857806318160ddd1461078b57806323b872dd146106ac578063313ce567146106915780633de35b791461064d578063536dac9b1461060957806353cd512a146105d1578063665a11ca146105a557806366a88d96146103e057806370a082311461056e5780637284e41614610553578063791b98bc1461050f5780638036d5901461050a5780638c0b5e221461050a57806395d89b4114610416578063a9059cbb146103e5578063aa4bde28146103e0578063abb1dc4414610303578063b8d8fbb4146102bf578063baed07651461027f578063d00efb2f14610245578063d5f394881461021d578063dd62ed3e146101cd578063fb7f21eb1461019a5763ff8ea3e514610158575f80fd5b34610196575f36600319011261019657602060405161ffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b5f80fd5b34610196575f366003190112610196576101c96101b5610c23565b60405191829160208352602083019061099c565b0390f35b34610196576040366003190112610196576101e66109db565b6101ee6109f1565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b34610196575f366003190112610196576005546040516001600160a01b039091168152602090f35b34610196575f3660031901126101965760206040517f000000000000000000000000000000000000000000000000000000000185277b8152f35b34610196575f36600319011261019657602060405163ffffffff7f000000000000000000000000000000000000000000000000000000000000016e168152f35b34610196575f366003190112610196576040517f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03168152602090f35b34610196575f3660031901126101965760405161031f81610ae7565b5f81526060602082015260606040820152606061033a610d85565b91015260405161034981610ae7565b6005546001600160a01b0316815261035f610c23565b90602081019182526101c9610372610b55565b604083019081526103cd610384610daf565b91606085019283526103ba6040519687966020885260018060a01b039051166020880152516080604088015260a087019061099c565b9051858203601f1901606087015261099c565b9051838203601f19016080850152610a07565b610a73565b346101965760403660031901126101965761040b6104016109db565b6024359033610efe565b602060405160018152f35b34610196575f366003190112610196576040515f6004548060011c90600181168015610500575b6020831081146104ec578285529081156104c8575060011461046a575b6101c9836101b581850382610b33565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106104ae575090915081016020016101b561045a565b919260018160209254838588010152019101909291610496565b60ff191660208086019190915291151560051b840190910191506101b5905061045a565b634e487b7160e01b5f52602260045260245ffd5b91607f169161043d565b610aad565b34610196575f366003190112610196576040517f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03168152602090f35b34610196575f366003190112610196576101c96101b5610b55565b34610196576020366003190112610196576001600160a01b0361058f6109db565b165f525f602052602060405f2054604051908152f35b34610196575f3660031901126101965760206105bf610e07565b6040516001600160a01b039091168152f35b34610196575f366003190112610196576105e9610d85565b506101c96105f5610daf565b604051918291602083526020830190610a07565b34610196575f366003190112610196576040517f000000000000000000000000d9ec2db5f3d1b236843925949fe5bd8a3836fccb6001600160a01b03168152602090f35b34610196575f366003190112610196576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b34610196575f36600319011261019657602060405160128152f35b34610196576060366003190112610196576106c56109db565b6106cd6109f1565b6001600160a01b0382165f818152600160209081526040808320338452909152902054909260443592915f19811061070b575b5061040b9350610efe565b83811061077057841561075d57331561074a5761040b945f52600160205260405f2060018060a01b0333165f526020528360405f209103905584610700565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b34610196575f366003190112610196576020600254604051908152f35b34610196575f36600319011261019657602060405161ffff7f00000000000000000000000000000000000000000000000000000000000000c8168152f35b34610196576040366003190112610196576107ff6109db565b60243590331561075d576001600160a01b031690811561074a57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610196575f36600319011261019657602060405162ffffff7f0000000000000000000000000000000000000000000000000000000000002710168152f35b34610196575f3660031901126101965760206040517f00000000000000000000000000000000000000000000000000000000018528e98152f35b34610196575f366003190112610196576040515f6003548060011c90600181168015610992575b6020831081146104ec578285529081156104c85750600114610934576101c9836101b581850382610b33565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210610978575090915081016020016101b561045a565b919260018160209254838588010152019101909291610960565b91607f1691610908565b91908251928382525f5b8481106109c6575050825f602080949584010152601f8019910116010190565b806020809284010151828286010152016109a6565b600435906001600160a01b038216820361019657565b602435906001600160a01b038216820361019657565b610a70916080610a5f610a4d610a3b610a29865160a0875260a087019061099c565b6020870151868203602088015261099c565b6040860151858203604087015261099c565b6060850151848203606086015261099c565b92015190608081840391015261099c565b90565b34610196575f3660031901126101965760206040517f000000000000000000000000000000000000000000108b2a2c280290940000008152f35b34610196575f3660031901126101965760206040517f0000000000000000000000000000000000000000033b2e3c9fd0803ce80000008152f35b6080810190811067ffffffffffffffff821117610b0357604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610b0357604052565b90601f8019910116810190811067ffffffffffffffff821117610b0357604052565b604051905f6007548060011c9160018216918215610c19575b6020841083146104ec578386528592908115610bfa5750600114610b9b575b610b9992500383610b33565b565b5060075f90815290917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b818310610bde575050906020610b9992820101610b8d565b6020919350806001915483858901015201910190918492610bc6565b60209250610b9994915060ff191682840152151560051b820101610b8d565b92607f1692610b6e565b604051905f6006548060011c9160018216918215610cc5575b6020841083146104ec578386528592908115610bfa5750600114610c6657610b9992500383610b33565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b818310610ca9575050906020610b9992820101610b8d565b6020919350806001915483858901015201910190918492610c91565b92607f1692610c3c565b90604051915f8154908160011c9260018316928315610d7b575b6020851084146104ec578487528693908115610d595750600114610d15575b50610b9992500383610b33565b90505f9291925260205f20905f915b818310610d3d575050906020610b99928201015f610d08565b6020919350806001915483858901015201910190918492610d24565b905060209250610b9994915060ff191682840152151560051b8201015f610d08565b93607f1693610ce9565b60405190610d9282610b17565b606060808382815282602082015282604082015282808201520152565b60405190610dbc82610b17565b81610dc76008610ccf565b8152610dd36009610ccf565b6020820152610de2600a610ccf565b6040820152610df1600b610ccf565b60608201526080610e02600c610ccf565b910152565b604051630b4c774160e11b81523060048201526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738116602483015262ffffff7f0000000000000000000000000000000000000000000000000000000000002710166044830152602090829060649082907f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa165afa908115610ef3575f91610eb4575090565b90506020813d602011610eeb575b81610ecf60209383610b33565b8101031261019657516001600160a01b03811681036101965790565b3d9150610ec2565b6040513d5f823e3d90fd5b6001600160a01b03169081156112b1576001600160a01b031691821561129e577f000000000000000000000000000000000000000000000000000000000185277b80431180611274575b5f91431481801561126d575b61124b575b80611242575b80611230575b806111fd575b806111e8575b6111d557806111cc575b610ff8575b50815f525f60205260405f2054818110610fdf57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b6001600160a01b031682811480611199575b80611184575b6110da575b7f000000000000000000000000d9ec2db5f3d1b236843925949fe5bd8a3836fccb6001600160a01b031684141590816110c4575b816110b9575b5061105b575b5f610f80565b825f525f6020526110708160405f20546112c4565b7f000000000000000000000000000000000000000000108b2a2c28029094000000908181116110a0575050611055565b846304a43e8b60e51b5f5260045260245260445260645ffd5b90508314155f61104f565b6005546001600160a01b03168514159150611049565b325f52600d6020526110f08260405f20546112c4565b325f52600d6020528060405f20557f0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000612af8810290808204612af814901517156111705761271090049081158015611167575b61114e575050611015565b6334e5f8b760e21b5f523260045260245260445260645ffd5b50818111611143565b634e487b7160e01b5f52601160045260245ffd5b506005546001600160a01b0316841415611010565b507f000000000000000000000000d9ec2db5f3d1b236843925949fe5bd8a3836fccb6001600160a01b031684141561100a565b50811515610f7b565b846385234f9760e01b5f5260045260245ffd5b506005546001600160a01b0316851415610f71565b507f000000000000000000000000d9ec2db5f3d1b236843925949fe5bd8a3836fccb6001600160a01b0316851415610f6b565b506001600160a01b0382168414610f65565b50821515610f5f565b9150611255610e07565b916001600160a01b038316610f595750505f5f610f59565b5080610f54565b507f00000000000000000000000000000000000000000000000000000000018528e9431115610f48565b63ec442f0560e01b5f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b919082018092116111705756fea164736f6c634300081e000a
A contract address hosts a smart contract — a set of code functions that can execute independently of any centralized server. Learn more in our Knowledge Base.