ETH Price: $2,720.46 (+0.71%)

Contract

0xF11bA5135e3b02D01B149A410e689833536f208A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

Transaction Hash
Method
Block
From
To
Withdraw Dividen...60082572018-07-22 5:51:202400 days ago1532238680IN
0xF11bA513...3536f208A
0 ETH0.000467387
Withdraw Dividen...59649082018-07-14 21:10:482407 days ago1531602648IN
0xF11bA513...3536f208A
0 ETH0.0011906823
Withdraw Dividen...58073042018-06-17 22:13:082434 days ago1529273588IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58072832018-06-17 22:07:022434 days ago1529273222IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58072822018-06-17 22:06:572434 days ago1529273217IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58072822018-06-17 22:06:572434 days ago1529273217IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58072822018-06-17 22:06:572434 days ago1529273217IN
0xF11bA513...3536f208A
0 ETH0.000051761
Sell58072642018-06-17 22:02:372434 days ago1529272957IN
0xF11bA513...3536f208A
0 ETH0.000036251
Sell58072632018-06-17 22:01:362434 days ago1529272896IN
0xF11bA513...3536f208A
0 ETH0.000026531
Sell58072582018-06-17 21:59:222434 days ago1529272762IN
0xF11bA513...3536f208A
0 ETH0.000036191
Sell58072582018-06-17 21:59:222434 days ago1529272762IN
0xF11bA513...3536f208A
0 ETH0.000036191
Withdraw Dividen...58072552018-06-17 21:58:492434 days ago1529272729IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58072552018-06-17 21:58:492434 days ago1529272729IN
0xF11bA513...3536f208A
0 ETH0.000051761
Sell58072462018-06-17 21:56:312434 days ago1529272591IN
0xF11bA513...3536f208A
0 ETH0.000036191
Withdraw Dividen...58072442018-06-17 21:55:422434 days ago1529272542IN
0xF11bA513...3536f208A
0 ETH0.000051761
Sell58071912018-06-17 21:42:192434 days ago1529271739IN
0xF11bA513...3536f208A
0 ETH0.000036191
Withdraw Dividen...58071842018-06-17 21:40:082434 days ago1529271608IN
0xF11bA513...3536f208A
0 ETH0.000051761
Withdraw Dividen...58071802018-06-17 21:38:362434 days ago1529271516IN
0xF11bA513...3536f208A
0 ETH0.000036761
Sell58071782018-06-17 21:38:192434 days ago1529271499IN
0xF11bA513...3536f208A
0 ETH0.000036191
Withdraw Dividen...58071742018-06-17 21:37:432434 days ago1529271463IN
0xF11bA513...3536f208A
0 ETH0.000051761
Take The Torch56676652018-05-24 8:00:372458 days ago1527148837IN
0xF11bA513...3536f208A
0.01 ETH0.0015759210
Take The Torch56335582018-05-18 6:46:492464 days ago1526626009IN
0xF11bA513...3536f208A
0.001 ETH0.0021748411
Finish Migration56334432018-05-18 6:17:012464 days ago1526624221IN
0xF11bA513...3536f208A
0 ETH0.0003062411
Set Donations Re...56334272018-05-18 6:12:052464 days ago1526623925IN
0xF11bA513...3536f208A
0 ETH0.0004865811
Migrate Price Le...56334162018-05-18 6:09:292464 days ago1526623769IN
0xF11bA513...3536f208A
0 ETH0.0008553910
View all transactions

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
56676652018-05-24 8:00:372458 days ago1527148837
0xF11bA513...3536f208A
0.001 ETH
56676652018-05-24 8:00:372458 days ago1527148837
0xF11bA513...3536f208A
0.009 ETH
56335582018-05-18 6:46:492464 days ago1526626009
0xF11bA513...3536f208A
0.0001 ETH
56335582018-05-18 6:46:492464 days ago1526626009
0xF11bA513...3536f208A
0.0009 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoTorch

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-05-18
*/

// CryptoTorch Source code
// copyright 2018 CryptoTorch <https://cryptotorch.io>

pragma solidity 0.4.19;


/**
 * @title SafeMath
 * Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * 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;
    }

    /**
    * 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 c;
    }

    /**
    * Substracts 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;
    }

    /**
    * 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;
    }
}


/**
* @title Ownable
 *
 * Owner rights:
 *   - change the name of the contract
 *   - change the name of the token
 *   - change the Proof of Stake difficulty
 *   - pause/unpause the contract
 *   - transfer ownership
 *
 * Owner CANNOT:
 *   - withdrawal funds
 *   - disable withdrawals
 *   - kill the contract
 *   - change the price of tokens
*/
contract Ownable {
    address public owner;

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

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}


/**
 * @title Pausable
 *
 * Pausing the contract will only disable deposits,
 * it will not prevent player dividend withdraws or token sales
 */
contract Pausable is Ownable {
    event OnPause();
    event OnUnpause();

    bool public paused = false;

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() public onlyOwner whenNotPaused {
        paused = true;
        OnPause();
    }

    function unpause() public onlyOwner whenPaused {
        paused = false;
        OnUnpause();
    }
}


/**
* @title ReentrancyGuard
* Helps contracts guard against reentrancy attacks.
* @author Remco Bloemen <remco@2π.com>
*/
contract ReentrancyGuard {
    bool private reentrancyLock = false;

    modifier nonReentrant() {
        require(!reentrancyLock);
        reentrancyLock = true;
        _;
        reentrancyLock = false;
    }
}


/**
 * @title CryptoTorchToken
 */
contract CryptoTorchToken {
    function contractBalance() public view returns (uint256);
    function totalSupply() public view returns(uint256);
    function balanceOf(address _playerAddress) public view returns(uint256);
    function dividendsOf(address _playerAddress) public view returns(uint256);
    function profitsOf(address _playerAddress) public view returns(uint256);
    function referralBalanceOf(address _playerAddress) public view returns(uint256);
    function sellPrice() public view returns(uint256);
    function buyPrice() public view returns(uint256);
    function calculateTokensReceived(uint256 _etherToSpend) public view returns(uint256);
    function calculateEtherReceived(uint256 _tokensToSell) public view returns(uint256);

    function sellFor(address _for, uint256 _amountOfTokens) public;
    function withdrawFor(address _for) public;
    function mint(address _to, uint256 _amountForTokens, address _referredBy) public payable returns(uint256);
}


/**
 * @title Crypto-Torch Contract v1.2
 */
contract CryptoTorch is Pausable, ReentrancyGuard {
    using SafeMath for uint256;

    //
    // Events
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    event onTorchPassed(
        address indexed from,
        address indexed to,
        uint256 pricePaid
    );

    //
    // Types
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    struct HighPrice {
        uint256 price;
        address owner;
    }

    struct HighMileage {
        uint256 miles;
        address owner;
    }

    struct PlayerData {
        string name;
        string note;
        string coords;
        uint256 dividends; // earnings waiting to be paid out
        uint256 profits;   // earnings already paid out
    }

    //
    // Payout Structure
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //  Special Olympics Donations  - 10%
    //  Token Pool                  - 90%
    //    - Referral                    - 10% of Token Pool
    //

    //
    // Player Data
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    bool private migrationFinished = false;
    uint8 public constant maxLeaders = 3; // Gold, Silver, Bronze

    uint256 private _lowestHighPrice;
    uint256 private _lowestHighMiles;
    uint256 public totalDistanceRun;
    uint256 public whaleIncreaseLimit = 2 ether;
    uint256 public whaleMax = 20 ether;

    HighPrice[maxLeaders] private _highestPrices;
    HighMileage[maxLeaders] private _highestMiles;

    address public torchRunner;
    address public donationsReceiver_;
    mapping (address => PlayerData) private playerData_;

    CryptoTorchToken internal CryptoTorchToken_;

    //
    // Modifiers
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    // ensures that the first tokens in the contract will be equally distributed
    // meaning, no divine dump will be possible
    modifier antiWhalePrice(uint256 _amount) {
        require(
            whaleIncreaseLimit == 0 ||
            (
                _amount <= (whaleIncreaseLimit.add(_highestPrices[0].price)) &&
                playerData_[msg.sender].dividends.add(playerData_[msg.sender].profits).add(_amount) <= whaleMax
            )
        );
        _;
    }

    modifier onlyDuringMigration() {
        require(!migrationFinished);
        _;
    }

    //
    // Contract Initialization
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    function CryptoTorch() public {}

    /**
     * Initializes the Contract Dependencies as well as the Holiday Mapping for OwnTheDay.io
     */
    function initialize(address _torchRunner, address _tokenAddress) public onlyOwner {
        torchRunner = _torchRunner;
        CryptoTorchToken_ = CryptoTorchToken(_tokenAddress);
    }

    /**
     * Migrate Leader Prices
     */
    function migratePriceLeader(uint8 _leaderIndex, address _leaderAddress, uint256 _leaderPrice) public onlyOwner onlyDuringMigration {
        require(_leaderIndex >= 0 && _leaderIndex < maxLeaders);
        _highestPrices[_leaderIndex].owner = _leaderAddress;
        _highestPrices[_leaderIndex].price = _leaderPrice;
        if (_leaderIndex == maxLeaders-1) {
            _lowestHighPrice = _leaderPrice;
        }
    }

    /**
     * Migrate Leader Miles
     */
    function migrateMileageLeader(uint8 _leaderIndex, address _leaderAddress, uint256 _leaderMiles) public onlyOwner onlyDuringMigration {
        require(_leaderIndex >= 0 && _leaderIndex < maxLeaders);
        _highestMiles[_leaderIndex].owner = _leaderAddress;
        _highestMiles[_leaderIndex].miles = _leaderMiles;
        if (_leaderIndex == maxLeaders-1) {
            _lowestHighMiles = _leaderMiles;
        }
    }

    /**
     *
     */
    function finishMigration() public onlyOwner onlyDuringMigration {
        migrationFinished = true;
    }

    /**
     *
     */
    function isMigrationFinished() public view returns (bool) {
        return migrationFinished;
    }

    /**
     * Sets the external contract address of the Token Contract
     */
    function setTokenContract(address _tokenAddress) public onlyOwner {
        CryptoTorchToken_ = CryptoTorchToken(_tokenAddress);
    }

    /**
     * Set the Contract Donations Receiver
     * - Set to the Special Olympics Donations Address
     */
    function setDonationsReceiver(address _receiver) public onlyOwner {
        donationsReceiver_ = _receiver;
    }

    /**
     * The Max Price-Paid Limit for Whales during the Anti-Whale Phase
     */
    function setWhaleMax(uint256 _max) public onlyOwner {
        whaleMax = _max;
    }

    /**
     * The Max Price-Increase Limit for Whales during the Anti-Whale Phase
     */
    function setWhaleIncreaseLimit(uint256 _limit) public onlyOwner {
        whaleIncreaseLimit = _limit;
    }

    //
    // Public Functions
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    /**
     * Sets the Nickname for an Account Address
     */
    function setAccountNickname(string _nickname) public whenNotPaused {
        require(msg.sender != address(0));
        require(bytes(_nickname).length > 0);
        playerData_[msg.sender].name = _nickname;
    }

    /**
     * Gets the Nickname for an Account Address
     */
    function getAccountNickname(address _playerAddress) public view returns (string) {
        return playerData_[_playerAddress].name;
    }

    /**
     * Sets the Note for an Account Address
     */
    function setAccountNote(string _note) public whenNotPaused {
        require(msg.sender != address(0));
        playerData_[msg.sender].note = _note;
    }

    /**
     * Gets the Note for an Account Address
     */
    function getAccountNote(address _playerAddress) public view returns (string) {
        return playerData_[_playerAddress].note;
    }

    /**
     * Sets the Note for an Account Address
     */
    function setAccountCoords(string _coords) public whenNotPaused {
        require(msg.sender != address(0));
        playerData_[msg.sender].coords = _coords;
    }

    /**
     * Gets the Note for an Account Address
     */
    function getAccountCoords(address _playerAddress) public view returns (string) {
        return playerData_[_playerAddress].coords;
    }

    /**
     * Take the Torch!
     *  The Purchase Price is Paid to the Previous Torch Holder, and is also used
     *  as the Purchasers Mileage Multiplier
     */
    function takeTheTorch(address _referredBy) public nonReentrant whenNotPaused payable {
        takeTheTorch_(msg.value, msg.sender, _referredBy);
    }

    /**
     * Payments made directly to this contract are treated as direct Donations to the Special Olympics.
     *  - Note: payments made directly to the contract do not receive tokens.  Tokens
     *    are only available via "takeTheTorch()" or through the Dapp at https://cryptotorch.io
     */
    function() payable public {
        if (msg.value > 0 && donationsReceiver_ != 0x0) {
            donationsReceiver_.transfer(msg.value); // donations?  Thank you!  :)
        }
    }

    /**
     * Sell some tokens for Ether
     */
    function sell(uint256 _amountOfTokens) public {
        CryptoTorchToken_.sellFor(msg.sender, _amountOfTokens);
    }

    /**
     * Withdraw the earned Dividends to Ether
     *  - Includes Torch + Token Dividends and Token Referral Bonuses
     */
    function withdrawDividends() public returns (uint256) {
        CryptoTorchToken_.withdrawFor(msg.sender);
        return withdrawFor_(msg.sender);
    }

    //
    // Helper Functions
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    /**
     * View the total balance of this contract
     */
    function torchContractBalance() public view returns (uint256) {
        return this.balance;
    }

    /**
     * View the total balance of the token contract
     */
    function tokenContractBalance() public view returns (uint256) {
        return CryptoTorchToken_.contractBalance();
    }

    /**
     * Retrieve the total token supply.
     */
    function totalSupply() public view returns(uint256) {
        return CryptoTorchToken_.totalSupply();
    }

    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _playerAddress) public view returns(uint256) {
        return CryptoTorchToken_.balanceOf(_playerAddress);
    }

    /**
     * Retrieve the token dividend balance of any single address.
     */
    function tokenDividendsOf(address _playerAddress) public view returns(uint256) {
        return CryptoTorchToken_.dividendsOf(_playerAddress);
    }

    /**
     * Retrieve the referral dividend balance of any single address.
     */
    function referralDividendsOf(address _playerAddress) public view returns(uint256) {
        return CryptoTorchToken_.referralBalanceOf(_playerAddress);
    }

    /**
     * Retrieve the dividend balance of any single address.
     */
    function torchDividendsOf(address _playerAddress) public view returns(uint256) {
        return playerData_[_playerAddress].dividends;
    }

    /**
     * Retrieve the dividend balance of any single address.
     */
    function profitsOf(address _playerAddress) public view returns(uint256) {
        return playerData_[_playerAddress].profits.add(CryptoTorchToken_.profitsOf(_playerAddress));
    }

    /**
     * Return the sell price of 1 individual token.
     */
    function sellPrice() public view returns(uint256) {
        return CryptoTorchToken_.sellPrice();
    }

    /**
     * Return the buy price of 1 individual token.
     */
    function buyPrice() public view returns(uint256) {
        return CryptoTorchToken_.buyPrice();
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of buy orders.
     */
    function calculateTokensReceived(uint256 _etherToSpend) public view returns(uint256) {
        uint256 forTokens = _etherToSpend.sub(_etherToSpend.div(10)); // 90% for Tokens
        return CryptoTorchToken_.calculateTokensReceived(forTokens);
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of sell orders.
     */
    function calculateEtherReceived(uint256 _tokensToSell) public view returns(uint256) {
        return CryptoTorchToken_.calculateEtherReceived(_tokensToSell);
    }

    /**
     * Get the Max Price of the Torch during the Anti-Whale Phase
     */
    function getMaxPrice() public view returns (uint256) {
        if (whaleIncreaseLimit == 0) { return 0; }  // no max price
        return whaleIncreaseLimit.add(_highestPrices[0].price);
    }

    /**
     * Get the Highest Price per each Medal Leader
     */
    function getHighestPriceAt(uint _index) public view returns (uint256) {
        require(_index >= 0 && _index < maxLeaders);
        return _highestPrices[_index].price;
    }

    /**
     * Get the Highest Price Owner per each Medal Leader
     */
    function getHighestPriceOwnerAt(uint _index) public view returns (address) {
        require(_index >= 0 && _index < maxLeaders);
        return _highestPrices[_index].owner;
    }

    /**
     * Get the Highest Miles per each Medal Leader
     */
    function getHighestMilesAt(uint _index) public view returns (uint256) {
        require(_index >= 0 && _index < maxLeaders);
        return _highestMiles[_index].miles;
    }

    /**
     * Get the Highest Miles Owner per each Medal Leader
     */
    function getHighestMilesOwnerAt(uint _index) public view returns (address) {
        require(_index >= 0 && _index < maxLeaders);
        return _highestMiles[_index].owner;
    }

    //
    // Internal Functions
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    /**
     * Take the Torch!  And receive KMS Tokens!
     */
    function takeTheTorch_(uint256 _amountPaid, address _takenBy, address _referredBy) internal antiWhalePrice(_amountPaid) returns (uint256) {
        require(_takenBy != address(0));
        require(_amountPaid >= 1 finney);
        require(_takenBy != torchRunner); // Torch must be passed on
        if (_referredBy == address(this)) { _referredBy = address(0); }

        // Calculate Portions
        uint256 forDonations = _amountPaid.div(10);
        uint256 forTokens = _amountPaid.sub(forDonations);

        // Pass the Torch
        onTorchPassed(torchRunner, _takenBy, _amountPaid);
        torchRunner = _takenBy;

        // Grant Mileage Tokens to Torch Holder
        uint256 mintedTokens = CryptoTorchToken_.mint.value(forTokens)(torchRunner, forTokens, _referredBy);
        if (totalDistanceRun < CryptoTorchToken_.totalSupply()) {
            totalDistanceRun = CryptoTorchToken_.totalSupply();
        }

        // Update LeaderBoards
        updateLeaders_(torchRunner, _amountPaid);

        // Handle Payouts
        playerData_[donationsReceiver_].profits = playerData_[donationsReceiver_].profits.add(forDonations);
        donationsReceiver_.transfer(forDonations);
        return mintedTokens;
    }


    /**
     * Withdraw the earned Torch Dividends to Ether
     *  - Does not touch Token Dividends or Token Referral Bonuses
     */
    function withdrawFor_(address _for) internal returns (uint256) {
        uint256 torchDividends = playerData_[_for].dividends;
        if (playerData_[_for].dividends > 0) {
            playerData_[_for].dividends = 0;
            playerData_[_for].profits = playerData_[_for].profits.add(torchDividends);
            _for.transfer(torchDividends);
        }
        return torchDividends;
    }

    /**
     * Update the Medal Leader Boards
     */
    function updateLeaders_(address _torchRunner, uint256 _amountPaid) internal {
        // Owner can't be leader; conflict of interest
        if (_torchRunner == owner) { return; }

        // Update Highest Prices
        if (_amountPaid > _lowestHighPrice) {
            updateHighestPrices_(_amountPaid, _torchRunner);
        }

        // Update Highest Mileage
        uint256 tokenBalance = CryptoTorchToken_.balanceOf(_torchRunner);
        if (tokenBalance > _lowestHighMiles) {
            updateHighestMiles_(tokenBalance, _torchRunner);
        }
    }

    /**
     * Update the Medal Leaderboard for the Highest Price
     */
    function updateHighestPrices_(uint256 _price, address _owner) internal {
        uint256 newPos = maxLeaders;
        uint256 oldPos = maxLeaders;
        uint256 i;
        HighPrice memory tmp;

        // Determine positions
        for (i = maxLeaders-1; i >= 0; i--) {
            if (_price >= _highestPrices[i].price) {
                newPos = i;
            }
            if (_owner == _highestPrices[i].owner) {
                oldPos = i;
            }
            if (i == 0) { break; } // prevent i going below 0
        }
        // Insert or update leader
        if (newPos < maxLeaders) {
            if (oldPos < maxLeaders-1) {
                // update price for existing leader
                _highestPrices[oldPos].price = _price;
                if (newPos != oldPos) {
                    // swap
                    tmp = _highestPrices[newPos];
                    _highestPrices[newPos] = _highestPrices[oldPos];
                    _highestPrices[oldPos] = tmp;
                }
            } else {
                // shift down
                for (i = maxLeaders-1; i > newPos; i--) {
                    _highestPrices[i] = _highestPrices[i-1];
                }
                // insert
                _highestPrices[newPos].price = _price;
                _highestPrices[newPos].owner = _owner;
            }
            // track lowest value
            _lowestHighPrice = _highestPrices[maxLeaders-1].price;
        }
    }

    /**
     * Update the Medal Leaderboard for the Highest Miles
     */
    function updateHighestMiles_(uint256 _miles, address _owner) internal {
        uint256 newPos = maxLeaders;
        uint256 oldPos = maxLeaders;
        uint256 i;
        HighMileage memory tmp;

        // Determine positions
        for (i = maxLeaders-1; i >= 0; i--) {
            if (_miles >= _highestMiles[i].miles) {
                newPos = i;
            }
            if (_owner == _highestMiles[i].owner) {
                oldPos = i;
            }
            if (i == 0) { break; } // prevent i going below 0
        }
        // Insert or update leader
        if (newPos < maxLeaders) {
            if (oldPos < maxLeaders-1) {
                // update miles for existing leader
                _highestMiles[oldPos].miles = _miles;
                if (newPos != oldPos) {
                    // swap
                    tmp = _highestMiles[newPos];
                    _highestMiles[newPos] = _highestMiles[oldPos];
                    _highestMiles[oldPos] = tmp;
                }
            } else {
                // shift down
                for (i = maxLeaders-1; i > newPos; i--) {
                    _highestMiles[i] = _highestMiles[i-1];
                }
                // insert
                _highestMiles[newPos].miles = _miles;
                _highestMiles[newPos].owner = _owner;
            }
            // track lowest value
            _lowestHighMiles = _highestMiles[maxLeaders-1].miles;
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_leaderIndex","type":"uint8"},{"name":"_leaderAddress","type":"address"},{"name":"_leaderMiles","type":"uint256"}],"name":"migrateMileageLeader","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"profitsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_etherToSpend","type":"uint256"}],"name":"calculateTokensReceived","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":true,"inputs":[],"name":"isMigrationFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getHighestMilesAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_torchRunner","type":"address"},{"name":"_tokenAddress","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nickname","type":"string"}],"name":"setAccountNickname","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_note","type":"string"}],"name":"setAccountNote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"donationsReceiver_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getHighestMilesOwnerAt","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"torchContractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDistanceRun","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"takeTheTorch","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getMaxPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMigration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_limit","type":"uint256"}],"name":"setWhaleIncreaseLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"torchRunner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxLeaders","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"}],"name":"setDonationsReceiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_leaderIndex","type":"uint8"},{"name":"_leaderAddress","type":"address"},{"name":"_leaderPrice","type":"uint256"}],"name":"migratePriceLeader","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getHighestPriceOwnerAt","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"getAccountCoords","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whaleMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEtherReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_max","type":"uint256"}],"name":"setWhaleMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"referralDividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getHighestPriceAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"getAccountNickname","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenContractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"torchDividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whaleIncreaseLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"getAccountNote","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coords","type":"string"}],"name":"setAccountCoords","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"tokenDividendsOf","outputs":[{"name":"","type":"uint256"}],"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":"pricePaid","type":"uint256"}],"name":"onTorchPassed","type":"event"},{"anonymous":false,"inputs":[],"name":"OnPause","type":"event"},{"anonymous":false,"inputs":[],"name":"OnUnpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040526000805460a060020a62ffffff0219169055671bc16d674ec800006004556801158e460913d00000600555341561003a57600080fd5b60008054600160a060020a033316600160a060020a0319909116179055612158806100666000396000f3006060604052600436106102165763ffffffff60e060020a60003504166301c7cb58811461026b57806301ec07931461029357806310d0ffdd146102c457806318160ddd146102da57806321d3d2ee146102ed5780632e92abdd146103145780633f4ba83a1461032757806343212c3c1461033a578063485cc955146103505780634b750334146103755780634d9994e81461038857806351cb860a146103d957806351fbd91e1461042a5780635c975abb146104595780636bb7f98e1461046c57806370a082311461048257806375d5a7c6146104a1578063764c86bd146104b4578063770e9e85146104c757806382d8dff6146104db5780638456cb59146104ee5780638620410b1461050157806388d761f2146105145780638da5cb5b146105275780638e7674111461053a57806394e0e32814610550578063a35cad7714610563578063a62566441461058c578063a692d5ae146105ab578063a8d95496146105d3578063b5147d64146105e9578063b8314c221461067f578063bbcd5bbe14610692578063c257c851146106b1578063d0ffecaa146106c7578063d6349dd6146106dd578063d9cfc182146106fc578063dbbd78da14610712578063e440350714610731578063e4849b3214610744578063e5c0fa691461075a578063f2fde38b14610779578063f40a911214610798578063f6fee732146107ab578063f9f81a73146107ca578063fd6180cb1461081b575b6000341180156102305750601354600160a060020a031615155b1561026957601354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561026957600080fd5b005b341561027657600080fd5b61026960ff60043516600160a060020a036024351660443561083a565b341561029e57600080fd5b6102b2600160a060020a03600435166108ff565b60405190815260200160405180910390f35b34156102cf57600080fd5b6102b26004356109a6565b34156102e557600080fd5b6102b2610a3f565b34156102f857600080fd5b610300610aa9565b604051901515815260200160405180910390f35b341561031f57600080fd5b6102b2610ab9565b341561033257600080fd5b610269610b2e565b341561034557600080fd5b6102b2600435610bad565b341561035b57600080fd5b610269600160a060020a0360043581169060243516610be2565b341561038057600080fd5b6102b2610c2b565b341561039357600080fd5b61026960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c7595505050505050565b34156103e457600080fd5b61026960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cdc95505050505050565b341561043557600080fd5b61043d610d34565b604051600160a060020a03909116815260200160405180910390f35b341561046457600080fd5b610300610d43565b341561047757600080fd5b61043d600435610d53565b341561048d57600080fd5b6102b2600160a060020a0360043516610d94565b34156104ac57600080fd5b6102b2610e0f565b34156104bf57600080fd5b6102b2610e1d565b610269600160a060020a0360043516610e23565b34156104e657600080fd5b6102b2610ec7565b34156104f957600080fd5b610269610ef8565b341561050c57600080fd5b6102b2610f7c565b341561051f57600080fd5b610269610fc6565b341561053257600080fd5b61043d611020565b341561054557600080fd5b61026960043561102f565b341561055b57600080fd5b61043d61104f565b341561056e57600080fd5b61057661105e565b60405160ff909116815260200160405180910390f35b341561059757600080fd5b610269600160a060020a0360043516611063565b34156105b657600080fd5b61026960ff60043516600160a060020a03602435166044356110a0565b34156105de57600080fd5b61043d600435611161565b34156105f457600080fd5b610608600160a060020a036004351661118b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561064457808201518382015260200161062c565b50505050905090810190601f1680156106715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068a57600080fd5b6102b261125b565b341561069d57600080fd5b610269600160a060020a0360043516611261565b34156106bc57600080fd5b6102b260043561129e565b34156106d257600080fd5b6102696004356112f1565b34156106e857600080fd5b6102b2600160a060020a0360043516611311565b341561070757600080fd5b6102b260043561136c565b341561071d57600080fd5b610608600160a060020a0360043516611396565b341561073c57600080fd5b6102b261142f565b341561074f57600080fd5b610269600435611479565b341561076557600080fd5b6102b2600160a060020a03600435166114e6565b341561078457600080fd5b610269600160a060020a0360043516611504565b34156107a357600080fd5b6102b2611592565b34156107b657600080fd5b610608600160a060020a0360043516611598565b34156107d557600080fd5b61026960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061163195505050505050565b341561082657600080fd5b6102b2600160a060020a0360043516611689565b60005433600160a060020a0390811691161461085557600080fd5b60005460b060020a900460ff161561086c57600080fd5b60008360ff16101580156108835750600360ff8416105b151561088e57600080fd5b81600c60ff85166003811061089f57fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555080600c8460ff166003811015156108dd57fe5b6002908102919091019190915560ff841614156108fa5760028190555b505050565b6015546000906109a090600160a060020a03166301ec079384846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561095e57600080fd5b6102c65a03f1151561096f57600080fd5b5050506040518051600160a060020a038516600090815260146020526040902060040154915063ffffffff6116e316565b92915050565b6000806109ca6109bd84600a63ffffffff6116f916565b849063ffffffff61171016565b601554909150600160a060020a03166310d0ffdd8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a1e57600080fd5b6102c65a03f11515610a2f57600080fd5b5050506040518051949350505050565b601554600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b6102c65a03f11515610a9a57600080fd5b50505060405180519150505b90565b60005460b060020a900460ff1690565b601554600090600160a060020a0316639eca672c3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610b0c57600080fd5b6102c65a03f11515610b1d57600080fd5b505050610b2933611722565b905090565b60005433600160a060020a03908116911614610b4957600080fd5b60005460a060020a900460ff161515610b6157600080fd5b6000805474ff0000000000000000000000000000000000000000191690557fbfc7b47e079b745ec7404d7fc82a0635e2a8363341743448b3bcf3f79ad59d0460405160405180910390a1565b6000808210158015610bbf5750600382105b1515610bca57600080fd5b600c8260038110610bd757fe5b600202015492915050565b60005433600160a060020a03908116911614610bfd57600080fd5b60128054600160a060020a03938416600160a060020a03199182161790915560158054929093169116179055565b601554600090600160a060020a0316634b75033482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b60005460a060020a900460ff1615610c8c57600080fd5b33600160a060020a03161515610ca157600080fd5b6000815111610caf57600080fd5b600160a060020a0333166000908152601460205260409020818051610cd892916020019061206b565b5050565b60005460a060020a900460ff1615610cf357600080fd5b33600160a060020a03161515610d0857600080fd5b600160a060020a0333166000908152601460205260409020600101818051610cd892916020019061206b565b601354600160a060020a031681565b60005460a060020a900460ff1681565b6000808210158015610d655750600382105b1515610d7057600080fd5b600c8260038110610d7d57fe5b6002020160010154600160a060020a031692915050565b601554600090600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b6102c65a03f11515610e0057600080fd5b50505060405180519392505050565b600160a060020a0330163190565b60035481565b6000547501000000000000000000000000000000000000000000900460ff1615610e4c57600080fd5b6000805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179081905560a060020a900460ff1615610e9957600080fd5b610ea43433836117c3565b50506000805475ff00000000000000000000000000000000000000000019169055565b600060045460001415610edc57506000610aa6565b610b29600660005b60020201546004549063ffffffff6116e316565b60005433600160a060020a03908116911614610f1357600080fd5b60005460a060020a900460ff1615610f2a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f4d7c2d647163ffee415429ee44043a4e5252a64365083793b624b51dfd7ce01d60405160405180910390a1565b601554600090600160a060020a0316638620410b82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b60005433600160a060020a03908116911614610fe157600080fd5b60005460b060020a900460ff1615610ff857600080fd5b6000805476ff00000000000000000000000000000000000000000000191660b060020a179055565b600054600160a060020a031681565b60005433600160a060020a0390811691161461104a57600080fd5b600455565b601254600160a060020a031681565b600381565b60005433600160a060020a0390811691161461107e57600080fd5b60138054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110bb57600080fd5b60005460b060020a900460ff16156110d257600080fd5b60008360ff16101580156110e95750600360ff8416105b15156110f457600080fd5b81600660ff85166003811061110557fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055508060068460ff1660038110151561114357fe5b6002908102919091019190915560ff841614156108fa576001555050565b60008082101580156111735750600382105b151561117e57600080fd5b60068260038110610d7d57fe5b6111936120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b820191906000526020600020905b81548152906001019060200180831161123257829003601f168201915b50505050509050919050565b60055481565b60005433600160a060020a0390811691161461127c57600080fd5b60158054600160a060020a031916600160a060020a0392909216919091179055565b601554600090600160a060020a031663c257c85183836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610def57600080fd5b60005433600160a060020a0390811691161461130c57600080fd5b600555565b601554600090600160a060020a0316634653464983836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b600080821015801561137e5750600382105b151561138957600080fd5b60068260038110610bd757fe5b61139e6120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b601554600090600160a060020a0316638b7afe2e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b601554600160a060020a0316637f2438cb338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114cf57600080fd5b6102c65a03f115156114e057600080fd5b50505050565b600160a060020a031660009081526014602052604090206003015490565b60005433600160a060020a0390811691161461151f57600080fd5b600160a060020a038116151561153457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60045481565b6115a06120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b60005460a060020a900460ff161561164857600080fd5b33600160a060020a0316151561165d57600080fd5b600160a060020a0333166000908152601460205260409020600201818051610cd892916020019061206b565b601554600090600160a060020a03166265318b83836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b6000828201838110156116f257fe5b9392505050565b600080828481151561170757fe5b04949350505050565b60008282111561171c57fe5b50900390565b600160a060020a038116600090815260146020526040812060030154818111156109a057600160a060020a038316600090815260146020526040812060038101919091556004015461177a908263ffffffff6116e316565b600160a060020a03841660008181526014602052604090819020600401929092559082156108fc0290839051600060405180830381858888f1935050505015156109a057600080fd5b600080600080866004546000148061183657506117e260066000610ee4565b81111580156118365750600554600160a060020a033316600090815260146020526040902060048101546003909101546118339184916118279163ffffffff6116e316565b9063ffffffff6116e316565b11155b151561184157600080fd5b600160a060020a038716151561185657600080fd5b66038d7ea4c6800088101561186a57600080fd5b601254600160a060020a038881169116141561188557600080fd5b30600160a060020a031686600160a060020a031614156118a457600095505b6118b588600a63ffffffff6116f916565b93506118c7888563ffffffff61171016565b601254909350600160a060020a0380891691167ff48f5c6dcc828289ac34d56b5cf2f546c704cfa7bc3f513c21dbbf397c26dff88a60405190815260200160405180910390a360128054600160a060020a031916600160a060020a038981169190911791829055601554811691630d4d151391869116818a60006040516020015260405160e060020a63ffffffff8716028152600160a060020a039384166004820152602481019290925290911660448201526064016020604051808303818588803b151561199557600080fd5b6125ee5a03f115156119a657600080fd5b505050506040518051601554909350600160a060020a031690506318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119fc57600080fd5b6102c65a03f11515611a0d57600080fd5b505050604051805190506003541015611a8657601554600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6857600080fd5b6102c65a03f11515611a7957600080fd5b5050506040518051600355505b601254611a9c90600160a060020a031689611b26565b601354600160a060020a0316600090815260146020526040902060040154611aca908563ffffffff6116e316565b60138054600160a060020a0390811660009081526014602052604090819020600401939093559054169085156108fc0290869051600060405180830381858888f193505050501515611b1b57600080fd5b509695505050505050565b60008054600160a060020a0384811691161415611b42576108fa565b600154821115611b5657611b568284611be0565b601554600160a060020a03166370a082318460006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611baf57600080fd5b6102c65a03f11515611bc057600080fd5b5050506040518051905090506002548111156108fa576108fa8184611e26565b6000806000611bed6120fb565b60039350839250600291505b60008210611c625760068260038110611c0e57fe5b60020201548610611c1d578193505b60068260038110611c2a57fe5b6002020160010154600160a060020a039081169086161415611c4a578192505b811515611c5657611c62565b60001990910190611bf9565b6003841015611e1e576002831015611d5a578560068460038110611c8257fe5b6002020155838314611d555760068460038110611c9b57fe5b600202016040805190810160405281548152600190910154600160a060020a03166020820152905060068360038110611cd057fe5b6002020160068560038110611ce157fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790558060068460038110611d2357fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b611e17565b600291505b83821115611dca576006600019830160038110611d7857fe5b6002020160068360038110611d8957fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190611d5f565b8560068560038110611dd857fe5b60020201558460068560038110611deb57fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600a546001555b505050505050565b6000806000611e336120fb565b60039350839250600291505b60008210611ea857600c8260038110611e5457fe5b60020201548610611e63578193505b600c8260038110611e7057fe5b6002020160010154600160a060020a039081169086161415611e90578192505b811515611e9c57611ea8565b60001990910190611e3f565b6003841015611e1e576002831015611fa05785600c8460038110611ec857fe5b6002020155838314611f9b57600c8460038110611ee157fe5b600202016040805190810160405281548152600190910154600160a060020a031660208201529050600c8360038110611f1657fe5b60020201600c8560038110611f2757fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a0390921691909117905580600c8460038110611f6957fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b61205d565b600291505b8382111561201057600c600019830160038110611fbe57fe5b60020201600c8360038110611fcf57fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190611fa5565b85600c856003811061201e57fe5b600202015584600c856003811061203157fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b505060105460025550505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120ac57805160ff19168380011785556120d9565b828001600101855582156120d9579182015b828111156120d95782518255916020019190600101906120be565b506120e5929150612112565b5090565b60206040519081016040526000815290565b604080519081016040526000808252602082015290565b610aa691905b808211156120e557600081556001016121185600a165627a7a723058205ece0d659777a35492907264a5141981ff443d4976aacbebe28dab80ae06e6f10029

Deployed Bytecode

0x6060604052600436106102165763ffffffff60e060020a60003504166301c7cb58811461026b57806301ec07931461029357806310d0ffdd146102c457806318160ddd146102da57806321d3d2ee146102ed5780632e92abdd146103145780633f4ba83a1461032757806343212c3c1461033a578063485cc955146103505780634b750334146103755780634d9994e81461038857806351cb860a146103d957806351fbd91e1461042a5780635c975abb146104595780636bb7f98e1461046c57806370a082311461048257806375d5a7c6146104a1578063764c86bd146104b4578063770e9e85146104c757806382d8dff6146104db5780638456cb59146104ee5780638620410b1461050157806388d761f2146105145780638da5cb5b146105275780638e7674111461053a57806394e0e32814610550578063a35cad7714610563578063a62566441461058c578063a692d5ae146105ab578063a8d95496146105d3578063b5147d64146105e9578063b8314c221461067f578063bbcd5bbe14610692578063c257c851146106b1578063d0ffecaa146106c7578063d6349dd6146106dd578063d9cfc182146106fc578063dbbd78da14610712578063e440350714610731578063e4849b3214610744578063e5c0fa691461075a578063f2fde38b14610779578063f40a911214610798578063f6fee732146107ab578063f9f81a73146107ca578063fd6180cb1461081b575b6000341180156102305750601354600160a060020a031615155b1561026957601354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561026957600080fd5b005b341561027657600080fd5b61026960ff60043516600160a060020a036024351660443561083a565b341561029e57600080fd5b6102b2600160a060020a03600435166108ff565b60405190815260200160405180910390f35b34156102cf57600080fd5b6102b26004356109a6565b34156102e557600080fd5b6102b2610a3f565b34156102f857600080fd5b610300610aa9565b604051901515815260200160405180910390f35b341561031f57600080fd5b6102b2610ab9565b341561033257600080fd5b610269610b2e565b341561034557600080fd5b6102b2600435610bad565b341561035b57600080fd5b610269600160a060020a0360043581169060243516610be2565b341561038057600080fd5b6102b2610c2b565b341561039357600080fd5b61026960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c7595505050505050565b34156103e457600080fd5b61026960046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cdc95505050505050565b341561043557600080fd5b61043d610d34565b604051600160a060020a03909116815260200160405180910390f35b341561046457600080fd5b610300610d43565b341561047757600080fd5b61043d600435610d53565b341561048d57600080fd5b6102b2600160a060020a0360043516610d94565b34156104ac57600080fd5b6102b2610e0f565b34156104bf57600080fd5b6102b2610e1d565b610269600160a060020a0360043516610e23565b34156104e657600080fd5b6102b2610ec7565b34156104f957600080fd5b610269610ef8565b341561050c57600080fd5b6102b2610f7c565b341561051f57600080fd5b610269610fc6565b341561053257600080fd5b61043d611020565b341561054557600080fd5b61026960043561102f565b341561055b57600080fd5b61043d61104f565b341561056e57600080fd5b61057661105e565b60405160ff909116815260200160405180910390f35b341561059757600080fd5b610269600160a060020a0360043516611063565b34156105b657600080fd5b61026960ff60043516600160a060020a03602435166044356110a0565b34156105de57600080fd5b61043d600435611161565b34156105f457600080fd5b610608600160a060020a036004351661118b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561064457808201518382015260200161062c565b50505050905090810190601f1680156106715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068a57600080fd5b6102b261125b565b341561069d57600080fd5b610269600160a060020a0360043516611261565b34156106bc57600080fd5b6102b260043561129e565b34156106d257600080fd5b6102696004356112f1565b34156106e857600080fd5b6102b2600160a060020a0360043516611311565b341561070757600080fd5b6102b260043561136c565b341561071d57600080fd5b610608600160a060020a0360043516611396565b341561073c57600080fd5b6102b261142f565b341561074f57600080fd5b610269600435611479565b341561076557600080fd5b6102b2600160a060020a03600435166114e6565b341561078457600080fd5b610269600160a060020a0360043516611504565b34156107a357600080fd5b6102b2611592565b34156107b657600080fd5b610608600160a060020a0360043516611598565b34156107d557600080fd5b61026960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061163195505050505050565b341561082657600080fd5b6102b2600160a060020a0360043516611689565b60005433600160a060020a0390811691161461085557600080fd5b60005460b060020a900460ff161561086c57600080fd5b60008360ff16101580156108835750600360ff8416105b151561088e57600080fd5b81600c60ff85166003811061089f57fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555080600c8460ff166003811015156108dd57fe5b6002908102919091019190915560ff841614156108fa5760028190555b505050565b6015546000906109a090600160a060020a03166301ec079384846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561095e57600080fd5b6102c65a03f1151561096f57600080fd5b5050506040518051600160a060020a038516600090815260146020526040902060040154915063ffffffff6116e316565b92915050565b6000806109ca6109bd84600a63ffffffff6116f916565b849063ffffffff61171016565b601554909150600160a060020a03166310d0ffdd8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a1e57600080fd5b6102c65a03f11515610a2f57600080fd5b5050506040518051949350505050565b601554600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b6102c65a03f11515610a9a57600080fd5b50505060405180519150505b90565b60005460b060020a900460ff1690565b601554600090600160a060020a0316639eca672c3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610b0c57600080fd5b6102c65a03f11515610b1d57600080fd5b505050610b2933611722565b905090565b60005433600160a060020a03908116911614610b4957600080fd5b60005460a060020a900460ff161515610b6157600080fd5b6000805474ff0000000000000000000000000000000000000000191690557fbfc7b47e079b745ec7404d7fc82a0635e2a8363341743448b3bcf3f79ad59d0460405160405180910390a1565b6000808210158015610bbf5750600382105b1515610bca57600080fd5b600c8260038110610bd757fe5b600202015492915050565b60005433600160a060020a03908116911614610bfd57600080fd5b60128054600160a060020a03938416600160a060020a03199182161790915560158054929093169116179055565b601554600090600160a060020a0316634b75033482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b60005460a060020a900460ff1615610c8c57600080fd5b33600160a060020a03161515610ca157600080fd5b6000815111610caf57600080fd5b600160a060020a0333166000908152601460205260409020818051610cd892916020019061206b565b5050565b60005460a060020a900460ff1615610cf357600080fd5b33600160a060020a03161515610d0857600080fd5b600160a060020a0333166000908152601460205260409020600101818051610cd892916020019061206b565b601354600160a060020a031681565b60005460a060020a900460ff1681565b6000808210158015610d655750600382105b1515610d7057600080fd5b600c8260038110610d7d57fe5b6002020160010154600160a060020a031692915050565b601554600090600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b6102c65a03f11515610e0057600080fd5b50505060405180519392505050565b600160a060020a0330163190565b60035481565b6000547501000000000000000000000000000000000000000000900460ff1615610e4c57600080fd5b6000805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179081905560a060020a900460ff1615610e9957600080fd5b610ea43433836117c3565b50506000805475ff00000000000000000000000000000000000000000019169055565b600060045460001415610edc57506000610aa6565b610b29600660005b60020201546004549063ffffffff6116e316565b60005433600160a060020a03908116911614610f1357600080fd5b60005460a060020a900460ff1615610f2a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f4d7c2d647163ffee415429ee44043a4e5252a64365083793b624b51dfd7ce01d60405160405180910390a1565b601554600090600160a060020a0316638620410b82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b60005433600160a060020a03908116911614610fe157600080fd5b60005460b060020a900460ff1615610ff857600080fd5b6000805476ff00000000000000000000000000000000000000000000191660b060020a179055565b600054600160a060020a031681565b60005433600160a060020a0390811691161461104a57600080fd5b600455565b601254600160a060020a031681565b600381565b60005433600160a060020a0390811691161461107e57600080fd5b60138054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110bb57600080fd5b60005460b060020a900460ff16156110d257600080fd5b60008360ff16101580156110e95750600360ff8416105b15156110f457600080fd5b81600660ff85166003811061110557fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055508060068460ff1660038110151561114357fe5b6002908102919091019190915560ff841614156108fa576001555050565b60008082101580156111735750600382105b151561117e57600080fd5b60068260038110610d7d57fe5b6111936120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b820191906000526020600020905b81548152906001019060200180831161123257829003601f168201915b50505050509050919050565b60055481565b60005433600160a060020a0390811691161461127c57600080fd5b60158054600160a060020a031916600160a060020a0392909216919091179055565b601554600090600160a060020a031663c257c85183836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610def57600080fd5b60005433600160a060020a0390811691161461130c57600080fd5b600555565b601554600090600160a060020a0316634653464983836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b600080821015801561137e5750600382105b151561138957600080fd5b60068260038110610bd757fe5b61139e6120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b601554600090600160a060020a0316638b7afe2e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a8957600080fd5b601554600160a060020a0316637f2438cb338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114cf57600080fd5b6102c65a03f115156114e057600080fd5b50505050565b600160a060020a031660009081526014602052604090206003015490565b60005433600160a060020a0390811691161461151f57600080fd5b600160a060020a038116151561153457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60045481565b6115a06120e9565b6014600083600160a060020a0316600160a060020a031681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124f5780601f106112245761010080835404028352916020019161124f565b60005460a060020a900460ff161561164857600080fd5b33600160a060020a0316151561165d57600080fd5b600160a060020a0333166000908152601460205260409020600201818051610cd892916020019061206b565b601554600090600160a060020a03166265318b83836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610def57600080fd5b6000828201838110156116f257fe5b9392505050565b600080828481151561170757fe5b04949350505050565b60008282111561171c57fe5b50900390565b600160a060020a038116600090815260146020526040812060030154818111156109a057600160a060020a038316600090815260146020526040812060038101919091556004015461177a908263ffffffff6116e316565b600160a060020a03841660008181526014602052604090819020600401929092559082156108fc0290839051600060405180830381858888f1935050505015156109a057600080fd5b600080600080866004546000148061183657506117e260066000610ee4565b81111580156118365750600554600160a060020a033316600090815260146020526040902060048101546003909101546118339184916118279163ffffffff6116e316565b9063ffffffff6116e316565b11155b151561184157600080fd5b600160a060020a038716151561185657600080fd5b66038d7ea4c6800088101561186a57600080fd5b601254600160a060020a038881169116141561188557600080fd5b30600160a060020a031686600160a060020a031614156118a457600095505b6118b588600a63ffffffff6116f916565b93506118c7888563ffffffff61171016565b601254909350600160a060020a0380891691167ff48f5c6dcc828289ac34d56b5cf2f546c704cfa7bc3f513c21dbbf397c26dff88a60405190815260200160405180910390a360128054600160a060020a031916600160a060020a038981169190911791829055601554811691630d4d151391869116818a60006040516020015260405160e060020a63ffffffff8716028152600160a060020a039384166004820152602481019290925290911660448201526064016020604051808303818588803b151561199557600080fd5b6125ee5a03f115156119a657600080fd5b505050506040518051601554909350600160a060020a031690506318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119fc57600080fd5b6102c65a03f11515611a0d57600080fd5b505050604051805190506003541015611a8657601554600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6857600080fd5b6102c65a03f11515611a7957600080fd5b5050506040518051600355505b601254611a9c90600160a060020a031689611b26565b601354600160a060020a0316600090815260146020526040902060040154611aca908563ffffffff6116e316565b60138054600160a060020a0390811660009081526014602052604090819020600401939093559054169085156108fc0290869051600060405180830381858888f193505050501515611b1b57600080fd5b509695505050505050565b60008054600160a060020a0384811691161415611b42576108fa565b600154821115611b5657611b568284611be0565b601554600160a060020a03166370a082318460006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611baf57600080fd5b6102c65a03f11515611bc057600080fd5b5050506040518051905090506002548111156108fa576108fa8184611e26565b6000806000611bed6120fb565b60039350839250600291505b60008210611c625760068260038110611c0e57fe5b60020201548610611c1d578193505b60068260038110611c2a57fe5b6002020160010154600160a060020a039081169086161415611c4a578192505b811515611c5657611c62565b60001990910190611bf9565b6003841015611e1e576002831015611d5a578560068460038110611c8257fe5b6002020155838314611d555760068460038110611c9b57fe5b600202016040805190810160405281548152600190910154600160a060020a03166020820152905060068360038110611cd057fe5b6002020160068560038110611ce157fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790558060068460038110611d2357fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b611e17565b600291505b83821115611dca576006600019830160038110611d7857fe5b6002020160068360038110611d8957fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190611d5f565b8560068560038110611dd857fe5b60020201558460068560038110611deb57fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600a546001555b505050505050565b6000806000611e336120fb565b60039350839250600291505b60008210611ea857600c8260038110611e5457fe5b60020201548610611e63578193505b600c8260038110611e7057fe5b6002020160010154600160a060020a039081169086161415611e90578192505b811515611e9c57611ea8565b60001990910190611e3f565b6003841015611e1e576002831015611fa05785600c8460038110611ec857fe5b6002020155838314611f9b57600c8460038110611ee157fe5b600202016040805190810160405281548152600190910154600160a060020a031660208201529050600c8360038110611f1657fe5b60020201600c8560038110611f2757fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a0390921691909117905580600c8460038110611f6957fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b61205d565b600291505b8382111561201057600c600019830160038110611fbe57fe5b60020201600c8360038110611fcf57fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190611fa5565b85600c856003811061201e57fe5b600202015584600c856003811061203157fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b505060105460025550505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120ac57805160ff19168380011785556120d9565b828001600101855582156120d9579182015b828111156120d95782518255916020019190600101906120be565b506120e5929150612112565b5090565b60206040519081016040526000815290565b604080519081016040526000808252602082015290565b610aa691905b808211156120e557600081556001016121185600a165627a7a723058205ece0d659777a35492907264a5141981ff443d4976aacbebe28dab80ae06e6f10029

Swarm Source

bzzr://5ece0d659777a35492907264a5141981ff443d4976aacbebe28dab80ae06e6f1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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