ETH Price: $3,198.27 (-0.12%)

Contract

0x6c602F1798A453f90F249E208e2b64C7c09226F7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Break Mentoring88325412019-10-29 6:38:271840 days ago1572331107IN
0x6c602F17...7c09226F7
0 ETH0.000031061
Break Mentoring82406562019-07-28 18:17:521932 days ago1564337872IN
0x6c602F17...7c09226F7
0 ETH0.000031061
Start Lecture82021562019-07-22 18:47:181938 days ago1563821238IN
0x6c602F17...7c09226F7
0.009 ETH0.00167494.8
Change Level Pri...79515762019-06-13 17:04:501977 days ago1560445490IN
0x6c602F17...7c09226F7
0 ETH0.000076642
Become Mentor79357312019-06-11 5:42:081980 days ago1560231728IN
0x6c602F17...7c09226F7
0 ETH0.000168022
Become Mentor78927512019-06-04 12:09:041986 days ago1559650144IN
0x6c602F17...7c09226F7
0 ETH0.0008737912.65
Start Lecture78629672019-05-30 20:08:391991 days ago1559246919IN
0x6c602F17...7c09226F7
0.00138 ETH0.0003196.9
Start Lecture78629662019-05-30 20:08:141991 days ago1559246894IN
0x6c602F17...7c09226F7
0.003 ETH0.002511616.9
Start Lecture78629532019-05-30 20:05:021991 days ago1559246702IN
0x6c602F17...7c09226F7
0.027 ETH0.0023736.02380952
Start Lecture78571662019-05-29 22:14:141992 days ago1559168054IN
0x6c602F17...7c09226F7
0.00207 ETH0.00196294.8
Become Mentor77135162019-05-07 11:53:122014 days ago1557229992IN
0x6c602F17...7c09226F7
0 ETH0.000252033
Change Level Pri...73547672019-03-12 14:17:292070 days ago1552400249IN
0x6c602F17...7c09226F7
0 ETH0.000038251
Start Lecture73546282019-03-12 13:48:532070 days ago1552398533IN
0x6c602F17...7c09226F7
0.001 ETH0.000348991
Start Lecture73545082019-03-12 13:24:442070 days ago1552397084IN
0x6c602F17...7c09226F7
0.001 ETH0.000363991
Change Level Pri...73545002019-03-12 13:23:202070 days ago1552397000IN
0x6c602F17...7c09226F7
0 ETH0.000038321
Change Level Pri...72955022019-03-03 8:33:032080 days ago1551601983IN
0x6c602F17...7c09226F7
0 ETH0.000114963
Become Mentor72700782019-02-26 12:14:092084 days ago1551183249IN
0x6c602F17...7c09226F7
0 ETH0.0008134615
Become Mentor72700762019-02-26 12:12:432084 days ago1551183163IN
0x6c602F17...7c09226F7
0 ETH0.0012601615
Change Level Pri...72319052019-02-17 12:43:462093 days ago1550407426IN
0x6c602F17...7c09226F7
0 ETH0.000229936
Change Level Pri...72318972019-02-17 12:42:142093 days ago1550407334IN
0x6c602F17...7c09226F7
0 ETH0.000268257
Change Level Pri...72231272019-02-15 10:24:502096 days ago1550226290IN
0x6c602F17...7c09226F7
0 ETH0.000195115.1
Change Level Pri...72231212019-02-15 10:22:262096 days ago1550226146IN
0x6c602F17...7c09226F7
0 ETH0.000194785.1
Become Mentor72221322019-02-15 4:35:582096 days ago1550205358IN
0x6c602F17...7c09226F7
0 ETH0.000345375
Change Level Pri...72180832019-02-14 5:07:162097 days ago1550120836IN
0x6c602F17...7c09226F7
0 ETH0.000153034
Break Mentoring72156412019-02-13 15:06:102097 days ago1550070370IN
0x6c602F17...7c09226F7
0 ETH0.000115165
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
82021562019-07-22 18:47:181938 days ago1563821238
0x6c602F17...7c09226F7
0.000261 ETH
82021562019-07-22 18:47:181938 days ago1563821238
0x6c602F17...7c09226F7
0.008739 ETH
78629662019-05-30 20:08:141991 days ago1559246894
0x6c602F17...7c09226F7
0.000087 ETH
78629662019-05-30 20:08:141991 days ago1559246894
0x6c602F17...7c09226F7
0.002913 ETH
78629532019-05-30 20:05:021991 days ago1559246702
0x6c602F17...7c09226F7
0.000783 ETH
78629532019-05-30 20:05:021991 days ago1559246702
0x6c602F17...7c09226F7
0.026217 ETH
78571662019-05-29 22:14:141992 days ago1559168054
0x6c602F17...7c09226F7
0.00006003 ETH
78571662019-05-29 22:14:141992 days ago1559168054
0x6c602F17...7c09226F7
0.00200997 ETH
73546282019-03-12 13:48:532070 days ago1552398533
0x6c602F17...7c09226F7
0.000029 ETH
73546282019-03-12 13:48:532070 days ago1552398533
0x6c602F17...7c09226F7
0.000971 ETH
73545082019-03-12 13:24:442070 days ago1552397084
0x6c602F17...7c09226F7
0.000029 ETH
73545082019-03-12 13:24:442070 days ago1552397084
0x6c602F17...7c09226F7
0.000971 ETH
72143822019-02-13 8:01:132098 days ago1550044873
0x6c602F17...7c09226F7
0.00000029 ETH
72143822019-02-13 8:01:132098 days ago1550044873
0x6c602F17...7c09226F7
0.00000971 ETH
72137642019-02-13 4:31:082098 days ago1550032268
0x6c602F17...7c09226F7
0.00000058 ETH
72137642019-02-13 4:31:082098 days ago1550032268
0x6c602F17...7c09226F7
0.00001942 ETH
72136242019-02-13 3:46:392098 days ago1550029599
0x6c602F17...7c09226F7
0.00000058 ETH
72136242019-02-13 3:46:392098 days ago1550029599
0x6c602F17...7c09226F7
0.00001942 ETH
72131832019-02-13 1:07:032098 days ago1550020023
0x6c602F17...7c09226F7
0.00000116 ETH
72131832019-02-13 1:07:032098 days ago1550020023
0x6c602F17...7c09226F7
0.00003884 ETH
72126462019-02-12 22:00:362098 days ago1550008836
0x6c602F17...7c09226F7
0.00000261 ETH
72126462019-02-12 22:00:362098 days ago1550008836
0x6c602F17...7c09226F7
0.00008739 ETH
72124942019-02-12 21:06:222098 days ago1550005582
0x6c602F17...7c09226F7
0.00000058 ETH
72124942019-02-12 21:06:222098 days ago1550005582
0x6c602F17...7c09226F7
0.00001942 ETH
72114342019-02-12 15:11:462098 days ago1549984306
0x6c602F17...7c09226F7
0.00000493 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Mentoring

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-10
*/

pragma solidity ^0.4.24;

// File: node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address private _owner;

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

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() internal {
    _owner = msg.sender;
    emit OwnershipTransferred(address(0), _owner);
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  /**
   * @return true if `msg.sender` is the owner of the contract.
   */
  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

// File: node_modules/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol

/**
 * @title Helps contracts guard against reentrancy attacks.
 * @author Remco Bloemen <remco@2π.com>, Eenae <[email protected]>
 * @dev If you mark a function `nonReentrant`, you should also
 * mark it `external`.
 */
contract ReentrancyGuard {

  /// @dev counter to allow mutex lock with only one SSTORE operation
  uint256 private _guardCounter;

  constructor() internal {
    // The counter starts at one to prevent changing it from zero to a non-zero
    // value, which is a more expensive operation.
    _guardCounter = 1;
  }

  /**
   * @dev Prevents a contract from calling itself, directly or indirectly.
   * Calling a `nonReentrant` function from another `nonReentrant`
   * function is not supported. It is possible to prevent this from happening
   * by making the `nonReentrant` function external, and make it call a
   * `private` function that does the actual work.
   */
  modifier nonReentrant() {
    _guardCounter += 1;
    uint256 localCounter = _guardCounter;
    _;
    require(localCounter == _guardCounter);
  }

}

// File: node_modules/openzeppelin-solidity/contracts/math/Safemath.sol

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

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts 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 Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

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

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

// File: node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: lib/CanReclaimToken.sol

/**
 * @title Contracts that should be able to recover tokens
 * @author SylTi
 * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
 * This will prevent any accidental loss of tokens.
 */
contract CanReclaimToken is Ownable {

  /**
   * @dev Reclaim all ERC20 compatible tokens
   * @param token ERC20 The address of the token contract
   */
  function reclaimToken(IERC20 token) external onlyOwner {
    if (address(token) == address(0)) {
      owner().transfer(address(this).balance);
      return;
    }
    uint256 balance = token.balanceOf(this);
    token.transfer(owner(), balance);
  }

}

// File: contracts/Mentoring.sol

interface HEROES {
  function getLevel(uint256 tokenId) external view returns (uint256);
  function getGenes(uint256 tokenId) external view returns (uint256);
  function getRace(uint256 tokenId) external view returns (uint256);
  function lock(uint256 tokenId, uint256 lockedTo, bool onlyFreeze) external returns (bool);
  function unlock(uint256 tokenId) external returns (bool);
  function ownerOf(uint256 tokenId) external view returns (address);
  function isCallerAgentOf(uint tokenId) external view returns (bool);
  function addWin(uint256 tokenId, uint winsCount, uint levelUp) external returns (bool);
  function addLoss(uint256 tokenId, uint256 lossesCount, uint levelDown) external returns (bool);
}


contract Mentoring is Ownable, ReentrancyGuard, CanReclaimToken  {
  using SafeMath for uint256;

  event BecomeMentor(uint256 indexed mentorId);
  event BreakMentoring(uint256 indexed mentorId);
  event ChangeLevelPrice(uint256 indexed mentorId, uint256 newLevelPrice);
  event Income(address source, uint256 amount);

  event StartLecture(uint256 indexed lectureId,
    uint256 indexed mentorId,
    uint256 indexed studentId,
    uint256 mentorLevel,
    uint256 studentLevel,
    uint256 levelUp,
    uint256 levelPrice,
    uint256 startedAt,
    uint256 endsAt);

//  event Withdraw(address to, uint256 amount);

  struct Lecture {
    uint256 mentorId;
    uint256 studentId;
    uint256 mentorLevel;
    uint256 studentLevel;
    uint256 levelUp;
    uint256 levelPrice;
//    uint256 cost;
    uint256 startedAt;
    uint256 endsAt;
  }

  HEROES public heroes;

  uint256 public fee = 290; //2.9%
  uint256 public levelUpTime = 20 minutes;

  mapping(uint256 => uint256) internal prices;

  Lecture[] internal lectures;
  /* tokenId => lecture index */
  mapping(uint256 => uint256[]) studentToLecture;
  mapping(uint256 => uint256[]) mentorToLecture;

  modifier onlyOwnerOf(uint256 _tokenId) {
    require(heroes.ownerOf(_tokenId) == msg.sender);
    _;
  }

  constructor (HEROES _heroes) public {
    require(address(_heroes) != address(0));
    heroes = _heroes;

    //fix lectureId issue - add zero lecture
    lectures.length = 1;
  }

  /// @notice The fallback function payable
  function() external payable {
    require(msg.value > 0);
    _flushBalance();
  }

  function _flushBalance() private {
    uint256 balance = address(this).balance;
    if (balance > 0) {
      address(heroes).transfer(balance);
      emit Income(address(this), balance);
    }
  }


  function _distributePayment(address _account, uint256 _amount) internal {
    uint256 pcnt = _getPercent(_amount, fee);
    uint256 amount = _amount.sub(pcnt);
    _account.transfer(amount);
  }

  /**
   * Set fee
   */
  function setFee(uint256 _fee) external onlyOwner
  {
    fee = _fee;
  }

  // MENTORING

  /**
   * Set the one level up time
   */

  function setLevelUpTime(uint256 _newLevelUpTime) external onlyOwner
  {
    levelUpTime = _newLevelUpTime;
  }

  function isMentor(uint256 _mentorId) public view returns (bool)
  {
    //проверяем установлена ли цена обучения и текущий агент пресонажа =менторство
    return heroes.isCallerAgentOf(_mentorId); // && prices[_mentorId] != 0;
  }

  function inStudying(uint256 _tokenId) public view returns (bool) {
    return now <= lectures[getLastLectureIdAsStudent(_tokenId)].endsAt;
  }

  function inMentoring(uint256 _tokenId) public view returns (bool) {
    return now <= lectures[getLastLectureIdAsMentor(_tokenId)].endsAt;
  }

  function inLecture(uint256 _tokenId) public view returns (bool)
  {
    return inMentoring(_tokenId) || inStudying(_tokenId);
  }

  /**
   * Set the character as mentor
   */
  function becomeMentor(uint256 _mentorId, uint256 _levelPrice) external onlyOwnerOf(_mentorId) {
    require(_levelPrice > 0);
    require(heroes.lock(_mentorId, 0, false));
    prices[_mentorId] = _levelPrice;
    emit BecomeMentor(_mentorId);
    emit ChangeLevelPrice(_mentorId, _levelPrice);
  }

  /**
   * Change price
   */
  function changeLevelPrice(uint256 _mentorId, uint256 _levelPrice) external onlyOwnerOf(_mentorId) {
    require(_levelPrice > 0);
    require(isMentor(_mentorId));
    prices[_mentorId] = _levelPrice;
    emit ChangeLevelPrice(_mentorId, _levelPrice);
  }

  /**
   * Break mentoring for character
   */
  function breakMentoring(uint256 _mentorId) external onlyOwnerOf(_mentorId)
  {
    require(heroes.unlock(_mentorId));
    emit BreakMentoring(_mentorId);
  }

  function getMentor(uint256 _mentorId) external view returns (uint256 level, uint256 price) {
    require(isMentor(_mentorId));
    return (heroes.getLevel(_mentorId), prices[_mentorId]);
  }

  function _calcLevelIncrease(uint256 _mentorLevel, uint256 _studentLevel) internal pure returns (uint256) {
    if (_mentorLevel < _studentLevel) {
      return 0;
    }
    uint256 levelDiff = _mentorLevel - _studentLevel;
    return (levelDiff >> 1) + (levelDiff & 1);
  }

  /**
   * calc full cost of study
   */
  function calcCost(uint256 _mentorId, uint256 _studentId) external view returns (uint256) {
    uint256 levelUp = _calcLevelIncrease(heroes.getLevel(_mentorId), heroes.getLevel(_studentId));
    return levelUp.mul(prices[_mentorId]);
  }

  function isRaceSuitable(uint256 _mentorId, uint256 _studentId) public view returns (bool) {
    uint256 mentorRace = heroes.getGenes(_mentorId) & 0xFFFF;
    uint256 studentRace = heroes.getGenes(_studentId) & 0xFFFF;
    return (mentorRace == 1 || mentorRace == studentRace);
  }

  /**
   * Start the study
   */
  function startLecture(uint256 _mentorId, uint256 _studentId) external payable onlyOwnerOf(_studentId) {
    require(isMentor(_mentorId));

    // Check race
    require(isRaceSuitable(_mentorId, _studentId));

    uint256 mentorLevel = heroes.getLevel(_mentorId);
    uint256 studentLevel = heroes.getLevel(_studentId);

    uint256 levelUp = _calcLevelIncrease(mentorLevel, studentLevel);
    require(levelUp > 0);

    // check sum is enough
    uint256 cost = levelUp.mul(prices[_mentorId]);
    require(cost == msg.value);

    Lecture memory lecture = Lecture({
      mentorId : _mentorId,
      studentId : _studentId,
      mentorLevel: mentorLevel,
      studentLevel: studentLevel,
      levelUp: levelUp,
      levelPrice : prices[_mentorId],
      startedAt : now,
      endsAt : now + levelUp.mul(levelUpTime)
      });

    //locking mentor
    require(heroes.lock(_mentorId, lecture.endsAt, true));

    //locking student
    require(heroes.lock(_studentId, lecture.endsAt, true));


    //save lecture
    //id starts from 1
    uint256 lectureId = lectures.push(lecture) - 1;

    studentToLecture[_studentId].push(lectureId);
    mentorToLecture[_mentorId].push(lectureId);

    heroes.addWin(_studentId, 0, levelUp);

    emit StartLecture(
      lectureId,
      _mentorId,
      _studentId,
      lecture.mentorLevel,
      lecture.studentLevel,
      lecture.levelUp,
      lecture.levelPrice,
      lecture.startedAt,
      lecture.endsAt
    );

    _distributePayment(heroes.ownerOf(_mentorId), cost);

    _flushBalance();
  }

  function lectureExists(uint256 _lectureId) public view returns (bool)
  {
    return (_lectureId > 0 && _lectureId < lectures.length);
  }

  function getLecture(uint256 lectureId) external view returns (
    uint256 mentorId,
    uint256 studentId,
    uint256 mentorLevel,
    uint256 studentLevel,
    uint256 levelUp,
    uint256 levelPrice,
    uint256 cost,
    uint256 startedAt,
    uint256 endsAt)
  {
    require(lectureExists(lectureId));
    Lecture memory l = lectures[lectureId];
    return (l.mentorId, l.studentId, l.mentorLevel, l.studentLevel, l.levelUp, l.levelPrice, l.levelUp.mul(l.levelPrice), l.startedAt, l.endsAt);
  }

  function getLastLectureIdAsMentor(uint256 _tokenId) public view returns (uint256) {
    return mentorToLecture[_tokenId].length > 0 ? mentorToLecture[_tokenId][mentorToLecture[_tokenId].length - 1] : 0;
  }
  function getLastLectureIdAsStudent(uint256 _tokenId) public view returns (uint256) {
    return studentToLecture[_tokenId].length > 0 ? studentToLecture[_tokenId][studentToLecture[_tokenId].length - 1] : 0;
  }
 

  function getLastLecture(uint256 tokenId) external view returns (
    uint256 lectureId,
    uint256 mentorId,
    uint256 studentId,
    uint256 mentorLevel,
    uint256 studentLevel,
    uint256 levelUp,
    uint256 levelPrice,
    uint256 cost,
    uint256 startedAt,
    uint256 endsAt)
  {
    uint256 mentorLectureId = getLastLectureIdAsMentor(tokenId);
    uint256 studentLectureId = getLastLectureIdAsStudent(tokenId);
    lectureId = studentLectureId > mentorLectureId ? studentLectureId : mentorLectureId;
    require(lectureExists(lectureId));
    Lecture storage l = lectures[lectureId];
    return (lectureId, l.mentorId, l.studentId, l.mentorLevel, l.studentLevel, l.levelUp, l.levelPrice, l.levelUp.mul(l.levelPrice), l.startedAt, l.endsAt);
  }

  //// SERVICE
  //1% - 100, 10% - 1000 50% - 5000
  function _getPercent(uint256 _v, uint256 _p) internal pure returns (uint)    {
    return _v.mul(_p).div(10000);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_mentorId","type":"uint256"}],"name":"isMentor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_mentorId","type":"uint256"},{"name":"_levelPrice","type":"uint256"}],"name":"changeLevelPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getLastLecture","outputs":[{"name":"lectureId","type":"uint256"},{"name":"mentorId","type":"uint256"},{"name":"studentId","type":"uint256"},{"name":"mentorLevel","type":"uint256"},{"name":"studentLevel","type":"uint256"},{"name":"levelUp","type":"uint256"},{"name":"levelPrice","type":"uint256"},{"name":"cost","type":"uint256"},{"name":"startedAt","type":"uint256"},{"name":"endsAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_mentorId","type":"uint256"}],"name":"breakMentoring","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"heroes","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"inStudying","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getLastLectureIdAsStudent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_mentorId","type":"uint256"}],"name":"getMentor","outputs":[{"name":"level","type":"uint256"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"inLecture","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"lectureId","type":"uint256"}],"name":"getLecture","outputs":[{"name":"mentorId","type":"uint256"},{"name":"studentId","type":"uint256"},{"name":"mentorLevel","type":"uint256"},{"name":"studentLevel","type":"uint256"},{"name":"levelUp","type":"uint256"},{"name":"levelPrice","type":"uint256"},{"name":"cost","type":"uint256"},{"name":"startedAt","type":"uint256"},{"name":"endsAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newLevelUpTime","type":"uint256"}],"name":"setLevelUpTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_mentorId","type":"uint256"},{"name":"_levelPrice","type":"uint256"}],"name":"becomeMentor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_mentorId","type":"uint256"},{"name":"_studentId","type":"uint256"}],"name":"calcCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_mentorId","type":"uint256"},{"name":"_studentId","type":"uint256"}],"name":"startLecture","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"levelUpTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"inMentoring","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_lectureId","type":"uint256"}],"name":"lectureExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_mentorId","type":"uint256"},{"name":"_studentId","type":"uint256"}],"name":"isRaceSuitable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getLastLectureIdAsMentor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_heroes","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"mentorId","type":"uint256"}],"name":"BecomeMentor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"mentorId","type":"uint256"}],"name":"BreakMentoring","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"mentorId","type":"uint256"},{"indexed":false,"name":"newLevelPrice","type":"uint256"}],"name":"ChangeLevelPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Income","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"lectureId","type":"uint256"},{"indexed":true,"name":"mentorId","type":"uint256"},{"indexed":true,"name":"studentId","type":"uint256"},{"indexed":false,"name":"mentorLevel","type":"uint256"},{"indexed":false,"name":"studentLevel","type":"uint256"},{"indexed":false,"name":"levelUp","type":"uint256"},{"indexed":false,"name":"levelPrice","type":"uint256"},{"indexed":false,"name":"startedAt","type":"uint256"},{"indexed":false,"name":"endsAt","type":"uint256"}],"name":"StartLecture","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526101226003556104b06004553480156200001d57600080fd5b5060405160208062001d19833981016040819052905160008054600160a060020a03191633178082559192600160a060020a0392909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018055600160a060020a03811615156200009457600080fd5b60028054600160a060020a031916600160a060020a0383161790556001620000be600682620000c6565b50506200014e565b815481835581811115620000f557600802816008028360005260206000209182019101620000f59190620000fa565b505050565b6200014b91905b8082111562000147576000808255600182018190556002820181905560038201819055600482018190556005820181905560068201819055600782015560080162000101565b5090565b90565b611bbb806200015e6000396000f3006080604052600436106101535763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630129f2a2811461016a578063075f447b146101965780631331e6b0146101b157806317ffc320146102195780631fede9d91461023a578063230bb9f61461025257806332e38459146102835780633c39f6791461029b5780634e0ca1cf146102c557806353841e12146102f657806369fe0e2d1461030e578063701a487e14610326578063715018a6146103855780637349843c1461039a5780638da5cb5b146103b25780638f32d59b146103c757806399a3b8ed146103dc578063a5a13ddc146103f7578063ae1e033014610412578063cf2ab40914610420578063ddca3f4314610435578063e45af7c51461044a578063ee8b125d14610462578063efdf257a1461047a578063f2fde38b14610495578063f36de3f5146104b6575b6000341161016057600080fd5b6101686104ce565b005b34801561017657600080fd5b50610182600435610553565b604080519115158252519081900360200190f35b3480156101a257600080fd5b506101686004356024356105eb565b3480156101bd57600080fd5b506101c96004356106ec565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561022557600080fd5b50610168600160a060020a03600435166107c1565b34801561024657600080fd5b5061016860043561096f565b34801561025e57600080fd5b50610267610ad0565b60408051600160a060020a039092168252519081900360200190f35b34801561028f57600080fd5b50610182600435610adf565b3480156102a757600080fd5b506102b3600435610b12565b60408051918252519081900360200190f35b3480156102d157600080fd5b506102dd600435610b5e565b6040805192835260208301919091528051918290030190f35b34801561030257600080fd5b50610182600435610c09565b34801561031a57600080fd5b50610168600435610c23565b34801561033257600080fd5b5061033e600435610c3b565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b34801561039157600080fd5b50610168610d27565b3480156103a657600080fd5b50610168600435610d91565b3480156103be57600080fd5b50610267610da9565b3480156103d357600080fd5b50610182610db8565b3480156103e857600080fd5b50610168600435602435610dc9565b34801561040357600080fd5b506102b3600435602435610f8c565b6101686004356024356110c0565b34801561042c57600080fd5b506102b36117de565b34801561044157600080fd5b506102b36117e4565b34801561045657600080fd5b506101826004356117ea565b34801561046e57600080fd5b506101826004356117f7565b34801561048657600080fd5b5061018260043560243561180b565b3480156104a157600080fd5b50610168600160a060020a036004351661195c565b3480156104c257600080fd5b506102b3600435611978565b3031600081111561055057600254604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610513573d6000803e3d6000fd5b50604080513081526020810183905281517f0d2e009b696be50eaeafa43283c2e91362ec7d038b2af93783ec767d536ad278929181900390910190a15b50565b600254604080517fa16473b1000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a03169163a16473b191602480830192602092919082900301818787803b1580156105b957600080fd5b505af11580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b505192915050565b6002546040805160e160020a6331a9108f02815260048101859052905184923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b15801561064057600080fd5b505af1158015610654573d6000803e3d6000fd5b505050506040513d602081101561066a57600080fd5b5051600160a060020a03161461067f57600080fd5b6000821161068c57600080fd5b61069583610553565b15156106a057600080fd5b6000838152600560209081526040918290208490558151848152915185927fd5ff1816fc1e1872c8898e0fbd6de6fe5bded21494bfdd85c466d209b192049792908290030190a2505050565b60008060008060008060008060008060008060006107098e611978565b92506107148e610b12565b91508282116107235782610725565b815b9c506107308d6117f7565b151561073b57600080fd5b600680548e90811061074957fe5b906000526020600020906008020190508c816000015482600101548360020154846003015485600401548660050154610793886005015489600401546119b290919063ffffffff16565b886006015489600701549c509c509c509c509c509c509c509c509c509c505050509193959799509193959799565b60006107cb610db8565b15156107d657600080fd5b600160a060020a038216151561082c576107ee610da9565b604051600160a060020a039190911690303180156108fc02916000818181858888f19350505050158015610826573d6000803e3d6000fd5b5061096b565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561088d57600080fd5b505af11580156108a1573d6000803e3d6000fd5b505050506040513d60208110156108b757600080fd5b50519050600160a060020a03821663a9059cbb6108d2610da9565b836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561093e57600080fd5b505af1158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b50505b5050565b6002546040805160e160020a6331a9108f02815260048101849052905183923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050506040513d60208110156109ee57600080fd5b5051600160a060020a031614610a0357600080fd5b600254604080517f6198e339000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a0390921691636198e339916024808201926020929091908290030181600087803b158015610a6a57600080fd5b505af1158015610a7e573d6000803e3d6000fd5b505050506040513d6020811015610a9457600080fd5b50511515610aa157600080fd5b60405182907fe915e5ee020091d04485e69797eefc0680771c43bd87f60de3ca3d4ffcdc03ac90600090a25050565b600254600160a060020a031681565b60006006610aec83610b12565b81548110610af657fe5b9060005260206000209060080201600701544211159050919050565b6000818152600760205260408120548110610b2e576000610b58565b600082815260076020526040902080546000198101908110610b4c57fe5b90600052602060002001545b92915050565b600080610b6a83610553565b1515610b7557600080fd5b6002546040805160e660020a6302192075028152600481018690529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b505050506040513d6020811015610bf057600080fd5b5051600093845260056020526040909320549293915050565b6000610c14826117ea565b80610b585750610b5882610adf565b610c2b610db8565b1515610c3657600080fd5b600355565b6000806000806000806000806000610c51611b49565b610c5a8b6117f7565b1515610c6557600080fd5b600680548c908110610c7357fe5b600091825260209182902060408051610100810182526008909302909101805480845260018201549484018590526002820154928401839052600382015460608501819052600483015460808601819052600584015460a08701819052600685015460c088015260079094015460e08701529496509094939091610cfd828263ffffffff6119b216565b8760c001518860e00151995099509950995099509950995099509950509193959799909294969850565b610d2f610db8565b1515610d3a57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b610d99610db8565b1515610da457600080fd5b600455565b600054600160a060020a031690565b600054600160a060020a0316331490565b6002546040805160e160020a6331a9108f02815260048101859052905184923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b5051600160a060020a031614610e5d57600080fd5b60008211610e6a57600080fd5b600254604080517fda12ffc500000000000000000000000000000000000000000000000000000000815260048101869052600060248201819052604482018190529151600160a060020a039093169263da12ffc592606480840193602093929083900390910190829087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d6020811015610f0c57600080fd5b50511515610f1957600080fd5b6000838152600560205260408082208490555184917f0ace9a284cbaf022c3396d879fcfe7ad3843167c19f4493e4edfd186efd48a9691a260408051838152905184917fd5ff1816fc1e1872c8898e0fbd6de6fe5bded21494bfdd85c466d209b1920497919081900360200190a2505050565b6002546040805160e660020a6302192075028152600481018590529051600092839261109392600160a060020a03909216916386481d409160248082019260209290919082900301818887803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b505050506040513d602081101561100f57600080fd5b50516002546040805160e660020a6302192075028152600481018890529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b15801561106257600080fd5b505af1158015611076573d6000803e3d6000fd5b505050506040513d602081101561108c57600080fd5b50516119e7565b6000858152600560205260409020549091506110b690829063ffffffff6119b216565b91505b5092915050565b6000806000806110ce611b49565b6002546040805160e160020a6331a9108f02815260048101899052905160009289923392600160a060020a0390921691636352211e9160248082019260209290919082900301818987803b15801561112557600080fd5b505af1158015611139573d6000803e3d6000fd5b505050506040513d602081101561114f57600080fd5b5051600160a060020a03161461116457600080fd5b61116d89610553565b151561117857600080fd5b611182898961180b565b151561118d57600080fd5b6002546040805160e660020a6302192075028152600481018c90529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b1580156111de57600080fd5b505af11580156111f2573d6000803e3d6000fd5b505050506040513d602081101561120857600080fd5b50516002546040805160e660020a6302192075028152600481018c90529051929950600160a060020a03909116916386481d40916024808201926020929091908290030181600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b5051955061129687876119e7565b9450600085116112a557600080fd5b6000898152600560205260409020546112c590869063ffffffff6119b216565b93503484146112d357600080fd5b610100604051908101604052808a8152602001898152602001888152602001878152602001868152602001600560008c8152602001908152602001600020548152602001428152602001611332600454886119b290919063ffffffff16565b4201905260025460e0820151604080517fda12ffc5000000000000000000000000000000000000000000000000000000008152600481018e905260248101929092526001604483015251929550600160a060020a039091169163da12ffc5916064808201926020929091908290030181600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050506040513d60208110156113dd57600080fd5b505115156113ea57600080fd5b60025460e0840151604080517fda12ffc5000000000000000000000000000000000000000000000000000000008152600481018c905260248101929092526001604483015251600160a060020a039092169163da12ffc5916064808201926020929091908290030181600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050506040513d602081101561148e57600080fd5b5051151561149b57600080fd5b60068054600181810183556000928352855160088084027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101929092556020808901517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408401556040808a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015560608a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4285015560808a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4385015560a08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4485015560c08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4585015560e08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d46909401939093558d86526007815282862080548086018255908752818720018590558e865290815281852080549384018155855280852090920183905560025481517fa69b97d5000000000000000000000000000000000000000000000000000000008152600481018e905260248101869052604481018b90529151939650600160a060020a03169363a69b97d593606480840194939192918390030190829087803b1580156116a657600080fd5b505af11580156116ba573d6000803e3d6000fd5b505050506040513d60208110156116d057600080fd5b505060408084015160608086015160808088015160a0808a015160c0808c015160e08d01518a51998a5260208a0197909752888a0194909452958701529185015283015291518a928c9286927fca8eb43dd243d57b1415a66a4b10fb68e3a605a8028e74e4da07028fd91a7380929181900390910190a46002546040805160e160020a6331a9108f028152600481018c905290516117cb92600160a060020a031691636352211e9160248083019260209291908290030181600087803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505050506040513d60208110156117c357600080fd5b505185611a0d565b6117d36104ce565b505050505050505050565b60045481565b60035481565b60006006610aec83611978565b60008082118015610b585750506006541190565b600254604080517fa2e4b12e00000000000000000000000000000000000000000000000000000000815260048101859052905160009283928392600160a060020a039092169163a2e4b12e9160248082019260209290919082900301818787803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b5051600254604080517fa2e4b12e00000000000000000000000000000000000000000000000000000000815260048101889052905161ffff9093169450600160a060020a039091169163a2e4b12e916024808201926020929091908290030181600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d602081101561193d57600080fd5b505161ffff169050600182148061195357508082145b95945050505050565b611964610db8565b151561196f57600080fd5b61055081611a6e565b6000818152600860205260408120548110611994576000610b58565b600082815260086020526040902080546000198101908110610b4c57fe5b6000808315156119c557600091506110b9565b508282028284828115156119d557fe5b04146119e057600080fd5b9392505050565b600080828410156119fb57600091506110b9565b50506001910390811660029091040190565b600080611a1c83600354611aeb565b9150611a2e838363ffffffff611b0f16565b604051909150600160a060020a0385169082156108fc029083906000818181858888f19350505050158015611a67573d6000803e3d6000fd5b5050505050565b600160a060020a0381161515611a8357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006119e0612710611b03858563ffffffff6119b216565b9063ffffffff611b2616565b60008083831115611b1f57600080fd5b5050900390565b600080808311611b3557600080fd5b8284811515611b4057fe5b04949350505050565b61010060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820482a7d2d84cf1716ee8bd3edcd2525b634b315a1496d490556725ec1acf4d0640029000000000000000000000000d2bae9a30a40376d25353773010ffe52dba0d688

Deployed Bytecode

0x6080604052600436106101535763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630129f2a2811461016a578063075f447b146101965780631331e6b0146101b157806317ffc320146102195780631fede9d91461023a578063230bb9f61461025257806332e38459146102835780633c39f6791461029b5780634e0ca1cf146102c557806353841e12146102f657806369fe0e2d1461030e578063701a487e14610326578063715018a6146103855780637349843c1461039a5780638da5cb5b146103b25780638f32d59b146103c757806399a3b8ed146103dc578063a5a13ddc146103f7578063ae1e033014610412578063cf2ab40914610420578063ddca3f4314610435578063e45af7c51461044a578063ee8b125d14610462578063efdf257a1461047a578063f2fde38b14610495578063f36de3f5146104b6575b6000341161016057600080fd5b6101686104ce565b005b34801561017657600080fd5b50610182600435610553565b604080519115158252519081900360200190f35b3480156101a257600080fd5b506101686004356024356105eb565b3480156101bd57600080fd5b506101c96004356106ec565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561022557600080fd5b50610168600160a060020a03600435166107c1565b34801561024657600080fd5b5061016860043561096f565b34801561025e57600080fd5b50610267610ad0565b60408051600160a060020a039092168252519081900360200190f35b34801561028f57600080fd5b50610182600435610adf565b3480156102a757600080fd5b506102b3600435610b12565b60408051918252519081900360200190f35b3480156102d157600080fd5b506102dd600435610b5e565b6040805192835260208301919091528051918290030190f35b34801561030257600080fd5b50610182600435610c09565b34801561031a57600080fd5b50610168600435610c23565b34801561033257600080fd5b5061033e600435610c3b565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b34801561039157600080fd5b50610168610d27565b3480156103a657600080fd5b50610168600435610d91565b3480156103be57600080fd5b50610267610da9565b3480156103d357600080fd5b50610182610db8565b3480156103e857600080fd5b50610168600435602435610dc9565b34801561040357600080fd5b506102b3600435602435610f8c565b6101686004356024356110c0565b34801561042c57600080fd5b506102b36117de565b34801561044157600080fd5b506102b36117e4565b34801561045657600080fd5b506101826004356117ea565b34801561046e57600080fd5b506101826004356117f7565b34801561048657600080fd5b5061018260043560243561180b565b3480156104a157600080fd5b50610168600160a060020a036004351661195c565b3480156104c257600080fd5b506102b3600435611978565b3031600081111561055057600254604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610513573d6000803e3d6000fd5b50604080513081526020810183905281517f0d2e009b696be50eaeafa43283c2e91362ec7d038b2af93783ec767d536ad278929181900390910190a15b50565b600254604080517fa16473b1000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a03169163a16473b191602480830192602092919082900301818787803b1580156105b957600080fd5b505af11580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b505192915050565b6002546040805160e160020a6331a9108f02815260048101859052905184923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b15801561064057600080fd5b505af1158015610654573d6000803e3d6000fd5b505050506040513d602081101561066a57600080fd5b5051600160a060020a03161461067f57600080fd5b6000821161068c57600080fd5b61069583610553565b15156106a057600080fd5b6000838152600560209081526040918290208490558151848152915185927fd5ff1816fc1e1872c8898e0fbd6de6fe5bded21494bfdd85c466d209b192049792908290030190a2505050565b60008060008060008060008060008060008060006107098e611978565b92506107148e610b12565b91508282116107235782610725565b815b9c506107308d6117f7565b151561073b57600080fd5b600680548e90811061074957fe5b906000526020600020906008020190508c816000015482600101548360020154846003015485600401548660050154610793886005015489600401546119b290919063ffffffff16565b886006015489600701549c509c509c509c509c509c509c509c509c509c505050509193959799509193959799565b60006107cb610db8565b15156107d657600080fd5b600160a060020a038216151561082c576107ee610da9565b604051600160a060020a039190911690303180156108fc02916000818181858888f19350505050158015610826573d6000803e3d6000fd5b5061096b565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561088d57600080fd5b505af11580156108a1573d6000803e3d6000fd5b505050506040513d60208110156108b757600080fd5b50519050600160a060020a03821663a9059cbb6108d2610da9565b836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561093e57600080fd5b505af1158015610952573d6000803e3d6000fd5b505050506040513d602081101561096857600080fd5b50505b5050565b6002546040805160e160020a6331a9108f02815260048101849052905183923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050506040513d60208110156109ee57600080fd5b5051600160a060020a031614610a0357600080fd5b600254604080517f6198e339000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a0390921691636198e339916024808201926020929091908290030181600087803b158015610a6a57600080fd5b505af1158015610a7e573d6000803e3d6000fd5b505050506040513d6020811015610a9457600080fd5b50511515610aa157600080fd5b60405182907fe915e5ee020091d04485e69797eefc0680771c43bd87f60de3ca3d4ffcdc03ac90600090a25050565b600254600160a060020a031681565b60006006610aec83610b12565b81548110610af657fe5b9060005260206000209060080201600701544211159050919050565b6000818152600760205260408120548110610b2e576000610b58565b600082815260076020526040902080546000198101908110610b4c57fe5b90600052602060002001545b92915050565b600080610b6a83610553565b1515610b7557600080fd5b6002546040805160e660020a6302192075028152600481018690529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b505050506040513d6020811015610bf057600080fd5b5051600093845260056020526040909320549293915050565b6000610c14826117ea565b80610b585750610b5882610adf565b610c2b610db8565b1515610c3657600080fd5b600355565b6000806000806000806000806000610c51611b49565b610c5a8b6117f7565b1515610c6557600080fd5b600680548c908110610c7357fe5b600091825260209182902060408051610100810182526008909302909101805480845260018201549484018590526002820154928401839052600382015460608501819052600483015460808601819052600584015460a08701819052600685015460c088015260079094015460e08701529496509094939091610cfd828263ffffffff6119b216565b8760c001518860e00151995099509950995099509950995099509950509193959799909294969850565b610d2f610db8565b1515610d3a57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b610d99610db8565b1515610da457600080fd5b600455565b600054600160a060020a031690565b600054600160a060020a0316331490565b6002546040805160e160020a6331a9108f02815260048101859052905184923392600160a060020a0390911691636352211e916024808201926020929091908290030181600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b5051600160a060020a031614610e5d57600080fd5b60008211610e6a57600080fd5b600254604080517fda12ffc500000000000000000000000000000000000000000000000000000000815260048101869052600060248201819052604482018190529151600160a060020a039093169263da12ffc592606480840193602093929083900390910190829087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d6020811015610f0c57600080fd5b50511515610f1957600080fd5b6000838152600560205260408082208490555184917f0ace9a284cbaf022c3396d879fcfe7ad3843167c19f4493e4edfd186efd48a9691a260408051838152905184917fd5ff1816fc1e1872c8898e0fbd6de6fe5bded21494bfdd85c466d209b1920497919081900360200190a2505050565b6002546040805160e660020a6302192075028152600481018590529051600092839261109392600160a060020a03909216916386481d409160248082019260209290919082900301818887803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b505050506040513d602081101561100f57600080fd5b50516002546040805160e660020a6302192075028152600481018890529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b15801561106257600080fd5b505af1158015611076573d6000803e3d6000fd5b505050506040513d602081101561108c57600080fd5b50516119e7565b6000858152600560205260409020549091506110b690829063ffffffff6119b216565b91505b5092915050565b6000806000806110ce611b49565b6002546040805160e160020a6331a9108f02815260048101899052905160009289923392600160a060020a0390921691636352211e9160248082019260209290919082900301818987803b15801561112557600080fd5b505af1158015611139573d6000803e3d6000fd5b505050506040513d602081101561114f57600080fd5b5051600160a060020a03161461116457600080fd5b61116d89610553565b151561117857600080fd5b611182898961180b565b151561118d57600080fd5b6002546040805160e660020a6302192075028152600481018c90529051600160a060020a03909216916386481d40916024808201926020929091908290030181600087803b1580156111de57600080fd5b505af11580156111f2573d6000803e3d6000fd5b505050506040513d602081101561120857600080fd5b50516002546040805160e660020a6302192075028152600481018c90529051929950600160a060020a03909116916386481d40916024808201926020929091908290030181600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b5051955061129687876119e7565b9450600085116112a557600080fd5b6000898152600560205260409020546112c590869063ffffffff6119b216565b93503484146112d357600080fd5b610100604051908101604052808a8152602001898152602001888152602001878152602001868152602001600560008c8152602001908152602001600020548152602001428152602001611332600454886119b290919063ffffffff16565b4201905260025460e0820151604080517fda12ffc5000000000000000000000000000000000000000000000000000000008152600481018e905260248101929092526001604483015251929550600160a060020a039091169163da12ffc5916064808201926020929091908290030181600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050506040513d60208110156113dd57600080fd5b505115156113ea57600080fd5b60025460e0840151604080517fda12ffc5000000000000000000000000000000000000000000000000000000008152600481018c905260248101929092526001604483015251600160a060020a039092169163da12ffc5916064808201926020929091908290030181600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050506040513d602081101561148e57600080fd5b5051151561149b57600080fd5b60068054600181810183556000928352855160088084027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101929092556020808901517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408401556040808a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015560608a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4285015560808a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4385015560a08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4485015560c08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4585015560e08a01517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d46909401939093558d86526007815282862080548086018255908752818720018590558e865290815281852080549384018155855280852090920183905560025481517fa69b97d5000000000000000000000000000000000000000000000000000000008152600481018e905260248101869052604481018b90529151939650600160a060020a03169363a69b97d593606480840194939192918390030190829087803b1580156116a657600080fd5b505af11580156116ba573d6000803e3d6000fd5b505050506040513d60208110156116d057600080fd5b505060408084015160608086015160808088015160a0808a015160c0808c015160e08d01518a51998a5260208a0197909752888a0194909452958701529185015283015291518a928c9286927fca8eb43dd243d57b1415a66a4b10fb68e3a605a8028e74e4da07028fd91a7380929181900390910190a46002546040805160e160020a6331a9108f028152600481018c905290516117cb92600160a060020a031691636352211e9160248083019260209291908290030181600087803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505050506040513d60208110156117c357600080fd5b505185611a0d565b6117d36104ce565b505050505050505050565b60045481565b60035481565b60006006610aec83611978565b60008082118015610b585750506006541190565b600254604080517fa2e4b12e00000000000000000000000000000000000000000000000000000000815260048101859052905160009283928392600160a060020a039092169163a2e4b12e9160248082019260209290919082900301818787803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b5051600254604080517fa2e4b12e00000000000000000000000000000000000000000000000000000000815260048101889052905161ffff9093169450600160a060020a039091169163a2e4b12e916024808201926020929091908290030181600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d602081101561193d57600080fd5b505161ffff169050600182148061195357508082145b95945050505050565b611964610db8565b151561196f57600080fd5b61055081611a6e565b6000818152600860205260408120548110611994576000610b58565b600082815260086020526040902080546000198101908110610b4c57fe5b6000808315156119c557600091506110b9565b508282028284828115156119d557fe5b04146119e057600080fd5b9392505050565b600080828410156119fb57600091506110b9565b50506001910390811660029091040190565b600080611a1c83600354611aeb565b9150611a2e838363ffffffff611b0f16565b604051909150600160a060020a0385169082156108fc029083906000818181858888f19350505050158015611a67573d6000803e3d6000fd5b5050505050565b600160a060020a0381161515611a8357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006119e0612710611b03858563ffffffff6119b216565b9063ffffffff611b2616565b60008083831115611b1f57600080fd5b5050900390565b600080808311611b3557600080fd5b8284811515611b4057fe5b04949350505050565b61010060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820482a7d2d84cf1716ee8bd3edcd2525b634b315a1496d490556725ec1acf4d0640029

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

000000000000000000000000d2bae9a30a40376d25353773010ffe52dba0d688

-----Decoded View---------------
Arg [0] : _heroes (address): 0xd2BaE9A30A40376d25353773010FFe52dBa0D688

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2bae9a30a40376d25353773010ffe52dba0d688


Swarm Source

bzzr://482a7d2d84cf1716ee8bd3edcd2525b634b315a1496d490556725ec1acf4d064

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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