Sponsored:   Temco - Join the Largest VC Backed ICO on the Bitcoin Network! TEMCO KYC Whitelist Starts Now!!
Contract Overview
Balance: 668.336751415000000001 Ether
Ether Value: $93,994.88 (@ $140.64/ETH)
Transactions: 2 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x91d116659df2d460c6a17aeecd30d57a316e58b7at txn 0x560df8fb138b967567715d9146433e186f53472fce3b3394b6ad4769f58f28ab
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 4 Internal Transactions

ParentTxHash Block Age From To Value
0xc25d66ed098141de3afc962d9c696541234187ba6a62164e8cd26f50381b4ca267130524 days 13 hrs ago0x41598475a44d6d6f8785544de7629632b97c49810xaeb3d7d5a6b52619b36d3bd0b6794e75e65a92bd56.846 Ether
0x20f4f0e74806243910008101dfe2c1ffed30dc29c8af72508399206a3c4e3c18661462720 days 16 hrs ago0x0990a01c880d016e19dcd49ec549f266f8b41bf90xaeb3d7d5a6b52619b36d3bd0b6794e75e65a92bd192.126905415 Ether
0x2fc8eb2f61a51dfa688933932c4d8b6055911242890945c767b0d22404d41237647954242 days 17 hrs ago0x9527fcc8963ab8dccf50cf6731e0abcd6bf262ba0xaeb3d7d5a6b52619b36d3bd0b6794e75e65a92bd419.363846000000000001 Ether
0x560df8fb138b967567715d9146433e186f53472fce3b3394b6ad4769f58f28ab638237758 days 13 hrs ago0xaeb3d7d5a6b52619b36d3bd0b6794e75e65a92bd  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: DaicoPool
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

contract ERC20Interface {
  function totalSupply() external view returns (uint256);
  function balanceOf(address who) external view returns (uint256);
  function transfer(address to, uint256 value) external returns (bool);
  function allowance(address owner, address spender) external view returns (uint256);
  function transferFrom(address from, address to, uint256 value) external returns (bool);
  function approve(address spender, uint256 value) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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 PoolAndSaleInterface {
    address public tokenSaleAddr;
    address public votingAddr;
    address public votingTokenAddr;
    uint256 public tap;
    uint256 public initialTap;
    uint256 public initialRelease;

    function setTokenSaleContract(address _tokenSaleAddr) external;
    function startProject() external;
}

contract DaicoPool is PoolAndSaleInterface, Ownable {
    using SafeMath for uint256;

    address public tokenSaleAddr;
    address public votingAddr;
    address public votingTokenAddr;
    uint256 public tap;
    uint256 public initialTap;
    uint256 public initialRelease;
    uint256 public releasedBalance;
    uint256 public withdrawnBalance;
    uint256 public lastUpdatedTime;
    uint256 public fundRaised;
    uint256 public closingRelease = 30 days;

    /* The unit of this variable is [10^-9 wei / token], intending to minimize rouding errors */
    uint256 public refundRateNano = 0;
  
    enum Status {
        Initializing,
        ProjectInProgress,
        Destructed
    }
  
    Status public status;

    event TapHistory(uint256 new_tap);
    event WithdrawalHistory(string token, uint256 amount);
    event Refund(address receiver, uint256 amount);

    modifier onlyTokenSaleContract {
        require(msg.sender == tokenSaleAddr);
        _;
    }

    modifier onlyVoting {
        require(msg.sender == votingAddr);
        _;
    }

    modifier poolInitializing {
        require(status == Status.Initializing);
        _;
    }

    modifier poolDestructed {
        require(status == Status.Destructed);
        _;
    }

    constructor(address _votingTokenAddr, uint256 tap_amount, uint256 _initialRelease) public {
        require(_votingTokenAddr != 0x0);
        require(tap_amount > 0);

        initialTap = tap_amount;
        votingTokenAddr = _votingTokenAddr;
        status = Status.Initializing;
        initialRelease = _initialRelease;
 
        votingAddr = new Voting(ERC20Interface(_votingTokenAddr), address(this));
    }

    function () external payable {}

    function setTokenSaleContract(address _tokenSaleAddr) external {
        /* Can be set only once */
        require(tokenSaleAddr == address(0x0));
        require(_tokenSaleAddr != address(0x0));
        tokenSaleAddr = _tokenSaleAddr;
    }

    function startProject() external onlyTokenSaleContract {
        require(status == Status.Initializing);
        status = Status.ProjectInProgress;
        lastUpdatedTime = block.timestamp;
        releasedBalance = initialRelease;
        updateTap(initialTap);
        fundRaised = address(this).balance;
    }

    function withdraw(uint256 _amount) public onlyOwner {
        require(_amount > 0);
        uint256 amount = _amount;

        updateReleasedBalance();
        uint256 available_balance = getAvailableBalance();
        if (amount > available_balance) {
            amount = available_balance;
        }

        withdrawnBalance = withdrawnBalance.add(amount);
        owner.transfer(amount);

        emit WithdrawalHistory("ETH", amount);
    }

    function raiseTap(uint256 tapMultiplierRate) external onlyVoting {
        updateReleasedBalance();
        updateTap(tap.mul(tapMultiplierRate).div(100));
    }

    function selfDestruction() external onlyVoting {
        status = Status.Destructed;
        updateReleasedBalance();
        releasedBalance = releasedBalance.add(closingRelease.mul(tap));
        updateTap(0);

        uint256 _totalSupply = ERC20Interface(votingTokenAddr).totalSupply(); 
        refundRateNano = address(this).balance.sub(getAvailableBalance()).mul(10**9).div(_totalSupply);
    }

    function refund(uint256 tokenAmount) external poolDestructed {
        require(ERC20Interface(votingTokenAddr).transferFrom(msg.sender, this, tokenAmount));

        uint256 refundingEther = tokenAmount.mul(refundRateNano).div(10**9);
        emit Refund(msg.sender, tokenAmount);
        msg.sender.transfer(refundingEther);
    }

    function getReleasedBalance() public view returns(uint256) {
        uint256 time_elapsed = block.timestamp.sub(lastUpdatedTime);
        return releasedBalance.add(time_elapsed.mul(tap));
    }
 
    function getAvailableBalance() public view returns(uint256) {
        uint256 available_balance = getReleasedBalance().sub(withdrawnBalance);

        if (available_balance > address(this).balance) {
            available_balance = address(this).balance;
        }

        return available_balance;
    }

    function isStateInitializing() public view returns(bool) {
        return (status == Status.Initializing); 
    }

    function isStateProjectInProgress() public view returns(bool) {
        return (status == Status.ProjectInProgress); 
    }

    function isStateDestructed() public view returns(bool) {
        return (status == Status.Destructed); 
    }

    function updateReleasedBalance() internal {
        releasedBalance = getReleasedBalance();
        lastUpdatedTime = block.timestamp;
    }

    function updateTap(uint256 new_tap) private {
        tap = new_tap;
        emit TapHistory(new_tap);
    }
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  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 a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract Voting{
    using SafeMath for uint256;

    address public votingTokenAddr;
    address public poolAddr;
    mapping (uint256 => mapping(address => uint256)) public deposits;
    mapping (uint => bool) public queued;

    uint256 proposalCostWei = 1 * 10**18;

    uint256 public constant VOTING_PERIOD = 14 days;

    struct Proposal {
        uint256 start_time;
        uint256 end_time;
        Subject subject;
        string reason;
        mapping (bool => uint256) votes; 
        uint256 voter_count;
        bool isFinalized;
        uint256 tapMultiplierRate;
    }

    Proposal[] public proposals;
    uint public constant PROPOSAL_EMPTY = 0;

    enum Subject {
        RaiseTap,
        Destruction
    }

    event Vote(
        address indexed voter,
        uint256 amount
    );

    event ReturnDeposit(
        address indexed voter,
        uint256 amount
    );

    event ProposalRaised(
        address indexed proposer,
        string subject 
    );

    /// @dev Constructor.
    /// @param _votingTokenAddr The contract address of ERC20 
    /// @param _poolAddr The contract address of DaicoPool
    /// @return 
    constructor (
        address _votingTokenAddr,
        address _poolAddr
    ) public {
        require(_votingTokenAddr != address(0x0));
        require(_poolAddr != address(0x0));
        votingTokenAddr = _votingTokenAddr;
        poolAddr = _poolAddr;

        // Insert an empty proposal as the header in order to make index 0 to be missing number.
        Proposal memory proposal;
        proposal.subject = Subject.RaiseTap;
        proposal.reason = "PROPOSAL_HEADER";
        proposal.start_time = block.timestamp -1;
        proposal.end_time = block.timestamp -1;
        proposal.voter_count = 0;
        proposal.isFinalized = true;

        proposals.push(proposal);
        assert(proposals.length == 1);
    }

    /// @dev Make a TAP raising proposal. It costs certain amount of ETH.
    /// @param _reason The reason to raise the TAP. This field can be an URL of a WEB site.
    /// @param _tapMultiplierRate TAP increase rate. From 101 to 200. i.e. 150 = 150% .
    /// @return 
    function addRaiseTapProposal (
        string _reason,
        uint256 _tapMultiplierRate
    ) external payable returns(uint256) {
        require(!queued[uint(Subject.RaiseTap)]);
        require(100 < _tapMultiplierRate && _tapMultiplierRate <= 200);

        uint256 newID = addProposal(Subject.RaiseTap, _reason);
        proposals[newID].tapMultiplierRate = _tapMultiplierRate;

        queued[uint(Subject.RaiseTap)] = true;
        emit ProposalRaised(msg.sender, "RaiseTap");
    }

    /// @dev Make a self destruction proposal. It costs certain amount of ETH.
    /// @param _reason The reason to destruct the pool. This field can be an URL of a WEB site.
    /// @return 
    function addDestructionProposal (string _reason) external payable returns(uint256) {
        require(!queued[uint(Subject.Destruction)]);

        addProposal(Subject.Destruction, _reason);

        queued[uint(Subject.Destruction)] = true;
        emit ProposalRaised(msg.sender, "SelfDestruction");
    }

    /// @dev Vote yes or no to current proposal.
    /// @param amount Token amount to be voted.
    /// @return 
    function vote (bool agree, uint256 amount) external {
        require(ERC20Interface(votingTokenAddr).transferFrom(msg.sender, this, amount));
        uint256 pid = this.getCurrentVoting();
        require(pid != PROPOSAL_EMPTY);

        require(proposals[pid].start_time <= block.timestamp);
        require(proposals[pid].end_time >= block.timestamp);

        if (deposits[pid][msg.sender] == 0) {
            proposals[pid].voter_count = proposals[pid].voter_count.add(1);
        }

        deposits[pid][msg.sender] = deposits[pid][msg.sender].add(amount);
        proposals[pid].votes[agree] = proposals[pid].votes[agree].add(amount);
        emit Vote(msg.sender, amount);
    }

    /// @dev Finalize the current voting. It can be invoked when the end time past.
    /// @dev Anyone can invoke this function.
    /// @return 
    function finalizeVoting () external {
        uint256 pid = this.getCurrentVoting();
        require(pid != PROPOSAL_EMPTY);
        require(proposals[pid].end_time <= block.timestamp);
        require(!proposals[pid].isFinalized);

        proposals[pid].isFinalized = true;

        if (isSubjectRaiseTap(pid)) {
            queued[uint(Subject.RaiseTap)] = false;
            if (isPassed(pid)) {
                DaicoPool(poolAddr).raiseTap(proposals[pid].tapMultiplierRate);
            }

        } else if (isSubjectDestruction(pid)) {
            queued[uint(Subject.Destruction)] = false;
            if (isPassed(pid)) {
                DaicoPool(poolAddr).selfDestruction();
            }
        }
    }

    /// @dev Return all tokens which specific account used to vote so far.
    /// @param account An address that deposited tokens. It also be the receiver.
    /// @return 
    function returnToken (address account) external returns(bool) {
        uint256 amount = 0;
    
        for (uint256 pid = 0; pid < proposals.length; pid++) {
            if(!proposals[pid].isFinalized){
              break;
            }
            amount = amount.add(deposits[pid][account]);
            deposits[pid][account] = 0;
        }

        if(amount <= 0){
           return false;
        }

        require(ERC20Interface(votingTokenAddr).transfer(account, amount));
        emit ReturnDeposit(account, amount);
 
        return true;
    }

    /// @dev Return tokens to multiple addresses.
    /// @param accounts Addresses that deposited tokens. They also be the receivers.
    /// @return 
    function returnTokenMulti (address[] accounts) external {
        for(uint256 i = 0; i < accounts.length; i++){
            this.returnToken(accounts[i]);
        }
    }

    /// @dev Return the index of on going voting.
    /// @return The index of voting. 
    function getCurrentVoting () public view returns(uint256) {
        for (uint256 i = 0; i < proposals.length; i++) {
            if (!proposals[i].isFinalized) {
                return i;
            }
        }
        return PROPOSAL_EMPTY;
    }

    /// @dev Check if a proposal has been agreed or not.
    /// @param pid Index of a proposal.
    /// @return True if the proposal passed. False otherwise. 
    function isPassed (uint256 pid) public view returns(bool) {
        require(proposals[pid].isFinalized);
        uint256 ayes = getAyes(pid);
        uint256 nays = getNays(pid);
        uint256 absent = ERC20Interface(votingTokenAddr).totalSupply().sub(ayes).sub(nays);
        return (ayes > nays.add(absent.div(6)));
    }

    /// @dev Check if a voting has started or not.
    /// @param pid Index of a proposal.
    /// @return True if the voting already started. False otherwise. 
    function isStarted (uint256 pid) public view returns(bool) {
        if (pid > proposals.length) {
            return false;
        } else if (block.timestamp >= proposals[pid].start_time) {
            return true;
        }
        return false;
    }

    /// @dev Check if a voting has ended or not.
    /// @param pid Index of a proposal.
    /// @return True if the voting already ended. False otherwise. 
    function isEnded (uint256 pid) public view returns(bool) {
        if (pid > proposals.length) {
            return false;
        } else if (block.timestamp >= proposals[pid].end_time) {
            return true;
        }
        return false;
    }

    /// @dev Return the reason of a proposal.
    /// @param pid Index of a proposal.
    /// @return Text of the reason that is set when the proposal made. 
    function getReason (uint256 pid) external view returns(string) {
        require(pid < proposals.length);
        return proposals[pid].reason;
    }

    /// @dev Check if a proposal is about TAP raising or not.
    /// @param pid Index of a proposal.
    /// @return True if it's TAP raising. False otherwise.
    function isSubjectRaiseTap (uint256 pid) public view returns(bool) {
        require(pid < proposals.length);
        return proposals[pid].subject == Subject.RaiseTap;
    }

    /// @dev Check if a proposal is about self destruction or not.
    /// @param pid Index of a proposal.
    /// @return True if it's self destruction. False otherwise.
    function isSubjectDestruction (uint256 pid) public view returns(bool) {
        require(pid < proposals.length);
        return proposals[pid].subject == Subject.Destruction;
    }

    /// @dev Return the number of voters take part in a specific voting.
    /// @param pid Index of a proposal.
    /// @return The number of voters.
    function getVoterCount (uint256 pid) external view returns(uint256) {
        require(pid < proposals.length);
        return proposals[pid].voter_count;
    }

    /// @dev Return the number of votes that agrees the proposal.
    /// @param pid Index of a proposal.
    /// @return The number of votes that agrees the proposal.
    function getAyes (uint256 pid) public view returns(uint256) {
        require(pid < proposals.length);
        require(proposals[pid].isFinalized);
        return proposals[pid].votes[true];
    }

    /// @dev Return the number of votes that disagrees the proposal.
    /// @param pid Index of a proposal.
    /// @return The number of votes that disagrees the proposal.
    function getNays (uint256 pid) public view returns(uint256) {
        require(pid < proposals.length);
        require(proposals[pid].isFinalized);
        return proposals[pid].votes[false];
    }

    /// @dev Internal function to add a proposal into the voting queue.
    /// @param _subject Subject of the proposal. Can be TAP raising or self destruction.
    /// @param _reason Reason of the proposal. This field can be an URL of a WEB site.
    /// @return Index of the proposal.
    function addProposal (Subject _subject, string _reason) internal returns(uint256) {
        require(msg.value == proposalCostWei);
        require(DaicoPool(poolAddr).isStateProjectInProgress());
        poolAddr.transfer(msg.value);

        Proposal memory proposal;
        proposal.subject = _subject;
        proposal.reason = _reason;
        proposal.start_time = block.timestamp;
        proposal.end_time = block.timestamp + VOTING_PERIOD;
        proposal.voter_count = 0;
        proposal.isFinalized = false;

        proposals.push(proposal);
        uint256 newID = proposals.length - 1;
        return newID;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"isStateDestructed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawnBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAmount","type":"uint256"}],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenSaleAddr","type":"address"}],"name":"setTokenSaleContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"refundRateNano","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingRelease","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialRelease","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAvailableBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isStateProjectInProgress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tapMultiplierRate","type":"uint256"}],"name":"raiseTap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"releasedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingTokenAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdatedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initialTap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReleasedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isStateInitializing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"selfDestruction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_votingTokenAddr","type":"address"},{"name":"tap_amount","type":"uint256"},{"name":"_initialRelease","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"new_tap","type":"uint256"}],"name":"TapHistory","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"string"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"WithdrawalHistory","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405262278d00601155600060125534801561001c57600080fd5b5060405160608061273e83398101604090815281516020830151919092015160068054600160a060020a03191633179055600160a060020a038316151561006257600080fd5b6000821161006f57600080fd5b600b82905560098054600160a060020a031916600160a060020a0385161790556013805460ff19169055600c81905582306100a8610105565b600160a060020a03928316815291166020820152604080519182900301906000f0801580156100db573d6000803e3d6000fd5b5060088054600160a060020a031916600160a060020a039290921691909117905550610115915050565b604051611af880610c4683390190565b610b22806101246000396000f3006080604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314b804028114610155578063154e81521461017e578063200d2ed2146101a5578063278ecde1146101de5780632e1a7d4d146101f6578063354d89ee1461020e57806339175bff1461022f5780633a7883041461024457806342e4f54f146102595780637b5c2f391461028a578063809dab6a1461029f5780638da5cb5b146102b457806394248eaa146102c9578063992ee4b6146102de5780639ab4b22f146102f65780639b96586a1461030b578063aa54ad3514610320578063bf85689514610335578063c71c0b401461034a578063c7656f6e1461035f578063dec9091814610374578063e238def914610389578063e7ea81221461039e578063f2fde38b146103b3578063f80334ae146103d4578063fd221031146103e9575b005b34801561016157600080fd5b5061016a6103fe565b604080519115158252519081900360200190f35b34801561018a57600080fd5b5061019361041a565b60408051918252519081900360200190f35b3480156101b157600080fd5b506101ba610420565b604051808260028111156101ca57fe5b60ff16815260200191505060405180910390f35b3480156101ea57600080fd5b50610153600435610429565b34801561020257600080fd5b5061015360043561058b565b34801561021a57600080fd5b50610153600160a060020a0360043516610691565b34801561023b57600080fd5b506101936106eb565b34801561025057600080fd5b506101936106f1565b34801561026557600080fd5b5061026e6106f7565b60408051600160a060020a039092168252519081900360200190f35b34801561029657600080fd5b50610193610706565b3480156102ab57600080fd5b5061019361070c565b3480156102c057600080fd5b5061026e61073d565b3480156102d557600080fd5b5061016a61074c565b3480156102ea57600080fd5b50610153600435610755565b34801561030257600080fd5b50610193610799565b34801561031757600080fd5b5061026e61079f565b34801561032c57600080fd5b5061026e6107ae565b34801561034157600080fd5b506101936107bd565b34801561035657600080fd5b506101936107c3565b34801561036b57600080fd5b506101536107c9565b34801561038057600080fd5b50610193610827565b34801561039557600080fd5b5061019361082d565b3480156103aa57600080fd5b5061016a610874565b3480156103bf57600080fd5b50610153600160a060020a036004351661087c565b3480156103e057600080fd5b50610153610911565b3480156103f557600080fd5b50610193610a38565b600060025b60135460ff16600281111561041457fe5b14905090565b600e5481565b60135460ff1681565b6000600260135460ff16600281111561043e57fe5b1461044857600080fd5b600954604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156104bb57600080fd5b505af11580156104cf573d6000803e3d6000fd5b505050506040513d60208110156104e557600080fd5b505115156104f257600080fd5b61051b633b9aca0061050f60125485610a3e90919063ffffffff16565b9063ffffffff610a7416565b604080513381526020810185905281519293507fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d929081900390910190a1604051339082156108fc029083906000818181858888f19350505050158015610586573d6000803e3d6000fd5b505050565b6006546000908190600160a060020a031633146105a757600080fd5b600083116105b457600080fd5b8291506105bf610a89565b6105c761070c565b9050808211156105d5578091505b600e546105e8908363ffffffff610a9a16565b600e55600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015610625573d6000803e3d6000fd5b5060408051602081018490528181526003818301527f4554480000000000000000000000000000000000000000000000000000000000606082015290517fd5dc466e8c711212ab82ec9a94c99278f8e9fe072ae1bbd90b2daf125a6c58009181900360800190a1505050565b600754600160a060020a0316156106a757600080fd5b600160a060020a03811615156106bc57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60125481565b60115481565b600854600160a060020a031681565b600c5481565b600080610729600e5461071d61082d565b9063ffffffff610aa916565b90503031811115610738575030315b919050565b600654600160a060020a031681565b60006001610403565b600854600160a060020a0316331461076c57600080fd5b610774610a89565b610796610791606461050f84600a54610a3e90919063ffffffff16565b610abb565b50565b600d5481565b600954600160a060020a031681565b600754600160a060020a031681565b600f5481565b60105481565b600754600160a060020a031633146107e057600080fd5b600060135460ff1660028111156107f357fe5b146107fd57600080fd5b6013805460ff1916600117905542600f55600c54600d55600b5461082090610abb565b3031601055565b600b5481565b600080610845600f5442610aa990919063ffffffff16565b905061086e61085f600a5483610a3e90919063ffffffff16565b600d549063ffffffff610a9a16565b91505090565b600080610403565b600654600160a060020a0316331461089357600080fd5b600160a060020a03811615156108a857600080fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600854600090600160a060020a0316331461092b57600080fd5b6013805460ff19166002179055610940610a89565b61095a61085f600a54601154610a3e90919063ffffffff16565b600d556109676000610abb565b600960009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b505050506040513d60208110156109fd57600080fd5b50519050610a328161050f633b9aca00610a26610a1861070c565b30319063ffffffff610aa916565b9063ffffffff610a3e16565b60125550565b600a5481565b600080831515610a515760009150610a6d565b50828202828482811515610a6157fe5b0414610a6957fe5b8091505b5092915050565b60008183811515610a8157fe5b049392505050565b610a9161082d565b600d5542600f55565b600082820183811015610a6957fe5b600082821115610ab557fe5b50900390565b600a8190556040805182815290517f7323532efb3d92305f89d5c3e3292758e6aabb03b80c96167f26695697a8ed8e9181900360200190a1505600a165627a7a723058200952f460121375aae5da9b0cfd2f4fdbccbc3e6738565c79724e259552bef21500296080604052670de0b6b3a76400006004553480156200001d57600080fd5b5060405160408062001af8833981016040528051602090910151620000416200020c565b600160a060020a03831615156200005757600080fd5b600160a060020a03821615156200006d57600080fd5b60008054600160a060020a03858116600160a060020a031992831617835560018054918616919092161790556040820181905250604080518082018252600f81527f50524f504f53414c5f484541444552000000000000000000000000000000000060208083019190915260608401919091526000194201808452908301908152600060808401819052600160a085018190526005805480830180835591909352855160089093027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0810193845593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db1850155938501517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2909301805486949260ff19909116908381811115620001a157fe5b021790555060608201518051620001c39160038401916020909101906200024b565b50608082015160058281019190915560a083015160068301805460ff191691151591909117905560c0909201516007909101555460011490506200020357fe5b505050620002f0565b6040805160e081018252600080825260208201819052909182019081526020016060815260200160008152602001600015158152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028e57805160ff1916838001178555620002be565b82800160010185558215620002be579182015b82811115620002be578251825591602001919060010190620002a1565b50620002cc929150620002d0565b5090565b620002ed91905b80821115620002cc5760008155600101620002d7565b90565b6117f880620003006000396000f3006080604052600436106101195763ffffffff60e060020a600035041663013cf08b811461011e57806310e6e06c146101ea5780632260b98b146102095780633dad15831461021e578063494031831461024857806353a58de11461027457806358b092d7146102985780636046cd99146102af578063676b57ad146102e05780637fe846ba146102f857806385b018e914610310578063924806a0146103285780639b96586a146103495780639f0c31011461035e578063a0b4eabe14610376578063abd225e11461038b578063b1610d7e146103a3578063b66f7a8b146103b8578063b7928b4f146103d0578063da2dcea61461045d578063e0d4ea7e1461047d578063e92e5c3414610490578063f1156cdf146104a8575b600080fd5b34801561012a57600080fd5b506101366004356104bd565b6040518088815260200187815260200186600181111561015257fe5b60ff1681526020018060200185815260200184151515158152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156101a9578181015183820152602001610191565b50505050905090810190601f1680156101d65780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b3480156101f657600080fd5b50610207600435151560243561059e565b005b34801561021557600080fd5b50610207610884565b34801561022a57600080fd5b50610236600435610b28565b60408051918252519081900360200190f35b34801561025457600080fd5b50610260600435610ba0565b604080519115158252519081900360200190f35b34801561028057600080fd5b50610236600435600160a060020a0360243516610cb9565b610236602460048035828101929101359035610cd6565b3480156102bb57600080fd5b506102c4610e30565b60408051600160a060020a039092168252519081900360200190f35b3480156102ec57600080fd5b50610236600435610e3f565b34801561030457600080fd5b50610260600435610eb4565b34801561031c57600080fd5b50610260600435610eff565b34801561033457600080fd5b50610260600160a060020a0360043516610f17565b34801561035557600080fd5b506102c46110bc565b34801561036a57600080fd5b506102606004356110cb565b34801561038257600080fd5b506102366110e0565b34801561039757600080fd5b506102606004356110e5565b3480156103af57600080fd5b5061023661112f565b3480156103c457600080fd5b50610260600435611136565b3480156103dc57600080fd5b506103e860043561117b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561042257818101518382015260200161040a565b50505050905090810190601f16801561044f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561046957600080fd5b50610207600480356024810191013561123c565b61023660048035602481019101356112ed565b34801561049c57600080fd5b50610236600435611408565b3480156104b457600080fd5b50610236611440565b60058054829081106104cb57fe5b60009182526020918290206008919091020180546001808301546002808501546003860180546040805161010097831615979097026000190190911693909304601f8101899004890286018901909352828552949750919560ff90921694939183018282801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b50505050600583015460068401546007909401549293909260ff909116915087565b60008054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd9160648082019260209290919082900301818787803b15801561061157600080fd5b505af1158015610625573d6000803e3d6000fd5b505050506040513d602081101561063b57600080fd5b5051151561064857600080fd5b30600160a060020a031663f1156cdf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561068657600080fd5b505af115801561069a573d6000803e3d6000fd5b505050506040513d60208110156106b057600080fd5b505190508015156106c057600080fd5b426005828154811015156106d057fe5b600091825260209091206008909102015411156106ec57600080fd5b426005828154811015156106fc57fe5b9060005260206000209060080201600101541015151561071b57600080fd5b600081815260026020908152604080832033845290915290205415156107935761076f600160058381548110151561074f57fe5b90600052602060002090600802016005015461149290919063ffffffff16565b600580548390811061077d57fe5b9060005260206000209060080201600501819055505b60008181526002602090815260408083203384529091529020546107bd908363ffffffff61149216565b600082815260026020908152604080832033845290915290205560058054610819918491849081106107eb57fe5b600091825260208083208815158452600460089093020191909101905260409020549063ffffffff61149216565b600580548390811061082757fe5b6000918252602080832087151584526004600890930201919091018152604091829020929092558051848152905133927ff668ead05c744b9178e571d2edb452e72baf6529c8d72160e64e59b50d865bd0928290030190a2505050565b600030600160a060020a031663f1156cdf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156108c457600080fd5b505af11580156108d8573d6000803e3d6000fd5b505050506040513d60208110156108ee57600080fd5b505190508015156108fe57600080fd5b4260058281548110151561090e57fe5b9060005260206000209060080201600101541115151561092d57600080fd5b600580548290811061093b57fe5b600091825260209091206006600890920201015460ff161561095c57600080fd5b600160058281548110151561096d57fe5b60009182526020909120600890910201600601805460ff191691151591909117905561099881610eff565b15610a6a576000805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff805460ff191690556109d881610ba0565b15610a655760015460058054600160a060020a039092169163992ee4b6919084908110610a0157fe5b9060005260206000209060080201600701546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015610a4c57600080fd5b505af1158015610a60573d6000803e3d6000fd5b505050505b610b25565b610a7381610eb4565b15610b2557600160005260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c805460ff19169055610ab481610ba0565b15610b2557600160009054906101000a9004600160a060020a0316600160a060020a031663f80334ae6040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610b0c57600080fd5b505af1158015610b20573d6000803e3d6000fd5b505050505b50565b6005546000908210610b3957600080fd5b6005805483908110610b4757fe5b600091825260209091206006600890920201015460ff161515610b6957600080fd5b6005805483908110610b7757fe5b60009182526020808320600184526004600890930201919091019052604090205490505b919050565b600080600080600585815481101515610bb557fe5b600091825260209091206006600890920201015460ff161515610bd757600080fd5b610be085610b28565b9250610beb85610e3f565b9150610c8b82610c7f856000809054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b50519063ffffffff6114a816565b9063ffffffff6114a816565b9050610cae610ca182600663ffffffff6114ba16565b839063ffffffff61149216565b909211949350505050565b600260209081526000928352604080842090915290825290205481565b600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54819060ff1615610d1157600080fd5b826064108015610d22575060c88311155b1515610d2d57600080fd5b610d68600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437506114cf945050505050565b905082600582815481101515610d7a57fe5b6000918252602080832060089283020160070193909355908052600382527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff805460ff1916600117905560408051838152928301919091527f5261697365546170000000000000000000000000000000000000000000000000828201525133917f17a933f10285a0701aaa93ed5eb4baf10c2acbcb32980158bea31c6046294522916060918190039190910190a2509392505050565b600154600160a060020a031681565b6005546000908210610e5057600080fd5b6005805483908110610e5e57fe5b600091825260209091206006600890920201015460ff161515610e8057600080fd5b6005805483908110610e8e57fe5b600091825260208083208380526008929092029091016004019052604090205492915050565b6005546000908210610ec557600080fd5b60015b6005805484908110610ed657fe5b600091825260209091206002600890920201015460ff166001811115610ef857fe5b1492915050565b6005546000908210610f1057600080fd5b6000610ec8565b600080805b600554811015610fb7576005805482908110610f3457fe5b600091825260209091206006600890920201015460ff161515610f5657610fb7565b6000818152600260209081526040808320600160a060020a0388168452909152902054610f8a90839063ffffffff61149216565b6000828152600260209081526040808320600160a060020a03891684529091528120559150600101610f1c565b60008211610fc857600092506110b5565b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018790529151919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050506040513d602081101561106457600080fd5b5051151561107157600080fd5b604080518381529051600160a060020a038616917f86493a1d7e7fd0e93b81c3eee2b79e8c3e501cb541113b1583963989a1902e44919081900360200190a2600192505b5050919050565b600054600160a060020a031681565b60036020526000908152604090205460ff1681565b600081565b6005546000908211156110fa57506000610b9b565b600580548390811061110857fe5b6000918252602090912060089091020154421061112757506001610b9b565b506000919050565b6212750081565b60055460009082111561114b57506000610b9b565b600580548390811061115957fe5b9060005260206000209060080201600101544210151561112757506001610b9b565b600554606090821061118c57600080fd5b600580548390811061119a57fe5b6000918252602091829020600360089092020101805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156112305780601f1061120557610100808354040283529160200191611230565b820191906000526020600020905b81548152906001019060200180831161121357829003601f168201915b50505050509050919050565b60005b818110156112e8573063924806a084848481811061125957fe5b90506020020135600160a060020a03166040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b505050506040513d60208110156112de57600080fd5b505060010161123f565b505050565b6001600090815260036020527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c5460ff161561132857600080fd5b611363600184848080601f016020809104026020016040519081016040528093929190818152602001838380828437506114cf945050505050565b5060016000819052600360209081527fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c805460ff191690921790915560408051828152600f928101929092527f53656c664465737472756374696f6e0000000000000000000000000000000000828201525133917f17a933f10285a0701aaa93ed5eb4baf10c2acbcb32980158bea31c6046294522919081900360600190a292915050565b600554600090821061141957600080fd5b600580548390811061142757fe5b9060005260206000209060080201600501549050919050565b6000805b60055481101561148957600580548290811061145c57fe5b600091825260209091206006600890920201015460ff1615156114815780915061148e565b600101611444565b600091505b5090565b6000828201838110156114a157fe5b9392505050565b6000828211156114b457fe5b50900390565b600081838115156114c757fe5b049392505050565b60006114d96116fc565b60045460009034146114ea57600080fd5b600160009054906101000a9004600160a060020a0316600160a060020a03166394248eaa6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561153d57600080fd5b505af1158015611551573d6000803e3d6000fd5b505050506040513d602081101561156757600080fd5b5051151561157457600080fd5b600154604051600160a060020a03909116903480156108fc02916000818181858888f193505050501580156115ad573d6000803e3d6000fd5b50604082018560018111156115be57fe5b908160018111156115cb57fe5b905250606082018490524280835262127500016020830190815260006080840181905260a084018190526005805460018082018084559290935285517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0600890920291820190815593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015560408601517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2909101805492948794909360ff191690838181111561169a57fe5b0217905550606082015180516116ba91600384019160209091019061173b565b50608082015160058281019190915560a083015160068301805460ff191691151591909117905560c09092015160079091015554600019019695505050505050565b6040805160e081018252600080825260208201819052909182019081526020016060815260200160008152602001600015158152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061177c57805160ff19168380011785556117a9565b828001600101855582156117a9579182015b828111156117a957825182559160200191906001019061178e565b5061148e926117c99250905b8082111561148e57600081556001016117b5565b905600a165627a7a723058209a1e6e9546586e4119b673ef1fd4e45da266294e74893206824ddec2ca66be8900290000000000000000000000008232875761b97a5242a4cffb94828dff5c1019500000000000000000000000000000000000000000000000000004cc45c8c4e8000000000000000000000000000000000000000000000001e7e4171bf4d3a00000

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

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008232875761b97a5242a4cffb94828dff5c101950
Arg [1] : 0000000000000000000000000000000000000000000000000004cc45c8c4e800
Arg [2] : 0000000000000000000000000000000000000000000001e7e4171bf4d3a00000


   Swarm Source:
bzzr://9a1e6e9546586e4119b673ef1fd4e45da266294e74893206824ddec2ca66be89

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.