Overview
ETH Balance
0.013635 ETH
Eth Value
$25.24 (@ $1,851.44/ETH)More Info
Private Name Tags
ContractCreator
Multi Chain
Multichain Addresses
0 address found via
Latest 25 from a total of 75 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Pause | 5633352 | 1847 days 15 hrs ago | IN | 0 ETH | 0.0003143 | ||||
Withdraw Dividen... | 5614792 | 1850 days 21 hrs ago | IN | 0 ETH | 0.00046723 | ||||
Withdraw Dividen... | 5614758 | 1850 days 22 hrs ago | IN | 0 ETH | 0.00067896 | ||||
Withdraw Dividen... | 5614740 | 1850 days 22 hrs ago | IN | 0 ETH | 0.00050922 | ||||
Withdraw Dividen... | 5614740 | 1850 days 22 hrs ago | IN | 0 ETH | 0.00050922 | ||||
Withdraw Dividen... | 5614737 | 1850 days 22 hrs ago | IN | 0 ETH | 0.00050922 | ||||
Withdraw Dividen... | 5614394 | 1850 days 23 hrs ago | IN | 0 ETH | 0.00056922 | ||||
Withdraw Dividen... | 5606021 | 1852 days 10 hrs ago | IN | 0 ETH | 0.00027435 | ||||
Sell | 5605994 | 1852 days 10 hrs ago | IN | 0 ETH | 0.00018107 | ||||
Withdraw Dividen... | 5597572 | 1853 days 22 hrs ago | IN | 0 ETH | 0.00026391 | ||||
Sell | 5597568 | 1853 days 22 hrs ago | IN | 0 ETH | 0.00018469 | ||||
Withdraw Dividen... | 5593231 | 1854 days 16 hrs ago | IN | 0 ETH | 0.0004709 | ||||
Sell | 5593162 | 1854 days 16 hrs ago | IN | 0 ETH | 0.00025575 | ||||
Withdraw Dividen... | 5569458 | 1858 days 19 hrs ago | IN | 0 ETH | 0.00014672 | ||||
Take The Torch | 5569049 | 1858 days 21 hrs ago | IN | 0.015 ETH | 0.00086359 | ||||
Take The Torch | 5568338 | 1859 days 22 mins ago | IN | 0.005 ETH | 0.0000623 | ||||
Take The Torch | 5568334 | 1859 days 23 mins ago | IN | 0.005 ETH | 0.00046044 | ||||
Withdraw Dividen... | 5567060 | 1859 days 5 hrs ago | IN | 0 ETH | 0.00010974 | ||||
Take The Torch | 5564392 | 1859 days 16 hrs ago | IN | 0.005 ETH | 0.00133895 | ||||
Withdraw Dividen... | 5562875 | 1859 days 22 hrs ago | IN | 0 ETH | 0.00025461 | ||||
Sell | 5562871 | 1859 days 23 hrs ago | IN | 0 ETH | 0.00010864 | ||||
Set Account Nick... | 5561808 | 1860 days 3 hrs ago | IN | 0 ETH | 0.00010739 | ||||
Take The Torch | 5561494 | 1860 days 4 hrs ago | IN | 0.01 ETH | 0.00092308 | ||||
Withdraw Dividen... | 5555062 | 1861 days 7 hrs ago | IN | 0 ETH | 0.00041398 | ||||
Sell | 5555057 | 1861 days 7 hrs ago | IN | 0 ETH | 0.00028971 |
Latest 25 internal transactions (View All)
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
5614758 | 1850 days 22 hrs ago | 0.003945 ETH | ||||
5614740 | 1850 days 22 hrs ago | 0.007125 ETH | ||||
5614740 | 1850 days 22 hrs ago | 0.00462 ETH | ||||
5614737 | 1850 days 22 hrs ago | 0.00495 ETH | ||||
5606021 | 1852 days 10 hrs ago | 0.00162 ETH | ||||
5569458 | 1858 days 19 hrs ago | 0.0082125 ETH | ||||
5569049 | 1858 days 21 hrs ago | 0.00075 ETH | ||||
5569049 | 1858 days 21 hrs ago | 0.01155 ETH | ||||
5568334 | 1859 days 23 mins ago | 0.00025 ETH | ||||
5568334 | 1859 days 23 mins ago | 0.00025 ETH | ||||
5568334 | 1859 days 23 mins ago | 0.00375 ETH | ||||
5567060 | 1859 days 5 hrs ago | 0.001065 ETH | ||||
5564392 | 1859 days 16 hrs ago | 0.00025 ETH | ||||
5564392 | 1859 days 16 hrs ago | 0.00025 ETH | ||||
5564392 | 1859 days 16 hrs ago | 0.00375 ETH | ||||
5562875 | 1859 days 22 hrs ago | 0.009375 ETH | ||||
5561494 | 1860 days 4 hrs ago | 0.0005 ETH | ||||
5561494 | 1860 days 4 hrs ago | 0.008 ETH | ||||
5553696 | 1861 days 13 hrs ago | 0.01053 ETH | ||||
5550606 | 1862 days 2 hrs ago | 0.016275 ETH | ||||
5550570 | 1862 days 2 hrs ago | 0.0001 ETH | ||||
5550570 | 1862 days 2 hrs ago | 0.00025 ETH | ||||
5550570 | 1862 days 2 hrs ago | 0.00375 ETH | ||||
5546158 | 1862 days 21 hrs ago | 0.0005 ETH | ||||
5546158 | 1862 days 21 hrs ago | 0.0005 ETH |
Loading...
Loading
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-04-26 */ // 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 <[email protected]π.com> */ contract ReentrancyGuard { bool private reentrancyLock = false; modifier nonReentrant() { require(!reentrancyLock); reentrancyLock = true; _; reentrancyLock = false; } } /** * DateTime Contract Interface * see https://github.com/pipermerriam/ethereum-datetime * Live Contract Address: 0x1a6184CD4C5Bea62B0116de7962EE7315B7bcBce */ contract DateTime { function isLeapYear(uint16 year) public pure returns (bool); function getYear(uint timestamp) public pure returns (uint16); function getMonth(uint timestamp) public pure returns (uint8); function getDay(uint timestamp) public pure returns (uint8); } /** * OwnTheDay Contract Interface */ contract OwnTheDayContract { function ownerOf(uint256 _tokenId) public view returns (address); } /** * @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 */ 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 bool champion; // ran the torch while owning the day? } // // Payout Structure // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Dev Fee - 5% // Token Pool - 75% // - Referral - 10% // Remaining - 20% // - Day Owner - 10-25% // - Remaining - 75-90% // - Last Runner - 60% // - Second Last Runner - 30% // - Third Last Runner - 10% // // // Player Data // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // uint8 public constant maxLeaders = 3; // Gold, Silver, Bronze uint256 private _lowestHighPrice; uint256 private _lowestHighMiles; uint256 public whaleIncreaseLimit = 2 ether; uint256 public whaleMax = 20 ether; HighPrice[maxLeaders] private _highestPrices; HighMileage[maxLeaders] private _highestMiles; address[maxLeaders] public torchRunners; address internal donationsReceiver_; mapping (address => PlayerData) private playerData_; DateTime internal DateTimeLib_; CryptoTorchToken internal CryptoTorchToken_; OwnTheDayContract internal OwnTheDayContract_; string[3] internal holidayMap_; // // 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 ) ); _; } // // Contract Initialization // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // /** * Set the Owner to the First Torch Runner */ function CryptoTorch() public { torchRunners[0] = msg.sender; } /** * Initializes the Contract Dependencies as well as the Holiday Mapping for OwnTheDay.io */ function initialize(address _dateTimeAddress, address _tokenAddress, address _otdAddress) public onlyOwner { DateTimeLib_ = DateTime(_dateTimeAddress); CryptoTorchToken_ = CryptoTorchToken(_tokenAddress); OwnTheDayContract_ = OwnTheDayContract(_otdAddress); holidayMap_[0] = "10000110000001100000000000000101100000000011101000000000000011000000000000001001000010000101100010100110000100001000110000"; holidayMap_[1] = "10111000100101000111000000100100000100010001001000100000000010010000000001000000110000000000000100000000010001100001100000"; holidayMap_[2] = "01000000000100000101011000000110000001100000000100000000000011100001000100000000101000000000100000000000000000010011000001"; } /** * Sets the external contract address of the DateTime Library */ function setDateTimeLib(address _dateTimeAddress) public onlyOwner { DateTimeLib_ = DateTime(_dateTimeAddress); } /** * Sets the external contract address of the Token Contract */ function setTokenContract(address _tokenAddress) public onlyOwner { CryptoTorchToken_ = CryptoTorchToken(_tokenAddress); } /** * Sets the external contract address of OwnTheDay.io */ function setOwnTheDayContract(address _otdAddress) public onlyOwner { OwnTheDayContract_ = OwnTheDayContract(_otdAddress); } /** * Set the Contract Donations Receiver */ 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; } /** * Updates the Holiday Mappings in case of updates/changes at OwnTheDay.io */ function updateHolidayState(uint8 _listIndex, string _holidayMap) public onlyOwner { require(_listIndex >= 0 && _listIndex < 3); holidayMap_[_listIndex] = _holidayMap; } // // Public Functions // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // /** * Checks if a specific day is a holiday at OwnTheDay.io */ function isHoliday(uint256 _dayIndex) public view returns (bool) { require(_dayIndex >= 0 && _dayIndex < 366); return (getHolidayByIndex_(_dayIndex) == 1); } /** * Checks if Today is a holiday at OwnTheDay.io */ function isHolidayToday() public view returns (bool) { uint256 _dayIndex = getDayIndex_(now); return (getHolidayByIndex_(_dayIndex) == 1); } /** * Gets the Day-Index of Today at OwnTheDay.io */ function getTodayIndex() public view returns (uint256) { return getDayIndex_(now); } /** * Gets the Owner Name of the Day at OwnTheDay.io */ function getTodayOwnerName() public view returns (string) { address dayOwner = OwnTheDayContract_.ownerOf(getTodayIndex()); return playerData_[dayOwner].name; // Get Name from THIS contract } /** * Gets the Owner Address of the Day at OwnTheDay.io */ function getTodayOwnerAddress() public view returns (address) { return OwnTheDayContract_.ownerOf(getTodayIndex()); } /** * 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; } /** * Gets the Note for an Account Address */ function isChampionAccount(address _playerAddress) public view returns (bool) { return playerData_[_playerAddress].champion; } /** * 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); } /** * Do not make payments directly to this contract (unless it is a donation! :) * - 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(4)); 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 >= 5 finney); require(_takenBy != torchRunners[0]); // Torch must be passed on if (_referredBy == address(this)) { _referredBy = address(0); } // Pass the Torch address previousLast = torchRunners[2]; torchRunners[2] = torchRunners[1]; torchRunners[1] = torchRunners[0]; torchRunners[0] = _takenBy; // Get the Current Day Owner at OwnTheDay address dayOwner = OwnTheDayContract_.ownerOf(getDayIndex_(now)); // Calculate Portions uint256 forDev = _amountPaid.mul(5).div(100); uint256 forTokens = _amountPaid.sub(_amountPaid.div(4)); uint256 forPayout = _amountPaid.sub(forDev).sub(forTokens); uint256 forDayOwner = calculateDayOwnerCut_(forPayout); if (dayOwner == _takenBy) { forTokens = forTokens.add(forDayOwner); forPayout = _amountPaid.sub(forDev).sub(forTokens); playerData_[_takenBy].champion = true; } else { forPayout = forPayout.sub(forDayOwner); } // Fire Events onTorchPassed(torchRunners[1], _takenBy, _amountPaid); // Grant Mileage Tokens to Torch Holder uint256 mintedTokens = CryptoTorchToken_.mint.value(forTokens)(_takenBy, forTokens, _referredBy); // Update LeaderBoards updateLeaders_(_takenBy, _amountPaid); // Handle Payouts handlePayouts_(forDev, forPayout, forDayOwner, _takenBy, previousLast, dayOwner); return mintedTokens; } /** * Payouts to the last 3 Torch Runners, the Day Owner & Dev */ function handlePayouts_(uint256 _forDev, uint256 _forPayout, uint256 _forDayOwner, address _takenBy, address _previousLast, address _dayOwner) internal { uint256[] memory runnerPortions = new uint256[](3); // Determine Runner Portions // Note, torch has already been passed, so torchRunners[0] // is the current torch runner if (_previousLast != address(0)) { runnerPortions[2] = _forPayout.mul(10).div(100); } if (torchRunners[2] != address(0)) { runnerPortions[1] = _forPayout.mul(30).div(100); } runnerPortions[0] = _forPayout.sub(runnerPortions[1]).sub(runnerPortions[2]); // Update Player Dividends playerData_[_previousLast].dividends = playerData_[_previousLast].dividends.add(runnerPortions[2]); playerData_[torchRunners[2]].dividends = playerData_[torchRunners[2]].dividends.add(runnerPortions[1]); playerData_[torchRunners[1]].dividends = playerData_[torchRunners[1]].dividends.add(runnerPortions[0]); // Track Profits playerData_[owner].profits = playerData_[owner].profits.add(_forDev); if (_dayOwner != _takenBy) { playerData_[_dayOwner].profits = playerData_[_dayOwner].profits.add(_forDayOwner); } // Transfer Funds // - Transfer directly since these accounts are not, or may not be, existing // Torch-Runners and therefore cannot "exit" this contract owner.transfer(_forDev); if (_dayOwner != _takenBy) { _dayOwner.transfer(_forDayOwner); } } /** * 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 _takenBy, uint256 _amountPaid) internal { // Owner can't be leader; conflict of interest if (_takenBy == owner || _takenBy == donationsReceiver_) { return; } // Update Highest Prices if (_amountPaid > _lowestHighPrice) { updateHighestPrices_(_amountPaid, _takenBy); } // Update Highest Mileage uint256 tokenBalance = CryptoTorchToken_.balanceOf(_takenBy); if (tokenBalance > _lowestHighMiles) { updateHighestMiles_(tokenBalance, _takenBy); } } /** * Calculate the amount of Payout for the Day Owner (Holidays receive extra) */ function calculateDayOwnerCut_(uint256 _price) internal view returns (uint256) { if (getHolidayByIndex_(getDayIndex_(now)) == 1) { return _price.mul(25).div(100); } return _price.mul(10).div(100); } /** * Get the Day-Index of the current Day for Mapping with OwnTheDay.io */ function getDayIndex_(uint timestamp) internal view returns (uint256) { uint16[12] memory offset = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; uint8 day = DateTimeLib_.getDay(timestamp); uint8 month = DateTimeLib_.getMonth(timestamp) - 1; bool isLeapYear = DateTimeLib_.isLeapYear(DateTimeLib_.getYear(timestamp)); // OwnTheDay always includes Feb 29 if (isLeapYear && month > 1) { day = day + 1; } return offset[month] + day; } /** * Determine if Day-Index is a Holiday or not */ function getHolidayByIndex_(uint256 _dayIndex) internal view returns (uint result) { if (_dayIndex < 122) { return getFromList_(0, _dayIndex); } if (_dayIndex < 244) { return getFromList_(1, _dayIndex-122); } return getFromList_(2, _dayIndex-244); } function getFromList_(uint8 _idx, uint256 _dayIndex) internal view returns (uint result) { result = parseInt_(uint(bytes(holidayMap_[_idx])[_dayIndex])); } function parseInt_(uint c) internal pure returns (uint result) { if (c >= 48 && c <= 57) { result = result * 10 + (c - 48); } } /** * 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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"getTodayIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isHolidayToday","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":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":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"isChampionAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTodayOwnerName","outputs":[{"name":"","type":"string"}],"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":"_dayIndex","type":"uint256"}],"name":"isHoliday","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"torchContractBalance","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":true,"inputs":[],"name":"getTodayOwnerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_listIndex","type":"uint8"},{"name":"_holidayMap","type":"string"}],"name":"updateHolidayState","outputs":[],"payable":false,"stateMutability":"nonpayable","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":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":false,"inputs":[{"name":"_dateTimeAddress","type":"address"},{"name":"_tokenAddress","type":"address"},{"name":"_otdAddress","type":"address"}],"name":"initialize","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":false,"inputs":[{"name":"_dateTimeAddress","type":"address"}],"name":"setDateTimeLib","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_otdAddress","type":"address"}],"name":"setOwnTheDayContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"torchRunners","outputs":[{"name":"","type":"address"}],"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"}]
Contract Creation Code
60606040526000805460a060020a61ffff0219169055671bc16d674ec800006003556801158e460913d00000600455341561003957600080fd5b60008054600160a060020a033316600160a060020a03199182168117835560118054909216179055612ca390819061007190396000f3006060604052600436106102375763ffffffff60e060020a60003504166301ec0793811461028c57806310d0ffdd146102bd578063154faf5d146102d357806318160ddd146102e65780632e92abdd146102f95780633980b6801461030c5780633f4ba83a1461033357806343212c3c146103465780634b7503341461035c5780634d9994e81461036f57806351cb860a146103c05780635c975abb146104115780635d0f4ee01461042457806362571cac146104435780636bb7f98e146104cd57806370a08231146104ff5780637597eede1461051e57806375d5a7c614610534578063770e9e851461054757806382d8dff61461055b5780638456cb591461056e5780638620410b146105815780638ceeaaa8146105945780638da5cb5b146105a75780638e767411146105ba5780639e8c39ed146105d0578063a35cad7714610629578063a625664414610652578063a8d9549614610671578063b5147d6414610687578063b8314c22146106a6578063bbcd5bbe146106b9578063c0c53b8b146106d8578063c257c85114610703578063d0ffecaa14610719578063d6349dd61461072f578063d8b3ad771461074e578063d9cfc1821461076d578063dbbd78da14610783578063e4403507146107a2578063e4849b32146107b5578063e5c0fa69146107cb578063eac5426f146107ea578063ef39438014610809578063f2fde38b1461081f578063f40a91121461083e578063f6fee73214610851578063f9f81a7314610870578063fd6180cb146108c1575b6000341180156102515750601454600160a060020a031615155b1561028a57601454600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561028a57600080fd5b005b341561029757600080fd5b6102ab600160a060020a03600435166108e0565b60405190815260200160405180910390f35b34156102c857600080fd5b6102ab600435610989565b34156102de57600080fd5b6102ab610a22565b34156102f157600080fd5b6102ab610a33565b341561030457600080fd5b6102ab610a9c565b341561031757600080fd5b61031f610b0c565b604051901515815260200160405180910390f35b341561033e57600080fd5b61028a610b2d565b341561035157600080fd5b6102ab600435610bac565b341561036757600080fd5b6102ab610be1565b341561037a57600080fd5b61028a60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c2b95505050505050565b34156103cb57600080fd5b61028a60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c9295505050505050565b341561041c57600080fd5b61031f610cea565b341561042f57600080fd5b61031f600160a060020a0360043516610cfa565b341561044e57600080fd5b610456610d1b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561049257808201518382015260200161047a565b50505050905090810190601f1680156104bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104d857600080fd5b6104e3600435610e62565b604051600160a060020a03909116815260200160405180910390f35b341561050a57600080fd5b6102ab600160a060020a0360043516610ea3565b341561052957600080fd5b61031f600435610f1e565b341561053f57600080fd5b6102ab610f4e565b61028a600160a060020a0360043516610f5c565b341561056657600080fd5b6102ab611000565b341561057957600080fd5b61028a611031565b341561058c57600080fd5b6102ab6110b5565b341561059f57600080fd5b6104e36110ff565b34156105b257600080fd5b6104e361115a565b34156105c557600080fd5b61028a600435611169565b34156105db57600080fd5b61028a6004803560ff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061118995505050505050565b341561063457600080fd5b61063c6111ee565b60405160ff909116815260200160405180910390f35b341561065d57600080fd5b61028a600160a060020a03600435166111f3565b341561067c57600080fd5b6104e3600435611230565b341561069257600080fd5b610456600160a060020a036004351661125a565b34156106b157600080fd5b6102ab61132a565b34156106c457600080fd5b61028a600160a060020a0360043516611330565b34156106e357600080fd5b61028a600160a060020a036004358116906024358116906044351661136d565b341561070e57600080fd5b6102ab6004356115fe565b341561072457600080fd5b61028a600435611651565b341561073a57600080fd5b6102ab600160a060020a0360043516611671565b341561075957600080fd5b61028a600160a060020a03600435166116cc565b341561077857600080fd5b6102ab600435611709565b341561078e57600080fd5b610456600160a060020a0360043516611733565b34156107ad57600080fd5b6102ab6117cc565b34156107c057600080fd5b61028a600435611816565b34156107d657600080fd5b6102ab600160a060020a036004351661187d565b34156107f557600080fd5b61028a600160a060020a036004351661189b565b341561081457600080fd5b6104e36004356118d8565b341561082a57600080fd5b61028a600160a060020a03600435166118f5565b341561084957600080fd5b6102ab611983565b341561085c57600080fd5b610456600160a060020a0360043516611989565b341561087b57600080fd5b61028a60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611a2295505050505050565b34156108cc57600080fd5b6102ab600160a060020a0360043516611a7a565b60175460009061098190600160a060020a03166301ec079384846040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561093f57600080fd5b6102c65a03f1151561095057600080fd5b5050506040518051600160a060020a038516600090815260156020526040902060040154915063ffffffff611ad416565b90505b919050565b6000806109ad6109a084600463ffffffff611aee16565b849063ffffffff611b0516565b601754909150600160a060020a03166310d0ffdd8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a0157600080fd5b6102c65a03f11515610a1257600080fd5b5050506040518051949350505050565b6000610a2d42611b17565b90505b90565b601754600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b505050604051805191505090565b601754600090600160a060020a0316639eca672c3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610aef57600080fd5b6102c65a03f11515610b0057600080fd5b505050610a2d33611d89565b600080610b1842611b17565b9050610b2381611e30565b60011491505b5090565b60005433600160a060020a03908116911614610b4857600080fd5b60005460a060020a900460ff161515610b6057600080fd5b6000805474ff0000000000000000000000000000000000000000191690557fbfc7b47e079b745ec7404d7fc82a0635e2a8363341743448b3bcf3f79ad59d0460405160405180910390a1565b6000808210158015610bbe5750600382105b1515610bc957600080fd5b600b8260038110610bd657fe5b600202015492915050565b601754600090600160a060020a0316634b75033482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7d57600080fd5b60005460a060020a900460ff1615610c4257600080fd5b33600160a060020a03161515610c5757600080fd5b6000815111610c6557600080fd5b600160a060020a0333166000908152601560205260409020818051610c8e929160200190612b91565b5050565b60005460a060020a900460ff1615610ca957600080fd5b33600160a060020a03161515610cbe57600080fd5b600160a060020a0333166000908152601560205260409020600101818051610c8e929160200190612b91565b60005460a060020a900460ff1681565b600160a060020a031660009081526015602052604090206005015460ff1690565b610d23612c0b565b601854600090600160a060020a0316636352211e610d3f610a22565b60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d7e57600080fd5b6102c65a03f11515610d8f57600080fd5b5050506040518051905090506015600082600160a060020a0316600160a060020a031681526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e575780601f10610e2c57610100808354040283529160200191610e57565b820191906000526020600020905b815481529060010190602001808311610e3a57829003601f168201915b505050505091505090565b6000808210158015610e745750600382105b1515610e7f57600080fd5b600b8260038110610e8c57fe5b6002020160010154600160a060020a031692915050565b601754600090600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610efe57600080fd5b6102c65a03f11515610f0f57600080fd5b50505060405180519392505050565b6000808210158015610f31575061016e82105b1515610f3c57600080fd5b610f4582611e30565b60011492915050565b600160a060020a0330163190565b6000547501000000000000000000000000000000000000000000900460ff1615610f8557600080fd5b6000805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179081905560a060020a900460ff1615610fd257600080fd5b610fdd343383611e72565b50506000805475ff00000000000000000000000000000000000000000019169055565b60006003546000141561101557506000610a30565b610a2d600560005b60020201546003549063ffffffff611ad416565b60005433600160a060020a0390811691161461104c57600080fd5b60005460a060020a900460ff161561106357600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f4d7c2d647163ffee415429ee44043a4e5252a64365083793b624b51dfd7ce01d60405160405180910390a1565b601754600090600160a060020a0316638620410b82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7d57600080fd5b601854600090600160a060020a0316636352211e61111b610a22565b60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a7d57600080fd5b600054600160a060020a031681565b60005433600160a060020a0390811691161461118457600080fd5b600355565b60005433600160a060020a039081169116146111a457600080fd5b60008260ff16101580156111bb575060038260ff16105b15156111c657600080fd5b80601960ff8416600381106111d757fe5b019080516111e9929160200190612b91565b505050565b600381565b60005433600160a060020a0390811691161461120e57600080fd5b60148054600160a060020a031916600160a060020a0392909216919091179055565b60008082101580156112425750600382105b151561124d57600080fd5b60058260038110610e8c57fe5b611262612c0b565b6015600083600160a060020a0316600160a060020a031681526020019081526020016000206002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131e5780601f106112f35761010080835404028352916020019161131e565b820191906000526020600020905b81548152906001019060200180831161130157829003601f168201915b50505050509050919050565b60045481565b60005433600160a060020a0390811691161461134b57600080fd5b60178054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461138857600080fd5b60168054600160a060020a03808616600160a060020a03199283161790925560178054858416908316179055601880549284169290911691909117905560a06040519081016040908152607a82527f313030303031313030303030303131303030303030303030303030303031303160208301527f3130303030303030303031313130313030303030303030303030303031313030908201527f303030303030303030303030313030313030303031303030303130313130303060608201527f313031303031313030303031303030303130303031313030303000000000000060808201526019908051611480929160200190612b91565b5060a06040519081016040908152607a82527f313031313130303031303031303130303031313130303030303031303031303060208301527f3030303130303031303030313030313030303130303030303030303031303031908201527f303030303030303030313030303030303131303030303030303030303030303160608201527f30303030303030303031303030313130303030313130303030300000000000006080820152601a90805161153c929160200190612b91565b5060a06040519081016040908152607a82527f303130303030303030303031303030303031303130313130303030303031313060208301527f3030303030313130303030303030303130303030303030303030303031313130908201527f303030313030303130303030303030303130313030303030303030303130303060608201527f30303030303030303030303030303031303031313030303030310000000000006080820152601b9080516115f8929160200190612b91565b50505050565b601754600090600160a060020a031663c257c85183836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610efe57600080fd5b60005433600160a060020a0390811691161461166c57600080fd5b600455565b601754600090600160a060020a0316634653464983836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610efe57600080fd5b60005433600160a060020a039081169116146116e757600080fd5b60168054600160a060020a031916600160a060020a0392909216919091179055565b600080821015801561171b5750600382105b151561172657600080fd5b60058260038110610bd657fe5b61173b612c0b565b6015600083600160a060020a0316600160a060020a031681526020019081526020016000206000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131e5780601f106112f35761010080835404028352916020019161131e565b601754600090600160a060020a0316638b7afe2e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a7d57600080fd5b601754600160a060020a0316637f2438cb338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561186c57600080fd5b6102c65a03f115156115f857600080fd5b600160a060020a031660009081526015602052604090206003015490565b60005433600160a060020a039081169116146118b657600080fd5b60188054600160a060020a031916600160a060020a0392909216919091179055565b601181600381106118e557fe5b0154600160a060020a0316905081565b60005433600160a060020a0390811691161461191057600080fd5b600160a060020a038116151561192557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60035481565b611991612c0b565b6015600083600160a060020a0316600160a060020a031681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131e5780601f106112f35761010080835404028352916020019161131e565b60005460a060020a900460ff1615611a3957600080fd5b33600160a060020a03161515611a4e57600080fd5b600160a060020a0333166000908152601560205260409020600201818051610c8e929160200190612b91565b601754600090600160a060020a03166265318b83836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610efe57600080fd5b600082820183811015611ae357fe5b8091505b5092915050565b6000808284811515611afc57fe5b04949350505050565b600082821115611b1157fe5b50900390565b6000611b21612c1d565b600080600061018060405190810160409081526000808352601f6020840152603b82840152605a606084015260786080840152609760a084015260b560c084015260d460e084015260f361010084015261011161012084015261013061014084015261014e610160840152601654929650600160a060020a03909216916365c7284091899190516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611be257600080fd5b6102c65a03f11515611bf357600080fd5b505050604051805160165490945060019150600160a060020a031663a324ad248860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611c5357600080fd5b6102c65a03f11515611c6457600080fd5b5050506040518051601654929003935050600160a060020a031663a6f0e577816392d663138960006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611cc957600080fd5b6102c65a03f11515611cda57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff841602815261ffff9091166004820152602401602060405180830381600087803b1515611d2657600080fd5b6102c65a03f11515611d3757600080fd5b505050604051805190509050808015611d53575060018260ff16115b15611d5f578260010192505b8260ff16848360ff16600c81101515611d7457fe5b60200201510161ffff16945050505050919050565b600160a060020a03811660009081526015602052604081206003015481811115611e2a57600160a060020a0383166000908152601560205260408120600381019190915560040154611de1908263ffffffff611ad416565b600160a060020a03841660008181526015602052604090819020600401929092559082156108fc0290839051600060405180830381858888f193505050501515611e2a57600080fd5b92915050565b6000607a821015611e4d57611e466000836121f2565b9050610984565b60f4821015611e6457611e466001607a84036121f2565b610981600260f484036121f2565b6000806000806000806000808a60035460001480611eee5750611e976005600061101d565b8111158015611eee575060048054600160a060020a0333166000908152601560205260409020918201546003909201549091611eeb918491611edf919063ffffffff611ad416565b9063ffffffff611ad416565b11155b1515611ef957600080fd5b600160a060020a038b161515611f0e57600080fd5b6611c37937e080008c1015611f2257600080fd5b601154600160a060020a038c811691161415611f3d57600080fd5b30600160a060020a03168a600160a060020a03161415611f5c57600099505b6013805460128054600160a060020a0319808416600160a060020a038381169190911790955560118054928216838716179093558f85169116179055601854908216995016636352211e611faf42611b17565b60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611fee57600080fd5b6102c65a03f11515611fff57600080fd5b5050506040518051975061202d905060646120218e600563ffffffff61227916565b9063ffffffff611aee16565b95506120506120438d600463ffffffff611aee16565b8d9063ffffffff611b0516565b9450612072856120668e8963ffffffff611b0516565b9063ffffffff611b0516565b935061207d846122a4565b92508a600160a060020a031687600160a060020a031614156120ec576120a9858463ffffffff611ad416565b94506120bf856120668e8963ffffffff611b0516565b600160a060020a038c166000908152601560205260409020600501805460ff1916600117905593506120ff565b6120fc848463ffffffff611b0516565b93505b601254600160a060020a038c811691167ff48f5c6dcc828289ac34d56b5cf2f546c704cfa7bc3f513c21dbbf397c26dff88e60405190815260200160405180910390a3601754600160a060020a0316630d4d1513868d818e60006040516020015260405160e060020a63ffffffff8716028152600160a060020a039384166004820152602481019290925290911660448201526064016020604051808303818588803b15156121ad57600080fd5b6125ee5a03f115156121be57600080fd5b505050506040518051905091506121d58b8d6122eb565b6121e38685858e8c8c6123bd565b509a9950505050505050505050565b6000612272601960ff85166003811061220757fe5b0183815460018160011615610100020316600290048110151561222657fe5b8154600116156122455790600052602060002090602091828204019190065b90547f0100000000000000000000000000000000000000000000000000000000000000911a8102046126df565b9392505050565b60008083151561228c5760009150611ae7565b5082820282848281151561229c57fe5b0414611ae357fe5b60006122b76122b242611b17565b611e30565b600114156122d557611e46606461202184601963ffffffff61227916565b610981606461202184600a63ffffffff61227916565b60008054600160a060020a03848116911614806123155750601454600160a060020a038481169116145b1561231f576111e9565b600154821115612333576123338284612706565b601754600160a060020a03166370a082318460006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561238c57600080fd5b6102c65a03f1151561239d57600080fd5b5050506040518051905090506002548111156111e9576111e9818461294c565b6123c5612c0b565b60036040518059106123d45750595b90808252806020026020018201604052509050600160a060020a038316156124245761240c606461202188600a63ffffffff61227916565b8160028151811061241957fe5b602090810290910101525b601354600160a060020a0316156124635761244b606461202188601e63ffffffff61227916565b8160018151811061245857fe5b602090810290910101525b6124a48160028151811061247357fe5b906020019060200201516120668360018151811061248d57fe5b90602001906020020151899063ffffffff611b0516565b816000815181106124b157fe5b602090810290910101526124fd816002815181106124cb57fe5b90602001906020020151600160a060020a0385166000908152601560205260409020600301549063ffffffff611ad416565b600160a060020a0384166000908152601560205260409020600301556125678160018151811061252957fe5b9060200190602002015160156000601160025b0154600160a060020a031681526020810191909152604001600020600301549063ffffffff611ad416565b601354600160a060020a03166000908152601560205260408120600301919091556125af9082908151811061259857fe5b90602001906020020151601560006011600161253c565b601254600160a060020a03908116600090815260156020526040808220600301939093558054909116815220600401546125e99088611ad4565b60008054600160a060020a03908116825260156020526040909120600401919091558281169085161461265f57600160a060020a038216600090815260156020526040902060040154612642908663ffffffff611ad416565b600160a060020a0383166000908152601560205260409020600401555b600054600160a060020a031687156108fc0288604051600060405180830381858888f19350505050151561269257600080fd5b600160a060020a03828116908516146126d657600160a060020a03821685156108fc0286604051600060405180830381858888f1935050505015156126d657600080fd5b50505050505050565b6000603082101580156126f3575060398211155b1561098457600a028101602f1901919050565b6000806000612713612c46565b60039350839250600291505b60008210612788576005826003811061273457fe5b60020201548610612743578193505b6005826003811061275057fe5b6002020160010154600160a060020a039081169086161415612770578192505b81151561277c57612788565b6000199091019061271f565b60038410156129445760028310156128805785600584600381106127a857fe5b600202015583831461287b57600584600381106127c157fe5b600202016040805190810160405281548152600190910154600160a060020a031660208201529050600583600381106127f657fe5b600202016005856003811061280757fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a03909216919091179055806005846003811061284957fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b61293d565b600291505b838211156128f057600560001983016003811061289e57fe5b60020201600583600381106128af57fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190612885565b85600585600381106128fe57fe5b6002020155846005856003811061291157fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b6009546001555b505050505050565b6000806000612959612c46565b60039350839250600291505b600082106129ce57600b826003811061297a57fe5b60020201548610612989578193505b600b826003811061299657fe5b6002020160010154600160a060020a0390811690861614156129b6578192505b8115156129c2576129ce565b60001990910190612965565b6003841015612944576002831015612ac65785600b84600381106129ee57fe5b6002020155838314612ac157600b8460038110612a0757fe5b600202016040805190810160405281548152600190910154600160a060020a031660208201529050600b8360038110612a3c57fe5b60020201600b8560038110612a4d57fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a0390921691909117905580600b8460038110612a8f57fe5b600202018151815560208201516001919091018054600160a060020a031916600160a060020a03909216919091179055505b612b83565b600291505b83821115612b3657600b600019830160038110612ae457fe5b60020201600b8360038110612af557fe5b82546002919091029190910190815560019182015491018054600160a060020a031916600160a060020a039092169190911790556000199190910190612acb565b85600b8560038110612b4457fe5b600202015584600b8560038110612b5757fe5b6002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055505b5050600f5460025550505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612bd257805160ff1916838001178555612bff565b82800160010185558215612bff579182015b82811115612bff578251825591602001919060010190612be4565b50610b29929150612c5d565b60206040519081016040526000815290565b610180604051908101604052600c815b600081526000199091019060200181612c2d5790505090565b604080519081016040526000808252602082015290565b610a3091905b80821115610b295760008155600101612c635600a165627a7a723058202c516702a11bdf5bc4660b16a819234a09eb408072d554c0f54c17a5038ee61e0029
Swarm Source
bzzr://2c516702a11bdf5bc4660b16a819234a09eb408072d554c0f54c17a5038ee61e
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.