ETH Price: $3,401.96 (+2.22%)

Contract

0x02f28544C89b2D704Eb0d1F9f4fc60d688ad8959
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Freeze113390342020-11-27 6:49:111512 days ago1606459751IN
0x02f28544...688ad8959
0 ETH0.0007988128
Remove Manager113389962020-11-27 6:39:391512 days ago1606459179IN
0x02f28544...688ad8959
0 ETH0.0003418824
Remove Manager113389902020-11-27 6:38:311512 days ago1606459111IN
0x02f28544...688ad8959
0 ETH0.0003290523.1
Freeze113389702020-11-27 6:34:251512 days ago1606458865IN
0x02f28544...688ad8959
0 ETH0.000914121.00000145
Transfer110818632020-10-18 19:36:231551 days ago1603049783IN
0x02f28544...688ad8959
0 ETH0.0008718622
Add To Send Allo...89736032019-11-21 9:16:301884 days ago1574327790IN
0x02f28544...688ad8959
0 ETH0.0005699220
Add To Receive A...89736032019-11-21 9:16:301884 days ago1574327790IN
0x02f28544...688ad8959
0 ETH0.0005712820
Add To Receive A...89490222019-11-17 6:47:361888 days ago1573973256IN
0x02f28544...688ad8959
0 ETH0.0005712820
Add To Receive A...89490182019-11-17 6:46:251888 days ago1573973185IN
0x02f28544...688ad8959
0 ETH0.0008712820
Add To Send Allo...88773542019-11-05 11:42:131900 days ago1572954133IN
0x02f28544...688ad8959
0 ETH0.000571220
Add To Receive A...88590362019-11-02 12:59:581903 days ago1572699598IN
0x02f28544...688ad8959
0 ETH0.0008725620
Transfer88279592019-10-28 12:56:041908 days ago1572267364IN
0x02f28544...688ad8959
0 ETH0.0004886713
Transfer88278422019-10-28 12:29:521908 days ago1572265792IN
0x02f28544...688ad8959
0 ETH0.000225156
Transfer88152242019-10-26 11:48:361910 days ago1572090516IN
0x02f28544...688ad8959
0 ETH0.000751820
Add To Send Allo...87619292019-10-18 1:16:231918 days ago1571361383IN
0x02f28544...688ad8959
0 ETH0.000571220
Add To Receive A...87619292019-10-18 1:16:231918 days ago1571361383IN
0x02f28544...688ad8959
0 ETH0.0008725620
Transfer87451992019-10-15 9:56:141921 days ago1571133374IN
0x02f28544...688ad8959
0 ETH0.000225156
Transfer87126522019-10-10 7:17:101926 days ago1570691830IN
0x02f28544...688ad8959
0 ETH0.000135156
Transfer87125012019-10-10 6:45:071926 days ago1570689907IN
0x02f28544...688ad8959
0 ETH0.0010505220
Transfer87079902019-10-09 13:39:271927 days ago1570628367IN
0x02f28544...688ad8959
0 ETH0.000225156
Transfer86670722019-10-03 4:13:021933 days ago1570075982IN
0x02f28544...688ad8959
0 ETH0.000225156
Transfer86665982019-10-03 2:30:401933 days ago1570069840IN
0x02f28544...688ad8959
0 ETH0.000225156
Transfer86225712019-09-26 5:16:001940 days ago1569474960IN
0x02f28544...688ad8959
0 ETH0.0003388515
Transfer86223672019-09-26 4:30:391940 days ago1569472239IN
0x02f28544...688ad8959
0 ETH0.0011569822
Transfer86222332019-09-26 3:58:391940 days ago1569470319IN
0x02f28544...688ad8959
0 ETH0.0003614416
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SPTToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-02
*/

pragma solidity ^0.5.8;
// @notice SECURITY TOKEN CONTRACT
// @dev ERC-1404 with ERC-20 with ERC223 protection Token Standard Compliant
// @author Geoffrey Tipton at AEN
// ----------------------------------------------------------------------------
// Deployed by : Geoffrey Tipton
// Symbol      : SMPT
// Name        : Smart Pharma Token
// Total supply: 1,000,000,000
// Decimals    : 8
//
// (c) AENCOIN. The MIT Licence.
// ----------------------------------------------------------------------------
// THE SMPT TOKENS HAVE NOT BEEN REGISTERED UNDER THE U.S. SECURITIES ACT OF
// 1933, AS AMENDED (THE “SECURITIES ACT”).  THE SMPT TOKENS WERE ISSUED IN
// A TRANSACTION EXEMPT FROM THE REGISTRATION REQUIREMENTS OF THE SECURITIES
// ACT PURSUANT TO REGULATION S PROMULGATED UNDER IT.  THE SMPT TOKENS MAY NOT
// BE OFFERED OR SOLD IN THE UNITED STATES UNLESS REGISTERED UNDER THE SECURITIES
// ACT OR AN EXEMPTION FROM REGISTRATION IS AVAILABLE.  TRANSFERS OF THE SMPT
// TOKENS MAY NOT BE MADE EXCEPT IN ACCORDANCE WITH THE PROVISIONS OF REGULATION S,
// PURSUANT TO REGISTRATION UNDER THE SECURITIES ACT, OR PURSUANT TO AN AVAILABLE
// EXEMPTION FROM REGISTRATION.  FURTHER, HEDGING TRANSACTIONS WITH REGARD TO THE
// SMPT TOKENS MAY NOT BE CONDUCTED UNLESS IN COMPLIANCE WITH THE SECURITIES ACT.
// ----------------------------------------------------------------------------
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b; require(c >= a,"Can not add Negative Values"); }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a, "Result can not be negative"); c = a - b;  }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b; require(a == 0 || c / a == b,"Dived by Zero protection"); }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0,"Devide by Zero protection"); c = a / b; }
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) public view returns (uint256 balance);
    function allowance(address owner, address spender) public view returns (uint remaining);
    function transfer(address to, uint value) public returns (bool success);
    function approve(address spender, uint value) public returns (bool success);
    function transferFrom(address from, address to, uint value) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC1404 is ERC20Interface {
    function detectTransferRestriction (address from, address to, uint256 value) public view returns (uint8);
    function messageForTransferRestriction (uint8 restrictionCode) public view returns (string memory);
}

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address internal newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public { //Only on contract creation
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner, "Only the contract owner can execute this function");
        _;
    }

    function transferOwnership(address _newOwner) external onlyOwner {
        newOwner = _newOwner;
    }

    function acceptOwnership() external {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

contract Managed is Owned {
    mapping (address => bool) public managers;


    modifier onlyManager () {
        require(managers[msg.sender], "Only managers may perform this action");
        _;
    }

    function addManager (address managerAddress) public onlyOwner {
        managers[managerAddress] = true;
    }

    function removeManager (address managerAddress) external onlyOwner {
        managers[managerAddress] = false;
    }
}

/* ----------------------------------------------------------------------------
 * Contract function to manage the white list
 * Byte operation to control function of the whitelist,
 * and prevent duplicate address entries. simple example
 * whiteList[add] = 0000 = 0x00 = Not allowed to do either
 * whiteList[add] = 0001 = 0x01 = Allowed to receive
 * whiteList[add] = 0010 = 0x02 = Allowed to send
 * whiteList[add] = 0011 = 0x03 = Allowed to Send and Receive
 * whiteList[add] = 0100 = 0x04 = Frozen not allowed to do either
 *----------------------------------------------------------------------------
 */
contract Whitelist is Managed {
    mapping(address => bytes1) public whiteList;
    bytes1 internal listRule;
    bytes1 internal constant WHITELISTED_CAN_RX_CODE = 0x01;  // binary for 0001
    bytes1 internal constant WHITELISTED_CAN_TX_CODE = 0x02;  // binary for 0010
    bytes1 internal constant WHITELISTED_FREEZE_CODE = 0x04;  // binary for 0100

    function frozen(address _account) public view returns (bool){ //If account is flagged to freeze return true
        return (WHITELISTED_FREEZE_CODE == (whiteList[_account] & WHITELISTED_FREEZE_CODE)); // 10 & 11 = True
    }

    function addToSendAllowed(address _to) external onlyManager {
        whiteList[_to] = whiteList[_to] | WHITELISTED_CAN_TX_CODE; // just add the code 1
    }

    function addToReceiveAllowed(address _to) external onlyManager {
        whiteList[_to] = whiteList[_to] | WHITELISTED_CAN_RX_CODE; // just add the code 2
    }

    function removeFromSendAllowed(address _to) public onlyManager {
        if (WHITELISTED_CAN_TX_CODE == (whiteList[_to] & WHITELISTED_CAN_TX_CODE))  { //check code 4 so it does toggle when recalled
            whiteList[_to] = whiteList[_to] ^ WHITELISTED_CAN_TX_CODE; // xor the code to remove the flag
        }
    }

    function removeFromReceiveAllowed(address _to) public onlyManager {
        if (WHITELISTED_CAN_RX_CODE == (whiteList[_to] & WHITELISTED_CAN_RX_CODE))  {
            whiteList[_to] = whiteList[_to] ^ WHITELISTED_CAN_RX_CODE;
        }
    }

    function removeFromBothSendAndReceiveAllowed (address _to) external onlyManager {
        removeFromSendAllowed(_to);
        removeFromReceiveAllowed(_to);
    }

    /*  this overides the individual whitelisting and manager positions so a
        frozen account can not be unfrozen by a lower level manager
    */
    function freeze(address _to) external onlyOwner {
        whiteList[_to] = whiteList[_to] | WHITELISTED_FREEZE_CODE; // 4 [0100]
    }

    function unFreeze(address _to) external onlyOwner {
        if (WHITELISTED_FREEZE_CODE == (whiteList[_to] & WHITELISTED_FREEZE_CODE )) { //Already UnFrozen
            whiteList[_to] = whiteList[_to] ^ WHITELISTED_FREEZE_CODE; // 4 [0100]
        }
    }

    /*    WhitlistRule defines what the rules are for the white listing.
          0x00 = No rule
          0x01 = Receiver must be Listed
          0x10 = Sender must be listed
          0x11 = Both must be listed
    */
    function setWhitelistRule(byte _newRule) external onlyOwner {
        listRule = _newRule;
    }
    function getWhitelistRule() external view returns (byte){
        return listRule;
    }
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and an initial fixed supply
contract SPTToken is ERC1404, Owned, Whitelist {
    using SafeMath for uint;

    string public symbol;
    string public  name;
    uint8 public decimals;
    uint public _totalSupply;
    uint8 internal restrictionCheck;

    mapping(address => uint) public balances;
    mapping(address => mapping(address => uint)) allowed;


    // ------------------------------------------------------------------------
    // Constructor
    constructor() public {
        symbol = "SMPT";
        name = "Smart Pharma Token";
        decimals = 8;
        _totalSupply = 100000000000000000;
        balances[msg.sender] = _totalSupply;
        managers[msg.sender] = true;
        listRule = 0x00; //Receiver does not need to be whitelisted.
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    modifier transferAllowed(address _from, address _to, uint256 _amount ) {
        require(!frozen(_to) && !frozen(_from), "One of the Accounts are Frozen");  //If not frozen go check
        if ((listRule & WHITELISTED_CAN_TX_CODE) != 0) { // if whitelist send rul applies then must be set
            require(WHITELISTED_CAN_TX_CODE == (whiteList[_from] & WHITELISTED_CAN_TX_CODE), "Sending Account is not whitelisted"); // 10 & 11 = true
        }
        if ((listRule & WHITELISTED_CAN_RX_CODE) != 0) { //if whitelist to receive is required, then check,
            require(WHITELISTED_CAN_RX_CODE == (whiteList[_to] & WHITELISTED_CAN_RX_CODE),"Receiving Account is not Whitelisted"); // 01 & 11 = True
        }
        _;
    }

    // ------------------------------------------------------------------------
    // Total supply minus any lost tokens to the zero address (Potential burn)
    function totalSupply() external view returns (uint) {
        return _totalSupply.sub(balances[address(0)]);
    }

    // ------------------------------------------------------------------------
    // Get the token balance for account `tokenOwner`
    function balanceOf(address owner) public view returns (uint256) {
        return balances[owner];
    }

    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to `to` account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // function transfer(address _to, uint _tokens)  public receiveAllowed(_to)  returns (bool success) {
    function transfer(address _to, uint _value)  public transferAllowed(msg.sender, _to, _value) returns (bool) {
        require((_to != address(0)) && (_to != address(this))); // Do not allow transfer to 0x0 or the token contract itself
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `spender` to transferFrom(...) `tokens`
    // from the token owner's account
    function approve(address spender, uint value) public transferAllowed(msg.sender, spender, value) returns (bool) {
        allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    // ------------------------------------------------------------------------
    // Transfer `tokens` from the `from` account to the `to` account
    function transferFrom(address _from, address _to, uint _value) public transferAllowed(_from, _to, _value) returns (bool) {
        // function transferFrom(address _from, address _to, uint _value) public returns (bool success) {
        require((_to != address(0)) && (_to != address(this))); // Do not allow transfer to 0x0 or the token contract itself
        balances[_from] = balances[_from].sub(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    /* ------------------------------------------------------------------------
     * Returns the amount of tokens approved by the owner that can be
     * transferred to the spender's account
    */
    function allowance(address owner, address spender) public view returns (uint) {
        return allowed[owner][spender];
    }

    /* ------------------------------------------------------------------------
     * don't accept ETH
     */
    function () payable external {
        revert();
    }

    /* ------------------------------------------------------------------------
     * @This is a security over ride function that allows error correction.
     * Owner can transfer out any accidentally sent tokens
     * Call the contract address with the token address, which pretends to be the sender
     * The receiving address is the caller of the contract.
     */
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }

    /* ------------------------------------------------------------------------
     * The following functions are for 1404 interface compliance, to detect
     * a transaction is allowed before sending, to save gas and obtain a clear Message
    */
    function detectTransferRestriction (address _from, address _to, uint256 _value) public view returns (uint8 restrictionCode)
    {
        restrictionCode = 0; // No restrictions
        if ( WHITELISTED_CAN_TX_CODE == (listRule & WHITELISTED_CAN_TX_CODE) ) { //Can Send rule applies
            if (!(WHITELISTED_CAN_TX_CODE == (whiteList[_to] & WHITELISTED_CAN_TX_CODE)) ) { //True if allowed to send
                restrictionCode += 1; // Send is not allowed
            }
        }
        if (WHITELISTED_CAN_RX_CODE == (listRule & WHITELISTED_CAN_RX_CODE)){ // Can Receive Rule applied
            if (!(WHITELISTED_CAN_RX_CODE == (whiteList[_from] & WHITELISTED_CAN_RX_CODE))) {
                restrictionCode += 2; // Receive is not allowed
            }
        }
        if ((WHITELISTED_FREEZE_CODE == (whiteList[_from] & WHITELISTED_FREEZE_CODE)) ) { // Added to Frozen
            restrictionCode += 4; // Sender is Frozen
        }
        if ((WHITELISTED_FREEZE_CODE == (whiteList[_to] & WHITELISTED_FREEZE_CODE)) ) { // Added to Frozen
            restrictionCode += 8; // Receiver is Frozen
        }

        if (balanceOf(_from) < _value) {
            restrictionCode += 16; // Send has insufficient balance
        }

        return restrictionCode;
    }

    /* ------------------------------------------------------------------------------------
    * helper function to return a human readable message for the detectTransferRestriction
    */
    function messageForTransferRestriction (uint8 _restrictionCode) public view returns (string memory _message) {
        _message = "Transfer Allowed";  // default and when is zero
        if (_restrictionCode >= 16) {
            _message = "Insufficient Balance to send";
        } else if (_restrictionCode >= 8) {
            _message = "To Account is Frozen, contact provider";
        } else if (_restrictionCode >= 4) {
            _message = "From Account is Frozen, contact provider";
        } else if (_restrictionCode >= 3) {
            _message = "Both Sending and receiving address has not been KYC Approved";
        } else if (_restrictionCode >= 2) {
            _message = "Receiving address has not been KYC Approved";
        } else if (_restrictionCode >= 1) {
            _message = "Sending address has not been KYC Approved";
        }
        return _message;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"removeFromBothSendAndReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"removeFromReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"addToReceiveAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"managerAddress","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whiteList","outputs":[{"name":"","type":"bytes1"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRule","type":"bytes1"}],"name":"setWhitelistRule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWhitelistRule","outputs":[{"name":"","type":"bytes1"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_restrictionCode","type":"uint8"}],"name":"messageForTransferRestriction","outputs":[{"name":"_message","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"unFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"managerAddress","type":"address"}],"name":"removeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"frozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"detectTransferRestriction","outputs":[{"name":"restrictionCode","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"addToSendAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"removeFromSendAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"managers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040523480156200001157600080fd5b50600080546001600160a01b031916331790556040805180820190915260048082527f534d50540000000000000000000000000000000000000000000000000000000060209092019182526200006a9160059162000139565b506040805180820190915260128082527f536d61727420506861726d6120546f6b656e00000000000000000000000000006020909201918252620000b19160069162000139565b5060078054600860ff19918216811790925567016345785d8a0000808355336000818152600a602090815260408083209490945560028152838220805486166001179055600480549095169094559354825190815291519093927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3620001de565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017c57805160ff1916838001178555620001ac565b82800160010185558215620001ac579182015b82811115620001ac5782518255916020019190600101906200018f565b50620001ba929150620001be565b5090565b620001db91905b80821115620001ba5760008155600101620001c5565b90565b611c6480620001ee6000396000f3fe6080604052600436106101d85760003560e01c806379ba509711610102578063d051665011610095578063e00a1e8b11610064578063e00a1e8b1461076f578063f2fde38b146107a2578063f8465534146107d5578063fdff9b4d14610808576101d8565b8063d051665014610685578063d4ce1415146106b8578063dc39d06d146106fb578063dd62ed3e14610734576101d8565b80638da5cb5b116100d15780638da5cb5b146105d357806395d89b4114610604578063a9059cbb14610619578063ac18de4314610652576101d8565b806379ba50971461052b5780637f4ab1dd1461054057806383cfab421461056d5780638d1fdf2f146105a0576101d8565b806327e235e31161017a5780633eaaf86b116101495780633eaaf86b1461049a57806340cb2de4146104af57806346f5f09e146104e357806370a08231146104f8576101d8565b806327e235e3146103b95780632d06177a146103ec578063313ce5671461041f578063372c12b11461044a576101d8565b806323b872dd116101b657806323b872dd146102db5780632583cfef1461031e57806326a5a554146103535780632702935714610386576101d8565b806306fdde03146101dd578063095ea7b31461026757806318160ddd146102b4575b600080fd5b3480156101e957600080fd5b506101f261083b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b506102a06004803603604081101561028a57600080fd5b506001600160a01b0381351690602001356108c9565b604080519115158252519081900360200190f35b3480156102c057600080fd5b506102c9610a90565b60408051918252519081900360200190f35b3480156102e757600080fd5b506102a0600480360360608110156102fe57600080fd5b506001600160a01b03813581169160208101359091169060400135610ad3565b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b0316610d68565b005b34801561035f57600080fd5b506103516004803603602081101561037657600080fd5b50356001600160a01b0316610dce565b34801561039257600080fd5b50610351600480360360208110156103a957600080fd5b50356001600160a01b0316610e7a565b3480156103c557600080fd5b506102c9600480360360208110156103dc57600080fd5b50356001600160a01b0316610efc565b3480156103f857600080fd5b506103516004803603602081101561040f57600080fd5b50356001600160a01b0316610f0e565b34801561042b57600080fd5b50610434610f7e565b6040805160ff9092168252519081900360200190f35b34801561045657600080fd5b5061047d6004803603602081101561046d57600080fd5b50356001600160a01b0316610f87565b604080516001600160f81b03199092168252519081900360200190f35b3480156104a657600080fd5b506102c9610f9c565b3480156104bb57600080fd5b50610351600480360360208110156104d257600080fd5b50356001600160f81b031916610fa2565b3480156104ef57600080fd5b5061047d611004565b34801561050457600080fd5b506102c96004803603602081101561051b57600080fd5b50356001600160a01b031661100d565b34801561053757600080fd5b50610351611028565b34801561054c57600080fd5b506101f26004803603602081101561056357600080fd5b503560ff166110a3565b34801561057957600080fd5b506103516004803603602081101561059057600080fd5b50356001600160a01b03166111f3565b3480156105ac57600080fd5b50610351600480360360208110156105c357600080fd5b50356001600160a01b031661129a565b3480156105df57600080fd5b506105e8611317565b604080516001600160a01b039092168252519081900360200190f35b34801561061057600080fd5b506101f2611326565b34801561062557600080fd5b506102a06004803603604081101561063c57600080fd5b506001600160a01b038135169060200135611381565b34801561065e57600080fd5b506103516004803603602081101561067557600080fd5b50356001600160a01b03166115bb565b34801561069157600080fd5b506102a0600480360360208110156106a857600080fd5b50356001600160a01b0316611628565b3480156106c457600080fd5b50610434600480360360608110156106db57600080fd5b506001600160a01b0381358116916020810135909116906040013561164f565b34801561070757600080fd5b506102a06004803603604081101561071e57600080fd5b506001600160a01b03813516906020013561174b565b34801561074057600080fd5b506102c96004803603604081101561075757600080fd5b506001600160a01b0381358116916020013516611827565b34801561077b57600080fd5b506103516004803603602081101561079257600080fd5b50356001600160a01b0316611852565b3480156107ae57600080fd5b50610351600480360360208110156107c557600080fd5b50356001600160a01b03166118d4565b3480156107e157600080fd5b50610351600480360360208110156107f857600080fd5b50356001600160a01b0316611942565b34801561081457600080fd5b506102a06004803603602081101561082b57600080fd5b50356001600160a01b03166119ee565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b505050505081565b60003383836108d782611628565b1580156108ea57506108e883611628565b155b61093e5760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b16156109b2576001600160a01b03831660009081526003602052604090205460f81b600160f91b908116146109b257604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b1615610a26576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610a2657604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b336000818152600b602090815260408083206001600160a01b038b1680855290835292819020899055805189815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6000808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e354600854610ace9163ffffffff611a0316565b905090565b6000838383610ae182611628565b158015610af45750610af283611628565b155b610b485760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610bbc576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610bbc57604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b1615610c30576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610c3057604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b6001600160a01b03861615801590610c5157506001600160a01b0386163014155b610c5a57600080fd5b6001600160a01b0387166000908152600a6020526040902054610c83908663ffffffff611a0316565b6001600160a01b0388166000908152600a6020908152604080832093909355600b815282822033835290522054610cc0908663ffffffff611a0316565b6001600160a01b038089166000908152600b602090815260408083203384528252808320949094559189168152600a9091522054610d04908663ffffffff611a6316565b6001600160a01b038088166000818152600a602090815260409182902094909455805189815290519193928b16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019695505050505050565b3360009081526002602052604090205460ff16610db957604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b610dc281611942565b610dcb81610dce565b50565b3360009081526002602052604090205460ff16610e1f57604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f81b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160f81b60f892831b1890911c179055565b3360009081526002602052604090205460ff16610ecb57604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f81b17901c60ff19909116179055565b600a6020526000908152604090205481565b6000546001600160a01b03163314610f5a57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60075460ff1681565b60036020526000908152604090205460f81b81565b60085481565b6000546001600160a01b03163314610fee57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6004805460ff191660f89290921c919091179055565b60045460f81b90565b6001600160a01b03166000908152600a602052604090205490565b6001546001600160a01b0316331461103f57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6040805180820190915260108082527f5472616e7366657220416c6c6f77656400000000000000000000000000000000602083015260ff83161061111b575060408051808201909152601c81527f496e73756666696369656e742042616c616e636520746f2073656e640000000060208201526111ee565b60088260ff161061114657604051806060016040528060268152602001611b976026913990506111ee565b60048260ff161061117157604051806060016040528060288152602001611b6f6028913990506111ee565b60038260ff161061119c576040518060600160405280603c8152602001611ae4603c913990506111ee565b60028260ff16106111c7576040518060600160405280602b8152602001611b44602b913990506111ee565b60018260ff16106111ee57604051806060016040528060298152602001611bbd6029913990505b919050565b6000546001600160a01b0316331461123f57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160fa1b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160fa1b60f892831b1890911c179055565b6000546001600160a01b031633146112e657604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160fa1b17901c60ff19909116179055565b6000546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108c15780601f10610896576101008083540402835291602001916108c1565b600033838361138f82611628565b1580156113a257506113a083611628565b155b6113f65760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b161561146a576001600160a01b03831660009081526003602052604090205460f81b600160f91b9081161461146a57604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b16156114de576001600160a01b03821660009081526003602052604090205460f81b600160f81b908116146114de57604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b6001600160a01b038616158015906114ff57506001600160a01b0386163014155b61150857600080fd5b336000908152600a6020526040902054611528908663ffffffff611a0316565b336000908152600a6020526040808220929092556001600160a01b0388168152205461155a908663ffffffff611a6316565b6001600160a01b0387166000818152600a60209081526040918290209390935580518881529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600195945050505050565b6000546001600160a01b0316331461160757604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6001600160a01b031660009081526003602052604090205460f81b600160fa1b9081161490565b60045460009060f81b600160f91b9081161415611693576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614611693576001015b60045460f81b600160f81b90811614156116d4576001600160a01b03841660009081526003602052604090205460f81b600160f81b908116146116d4576002015b6001600160a01b03841660009081526003602052604090205460f81b600160fa1b9081161415611702576004015b6001600160a01b03831660009081526003602052604090205460f81b600160fa1b9081161415611730576008015b8161173a8561100d565b1015611744576010015b9392505050565b600080546001600160a01b0316331461179857604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6000805460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050506040513d602081101561181c57600080fd5b505190505b92915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3360009081526002602052604090205460ff166118a357604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f91b17901c60ff19909116179055565b6000546001600160a01b0316331461192057604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526002602052604090205460ff1661199357604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f91b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160f91b60f892831b1890911c179055565b60026020526000908152604090205460ff1681565b600082821115611a5d5760408051600160e51b62461bcd02815260206004820152601a60248201527f526573756c742063616e206e6f74206265206e65676174697665000000000000604482015290519081900360640190fd5b50900390565b818101828110156118215760408051600160e51b62461bcd02815260206004820152601b60248201527f43616e206e6f7420616464204e656761746976652056616c7565730000000000604482015290519081900360640190fdfe4f6e6c79206d616e6167657273206d617920706572666f726d207468697320616374696f6e426f74682053656e64696e6720616e6420726563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f766564526563656976696e67204163636f756e74206973206e6f742057686974656c6973746564526563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656446726f6d204163636f756e742069732046726f7a656e2c20636f6e746163742070726f7669646572546f204163636f756e742069732046726f7a656e2c20636f6e746163742070726f766964657253656e64696e67206164647265737320686173206e6f74206265656e204b594320417070726f7665644f6e6c792074686520636f6e7472616374206f776e65722063616e206578656375746520746869732066756e6374696f6e53656e64696e67204163636f756e74206973206e6f742077686974656c6973746564a165627a7a72305820468faa03d75c3ebb4f8105a509f48126ec08a84c182d974d7604331586b9d06e0029

Deployed Bytecode

0x6080604052600436106101d85760003560e01c806379ba509711610102578063d051665011610095578063e00a1e8b11610064578063e00a1e8b1461076f578063f2fde38b146107a2578063f8465534146107d5578063fdff9b4d14610808576101d8565b8063d051665014610685578063d4ce1415146106b8578063dc39d06d146106fb578063dd62ed3e14610734576101d8565b80638da5cb5b116100d15780638da5cb5b146105d357806395d89b4114610604578063a9059cbb14610619578063ac18de4314610652576101d8565b806379ba50971461052b5780637f4ab1dd1461054057806383cfab421461056d5780638d1fdf2f146105a0576101d8565b806327e235e31161017a5780633eaaf86b116101495780633eaaf86b1461049a57806340cb2de4146104af57806346f5f09e146104e357806370a08231146104f8576101d8565b806327e235e3146103b95780632d06177a146103ec578063313ce5671461041f578063372c12b11461044a576101d8565b806323b872dd116101b657806323b872dd146102db5780632583cfef1461031e57806326a5a554146103535780632702935714610386576101d8565b806306fdde03146101dd578063095ea7b31461026757806318160ddd146102b4575b600080fd5b3480156101e957600080fd5b506101f261083b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b506102a06004803603604081101561028a57600080fd5b506001600160a01b0381351690602001356108c9565b604080519115158252519081900360200190f35b3480156102c057600080fd5b506102c9610a90565b60408051918252519081900360200190f35b3480156102e757600080fd5b506102a0600480360360608110156102fe57600080fd5b506001600160a01b03813581169160208101359091169060400135610ad3565b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b0316610d68565b005b34801561035f57600080fd5b506103516004803603602081101561037657600080fd5b50356001600160a01b0316610dce565b34801561039257600080fd5b50610351600480360360208110156103a957600080fd5b50356001600160a01b0316610e7a565b3480156103c557600080fd5b506102c9600480360360208110156103dc57600080fd5b50356001600160a01b0316610efc565b3480156103f857600080fd5b506103516004803603602081101561040f57600080fd5b50356001600160a01b0316610f0e565b34801561042b57600080fd5b50610434610f7e565b6040805160ff9092168252519081900360200190f35b34801561045657600080fd5b5061047d6004803603602081101561046d57600080fd5b50356001600160a01b0316610f87565b604080516001600160f81b03199092168252519081900360200190f35b3480156104a657600080fd5b506102c9610f9c565b3480156104bb57600080fd5b50610351600480360360208110156104d257600080fd5b50356001600160f81b031916610fa2565b3480156104ef57600080fd5b5061047d611004565b34801561050457600080fd5b506102c96004803603602081101561051b57600080fd5b50356001600160a01b031661100d565b34801561053757600080fd5b50610351611028565b34801561054c57600080fd5b506101f26004803603602081101561056357600080fd5b503560ff166110a3565b34801561057957600080fd5b506103516004803603602081101561059057600080fd5b50356001600160a01b03166111f3565b3480156105ac57600080fd5b50610351600480360360208110156105c357600080fd5b50356001600160a01b031661129a565b3480156105df57600080fd5b506105e8611317565b604080516001600160a01b039092168252519081900360200190f35b34801561061057600080fd5b506101f2611326565b34801561062557600080fd5b506102a06004803603604081101561063c57600080fd5b506001600160a01b038135169060200135611381565b34801561065e57600080fd5b506103516004803603602081101561067557600080fd5b50356001600160a01b03166115bb565b34801561069157600080fd5b506102a0600480360360208110156106a857600080fd5b50356001600160a01b0316611628565b3480156106c457600080fd5b50610434600480360360608110156106db57600080fd5b506001600160a01b0381358116916020810135909116906040013561164f565b34801561070757600080fd5b506102a06004803603604081101561071e57600080fd5b506001600160a01b03813516906020013561174b565b34801561074057600080fd5b506102c96004803603604081101561075757600080fd5b506001600160a01b0381358116916020013516611827565b34801561077b57600080fd5b506103516004803603602081101561079257600080fd5b50356001600160a01b0316611852565b3480156107ae57600080fd5b50610351600480360360208110156107c557600080fd5b50356001600160a01b03166118d4565b3480156107e157600080fd5b50610351600480360360208110156107f857600080fd5b50356001600160a01b0316611942565b34801561081457600080fd5b506102a06004803603602081101561082b57600080fd5b50356001600160a01b03166119ee565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b505050505081565b60003383836108d782611628565b1580156108ea57506108e883611628565b155b61093e5760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b16156109b2576001600160a01b03831660009081526003602052604090205460f81b600160f91b908116146109b257604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b1615610a26576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610a2657604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b336000818152600b602090815260408083206001600160a01b038b1680855290835292819020899055805189815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6000808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e354600854610ace9163ffffffff611a0316565b905090565b6000838383610ae182611628565b158015610af45750610af283611628565b155b610b485760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b1615610bbc576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614610bbc57604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b1615610c30576001600160a01b03821660009081526003602052604090205460f81b600160f81b90811614610c3057604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b6001600160a01b03861615801590610c5157506001600160a01b0386163014155b610c5a57600080fd5b6001600160a01b0387166000908152600a6020526040902054610c83908663ffffffff611a0316565b6001600160a01b0388166000908152600a6020908152604080832093909355600b815282822033835290522054610cc0908663ffffffff611a0316565b6001600160a01b038089166000908152600b602090815260408083203384528252808320949094559189168152600a9091522054610d04908663ffffffff611a6316565b6001600160a01b038088166000818152600a602090815260409182902094909455805189815290519193928b16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019695505050505050565b3360009081526002602052604090205460ff16610db957604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b610dc281611942565b610dcb81610dce565b50565b3360009081526002602052604090205460ff16610e1f57604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f81b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160f81b60f892831b1890911c179055565b3360009081526002602052604090205460ff16610ecb57604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f81b17901c60ff19909116179055565b600a6020526000908152604090205481565b6000546001600160a01b03163314610f5a57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60075460ff1681565b60036020526000908152604090205460f81b81565b60085481565b6000546001600160a01b03163314610fee57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6004805460ff191660f89290921c919091179055565b60045460f81b90565b6001600160a01b03166000908152600a602052604090205490565b6001546001600160a01b0316331461103f57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6040805180820190915260108082527f5472616e7366657220416c6c6f77656400000000000000000000000000000000602083015260ff83161061111b575060408051808201909152601c81527f496e73756666696369656e742042616c616e636520746f2073656e640000000060208201526111ee565b60088260ff161061114657604051806060016040528060268152602001611b976026913990506111ee565b60048260ff161061117157604051806060016040528060288152602001611b6f6028913990506111ee565b60038260ff161061119c576040518060600160405280603c8152602001611ae4603c913990506111ee565b60028260ff16106111c7576040518060600160405280602b8152602001611b44602b913990506111ee565b60018260ff16106111ee57604051806060016040528060298152602001611bbd6029913990505b919050565b6000546001600160a01b0316331461123f57604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160fa1b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160fa1b60f892831b1890911c179055565b6000546001600160a01b031633146112e657604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160fa1b17901c60ff19909116179055565b6000546001600160a01b031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108c15780601f10610896576101008083540402835291602001916108c1565b600033838361138f82611628565b1580156113a257506113a083611628565b155b6113f65760408051600160e51b62461bcd02815260206004820152601e60248201527f4f6e65206f6620746865204163636f756e7473206172652046726f7a656e0000604482015290519081900360640190fd5b60045460f81b600160f91b161561146a576001600160a01b03831660009081526003602052604090205460f81b600160f91b9081161461146a57604051600160e51b62461bcd028152600401808060200182810382526022815260200180611c176022913960400191505060405180910390fd5b60045460f81b600160f81b16156114de576001600160a01b03821660009081526003602052604090205460f81b600160f81b908116146114de57604051600160e51b62461bcd028152600401808060200182810382526024815260200180611b206024913960400191505060405180910390fd5b6001600160a01b038616158015906114ff57506001600160a01b0386163014155b61150857600080fd5b336000908152600a6020526040902054611528908663ffffffff611a0316565b336000908152600a6020526040808220929092556001600160a01b0388168152205461155a908663ffffffff611a6316565b6001600160a01b0387166000818152600a60209081526040918290209390935580518881529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600195945050505050565b6000546001600160a01b0316331461160757604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6001600160a01b031660009081526003602052604090205460f81b600160fa1b9081161490565b60045460009060f81b600160f91b9081161415611693576001600160a01b03831660009081526003602052604090205460f81b600160f91b90811614611693576001015b60045460f81b600160f81b90811614156116d4576001600160a01b03841660009081526003602052604090205460f81b600160f81b908116146116d4576002015b6001600160a01b03841660009081526003602052604090205460f81b600160fa1b9081161415611702576004015b6001600160a01b03831660009081526003602052604090205460f81b600160fa1b9081161415611730576008015b8161173a8561100d565b1015611744576010015b9392505050565b600080546001600160a01b0316331461179857604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b6000805460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050506040513d602081101561181c57600080fd5b505190505b92915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3360009081526002602052604090205460ff166118a357604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460f881811b600160f91b17901c60ff19909116179055565b6000546001600160a01b0316331461192057604051600160e51b62461bcd028152600401808060200182810382526031815260200180611be66031913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526002602052604090205460ff1661199357604051600160e51b62461bcd028152600401808060200182810382526025815260200180611abf6025913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460f81b600160f91b9081161415610dcb576001600160a01b03166000908152600360205260409020805460ff198116600160f91b60f892831b1890911c179055565b60026020526000908152604090205460ff1681565b600082821115611a5d5760408051600160e51b62461bcd02815260206004820152601a60248201527f526573756c742063616e206e6f74206265206e65676174697665000000000000604482015290519081900360640190fd5b50900390565b818101828110156118215760408051600160e51b62461bcd02815260206004820152601b60248201527f43616e206e6f7420616464204e656761746976652056616c7565730000000000604482015290519081900360640190fdfe4f6e6c79206d616e6167657273206d617920706572666f726d207468697320616374696f6e426f74682053656e64696e6720616e6420726563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f766564526563656976696e67204163636f756e74206973206e6f742057686974656c6973746564526563656976696e67206164647265737320686173206e6f74206265656e204b594320417070726f76656446726f6d204163636f756e742069732046726f7a656e2c20636f6e746163742070726f7669646572546f204163636f756e742069732046726f7a656e2c20636f6e746163742070726f766964657253656e64696e67206164647265737320686173206e6f74206265656e204b594320417070726f7665644f6e6c792074686520636f6e7472616374206f776e65722063616e206578656375746520746869732066756e6374696f6e53656e64696e67204163636f756e74206973206e6f742077686974656c6973746564a165627a7a72305820468faa03d75c3ebb4f8105a509f48126ec08a84c182d974d7604331586b9d06e0029

Swarm Source

bzzr://468faa03d75c3ebb4f8105a509f48126ec08a84c182d974d7604331586b9d06e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.