ETH Price: $2,329.38 (+0.77%)
Gas: 0.04 Gwei

Contract

0xD31BC89FE1aDf71c2a7d9C8FE4e0F94cF20Ca15e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer43193122017-09-28 14:52:353092 days ago1506610355  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Fund

Compiler Version
v0.4.17+commit.bdeb9e52

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-09-28
*/

pragma solidity ^0.4.17;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;

    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    function Ownable() {
        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) onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }

}

contract Fund is Ownable  {
    using SafeMath for uint256;
    
    string public name = "Slot Token";
    uint8 public decimals = 0;
    string public symbol = "SLOT";
    string public version = "0.7";
    
    uint8 constant TOKENS = 0;
    uint8 constant BALANCE = 1;
    
    uint256 totalWithdrawn;     // of Ether
    uint256 public totalSupply; // of Tokens
    
    mapping(address => uint256[2][]) balances;
    mapping(address => uint256) withdrawals;
    
    event Withdrawn(
            address indexed investor, 
            address indexed beneficiary, 
            uint256 weiAmount);
    event Mint(
            address indexed to, 
            uint256 amount);
    event MintFinished();
    event Transfer(
            address indexed from, 
            address indexed to, 
            uint256 value);
    event Approval(
            address indexed owner, 
            address indexed spender, 
            uint256 value);
            
    mapping (address => mapping (address => uint256)) allowed;

    bool public mintingFinished = false;

    modifier canMint() {
        require(!mintingFinished);
        _;
    }
    
    function Fund() payable {}
    function() payable {}
    
    function getEtherBalance(address _owner) constant public returns (uint256 _balance) {
        uint256[2][] memory snapshots = balances[_owner];
        
        if (snapshots.length == 0) { return 0; } // no data

        uint256 balance = 0;
        uint256 previousSnapTotalStake = 0;
        
        // add up all snapshots
        for (uint256 i = 0 ; i < snapshots.length ; i++) {
            // each snapshot has amount of tokens and totalBalance at the time except last, which should be calculated with current stake
            
            if (i == snapshots.length-1) {
                // add current data
                uint256 currentTokens = snapshots[i][TOKENS];
                uint256 b = currentTokens.mul( getTotalStake().sub(previousSnapTotalStake) ).div(totalSupply);
                balance = balance.add(b);
        
                // reduce withdrawals
                return balance.sub(withdrawals[_owner]);
            }
            
            uint256 snapTotalStake = snapshots[i][BALANCE];
            // if it's the first element, nothing is substracted from snapshot's total stake, hence previous stake will be 0
            uint256 spanBalance = snapshots[i][TOKENS].mul(snapTotalStake.sub(previousSnapTotalStake)).div(totalSupply);
            balance = balance.add(spanBalance);
            
            previousSnapTotalStake = previousSnapTotalStake.add(snapTotalStake); // for the next loop and next code, needs to be += 
        }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        uint256[2][] memory snapshots = balances[_owner];
        if (snapshots.length == 0) { return 0; }
        
        return snapshots[snapshots.length-1][TOKENS];
    }
    
    function getTotalStake() constant public returns (uint256 _totalStake) {
        // the total size of the pie, unaffected by withdrawals
        return this.balance + totalWithdrawn;
    }
    
    function withdrawBalance(address _to, uint256 _value) public {
        require(getEtherBalance(msg.sender) >= _value);
        
        withdrawals[msg.sender] = withdrawals[msg.sender].add(_value);
        totalWithdrawn = totalWithdrawn.add(_value);
        
        _to.transfer(_value);
        Withdrawn(msg.sender, _to, _value);
    }
    
    function transfer(address _to, uint256 _value) returns (bool) {
        return transferFromPrivate(msg.sender, _to, _value);
    }
    
    function transferFromPrivate(address _from, address _to, uint256 _value) private returns (bool) {
        require(balanceOf(msg.sender) >= _value);
        
        uint256 fromTokens = balanceOf(msg.sender);
        pushSnapshot(msg.sender, fromTokens-_value);
        
        uint256 toTokens = balanceOf(_to);
        pushSnapshot(_to, toTokens+_value);
        
        Transfer(_from, _to, _value);
        return true;
    }
    
    function pushSnapshot(address _beneficiary, uint256 _amount) private {
        balances[_beneficiary].push([_amount, 0]);
        
        if (balances[_beneficiary].length > 1) {
            // update previous snapshot balance
            uint256 lastIndex = balances[msg.sender].length-1;
            balances[_beneficiary][lastIndex-1][BALANCE] = getTotalStake();
        }
    }

    function mint(address _to, uint256 _amount) public onlyOwner canMint returns (bool) {
        pushSnapshot(_to, _amount.add(balanceOf(_to)));
        totalSupply = totalSupply.add(_amount);
        Mint(_to, _amount);
        Transfer(0x0, _to, _amount); // so it is displayed properly on EtherScan
        return true;
    }
    

    function finishMinting() onlyOwner returns (bool) {
        mintingFinished = true;
        MintFinished();
        return true;
    }
    
    
    function approve(address _spender, uint256 _value) returns (bool) {

        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));

        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
        uint256 _allowance = allowed[_from][msg.sender];

        transferFromPrivate(_from, _to, _value);
        
        allowed[_from][msg.sender] = _allowance.sub(_value);
        return true;
    }
    
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;

  /**
   * @dev modifier to allow actions only when the contract IS paused
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev modifier to allow actions only when the contract IS NOT paused
   */
  modifier whenPaused {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused returns (bool) {
    paused = true;
    Pause();
    return true;
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused returns (bool) {
    paused = false;
    Unpause();
    return true;
  }
}


/**
* @title SlotCrowdsale
*/
contract SlotCrowdsale is Ownable, Pausable {
    using SafeMath for uint256;

    Fund public fund;

    uint256 constant ETHER_CAP   = 4715 ether;   // ether
    uint256 constant TOKEN_CAP   = 10000000;     // tokens
    uint256 constant PRICE       = 1 ether;      // ether
    uint256 constant BOUNTY      = 250000;       // tokens
    uint256 constant OWNERS_STAKE = 3750000;     // tokens
    uint256 constant OWNERS_LOCK = 200000;       // blocks
    address public bountyWallet;
    address public ownersWallet;
    uint256 public lockBegunAtBlock;
    
    bool public bountyDistributed = false;
    bool public ownershipDistributed = false;
    
    uint256[10] outcomes = [1000000,    // 0
                             250000,    // 1
                             100000,    // 2 
                              20000,    // 3
                              10000,    // 4
                               4000,    // 5
                               2000,    // 6
                               1250,    // 7
                               1000,    // 8
                                500];   // 9
                               
                            //   0  1   2   3    4    5    6     7     8     9  
    uint16[10] chances =        [1, 4, 10, 50, 100, 250, 500,  800, 1000, 2000];
    uint16[10] addedUpChances = [1, 5, 15, 65, 165, 415, 915, 1715, 2715, 4715];
    
    event OwnershipDistributed();
    event BountyDistributed();

    function SlotCrowdsale() payable {
        // fund = Fund(_fundAddress); // still need to change ownership
        fund = new Fund();
        bountyWallet = 0x00deF93928A3aAD581F39049a3BbCaaB9BbE36C8;
        ownersWallet = 0x0001619153d8FE15B3FA70605859265cb0033c1a;
    }

    function() payable {
        // fallback function to buy tickets
        buyTokenFor(msg.sender);
    }
    
    function correctedIndex(uint8 _index) constant private returns (uint8 _newIndex) {
        require(_index < chances.length);
        // if the chance is 0, return the next index
        
        if (chances[_index] != 0) {
            return _index;
        } else {
            return correctedIndex(uint8((_index + 1) % chances.length));
        }
    }
    
    function getRateIndex(uint256 _randomNumber) constant private returns (uint8 _rateIndex) {
        for (uint8 i = 0 ; i < uint8(chances.length) ; i++) {
            if (_randomNumber < addedUpChances[i]) { 
                return correctedIndex(i); 
            }
        }
    }

    function buyTokenFor(address _beneficiary) whenNotPaused() payable {
        require(_beneficiary != 0x0);
        require(msg.value >= PRICE);
        
        uint256 change = msg.value%PRICE;
        uint256 numberOfTokens = msg.value.sub(change).div(PRICE);
        
        mintTokens(_beneficiary, numberOfTokens);
        
        // Return change to msg.sender
        msg.sender.transfer(change);
    }
    
    function mintTokens(address _beneficiary, uint256 _numberOfTokens) private {
        uint16 totalChances = addedUpChances[9];

        for (uint16 i=1 ; i <= _numberOfTokens; i++) {
            
            uint256 randomNumber = uint256(keccak256(block.blockhash(block.number-1)))%totalChances;
            uint8 rateIndex = getRateIndex(randomNumber);
            
            // rate shouldn't be 0 because of correctedIndex function
            assert(chances[rateIndex] != 0);
            chances[rateIndex]--;
            
            uint256 amount = outcomes[rateIndex];
            fund.mint(_beneficiary, amount);
        }
    }
    
    function crowdsaleEnded() constant private returns (bool ended) {
        if (fund.totalSupply() >= TOKEN_CAP) { 
            return true;
        } else {
            return false; 
        }
    }
    
    function lockEnded() constant private returns (bool ended) {
        if (block.number.sub(lockBegunAtBlock) > OWNERS_LOCK) {
            return true; 
        } else {
            return false;
        }
        
    }
    
    /* public onlyOwner */
    
    function distributeBounty() public onlyOwner {
        require(!bountyDistributed);
        require(crowdsaleEnded());
        
        bountyDistributed = true;
        bountyWallet.transfer(BOUNTY);
        lockBegunAtBlock = block.number;
        BountyDistributed();
    }
    
    function distributeOwnership() public onlyOwner {
        require(!ownershipDistributed);
        require(crowdsaleEnded());
        require(lockEnded());
        
        ownershipDistributed = true;
        ownersWallet.transfer(OWNERS_STAKE);
        
        OwnershipDistributed();
    }
    
    function changeOwnersWallet(address _newWallet) public onlyOwner {
        require(_newWallet != 0x0);
        ownersWallet = _newWallet;
    }
    
    function changeBountyWallet(address _newWallet) public onlyOwner {
        require(_newWallet != 0x0);
        bountyWallet = _newWallet;
    }
    
    function changeFundOwner(address _newOwner) {
        require(_newOwner != 0x0);
        fund.transferOwnership(_newOwner);
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"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":true,"inputs":[],"name":"getTotalStake","outputs":[{"name":"_totalStake","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getEtherBalance","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"investor","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

606060405260408051908101604052600a81527f536c6f7420546f6b656e00000000000000000000000000000000000000000000602082015260019080516200004d92916020019062000117565b506002805460ff1916905560408051908101604052600481527f534c4f540000000000000000000000000000000000000000000000000000000060208201526003908051620000a192916020019062000117565b5060408051908101604052600381527f302e37000000000000000000000000000000000000000000000000000000000060208201526004908051620000eb92916020019062000117565b50600a805460ff1916905560008054600160a060020a03191633600160a060020a0316179055620001bc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015a57805160ff19168380011785556200018a565b828001600101855582156200018a579182015b828111156200018a5782518255916020019190600101906200016d565b50620001989291506200019c565b5090565b620001b991905b80821115620001985760008155600101620001a3565b90565b610f0480620001cc6000396000f300606060405236156100f95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100fb57806306fdde0314610122578063095ea7b3146101ac5780630cf20cc9146101ce57806318160ddd146101f057806323b872dd14610215578063313ce5671461023d57806340c10f191461026657806354fd4d501461028857806370a082311461029b5780637bc74225146102ba5780637d64bcb4146102cd5780638da5cb5b146102e057806395d89b411461030f578063a9059cbb14610322578063dc45d08e14610344578063dd62ed3e14610363578063f2fde38b14610388575b005b341561010657600080fd5b61010e6103a7565b604051901515815260200160405180910390f35b341561012d57600080fd5b6101356103b0565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610171578082015183820152602001610159565b50505050905090810190601f16801561019e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101b757600080fd5b61010e600160a060020a036004351660243561044e565b34156101d957600080fd5b6100f9600160a060020a03600435166024356104f4565b34156101fb57600080fd5b6102036105dd565b60405190815260200160405180910390f35b341561022057600080fd5b61010e600160a060020a03600435811690602435166044356105e3565b341561024857600080fd5b61025061065b565b60405160ff909116815260200160405180910390f35b341561027157600080fd5b61010e600160a060020a0360043516602435610664565b341561029357600080fd5b61013561074d565b34156102a657600080fd5b610203600160a060020a03600435166107b8565b34156102c557600080fd5b61020361089b565b34156102d857600080fd5b61010e6108ae565b34156102eb57600080fd5b6102f3610909565b604051600160a060020a03909116815260200160405180910390f35b341561031a57600080fd5b610135610918565b341561032d57600080fd5b61010e600160a060020a0360043516602435610983565b341561034f57600080fd5b610203600160a060020a0360043516610997565b341561036e57600080fd5b610203600160a060020a0360043581169060243516610bb4565b341561039357600080fd5b6100f9600160a060020a0360043516610bdf565b600a5460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b505050505081565b60008115806104805750600160a060020a03338116600090815260096020908152604080832093871683529290522054155b151561048b57600080fd5b600160a060020a03338116600081815260096020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b806104fe33610997565b101561050957600080fd5b600160a060020a033316600090815260086020526040902054610532908263ffffffff610c3516565b600160a060020a03331660009081526008602052604090205560055461055e908263ffffffff610c3516565b600555600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561059257600080fd5b81600160a060020a031633600160a060020a03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8360405190815260200160405180910390a35050565b60065481565b600160a060020a03808416600090815260096020908152604080832033909416835292905290812054610617858585610c44565b50610628818463ffffffff610cdf16565b600160a060020a038087166000908152600960209081526040808320339094168352929052205560019150509392505050565b60025460ff1681565b6000805433600160a060020a0390811691161461068057600080fd5b600a5460ff161561069057600080fd5b6106b2836106ad6106a0866107b8565b859063ffffffff610c3516565b610cf1565b6006546106c5908363ffffffff610c3516565b600655600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b60006107c2610e11565b6007600084600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405281815291906000602084015b8282101561086057838290600052602060002090600202016002806020026040519081016040529190828260026020028201915b81548152602001906001019080831161083957505050505081526020019060010190610805565b505050509050805115156108775760009150610895565b8060018251038151811061088757fe5b906020019060200201515191505b50919050565b600554600160a060020a03301631015b90565b6000805433600160a060020a039081169116146108ca57600080fd5b600a805460ff191660011790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600054600160a060020a031681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b6000610990338484610c44565b9392505050565b60006109a1610e11565b6000806000806000806000600760008b600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405281815291906000602084015b82821015610a4a57838290600052602060002090600202016002806020026040519081016040529190828260026020028201915b815481526020019060010190808311610a23575050505050815260200190600101906109ef565b50505050975087511515610a615760009850610ba7565b6000965060009550600094505b8751851015610ba7576001885103851415610b1c57878581518110610a8f57fe5b90602001906020020151519350610ad6600654610aca610abd89610ab161089b565b9063ffffffff610cdf16565b879063ffffffff610dd616565b9063ffffffff610dfa16565b9250610ae8878463ffffffff610c3516565b600160a060020a038b16600090815260086020526040902054909750610b1590889063ffffffff610cdf16565b9850610ba7565b878581518110610b2857fe5b9060200190602002015160200151600654909250610b7690610aca610b53858a63ffffffff610cdf16565b8b8981518110610b5f57fe5b90602001906020020151519063ffffffff610dd616565b9050610b88878263ffffffff610c3516565b9650610b9a868363ffffffff610c3516565b9550600190940193610a6e565b5050505050505050919050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60005433600160a060020a03908116911614610bfa57600080fd5b600160a060020a03811615610c32576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b60008282018381101561099057fe5b600080600083610c53336107b8565b1015610c5e57600080fd5b610c67336107b8565b9150610c7533858403610cf1565b610c7e856107b8565b9050610c8c85858301610cf1565b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a350600195945050505050565b600082821115610ceb57fe5b50900390565b600160a060020a0382166000908152600760205260408120805460018101610d198382610e23565b916000526020600020906002020160006040805190810160405285815260006020820152610d4a9291506002610e4f565b5050600160a060020a0383166000908152600760205260409020546001901115610dd15750600160a060020a03331660009081526007602052604090205460001901610d9461089b565b600160a060020a038416600090815260076020526040902080546000198401908110610dbc57fe5b60009182526020909120600290910201600101555b505050565b6000828202831580610df25750828482811515610def57fe5b04145b151561099057fe5b6000808284811515610e0857fe5b04949350505050565b60206040519081016040526000815290565b815481835581811511610dd157600202816002028360005260206000209182019101610dd19190610e8d565b8260028101928215610e7d579160200282015b82811115610e7d578251825591602001919060010190610e62565b50610e89929150610eb0565b5090565b6108ab91905b80821115610e89576000610ea78282610eca565b50600201610e93565b6108ab91905b80821115610e895760008155600101610eb6565b5060008155600101600090555600a165627a7a72305820b623835690c3016c6fe0cac6b06041332e7447fd2c99467f22b996160fb69aca0029

Deployed Bytecode

0x606060405236156100f95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100fb57806306fdde0314610122578063095ea7b3146101ac5780630cf20cc9146101ce57806318160ddd146101f057806323b872dd14610215578063313ce5671461023d57806340c10f191461026657806354fd4d501461028857806370a082311461029b5780637bc74225146102ba5780637d64bcb4146102cd5780638da5cb5b146102e057806395d89b411461030f578063a9059cbb14610322578063dc45d08e14610344578063dd62ed3e14610363578063f2fde38b14610388575b005b341561010657600080fd5b61010e6103a7565b604051901515815260200160405180910390f35b341561012d57600080fd5b6101356103b0565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610171578082015183820152602001610159565b50505050905090810190601f16801561019e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101b757600080fd5b61010e600160a060020a036004351660243561044e565b34156101d957600080fd5b6100f9600160a060020a03600435166024356104f4565b34156101fb57600080fd5b6102036105dd565b60405190815260200160405180910390f35b341561022057600080fd5b61010e600160a060020a03600435811690602435166044356105e3565b341561024857600080fd5b61025061065b565b60405160ff909116815260200160405180910390f35b341561027157600080fd5b61010e600160a060020a0360043516602435610664565b341561029357600080fd5b61013561074d565b34156102a657600080fd5b610203600160a060020a03600435166107b8565b34156102c557600080fd5b61020361089b565b34156102d857600080fd5b61010e6108ae565b34156102eb57600080fd5b6102f3610909565b604051600160a060020a03909116815260200160405180910390f35b341561031a57600080fd5b610135610918565b341561032d57600080fd5b61010e600160a060020a0360043516602435610983565b341561034f57600080fd5b610203600160a060020a0360043516610997565b341561036e57600080fd5b610203600160a060020a0360043581169060243516610bb4565b341561039357600080fd5b6100f9600160a060020a0360043516610bdf565b600a5460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b505050505081565b60008115806104805750600160a060020a03338116600090815260096020908152604080832093871683529290522054155b151561048b57600080fd5b600160a060020a03338116600081815260096020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b806104fe33610997565b101561050957600080fd5b600160a060020a033316600090815260086020526040902054610532908263ffffffff610c3516565b600160a060020a03331660009081526008602052604090205560055461055e908263ffffffff610c3516565b600555600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561059257600080fd5b81600160a060020a031633600160a060020a03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8360405190815260200160405180910390a35050565b60065481565b600160a060020a03808416600090815260096020908152604080832033909416835292905290812054610617858585610c44565b50610628818463ffffffff610cdf16565b600160a060020a038087166000908152600960209081526040808320339094168352929052205560019150509392505050565b60025460ff1681565b6000805433600160a060020a0390811691161461068057600080fd5b600a5460ff161561069057600080fd5b6106b2836106ad6106a0866107b8565b859063ffffffff610c3516565b610cf1565b6006546106c5908363ffffffff610c3516565b600655600160a060020a0383167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b60006107c2610e11565b6007600084600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405281815291906000602084015b8282101561086057838290600052602060002090600202016002806020026040519081016040529190828260026020028201915b81548152602001906001019080831161083957505050505081526020019060010190610805565b505050509050805115156108775760009150610895565b8060018251038151811061088757fe5b906020019060200201515191505b50919050565b600554600160a060020a03301631015b90565b6000805433600160a060020a039081169116146108ca57600080fd5b600a805460ff191660011790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600054600160a060020a031681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104465780601f1061041b57610100808354040283529160200191610446565b6000610990338484610c44565b9392505050565b60006109a1610e11565b6000806000806000806000600760008b600160a060020a0316600160a060020a0316815260200190815260200160002080548060200260200160405190810160405281815291906000602084015b82821015610a4a57838290600052602060002090600202016002806020026040519081016040529190828260026020028201915b815481526020019060010190808311610a23575050505050815260200190600101906109ef565b50505050975087511515610a615760009850610ba7565b6000965060009550600094505b8751851015610ba7576001885103851415610b1c57878581518110610a8f57fe5b90602001906020020151519350610ad6600654610aca610abd89610ab161089b565b9063ffffffff610cdf16565b879063ffffffff610dd616565b9063ffffffff610dfa16565b9250610ae8878463ffffffff610c3516565b600160a060020a038b16600090815260086020526040902054909750610b1590889063ffffffff610cdf16565b9850610ba7565b878581518110610b2857fe5b9060200190602002015160200151600654909250610b7690610aca610b53858a63ffffffff610cdf16565b8b8981518110610b5f57fe5b90602001906020020151519063ffffffff610dd616565b9050610b88878263ffffffff610c3516565b9650610b9a868363ffffffff610c3516565b9550600190940193610a6e565b5050505050505050919050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60005433600160a060020a03908116911614610bfa57600080fd5b600160a060020a03811615610c32576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b60008282018381101561099057fe5b600080600083610c53336107b8565b1015610c5e57600080fd5b610c67336107b8565b9150610c7533858403610cf1565b610c7e856107b8565b9050610c8c85858301610cf1565b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a350600195945050505050565b600082821115610ceb57fe5b50900390565b600160a060020a0382166000908152600760205260408120805460018101610d198382610e23565b916000526020600020906002020160006040805190810160405285815260006020820152610d4a9291506002610e4f565b5050600160a060020a0383166000908152600760205260409020546001901115610dd15750600160a060020a03331660009081526007602052604090205460001901610d9461089b565b600160a060020a038416600090815260076020526040902080546000198401908110610dbc57fe5b60009182526020909120600290910201600101555b505050565b6000828202831580610df25750828482811515610def57fe5b04145b151561099057fe5b6000808284811515610e0857fe5b04949350505050565b60206040519081016040526000815290565b815481835581811511610dd157600202816002028360005260206000209182019101610dd19190610e8d565b8260028101928215610e7d579160200282015b82811115610e7d578251825591602001919060010190610e62565b50610e89929150610eb0565b5090565b6108ab91905b80821115610e89576000610ea78282610eca565b50600201610e93565b6108ab91905b80821115610e895760008155600101610eb6565b5060008155600101600090555600a165627a7a72305820b623835690c3016c6fe0cac6b06041332e7447fd2c99467f22b996160fb69aca0029

Swarm Source

bzzr://b623835690c3016c6fe0cac6b06041332e7447fd2c99467f22b996160fb69aca

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.