ETH Price: $2,734.88 (+0.57%)

Contract

0x8542325B72C6D9fC0aD2Ca965A78435413a915A0
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer216409222025-01-17 1:26:4735 days ago1737077207IN
0x8542325B...413a915A0
0 ETH0.000239574.57125727
Transfer213783282024-12-11 9:19:3571 days ago1733908775IN
0x8542325B...413a915A0
0 ETH0.000770614.7
Transfer204533902024-08-04 6:27:23200 days ago1722752843IN
0x8542325B...413a915A0
0 ETH0.000052391
Transfer192517322024-02-18 2:28:23368 days ago1708223303IN
0x8542325B...413a915A0
0 ETH0.000565114.16514238
Transfer188543552023-12-24 8:11:59424 days ago1703405519IN
0x8542325B...413a915A0
0 ETH0.0011720522.36316584
Transfer175328422023-06-22 4:39:11609 days ago1687408751IN
0x8542325B...413a915A0
0 ETH0.000844616.11902277
Transfer166047102023-02-11 9:45:23740 days ago1676108723IN
0x8542325B...413a915A0
0 ETH0.0009686218.48592108
Transfer163526822023-01-07 5:00:59775 days ago1673067659IN
0x8542325B...413a915A0
0 ETH0.0008909717
Transfer162551032022-12-24 14:10:35789 days ago1671891035IN
0x8542325B...413a915A0
0 ETH0.0014073526.8589035
Transfer From158850112022-11-02 21:27:23841 days ago1667424443IN
0x8542325B...413a915A0
0 ETH0.0006148417.59251412
Transfer From158850102022-11-02 21:27:11841 days ago1667424431IN
0x8542325B...413a915A0
0 ETH0.0010596118.19647227
Approve158850102022-11-02 21:27:11841 days ago1667424431IN
0x8542325B...413a915A0
0 ETH0.0005185818.19647227
Approve158850092022-11-02 21:26:59841 days ago1667424419IN
0x8542325B...413a915A0
0 ETH0.0009121318.84606356
Transfer155292312022-09-13 21:33:55891 days ago1663104835IN
0x8542325B...413a915A0
0 ETH0.0006114211.6660995
Transfer155228072022-09-12 20:10:54892 days ago1663013454IN
0x8542325B...413a915A0
0 ETH0.001189722.7
Approve154306542022-08-28 23:19:16907 days ago1661728756IN
0x8542325B...413a915A0
0 ETH0.000301786.2
Transfer153907962022-08-22 14:34:57913 days ago1661178897IN
0x8542325B...413a915A0
0 ETH0.0005763711
Transfer153361532022-08-13 22:52:10922 days ago1660431130IN
0x8542325B...413a915A0
0 ETH0.000209644
Transfer143209392022-03-04 14:12:561084 days ago1646403176IN
0x8542325B...413a915A0
0 ETH0.0017295333
Transfer140217602022-01-17 7:51:371130 days ago1642405897IN
0x8542325B...413a915A0
0 ETH0.00586714111.87015925
Approve137828382021-12-11 8:43:381167 days ago1639212218IN
0x8542325B...413a915A0
0 ETH0.0017697336.57465194
Transfer130749262021-08-22 11:44:331278 days ago1629632673IN
0x8542325B...413a915A0
0 ETH0.0010062719.2
Approve128827342021-07-23 12:52:201308 days ago1627044740IN
0x8542325B...413a915A0
0 ETH0.000778816
Transfer126672722021-06-19 21:43:251342 days ago1624139005IN
0x8542325B...413a915A0
0 ETH0.0013088831
Transfer125807342021-06-06 11:37:531355 days ago1622979473IN
0x8542325B...413a915A0
0 ETH0.0004219810
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:
OysterShell

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.18;

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }

contract OysterShell {
    // Public variables of SHL
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;
    uint256 public lockedSupply;
    address public director;
    bool public directorLock;
    uint256 public feeAmount;
    uint256 public retentionMin;
    uint256 public retentionMax;
    uint256 public lockMin;
    uint256 public lockMax;

    // Array definitions
    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowance;
    mapping (address => uint256) public locked;

    // ERC20 event
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    
    // ERC20 event
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    // This notifies clients about the amount burnt
    event Burn(address indexed _from, uint256 _value);
    
    // This notifies clients about an address getting locked
    event Lock(address indexed _target, uint256 _value, uint256 _release);
    
    // This notifies clients about a claim being made on a locked address
    event Claim(address indexed _target, address indexed _payout, address indexed _fee);

    /**
     * Constructor function
     *
     * Initializes contract
     */
    function OysterShell() public {
        director = msg.sender;
        name = "Oyster Shell";
        symbol = "SHL";
        decimals = 18;
        directorLock = false;
        totalSupply = 98592692 * 10 ** uint256(decimals);
        lockedSupply = 0;
        
        // Assign total SHL supply to the director
        balances[director] = totalSupply;
        
        // SHL fee paid to brokers
        feeAmount = 1 * 10 ** uint256(decimals);
        
        // Minimum SHL that can get locked
        retentionMin = 20 * 10 ** uint256(decimals);
        
        // Maximum SHL that can get locked
        retentionMax = 200 * 10 ** uint256(decimals);
        
        // Minimum lock duration
        lockMin = 10;
        
        // Maximum lock duration
        lockMax = 360;
    }
    
    /**
     * ERC20 balance function
     */
    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }
    
    /**
     * SHL lock time retrieval function
     */
    function lockTime(address _owner) public constant returns (uint256 lockedValue) {
        return locked[_owner];
    }
    
    modifier onlyDirector {
        // Director can lock themselves out to complete decentralization of Oyster network
        // An alternative is that another smart contract could become the decentralized director
        require(!directorLock);
        
        // Only the director is permitted
        require(msg.sender == director);
        _;
    }
    
    modifier onlyDirectorForce {
        // Only the director is permitted
        require(msg.sender == director);
        _;
    }
    
    /**
     * Transfers the director to a new address
     */
    function transferDirector(address newDirector) public onlyDirectorForce {
        director = newDirector;
    }
    
    /**
     * Withdraw funds from the contract
     */
    function withdrawFunds() public onlyDirectorForce {
        director.transfer(this.balance);
    }
    
    /**
     * Permanently lock out the director to decentralize Oyster
     * Invocation is discretionary because Oyster might be better suited to
     * transition to an artificially intelligent smart contract director
     */
    function selfLock() public payable onlyDirector {
        // Prevents accidental lockout
        require(msg.value == 10 ether);
        
        // Permanently lock out the director
        directorLock = true;
    }
    
    /**
     * Director can alter the broker fee rate
     */
    function amendFee(uint256 feeAmountSet) public onlyDirector returns (bool success) {
        feeAmount = feeAmountSet;
        return true;
    }
    
    /**
     * Director can alter the upper and lower bounds of SHL locking capacity
     */
    function amendRetention(uint256 retentionMinSet, uint256 retentionMaxSet) public onlyDirector returns (bool success) {
        // Set retentionMin
        retentionMin = retentionMinSet;
        
        // Set retentionMax
        retentionMax = retentionMaxSet;
        return true;
    }
    
    /**
     * Director can alter the upper and lower bounds of SHL locking duration
     */
    function amendLock(uint256 lockMinSet, uint256 lockMaxSet) public onlyDirector returns (bool success) {
        // Set lockMin
        lockMin = lockMinSet;
        
        // Set lockMax
        lockMax = lockMaxSet;
        return true;
    }
    
    /**
     * Oyster Protocol Function
     * More information at https://oyster.ws/ShellWhitepaper.pdf
     * 
     * Lock an address
     *
     * @param _duration the time duration that the SHL should remain locked
     */
    function lock(uint256 _duration) public returns (bool success) {
        // The address must be previously unlocked
        require(locked[msg.sender] == 0);
        
        // An address must have at least retentionMin to be locked
        require(balances[msg.sender] >= retentionMin);
        
        // Prevent addresses with large balances from getting locked
        require(balances[msg.sender] <= retentionMax);
        
        // Enforce minimum lock duration
        require(_duration >= lockMin);
        
        // Enforce maximum lock duration
        require(_duration <= lockMax);
        
        // Set locked state to true
        locked[msg.sender] = block.timestamp + _duration;
        
        // Add to lockedSupply
        lockedSupply += balances[msg.sender];
        
        // Execute an event reflecting the change
        Lock(msg.sender, balances[msg.sender], locked[msg.sender]);
        return true;
    }
    
    /**
     * Oyster Protocol Function
     * More information at https://oyster.ws/ShellWhitepaper.pdf
     * 
     * Claim all SHL from a locked address
     *
     * @param _payout the address of the website owner
     * @param _fee the address of the broker node
     */
    function claim(address _payout, address _fee) public returns (bool success) {
        // The claimed address must have already been locked
        require(locked[msg.sender] <= block.timestamp && locked[msg.sender] != 0);
        
        // The payout and fee addresses must be different
        require(_payout != _fee);
        
        // The claimed address cannot pay itself
        require(msg.sender != _payout);
        
        // The claimed address cannot pay itself
        require(msg.sender != _fee);
        
        // Check if the locked address has enough
        require(balances[msg.sender] >= retentionMin);
        
        // Save this for an assertion in the future
        uint256 previousBalances = balances[msg.sender] + balances[_payout] + balances[_fee];
        
        // Calculate amount to be paid to _payout
        uint256 payAmount = balances[msg.sender] - feeAmount;
        
        // Take from lockedSupply
        lockedSupply -= balances[msg.sender];
        
        // Reset locked address balance to zero
        balances[msg.sender] = 0;
        
        // Pay the website owner that invoked the web node that found the SHL seed key
        balances[_payout] += payAmount;
        
        // Pay the broker node that unlocked the SHL
        balances[_fee] += feeAmount;
        
        // Execute events to reflect the changes
        Claim(msg.sender, _payout, _fee);
        Transfer(msg.sender, _payout, payAmount);
        Transfer(msg.sender, _fee, feeAmount);
        
        // Failsafe logic that should never be false
        assert(balances[msg.sender] + balances[_payout] + balances[_fee] == previousBalances);
        return true;
    }
    
    /**
     * Crowdsale function
     */
    function () public payable {
        // Prevent ETH from getting sent to contract
        require(false);
    }

    /**
     * Internal transfer, can be called by this contract only
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Sending addresses cannot be locked
        require(locked[_from] == 0);
        
        // If the receiving address is locked, it cannot exceed retentionMax
        if (locked[_to] > 0) {
            require(balances[_to] + _value <= retentionMax);
        }
        
        // Prevent transfer to 0x0 address, use burn() instead
        require(_to != 0x0);
        
        // Check if the sender has enough
        require(balances[_from] >= _value);
        
        // Check for overflows
        require(balances[_to] + _value > balances[_to]);
        
        // Save this for an assertion in the future
        uint256 previousBalances = balances[_from] + balances[_to];
        
        // Subtract from the sender
        balances[_from] -= _value;
        
        // Add the same to the recipient
        balances[_to] += _value;
        Transfer(_from, _to, _value);
        
        // Failsafe logic that should never be false
        assert(balances[_from] + balances[_to] == previousBalances);
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to the address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) public {
        _transfer(msg.sender, _to, _value);
    }

    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` in behalf of `_from`
     *
     * @param _from the address of the sender
     * @param _to the address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        // Check allowance
        require(_value <= allowance[_from][msg.sender]);
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf
     *
     * @param _spender the address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) public returns (bool success) {
        // Locked addresses cannot be approved
        require(locked[msg.sender] == 0);
        
        allowance[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * Set allowance for other address and notify
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
     *
     * @param _spender the address authorized to spend
     * @param _value the max amount they can spend
     * @param _extraData some extra information to send to the approved contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public returns (bool success) {
        // Locked addresses cannot be burnt
        require(locked[msg.sender] == 0);
        
        // Check if the sender has enough
        require(balances[msg.sender] >= _value);
        
        // Subtract from the sender
        balances[msg.sender] -= _value;
        
        // Updates totalSupply
        totalSupply -= _value;
        Burn(msg.sender, _value);
        return true;
    }

    /**
     * Destroy tokens from other account
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender
     * @param _value the amount of money to burn
     */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        // Locked addresses cannot be burnt
        require(locked[_from] == 0);
        
        // Check if the targeted balance is enough
        require(balances[_from] >= _value);
        
        // Check allowance
        require(_value <= allowance[_from][msg.sender]);
        
        // Subtract from the targeted balance
        balances[_from] -= _value;
        
        // Subtract from the sender's allowance
        allowance[_from][msg.sender] -= _value;
        
        // Update totalSupply
        totalSupply -= _value;
        Burn(_from, _value);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"feeAmountSet","type":"uint256"}],"name":"amendFee","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockMax","outputs":[{"name":"","type":"uint256"}],"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":"_payout","type":"address"},{"name":"_fee","type":"address"}],"name":"claim","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"retentionMax","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFunds","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":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"director","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"lockTime","outputs":[{"name":"lockedValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"retentionMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"lockMinSet","type":"uint256"},{"name":"lockMaxSet","type":"uint256"}],"name":"amendLock","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"locked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"selfLock","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"retentionMinSet","type":"uint256"},{"name":"retentionMaxSet","type":"uint256"}],"name":"amendRetention","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_duration","type":"uint256"}],"name":"lock","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDirector","type":"address"}],"name":"transferDirector","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"directorLock","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"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_release","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":true,"name":"_payout","type":"address"},{"indexed":true,"name":"_fee","type":"address"}],"name":"Claim","type":"event"}]

606060405234156200001057600080fd5b60058054600160a060020a03191633600160a060020a031617905560408051908101604052600c81527f4f7973746572205368656c6c000000000000000000000000000000000000000060208201526000908051620000749291602001906200013f565b5060408051908101604052600381527f53484c000000000000000000000000000000000000000000000000000000000060208201526001908051620000be9291602001906200013f565b5060028054601260ff19909116178082556005805460a060020a60ff0219811690915560ff918216600a90810a6305e067b402600381905560006004819055600160a060020a039093168352600b602052604090922091909155915416810a60068190556014810260075560c80260085560098190556101689055620001e4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018257805160ff1916838001178555620001b2565b82800160010185558215620001b2579182015b82811115620001b257825182559160200191906001019062000195565b50620001c0929150620001c4565b5090565b620001e191905b80821115620001c05760008155600101620001cb565b90565b61121b80620001f46000396000f30060606040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303bc6d0d811461019157806306fdde03146101bb578063095ea7b3146102455780630ac153ac1461026757806318160ddd1461028c57806321c0b3421461029f57806322bb4f53146102c457806323b872dd146102d757806324600fc3146102ff57806327e235e314610312578063313ce5671461033157806342966c681461035a5780635af82abf1461037057806369e154041461039f57806370a08231146103b257806379cc6790146103d157806395d89b41146103f3578063a4beda6314610406578063a9059cbb14610425578063ba3d0cb514610447578063ca5c7b911461045a578063cae9ca511461046d578063cbe56377146104d2578063cbf9fe5f146104eb578063d1e7e81f1461050a578063d274fa9114610512578063dd4670641461052b578063dd62ed3e14610541578063ddd41ef614610566578063f1c9cc1114610585578063ffe2d77e14610598575b600080fd5b005b341561019c57600080fd5b6101a76004356105ab565b604051901515815260200160405180910390f35b34156101c657600080fd5b6101ce6105e9565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020a5780820151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025057600080fd5b6101a7600160a060020a0360043516602435610687565b341561027257600080fd5b61027a610713565b60405190815260200160405180910390f35b341561029757600080fd5b61027a610719565b34156102aa57600080fd5b6101a7600160a060020a036004358116906024351661071f565b34156102cf57600080fd5b61027a610957565b34156102e257600080fd5b6101a7600160a060020a036004358116906024351660443561095d565b341561030a57600080fd5b61018f6109d4565b341561031d57600080fd5b61027a600160a060020a0360043516610a2a565b341561033c57600080fd5b610344610a3c565b60405160ff909116815260200160405180910390f35b341561036557600080fd5b6101a7600435610a45565b341561037b57600080fd5b610383610af3565b604051600160a060020a03909116815260200160405180910390f35b34156103aa57600080fd5b61027a610b02565b34156103bd57600080fd5b61027a600160a060020a0360043516610b08565b34156103dc57600080fd5b6101a7600160a060020a0360043516602435610b23565b34156103fe57600080fd5b6101ce610c22565b341561041157600080fd5b61027a600160a060020a0360043516610c8d565b341561043057600080fd5b61018f600160a060020a0360043516602435610ca8565b341561045257600080fd5b61027a610cb7565b341561046557600080fd5b61027a610cbd565b341561047857600080fd5b6101a760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cc395505050505050565b34156104dd57600080fd5b6101a7600435602435610df5565b34156104f657600080fd5b61027a600160a060020a0360043516610e39565b61018f610e4b565b341561051d57600080fd5b6101a7600435602435610eb7565b341561053657600080fd5b6101a7600435610efb565b341561054c57600080fd5b61027a600160a060020a0360043581169060243516611003565b341561057157600080fd5b61018f600160a060020a0360043516611020565b341561059057600080fd5b61027a61106a565b34156105a357600080fd5b6101a7611070565b60055460009060a060020a900460ff16156105c557600080fd5b60055433600160a060020a039081169116146105e057600080fd5b50600655600190565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b505050505081565b600160a060020a0333166000908152600d6020526040812054156106aa57600080fd5b600160a060020a033381166000818152600c6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600a5481565b60035481565b600160a060020a0333166000908152600d6020526040812054819081904290118015906107635750600160a060020a0333166000908152600d602052604090205415155b151561076e57600080fd5b600160a060020a03858116908516141561078757600080fd5b84600160a060020a031633600160a060020a0316141515156107a857600080fd5b83600160a060020a031633600160a060020a0316141515156107c957600080fd5b600754600160a060020a0333166000908152600b602052604090205410156107f057600080fd5b5050600160a060020a038083166000818152600b60205260408082208054888616808552838520805433909816808752858720805460068054600480548490039055928a9055845492820392830190945592549789905285549097019094559096010194929392917fcac3ed26c9dd72a2c44999857298af9c72ba2d1ca9784f5dad48c933e2224c11905160405180910390a484600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a383600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405190815260200160405180910390a3600160a060020a038085166000908152600b60205260408082205488841683528183205433909416835291205490910101821461094c57fe5b506001949350505050565b60085481565b600160a060020a038084166000908152600c602090815260408083203390941683529290529081205482111561099257600080fd5b600160a060020a038085166000908152600c6020908152604080832033909416835292905220805483900390556109ca848484611080565b5060019392505050565b60055433600160a060020a039081169116146109ef57600080fd5b600554600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a2857600080fd5b565b600b6020526000908152604090205481565b60025460ff1681565b600160a060020a0333166000908152600d602052604081205415610a6857600080fd5b600160a060020a0333166000908152600b602052604090205482901015610a8e57600080fd5b600160a060020a0333166000818152600b602052604090819020805485900390556003805485900390557fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a2506001919050565b600554600160a060020a031681565b60065481565b600160a060020a03166000908152600b602052604090205490565b600160a060020a0382166000908152600d602052604081205415610b4657600080fd5b600160a060020a0383166000908152600b602052604090205482901015610b6c57600080fd5b600160a060020a038084166000908152600c602090815260408083203390941683529290522054821115610b9f57600080fd5b600160a060020a038084166000818152600b6020908152604080832080548890039055600c825280832033909516835293905282902080548590039055600380548590039055907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a250600192915050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561067f5780601f106106545761010080835404028352916020019161067f565b600160a060020a03166000908152600d602052604090205490565b610cb3338383611080565b5050565b60075481565b60045481565b600083610cd08185610687565b15610ded5780600160a060020a0316638f4ffcb1338630876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d86578082015183820152602001610d6e565b50505050905090810190601f168015610db35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610dd457600080fd5b6102c65a03f11515610de557600080fd5b505050600191505b509392505050565b60055460009060a060020a900460ff1615610e0f57600080fd5b60055433600160a060020a03908116911614610e2a57600080fd5b50600991909155600a55600190565b600d6020526000908152604090205481565b60055460a060020a900460ff1615610e6257600080fd5b60055433600160a060020a03908116911614610e7d57600080fd5b678ac7230489e800003414610e9157600080fd5b6005805474ff0000000000000000000000000000000000000000191660a060020a179055565b60055460009060a060020a900460ff1615610ed157600080fd5b60055433600160a060020a03908116911614610eec57600080fd5b50600791909155600855600190565b600160a060020a0333166000908152600d602052604081205415610f1e57600080fd5b600754600160a060020a0333166000908152600b60205260409020541015610f4557600080fd5b600854600160a060020a0333166000908152600b60205260409020541115610f6c57600080fd5b600954821015610f7b57600080fd5b600a54821115610f8a57600080fd5b600160a060020a0333166000818152600d602081815260408084204288018155600b8352938190208054600480549091019055549290915291547f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b925191825260208201526040908101905180910390a2506001919050565b600c60209081526000928352604080842090915290825290205481565b60055433600160a060020a0390811691161461103b57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b60055460a060020a900460ff1681565b600160a060020a0383166000908152600d6020526040812054156110a357600080fd5b600160a060020a0383166000908152600d602052604081205411156110eb57600854600160a060020a0384166000908152600b6020526040902054830111156110eb57600080fd5b600160a060020a038316151561110057600080fd5b600160a060020a0384166000908152600b60205260409020548290101561112657600080fd5b600160a060020a0383166000908152600b60205260409020548281011161114c57600080fd5b50600160a060020a038083166000818152600b602052604080822080549488168084528284208054888103909155938590528154870190915591909301927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3600160a060020a038084166000908152600b60205260408082205492871682529020540181146111e957fe5b505050505600a165627a7a723058206ceaf8fb97a5f757106fb664694328d0fd7741778c3338572ea96d55f4709f880029

Deployed Bytecode

0x60606040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303bc6d0d811461019157806306fdde03146101bb578063095ea7b3146102455780630ac153ac1461026757806318160ddd1461028c57806321c0b3421461029f57806322bb4f53146102c457806323b872dd146102d757806324600fc3146102ff57806327e235e314610312578063313ce5671461033157806342966c681461035a5780635af82abf1461037057806369e154041461039f57806370a08231146103b257806379cc6790146103d157806395d89b41146103f3578063a4beda6314610406578063a9059cbb14610425578063ba3d0cb514610447578063ca5c7b911461045a578063cae9ca511461046d578063cbe56377146104d2578063cbf9fe5f146104eb578063d1e7e81f1461050a578063d274fa9114610512578063dd4670641461052b578063dd62ed3e14610541578063ddd41ef614610566578063f1c9cc1114610585578063ffe2d77e14610598575b600080fd5b005b341561019c57600080fd5b6101a76004356105ab565b604051901515815260200160405180910390f35b34156101c657600080fd5b6101ce6105e9565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020a5780820151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025057600080fd5b6101a7600160a060020a0360043516602435610687565b341561027257600080fd5b61027a610713565b60405190815260200160405180910390f35b341561029757600080fd5b61027a610719565b34156102aa57600080fd5b6101a7600160a060020a036004358116906024351661071f565b34156102cf57600080fd5b61027a610957565b34156102e257600080fd5b6101a7600160a060020a036004358116906024351660443561095d565b341561030a57600080fd5b61018f6109d4565b341561031d57600080fd5b61027a600160a060020a0360043516610a2a565b341561033c57600080fd5b610344610a3c565b60405160ff909116815260200160405180910390f35b341561036557600080fd5b6101a7600435610a45565b341561037b57600080fd5b610383610af3565b604051600160a060020a03909116815260200160405180910390f35b34156103aa57600080fd5b61027a610b02565b34156103bd57600080fd5b61027a600160a060020a0360043516610b08565b34156103dc57600080fd5b6101a7600160a060020a0360043516602435610b23565b34156103fe57600080fd5b6101ce610c22565b341561041157600080fd5b61027a600160a060020a0360043516610c8d565b341561043057600080fd5b61018f600160a060020a0360043516602435610ca8565b341561045257600080fd5b61027a610cb7565b341561046557600080fd5b61027a610cbd565b341561047857600080fd5b6101a760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cc395505050505050565b34156104dd57600080fd5b6101a7600435602435610df5565b34156104f657600080fd5b61027a600160a060020a0360043516610e39565b61018f610e4b565b341561051d57600080fd5b6101a7600435602435610eb7565b341561053657600080fd5b6101a7600435610efb565b341561054c57600080fd5b61027a600160a060020a0360043581169060243516611003565b341561057157600080fd5b61018f600160a060020a0360043516611020565b341561059057600080fd5b61027a61106a565b34156105a357600080fd5b6101a7611070565b60055460009060a060020a900460ff16156105c557600080fd5b60055433600160a060020a039081169116146105e057600080fd5b50600655600190565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b505050505081565b600160a060020a0333166000908152600d6020526040812054156106aa57600080fd5b600160a060020a033381166000818152600c6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600a5481565b60035481565b600160a060020a0333166000908152600d6020526040812054819081904290118015906107635750600160a060020a0333166000908152600d602052604090205415155b151561076e57600080fd5b600160a060020a03858116908516141561078757600080fd5b84600160a060020a031633600160a060020a0316141515156107a857600080fd5b83600160a060020a031633600160a060020a0316141515156107c957600080fd5b600754600160a060020a0333166000908152600b602052604090205410156107f057600080fd5b5050600160a060020a038083166000818152600b60205260408082208054888616808552838520805433909816808752858720805460068054600480548490039055928a9055845492820392830190945592549789905285549097019094559096010194929392917fcac3ed26c9dd72a2c44999857298af9c72ba2d1ca9784f5dad48c933e2224c11905160405180910390a484600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a383600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405190815260200160405180910390a3600160a060020a038085166000908152600b60205260408082205488841683528183205433909416835291205490910101821461094c57fe5b506001949350505050565b60085481565b600160a060020a038084166000908152600c602090815260408083203390941683529290529081205482111561099257600080fd5b600160a060020a038085166000908152600c6020908152604080832033909416835292905220805483900390556109ca848484611080565b5060019392505050565b60055433600160a060020a039081169116146109ef57600080fd5b600554600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a2857600080fd5b565b600b6020526000908152604090205481565b60025460ff1681565b600160a060020a0333166000908152600d602052604081205415610a6857600080fd5b600160a060020a0333166000908152600b602052604090205482901015610a8e57600080fd5b600160a060020a0333166000818152600b602052604090819020805485900390556003805485900390557fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a2506001919050565b600554600160a060020a031681565b60065481565b600160a060020a03166000908152600b602052604090205490565b600160a060020a0382166000908152600d602052604081205415610b4657600080fd5b600160a060020a0383166000908152600b602052604090205482901015610b6c57600080fd5b600160a060020a038084166000908152600c602090815260408083203390941683529290522054821115610b9f57600080fd5b600160a060020a038084166000818152600b6020908152604080832080548890039055600c825280832033909516835293905282902080548590039055600380548590039055907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a250600192915050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561067f5780601f106106545761010080835404028352916020019161067f565b600160a060020a03166000908152600d602052604090205490565b610cb3338383611080565b5050565b60075481565b60045481565b600083610cd08185610687565b15610ded5780600160a060020a0316638f4ffcb1338630876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d86578082015183820152602001610d6e565b50505050905090810190601f168015610db35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610dd457600080fd5b6102c65a03f11515610de557600080fd5b505050600191505b509392505050565b60055460009060a060020a900460ff1615610e0f57600080fd5b60055433600160a060020a03908116911614610e2a57600080fd5b50600991909155600a55600190565b600d6020526000908152604090205481565b60055460a060020a900460ff1615610e6257600080fd5b60055433600160a060020a03908116911614610e7d57600080fd5b678ac7230489e800003414610e9157600080fd5b6005805474ff0000000000000000000000000000000000000000191660a060020a179055565b60055460009060a060020a900460ff1615610ed157600080fd5b60055433600160a060020a03908116911614610eec57600080fd5b50600791909155600855600190565b600160a060020a0333166000908152600d602052604081205415610f1e57600080fd5b600754600160a060020a0333166000908152600b60205260409020541015610f4557600080fd5b600854600160a060020a0333166000908152600b60205260409020541115610f6c57600080fd5b600954821015610f7b57600080fd5b600a54821115610f8a57600080fd5b600160a060020a0333166000818152600d602081815260408084204288018155600b8352938190208054600480549091019055549290915291547f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b925191825260208201526040908101905180910390a2506001919050565b600c60209081526000928352604080842090915290825290205481565b60055433600160a060020a0390811691161461103b57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b60055460a060020a900460ff1681565b600160a060020a0383166000908152600d6020526040812054156110a357600080fd5b600160a060020a0383166000908152600d602052604081205411156110eb57600854600160a060020a0384166000908152600b6020526040902054830111156110eb57600080fd5b600160a060020a038316151561110057600080fd5b600160a060020a0384166000908152600b60205260409020548290101561112657600080fd5b600160a060020a0383166000908152600b60205260409020548281011161114c57600080fd5b50600160a060020a038083166000818152600b602052604080822080549488168084528284208054888103909155938590528154870190915591909301927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3600160a060020a038084166000908152600b60205260408082205492871682529020540181146111e957fe5b505050505600a165627a7a723058206ceaf8fb97a5f757106fb664694328d0fd7741778c3338572ea96d55f4709f880029

Swarm Source

bzzr://6ceaf8fb97a5f757106fb664694328d0fd7741778c3338572ea96d55f4709f88

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.