ETH Price: $3,232.37 (-2.38%)

Contract

0xc58466b48D4f1554AC999920E358AEaF6De63a47
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sign Up Delegate...110611272020-10-15 15:12:061489 days ago1602774726IN
0xc58466b4...F6De63a47
0 ETH0.0081330377.4
Sign Up Delegate...110541792020-10-14 13:56:471490 days ago1602683807IN
0xc58466b4...F6De63a47
0 ETH0.005767954.9
Sign Up Delegate...109964332020-10-05 15:04:451499 days ago1601910285IN
0xc58466b4...F6De63a47
0 ETH0.0069025765.7
Sign Up Delegate...109660352020-09-30 20:56:011504 days ago1601499361IN
0xc58466b4...F6De63a47
0 ETH0.0072835669.3
Sign Up Delegate...109069512020-09-21 16:43:551513 days ago1600706635IN
0xc58466b4...F6De63a47
0 ETH0.01351993128.7
Sign Up Delegate...109026922020-09-21 1:05:301514 days ago1600650330IN
0xc58466b4...F6De63a47
0 ETH0.0074727571.1
Sign Up Delegate...108852712020-09-18 9:18:331516 days ago1600420713IN
0xc58466b4...F6De63a47
0 ETH0.031515300
Sign Up Delegate...108424592020-09-11 19:23:241523 days ago1599852204IN
0xc58466b4...F6De63a47
0 ETH0.0077550573.8
Sign Up Delegate...108193822020-09-08 6:32:061526 days ago1599546726IN
0xc58466b4...F6De63a47
0 ETH0.006905265.7
Sign Up Delegate...107701792020-08-31 17:56:431534 days ago1598896603IN
0xc58466b4...F6De63a47
0 ETH0.02845804270.9
Sign Up Delegate...107516692020-08-28 21:43:051537 days ago1598650985IN
0xc58466b4...F6De63a47
0 ETH0.0053911151.3
Sign Up Delegate...107331182020-08-26 1:37:421540 days ago1598405862IN
0xc58466b4...F6De63a47
0 ETH0.0052965350.4
Sign Up Delegate...106049512020-08-06 7:58:301559 days ago1596700710IN
0xc58466b4...F6De63a47
0 ETH0.0042032840
Sign Up Delegate...105951782020-08-04 19:27:471561 days ago1596569267IN
0xc58466b4...F6De63a47
0 ETH0.003405332.4
Sign Up Delegate...105676762020-07-31 13:40:311565 days ago1596202831IN
0xc58466b4...F6De63a47
0 ETH0.0042024840
Sign Up Delegate...105451452020-07-28 1:50:101569 days ago1595901010IN
0xc58466b4...F6De63a47
0 ETH0.0042032840
Sign Up Delegate...105252722020-07-24 23:44:111572 days ago1595634251IN
0xc58466b4...F6De63a47
0 ETH0.0038770836.9
Sign Up Delegate...104929152020-07-19 23:30:561577 days ago1595201456IN
0xc58466b4...F6De63a47
0 ETH0.0035933934.2
Sign Up Delegate...104925742020-07-19 22:20:221577 days ago1595197222IN
0xc58466b4...F6De63a47
0 ETH0.0038782636.9
Sign Up Delegate...104877182020-07-19 4:19:021577 days ago1595132342IN
0xc58466b4...F6De63a47
0 ETH0.0039713437.8
Sign Up Delegate...104385102020-07-11 13:31:051585 days ago1594474265IN
0xc58466b4...F6De63a47
0 ETH0.0027425326.1
Sign Up Delegate...104298152020-07-10 5:12:391586 days ago1594357959IN
0xc58466b4...F6De63a47
0 ETH0.003215530.6
Sign Up Delegate...104198162020-07-08 16:01:531588 days ago1594224113IN
0xc58466b4...F6De63a47
0 ETH0.0042040840
Sign Up Delegate...104191462020-07-08 13:27:481588 days ago1594214868IN
0xc58466b4...F6De63a47
0 ETH0.0042024840
Sign Up Delegate...104191462020-07-08 13:27:481588 days ago1594214868IN
0xc58466b4...F6De63a47
0 ETH0.0042032840
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ClientRaindrop

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-06-06
*/

pragma solidity ^0.4.13;

library StringUtils {
    struct slice {
        uint _len;
        uint _ptr;
    }

    /*
     * @dev Returns a slice containing the entire string.
     * @param self The string to make a slice from.
     * @return A newly allocated slice containing the entire string.
     */
    function toSlice(string self) internal pure returns (slice) {
        uint ptr;
        assembly {
            ptr := add(self, 0x20)
        }
        return slice(bytes(self).length, ptr);
    }

    /*
     * @dev Returns a new slice containing the same data as the current slice.
     * @param self The slice to copy.
     * @return A new slice containing the same data as `self`.
     */
    function copy(slice self) internal pure returns (slice) {
        return slice(self._len, self._ptr);
    }

    /*
     * @dev Copies a slice to a new string.
     * @param self The slice to copy.
     * @return A newly allocated string containing the slice's text.
     */
    function toString(slice self) internal pure returns (string) {
        string memory ret = new string(self._len);
        uint retptr;
        assembly { retptr := add(ret, 32) }

        memcpy(retptr, self._ptr, self._len);
        return ret;
    }

    /**
    * Lower
    *
    * Converts all the values of a string to their corresponding lower case
    * value.
    *
    * @param _base When being used for a data type this is the extended object
    *              otherwise this is the string base to convert to lower case
    * @return string
    */
    function lower(string _base) internal pure returns (string) {
        bytes memory _baseBytes = bytes(_base);
        for (uint i = 0; i < _baseBytes.length; i++) {
            _baseBytes[i] = _lower(_baseBytes[i]);
        }
        return string(_baseBytes);
    }

    /**
    * Lower
    *
    * Convert an alphabetic character to lower case and return the original
    * value when not alphabetic
    *
    * @param _b1 The byte to be converted to lower case
    * @return bytes1 The converted value if the passed value was alphabetic
    *                and in a upper case otherwise returns the original value
    */
    function _lower(bytes1 _b1) internal pure returns (bytes1) {
        if (_b1 >= 0x41 && _b1 <= 0x5A) {
            return bytes1(uint8(_b1) + 32);
        }
        return _b1;
    }

    function memcpy(uint dest, uint src, uint len) private pure {
        // Copy word-length chunks while possible
        for (; len >= 32; len -= 32) {
            assembly {
                mstore(dest, mload(src))
            }
            dest += 32;
            src += 32;
        }

        // Copy remaining bytes
        uint mask = 256 ** (32 - len) - 1;
        assembly {
            let srcpart := and(mload(src), not(mask))
            let destpart := and(mload(dest), mask)
            mstore(dest, or(destpart, srcpart))
        }
    }
}

contract Ownable {
    address public owner;


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


    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    constructor() public {
        owner = msg.sender;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner The address to transfer ownership to.
    */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract Withdrawable is Ownable {
    // Allows owner to withdraw ether from the contract
    function withdrawEther(address to) public onlyOwner {
        to.transfer(address(this).balance);
    }

    // Allows owner to withdraw ERC20 tokens from the contract
    function withdrawERC20Token(address tokenAddress, address to) public onlyOwner {
        ERC20Basic token = ERC20Basic(tokenAddress);
        token.transfer(to, token.balanceOf(address(this)));
    }
}

contract ClientRaindrop is Withdrawable {
    // attach the StringUtils library
    using StringUtils for string;
    using StringUtils for StringUtils.slice;
    // Events for when a user signs up for Raindrop Client and when their account is deleted
    event UserSignUp(string casedUserName, address userAddress);
    event UserDeleted(string casedUserName);

    // Variables allowing this contract to interact with the Hydro token
    address public hydroTokenAddress;
    uint public minimumHydroStakeUser;
    uint public minimumHydroStakeDelegatedUser;

    // User account template
    struct User {
        string casedUserName;
        address userAddress;
    }

    // Mapping from hashed uncased names to users (primary User directory)
    mapping (bytes32 => User) internal userDirectory;
    // Mapping from addresses to hashed uncased names (secondary directory for account recovery based on address)
    mapping (address => bytes32) internal addressDirectory;

    // Requires an address to have a minimum number of Hydro
    modifier requireStake(address _address, uint stake) {
        ERC20Basic hydro = ERC20Basic(hydroTokenAddress);
        require(hydro.balanceOf(_address) >= stake, "Insufficient HYDRO balance.");
        _;
    }

    // Allows applications to sign up users on their behalf iff users signed their permission
    function signUpDelegatedUser(string casedUserName, address userAddress, uint8 v, bytes32 r, bytes32 s)
        public
        requireStake(msg.sender, minimumHydroStakeDelegatedUser)
    {
        require(
            isSigned(userAddress, keccak256(abi.encodePacked("Create RaindropClient Hydro Account")), v, r, s),
            "Permission denied."
        );
        _userSignUp(casedUserName, userAddress);
    }

    // Allows users to sign up with their own address
    function signUpUser(string casedUserName) public requireStake(msg.sender, minimumHydroStakeUser) {
        return _userSignUp(casedUserName, msg.sender);
    }

    // Allows users to delete their accounts
    function deleteUser() public {
        bytes32 uncasedUserNameHash = addressDirectory[msg.sender];
        require(initialized(uncasedUserNameHash), "No user associated with the sender address.");

        string memory casedUserName = userDirectory[uncasedUserNameHash].casedUserName;

        delete addressDirectory[msg.sender];
        delete userDirectory[uncasedUserNameHash];

        emit UserDeleted(casedUserName);
    }

    // Allows the Hydro API to link to the Hydro token
    function setHydroTokenAddress(address _hydroTokenAddress) public onlyOwner {
        hydroTokenAddress = _hydroTokenAddress;
    }

    // Allows the Hydro API to set minimum hydro balances required for sign ups
    function setMinimumHydroStakes(uint newMinimumHydroStakeUser, uint newMinimumHydroStakeDelegatedUser)
        public onlyOwner
    {
        ERC20Basic hydro = ERC20Basic(hydroTokenAddress);
        // <= the airdrop amount
        require(newMinimumHydroStakeUser <= (222222 * 10**18), "Stake is too high.");
        // <= 1% of total supply
        require(newMinimumHydroStakeDelegatedUser <= (hydro.totalSupply() / 100), "Stake is too high.");
        minimumHydroStakeUser = newMinimumHydroStakeUser;
        minimumHydroStakeDelegatedUser = newMinimumHydroStakeDelegatedUser;
    }

    // Returns a bool indicating whether a given userName has been claimed (either exactly or as any case-variant)
    function userNameTaken(string userName) public view returns (bool taken) {
        bytes32 uncasedUserNameHash = keccak256(abi.encodePacked(userName.lower()));
        return initialized(uncasedUserNameHash);
    }

    // Returns user details (including cased username) by any cased/uncased user name that maps to a particular user
    function getUserByName(string userName) public view returns (string casedUserName, address userAddress) {
        bytes32 uncasedUserNameHash = keccak256(abi.encodePacked(userName.lower()));
        require(initialized(uncasedUserNameHash), "User does not exist.");

        return (userDirectory[uncasedUserNameHash].casedUserName, userDirectory[uncasedUserNameHash].userAddress);
    }

    // Returns user details by user address
    function getUserByAddress(address _address) public view returns (string casedUserName) {
        bytes32 uncasedUserNameHash = addressDirectory[_address];
        require(initialized(uncasedUserNameHash), "User does not exist.");

        return userDirectory[uncasedUserNameHash].casedUserName;
    }

    // Checks whether the provided (v, r, s) signature was created by the private key associated with _address
    function isSigned(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s) public pure returns (bool) {
        return (_isSigned(_address, messageHash, v, r, s) || _isSignedPrefixed(_address, messageHash, v, r, s));
    }

    // Checks unprefixed signatures
    function _isSigned(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)
        internal
        pure
        returns (bool)
    {
        return ecrecover(messageHash, v, r, s) == _address;
    }

    // Checks prefixed signatures (e.g. those created with web3.eth.sign)
    function _isSignedPrefixed(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)
        internal
        pure
        returns (bool)
    {
        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        bytes32 prefixedMessageHash = keccak256(abi.encodePacked(prefix, messageHash));

        return ecrecover(prefixedMessageHash, v, r, s) == _address;
    }

    // Common internal logic for all user signups
    function _userSignUp(string casedUserName, address userAddress) internal {
        require(!initialized(addressDirectory[userAddress]), "Address already registered.");

        require(bytes(casedUserName).length < 31, "Username too long.");
        require(bytes(casedUserName).length > 3, "Username too short.");

        bytes32 uncasedUserNameHash = keccak256(abi.encodePacked(casedUserName.toSlice().copy().toString().lower()));
        require(!initialized(uncasedUserNameHash), "Username taken.");

        userDirectory[uncasedUserNameHash] = User(casedUserName, userAddress);
        addressDirectory[userAddress] = uncasedUserNameHash;

        emit UserSignUp(casedUserName, userAddress);
    }

    function initialized(bytes32 uncasedUserNameHash) internal view returns (bool) {
        return userDirectory[uncasedUserNameHash].userAddress != 0x0; // a sufficient initialization check
    }
}

contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"deleteUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimumHydroStakeUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"casedUserName","type":"string"},{"name":"userAddress","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"signUpDelegatedUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"casedUserName","type":"string"}],"name":"signUpUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userName","type":"string"}],"name":"getUserByName","outputs":[{"name":"casedUserName","type":"string"},{"name":"userAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getUserByAddress","outputs":[{"name":"casedUserName","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hydroTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMinimumHydroStakeUser","type":"uint256"},{"name":"newMinimumHydroStakeDelegatedUser","type":"uint256"}],"name":"setMinimumHydroStakes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"messageHash","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"isSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimumHydroStakeDelegatedUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hydroTokenAddress","type":"address"}],"name":"setHydroTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userName","type":"string"}],"name":"userNameTaken","outputs":[{"name":"taken","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"to","type":"address"}],"name":"withdrawERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"casedUserName","type":"string"},{"indexed":false,"name":"userAddress","type":"address"}],"name":"UserSignUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"casedUserName","type":"string"}],"name":"UserDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405260008054600160a060020a033316600160a060020a0319909116179055611b58806100306000396000f3006080604052600436106100cc5763ffffffff60e060020a600035041663026ff05e81146100d15780632b45bcf9146100e85780632e5df0fe1461010f57806345004310146101855780634bff5009146101de57806369c212f6146102c857806375d7e4bd1461035e57806385ba9a991461038f5780638677ebe8146103aa5780638da5cb5b146103ee578063af933b5714610403578063ba75d0de14610424578063bed7437f14610439578063d35e656b1461045a578063ecfbe70c146104b3578063f2fde38b146104da575b600080fd5b3480156100dd57600080fd5b506100e66104fb565b005b3480156100f457600080fd5b506100fd610725565b60408051918252519081900360200190f35b34801561011b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100e694369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505050602081013560ff16906040810135906060013561072b565b34801561019157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100e69436949293602493928401919081908401838280828437509497506109569650505050505050565b3480156101ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610237943694929360249392840191908190840183828082843750949750610a599650505050505050565b604051808060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b8381101561028c578181015183820152602001610274565b50505050905090810190601f1680156102b95780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d457600080fd5b506102e9600160a060020a0360043516610c43565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036a57600080fd5b50610373610d5e565b60408051600160a060020a039092168252519081900360200190f35b34801561039b57600080fd5b506100e6600435602435610d6d565b3480156103b657600080fd5b506103da600160a060020a036004351660243560ff60443516606435608435610ed1565b604080519115158252519081900360200190f35b3480156103fa57600080fd5b50610373610efd565b34801561040f57600080fd5b506100e6600160a060020a0360043516610f0c565b34801561043057600080fd5b506100fd610f65565b34801561044557600080fd5b506100e6600160a060020a0360043516610f6b565b34801561046657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103da943694929360249392840191908190840183828082843750949750610fb59650505050505050565b3480156104bf57600080fd5b506100e6600160a060020a0360043581169060243516611095565b3480156104e657600080fd5b506100e6600160a060020a03600435166111c9565b600160a060020a033316600090815260056020526040902054606061051f82611261565b151561059b576040805160e560020a62461bcd02815260206004820152602b60248201527f4e6f2075736572206173736f6369617465642077697468207468652073656e6460448201527f657220616464726573732e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526004602090815260409182902080548351601f60026101006001851615026000190190931692909204918201849004840281018401909452808452909183018282801561062e5780601f106106035761010080835404028352916020019161062e565b820191906000526020600020905b81548152906001019060200180831161061157829003601f168201915b505050600160a060020a033316600090815260056020908152604080832083905587835260049091528120939450915061066a90508282611a37565b50600101805473ffffffffffffffffffffffffffffffffffffffff1916905560408051602080825283518183015283517f28f7ad4961343bc792aec8e7886fc38c6847f9cd253ec14a633ff3bed8370883938593928392918301919085019080838360005b838110156106e75781810151838201526020016106cf565b50505050905090810190601f1680156107145780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050565b60025481565b600354600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0333818116600484015292519294931691839183916370a08231916024808201926020929091908290030181600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b5051101561081e576040805160e560020a62461bcd02815260206004820152601b60248201527f496e73756666696369656e7420485944524f2062616c616e63652e0000000000604482015290519081900360640190fd5b6108ec8760405160200180807f437265617465205261696e64726f70436c69656e7420487964726f204163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060230190506040516020818303038152906040526040518082805190602001908083835b602083106108b75780518252601f199092019160209182019101610898565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020888888610ed1565b1515610942576040805160e560020a62461bcd02815260206004820152601260248201527f5065726d697373696f6e2064656e6965642e0000000000000000000000000000604482015290519081900360640190fd5b61094c8888611284565b5050505050505050565b600254600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0333818116600484015292519294931691839183916370a08231916024808201926020929091908290030181600087803b1580156109c757600080fd5b505af11580156109db573d6000803e3d6000fd5b505050506040513d60208110156109f157600080fd5b50511015610a49576040805160e560020a62461bcd02815260206004820152601b60248201527f496e73756666696369656e7420485944524f2062616c616e63652e0000000000604482015290519081900360640190fd5b610a538433611284565b50505050565b6060600080610a678461161f565b6040516020018082805190602001908083835b60208310610a995780518252601f199092019160209182019101610a7a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610afc5780518252601f199092019160209182019101610add565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050610b3481611261565b1515610b8a576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220646f6573206e6f742065786973742e000000000000000000000000604482015290519081900360640190fd5b60008181526004602090815260409182902060018082015482548551601f6002948316156101000260001901909216939093049081018590048502830185019095528482529193600160a060020a039092169290918491830182828015610c325780601f10610c0757610100808354040283529160200191610c32565b820191906000526020600020905b815481529060010190602001808311610c1557829003601f168201915b505050505091509250925050915091565b600160a060020a038116600090815260056020526040902054606090610c6881611261565b1515610cbe576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220646f6573206e6f742065786973742e000000000000000000000000604482015290519081900360640190fd5b60008181526004602090815260409182902080548351601f600261010060018516150260001901909316929092049182018490048402810184019094528084529091830182828015610d515780601f10610d2657610100808354040283529160200191610d51565b820191906000526020600020905b815481529060010190602001808311610d3457829003601f168201915b5050505050915050919050565b600154600160a060020a031681565b6000805433600160a060020a03908116911614610d8957600080fd5b50600154600160a060020a0316692f0eadc3216237780000831115610df8576040805160e560020a62461bcd02815260206004820152601260248201527f5374616b6520697320746f6f20686967682e0000000000000000000000000000604482015290519081900360640190fd5b606481600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e3857600080fd5b505af1158015610e4c573d6000803e3d6000fd5b505050506040513d6020811015610e6257600080fd5b5051811515610e6d57fe5b04821115610ec5576040805160e560020a62461bcd02815260206004820152601260248201527f5374616b6520697320746f6f20686967682e0000000000000000000000000000604482015290519081900360640190fd5b50600291909155600355565b6000610ee086868686866116a4565b80610ef35750610ef38686868686611729565b9695505050505050565b600054600160a060020a031681565b60005433600160a060020a03908116911614610f2757600080fd5b604051600160a060020a0380831691309091163180156108fc02916000818181858888f19350505050158015610f61573d6000803e3d6000fd5b5050565b60035481565b60005433600160a060020a03908116911614610f8657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080610fc18361161f565b6040516020018082805190602001908083835b60208310610ff35780518252601f199092019160209182019101610fd4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110565780518252601f199092019160209182019101611037565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905061108e81611261565b9392505050565b6000805433600160a060020a039081169116146110b157600080fd5b82905080600160a060020a031663a9059cbb8383600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b5050505050565b60005433600160a060020a039081169116146111e457600080fd5b600160a060020a03811615156111f957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600081815260046020526040902060010154600160a060020a031615155b919050565b600160a060020a0381166000908152600560205260408120546112a690611261565b156112fb576040805160e560020a62461bcd02815260206004820152601b60248201527f4164647265737320616c726561647920726567697374657265642e0000000000604482015290519081900360640190fd5b8251601f11611354576040805160e560020a62461bcd02815260206004820152601260248201527f557365726e616d6520746f6f206c6f6e672e0000000000000000000000000000604482015290519081900360640190fd5b82516003106113ad576040805160e560020a62461bcd02815260206004820152601360248201527f557365726e616d6520746f6f2073686f72742e00000000000000000000000000604482015290519081900360640190fd5b6113ce6113c96113c46113bf8661189d565b6118c3565b6118e9565b61161f565b6040516020018082805190602001908083835b602083106114005780518252601f1990920191602091820191016113e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106114635780518252601f199092019160209182019101611444565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905061149b81611261565b156114f0576040805160e560020a62461bcd02815260206004820152600f60248201527f557365726e616d652074616b656e2e0000000000000000000000000000000000604482015290519081900360640190fd5b604080518082018252848152600160a060020a0384166020808301919091526000848152600482529290922081518051929391926115319284920190611a7e565b50602091820151600191909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039283161790558316600081815260058352604080822085905580518085019390935280835286519083015285517fbfba570579dd015aeb3054b92f73b1704ea3990bff6ef0ad798dcc17ddf12e51938793879390928392606084019290870191908190849084905b838110156115df5781810151838201526020016115c7565b50505050905090810190601f16801561160c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050565b60608160005b815181101561169d57611657828281518110151561163f57fe5b90602001015160f860020a900460f860020a0261193c565b828281518110151561166557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611625565b5092915050565b604080516000808252602080830180855288905260ff871683850152606083018690526080830185905292519092600160a060020a0389169260019260a08083019392601f19830192908190039091019087865af115801561170a573d6000803e3d6000fd5b50505060206040510351600160a060020a031614905095945050505050565b604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208084019182529351600094859385938b939092019182918083835b602083106117945780518252601f199092019160209182019101611775565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106117f45780518252601f1990920191602091820191016117d5565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080845283830180875282905260ff8e1684870152606084018d9052608084018c90529451909750600160a060020a038f1696506001955060a080840195929450601f198201938290030191865af115801561187c573d6000803e3d6000fd5b50505060206040510351600160a060020a0316149250505095945050505050565b6118a5611af8565b50604080518082019091528151815260209182019181019190915290565b6118cb611af8565b50604080518082019091528151815260208083015190820152919050565b606080600083600001516040519080825280601f01601f191660200182016040528015611920578160200160208202803883390190505b50915060208201905061169d81856020015186600001516119f3565b60007f41000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008316108015906119d257507f5a000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000831611155b156119ef578160f860020a900460200160f860020a02905061127f565b5090565b60005b60208210611a18578251845260209384019390920191601f19909101906119f6565b50905182516020929092036101000a6000190180199091169116179052565b50805460018160011615610100020316600290046000825580601f10611a5d5750611a7b565b601f016020900490600052602060002090810190611a7b9190611b0f565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611abf57805160ff1916838001178555611aec565b82800160010185558215611aec579182015b82811115611aec578251825591602001919060010190611ad1565b506119ef929150611b0f565b604080518082019091526000808252602082015290565b611b2991905b808211156119ef5760008155600101611b15565b905600a165627a7a723058208dc85eaf12914db10a33ed27b0fbe4802ea578bcf1542d3f3b1a80e7d7fa5d470029

Deployed Bytecode

0x6080604052600436106100cc5763ffffffff60e060020a600035041663026ff05e81146100d15780632b45bcf9146100e85780632e5df0fe1461010f57806345004310146101855780634bff5009146101de57806369c212f6146102c857806375d7e4bd1461035e57806385ba9a991461038f5780638677ebe8146103aa5780638da5cb5b146103ee578063af933b5714610403578063ba75d0de14610424578063bed7437f14610439578063d35e656b1461045a578063ecfbe70c146104b3578063f2fde38b146104da575b600080fd5b3480156100dd57600080fd5b506100e66104fb565b005b3480156100f457600080fd5b506100fd610725565b60408051918252519081900360200190f35b34801561011b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100e694369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505050602081013560ff16906040810135906060013561072b565b34801561019157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100e69436949293602493928401919081908401838280828437509497506109569650505050505050565b3480156101ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610237943694929360249392840191908190840183828082843750949750610a599650505050505050565b604051808060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360005b8381101561028c578181015183820152602001610274565b50505050905090810190601f1680156102b95780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156102d457600080fd5b506102e9600160a060020a0360043516610c43565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036a57600080fd5b50610373610d5e565b60408051600160a060020a039092168252519081900360200190f35b34801561039b57600080fd5b506100e6600435602435610d6d565b3480156103b657600080fd5b506103da600160a060020a036004351660243560ff60443516606435608435610ed1565b604080519115158252519081900360200190f35b3480156103fa57600080fd5b50610373610efd565b34801561040f57600080fd5b506100e6600160a060020a0360043516610f0c565b34801561043057600080fd5b506100fd610f65565b34801561044557600080fd5b506100e6600160a060020a0360043516610f6b565b34801561046657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103da943694929360249392840191908190840183828082843750949750610fb59650505050505050565b3480156104bf57600080fd5b506100e6600160a060020a0360043581169060243516611095565b3480156104e657600080fd5b506100e6600160a060020a03600435166111c9565b600160a060020a033316600090815260056020526040902054606061051f82611261565b151561059b576040805160e560020a62461bcd02815260206004820152602b60248201527f4e6f2075736572206173736f6369617465642077697468207468652073656e6460448201527f657220616464726573732e000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526004602090815260409182902080548351601f60026101006001851615026000190190931692909204918201849004840281018401909452808452909183018282801561062e5780601f106106035761010080835404028352916020019161062e565b820191906000526020600020905b81548152906001019060200180831161061157829003601f168201915b505050600160a060020a033316600090815260056020908152604080832083905587835260049091528120939450915061066a90508282611a37565b50600101805473ffffffffffffffffffffffffffffffffffffffff1916905560408051602080825283518183015283517f28f7ad4961343bc792aec8e7886fc38c6847f9cd253ec14a633ff3bed8370883938593928392918301919085019080838360005b838110156106e75781810151838201526020016106cf565b50505050905090810190601f1680156107145780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050565b60025481565b600354600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0333818116600484015292519294931691839183916370a08231916024808201926020929091908290030181600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b5051101561081e576040805160e560020a62461bcd02815260206004820152601b60248201527f496e73756666696369656e7420485944524f2062616c616e63652e0000000000604482015290519081900360640190fd5b6108ec8760405160200180807f437265617465205261696e64726f70436c69656e7420487964726f204163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060230190506040516020818303038152906040526040518082805190602001908083835b602083106108b75780518252601f199092019160209182019101610898565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020888888610ed1565b1515610942576040805160e560020a62461bcd02815260206004820152601260248201527f5065726d697373696f6e2064656e6965642e0000000000000000000000000000604482015290519081900360640190fd5b61094c8888611284565b5050505050505050565b600254600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0333818116600484015292519294931691839183916370a08231916024808201926020929091908290030181600087803b1580156109c757600080fd5b505af11580156109db573d6000803e3d6000fd5b505050506040513d60208110156109f157600080fd5b50511015610a49576040805160e560020a62461bcd02815260206004820152601b60248201527f496e73756666696369656e7420485944524f2062616c616e63652e0000000000604482015290519081900360640190fd5b610a538433611284565b50505050565b6060600080610a678461161f565b6040516020018082805190602001908083835b60208310610a995780518252601f199092019160209182019101610a7a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610afc5780518252601f199092019160209182019101610add565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050610b3481611261565b1515610b8a576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220646f6573206e6f742065786973742e000000000000000000000000604482015290519081900360640190fd5b60008181526004602090815260409182902060018082015482548551601f6002948316156101000260001901909216939093049081018590048502830185019095528482529193600160a060020a039092169290918491830182828015610c325780601f10610c0757610100808354040283529160200191610c32565b820191906000526020600020905b815481529060010190602001808311610c1557829003601f168201915b505050505091509250925050915091565b600160a060020a038116600090815260056020526040902054606090610c6881611261565b1515610cbe576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220646f6573206e6f742065786973742e000000000000000000000000604482015290519081900360640190fd5b60008181526004602090815260409182902080548351601f600261010060018516150260001901909316929092049182018490048402810184019094528084529091830182828015610d515780601f10610d2657610100808354040283529160200191610d51565b820191906000526020600020905b815481529060010190602001808311610d3457829003601f168201915b5050505050915050919050565b600154600160a060020a031681565b6000805433600160a060020a03908116911614610d8957600080fd5b50600154600160a060020a0316692f0eadc3216237780000831115610df8576040805160e560020a62461bcd02815260206004820152601260248201527f5374616b6520697320746f6f20686967682e0000000000000000000000000000604482015290519081900360640190fd5b606481600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e3857600080fd5b505af1158015610e4c573d6000803e3d6000fd5b505050506040513d6020811015610e6257600080fd5b5051811515610e6d57fe5b04821115610ec5576040805160e560020a62461bcd02815260206004820152601260248201527f5374616b6520697320746f6f20686967682e0000000000000000000000000000604482015290519081900360640190fd5b50600291909155600355565b6000610ee086868686866116a4565b80610ef35750610ef38686868686611729565b9695505050505050565b600054600160a060020a031681565b60005433600160a060020a03908116911614610f2757600080fd5b604051600160a060020a0380831691309091163180156108fc02916000818181858888f19350505050158015610f61573d6000803e3d6000fd5b5050565b60035481565b60005433600160a060020a03908116911614610f8657600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080610fc18361161f565b6040516020018082805190602001908083835b60208310610ff35780518252601f199092019160209182019101610fd4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110565780518252601f199092019160209182019101611037565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905061108e81611261565b9392505050565b6000805433600160a060020a039081169116146110b157600080fd5b82905080600160a060020a031663a9059cbb8383600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d60208110156111c257600080fd5b5050505050565b60005433600160a060020a039081169116146111e457600080fd5b600160a060020a03811615156111f957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600081815260046020526040902060010154600160a060020a031615155b919050565b600160a060020a0381166000908152600560205260408120546112a690611261565b156112fb576040805160e560020a62461bcd02815260206004820152601b60248201527f4164647265737320616c726561647920726567697374657265642e0000000000604482015290519081900360640190fd5b8251601f11611354576040805160e560020a62461bcd02815260206004820152601260248201527f557365726e616d6520746f6f206c6f6e672e0000000000000000000000000000604482015290519081900360640190fd5b82516003106113ad576040805160e560020a62461bcd02815260206004820152601360248201527f557365726e616d6520746f6f2073686f72742e00000000000000000000000000604482015290519081900360640190fd5b6113ce6113c96113c46113bf8661189d565b6118c3565b6118e9565b61161f565b6040516020018082805190602001908083835b602083106114005780518252601f1990920191602091820191016113e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106114635780518252601f199092019160209182019101611444565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905061149b81611261565b156114f0576040805160e560020a62461bcd02815260206004820152600f60248201527f557365726e616d652074616b656e2e0000000000000000000000000000000000604482015290519081900360640190fd5b604080518082018252848152600160a060020a0384166020808301919091526000848152600482529290922081518051929391926115319284920190611a7e565b50602091820151600191909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039283161790558316600081815260058352604080822085905580518085019390935280835286519083015285517fbfba570579dd015aeb3054b92f73b1704ea3990bff6ef0ad798dcc17ddf12e51938793879390928392606084019290870191908190849084905b838110156115df5781810151838201526020016115c7565b50505050905090810190601f16801561160c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050565b60608160005b815181101561169d57611657828281518110151561163f57fe5b90602001015160f860020a900460f860020a0261193c565b828281518110151561166557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611625565b5092915050565b604080516000808252602080830180855288905260ff871683850152606083018690526080830185905292519092600160a060020a0389169260019260a08083019392601f19830192908190039091019087865af115801561170a573d6000803e3d6000fd5b50505060206040510351600160a060020a031614905095945050505050565b604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208084019182529351600094859385938b939092019182918083835b602083106117945780518252601f199092019160209182019101611775565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106117f45780518252601f1990920191602091820191016117d5565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080845283830180875282905260ff8e1684870152606084018d9052608084018c90529451909750600160a060020a038f1696506001955060a080840195929450601f198201938290030191865af115801561187c573d6000803e3d6000fd5b50505060206040510351600160a060020a0316149250505095945050505050565b6118a5611af8565b50604080518082019091528151815260209182019181019190915290565b6118cb611af8565b50604080518082019091528151815260208083015190820152919050565b606080600083600001516040519080825280601f01601f191660200182016040528015611920578160200160208202803883390190505b50915060208201905061169d81856020015186600001516119f3565b60007f41000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008316108015906119d257507f5a000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000831611155b156119ef578160f860020a900460200160f860020a02905061127f565b5090565b60005b60208210611a18578251845260209384019390920191601f19909101906119f6565b50905182516020929092036101000a6000190180199091169116179052565b50805460018160011615610100020316600290046000825580601f10611a5d5750611a7b565b601f016020900490600052602060002090810190611a7b9190611b0f565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611abf57805160ff1916838001178555611aec565b82800160010185558215611aec579182015b82811115611aec578251825591602001919060010190611ad1565b506119ef929150611b0f565b604080518082019091526000808252602082015290565b611b2991905b808211156119ef5760008155600101611b15565b905600a165627a7a723058208dc85eaf12914db10a33ed27b0fbe4802ea578bcf1542d3f3b1a80e7d7fa5d470029

Swarm Source

bzzr://8dc85eaf12914db10a33ed27b0fbe4802ea578bcf1542d3f3b1a80e7d7fa5d47

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.