Overview
ETH Balance
0.0000000001 ETH
Eth Value
Less Than $0.01 (@ $2,684.08/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,178 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Contracts Mi... | 7071266 | 2226 days ago | IN | 0 ETH | 0.00046084 | ||||
Buy Booster | 7034996 | 2232 days ago | IN | 0.01 ETH | 0.00021199 | ||||
Buy Engineer | 7033488 | 2233 days ago | IN | 0.02 ETH | 0.00016025 | ||||
Buy Engineer | 7031921 | 2233 days ago | IN | 0 ETH | 0.00031035 | ||||
Buy Engineer | 7029939 | 2233 days ago | IN | 0 ETH | 0.00014995 | ||||
Buy Engineer | 7027095 | 2234 days ago | IN | 0.04 ETH | 0.00018939 | ||||
Buy Engineer | 7026369 | 2234 days ago | IN | 0.32 ETH | 0.00043706 | ||||
Buy Engineer | 7025825 | 2234 days ago | IN | 0 ETH | 0.00033124 | ||||
Buy Engineer | 7025813 | 2234 days ago | IN | 0.02 ETH | 0.00043706 | ||||
Buy Engineer | 7025670 | 2234 days ago | IN | 0.08 ETH | 0.00043706 | ||||
Buy Engineer | 7022312 | 2235 days ago | IN | 0 ETH | 0.00051053 | ||||
Buy Engineer | 7021626 | 2235 days ago | IN | 0.01 ETH | 0.00017706 | ||||
Buy Engineer | 7021426 | 2235 days ago | IN | 0 ETH | 0.00031035 | ||||
Buy Engineer | 7016854 | 2236 days ago | IN | 0.02 ETH | 0.00032897 | ||||
Buy Engineer | 7016842 | 2236 days ago | IN | 0 ETH | 0.00028843 | ||||
Buy Engineer | 7016832 | 2236 days ago | IN | 0.01 ETH | 0.00032897 | ||||
Buy Engineer | 7016825 | 2236 days ago | IN | 0.02 ETH | 0.00032897 | ||||
Buy Engineer | 7016794 | 2236 days ago | IN | 0.02 ETH | 0.00032897 | ||||
Buy Engineer | 7016783 | 2236 days ago | IN | 0.02 ETH | 0.00032897 | ||||
Buy Engineer | 7016773 | 2236 days ago | IN | 0.02 ETH | 0.00032897 | ||||
Buy Booster | 7016763 | 2236 days ago | IN | 0.01 ETH | 0.00021199 | ||||
Buy Engineer | 7012237 | 2237 days ago | IN | 0 ETH | 0.00057686 | ||||
Buy Engineer | 7012232 | 2237 days ago | IN | 0 ETH | 0.00028843 | ||||
Buy Engineer | 7012106 | 2237 days ago | IN | 0 ETH | 0.00028843 | ||||
Buy Booster | 7011517 | 2237 days ago | IN | 0.04 ETH | 0.00031052 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7582738 | 2135 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7476947 | 2151 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH | |||||
7392791 | 2164 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CryptoEngineer
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-21 */ pragma solidity ^0.4.24; library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev 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; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } } contract PullPayment { using SafeMath for uint256; mapping(address => uint256) public payments; uint256 public totalPayments; /** * @dev Withdraw accumulated balance, called by payee. */ function withdrawPayments() public { address payee = msg.sender; uint256 payment = payments[payee]; require(payment != 0); require(address(this).balance >= payment); totalPayments = totalPayments.sub(payment); payments[payee] = 0; payee.transfer(payment); } /** * @dev Called by the payer to store the sent amount as credit to be pulled. * @param dest The destination address of the funds. * @param amount The amount to transfer. */ function asyncSend(address dest, uint256 amount) internal { payments[dest] = payments[dest].add(amount); totalPayments = totalPayments.add(amount); } } contract CryptoMiningWarInterface { address public sponsor; address public administrator; mapping(address => PlayerData) public players; struct PlayerData { uint256 roundNumber; mapping(uint256 => uint256) minerCount; uint256 hashrate; uint256 crystals; uint256 lastUpdateTime; uint256 referral_count; uint256 noQuest; } function getHashratePerDay(address /*minerAddr*/) public pure returns (uint256 /*personalProduction*/) {} function addCrystal( address /*_addr*/, uint256 /*_value*/ ) public pure {} function subCrystal( address /*_addr*/, uint256 /*_value*/ ) public pure {} function fallback() public payable {} } interface MiniGameInterface { function isContractMiniGame() external pure returns( bool _isContractMiniGame ); function fallback() external payable; } contract CryptoEngineer is PullPayment{ // engineer info address public administrator; uint256 public prizePool = 0; uint256 public engineerRoundNumber = 0; uint256 public numberOfEngineer; uint256 public numberOfBoosts; address public gameSponsor; uint256 public gameSponsorPrice; uint256 private randNonce; uint256 constant public VIRUS_MINING_PERIOD = 86400; uint256 constant public VIRUS_NORMAL = 0; uint256 constant public HALF_TIME_ATK = 60 * 15; // mining war game infomation address public miningWarContractAddress; address public miningWarAdministrator; uint256 constant public CRTSTAL_MINING_PERIOD = 86400; uint256 constant public BASE_PRICE = 0.01 ether; CryptoMiningWarInterface public MiningWarContract; // engineer player information mapping(address => PlayerData) public players; // engineer boost information mapping(uint256 => BoostData) public boostData; // engineer information mapping(uint256 => EngineerData) public engineers; // engineer virut information mapping(uint256 => VirusData) public virus; // minigame info mapping(address => bool) public miniGames; struct PlayerData { uint256 engineerRoundNumber; mapping(uint256 => uint256) engineersCount; uint256 virusNumber; uint256 virusDefence; uint256 research; uint256 lastUpdateTime; uint256 nextTimeAtk; uint256 endTimeUnequalledDef; } struct BoostData { address owner; uint256 boostRate; uint256 basePrice; } struct EngineerData { uint256 basePrice; uint256 baseETH; uint256 baseResearch; uint256 limit; } struct VirusData { uint256 atk; uint256 def; } event eventEndAttack( address playerAtk, address playerDef, bool isWin, uint256 winCrystals, uint256 virusPlayerAtkDead, uint256 virusPlayerDefDead, uint256 timeAtk, uint256 engineerRoundNumber, uint256 atk, uint256 def // def of player ); modifier disableContract() { require(tx.origin == msg.sender); _; } modifier isAdministrator() { require(msg.sender == administrator); _; } modifier onlyContractsMiniGame() { require(miniGames[msg.sender] == true); _; } constructor() public { administrator = msg.sender; //default game sponsor gameSponsor = administrator; gameSponsorPrice = 0.32 ether; // set interface main contract miningWarContractAddress = address(0xf84c61bb982041c030b8580d1634f00fffb89059); MiningWarContract = CryptoMiningWarInterface(miningWarContractAddress); miningWarAdministrator = MiningWarContract.administrator(); numberOfEngineer = 8; numberOfBoosts = 5; // setting virusupd virus[VIRUS_NORMAL] = VirusData(1,1); // price crystals price ETH research limit engineers[0] = EngineerData(10, BASE_PRICE * 0, 10, 10 ); //lv1 engineers[1] = EngineerData(50, BASE_PRICE * 1, 200, 2 ); //lv2 engineers[2] = EngineerData(200, BASE_PRICE * 2, 800, 4 ); //lv3 engineers[3] = EngineerData(800, BASE_PRICE * 4, 3200, 8 ); //lv4 engineers[4] = EngineerData(3200, BASE_PRICE * 8, 9600, 16 ); //lv5 engineers[5] = EngineerData(12800, BASE_PRICE * 16, 38400, 32 ); //lv6 engineers[6] = EngineerData(102400, BASE_PRICE * 32, 204800, 64 ); //lv7 engineers[7] = EngineerData(819200, BASE_PRICE * 64, 819200, 65536); //lv8 initData(); } function () public payable { addPrizePool(msg.value); } function initData() private { //init booster data boostData[0] = BoostData(0x0, 150, BASE_PRICE * 1); boostData[1] = BoostData(0x0, 175, BASE_PRICE * 2); boostData[2] = BoostData(0x0, 200, BASE_PRICE * 4); boostData[3] = BoostData(0x0, 225, BASE_PRICE * 8); boostData[4] = BoostData(0x0, 250, BASE_PRICE * 16); } /** * @dev MainContract used this function to verify game's contract */ function isContractMiniGame() public pure returns( bool _isContractMiniGame ) { _isContractMiniGame = true; } /** * @dev Main Contract call this function to setup mini game. */ function setupMiniGame( uint256 /*_miningWarRoundNumber*/, uint256 /*_miningWarDeadline*/ ) public { } //-------------------------------------------------------------------------- // SETTING CONTRACT MINI GAME //-------------------------------------------------------------------------- function setContractsMiniGame( address _contractMiniGameAddress ) public isAdministrator { MiniGameInterface MiniGame = MiniGameInterface( _contractMiniGameAddress ); if( MiniGame.isContractMiniGame() == false ) { revert(); } miniGames[_contractMiniGameAddress] = true; } /** * @dev remove mini game contract from main contract * @param _contractMiniGameAddress mini game contract address */ function removeContractMiniGame(address _contractMiniGameAddress) public isAdministrator { miniGames[_contractMiniGameAddress] = false; } //@dev use this function in case of bug function upgrade(address addr) public { require(msg.sender == administrator); selfdestruct(addr); } //-------------------------------------------------------------------------- // BOOSTER //-------------------------------------------------------------------------- function buyBooster(uint256 idx) public payable { require(idx < numberOfBoosts); BoostData storage b = boostData[idx]; if (msg.value < b.basePrice || msg.sender == b.owner) { revert(); } address beneficiary = b.owner; uint256 devFeePrize = devFee(b.basePrice); distributedToOwner(devFeePrize); addMiningWarPrizePool(devFeePrize); addPrizePool(SafeMath.sub(msg.value, SafeMath.mul(devFeePrize,3))); updateVirus(msg.sender); if ( beneficiary != 0x0 ) { updateVirus(beneficiary); } // transfer ownership b.owner = msg.sender; } function getBoosterData(uint256 idx) public view returns (address _owner,uint256 _boostRate, uint256 _basePrice) { require(idx < numberOfBoosts); BoostData memory b = boostData[idx]; _owner = b.owner; _boostRate = b.boostRate; _basePrice = b.basePrice; } function hasBooster(address addr) public view returns (uint256 _boostIdx) { _boostIdx = 999; for(uint256 i = 0; i < numberOfBoosts; i++){ uint256 revert_i = numberOfBoosts - i - 1; if(boostData[revert_i].owner == addr){ _boostIdx = revert_i; break; } } } //-------------------------------------------------------------------------- // GAME SPONSOR //-------------------------------------------------------------------------- /** */ function becomeGameSponsor() public payable disableContract { uint256 gameSponsorPriceFee = SafeMath.div(SafeMath.mul(gameSponsorPrice, 150), 100); require(msg.value >= gameSponsorPriceFee); require(msg.sender != gameSponsor); // uint256 repayPrice = SafeMath.div(SafeMath.mul(gameSponsorPrice, 110), 100); gameSponsor.send(repayPrice); // add to prize pool addPrizePool(SafeMath.sub(msg.value, repayPrice)); // update game sponsor info gameSponsor = msg.sender; gameSponsorPrice = gameSponsorPriceFee; } /** * @dev add virus for player * @param _addr player address * @param _value number of virus */ function addVirus(address _addr, uint256 _value) public onlyContractsMiniGame { PlayerData storage p = players[_addr]; uint256 additionalVirus = SafeMath.mul(_value,VIRUS_MINING_PERIOD); p.virusNumber = SafeMath.add(p.virusNumber, additionalVirus); } /** * @dev subtract virus of player * @param _addr player address * @param _value number virus subtract */ function subVirus(address _addr, uint256 _value) public onlyContractsMiniGame { updateVirus(_addr); PlayerData storage p = players[_addr]; uint256 subtractVirus = SafeMath.mul(_value,VIRUS_MINING_PERIOD); if ( p.virusNumber < subtractVirus ) { revert(); } p.virusNumber = SafeMath.sub(p.virusNumber, subtractVirus); } /** * @dev additional time unequalled defence * @param _addr player address */ function setAtkNowForPlayer(address _addr) public onlyContractsMiniGame { PlayerData storage p = players[_addr]; p.nextTimeAtk = now; } function addTimeUnequalledDefence(address _addr, uint256 _value) public onlyContractsMiniGame { PlayerData storage p = players[_addr]; uint256 currentTimeUnequalled = p.endTimeUnequalledDef; if (currentTimeUnequalled < now) { currentTimeUnequalled = now; } p.endTimeUnequalledDef = SafeMath.add(currentTimeUnequalled, _value); } /** * @dev claim price pool to next new game * @param _addr mini game contract address * @param _value eth claim; */ function claimPrizePool(address _addr, uint256 _value) public onlyContractsMiniGame { require(prizePool > _value); prizePool = SafeMath.sub(prizePool, _value); MiniGameInterface MiniGame = MiniGameInterface( _addr ); MiniGame.fallback.value(_value)(); } //-------------------------------------------------------------------------- // WARS //-------------------------------------------------------------------------- function setVirusInfo(uint256 _atk, uint256 _def) public isAdministrator { VirusData storage v = virus[VIRUS_NORMAL]; v.atk = _atk; v.def = _def; } /** * @dev add virus defence * @param _value number of virus defence */ function addVirusDefence(uint256 _value) public disableContract { updateVirus(msg.sender); PlayerData storage p = players[msg.sender]; uint256 _virus = SafeMath.mul(_value,VIRUS_MINING_PERIOD); if ( p.virusNumber < _virus ) { revert(); } p.virusDefence = SafeMath.add(p.virusDefence, _virus); p.virusNumber = SafeMath.sub(p.virusNumber, _virus); } /** * @dev atk and def ramdom from 50% to 150% * @param _defAddress player address to attack * @param _value number of virus send to attack */ function attack( address _defAddress, uint256 _value) public disableContract { require(canAttack(msg.sender, _defAddress) == true); updateVirus(msg.sender); PlayerData storage pAtk = players[msg.sender]; PlayerData storage pDef = players[_defAddress]; uint256 virusAtk = SafeMath.mul(_value,VIRUS_MINING_PERIOD); if (pAtk.virusNumber < virusAtk) { revert(); } // current crystals of defence geater 5000 crystals if (calCurrentCrystals(_defAddress) < 5000) { revert(); } // virus normal info VirusData memory v = virus[VIRUS_NORMAL]; // ramdom attack and defence for players from 50% to 150% uint256 rateAtk = 50 + randomNumber(msg.sender, 100); uint256 rateDef = 50 + randomNumber(_defAddress, 100); // calculate attack of player attack and defence of player defence uint256 atk = SafeMath.div(SafeMath.mul(SafeMath.mul(virusAtk, v.atk), rateAtk), 100); uint256 def = SafeMath.div(SafeMath.mul(SafeMath.mul(pDef.virusDefence, v.def), rateDef), 100); bool isWin = false; uint256 virusPlayerAtkDead = 0; uint256 virusPlayerDefDead = 0; /** * @dev calculate virus dead in war */ // if attack > defense, sub virus of player atk and player def. // number virus for kin if (atk > def) { virusPlayerAtkDead = SafeMath.min(virusAtk, SafeMath.div(SafeMath.mul(def, 100), SafeMath.mul(v.atk, rateAtk))); virusPlayerDefDead = pDef.virusDefence; isWin = true; } /** * @dev update result of war and call end attack */ pAtk.virusNumber = SafeMath.sub(pAtk.virusNumber, virusPlayerAtkDead); pDef.virusDefence = SafeMath.sub(pDef.virusDefence, virusPlayerDefDead); //update player attack pAtk.nextTimeAtk = now + HALF_TIME_ATK; endAttack(msg.sender,_defAddress,isWin, virusPlayerAtkDead, virusPlayerDefDead, atk, def); } /** * @dev check player can atk or not * @param _atkAddress player address attack * @param _defAddress player address defence */ function canAttack(address _atkAddress, address _defAddress) public view returns(bool _canAtk) { if ( _atkAddress != _defAddress && players[_atkAddress].nextTimeAtk <= now && players[_defAddress].endTimeUnequalledDef < now ) { _canAtk = true; } } /** * @dev result of war * @param _atkAddress player address attack * @param _defAddress player address defence */ function endAttack( address _atkAddress, address _defAddress, bool _isWin, uint256 _virusPlayerAtkDead, uint256 _virusPlayerDefDead, uint256 _atk, uint256 _def ) private { uint256 winCrystals; if ( _isWin == true ) { uint256 pDefCrystals = calCurrentCrystals(_defAddress); // subtract random 10% to 50% current crystals of player defence uint256 rate =10 + randomNumber(_defAddress, 40); winCrystals = SafeMath.div(SafeMath.mul(pDefCrystals,rate),100); if (winCrystals > 0) { MiningWarContract.subCrystal(_defAddress, winCrystals); MiningWarContract.addCrystal(_atkAddress, winCrystals); } } emit eventEndAttack(_atkAddress, _defAddress, _isWin, winCrystals, _virusPlayerAtkDead, _virusPlayerDefDead, now, engineerRoundNumber, _atk, _def); } //-------------------------------------------------------------------------- // PLAYERS //-------------------------------------------------------------------------- /** */ function buyEngineer(uint256[] engineerNumbers) public payable disableContract { require(engineerNumbers.length == numberOfEngineer); updateVirus(msg.sender); PlayerData storage p = players[msg.sender]; uint256 priceCrystals = 0; uint256 priceEth = 0; uint256 research = 0; for (uint256 engineerIdx = 0; engineerIdx < numberOfEngineer; engineerIdx++) { uint256 engineerNumber = engineerNumbers[engineerIdx]; EngineerData memory e = engineers[engineerIdx]; // require for engineerNumber if(engineerNumber > e.limit || engineerNumber < 0) { revert(); } // engineer you want buy if (engineerNumber > 0) { uint256 currentEngineerCount = p.engineersCount[engineerIdx]; // update player data p.engineersCount[engineerIdx] = SafeMath.min(e.limit, SafeMath.add(p.engineersCount[engineerIdx], engineerNumber)); // calculate no research you want buy research = SafeMath.add(research, SafeMath.mul(SafeMath.sub(p.engineersCount[engineerIdx],currentEngineerCount), e.baseResearch)); // calculate price crystals and eth you will pay priceCrystals = SafeMath.add(priceCrystals, SafeMath.mul(e.basePrice, engineerNumber)); priceEth = SafeMath.add(priceEth, SafeMath.mul(e.baseETH, engineerNumber)); } } // check price eth if (priceEth < msg.value) { revert(); } uint256 devFeePrize = devFee(priceEth); distributedToOwner(devFeePrize); addMiningWarPrizePool(devFeePrize); addPrizePool(SafeMath.sub(msg.value, SafeMath.mul(devFeePrize,3))); // pay and update MiningWarContract.subCrystal(msg.sender, priceCrystals); updateResearch(msg.sender, research); } /** * @dev update virus for player * @param _addr player address */ function updateVirus(address _addr) private { if (players[_addr].engineerRoundNumber != engineerRoundNumber) { return resetPlayer(_addr); } PlayerData storage p = players[_addr]; p.virusNumber = calculateCurrentVirus(_addr); p.lastUpdateTime = now; } function calculateCurrentVirus(address _addr) public view returns(uint256 _currentVirus) { PlayerData memory p = players[_addr]; uint256 secondsPassed = SafeMath.sub(now, p.lastUpdateTime); uint256 researchPerDay = getResearchPerDay(_addr); _currentVirus = p.virusNumber; if (researchPerDay > 0) { _currentVirus = SafeMath.add(_currentVirus, SafeMath.mul(researchPerDay, secondsPassed)); } } /** * @dev reset player data * @param _addr player address */ function resetPlayer(address _addr) private { require(players[_addr].engineerRoundNumber != engineerRoundNumber); PlayerData storage p = players[_addr]; p.engineerRoundNumber = engineerRoundNumber; p.virusNumber = 0; p.virusDefence = 0; p.research = 0; p.lastUpdateTime = now; p.nextTimeAtk = now; p.endTimeUnequalledDef = now; // reset player engineer data for ( uint256 idx = 0; idx < numberOfEngineer; idx++ ) { p.engineersCount[idx] = 0; } } /** * @dev update research for player * @param _addr player address * @param _research number research want to add */ function updateResearch(address _addr, uint256 _research) private { PlayerData storage p = players[_addr]; p.research = SafeMath.add(p.research, _research); } function getResearchPerDay(address _addr) public view returns( uint256 _researchPerDay) { PlayerData memory p = players[_addr]; _researchPerDay = p.research; uint256 boosterIdx = hasBooster(_addr); if (boosterIdx != 999) { BoostData memory b = boostData[boosterIdx]; _researchPerDay = SafeMath.div(SafeMath.mul(_researchPerDay, b.boostRate), 100); } } /** * @dev get player data * @param _addr player address */ function getPlayerData(address _addr) public view returns( uint256 _engineerRoundNumber, uint256 _virusNumber, uint256 _virusDefence, uint256 _research, uint256 _researchPerDay, uint256 _lastUpdateTime, uint256[8] _engineersCount, uint256 _nextTimeAtk, uint256 _endTimeUnequalledDef ) { PlayerData storage p = players[_addr]; for ( uint256 idx = 0; idx < numberOfEngineer; idx++ ) { _engineersCount[idx] = p.engineersCount[idx]; } _engineerRoundNumber = p.engineerRoundNumber; _virusNumber = SafeMath.div(p.virusNumber, VIRUS_MINING_PERIOD); _virusDefence = SafeMath.div(p.virusDefence, VIRUS_MINING_PERIOD); _nextTimeAtk = p.nextTimeAtk; _lastUpdateTime = p.lastUpdateTime; _endTimeUnequalledDef = p.endTimeUnequalledDef; _research = p.research; _researchPerDay = getResearchPerDay(_addr); } //-------------------------------------------------------------------------- // INTERNAL //-------------------------------------------------------------------------- function addPrizePool(uint256 _value) private { prizePool = SafeMath.add(prizePool, _value); } /** * @dev add 5% value of transaction payable */ function addMiningWarPrizePool(uint256 _value) private { MiningWarContract.fallback.value(_value)(); } /** * @dev calculate current crystals of player * @param _addr player address */ function calCurrentCrystals(address _addr) public view returns(uint256 _currentCrystals) { uint256 lastUpdateTime; (,, _currentCrystals, lastUpdateTime) = getMiningWarPlayerData(_addr); uint256 hashratePerDay = getHashratePerDay(_addr); uint256 secondsPassed = SafeMath.sub(now, lastUpdateTime); if (hashratePerDay > 0) { _currentCrystals = SafeMath.add(_currentCrystals, SafeMath.mul(hashratePerDay, secondsPassed)); } _currentCrystals = SafeMath.div(_currentCrystals, CRTSTAL_MINING_PERIOD); } function devFee(uint256 _amount) private pure returns(uint256) { return SafeMath.div(SafeMath.mul(_amount, 5), 100); } /** * @dev with transaction payable send 5% value for admin and sponsor * @param _value fee */ function distributedToOwner(uint256 _value) private { gameSponsor.send(_value); miningWarAdministrator.send(_value); } function randomNumber(address _addr, uint256 _maxNumber) private returns(uint256) { randNonce = randNonce + 1; return uint256(keccak256(abi.encodePacked(now, _addr, randNonce))) % _maxNumber; } function getMiningWarPlayerData(address _addr) private view returns(uint256 _roundNumber, uint256 _hashrate, uint256 _crytals, uint256 _lastUpdateTime) { (_roundNumber,_hashrate,_crytals,_lastUpdateTime,,)= MiningWarContract.players(_addr); } function getHashratePerDay(address _addr) private view returns(uint256) { return MiningWarContract.getHashratePerDay(_addr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"calculateCurrentVirus","outputs":[{"name":"_currentVirus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getResearchPerDay","outputs":[{"name":"_researchPerDay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"engineerRoundNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerData","outputs":[{"name":"_engineerRoundNumber","type":"uint256"},{"name":"_virusNumber","type":"uint256"},{"name":"_virusDefence","type":"uint256"},{"name":"_research","type":"uint256"},{"name":"_researchPerDay","type":"uint256"},{"name":"_lastUpdateTime","type":"uint256"},{"name":"_engineersCount","type":"uint256[8]"},{"name":"_nextTimeAtk","type":"uint256"},{"name":"_endTimeUnequalledDef","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isContractMiniGame","outputs":[{"name":"_isContractMiniGame","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"idx","type":"uint256"}],"name":"getBoosterData","outputs":[{"name":"_owner","type":"address"},{"name":"_boostRate","type":"uint256"},{"name":"_basePrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"engineers","outputs":[{"name":"basePrice","type":"uint256"},{"name":"baseETH","type":"uint256"},{"name":"baseResearch","type":"uint256"},{"name":"limit","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"engineerNumbers","type":"uint256[]"}],"name":"buyEngineer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_atk","type":"uint256"},{"name":"_def","type":"uint256"}],"name":"setVirusInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miningWarAdministrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_atkAddress","type":"address"},{"name":"_defAddress","type":"address"}],"name":"canAttack","outputs":[{"name":"_canAtk","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_defAddress","type":"address"},{"name":"_value","type":"uint256"}],"name":"attack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"addVirusDefence","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miningWarContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfEngineer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prizePool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameSponsorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"claimPrizePool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setAtkNowForPlayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contractMiniGameAddress","type":"address"}],"name":"setContractsMiniGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"subVirus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"calCurrentCrystals","outputs":[{"name":"_currentCrystals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"virus","outputs":[{"name":"atk","type":"uint256"},{"name":"def","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contractMiniGameAddress","type":"address"}],"name":"removeContractMiniGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"boostData","outputs":[{"name":"owner","type":"address"},{"name":"boostRate","type":"uint256"},{"name":"basePrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"hasBooster","outputs":[{"name":"_boostIdx","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"miniGames","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameSponsor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"setupMiniGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MiningWarContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CRTSTAL_MINING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idx","type":"uint256"}],"name":"buyBooster","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"becomeGameSponsor","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"VIRUS_MINING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"players","outputs":[{"name":"engineerRoundNumber","type":"uint256"},{"name":"virusNumber","type":"uint256"},{"name":"virusDefence","type":"uint256"},{"name":"research","type":"uint256"},{"name":"lastUpdateTime","type":"uint256"},{"name":"nextTimeAtk","type":"uint256"},{"name":"endTimeUnequalledDef","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfBoosts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"addVirus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"addTimeUnequalledDefence","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"administrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HALF_TIME_ATK","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BASE_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VIRUS_NORMAL","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":false,"name":"playerAtk","type":"address"},{"indexed":false,"name":"playerDef","type":"address"},{"indexed":false,"name":"isWin","type":"bool"},{"indexed":false,"name":"winCrystals","type":"uint256"},{"indexed":false,"name":"virusPlayerAtkDead","type":"uint256"},{"indexed":false,"name":"virusPlayerDefDead","type":"uint256"},{"indexed":false,"name":"timeAtk","type":"uint256"},{"indexed":false,"name":"engineerRoundNumber","type":"uint256"},{"indexed":false,"name":"atk","type":"uint256"},{"indexed":false,"name":"def","type":"uint256"}],"name":"eventEndAttack","type":"event"}]
Contract Creation Code
6080604052600060035560006004553480156200001b57600080fd5b5060028054600160a060020a0319908116331791829055600780548216600160a060020a03938416179055670470de4df8200000600855600a8054821673f84c61bb982041c030b8580d1634f00fffb890591790819055600c80549092169083161790819055604080517ff53d0a8e0000000000000000000000000000000000000000000000000000000081529051919092169163f53d0a8e9160048083019260209291908290030181600087803b158015620000d757600080fd5b505af1158015620000ec573d6000803e3d6000fd5b505050506040513d60208110156200010357600080fd5b5051600b8054600160a060020a031916600160a060020a03909216919091179055600860058181556006818155604080518082018252600180825260208083018281526000808052601080845294517f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015590517f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0255845160808082018752600a8083528285018481528389018281526060808601938452868052600f80895295517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3755591517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37655517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3775590517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec378558751808301895260328152662386f26fc1000081870190815260c8828b0181815260028486018181529a8952878a5293517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f5591517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f8905590517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f8915596517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f8925588518084018a5296875266470de4df820000878701908152610320888b0181815260048a8601818152948952878a5299517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead5591517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeae5590517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeaf5590517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeb05588518084018a52908152668e1bc9bf040000818701908152610c80828b018181528385019e8f526003885286895292517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc82968285590517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc82968295590517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682a559a517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682b55875180830189529a8b5267011c37937e0800008b86019081526125808c8a019081528c83019889529685528386529a517f367ccd2d0ac16bf7110a5dffe0801fdc9452a95a1adb7e1a12fe97dd3e9a4edd5599517f367ccd2d0ac16bf7110a5dffe0801fdc9452a95a1adb7e1a12fe97dd3e9a4ede5593517f367ccd2d0ac16bf7110a5dffe0801fdc9452a95a1adb7e1a12fe97dd3e9a4edf5593517f367ccd2d0ac16bf7110a5dffe0801fdc9452a95a1adb7e1a12fe97dd3e9a4ee0558451808401865261320081526702386f26fc100000818401908152619600828801908152828b0185815299845286855291517f6bda57492eba051cb4a12a1e19df47c9755d78165341d4009b1d09b3f361620455517f6bda57492eba051cb4a12a1e19df47c9755d78165341d4009b1d09b3f361620555517f6bda57492eba051cb4a12a1e19df47c9755d78165341d4009b1d09b3f36162065595517f6bda57492eba051cb4a12a1e19df47c9755d78165341d4009b1d09b3f36162075583518083018552620190008152670470de4df820000081830190815262032000828701908152828a0187815297895285845291517fb5a1e7cda73b1608e93d4d50ab796c3d35aa6216cb006a1f920df154d13ff61855517fb5a1e7cda73b1608e93d4d50ab796c3d35aa6216cb006a1f920df154d13ff61955517fb5a1e7cda73b1608e93d4d50ab796c3d35aa6216cb006a1f920df154d13ff61a5593517fb5a1e7cda73b1608e93d4d50ab796c3d35aa6216cb006a1f920df154d13ff61b5582519081018352620c80008082526708e1bc9bf0400000828601908152938201908152620100009682019687526007909552925290517f73dfc495eb54bd6713ffc079b9f5e40f2fecd3793d143759ba0128fbedb4025455517f73dfc495eb54bd6713ffc079b9f5e40f2fecd3793d143759ba0128fbedb4025555517f73dfc495eb54bd6713ffc079b9f5e40f2fecd3793d143759ba0128fbedb4025655517f73dfc495eb54bd6713ffc079b9f5e40f2fecd3793d143759ba0128fbedb40257556200079d640100000000620007a3810204565b62000ad4565b6040805160608082018352600080835260966020808501918252662386f26fc10000858701908152838052600e80835295517fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054600160a060020a0319908116600160a060020a039384161790915593517fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d5590517fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881e558651808601885284815260af81840190815266470de4df820000828a019081526001875288855291517fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820780548716918516919091179055517fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820855517fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be958209558651808601885284815260c8818401908152668e1bc9bf040000828a019081526002875288855291517f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f048180548716918516919091179055517f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f048255517f9adb202b1492743bc00c81d33cdc6423fa8c79109027eb6a845391e8fc1f0483558651808601885284815260e181840190815267011c37937e080000828a019081526003875288855291517fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c90814480548716918516919091179055517fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c90814555517fe0283e559c29e31ee7f56467acc9dd307779c843a883aeeb3bf5c6128c908146558651948501875283855260fa8583019081526702386f26fc100000978601978852600490945294905291517fa1d6913cd9e08c872be3e7525cca82e4fc0fc298a783f19022be725b19be685a80549093169316929092179055517fa1d6913cd9e08c872be3e7525cca82e4fc0fc298a783f19022be725b19be685b55517fa1d6913cd9e08c872be3e7525cca82e4fc0fc298a783f19022be725b19be685c55565b611fd58062000ae46000396000f3006080604052600436106102155763ffffffff60e060020a6000350416625b448781146102205780630900f01014610247578063207a6c33146102685780632326faf914610289578063246bb555146102aa5780632aa531d9146102bf5780633281d5761461035357806339901be81461037c5780633dc20fff146103bc5780634b9c78e5146103fa5780634bbb58b2146104425780634cb60bc51461045d5780635166cf3d1461048e57806352fba25c146104b557806358eafc37146104d957806359a02652146104f15780636103d70b14610506578063691b65831461051b578063719ce73e14610530578063742609ce146105455780637baf71f91461055a5780637f3e4d1b1461057e57806384ffcb5d1461059f578063920775d4146105c057806395360a02146105e45780639c744d17146106055780639ff12bba14610636578063ac5b876c14610657578063ad5b71891461066f578063b239dac614610690578063b3140ac3146106b1578063be7ccd7e146106c6578063ca2cef51146106e1578063cee0b4fe146106f6578063d223926f1461070b578063da4a76c014610716578063e12936d0146106f6578063e2982c211461071e578063e2eb41ff1461073f578063eafddc4114610798578063ec6f772d146107ad578063f0af0844146107d1578063f53d0a8e146107f5578063f85033ac1461080a578063f86325ed1461081f578063f94b965f14610834575b61021e34610849565b005b34801561022c57600080fd5b5061023561085b565b60408051918252519081900360200190f35b34801561025357600080fd5b5061021e600160a060020a0360043516610861565b34801561027457600080fd5b50610235600160a060020a0360043516610884565b34801561029557600080fd5b50610235600160a060020a0360043516610953565b3480156102b657600080fd5b50610235610a41565b3480156102cb57600080fd5b506102e0600160a060020a0360043516610a47565b604051808a815260200189815260200188815260200187815260200186815260200185815260200184600860200280838360005b8381101561032c578181015183820152602001610314565b50505050905001838152602001828152602001995050505050505050505060405180910390f35b34801561035f57600080fd5b50610368610b0b565b604080519115158252519081900360200190f35b34801561038857600080fd5b50610394600435610b10565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156103c857600080fd5b506103d4600435610b73565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6040805160206004803580820135838102808601850190965280855261021e95369593946024949385019291829185019084908082843750949750610b9a9650505050505050565b34801561044e57600080fd5b5061021e600435602435610de9565b34801561046957600080fd5b50610472610e56565b60408051600160a060020a039092168252519081900360200190f35b34801561049a57600080fd5b50610368600160a060020a0360043581169060243516610e65565b3480156104c157600080fd5b5061021e600160a060020a0360043516602435610ed9565b3480156104e557600080fd5b5061021e6004356110f4565b3480156104fd57600080fd5b5061047261116c565b34801561051257600080fd5b5061021e61117b565b34801561052757600080fd5b50610235611204565b34801561053c57600080fd5b5061023561120a565b34801561055157600080fd5b50610235611210565b34801561056657600080fd5b5061021e600160a060020a0360043516602435611216565b34801561058a57600080fd5b5061021e600160a060020a03600435166112b6565b3480156105ab57600080fd5b5061021e600160a060020a03600435166112f8565b3480156105cc57600080fd5b5061021e600160a060020a03600435166024356113af565b3480156105f057600080fd5b50610235600160a060020a0360043516611431565b34801561061157600080fd5b5061061d600435611487565b6040805192835260208301919091528051918290030190f35b34801561064257600080fd5b5061021e600160a060020a03600435166114a0565b34801561066357600080fd5b506103946004356114d8565b34801561067b57600080fd5b50610235600160a060020a0360043516611503565b34801561069c57600080fd5b50610368600160a060020a036004351661155b565b3480156106bd57600080fd5b50610472611570565b3480156106d257600080fd5b5061021e60043560243561157f565b3480156106ed57600080fd5b50610472611583565b34801561070257600080fd5b50610235611592565b61021e600435611599565b61021e61166a565b34801561072a57600080fd5b50610235600160a060020a036004351661171d565b34801561074b57600080fd5b50610760600160a060020a036004351661172f565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156107a457600080fd5b5061023561176c565b3480156107b957600080fd5b5061021e600160a060020a0360043516602435611772565b3480156107dd57600080fd5b5061021e600160a060020a03600435166024356117cc565b34801561080157600080fd5b50610472611831565b34801561081657600080fd5b50610235611840565b34801561082b57600080fd5b50610235611846565b34801561084057600080fd5b50610235611851565b61085560035482611856565b60035550565b60015481565b600254600160a060020a0316331461087857600080fd5b80600160a060020a0316ff5b600061088e611ee0565b600080600d600086600160a060020a0316600160a060020a0316815260200190815260200160002060e060405190810160405290816000820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509250610918428460800151611870565b915061092385610953565b905082602001519350600081111561094b57610948846109438385611882565b611856565b93505b505050919050565b600061095d611ee0565b6000610967611f1e565b600160a060020a0385166000908152600d6020908152604091829020825160e0810184528154815260028201549281019290925260038101549282019290925260048201546060820181905260058301546080830152600683015460a083015260079092015460c082015290945092506109e085611503565b91506103e7821461094b57506000818152600e602090815260409182902082516060810184528154600160a060020a0316815260018201549281018390526002909101549281019290925261094890610a3a908690611882565b60646118ad565b60045481565b600080600080600080610a58611f49565b600160a060020a0388166000908152600d602052604081208190815b600554811015610aa8576000818152600183016020526040902054858260088110610a9b57fe5b6020020152600101610a74565b81600001549a50610ac08260020154620151806118ad565b9950610ad38260030154620151806118ad565b985081600601549350816005015495508160070154925081600401549750610afa8c610953565b965050509193959799909294969850565b600190565b6000806000610b1d611f1e565b6006548510610b2b57600080fd5b505050600091825250600e602090815260409182902082516060810184528154600160a060020a03168082526001830154938201849052600290920154930183905292909190565b600f6020526000908152604090208054600182015460028301546003909301549192909184565b600080600080600080610bab611f69565b600080323314610bba57600080fd5b6005548a5114610bc957600080fd5b610bd2336118c4565b336000908152600d60205260408120995097508796508695508594505b600554851015610d09578985815181101515610c0757fe5b60209081029091018101516000878152600f83526040908190208151608081018352815481526001820154948101949094526002810154918401919091526003015460608301819052909550909350841180610c635750600084105b15610c6d57600080fd5b6000841115610cfe57600085815260018a0160205260409020546060840151909250610ca290610c9d8487611856565b611926565b600086815260018b0160205260409020819055610cd390879061094390610cc99086611870565b8660400151611882565b9550610ce788610943856000015187611882565b9750610cfb87610943856020015187611882565b96505b600190940193610bef565b34871015610d1657600080fd5b610d1f8761193e565b9050610d2a8161194e565b610d33816119a3565b610d4f610d4a34610d45846003611882565b611870565b610849565b600c54604080517fb04eb639000000000000000000000000000000000000000000000000000000008152336004820152602481018b90529051600160a060020a039092169163b04eb6399160448082019260009290919082900301818387803b158015610dbb57600080fd5b505af1158015610dcf573d6000803e3d6000fd5b50505050610ddd3387611a12565b50505050505050505050565b600254600090600160a060020a03163314610e0357600080fd5b506000805260106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb01919091557f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0255565b600b54600160a060020a031681565b600081600160a060020a031683600160a060020a031614158015610ea45750600160a060020a0383166000908152600d60205260409020600601544210155b8015610eca5750600160a060020a0382166000908152600d602052604090206007015442115b15610ed3575060015b92915050565b6000806000610ee6611f92565b6000808080808080323314610efa57600080fd5b610f04338e610e65565b1515600114610f1257600080fd5b610f1b336118c4565b600d600033600160a060020a0316600160a060020a031681526020019081526020016000209a50600d60008e600160a060020a0316600160a060020a031681526020019081526020016000209950610f768c62015180611882565b9850888b600201541015610f8957600080fd5b611388610f958e611431565b1015610fa057600080fd5b6000805260106020908152604080518082019091527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015481527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb025491810191909152975061100f336064611a43565b603201965061101f8d6064611a43565b603201955061103e610a3a6110388b8b60000151611882565b89611882565b945061105e610a3a6110588c600301548b60200151611882565b88611882565b9350600092506000915060009050838511156110a55761109789610c9d611086876064611882565b8b51611092908c611882565b6118ad565b915089600301549050600192505b6110b38b6002015483611870565b60028c015560038a01546110c79082611870565b60038b0155426103840160068c01556110e5338e8585858a8a611b12565b50505050505050505050505050565b60008032331461110357600080fd5b61110c336118c4565b336000908152600d60205260409020915061112a8362015180611882565b9050808260020154101561113d57600080fd5b61114b826003015482611856565b6003830155600282015461115f9082611870565b8260020181905550505050565b600a54600160a060020a031681565b3360008181526020819052604090205480151561119757600080fd5b30318111156111a557600080fd5b6001546111b8908263ffffffff61187016565b600155600160a060020a0382166000818152602081905260408082208290555183156108fc0291849190818181858888f193505050501580156111ff573d6000803e3d6000fd5b505050565b60055481565b60035481565b60085481565b3360009081526011602052604081205460ff16151560011461123757600080fd5b600354821061124557600080fd5b61125160035483611870565b60038190555082905080600160a060020a031663552079dc836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561129857600080fd5b505af11580156112ac573d6000803e3d6000fd5b5050505050505050565b3360009081526011602052604081205460ff1615156001146112d757600080fd5b50600160a060020a03166000908152600d6020526040902042600690910155565b600254600090600160a060020a0316331461131257600080fd5b81905080600160a060020a0316633281d5766040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561135357600080fd5b505af1158015611367573d6000803e3d6000fd5b505050506040513d602081101561137d57600080fd5b5051151561138a57600080fd5b50600160a060020a03166000908152601160205260409020805460ff19166001179055565b33600090815260116020526040812054819060ff1615156001146113d257600080fd5b6113db846118c4565b600160a060020a0384166000908152600d6020526040902091506114028362015180611882565b9050808260020154101561141557600080fd5b611423826002015482611870565b826002018190555050505050565b60008060008061144085611cee565b90965094506114529150869050611daa565b915061145e4284611870565b9050600082111561147a57611477846109438484611882565b93505b61094884620151806118ad565b6010602052600090815260409020805460019091015482565b600254600160a060020a031633146114b757600080fd5b600160a060020a03166000908152601160205260409020805460ff19169055565b600e60205260009081526040902080546001820154600290920154600160a060020a03909116919083565b6103e76000805b6006548210156115545750600654819003600019016000818152600e6020526040902054600160a060020a038581169116141561154957809250611554565b60019091019061150a565b5050919050565b60116020526000908152604090205460ff1681565b600754600160a060020a031681565b5050565b600c54600160a060020a031681565b6201518081565b6000806000600654841015156115ae57600080fd5b6000848152600e6020526040902060028101549093503410806115da57508254600160a060020a031633145b156115e457600080fd5b82546002840154600160a060020a0390911692506116019061193e565b905061160c8161194e565b611615816119a3565b611627610d4a34610d45846003611882565b611630336118c4565b600160a060020a0382161561164857611648826118c4565b5050805473ffffffffffffffffffffffffffffffffffffffff19163317905550565b60008032331461167957600080fd5b611689610a3a6008546096611882565b91503482111561169857600080fd5b600754600160a060020a03163314156116b057600080fd5b6116c0610a3a600854606e611882565b600754604051919250600160a060020a03169082156108fc029083906000818181858888f19350505050506116f8610d4a3483611870565b506007805473ffffffffffffffffffffffffffffffffffffffff191633179055600855565b60006020819052908152604090205481565b600d602052600090815260409020805460028201546003830154600484015460058501546006860154600790960154949593949293919290919087565b60065481565b33600090815260116020526040812054819060ff16151560011461179557600080fd5b600160a060020a0384166000908152600d6020526040902091506117bc8362015180611882565b9050611423826002015482611856565b33600090815260116020526040812054819060ff1615156001146117ef57600080fd5b5050600160a060020a0382166000908152600d602052604090206007810154428110156118195750425b6118238184611856565b826007018190555050505050565b600254600160a060020a031681565b61038481565b662386f26fc1000081565b600081565b60008282018381101561186557fe5b8091505b5092915050565b60008282111561187c57fe5b50900390565b6000808315156118955760009150611869565b508282028284828115156118a557fe5b041461186557fe5b60008082848115156118bb57fe5b04949350505050565b600454600160a060020a0382166000908152600d60205260408120549091146118f5576118f082611e47565b61157f565b50600160a060020a0381166000908152600d6020526040902061191782610884565b60028201554260058201555050565b60008183106119355781611937565b825b9392505050565b6000610ed3610a3a836005611882565b600754604051600160a060020a039091169082156108fc029083906000818181858888f15050600b54604051600160a060020a03909116935084156108fc0292508491506000818181858888f1505050505050565b600c60009054906101000a9004600160a060020a0316600160a060020a031663552079dc826040518263ffffffff1660e060020a0281526004016000604051808303818588803b1580156119f657600080fd5b505af1158015611a0a573d6000803e3d6000fd5b505050505050565b600160a060020a0382166000908152600d602052604090206004810154611a399083611856565b6004909101555050565b60006009546001016009819055508142846009546040516020018084815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310611ad45780518252601f199092019160209182019101611ab5565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515611b0a57fe5b069392505050565b6000808060018815151415611c6157611b2a89611431565b9150611b37896028611a43565b600a019050611b49610a3a8383611882565b92506000831115611c6157600c54604080517fb04eb639000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830152602482018790529151919092169163b04eb63991604480830192600092919082900301818387803b158015611bc257600080fd5b505af1158015611bd6573d6000803e3d6000fd5b5050600c54604080517ff6e212ea000000000000000000000000000000000000000000000000000000008152600160a060020a038f8116600483015260248201899052915191909216935063f6e212ea9250604480830192600092919082900301818387803b158015611c4857600080fd5b505af1158015611c5c573d6000803e3d6000fd5b505050505b60045460408051600160a060020a03808e1682528c1660208201528a15158183015260608101869052608081018a905260a081018990524260c082015260e081019290925261010082018790526101208201869052517f36c6d46925dde3169726ae25f960a7d13b0e117e452f43673ba3529c27cd5899918190036101400190a150505050505050505050565b600c54604080517fe2eb41ff000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093849384938493919092169163e2eb41ff9160248083019260c092919082900301818787803b158015611d5e57600080fd5b505af1158015611d72573d6000803e3d6000fd5b505050506040513d60c0811015611d8857600080fd5b5080516020820151604083015160609093015191989097509195509350915050565b600c54604080517f2243fb15000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015291516000939290921691632243fb159160248082019260209290919082900301818787803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b505192915050565b600454600160a060020a0382166000908152600d6020526040812054909182911415611e7257600080fd5b5050600160a060020a0381166000908152600d60205260408120600480548255600282018390556003820183905581018290554260058201819055600682018190556007820155905b6005548110156111ff5760008181526001808401602052604082209190915501611ebb565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000600160a060020a0316815260200160008152602001600081525090565b610100604051908101604052806008906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6040805180820190915260008082526020820152905600a165627a7a72305820a64ce8b681b3b7ef5c3dacf2430a77d102547c666093c10c4346e5ca65d28b4d0029
Deployed Bytecode
0x6080604052600436106102155763ffffffff60e060020a6000350416625b448781146102205780630900f01014610247578063207a6c33146102685780632326faf914610289578063246bb555146102aa5780632aa531d9146102bf5780633281d5761461035357806339901be81461037c5780633dc20fff146103bc5780634b9c78e5146103fa5780634bbb58b2146104425780634cb60bc51461045d5780635166cf3d1461048e57806352fba25c146104b557806358eafc37146104d957806359a02652146104f15780636103d70b14610506578063691b65831461051b578063719ce73e14610530578063742609ce146105455780637baf71f91461055a5780637f3e4d1b1461057e57806384ffcb5d1461059f578063920775d4146105c057806395360a02146105e45780639c744d17146106055780639ff12bba14610636578063ac5b876c14610657578063ad5b71891461066f578063b239dac614610690578063b3140ac3146106b1578063be7ccd7e146106c6578063ca2cef51146106e1578063cee0b4fe146106f6578063d223926f1461070b578063da4a76c014610716578063e12936d0146106f6578063e2982c211461071e578063e2eb41ff1461073f578063eafddc4114610798578063ec6f772d146107ad578063f0af0844146107d1578063f53d0a8e146107f5578063f85033ac1461080a578063f86325ed1461081f578063f94b965f14610834575b61021e34610849565b005b34801561022c57600080fd5b5061023561085b565b60408051918252519081900360200190f35b34801561025357600080fd5b5061021e600160a060020a0360043516610861565b34801561027457600080fd5b50610235600160a060020a0360043516610884565b34801561029557600080fd5b50610235600160a060020a0360043516610953565b3480156102b657600080fd5b50610235610a41565b3480156102cb57600080fd5b506102e0600160a060020a0360043516610a47565b604051808a815260200189815260200188815260200187815260200186815260200185815260200184600860200280838360005b8381101561032c578181015183820152602001610314565b50505050905001838152602001828152602001995050505050505050505060405180910390f35b34801561035f57600080fd5b50610368610b0b565b604080519115158252519081900360200190f35b34801561038857600080fd5b50610394600435610b10565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156103c857600080fd5b506103d4600435610b73565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6040805160206004803580820135838102808601850190965280855261021e95369593946024949385019291829185019084908082843750949750610b9a9650505050505050565b34801561044e57600080fd5b5061021e600435602435610de9565b34801561046957600080fd5b50610472610e56565b60408051600160a060020a039092168252519081900360200190f35b34801561049a57600080fd5b50610368600160a060020a0360043581169060243516610e65565b3480156104c157600080fd5b5061021e600160a060020a0360043516602435610ed9565b3480156104e557600080fd5b5061021e6004356110f4565b3480156104fd57600080fd5b5061047261116c565b34801561051257600080fd5b5061021e61117b565b34801561052757600080fd5b50610235611204565b34801561053c57600080fd5b5061023561120a565b34801561055157600080fd5b50610235611210565b34801561056657600080fd5b5061021e600160a060020a0360043516602435611216565b34801561058a57600080fd5b5061021e600160a060020a03600435166112b6565b3480156105ab57600080fd5b5061021e600160a060020a03600435166112f8565b3480156105cc57600080fd5b5061021e600160a060020a03600435166024356113af565b3480156105f057600080fd5b50610235600160a060020a0360043516611431565b34801561061157600080fd5b5061061d600435611487565b6040805192835260208301919091528051918290030190f35b34801561064257600080fd5b5061021e600160a060020a03600435166114a0565b34801561066357600080fd5b506103946004356114d8565b34801561067b57600080fd5b50610235600160a060020a0360043516611503565b34801561069c57600080fd5b50610368600160a060020a036004351661155b565b3480156106bd57600080fd5b50610472611570565b3480156106d257600080fd5b5061021e60043560243561157f565b3480156106ed57600080fd5b50610472611583565b34801561070257600080fd5b50610235611592565b61021e600435611599565b61021e61166a565b34801561072a57600080fd5b50610235600160a060020a036004351661171d565b34801561074b57600080fd5b50610760600160a060020a036004351661172f565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156107a457600080fd5b5061023561176c565b3480156107b957600080fd5b5061021e600160a060020a0360043516602435611772565b3480156107dd57600080fd5b5061021e600160a060020a03600435166024356117cc565b34801561080157600080fd5b50610472611831565b34801561081657600080fd5b50610235611840565b34801561082b57600080fd5b50610235611846565b34801561084057600080fd5b50610235611851565b61085560035482611856565b60035550565b60015481565b600254600160a060020a0316331461087857600080fd5b80600160a060020a0316ff5b600061088e611ee0565b600080600d600086600160a060020a0316600160a060020a0316815260200190815260200160002060e060405190810160405290816000820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509250610918428460800151611870565b915061092385610953565b905082602001519350600081111561094b57610948846109438385611882565b611856565b93505b505050919050565b600061095d611ee0565b6000610967611f1e565b600160a060020a0385166000908152600d6020908152604091829020825160e0810184528154815260028201549281019290925260038101549282019290925260048201546060820181905260058301546080830152600683015460a083015260079092015460c082015290945092506109e085611503565b91506103e7821461094b57506000818152600e602090815260409182902082516060810184528154600160a060020a0316815260018201549281018390526002909101549281019290925261094890610a3a908690611882565b60646118ad565b60045481565b600080600080600080610a58611f49565b600160a060020a0388166000908152600d602052604081208190815b600554811015610aa8576000818152600183016020526040902054858260088110610a9b57fe5b6020020152600101610a74565b81600001549a50610ac08260020154620151806118ad565b9950610ad38260030154620151806118ad565b985081600601549350816005015495508160070154925081600401549750610afa8c610953565b965050509193959799909294969850565b600190565b6000806000610b1d611f1e565b6006548510610b2b57600080fd5b505050600091825250600e602090815260409182902082516060810184528154600160a060020a03168082526001830154938201849052600290920154930183905292909190565b600f6020526000908152604090208054600182015460028301546003909301549192909184565b600080600080600080610bab611f69565b600080323314610bba57600080fd5b6005548a5114610bc957600080fd5b610bd2336118c4565b336000908152600d60205260408120995097508796508695508594505b600554851015610d09578985815181101515610c0757fe5b60209081029091018101516000878152600f83526040908190208151608081018352815481526001820154948101949094526002810154918401919091526003015460608301819052909550909350841180610c635750600084105b15610c6d57600080fd5b6000841115610cfe57600085815260018a0160205260409020546060840151909250610ca290610c9d8487611856565b611926565b600086815260018b0160205260409020819055610cd390879061094390610cc99086611870565b8660400151611882565b9550610ce788610943856000015187611882565b9750610cfb87610943856020015187611882565b96505b600190940193610bef565b34871015610d1657600080fd5b610d1f8761193e565b9050610d2a8161194e565b610d33816119a3565b610d4f610d4a34610d45846003611882565b611870565b610849565b600c54604080517fb04eb639000000000000000000000000000000000000000000000000000000008152336004820152602481018b90529051600160a060020a039092169163b04eb6399160448082019260009290919082900301818387803b158015610dbb57600080fd5b505af1158015610dcf573d6000803e3d6000fd5b50505050610ddd3387611a12565b50505050505050505050565b600254600090600160a060020a03163314610e0357600080fd5b506000805260106020527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb01919091557f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0255565b600b54600160a060020a031681565b600081600160a060020a031683600160a060020a031614158015610ea45750600160a060020a0383166000908152600d60205260409020600601544210155b8015610eca5750600160a060020a0382166000908152600d602052604090206007015442115b15610ed3575060015b92915050565b6000806000610ee6611f92565b6000808080808080323314610efa57600080fd5b610f04338e610e65565b1515600114610f1257600080fd5b610f1b336118c4565b600d600033600160a060020a0316600160a060020a031681526020019081526020016000209a50600d60008e600160a060020a0316600160a060020a031681526020019081526020016000209950610f768c62015180611882565b9850888b600201541015610f8957600080fd5b611388610f958e611431565b1015610fa057600080fd5b6000805260106020908152604080518082019091527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015481527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb025491810191909152975061100f336064611a43565b603201965061101f8d6064611a43565b603201955061103e610a3a6110388b8b60000151611882565b89611882565b945061105e610a3a6110588c600301548b60200151611882565b88611882565b9350600092506000915060009050838511156110a55761109789610c9d611086876064611882565b8b51611092908c611882565b6118ad565b915089600301549050600192505b6110b38b6002015483611870565b60028c015560038a01546110c79082611870565b60038b0155426103840160068c01556110e5338e8585858a8a611b12565b50505050505050505050505050565b60008032331461110357600080fd5b61110c336118c4565b336000908152600d60205260409020915061112a8362015180611882565b9050808260020154101561113d57600080fd5b61114b826003015482611856565b6003830155600282015461115f9082611870565b8260020181905550505050565b600a54600160a060020a031681565b3360008181526020819052604090205480151561119757600080fd5b30318111156111a557600080fd5b6001546111b8908263ffffffff61187016565b600155600160a060020a0382166000818152602081905260408082208290555183156108fc0291849190818181858888f193505050501580156111ff573d6000803e3d6000fd5b505050565b60055481565b60035481565b60085481565b3360009081526011602052604081205460ff16151560011461123757600080fd5b600354821061124557600080fd5b61125160035483611870565b60038190555082905080600160a060020a031663552079dc836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561129857600080fd5b505af11580156112ac573d6000803e3d6000fd5b5050505050505050565b3360009081526011602052604081205460ff1615156001146112d757600080fd5b50600160a060020a03166000908152600d6020526040902042600690910155565b600254600090600160a060020a0316331461131257600080fd5b81905080600160a060020a0316633281d5766040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561135357600080fd5b505af1158015611367573d6000803e3d6000fd5b505050506040513d602081101561137d57600080fd5b5051151561138a57600080fd5b50600160a060020a03166000908152601160205260409020805460ff19166001179055565b33600090815260116020526040812054819060ff1615156001146113d257600080fd5b6113db846118c4565b600160a060020a0384166000908152600d6020526040902091506114028362015180611882565b9050808260020154101561141557600080fd5b611423826002015482611870565b826002018190555050505050565b60008060008061144085611cee565b90965094506114529150869050611daa565b915061145e4284611870565b9050600082111561147a57611477846109438484611882565b93505b61094884620151806118ad565b6010602052600090815260409020805460019091015482565b600254600160a060020a031633146114b757600080fd5b600160a060020a03166000908152601160205260409020805460ff19169055565b600e60205260009081526040902080546001820154600290920154600160a060020a03909116919083565b6103e76000805b6006548210156115545750600654819003600019016000818152600e6020526040902054600160a060020a038581169116141561154957809250611554565b60019091019061150a565b5050919050565b60116020526000908152604090205460ff1681565b600754600160a060020a031681565b5050565b600c54600160a060020a031681565b6201518081565b6000806000600654841015156115ae57600080fd5b6000848152600e6020526040902060028101549093503410806115da57508254600160a060020a031633145b156115e457600080fd5b82546002840154600160a060020a0390911692506116019061193e565b905061160c8161194e565b611615816119a3565b611627610d4a34610d45846003611882565b611630336118c4565b600160a060020a0382161561164857611648826118c4565b5050805473ffffffffffffffffffffffffffffffffffffffff19163317905550565b60008032331461167957600080fd5b611689610a3a6008546096611882565b91503482111561169857600080fd5b600754600160a060020a03163314156116b057600080fd5b6116c0610a3a600854606e611882565b600754604051919250600160a060020a03169082156108fc029083906000818181858888f19350505050506116f8610d4a3483611870565b506007805473ffffffffffffffffffffffffffffffffffffffff191633179055600855565b60006020819052908152604090205481565b600d602052600090815260409020805460028201546003830154600484015460058501546006860154600790960154949593949293919290919087565b60065481565b33600090815260116020526040812054819060ff16151560011461179557600080fd5b600160a060020a0384166000908152600d6020526040902091506117bc8362015180611882565b9050611423826002015482611856565b33600090815260116020526040812054819060ff1615156001146117ef57600080fd5b5050600160a060020a0382166000908152600d602052604090206007810154428110156118195750425b6118238184611856565b826007018190555050505050565b600254600160a060020a031681565b61038481565b662386f26fc1000081565b600081565b60008282018381101561186557fe5b8091505b5092915050565b60008282111561187c57fe5b50900390565b6000808315156118955760009150611869565b508282028284828115156118a557fe5b041461186557fe5b60008082848115156118bb57fe5b04949350505050565b600454600160a060020a0382166000908152600d60205260408120549091146118f5576118f082611e47565b61157f565b50600160a060020a0381166000908152600d6020526040902061191782610884565b60028201554260058201555050565b60008183106119355781611937565b825b9392505050565b6000610ed3610a3a836005611882565b600754604051600160a060020a039091169082156108fc029083906000818181858888f15050600b54604051600160a060020a03909116935084156108fc0292508491506000818181858888f1505050505050565b600c60009054906101000a9004600160a060020a0316600160a060020a031663552079dc826040518263ffffffff1660e060020a0281526004016000604051808303818588803b1580156119f657600080fd5b505af1158015611a0a573d6000803e3d6000fd5b505050505050565b600160a060020a0382166000908152600d602052604090206004810154611a399083611856565b6004909101555050565b60006009546001016009819055508142846009546040516020018084815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310611ad45780518252601f199092019160209182019101611ab5565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515611b0a57fe5b069392505050565b6000808060018815151415611c6157611b2a89611431565b9150611b37896028611a43565b600a019050611b49610a3a8383611882565b92506000831115611c6157600c54604080517fb04eb639000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830152602482018790529151919092169163b04eb63991604480830192600092919082900301818387803b158015611bc257600080fd5b505af1158015611bd6573d6000803e3d6000fd5b5050600c54604080517ff6e212ea000000000000000000000000000000000000000000000000000000008152600160a060020a038f8116600483015260248201899052915191909216935063f6e212ea9250604480830192600092919082900301818387803b158015611c4857600080fd5b505af1158015611c5c573d6000803e3d6000fd5b505050505b60045460408051600160a060020a03808e1682528c1660208201528a15158183015260608101869052608081018a905260a081018990524260c082015260e081019290925261010082018790526101208201869052517f36c6d46925dde3169726ae25f960a7d13b0e117e452f43673ba3529c27cd5899918190036101400190a150505050505050505050565b600c54604080517fe2eb41ff000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093849384938493919092169163e2eb41ff9160248083019260c092919082900301818787803b158015611d5e57600080fd5b505af1158015611d72573d6000803e3d6000fd5b505050506040513d60c0811015611d8857600080fd5b5080516020820151604083015160609093015191989097509195509350915050565b600c54604080517f2243fb15000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015291516000939290921691632243fb159160248082019260209290919082900301818787803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b505192915050565b600454600160a060020a0382166000908152600d6020526040812054909182911415611e7257600080fd5b5050600160a060020a0381166000908152600d60205260408120600480548255600282018390556003820183905581018290554260058201819055600682018190556007820155905b6005548110156111ff5760008181526001808401602052604082209190915501611ebb565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000600160a060020a0316815260200160008152602001600081525090565b610100604051908101604052806008906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6040805180820190915260008082526020820152905600a165627a7a72305820a64ce8b681b3b7ef5c3dacf2430a77d102547c666093c10c4346e5ca65d28b4d0029
Swarm Source
bzzr://a64ce8b681b3b7ef5c3dacf2430a77d102547c666093c10c4346e5ca65d28b4d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,684.08 | 0.0000000001 | <$0.000001 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.