Contract 0xcdF7CfC9F7C129A0D7AeC376Bc205ab87fC878e1

 
Txn Hash Method
Block
From
To
Value
0x640cd35df92cf0b410962d319d94dc4f56f146a8fa40cabf9082aab32580c5edAdventure By Tok...126732272021-06-20 19:59:542 days 15 hrs ago0x7bae63c4dbd39ec66669a1ef6e1cf6f747b71bdd IN  Etheremon: Adventure 20 Ether0.008519608642.1
0xfdaac310ea30bbf2dc0566f13b24fab9ae6c75d36bf0cb93b75a82a1cab3e3deAdd Moderator126694572021-06-20 5:47:353 days 5 hrs ago0x7bae63c4dbd39ec66669a1ef6e1cf6f747b71bdd IN  Etheremon: Adventure 20 Ether0.0004988110
0x63668813a4a0c9b20178f5c13b0192e6ee551482d773a488d4b39930000772aeSet Contract126693392021-06-20 5:21:183 days 6 hrs ago0x7bae63c4dbd39ec66669a1ef6e1cf6f747b71bdd IN  Etheremon: Adventure 20 Ether0.00063631515
0xa93d67a37ac7248318d679f5883245cb5c3b2229f9e6d32046dbafdb9db6bd2eSet Contract126693372021-06-20 5:20:273 days 6 hrs ago0x7bae63c4dbd39ec66669a1ef6e1cf6f747b71bdd IN  Etheremon: Adventure 20 Ether0.000682837115.1
0x48f47b31f192da15ecd18cbc8a24907720ab99dd59ff8259e91bbe690a626463Claim Explore It...123744552021-05-05 13:26:5648 days 22 hrs ago0x0c655d8b5e3e70248366a8f22cb7f28ad5ee3070 IN  Etheremon: Adventure 20 Ether0.01184445
0xb9b988b2444442350e16fbc82e6b08faaf4d2df42435129d65c5c65005a010f2Claim Explore It...123651392021-05-04 2:42:5050 days 8 hrs ago0xd93bd92fcbf1c3f4640c9f733097f6da12e80a83 IN  Etheremon: Adventure 20 Ether0.01074278439
0x5f9ad4a492c8b044c4373a54cdeb6bd56df848bf5c31e6eb9cb057f90f10157fClaim Explore It...123299972021-04-28 16:28:1055 days 19 hrs ago0xd93bd92fcbf1c3f4640c9f733097f6da12e80a83 IN  Etheremon: Adventure 20 Ether0.029844868103
0x7b020a06bbfe5d59c4afda725b5142f2d8bf79b337c7ed444982493c814e3228Claim Explore It...123207372021-04-27 6:25:5457 days 5 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20 Ether0.0104040241.8
0x9c4fe811ecf8a8db5bc788f44e08b59d24dd638b60b4a6da48e8db43622def9fClaim Explore It...123202452021-04-27 4:29:4257 days 7 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20 Ether0.009530777634.6
0xe05816b385a734e83e3488f0b480a34a09fa05b0a2191209b48f0069c8d9be14Explore Using ET...123196392021-04-27 2:13:0557 days 9 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20.01 Ether0.00309130844
0x345acc5c4b4c24ed3aa3eab13742e296af41ff5b8158c7028f2827f49bb04903Claim Explore It...123191722021-04-27 0:29:0757 days 11 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20 Ether0.010951644
0x3b1100e471ccd2bc15c35706abcf276823a56ef5de76318b2b3d579eb97ad6d6Explore Using ET...123186902021-04-26 22:35:3457 days 12 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20.01 Ether0.00854414343
0x0c924a104d130d5b686fcfdbe1c3d9ed8a234cb2655f3ecdc480fdb56dad7b06Claim Explore It...123186342021-04-26 22:25:5457 days 13 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20 Ether0.017174169
0x88754e7bb917a7d5ce7757feedfb6335d640cc607649e6ea7f06b5cffb2fc95cClaim Explore It...123138212021-04-26 4:39:4058 days 6 hrs ago0x4451752cf1cccb75f660b6e93e027333fbeb88e4 IN  Etheremon: Adventure 20 Ether0.0121130119841.80418
0x8294a1ec8da83116c116940d8498cafb6987ddaba4deee4e07b560ccdd525ebfClaim Explore It...122897972021-04-22 11:43:2361 days 23 hrs ago0xc859581c72b64a6434e50a1b3b44f83db33cbb0a IN  Etheremon: Adventure 20 Ether0.02781657696
0x4cdb1363deee0d082f5d3bd5f6ef1badc52122e9807bff8b270a58ec482349e6Explore Using ET...122893622021-04-22 10:09:4262 days 1 hr ago0xc859581c72b64a6434e50a1b3b44f83db33cbb0a IN  Etheremon: Adventure 20.01 Ether0.021062306106
0xdbe03c58c928a90e1aef442f51401d23225704e897cefb211caf6c0f7bc77ec5Claim Explore It...120805442021-03-21 6:32:1494 days 4 hrs ago0x27b6fa4295dcd5c363e0d2edaa30d37ee95ad6b0 IN  Etheremon: Adventure 20 Ether0.0234131625102.375000002
0x69ce1c473e60e54cfe9f6e78ae10631b2417508638bdfaef9df3ccc1a68d789eClaim Explore It...119763082021-03-05 5:08:11110 days 6 hrs ago0x428c9cb84b0b3a94bfdb075090998e992be363be IN  Etheremon: Adventure 20 Ether0.00662130777
0x41860f434233497104ebd7aaf1d6b18d5df2167a39d361a0a8a958400dc86e6bClaim Explore It...119450622021-02-28 9:44:23115 days 1 hr ago0xb7eabaf5403f69ffe2039db246cc3d9a8a5de84c IN  Etheremon: Adventure 20 Ether0.026717936106
0x0727e77cf6d845ffa7e3ed13b50f1897fe935ffdb31b3118b3cf1c86773cd237Explore Using ET...119429332021-02-28 1:41:17115 days 9 hrs ago0xb7eabaf5403f69ffe2039db246cc3d9a8a5de84c IN  Etheremon: Adventure 20.01 Ether0.0122920770
0xc55a02fa1f3fe9b368145a5a4a9487cc51b6744c1070c66fe675345d22eae96eClaim Explore It...118531662021-02-14 6:18:51129 days 5 hrs ago0xa21fa4fa5e8a51165b77f24d21fbe2bc0fbf97f6 IN  Etheremon: Adventure 20 Ether0.01203874140
0x0b37edd53c3fa321213235df58cd89bb8a1deea27b159810a89c636afaf7d0a1Claim Explore It...118512782021-02-13 23:41:05129 days 11 hrs ago0x3eaa4b14055321e123b5245b641aa3d001eb7908 IN  Etheremon: Adventure 20.005 Ether0.024653828653108.599998474
0x694150103e527e26427d516c7b3040837f8664f7dc0ce939e7203fd30ca81f77Explore Using ET...118511972021-02-13 23:24:51129 days 12 hrs ago0x3eaa4b14055321e123b5245b641aa3d001eb7908 IN  Etheremon: Adventure 20.01 Ether0.00653484120
0x396d5053407478f2eb1f9569c9618020be6193892dce3ccba8dd625a3046cc07Explore Using ET...118511962021-02-13 23:24:49129 days 12 hrs ago0x3eaa4b14055321e123b5245b641aa3d001eb7908 IN  Etheremon: Adventure 20.01 Ether0.02107212120
0xa6c4bb7c718774513bd6ae14c511c0bd313a19a394444b86ff06d6d1cc3f81a9Claim Explore It...116461232021-01-13 10:40:01161 days 50 mins ago0xf72f759ae12945cab42fcc0d5c49534f9a402835 IN  Etheremon: Adventure 20 Ether0.009587644
[ Download CSV Export 
Latest 5 internal transactions
Parent Txn Hash Block From To Value
0xa106c359a2706538cc2809c60b345064f94f30d72139dfa0783e7fdd28c4c58c111950312020-11-05 4:24:40230 days 7 hrs ago Etheremon: Adventure 20x7bae63c4dbd39ec66669a1ef6e1cf6f747b71bdd11.28 Ether
0x570fda4ad2aa3a9784b35768e7e7dacd91f7707ed06e658ca3dde7f235957cc777876942019-05-19 1:49:45766 days 9 hrs ago Etheremon: Adventure 20xf35728a27318156ae04ba8a6dff8074fe98b19b810.82 Ether
0x9d28bc57137e48b530a836c61cfd19779f9365a63ef04a631fcce33bf80cb21572058072019-02-11 7:20:46863 days 4 hrs ago Etheremon: Adventure 20xf35728a27318156ae04ba8a6dff8074fe98b19b898.45 Ether
0x05d8e252624219b8e363752ba583c2b00cda8768856437fe0b97305ae495a2fe64682622018-10-07 4:35:59990 days 6 hrs ago Etheremon: Adventure 20xf35728a27318156ae04ba8a6dff8074fe98b19b876.553 Ether
0x2d92ad84e926e9538d72c2ede7d3d6f3583e3879c451a5e68ac1e3af0035d91662771182018-09-05 15:53:011021 days 19 hrs ago Etheremon: Adventure 2EtheremonToken: Deployer 10.002 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtheremonAdventure

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-09-04
*/

pragma solidity ^0.4.16;

library AddressUtils {
    function isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }
}

contract BasicAccessControl {
    address public owner;
    // address[] public moderators;
    uint16 public totalModerators = 0;
    mapping (address => bool) public moderators;
    bool public isMaintaining = false;

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

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

    modifier onlyModerators() {
        require(msg.sender == owner || moderators[msg.sender] == true);
        _;
    }

    modifier isActive {
        require(!isMaintaining);
        _;
    }

    function ChangeOwner(address _newOwner) onlyOwner public {
        if (_newOwner != address(0)) {
            owner = _newOwner;
        }
    }


    function AddModerator(address _newModerator) onlyOwner public {
        if (moderators[_newModerator] == false) {
            moderators[_newModerator] = true;
            totalModerators += 1;
        }
    }
    
    function RemoveModerator(address _oldModerator) onlyOwner public {
        if (moderators[_oldModerator] == true) {
            moderators[_oldModerator] = false;
            totalModerators -= 1;
        }
    }

    function UpdateMaintaining(bool _isMaintaining) onlyOwner public {
        isMaintaining = _isMaintaining;
    }
}

contract EtheremonEnum {

    enum ResultCode {
        SUCCESS,
        ERROR_CLASS_NOT_FOUND,
        ERROR_LOW_BALANCE,
        ERROR_SEND_FAIL,
        ERROR_NOT_TRAINER,
        ERROR_NOT_ENOUGH_MONEY,
        ERROR_INVALID_AMOUNT
    }
    
    enum ArrayType {
        CLASS_TYPE,
        STAT_STEP,
        STAT_START,
        STAT_BASE,
        OBJ_SKILL
    }
    
    enum PropertyType {
        ANCESTOR,
        XFACTOR
    }
}

interface EtheremonDataBase {
    // read
    function getMonsterClass(uint32 _classId) constant external returns(uint32 classId, uint256 price, uint256 returnPrice, uint32 total, bool catchable);
    function getMonsterObj(uint64 _objId) constant external returns(uint64 objId, uint32 classId, address trainer, uint32 exp, uint32 createIndex, uint32 lastClaimIndex, uint createTime);
    function getElementInArrayType(EtheremonEnum.ArrayType _type, uint64 _id, uint _index) constant external returns(uint8);
    
    function addMonsterObj(uint32 _classId, address _trainer, string _name) external returns(uint64);
    function addElementToArrayType(EtheremonEnum.ArrayType _type, uint64 _id, uint8 _value) external returns(uint);
}

contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);
}

interface ERC721Interface {
    function ownerOf(uint256 _tokenId) external view returns (address owner);
}

interface EtheremonAdventureItem {
    function ownerOf(uint256 _tokenId) external view returns (address);
    function getItemInfo(uint _tokenId) constant external returns(uint classId, uint value);
    function spawnItem(uint _classId, uint _value, address _owner) external returns(uint);
}

interface EtheremonAdventureSetting {
    function getSiteItem(uint _siteId, uint _seed) constant external returns(uint _monsterClassId, uint _tokenClassId, uint _value);
    function getSiteId(uint _classId, uint _seed) constant external returns(uint);
}

interface EtheremonMonsterNFT {
    function mintMonster(uint32 _classId, address _trainer, string _name) external returns(uint);
}

contract EtheremonAdventureData {
    
    function addLandRevenue(uint _siteId, uint _emontAmount, uint _etherAmount) external;
    function addTokenClaim(uint _tokenId, uint _emontAmount, uint _etherAmount) external;
    function addExploreData(address _sender, uint _typeId, uint _monsterId, uint _siteId, uint _startAt, uint _emontAmount, uint _etherAmount) external returns(uint);
    function removePendingExplore(uint _exploreId, uint _itemSeed) external;
    
    // public function
    function getLandRevenue(uint _classId) constant public returns(uint _emontAmount, uint _etherAmount);
    
    function getTokenClaim(uint _tokenId) constant public returns(uint _emontAmount, uint _etherAmount);
    
    function getExploreData(uint _exploreId) constant public returns(address _sender, uint _typeId, uint _monsterId, uint _siteId, uint _itemSeed, uint _startAt);
    
    function getPendingExplore(address _player) constant public returns(uint);
    
    function getPendingExploreData(address _player) constant public returns(uint _exploreId, uint _typeId, uint _monsterId, uint _siteId, uint _itemSeed, uint _startAt);
}

contract EtheremonAdventure is EtheremonEnum, BasicAccessControl {
    
    using AddressUtils for address;
    
    uint8 constant public STAT_COUNT = 6;
    uint8 constant public STAT_MAX = 32;

    struct MonsterObjAcc {
        uint64 monsterId;
        uint32 classId;
        address trainer;
        string name;
        uint32 exp;
        uint32 createIndex;
        uint32 lastClaimIndex;
        uint createTime;
    }
    
    struct ExploreData {
        address sender;
        uint monsterType;
        uint monsterId;
        uint siteId;
        uint itemSeed;
        uint startAt; // blocknumber
    }
    
    struct ExploreReward {
        uint monsterClassId;
        uint itemClassId;
        uint value;
        uint temp;
    }
    
    address public dataContract;
    address public monsterNFT;
    address public adventureDataContract;
    address public adventureSettingContract;
    address public adventureItemContract;
    address public tokenContract;
    address public kittiesContract;
    
    uint public exploreETHFee = 0.01 ether;
    uint public exploreEMONTFee = 1500000000;
    uint public exploreFastenETHFee = 0.005 ether;
    uint public exploreFastenEMONTFee = 750000000;
    uint public minBlockGap = 240;
    uint public totalSite = 54;
    
    uint seed = 0;
    
    event SendExplore(address indexed from, uint monsterType, uint monsterId, uint exploreId);
    event ClaimExplore(address indexed from, uint exploreId, uint itemType, uint itemClass, uint itemId);
    
    modifier requireDataContract {
        require(dataContract != address(0));
        _;
    }
    
    modifier requireAdventureDataContract {
        require(adventureDataContract != address(0));
        _;
    }
    
    modifier requireAdventureSettingContract {
        require(adventureSettingContract != address(0));
        _;
    }
    
    modifier requireTokenContract {
        require(tokenContract != address(0));
        _;
    }
    
    modifier requireKittiesContract {
        require(kittiesContract != address(0));
        _;
    }
    
    function setContract(address _dataContract, address _monsterNFT, address _adventureDataContract, address _adventureSettingContract, address _adventureItemContract, address _tokenContract, address _kittiesContract) onlyOwner public {
        dataContract = _dataContract;
        monsterNFT = _monsterNFT;
        adventureDataContract = _adventureDataContract;
        adventureSettingContract = _adventureSettingContract;
        adventureItemContract = _adventureItemContract;
        tokenContract = _tokenContract;
        kittiesContract = _kittiesContract;
    }

    function setFeeConfig(uint _exploreETHFee, uint _exploreEMONTFee, uint _exploreFastenETHFee, uint _exploreFastenEMONTFee) onlyOwner public {
        exploreETHFee = _exploreETHFee;
        exploreEMONTFee = _exploreEMONTFee;
        exploreFastenEMONTFee = _exploreFastenEMONTFee;
        exploreFastenETHFee = _exploreFastenETHFee;
    }

    function setConfig( uint _minBlockGap, uint _totalSite) onlyOwner public {
        minBlockGap = _minBlockGap;
        totalSite = _totalSite;
    }
    
    function withdrawEther(address _sendTo, uint _amount) onlyOwner public {
        // it is used in case we need to upgrade the smartcontract
        if (_amount > address(this).balance) {
            revert();
        }
        _sendTo.transfer(_amount);
    }
    
    function withdrawToken(address _sendTo, uint _amount) onlyOwner requireTokenContract external {
        ERC20Interface token = ERC20Interface(tokenContract);
        if (_amount > token.balanceOf(address(this))) {
            revert();
        }
        token.transfer(_sendTo, _amount);
    }
    
    function adventureByToken(address _player, uint _token, uint _param1, uint _param2, uint64 _param3, uint64 _param4) isActive onlyModerators external {
        // param1 = 1 -> explore, param1 = 2 -> claim 
        if (_param1 == 1) {
            _exploreUsingEmont(_player, _param2, _param3, _token);
        } else {
            _claimExploreItemUsingEMont(_param2, _token);
        }
    }
    
    function _exploreUsingEmont(address _sender, uint _monsterType, uint _monsterId, uint _token) internal {
        if (_token < exploreEMONTFee) revert();
        seed = getRandom(_sender, block.number - 1, seed, _monsterId);
        uint siteId = getTargetSite(_sender, _monsterType, _monsterId, seed);
        if (siteId == 0) revert();
        
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        uint exploreId = adventureData.addExploreData(_sender, _monsterType, _monsterId, siteId, block.number, _token, 0);
        SendExplore(_sender, _monsterType, _monsterId, exploreId);
    }
    
    function _claimExploreItemUsingEMont(uint _exploreId, uint _token) internal {
        if (_token < exploreFastenEMONTFee) revert();
        
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        ExploreData memory exploreData;
        (exploreData.sender, exploreData.monsterType, exploreData.monsterId, exploreData.siteId, exploreData.itemSeed, exploreData.startAt) = adventureData.getExploreData(_exploreId);
        
        if (exploreData.itemSeed != 0)
            revert();
        
        // min 2 blocks
        if (block.number < exploreData.startAt + 2)
            revert();
        
        exploreData.itemSeed = getRandom(exploreData.sender, exploreData.startAt + 1, exploreData.monsterId, _exploreId) % 100000;
        ExploreReward memory reward;
        (reward.monsterClassId, reward.itemClassId, reward.value) = EtheremonAdventureSetting(adventureSettingContract).getSiteItem(exploreData.siteId, exploreData.itemSeed);
        
        adventureData.removePendingExplore(_exploreId, exploreData.itemSeed);
        
        if (reward.monsterClassId > 0) {
            EtheremonMonsterNFT monsterContract = EtheremonMonsterNFT(monsterNFT);
            reward.temp = monsterContract.mintMonster(uint32(reward.monsterClassId), exploreData.sender,  "..name me..");
            ClaimExplore(exploreData.sender, _exploreId, 0, reward.monsterClassId, reward.temp);
        } else if (reward.itemClassId > 0) {
            // give new adventure item 
            EtheremonAdventureItem item = EtheremonAdventureItem(adventureItemContract);
            reward.temp = item.spawnItem(reward.itemClassId, reward.value, exploreData.sender);
            ClaimExplore(exploreData.sender, _exploreId, 1, reward.itemClassId, reward.temp);
        } else if (reward.value > 0) {
            // send token contract
            ERC20Interface token = ERC20Interface(tokenContract);
            token.transfer(exploreData.sender, reward.value);
            ClaimExplore(exploreData.sender, _exploreId, 2, 0, reward.value);
        } else {
            revert();
        }
    }
    
    // public
    
    function getRandom(address _player, uint _block, uint _seed, uint _count) constant public returns(uint) {
        return uint(keccak256(block.blockhash(_block), _player, _seed, _count));
    }
    
    function getTargetSite(address _sender, uint _monsterType, uint _monsterId, uint _seed) constant public returns(uint) {
        if (_monsterType == 0) {
            // Etheremon 
            MonsterObjAcc memory obj;
            (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = EtheremonDataBase(dataContract).getMonsterObj(uint64(_monsterId));
            if (obj.trainer != _sender) revert();
            return EtheremonAdventureSetting(adventureSettingContract).getSiteId(obj.classId, _seed);
        } else if (_monsterType == 1) {
            // Cryptokitties
            if (_sender != ERC721Interface(kittiesContract).ownerOf(_monsterId)) revert();
            return EtheremonAdventureSetting(adventureSettingContract).getSiteId(_seed % totalSite, _seed);
        }
        return 0;
    }
    
    function exploreUsingETH(uint _monsterType, uint _monsterId) isActive public payable {
        // not allow contract to make txn
        if (msg.sender.isContract()) revert();
        
        if (msg.value < exploreETHFee) revert();
        seed = getRandom(msg.sender, block.number - 1, seed, _monsterId);
        uint siteId = getTargetSite(msg.sender, _monsterType, _monsterId, seed);
        if (siteId == 0) revert();
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        uint exploreId = adventureData.addExploreData(msg.sender, _monsterType, _monsterId, siteId, block.number, 0, msg.value);
        SendExplore(msg.sender, _monsterType, _monsterId, exploreId);
    }
    
    function claimExploreItem(uint _exploreId) isActive public payable {
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        ExploreData memory exploreData;
        (exploreData.sender, exploreData.monsterType, exploreData.monsterId, exploreData.siteId, exploreData.itemSeed, exploreData.startAt) = adventureData.getExploreData(_exploreId);
        
        if (exploreData.itemSeed != 0)
            revert();
        
        // min 2 blocks
        if (block.number < exploreData.startAt + 2)
            revert();
        
        exploreData.itemSeed = getRandom(exploreData.sender, exploreData.startAt + 1, exploreData.monsterId, _exploreId) % 100000;
        if (msg.value < exploreFastenETHFee) {
            if (block.number < exploreData.startAt + minBlockGap + exploreData.startAt % minBlockGap)
                revert();
        }
        
        ExploreReward memory reward;
        (reward.monsterClassId, reward.itemClassId, reward.value) = EtheremonAdventureSetting(adventureSettingContract).getSiteItem(exploreData.siteId, exploreData.itemSeed);
        
        adventureData.removePendingExplore(_exploreId, exploreData.itemSeed);
        
        if (reward.monsterClassId > 0) {
            EtheremonMonsterNFT monsterContract = EtheremonMonsterNFT(monsterNFT);
            reward.temp = monsterContract.mintMonster(uint32(reward.monsterClassId), exploreData.sender,  "..name me..");
            ClaimExplore(exploreData.sender, _exploreId, 0, reward.monsterClassId, reward.temp);
        } else if (reward.itemClassId > 0) {
            // give new adventure item 
            EtheremonAdventureItem item = EtheremonAdventureItem(adventureItemContract);
            reward.temp = item.spawnItem(reward.itemClassId, reward.value, exploreData.sender);
            ClaimExplore(exploreData.sender, _exploreId, 1, reward.itemClassId, reward.temp);
        } else if (reward.value > 0) {
            // send token contract
            ERC20Interface token = ERC20Interface(tokenContract);
            token.transfer(exploreData.sender, reward.value);
            ClaimExplore(exploreData.sender, _exploreId, 2, 0, reward.value);
        } else {
            revert();
        }
    }
    
    // public
    
    function predictExploreReward(uint _exploreId) constant external returns(uint itemSeed, uint rewardMonsterClass, uint rewardItemCLass, uint rewardValue) {
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        ExploreData memory exploreData;
        (exploreData.sender, exploreData.monsterType, exploreData.monsterId, exploreData.siteId, exploreData.itemSeed, exploreData.startAt) = adventureData.getExploreData(_exploreId);
        
        if (exploreData.itemSeed != 0) {
            itemSeed = exploreData.itemSeed;
        } else {
            if (block.number < exploreData.startAt + 2)
                return (0, 0, 0, 0);
            itemSeed = getRandom(exploreData.sender, exploreData.startAt + 1, exploreData.monsterId, _exploreId) % 100000;
        }
        (rewardMonsterClass, rewardItemCLass, rewardValue) = EtheremonAdventureSetting(adventureSettingContract).getSiteItem(exploreData.siteId, itemSeed);
    }
    
    function getExploreItem(uint _exploreId) constant external returns(address trainer, uint monsterType, uint monsterId, uint siteId, uint startBlock, uint rewardMonsterClass, uint rewardItemClass, uint rewardValue) {
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        (trainer, monsterType, monsterId, siteId, rewardMonsterClass, startBlock) = adventureData.getExploreData(_exploreId);
        
        if (rewardMonsterClass > 0) {
            (rewardMonsterClass, rewardItemClass, rewardValue) = EtheremonAdventureSetting(adventureSettingContract).getSiteItem(siteId, rewardMonsterClass);
        }
        
    }
    
    function getPendingExploreItem(address _trainer) constant external returns(uint exploreId, uint monsterType, uint monsterId, uint siteId, uint startBlock, uint endBlock) {
        EtheremonAdventureData adventureData = EtheremonAdventureData(adventureDataContract);
        (exploreId, monsterType, monsterId, siteId, endBlock, startBlock) = adventureData.getPendingExploreData(_trainer);
        if (exploreId > 0) {
            endBlock = startBlock + minBlockGap + startBlock % minBlockGap;
        }
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_player","type":"address"},{"name":"_block","type":"uint256"},{"name":"_seed","type":"uint256"},{"name":"_count","type":"uint256"}],"name":"getRandom","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adventureItemContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exploreFastenEMONTFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_monsterType","type":"uint256"},{"name":"_monsterId","type":"uint256"}],"name":"exploreUsingETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_minBlockGap","type":"uint256"},{"name":"_totalSite","type":"uint256"}],"name":"setConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exploreETHFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exploreEMONTFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kittiesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_MAX","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"monsterNFT","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adventureDataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_trainer","type":"address"}],"name":"getPendingExploreItem","outputs":[{"name":"exploreId","type":"uint256"},{"name":"monsterType","type":"uint256"},{"name":"monsterId","type":"uint256"},{"name":"siteId","type":"uint256"},{"name":"startBlock","type":"uint256"},{"name":"endBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adventureSettingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minBlockGap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSite","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dataContract","type":"address"},{"name":"_monsterNFT","type":"address"},{"name":"_adventureDataContract","type":"address"},{"name":"_adventureSettingContract","type":"address"},{"name":"_adventureItemContract","type":"address"},{"name":"_tokenContract","type":"address"},{"name":"_kittiesContract","type":"address"}],"name":"setContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_exploreId","type":"uint256"}],"name":"getExploreItem","outputs":[{"name":"trainer","type":"address"},{"name":"monsterType","type":"uint256"},{"name":"monsterId","type":"uint256"},{"name":"siteId","type":"uint256"},{"name":"startBlock","type":"uint256"},{"name":"rewardMonsterClass","type":"uint256"},{"name":"rewardItemClass","type":"uint256"},{"name":"rewardValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exploreFastenETHFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_exploreId","type":"uint256"}],"name":"predictExploreReward","outputs":[{"name":"itemSeed","type":"uint256"},{"name":"rewardMonsterClass","type":"uint256"},{"name":"rewardItemCLass","type":"uint256"},{"name":"rewardValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAT_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_exploreETHFee","type":"uint256"},{"name":"_exploreEMONTFee","type":"uint256"},{"name":"_exploreFastenETHFee","type":"uint256"},{"name":"_exploreFastenEMONTFee","type":"uint256"}],"name":"setFeeConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"},{"name":"_monsterType","type":"uint256"},{"name":"_monsterId","type":"uint256"},{"name":"_seed","type":"uint256"}],"name":"getTargetSite","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_player","type":"address"},{"name":"_token","type":"uint256"},{"name":"_param1","type":"uint256"},{"name":"_param2","type":"uint256"},{"name":"_param3","type":"uint64"},{"name":"_param4","type":"uint64"}],"name":"adventureByToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_exploreId","type":"uint256"}],"name":"claimExploreItem","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"monsterType","type":"uint256"},{"indexed":false,"name":"monsterId","type":"uint256"},{"indexed":false,"name":"exploreId","type":"uint256"}],"name":"SendExplore","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"exploreId","type":"uint256"},{"indexed":false,"name":"itemType","type":"uint256"},{"indexed":false,"name":"itemClass","type":"uint256"},{"indexed":false,"name":"itemId","type":"uint256"}],"name":"ClaimExplore","type":"event"}]

6060604052600080546002805460ff19169055662386f26fc100006009556359682f00600a556611c37937e08000600b55632cb41780600c5560f0600d556036600e55600f829055600160a060020a033316600160b060020a03199091161790556121608061006f6000396000f3006060604052600436106101a85763ffffffff60e060020a6000350416630a92b26481146101ad5780630d668818146101e75780630e6554321461021657806314d0f1ba146102295780631a389eb91461025c5780631a5f9bed1461026f5780631e34c5851461027f5780632c421074146102985780633115c3ee146102ab5780633432000c146102be57806348ef5aa8146102d15780634e3dc2f1146102e95780634efb023e14610312578063522f68151461033c57806355a373d61461035e578063678a1013146103715780636c81fd6d146103845780636ebe299f146103a35780637064b5aa146103b65780638144ee2f1461040e5780638308c7861461042157806389b97d07146104345780638a9ba931146104475780638da5cb5b1461048a5780639e281a981461049d578063b167fe1b146104bf578063b85d627514610526578063cfb9147d14610545578063d691092a14610558578063d98e14bd14610599578063dbd5ef6d146105ac578063ec6e7bbf146105cb578063ee4e4416146105f3578063f285329214610606578063fba7038114610625578063fbf7ba6514610660575b600080fd5b34156101b857600080fd5b6101d5600160a060020a036004351660243560443560643561066b565b60405190815260200160405180910390f35b34156101f257600080fd5b6101fa6106b7565b604051600160a060020a03909116815260200160405180910390f35b341561022157600080fd5b6101fa6106cb565b341561023457600080fd5b610248600160a060020a03600435166106da565b604051901515815260200160405180910390f35b341561026757600080fd5b6101d56106ef565b61027d6004356024356106f5565b005b341561028a57600080fd5b61027d600435602435610867565b34156102a357600080fd5b6101d561088d565b34156102b657600080fd5b6101d5610893565b34156102c957600080fd5b6101fa610899565b34156102dc57600080fd5b61027d60043515156108a8565b34156102f457600080fd5b6102fc6108d6565b60405160ff909116815260200160405180910390f35b341561031d57600080fd5b6103256108db565b60405161ffff909116815260200160405180910390f35b341561034757600080fd5b61027d600160a060020a03600435166024356108fd565b341561036957600080fd5b6101fa610964565b341561037c57600080fd5b6101fa610973565b341561038f57600080fd5b61027d600160a060020a0360043516610982565b34156103ae57600080fd5b6101fa610a2c565b34156103c157600080fd5b6103d5600160a060020a0360043516610a3b565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b341561041957600080fd5b6101fa610b14565b341561042c57600080fd5b6101d5610b23565b341561043f57600080fd5b6101d5610b29565b341561045257600080fd5b61027d600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c43516610b2f565b341561049557600080fd5b6101fa610bed565b34156104a857600080fd5b61027d600160a060020a0360043516602435610bfc565b34156104ca57600080fd5b6104d5600435610d2e565b604051600160a060020a03909816885260208801969096526040808801959095526060870193909352608086019190915260a085015260c084015260e0830191909152610100909101905180910390f35b341561053157600080fd5b61027d600160a060020a0360043516610e75565b341561055057600080fd5b6101d5610f1f565b341561056357600080fd5b61056e600435610f25565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156105a457600080fd5b6102fc6110e2565b34156105b757600080fd5b61027d6004356024356044356064356110e7565b34156105d657600080fd5b6101d5600160a060020a0360043516602435604435606435611119565b34156105fe57600080fd5b6102486113a9565b341561061157600080fd5b61027d600160a060020a03600435166113b2565b341561063057600080fd5b61027d600160a060020a036004351660243560443560643567ffffffffffffffff60843581169060a43516611409565b61027d600435611495565b60008340858484604051938452600160a060020a03929092166c010000000000000000000000000260208401526034830152605482015260740160405190819003902095945050505050565b6002546101009004600160a060020a031681565b600654600160a060020a031681565b60016020526000908152604090205460ff1681565b600c5481565b6002546000908190819060ff161561070c57600080fd5b61071e33600160a060020a03166119e4565b1561072857600080fd5b60095434101561073757600080fd5b6107483360014303600f548761066b565b600f8190555061075c338686600f54611119565b925082151561076a57600080fd5b600454600160a060020a0316915081637154b7983387878743600034816040516020015260405160e060020a63ffffffff8a16028152600160a060020a039097166004880152602487019590955260448601939093526064850191909152608484015260a483015260c482015260e401602060405180830381600087803b15156107f357600080fd5b6102c65a03f1151561080457600080fd5b5050506040518051915050600160a060020a0333167fe9ca38bf61cdb977a616ad0224f81bb20db269553a49139f962330a9f41b1d4586868460405180848152602001838152602001828152602001935050505060405180910390a25050505050565b60005433600160a060020a0390811691161461088257600080fd5b600d91909155600e55565b60095481565b600a5481565b600854600160a060020a031681565b60005433600160a060020a039081169116146108c357600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b60005433600160a060020a0390811691161461091857600080fd5b30600160a060020a03163181111561092f57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561096057600080fd5b5050565b600754600160a060020a031681565b600354600160a060020a031681565b60005433600160a060020a0390811691161461099d57600080fd5b600160a060020a03811660009081526001602052604090205460ff161515610a2957600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b600454600160a060020a031681565b60045460009081908190819081908190600160a060020a03168063bf5b4c0c898460405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b1515610aa157600080fd5b6102c65a03f11515610ab257600080fd5b5050506040518051906020018051906020018051906020018051906020018051906020018051959c50939a509198509650919450909250506000871115610b0a57600d5483811515610b0057fe5b06600d5484010191505b5091939550919395565b600554600160a060020a031681565b600d5481565b600e5481565b60005433600160a060020a03908116911614610b4a57600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03998a16021790556003805473ffffffffffffffffffffffffffffffffffffffff199081169789169790971790556004805487169588169590951790945560058054861693871693909317909255600680548516918616919091179055600780548416918516919091179055600880549092169216919091179055565b600054600160a060020a031681565b6000805433600160a060020a03908116911614610c1857600080fd5b600754600160a060020a03161515610c2f57600080fd5b50600754600160a060020a0316806370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c8a57600080fd5b6102c65a03f11515610c9b57600080fd5b50505060405180519050821115610cb157600080fd5b80600160a060020a031663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d0e57600080fd5b6102c65a03f11515610d1f57600080fd5b50505060405180515050505050565b6004546000908190819081908190819081908190600160a060020a0316806340ef78a78b8460405160c0015260405160e060020a63ffffffff8416028152600481019190915260240160c060405180830381600087803b1515610d9057600080fd5b6102c65a03f11515610da157600080fd5b5050506040518051906020018051906020018051906020018051906020018051906020018051959e50939c50919a509850919650909450506000841115610e6957600554600160a060020a03166399f1718a878660006040516060015260405160e060020a63ffffffff851602815260048101929092526024820152604401606060405180830381600087803b1515610e3957600080fd5b6102c65a03f11515610e4a57600080fd5b5050506040518051906020018051906020018051929650909450909250505b50919395975091939597565b60005433600160a060020a03908116911614610e9057600080fd5b600160a060020a03811660009081526001602081905260409091205460ff1615151415610a2957600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600b5481565b6000806000806000610f3561204d565b600454600160a060020a03169150816340ef78a788600060405160c0015260405160e060020a63ffffffff8416028152600481019190915260240160c060405180830381600087803b1515610f8957600080fd5b6102c65a03f11515610f9a57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805160a08801525060808601908152606086019190915260408501919091526020840191909152600160a060020a0390911682525115611004578060800151955061104e565b8060a0015160020143101561102557600095508594508493508392506110d9565b620186a061104182518360a0015160010184604001518b61066b565b81151561104a57fe5b0695505b600554600160a060020a03166399f1718a60608301518860006040516060015260405160e060020a63ffffffff851602815260048101929092526024820152604401606060405180830381600087803b15156110a957600080fd5b6102c65a03f115156110ba57600080fd5b5050506040518051906020018051906020018051929750909550909350505b50509193509193565b600681565b60005433600160a060020a0390811691161461110257600080fd5b600993909355600a91909155600c91909155600b55565b600061112361208d565b8415156112a7576002546101009004600160a060020a0316630720246085600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561118957600080fd5b6102c65a03f1151561119a57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a03918216604086019081529216602085015267ffffffffffffffff90921683529087169051600160a060020a03161461122857600080fd5b600554600160a060020a0316638d70650f60208301518560006040516020015260405163ffffffff84811660e060020a0282529290921660048301526024820152604401602060405180830381600087803b151561128557600080fd5b6102c65a03f1151561129657600080fd5b5050506040518051905091506113a0565b846001141561139b57600854600160a060020a0316636352211e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561130157600080fd5b6102c65a03f1151561131257600080fd5b5050506040518051600160a060020a03888116911614905061133357600080fd5b600554600e54600160a060020a0390911690638d70650f908581151561135557fe5b068560006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561128557600080fd5b600091505b50949350505050565b60025460ff1681565b60005433600160a060020a039081169116146113cd57600080fd5b600160a060020a03811615610a295760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b60025460ff161561141957600080fd5b60005433600160a060020a03908116911614806114545750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561145f57600080fd5b83600114156114835761147e86848467ffffffffffffffff16886119ec565b61148d565b61148d8386611b32565b505050505050565b600061149f61204d565b6114a76120d9565b6002546000908190819060ff16156114be57600080fd5b600454600160a060020a03169550856340ef78a788600060405160c0015260405160e060020a63ffffffff8416028152600481019190915260240160c060405180830381600087803b151561151257600080fd5b6102c65a03f1151561152357600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805160a08c01525060808a0190815260608a019190915260408901919091526020880191909152600160a060020a039091168652511561158657600080fd5b8460a0015160020143101561159a57600080fd5b620186a06115b686518760a0015160010188604001518b61066b565b8115156115bf57fe5b066080860152600b543410156115f757600d548560a001518115156115e057fe5b06600d548660a0015101014310156115f757600080fd5b600554600160a060020a03166399f1718a6060870151876080015160006040516060015260405160e060020a63ffffffff851602815260048101929092526024820152604401606060405180830381600087803b151561165657600080fd5b6102c65a03f1151561166757600080fd5b505050604051805190602001805190602001805160408801525060208601528452600160a060020a03861663d9d1f5d988608088015160405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b15156116d857600080fd5b6102c65a03f115156116e957600080fd5b50505060008460000151111561180657600354600160a060020a0316925082630963d4b78551875160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600b60648201527f2e2e6e616d65206d652e2e000000000000000000000000000000000000000000608482015260a401602060405180830381600087803b151561179457600080fd5b6102c65a03f115156117a557600080fd5b50505060405180516060860152508451600160a060020a0316600080516020612115833981519152886000875188606001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a26119db565b6000846020015111156118fd57600654600160a060020a031691508163d339254560208601518660400151885160006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b151561188857600080fd5b6102c65a03f1151561189957600080fd5b50505060405180516060860152508451600160a060020a0316600080516020612115833981519152886001876020015188606001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a26119db565b6000846040015111156101a85750600754600160a060020a03168063a9059cbb8651866040015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561197057600080fd5b6102c65a03f1151561198157600080fd5b50505060405180515085905051600160a060020a0316600080516020612115833981519152886002600088604001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b50505050505050565b6000903b1190565b6000806000600a54841015611a0057600080fd5b611a118760014303600f548861066b565b600f81905550611a25878787600f54611119565b9250821515611a3357600080fd5b600454600160a060020a0316915081637154b79888888887438a6000806040516020015260405160e060020a63ffffffff8a16028152600160a060020a039097166004880152602487019590955260448601939093526064850191909152608484015260a483015260c482015260e401602060405180830381600087803b1515611abc57600080fd5b6102c65a03f11515611acd57600080fd5b5050506040518051915050600160a060020a0387167fe9ca38bf61cdb977a616ad0224f81bb20db269553a49139f962330a9f41b1d4587878460405180848152602001838152602001828152602001935050505060405180910390a250505050505050565b6000611b3c61204d565b611b446120d9565b6000806000600c54871015611b5857600080fd5b600454600160a060020a03169550856340ef78a789600060405160c0015260405160e060020a63ffffffff8416028152600481019190915260240160c060405180830381600087803b1515611bac57600080fd5b6102c65a03f11515611bbd57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805160a08c01525060808a0190815260608a019190915260408901919091526020880191909152600160a060020a0390911686525115611c2057600080fd5b8460a00151600201431015611c3457600080fd5b620186a0611c5086518760a0015160010188604001518c61066b565b811515611c5957fe5b066080860152600554600160a060020a03166399f1718a6060870151876080015160006040516060015260405160e060020a63ffffffff851602815260048101929092526024820152604401606060405180830381600087803b1515611cbe57600080fd5b6102c65a03f11515611ccf57600080fd5b505050604051805190602001805190602001805160408801525060208601528452600160a060020a03861663d9d1f5d989608088015160405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515611d4057600080fd5b6102c65a03f11515611d5157600080fd5b505050600084600001511115611e6e57600354600160a060020a0316925082630963d4b78551875160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600b60648201527f2e2e6e616d65206d652e2e000000000000000000000000000000000000000000608482015260a401602060405180830381600087803b1515611dfc57600080fd5b6102c65a03f11515611e0d57600080fd5b50505060405180516060860152508451600160a060020a0316600080516020612115833981519152896000875188606001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a2612043565b600084602001511115611f6557600654600160a060020a031691508163d339254560208601518660400151885160006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b1515611ef057600080fd5b6102c65a03f11515611f0157600080fd5b50505060405180516060860152508451600160a060020a0316600080516020612115833981519152896001876020015188606001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a2612043565b6000846040015111156101a85750600754600160a060020a03168063a9059cbb8651866040015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611fd857600080fd5b6102c65a03f11515611fe957600080fd5b50505060405180515085905051600160a060020a0316600080516020612115833981519152896002600088604001516040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b5050505050505050565b60c0604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b610100604051908101604090815260008083526020830181905290820152606081016120b7612102565b8152600060208201819052604082018190526060820181905260809091015290565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6020604051908101604052600081529056006149ca12dd2214b111395003fbe0292f95cb44225bc42332215b440c26edcd2aa165627a7a72305820826886f76af1a8b15fbff6837c322577330f1319208574e9b02efae09e1cb5070029

Swarm Source

bzzr://826886f76af1a8b15fbff6837c322577330f1319208574e9b02efae09e1cb507
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.