ETH Price: $3,454.47 (-0.94%)
Gas: 3 Gwei

Contract

0xA0b0AA5D2bd1738504577E1883537C9af3392454
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Emergency Withdr...176729802023-07-11 21:15:47356 days ago1689110147IN
0xA0b0AA5D...af3392454
0 ETH0.0022463844.98879121
Emergency Withdr...176729682023-07-11 21:13:23356 days ago1689110003IN
0xA0b0AA5D...af3392454
0 ETH0.0035966850.08756387
Emergency Withdr...176729602023-07-11 21:11:23356 days ago1689109883IN
0xA0b0AA5D...af3392454
0 ETH0.0017676448.89877165
Emergency Withdr...176729412023-07-11 21:07:11356 days ago1689109631IN
0xA0b0AA5D...af3392454
0 ETH0.002447442.19599344
Emergency Withdr...176728902023-07-11 20:56:47356 days ago1689109007IN
0xA0b0AA5D...af3392454
0 ETH0.0006102818.11034848
Emergency Withdr...176728732023-07-11 20:53:23356 days ago1689108803IN
0xA0b0AA5D...af3392454
0 ETH0.0006947320.63853622
Deposit135999322021-11-12 7:15:15962 days ago1636701315IN
0xA0b0AA5D...af3392454
0.1926167 ETH0.00794362125.24631676
Deposit135999002021-11-12 7:08:56962 days ago1636700936IN
0xA0b0AA5D...af3392454
0.12477845 ETH0.00965842119.96250427
Deposit135916262021-11-11 0:06:27964 days ago1636589187IN
0xA0b0AA5D...af3392454
0.02155359 ETH0.01405629174.54942557
Deposit135908282021-11-10 21:10:52964 days ago1636578652IN
0xA0b0AA5D...af3392454
0 ETH0.01610953133.76791537
Deposit135754442021-11-08 11:19:10966 days ago1636370350IN
0xA0b0AA5D...af3392454
0.10517525 ETH0.0068787785.40184025
Deposit135754422021-11-08 11:18:33966 days ago1636370313IN
0xA0b0AA5D...af3392454
0.10518837 ETH0.0060837975.5206442
Deposit135689392021-11-07 10:53:07967 days ago1636282387IN
0xA0b0AA5D...af3392454
0.02169476 ETH0.0072845390.45850143
Deposit135659422021-11-06 23:37:02968 days ago1636241822IN
0xA0b0AA5D...af3392454
0 ETH0.0087826872.9107881
Deposit135262572021-10-31 17:55:28974 days ago1635702928IN
0xA0b0AA5D...af3392454
0.02349218 ETH0.01012346125.70419196
Deposit134559222021-10-20 17:27:04985 days ago1634750824IN
0xA0b0AA5D...af3392454
0.03659209 ETH0.0050197887.58393562
Deposit134486352021-10-19 13:59:13986 days ago1634651953IN
0xA0b0AA5D...af3392454
0 ETH0.0053690751.95495872
Deposit134473492021-10-19 9:20:50986 days ago1634635250IN
0xA0b0AA5D...af3392454
0 ETH0.0032977346.95020496
Deposit134167582021-10-14 14:05:40991 days ago1634220340IN
0xA0b0AA5D...af3392454
0.02634045 ETH0.00859944106.78695355
Deposit134156362021-10-14 9:50:32991 days ago1634205032IN
0xA0b0AA5D...af3392454
0 ETH0.008503570.61302022
Deposit133747582021-10-07 23:36:15998 days ago1633649775IN
0xA0b0AA5D...af3392454
0.00020448 ETH0.00849915118.69836792
Deposit133437692021-10-03 3:04:111003 days ago1633230251IN
0xA0b0AA5D...af3392454
0.00000251 ETH0.0034024653.65227885
Deposit133091392021-09-27 17:21:331008 days ago1632763293IN
0xA0b0AA5D...af3392454
0.033085 ETH0.0068429285
Deposit132842492021-09-23 20:56:191012 days ago1632430579IN
0xA0b0AA5D...af3392454
0.03179066 ETH0.0040567450.38364649
Deposit132740642021-09-22 6:49:011013 days ago1632293341IN
0xA0b0AA5D...af3392454
0 ETH0.0049836344.14714834
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
176728902023-07-11 20:56:47356 days ago1689109007
0xA0b0AA5D...af3392454
33.93995824 ETH
176728732023-07-11 20:53:23356 days ago1689108803
0xA0b0AA5D...af3392454
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MuonPresale

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : MuonPresale.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./MuonV01.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

interface StandardToken {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function decimals() external returns (uint8);
    function mint(address reveiver, uint256 amount) external returns (bool);
    function burn(address sender, uint256 amount) external returns (bool);
}

contract MuonPresale is Ownable{
    using ECDSA for bytes32;

    MuonV01 public muon;
    
    mapping (address => uint256) public balances;

    bool public running = true;

    uint256 public maxMuonDelay = 15 minutes;

    event Deposit(address token, uint256 tokenPrice, uint256 amount, 
        uint256 time, address fromAddress, address forAddress, 
        uint256 addressMaxCap);

    modifier isRunning(){
        require(running, "!running");
        _;
    }

    constructor(address _muon){
        muon = MuonV01(_muon);
    }

    function deposit(
        address token,
        uint256 tokenPrice,
        uint256 amount,
        uint256 time,
        address forAddress,
        uint256 addressMaxCap,
        bytes calldata _reqId, 
        bytes[] calldata sigs
    ) public payable isRunning{

        require(sigs.length > 1, "!sigs");

        bytes32 hash = keccak256(abi.encodePacked(token, tokenPrice, 
            amount, time, forAddress, addressMaxCap));
        hash = hash.toEthSignedMessageHash();

        bool verified = muon.verify(_reqId, hash, sigs);
        require(verified, '!verified');

        // check max
        uint256 usdAmount = amount * tokenPrice /
            (10 ** (token == address(0) ? 18 : StandardToken(token).decimals())
        );
        require(balances[forAddress] + usdAmount <= addressMaxCap, ">max");

        require(time + maxMuonDelay > block.timestamp, "muon: expired");

        if(token == address(0)){
            require(amount == msg.value, "amount err");
        }else{
            StandardToken tokenCon = StandardToken(token);
            tokenCon.transferFrom(address(msg.sender), address(this), amount);
        }

        balances[forAddress] = balances[forAddress] + usdAmount;
        emit Deposit(token, tokenPrice, amount, 
            time, msg.sender, forAddress, addressMaxCap);
    }

    function setMuonContract(address addr) public onlyOwner{
        muon = MuonV01(addr);
    }

    function setIsRunning(bool val) public onlyOwner{
        running = val;
    }

    function setMaxMuonDelay(uint256 delay) public onlyOwner{
        maxMuonDelay = delay;
    }

    function emergencyWithdrawETH(uint256 amount, address addr) public onlyOwner{
        require(addr != address(0));
        payable(addr).transfer(amount);
    }

    function emergencyWithdrawERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        StandardToken(_tokenAddr).transfer(_to, _amount);
    }
}

File 2 of 5 : MuonV01.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

contract MuonV01 is Ownable {
    using ECDSA for bytes32;

    event Transaction(bytes reqId);

    mapping(address => bool) public signers;

    constructor(){
        //initial nodes
        signers[0x06A85356DCb5b307096726FB86A78c59D38e08ee] = true;
        signers[0x4513218Ce2e31004348Fd374856152e1a026283C] = true;
        signers[0xe4f507b6D5492491f4B57f0f235B158C4C862fea] = true;
        signers[0x2236ED697Dab495e1FA17b079B05F3aa0F94E1Ef] = true;
        signers[0xCA40791F962AC789Fdc1cE589989444F851715A8] = true;
        signers[0x7AA04BfC706095b748979FE3E3dB156C3dFb9451] = true;
        signers[0x60AA825FffaF4AC68392D886Cc2EcBCBa3Df4BD9] = true;
        signers[0x031e6efe16bCFB88e6bfB068cfd39Ca02669Ae7C] = true;
        signers[0x27a58c0e7688F90B415afA8a1BfA64D48A835DF7] = true;
        signers[0x11C57ECa88e4A40b7B041EF48a66B9a0EF36b830] = true;
    }

    function verify(bytes calldata _reqId, bytes32 hash, bytes[] calldata sigs) public returns (bool) {
        uint i;
        address signer;
        for(i=0 ; i<sigs.length ; i++){
            signer = hash.recover(sigs[i]);
            // require(attualSigner == signer, "Signature not confirmed");
            if(signers[signer] != true)
                return false;
        }
        if(sigs.length > 0){
            emit Transaction(_reqId);
            return true;
        }
        else{
            return false;
        }
    }

    function ownerAddSigner(address _signer) public onlyOwner {
        signers[_signer] = true;
    }

    function ownerRemoveSigner(address _signer) public onlyOwner {
        delete signers[_signer];
    }
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

File 4 of 5 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 5 of 5 : ECDSA.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            // solhint-disable-next-line no-inline-assembly
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
        } else if (signature.length == 64) {
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            // solhint-disable-next-line no-inline-assembly
            assembly {
                let vs := mload(add(signature, 0x40))
                r := mload(add(signature, 0x20))
                s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
                v := add(shr(255, vs), 27)
            }
        } else {
            revert("ECDSA: invalid signature length");
        }

        return recover(hash, v, r, s);
    }

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

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        require(signer != address(0), "ECDSA: invalid signature");

        return signer;
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_muon","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"address","name":"forAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"addressMaxCap","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"address","name":"forAddress","type":"address"},{"internalType":"uint256","name":"addressMaxCap","type":"uint256"},{"internalType":"bytes","name":"_reqId","type":"bytes"},{"internalType":"bytes[]","name":"sigs","type":"bytes[]"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdrawERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"emergencyWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxMuonDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"muon","outputs":[{"internalType":"contract MuonV01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"running","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setIsRunning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setMaxMuonDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMuonContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526003805460ff1916600117905561038460045534801561002357600080fd5b50604051611251380380611251833981016040819052610042916100bf565b600061004c6100bb565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100ed565b3390565b6000602082840312156100d0578081fd5b81516001600160a01b03811681146100e6578182fd5b9392505050565b611155806100fc6000396000f3fe6080604052600436106100c25760003560e01c80639aa2cadc1161007f578063b3f5e00811610059578063b3f5e008146101de578063d85bd526146101fe578063f2fde38b14610220578063f48db20414610240576100c2565b80639aa2cadc1461017e5780639efb5df11461019e578063a0cfc482146101be576100c2565b806311490d29146100c757806315945006146100f257806327e235e3146101145780636e17014814610141578063715018a6146101545780638da5cb5b14610169575b600080fd5b3480156100d357600080fd5b506100dc610255565b6040516100e99190610cea565b60405180910390f35b3480156100fe57600080fd5b5061011261010d366004610bfb565b610264565b005b34801561012057600080fd5b5061013461012f366004610a6c565b6102fa565b6040516100e99190610f81565b61011261014f366004610ac8565b61030c565b34801561016057600080fd5b506101126106b4565b34801561017557600080fd5b506100dc61073d565b34801561018a57600080fd5b50610112610199366004610a6c565b61074c565b3480156101aa57600080fd5b506101126101b9366004610bab565b6107ad565b3480156101ca57600080fd5b506101126101d9366004610be3565b6107ff565b3480156101ea57600080fd5b506101126101f9366004610a8d565b610843565b34801561020a57600080fd5b50610213610908565b6040516100e99190610d7d565b34801561022c57600080fd5b5061011261023b366004610a6c565b610911565b34801561024c57600080fd5b506101346109d1565b6001546001600160a01b031681565b61026c6109d7565b6001600160a01b031661027d61073d565b6001600160a01b0316146102ac5760405162461bcd60e51b81526004016102a390610f06565b60405180910390fd5b6001600160a01b0381166102bf57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f193505050501580156102f5573d6000803e3d6000fd5b505050565b60026020526000908152604090205481565b60035460ff1661032e5760405162461bcd60e51b81526004016102a390610f3b565b6001811161034e5760405162461bcd60e51b81526004016102a390610ec9565b60008a8a8a8a8a8a60405160200161036b96959493929190610c71565b60405160208183030381529060405280519060200120905061038c816109db565b6001546040516319eb2f9960e11b81529192506000916001600160a01b03909116906333d65f32906103ca908990899087908a908a90600401610d88565b602060405180830381600087803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041c9190610bc7565b90508061043b5760405162461bcd60e51b81526004016102a390610e39565b60006001600160a01b038d16156104c4578c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561048757600080fd5b505af115801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190610c26565b6104c7565b60125b6104d290600a611008565b6104dc8d8d6110d9565b6104e69190610fa2565b6001600160a01b038a16600090815260026020526040902054909150889061050f908390610f8a565b111561052d5760405162461bcd60e51b81526004016102a390610ee8565b426004548b61053c9190610f8a565b116105595760405162461bcd60e51b81526004016102a390610ea2565b6001600160a01b038d1661058b57348b146105865760405162461bcd60e51b81526004016102a390610f5d565b610615565b60008d9050806001600160a01b03166323b872dd33308f6040518463ffffffff1660e01b81526004016105c093929190610cfe565b602060405180830381600087803b1580156105da57600080fd5b505af11580156105ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106129190610bc7565b50505b6001600160a01b038916600090815260026020526040902054610639908290610f8a565b600260008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055507fb27e4c7824fdb6af55c82a6d0d8746a5a8f84b3538a3e2b50bda783289d187108d8d8d8d338e8e60405161069d9796959493929190610d3b565b60405180910390a150505050505050505050505050565b6106bc6109d7565b6001600160a01b03166106cd61073d565b6001600160a01b0316146106f35760405162461bcd60e51b81526004016102a390610f06565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6107546109d7565b6001600160a01b031661076561073d565b6001600160a01b03161461078b5760405162461bcd60e51b81526004016102a390610f06565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6107b56109d7565b6001600160a01b03166107c661073d565b6001600160a01b0316146107ec5760405162461bcd60e51b81526004016102a390610f06565b6003805460ff1916911515919091179055565b6108076109d7565b6001600160a01b031661081861073d565b6001600160a01b03161461083e5760405162461bcd60e51b81526004016102a390610f06565b600455565b61084b6109d7565b6001600160a01b031661085c61073d565b6001600160a01b0316146108825760405162461bcd60e51b81526004016102a390610f06565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906108b09085908590600401610d22565b602060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190610bc7565b50505050565b60035460ff1681565b6109196109d7565b6001600160a01b031661092a61073d565b6001600160a01b0316146109505760405162461bcd60e51b81526004016102a390610f06565b6001600160a01b0381166109765760405162461bcd60e51b81526004016102a390610e5c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b3390565b6000816040516020016109ee9190610cb9565b6040516020818303038152906040528051906020012090505b919050565b80356001600160a01b0381168114610a0757600080fd5b60008083601f840112610a34578182fd5b50813567ffffffffffffffff811115610a4b578182fd5b6020830191508360208083028501011115610a6557600080fd5b9250929050565b600060208284031215610a7d578081fd5b610a8682610a0c565b9392505050565b600080600060608486031215610aa1578182fd5b610aaa84610a0c565b9250610ab860208501610a0c565b9150604084013590509250925092565b6000806000806000806000806000806101008b8d031215610ae7578586fd5b610af08b610a0c565b995060208b0135985060408b0135975060608b01359650610b1360808c01610a0c565b955060a08b0135945060c08b013567ffffffffffffffff80821115610b36578586fd5b818d0191508d601f830112610b49578586fd5b813581811115610b57578687fd5b8e6020828501011115610b68578687fd5b6020830196508095505060e08d0135915080821115610b85578384fd5b50610b928d828e01610a23565b915080935050809150509295989b9194979a5092959850565b600060208284031215610bbc578081fd5b8135610a868161110e565b600060208284031215610bd8578081fd5b8151610a868161110e565b600060208284031215610bf4578081fd5b5035919050565b60008060408385031215610c0d578182fd5b82359150610c1d60208401610a0c565b90509250929050565b600060208284031215610c37578081fd5b815160ff81168114610a86578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6bffffffffffffffffffffffff19606097881b8116825260148201969096526034810194909452605484019290925290931b9091166074820152608881019190915260a80190565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0397881681526020810196909652604086019490945260608501929092528416608084015290921660a082015260c081019190915260e00190565b901515815260200190565b600060608252610d9c606083018789610c47565b602083810187905283820360408501528482528181018582028301820187855b88811015610e2857858303601f190184528135368b9003601e19018112610de1578788fd5b8a01803567ffffffffffffffff811115610df9578889fd5b8036038c1315610e07578889fd5b610e148582898501610c47565b958701959450505090840190600101610dbc565b50909b9a5050505050505050505050565b602080825260099082015268085d995c9a599a595960ba1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600d908201526c1b5d5bdb8e88195e1c1a5c9959609a1b604082015260600190565b602080825260059082015264217369677360d81b604082015260600190565b60208082526004908201526307cdac2f60e31b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600890820152672172756e6e696e6760c01b604082015260600190565b6020808252600a908201526930b6b7bab73a1032b93960b11b604082015260600190565b90815260200190565b60008219821115610f9d57610f9d6110f8565b500190565b600082610fbd57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611610fd45750610fff565b818704821115610fe657610fe66110f8565b80861615610ff357918102915b9490941c938002610fc5565b94509492505050565b6000610a8660001960ff85168460008261102457506001610a86565b8161103157506000610a86565b816001811461104757600281146110515761107e565b6001915050610a86565b60ff841115611062576110626110f8565b6001841b915084821115611078576110786110f8565b50610a86565b5060208310610133831016604e8410600b84101617156110b1575081810a838111156110ac576110ac6110f8565b610a86565b6110be8484846001610fc2565b8086048211156110d0576110d06110f8565b02949350505050565b60008160001904831182151516156110f3576110f36110f8565b500290565b634e487b7160e01b600052601160045260246000fd5b801515811461111c57600080fd5b5056fea26469706673582212206b03b33c02ccad1abffb764949686acf4a8607652743473781ca45170aa030f764736f6c634300080000330000000000000000000000009dd25aaaaecedf3ceb484bf67803ad03f42c8721

Deployed Bytecode

0x6080604052600436106100c25760003560e01c80639aa2cadc1161007f578063b3f5e00811610059578063b3f5e008146101de578063d85bd526146101fe578063f2fde38b14610220578063f48db20414610240576100c2565b80639aa2cadc1461017e5780639efb5df11461019e578063a0cfc482146101be576100c2565b806311490d29146100c757806315945006146100f257806327e235e3146101145780636e17014814610141578063715018a6146101545780638da5cb5b14610169575b600080fd5b3480156100d357600080fd5b506100dc610255565b6040516100e99190610cea565b60405180910390f35b3480156100fe57600080fd5b5061011261010d366004610bfb565b610264565b005b34801561012057600080fd5b5061013461012f366004610a6c565b6102fa565b6040516100e99190610f81565b61011261014f366004610ac8565b61030c565b34801561016057600080fd5b506101126106b4565b34801561017557600080fd5b506100dc61073d565b34801561018a57600080fd5b50610112610199366004610a6c565b61074c565b3480156101aa57600080fd5b506101126101b9366004610bab565b6107ad565b3480156101ca57600080fd5b506101126101d9366004610be3565b6107ff565b3480156101ea57600080fd5b506101126101f9366004610a8d565b610843565b34801561020a57600080fd5b50610213610908565b6040516100e99190610d7d565b34801561022c57600080fd5b5061011261023b366004610a6c565b610911565b34801561024c57600080fd5b506101346109d1565b6001546001600160a01b031681565b61026c6109d7565b6001600160a01b031661027d61073d565b6001600160a01b0316146102ac5760405162461bcd60e51b81526004016102a390610f06565b60405180910390fd5b6001600160a01b0381166102bf57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f193505050501580156102f5573d6000803e3d6000fd5b505050565b60026020526000908152604090205481565b60035460ff1661032e5760405162461bcd60e51b81526004016102a390610f3b565b6001811161034e5760405162461bcd60e51b81526004016102a390610ec9565b60008a8a8a8a8a8a60405160200161036b96959493929190610c71565b60405160208183030381529060405280519060200120905061038c816109db565b6001546040516319eb2f9960e11b81529192506000916001600160a01b03909116906333d65f32906103ca908990899087908a908a90600401610d88565b602060405180830381600087803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041c9190610bc7565b90508061043b5760405162461bcd60e51b81526004016102a390610e39565b60006001600160a01b038d16156104c4578c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561048757600080fd5b505af115801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190610c26565b6104c7565b60125b6104d290600a611008565b6104dc8d8d6110d9565b6104e69190610fa2565b6001600160a01b038a16600090815260026020526040902054909150889061050f908390610f8a565b111561052d5760405162461bcd60e51b81526004016102a390610ee8565b426004548b61053c9190610f8a565b116105595760405162461bcd60e51b81526004016102a390610ea2565b6001600160a01b038d1661058b57348b146105865760405162461bcd60e51b81526004016102a390610f5d565b610615565b60008d9050806001600160a01b03166323b872dd33308f6040518463ffffffff1660e01b81526004016105c093929190610cfe565b602060405180830381600087803b1580156105da57600080fd5b505af11580156105ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106129190610bc7565b50505b6001600160a01b038916600090815260026020526040902054610639908290610f8a565b600260008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055507fb27e4c7824fdb6af55c82a6d0d8746a5a8f84b3538a3e2b50bda783289d187108d8d8d8d338e8e60405161069d9796959493929190610d3b565b60405180910390a150505050505050505050505050565b6106bc6109d7565b6001600160a01b03166106cd61073d565b6001600160a01b0316146106f35760405162461bcd60e51b81526004016102a390610f06565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6107546109d7565b6001600160a01b031661076561073d565b6001600160a01b03161461078b5760405162461bcd60e51b81526004016102a390610f06565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6107b56109d7565b6001600160a01b03166107c661073d565b6001600160a01b0316146107ec5760405162461bcd60e51b81526004016102a390610f06565b6003805460ff1916911515919091179055565b6108076109d7565b6001600160a01b031661081861073d565b6001600160a01b03161461083e5760405162461bcd60e51b81526004016102a390610f06565b600455565b61084b6109d7565b6001600160a01b031661085c61073d565b6001600160a01b0316146108825760405162461bcd60e51b81526004016102a390610f06565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906108b09085908590600401610d22565b602060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190610bc7565b50505050565b60035460ff1681565b6109196109d7565b6001600160a01b031661092a61073d565b6001600160a01b0316146109505760405162461bcd60e51b81526004016102a390610f06565b6001600160a01b0381166109765760405162461bcd60e51b81526004016102a390610e5c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b3390565b6000816040516020016109ee9190610cb9565b6040516020818303038152906040528051906020012090505b919050565b80356001600160a01b0381168114610a0757600080fd5b60008083601f840112610a34578182fd5b50813567ffffffffffffffff811115610a4b578182fd5b6020830191508360208083028501011115610a6557600080fd5b9250929050565b600060208284031215610a7d578081fd5b610a8682610a0c565b9392505050565b600080600060608486031215610aa1578182fd5b610aaa84610a0c565b9250610ab860208501610a0c565b9150604084013590509250925092565b6000806000806000806000806000806101008b8d031215610ae7578586fd5b610af08b610a0c565b995060208b0135985060408b0135975060608b01359650610b1360808c01610a0c565b955060a08b0135945060c08b013567ffffffffffffffff80821115610b36578586fd5b818d0191508d601f830112610b49578586fd5b813581811115610b57578687fd5b8e6020828501011115610b68578687fd5b6020830196508095505060e08d0135915080821115610b85578384fd5b50610b928d828e01610a23565b915080935050809150509295989b9194979a5092959850565b600060208284031215610bbc578081fd5b8135610a868161110e565b600060208284031215610bd8578081fd5b8151610a868161110e565b600060208284031215610bf4578081fd5b5035919050565b60008060408385031215610c0d578182fd5b82359150610c1d60208401610a0c565b90509250929050565b600060208284031215610c37578081fd5b815160ff81168114610a86578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6bffffffffffffffffffffffff19606097881b8116825260148201969096526034810194909452605484019290925290931b9091166074820152608881019190915260a80190565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0397881681526020810196909652604086019490945260608501929092528416608084015290921660a082015260c081019190915260e00190565b901515815260200190565b600060608252610d9c606083018789610c47565b602083810187905283820360408501528482528181018582028301820187855b88811015610e2857858303601f190184528135368b9003601e19018112610de1578788fd5b8a01803567ffffffffffffffff811115610df9578889fd5b8036038c1315610e07578889fd5b610e148582898501610c47565b958701959450505090840190600101610dbc565b50909b9a5050505050505050505050565b602080825260099082015268085d995c9a599a595960ba1b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600d908201526c1b5d5bdb8e88195e1c1a5c9959609a1b604082015260600190565b602080825260059082015264217369677360d81b604082015260600190565b60208082526004908201526307cdac2f60e31b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600890820152672172756e6e696e6760c01b604082015260600190565b6020808252600a908201526930b6b7bab73a1032b93960b11b604082015260600190565b90815260200190565b60008219821115610f9d57610f9d6110f8565b500190565b600082610fbd57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611610fd45750610fff565b818704821115610fe657610fe66110f8565b80861615610ff357918102915b9490941c938002610fc5565b94509492505050565b6000610a8660001960ff85168460008261102457506001610a86565b8161103157506000610a86565b816001811461104757600281146110515761107e565b6001915050610a86565b60ff841115611062576110626110f8565b6001841b915084821115611078576110786110f8565b50610a86565b5060208310610133831016604e8410600b84101617156110b1575081810a838111156110ac576110ac6110f8565b610a86565b6110be8484846001610fc2565b8086048211156110d0576110d06110f8565b02949350505050565b60008160001904831182151516156110f3576110f36110f8565b500290565b634e487b7160e01b600052601160045260246000fd5b801515811461111c57600080fd5b5056fea26469706673582212206b03b33c02ccad1abffb764949686acf4a8607652743473781ca45170aa030f764736f6c63430008000033

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

0000000000000000000000009dd25aaaaecedf3ceb484bf67803ad03f42c8721

-----Decoded View---------------
Arg [0] : _muon (address): 0x9dd25aaAAECeDf3ceB484bf67803AD03F42C8721

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009dd25aaaaecedf3ceb484bf67803ad03f42c8721


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.