ETH Price: $2,683.66 (-2.25%)

Token

 

Overview

Max Total Supply

0

Holders

223

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Filtered by Token Holder
voltriph.eth
Balance
507,998,639,856,748,804

Value
$0.00
0xced706833461a6f84dd9246212bbe653f72d83f8
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NovaStaking

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-10-11
*/

pragma solidity ^0.4.23;


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

  // @dev Multiplies two numbers, throws on overflow.
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting '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;
    }

    c = a * b;
    require(c / a == b, "mul failed");
    return c;
  }

  // @dev Integer division of two numbers, truncating the quotient.
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  // @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, "sub fail");
    return a - b;
  }

  // @dev Adds two numbers, throws on overflow.
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    require(c >= a, "add fail");
    return c;
  }
}


// @title ERC20 interface
// @dev see https://github.com/ethereum/EIPs/issues/20
contract iERC20 {
  function allowance(address owner, address spender)
    public view returns (uint256);

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

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

  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 tokens);
  event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}









// @title iNovaStaking
// @dev The interface for cross-contract calls to the Nova Staking contract
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract iNovaStaking {

  function balanceOf(address _owner) public view returns (uint256);
}



// @title iNovaGame
// @dev The interface for cross-contract calls to the Nova Game contract
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract iNovaGame {
  function isAdminForGame(uint _game, address account) external view returns(bool);

  // List of all games tracked by the Nova Game contract
  uint[] public games;
}







// @title NovaMasterAccess
// @dev NovaMasterAccess contract for controlling access to Nova Token contract functions
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract NovaMasterAccess {
  using SafeMath for uint256;

  event OwnershipTransferred(address previousOwner, address newOwner);
  event PromotedGame(uint game, bool isPromoted, string json);
  event SuppressedGame(uint game, bool isSuppressed);

  // Reference to the address of the Nova Token ERC20 contract
  iERC20 public nvtContract;

  // Reference to the address of the Nova Game contract
  iNovaGame public gameContract;

  // The Owner can perform all admin tasks.
  address public owner;

  // The Recovery account can change the Owner account.
  address public recoveryAddress;


  // @dev The original `owner` of the contract is the contract creator.
  constructor() 
    internal 
  {
    owner = msg.sender;
  }

  // @dev Access control modifier to limit access to the Owner account
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  // @dev Access control modifier to limit access to the Recovery account
  modifier onlyRecovery() {
    require(msg.sender == recoveryAddress);
    _;
  }

  // @dev Assigns a new address to act as the Owner.
  // @notice Can only be called by the recovery account
  // @param _newOwner The address of the new Owner
  function setOwner(address _newOwner) 
    external 
    onlyRecovery 
  {
    require(_newOwner != address(0));
    require(_newOwner != recoveryAddress);

    owner = _newOwner;
    emit OwnershipTransferred(owner, _newOwner);
  }

  // @dev Assigns a new address to act as the Recovery address.
  // @notice Can only be called by the Owner account
  // @param _newRecovery The address of the new Recovery account
  function setRecovery(address _newRecovery) 
    external 
    onlyOwner 
  {
    require(_newRecovery != address(0));
    require(_newRecovery != owner);

    recoveryAddress = _newRecovery;
  }

  // @dev Adds or removes a game from the list of promoted games
  // @param _game - the game to be promoted
  // @param _isPromoted - true for promoted, false for not
  // @param _json - A json string to be used to display promotional information
  function setPromotedGame(uint _game, bool _isPromoted, string _json)
    external
    onlyOwner
  {
    uint gameId = gameContract.games(_game);
    require(gameId == _game, "gameIds must match");
    emit PromotedGame(_game, _isPromoted, _isPromoted ? _json : "");
  }

  // @dev Adds or removes a game from the list of suppressed games.
  //   Suppressed games won't show up on the site, but can still be interacted with
  //   by users.
  // @param _game - the game to be promoted
  // @param _isSuppressed - true for suppressed, false for not
  function setSuppressedGame(uint _game, bool _isSuppressed)
    external
    onlyOwner
  {
    uint gameId = gameContract.games(_game);
    require(gameId == _game, "gameIds must match");
    emit SuppressedGame(_game, _isSuppressed);
  }
}



// @title ERC20 Sidechain manager imlpementation
// @dev Utility contract that manages Ethereum and ERC-20 tokens transferred in from the main chain
// @dev Can manage any number of tokens
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract NovaStakingBase is NovaMasterAccess, iNovaStaking {
  using SafeMath for uint256;

  uint public constant WEEK_ZERO_START = 1538352000; // 10/1/2018 @ 00:00:00
  uint public constant SECONDS_PER_WEEK = 604800;

  // The Nova Token balances of all games and users on the system
  mapping(address => uint) public balances;
  
  // The number of Nova Tokens stored as income each week
  mapping(uint => uint) public storedNVTbyWeek;

  // @dev Access control modifier to limit access to game admin accounts
  modifier onlyGameAdmin(uint _game) {
    require(gameContract.isAdminForGame(_game, msg.sender));
    _;
  }

  // @dev Used on deployment to link the Staking and Game contracts.
  // @param _gameContract - the address of a valid GameContract instance
  function linkContracts(address _gameContract)
    external
    onlyOwner
  {
    gameContract = iNovaGame(_gameContract);
  }

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Balance(address account, uint256 value);
  event StoredNVT(uint week, uint stored);

  // @dev Gets the balance of the specified address.
  // @param _owner The address to query the the balance of.
  // @returns An uint256 representing the amount owned by the passed address.
  function balanceOf(address _owner) 
    public
    view
  returns (uint256) {
    return balances[_owner];
  }

  // Internal transfer of ERC20 tokens to complete payment of an auction.
  // @param _from The address which you want to send tokens from
  // @param _to The address which you want to transfer to
  // @param _value The amout of tokens to be transferred
  function _transfer(address _from, address _to, uint _value) 
    internal
  {
    require(_from != _to, "can't transfer to yourself");
    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(_from, _to, _value);
    emit Balance(_from, balances[_from]);
    emit Balance(_to, balances[_to]);
  }

  // @dev Gets the current week, as calculated by this smart contract
  // @returns uint - the current week
  function getCurrentWeek()
    external
    view
  returns(uint) {
    return _getCurrentWeek();
  }

  // @dev Internal function to calculate the current week
  // @returns uint - the current week
  function _getCurrentWeek()
    internal
    view
  returns(uint) {
    return (now - WEEK_ZERO_START) / SECONDS_PER_WEEK;
  }
}


// @title Nova Stake Management
// @dev NovaStakeManagement contract for managing stakes and game balances
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract NovaStakeManagement is NovaStakingBase {

  // Emitted whenever a user or game takes a payout from the system
  event Payout(address indexed staker, uint amount, uint endWeek);

  // Emitted whenever a user's stake is increased or decreased.
  event ChangeStake(uint week, uint indexed game, address indexed staker, uint prevStake, uint newStake,
    uint accountStake, uint gameStake, uint totalStake);

  // @dev Tracks current stake levels for all accounts and games.
  //   Tracks separately for accounts by game, accounts, games, and the total stake on the system
  // Mapping(Game => Mapping(Account => Stake))
  mapping(uint => mapping(address => uint)) public gameAccountStaked;
  // Mapping(Account => Stake)
  mapping(address => uint) public accountStaked;
  // Mapping(Game => Stake)
  mapping(uint => uint) public gameStaked;
  // Stake
  uint public totalStaked;

  // @dev Tracks stakes by week for accounts and games. Each is updated when a user changes their stake.
  //   These can be zero if they haven't been updated during the current week, so "zero"
  //     just means "look at the week before", as no stakes have been changed.
  //   When setting a stake to zero, the system records a "1". This is safe, because it's stored
  //     with 18 significant digits, and the calculation 
  // Mapping(Week => Mapping(Game => Mapping(Account => Stake)))
  mapping(uint => mapping(uint => mapping(address => uint))) public weekGameAccountStakes;
  // Mapping(Week => Mapping(Account => Stake))
  mapping(uint => mapping(address => uint)) public weekAccountStakes;
  // Mapping(Week => Mapping(Game => Stake))
  mapping(uint => mapping(uint => uint)) public weekGameStakes;
  // Mapping(Week => Stake)
  mapping(uint => uint) public weekTotalStakes;

  // The last week that an account took a payout. Used for calculating the remaining payout for the account
  mapping(address => uint) public lastPayoutWeekByAccount;
  // The last week that a game took a payout. Used for calculating the remaining payout for the game
  mapping(uint => uint) public lastPayoutWeekByGame;

  // Tracks the amount of income the system has taken in.
  // All income is paid out to games (50%) and stakers (50%)
  mapping(uint => uint) public weeklyIncome;

  constructor()
    public
  {
    weekTotalStakes[_getCurrentWeek() - 1] = 1;
  }


  // @dev Sets the sender's stake on a game to an amount.
  // @param _game - the game to increase or decrease the sender's stake on
  // @param _newStake - The new stake value. Can be an increase or decrease,
  //   but must be different than their current stake, and lower than their staking balance.
  function setStake(uint _game, uint _newStake)
    public
  {
    uint currentStake = gameAccountStaked[_game][msg.sender];
    if (currentStake < _newStake) {
      increaseStake(_game, _newStake - currentStake);
    } else 
    if (currentStake > _newStake) {
      decreaseStake(_game, currentStake - _newStake);

    }
  }

  // @dev Increases the sender's stake on a game by an amount.
  // @param _game - the game to increase the sender's stake on
  // @param _increase - The increase must be non-zero, and less than 
  //   or equal to the user's available staking balance
  function increaseStake(uint _game, uint _increase)
    public
  returns(uint newStake) {
    require(_increase > 0, "Must be a non-zero change");
    // Take the payment
    uint newBalance = balances[msg.sender].sub(_increase);
    balances[msg.sender] = newBalance;
    emit Balance(msg.sender, newBalance);

    uint prevStake = gameAccountStaked[_game][msg.sender];
    newStake = prevStake.add(_increase);
    uint gameStake = gameStaked[_game].add(_increase);
    uint accountStake = accountStaked[msg.sender].add(_increase);
    uint totalStake = totalStaked.add(_increase);

    _storeStakes(_game, msg.sender, prevStake, newStake, gameStake, accountStake, totalStake);
  }

  // @dev Decreases the sender's stake on a game by an amount.
  // @param _game - the game to decrease the sender's stake on
  // @param _decrease - The decrease must be non-zero, and less than or equal to the user's stake on the game
  function decreaseStake(uint _game, uint _decrease)
    public
  returns(uint newStake) {
    require(_decrease > 0, "Must be a non-zero change");
    uint newBalance = balances[msg.sender].add(_decrease);
    balances[msg.sender] = newBalance;
    emit Balance(msg.sender, newBalance);

    uint prevStake = gameAccountStaked[_game][msg.sender];
    newStake = prevStake.sub(_decrease);
    uint gameStake = gameStaked[_game].sub(_decrease);
    uint accountStake = accountStaked[msg.sender].sub(_decrease);
    uint totalStake = totalStaked.sub(_decrease);

    _storeStakes(_game, msg.sender, prevStake, newStake, gameStake, accountStake, totalStake);
  }

  // @dev Lets a  staker collect the current payout for all their stakes.
  // @param _numberOfWeeks - the number of weeks to collect. Set to 0 to collect all weeks.
  // @returns _payout - the total payout over all the collected weeks
  function collectPayout(uint _numberOfWeeks) 
    public
  returns(uint _payout) {
    uint startWeek = lastPayoutWeekByAccount[msg.sender];
    require(startWeek > 0, "must be a valid start week");
    uint endWeek = _getEndWeek(startWeek, _numberOfWeeks);
    require(startWeek < endWeek, "must be at least one week to pay out");
    
    uint lastWeekStake;
    for (uint i = startWeek; i < endWeek; i++) {
      // Get the stake for the week. Use the last week's stake if the stake hasn't changed
      uint weeklyStake = weekAccountStakes[i][msg.sender] == 0 
          ? lastWeekStake 
          : weekAccountStakes[i][msg.sender];
      lastWeekStake = weeklyStake;

      uint weekStake = _getWeekTotalStake(i);
      uint storedNVT = storedNVTbyWeek[i];
      uint weeklyPayout = storedNVT > 1 && weeklyStake > 1 && weekStake > 1 
        ? weeklyStake.mul(storedNVT) / weekStake / 2
        : 0;
      _payout = _payout.add(weeklyPayout);

    }
    // If the weekly stake for the end week is not set, set it to the
    //   last week's stake, to ensure we know what to pay out.
    // This works even if the end week is the current week; the value
    //   will be overwritten if necessary by future stake changes
    if(weekAccountStakes[endWeek][msg.sender] == 0) {
      weekAccountStakes[endWeek][msg.sender] = lastWeekStake;
    }
    // Always update the last payout week
    lastPayoutWeekByAccount[msg.sender] = endWeek;

    _transfer(address(this), msg.sender, _payout);
    emit Payout(msg.sender, _payout, endWeek);
  }

  // @dev Lets a game admin collect the current payout for their game.
  // @param _game - the game to collect
  // @param _numberOfWeeks - the number of weeks to collect. Set to 0 to collect all weeks.
  // @returns _payout - the total payout over all the collected weeks
  function collectGamePayout(uint _game, uint _numberOfWeeks)
    external
    onlyGameAdmin(_game)
  returns(uint _payout) {
    uint week = lastPayoutWeekByGame[_game];
    require(week > 0, "must be a valid start week");
    uint endWeek = _getEndWeek(week, _numberOfWeeks);
    require(week < endWeek, "must be at least one week to pay out");

    uint lastWeekStake;
    for (week; week < endWeek; week++) {
      // Get the stake for the week. Use the last week's stake if the stake hasn't changed
      uint weeklyStake = weekGameStakes[week][_game] == 0 
          ? lastWeekStake 
          : weekGameStakes[week][_game];
      lastWeekStake = weeklyStake;

      uint weekStake = _getWeekTotalStake(week);
      uint storedNVT = storedNVTbyWeek[week];
      uint weeklyPayout = storedNVT > 1 && weeklyStake > 1 && weekStake > 1 
        ? weeklyStake.mul(storedNVT) / weekStake / 2
        : 0;
      _payout = _payout.add(weeklyPayout);
    }
    // If the weekly stake for the end week is not set, set it to 
    //   the last week's stake, to ensure we know what to pay out
    //   This works even if the end week is the current week; the value
    //   will be overwritten if necessary by future stake changes
    if(weekGameStakes[endWeek][_game] == 0) {
      weekGameStakes[endWeek][_game] = lastWeekStake;
    }
    // Always update the last payout week
    lastPayoutWeekByGame[_game] = endWeek;

    _transfer(address(this), address(_game), _payout);
    emit Payout(address(_game), _payout, endWeek);
  }

  // @dev Internal function to calculate the game, account, and total stakes on a stake change
  // @param _game - the game to be staked on
  // @param _staker - the account doing the staking
  // @param _prevStake - the previous stake of the staker on that game
  // @param _newStake - the newly updated stake of the staker on that game
  // @param _gameStake - the new total stake for the game
  // @param _accountStake - the new total stake for the staker's account
  // @param _totalStake - the new total stake for the system as a whole
  function _storeStakes(uint _game, address _staker, uint _prevStake, uint _newStake,
    uint _gameStake, uint _accountStake, uint _totalStake)
    internal
  {
    uint _currentWeek = _getCurrentWeek();

    gameAccountStaked[_game][msg.sender] = _newStake;
    gameStaked[_game] = _gameStake;
    accountStaked[msg.sender] = _accountStake;
    totalStaked = _totalStake;
    
    // Each of these stores the weekly stake as "1" if it's been set to 0.
    // This tracks the difference between "not set this week" and "set to zero this week"
    weekGameAccountStakes[_currentWeek][_game][_staker] = _newStake > 0 ? _newStake : 1;
    weekAccountStakes[_currentWeek][_staker] = _accountStake > 0 ? _accountStake : 1;
    weekGameStakes[_currentWeek][_game] = _gameStake > 0 ? _gameStake : 1;
    weekTotalStakes[_currentWeek] = _totalStake > 0 ? _totalStake : 1;

    // Get the last payout week; set it to this week if there hasn't been a week.
    // This lets the user iterate payouts correctly.
    if(lastPayoutWeekByAccount[_staker] == 0) {
      lastPayoutWeekByAccount[_staker] = _currentWeek - 1;
      if (lastPayoutWeekByGame[_game] == 0) {
        lastPayoutWeekByGame[_game] = _currentWeek - 1;
      }
    }

    emit ChangeStake(_currentWeek, _game, _staker, _prevStake, _newStake, 
      _accountStake, _gameStake, _totalStake);
  }

  // @dev Internal function to get the total stake for a given week
  // @notice This updates the stored values for intervening weeks, 
  //   as that's more efficient at 100 or more users
  // @param _week - the week in which to calculate the total stake
  // @returns _stake - the total stake in that week
  function _getWeekTotalStake(uint _week)
    internal
  returns(uint _stake) {
    _stake = weekTotalStakes[_week];
    if(_stake == 0) {
      uint backWeek = _week;
      while(_stake == 0) {
        backWeek--;
        _stake = weekTotalStakes[backWeek];
      }
      weekTotalStakes[_week] = _stake;
    }
  }

  // @dev Internal function to get the end week based on start, number of weeks, and current week
  // @param _startWeek - the start of the range
  // @param _numberOfWeeks - the length of the range
  // @returns endWeek - either the current week, or the end of the range
  // @notice This throws if it tries to get a week range longer than the current week
  function _getEndWeek(uint _startWeek, uint _numberOfWeeks)
    internal
    view
  returns(uint endWeek) {
    uint _currentWeek = _getCurrentWeek();
    require(_startWeek < _currentWeek, "must get at least one week");
    endWeek = _numberOfWeeks == 0 ? _currentWeek : _startWeek + _numberOfWeeks;
    require(endWeek <= _currentWeek, "can't get more than the current week");
  }
}



// @title NovaToken ERC20 contract
// @dev ERC20 management contract, designed to make using ERC-20 tokens easier
// @author Dragon Foundry (https://www.nvt.gg)
// (c) 2018 Dragon Foundry LLC. All Rights Reserved. This code is not open source.
contract NovaStaking is NovaStakeManagement {

  event Deposit(address account, uint256 amount, uint256 balance);
  event Withdrawal(address account, uint256 amount, uint256 balance);

  // @dev Constructor creates a reference to the NFT ownership contract
  //  and verifies the manager cut is in the valid range.
  // @param _nvtContract - address of the mainnet NovaToken contract
  constructor(iERC20 _nvtContract)
    public
  {
    nvtContract = _nvtContract;
  }

  // @dev Allows a user to deposit NVT through approveAndCall.
  // @notice Other methods of sending NVT to this contract will still work, but will result in you losing your NVT.
  // @param _sender is the original sender of the message
  // @param _amount is the amount of NVT that was approved
  // @param _contract is the contract that sent the approval; we check to be sure it's the NVT contract
  // @param _data is the data that is passed in along with the call. It's not used here
  function receiveApproval(address _sender, uint _amount, address _contract, bytes _data)
    public
  {
    require(_data.length == 0, "you must pass no data");
    require(_contract == address(nvtContract), "sending from a non-NVT contract is not allowed");

    // Track the transferred NVT
    uint newBalance = balances[_sender].add(_amount);
    balances[_sender] = newBalance;

    emit Balance(_sender, newBalance);
    emit Deposit(_sender, _amount, newBalance);

    // Transfer the NVT to this
    require(nvtContract.transferFrom(_sender, address(this), _amount), "must successfully transfer");
  }

  function receiveNVT(uint _amount, uint _week) 
    external
  {
    require(_week >= _getCurrentWeek(), "Current Week must be equal or greater");
    uint totalDonation = weeklyIncome[_week].add(_amount);
    weeklyIncome[_week] = totalDonation;

    uint stored = storedNVTbyWeek[_week].add(_amount);
    storedNVTbyWeek[_week] = stored;
    emit StoredNVT(_week, stored);
    // transfer the donation
    _transfer(msg.sender, address(this), _amount);
  }

  // @dev Allows a user to withdraw some or all of their NVT stored in this contract
  // @param _sender is the original sender of the message
  // @param _amount is the amount of NVT to be withdrawn. Withdraw(0) will withdraw all.
  // @returns true if successful, false if unsuccessful, but will most throw on most failures
  function withdraw(uint amount)
    external
  {
    uint withdrawalAmount = amount > 0 ? amount : balances[msg.sender];
    require(withdrawalAmount > 0, "Can't withdraw - zero balance");
    uint newBalance = balances[msg.sender].sub(withdrawalAmount);
    balances[msg.sender] = newBalance;
    emit Withdrawal(msg.sender, withdrawalAmount, newBalance);
    emit Balance(msg.sender, newBalance);
    nvtContract.transfer(msg.sender, withdrawalAmount);
  }

  // @dev Add more ERC-20 tokens to a game. Can be used to fund games with Nova Tokens for card creation
  // @param _game - the # of the game to add tokens to
  // @param _tokensToToAdd - the number of Nova Tokens to transfer from the calling account
  function addNVTtoGame(uint _game, uint _tokensToToAdd)
    external
    onlyGameAdmin(_game)
  {
    // Take the funding, and apply it to the GAME's address (a fake ETH address...)
    _transfer(msg.sender, address(_game), _tokensToToAdd);
  }

  // @dev Withdraw earned (or funded) Nova Tokens from a game.
  // @param _game - the # of the game to add tokens to
  // @param _tokensToWithdraw - the number of NVT to transfer from the game to the calling account
  function withdrawNVTfromGame(uint _game, uint _tokensToWithdraw)
    external
    onlyGameAdmin(_game)
  {
    // Take the NVT funds from the game, and apply them to the game admin's address
    _transfer(address(_game), msg.sender, _tokensToWithdraw);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"lastPayoutWeekByGame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_newStake","type":"uint256"}],"name":"setStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_decrease","type":"uint256"}],"name":"decreaseStake","outputs":[{"name":"newStake","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WEEK_ZERO_START","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"gameStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_numberOfWeeks","type":"uint256"}],"name":"collectGamePayout","outputs":[{"name":"_payout","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_isSuppressed","type":"bool"}],"name":"setSuppressedGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"weekTotalStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastPayoutWeekByAccount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"gameAccountStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"storedNVTbyWeek","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentWeek","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_numberOfWeeks","type":"uint256"}],"name":"collectPayout","outputs":[{"name":"_payout","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"recoveryAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_isPromoted","type":"bool"},{"name":"_json","type":"string"}],"name":"setPromotedGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_week","type":"uint256"}],"name":"receiveNVT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECONDS_PER_WEEK","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameContract","type":"address"}],"name":"linkContracts","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":"_sender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_contract","type":"address"},{"name":"_data","type":"bytes"}],"name":"receiveApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"weekAccountStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"weeklyIncome","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"weekGameStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_tokensToToAdd","type":"uint256"}],"name":"addNVTtoGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_increase","type":"uint256"}],"name":"increaseStake","outputs":[{"name":"newStake","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nvtContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"weekGameAccountStakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRecovery","type":"address"}],"name":"setRecovery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_game","type":"uint256"},{"name":"_tokensToWithdraw","type":"uint256"}],"name":"withdrawNVTfromGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_nvtContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"staker","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endWeek","type":"uint256"}],"name":"Payout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"week","type":"uint256"},{"indexed":true,"name":"game","type":"uint256"},{"indexed":true,"name":"staker","type":"address"},{"indexed":false,"name":"prevStake","type":"uint256"},{"indexed":false,"name":"newStake","type":"uint256"},{"indexed":false,"name":"accountStake","type":"uint256"},{"indexed":false,"name":"gameStake","type":"uint256"},{"indexed":false,"name":"totalStake","type":"uint256"}],"name":"ChangeStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Balance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"week","type":"uint256"},{"indexed":false,"name":"stored","type":"uint256"}],"name":"StoredNVT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"game","type":"uint256"},{"indexed":false,"name":"isPromoted","type":"bool"},{"indexed":false,"name":"json","type":"string"}],"name":"PromotedGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"game","type":"uint256"},{"indexed":false,"name":"isSuppressed","type":"bool"}],"name":"SuppressedGame","type":"event"}]

608060405234801561001057600080fd5b506040516020806122cb833981016040525160028054600160a060020a031916331790556001600d60008261004c640100000000610086810204565b03815260208101919091526040016000908120919091558054600160a060020a031916600160a060020a0392909216919091179055610096565b62093a8042635bb1637f19010490565b612226806100a56000396000f3006080604052600436106101c15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166309e201cc81146101c657806313af4035146101f05780631cf73c131461021357806324d86f001461022e57806327e235e3146102495780632e1a7d4d1461026a5780632ed3aae31461028257806335e748fb1461029757806341f36984146102af57806346ba6f61146102ca578063535cd529146102e7578063639c5d36146102ff578063644b2b9f146103205780636d6ad2df146103445780636eb227ce1461035c5780636fe5091e1461037157806370a0823114610389578063710eb26c146103aa5780637850f0a4146103db5780637b2643f214610405578063817b1cd21461042057806384ae2a74146104355780638c25f54e1461044a5780638da5cb5b1461046b5780638f4ffcb1146104805780639ec40d2c146104f0578063a976db9b14610514578063ad88db611461052c578063b3c185a714610547578063bec10cde14610562578063cada4b191461057d578063cbac0d0a14610592578063d3f33009146105b3578063da9c7d93146105c8578063f0d85c89146105ef578063f90f11b714610610575b600080fd5b3480156101d257600080fd5b506101de60043561062b565b60408051918252519081900360200190f35b3480156101fc57600080fd5b50610211600160a060020a036004351661063d565b005b34801561021f57600080fd5b506102116004356024356106f2565b34801561023a57600080fd5b506101de600435602435610741565b34801561025557600080fd5b506101de600160a060020a036004351661089e565b34801561027657600080fd5b506102116004356108b0565b34801561028e57600080fd5b506101de610a69565b3480156102a357600080fd5b506101de600435610a71565b3480156102bb57600080fd5b506101de600435602435610a83565b3480156102d657600080fd5b506102116004356024351515610daa565b3480156102f357600080fd5b506101de600435610ef1565b34801561030b57600080fd5b506101de600160a060020a0360043516610f03565b34801561032c57600080fd5b506101de600435600160a060020a0360243516610f15565b34801561035057600080fd5b506101de600435610f32565b34801561036857600080fd5b506101de610f44565b34801561037d57600080fd5b506101de600435610f53565b34801561039557600080fd5b506101de600160a060020a03600435166111c7565b3480156103b657600080fd5b506103bf6111e2565b60408051600160a060020a039092168252519081900360200190f35b3480156103e757600080fd5b506102116004803590602480351515916044359182019101356111f1565b34801561041157600080fd5b506102116004356024356113f4565b34801561042c57600080fd5b506101de611525565b34801561044157600080fd5b506101de61152b565b34801561045657600080fd5b50610211600160a060020a0360043516611532565b34801561047757600080fd5b506103bf611578565b34801561048c57600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261021194600160a060020a038135811695602480359660443590931695369560849492019181908401838280828437509497506115879650505050505050565b3480156104fc57600080fd5b506101de600435600160a060020a036024351661181d565b34801561052057600080fd5b506101de60043561183a565b34801561053857600080fd5b506101de60043560243561184c565b34801561055357600080fd5b50610211600435602435611869565b34801561056e57600080fd5b506101de600435602435611917565b34801561058957600080fd5b506103bf611a58565b34801561059e57600080fd5b506101de600160a060020a0360043516611a67565b3480156105bf57600080fd5b506103bf611a79565b3480156105d457600080fd5b506101de600435602435600160a060020a0360443516611a88565b3480156105fb57600080fd5b50610211600160a060020a0360043516611aab565b34801561061c57600080fd5b50610211600435602435611b21565b600f6020526000908152604090205481565b600354600160a060020a0316331461065457600080fd5b600160a060020a038116151561066957600080fd5b600354600160a060020a038281169116141561068457600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169182179283905560408051939091168352602083019190915280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a150565b6000828152600660209081526040808320338452909152902054818110156107265761072083828403611917565b5061073c565b8181111561073c5761073a83838303610741565b505b505050565b6000808080808080871161079f576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742062652061206e6f6e2d7a65726f206368616e676500000000000000604482015290519081900360640190fd5b336000908152600460205260409020546107bf908863ffffffff611bcf16565b336000818152600460209081526040918290208490558151928352820183905280519297506000805160206121db83398151915292918290030190a160008881526006602090815260408083203384529091529020549350610827848863ffffffff611c3016565b600089815260086020526040902054909650610849908863ffffffff611c3016565b3360009081526007602052604090205490935061086c908863ffffffff611c3016565b600954909250610882908863ffffffff611c3016565b905061089388338689878787611c90565b505050505092915050565b60046020526000908152604090205481565b600080600083116108d057336000908152600460205260409020546108d2565b825b91506000821161092c576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e2774207769746864726177202d207a65726f2062616c616e6365000000604482015290519081900360640190fd5b3360009081526004602052604090205461094c908363ffffffff611c3016565b3360008181526004602090815260409182902084905581519283528201859052818101839052519192507fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb919081900360600190a1604080513381526020810183905281516000805160206121db833981519152929181900390910190a160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169263a9059cbb926044808401936020939083900390910190829087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b5050505050565b635bb1638081565b60086020526000908152604090205481565b600154604080517fdded5dd800000000000000000000000000000000000000000000000000000000815260048101859052336024820152905160009283928392839283928392839283928c92600160a060020a039092169163dded5dd89160448082019260209290919082900301818887803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b50511515610b3957600080fd5b60008b8152600f602052604081205498508811610ba0576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420626520612076616c6964207374617274207765656b000000000000604482015290519081900360640190fd5b610baa888b611e68565b9650868810610c28576040805160e560020a62461bcd028152602060048201526024808201527f6d757374206265206174206c65617374206f6e65207765656b20746f2070617960448201527f206f757400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b86881015610d00576000888152600c602090815260408083208e845290915290205415610c6e576000888152600c602090815260408083208e8452909152902054610c70565b855b9450849550610c7e88611f62565b6000898152600560205260409020549094509250600183118015610ca25750600185115b8015610cae5750600184115b610cb9576000610ce1565b600284610ccc878663ffffffff611fb516565b811515610cd557fe5b04811515610cdf57fe5b045b9150610cf3898363ffffffff611bcf16565b9850600190970196610c28565b6000878152600c602090815260408083208e84529091529020541515610d3d576000878152600c602090815260408083208e845290915290208690555b60008b8152600f60205260409020879055610d59308c8b61202c565b604080518a8152602081018990528151600160a060020a038e16927f634235fcf5af0adbca1a405ec65f6f6c08f55e1f379c2c45cd10f23cb29e0e31928290030190a2505050505050505092915050565b600254600090600160a060020a03163314610dc457600080fd5b600154604080517f117a5b90000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163117a5b90916024808201926020929091908290030181600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b50519050828114610eb0576040805160e560020a62461bcd02815260206004820152601260248201527f67616d65496473206d757374206d617463680000000000000000000000000000604482015290519081900360640190fd5b60408051848152831515602082015281517f5b4957968986533a98fe0578e9917f978928aec1a9b5f937bd2d1ccbd3afb099929181900390910190a1505050565b600d6020526000908152604090205481565b600e6020526000908152604090205481565b600660209081526000928352604080842090915290825290205481565b60056020526000908152604090205481565b6000610f4e6121ca565b905090565b336000908152600e602052604081205481808080808080808811610fc1576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420626520612076616c6964207374617274207765656b000000000000604482015290519081900360640190fd5b610fcb888b611e68565b9650868810611049576040805160e560020a62461bcd028152602060048201526024808201527f6d757374206265206174206c65617374206f6e65207765656b20746f2070617960448201527f206f757400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8794505b86851015611125576000858152600b6020908152604080832033845290915290205415611093576000858152600b60209081526040808320338452909152902054611095565b855b93508395506110a385611f62565b60008681526005602052604090205490935091506001821180156110c75750600184115b80156110d35750600183115b6110de576000611106565b6002836110f1868563ffffffff611fb516565b8115156110fa57fe5b0481151561110457fe5b045b9050611118898263ffffffff611bcf16565b985060019094019361104d565b6000878152600b602090815260408083203384529091529020541515611162576000878152600b6020908152604080832033845290915290208690555b336000818152600e602052604090208890556111809030908b61202c565b604080518a815260208101899052815133927f634235fcf5af0adbca1a405ec65f6f6c08f55e1f379c2c45cd10f23cb29e0e31928290030190a25050505050505050919050565b600160a060020a031660009081526004602052604090205490565b600354600160a060020a031681565b600254600090600160a060020a0316331461120b57600080fd5b600154604080517f117a5b90000000000000000000000000000000000000000000000000000000008152600481018890529051600160a060020a039092169163117a5b90916024808201926020929091908290030181600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505190508481146112f7576040805160e560020a62461bcd02815260206004820152601260248201527f67616d65496473206d757374206d617463680000000000000000000000000000604482015290519081900360640190fd5b7f8728f0c0bc2db13d2866769cb2ad18639ecbe8bc0585443df1d158bc56a65cc985858661133357604080516020810190915260008152611364565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050505050505b604051808481526020018315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113b1578181015183820152602001611399565b50505050905090810190601f1680156113de5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050505050565b6000806113ff6121ca565b83101561147c576040805160e560020a62461bcd02815260206004820152602560248201527f43757272656e74205765656b206d75737420626520657175616c206f7220677260448201527f6561746572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008381526010602052604090205461149b908563ffffffff611bcf16565b600084815260106020908152604080832084905560059091529020549092506114ca908563ffffffff611bcf16565b600084815260056020908152604091829020839055815186815290810183905281519293507ff94b2162733d4f2db563a9c01ce4072fdefdc683f58d7e171662cec2f1bc3e67929081900390910190a161073a33308661202c565b60095481565b62093a8081565b600254600160a060020a0316331461154957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b8051600090156115e1576040805160e560020a62461bcd02815260206004820152601560248201527f796f75206d7573742070617373206e6f20646174610000000000000000000000604482015290519081900360640190fd5b600054600160a060020a0384811691161461166c576040805160e560020a62461bcd02815260206004820152602e60248201527f73656e64696e672066726f6d2061206e6f6e2d4e565420636f6e74726163742060448201527f6973206e6f7420616c6c6f776564000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038516600090815260046020526040902054611695908563ffffffff611bcf16565b600160a060020a0386166000818152600460209081526040918290208490558151928352820183905280519293506000805160206121db83398151915292918290030190a160408051600160a060020a03871681526020810186905280820183905290517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360600190a160008054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015230602483015260448201899052915191909216926323b872dd92606480820193602093909283900390910190829087803b15801561179b57600080fd5b505af11580156117af573d6000803e3d6000fd5b505050506040513d60208110156117c557600080fd5b50511515610a62576040805160e560020a62461bcd02815260206004820152601a60248201527f6d757374207375636365737366756c6c79207472616e73666572000000000000604482015290519081900360640190fd5b600b60209081526000928352604080842090915290825290205481565b60106020526000908152604090205481565b600c60209081526000928352604080842090915290825290205481565b600154604080517fdded5dd80000000000000000000000000000000000000000000000000000000081526004810185905233602482015290518492600160a060020a03169163dded5dd89160448083019260209291908290030181600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b505050506040513d60208110156118ff57600080fd5b5051151561190c57600080fd5b61073c33848461202c565b60008080808080808711611975576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742062652061206e6f6e2d7a65726f206368616e676500000000000000604482015290519081900360640190fd5b33600090815260046020526040902054611995908863ffffffff611c3016565b336000818152600460209081526040918290208490558151928352820183905280519297506000805160206121db83398151915292918290030190a1600088815260066020908152604080832033845290915290205493506119fd848863ffffffff611bcf16565b600089815260086020526040902054909650611a1f908863ffffffff611bcf16565b33600090815260076020526040902054909350611a42908863ffffffff611bcf16565b600954909250610882908863ffffffff611bcf16565b600054600160a060020a031681565b60076020526000908152604090205481565b600154600160a060020a031681565b600a60209081526000938452604080852082529284528284209052825290205481565b600254600160a060020a03163314611ac257600080fd5b600160a060020a0381161515611ad757600080fd5b600254600160a060020a0382811691161415611af257600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517fdded5dd80000000000000000000000000000000000000000000000000000000081526004810185905233602482015290518492600160a060020a03169163dded5dd89160448083019260209291908290030181600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b505050506040513d6020811015611bb757600080fd5b50511515611bc457600080fd5b61073c83338461202c565b81810182811015611c2a576040805160e560020a62461bcd02815260206004820152600860248201527f616464206661696c000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600082821115611c8a576040805160e560020a62461bcd02815260206004820152600860248201527f737562206661696c000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611c9a6121ca565b6000898152600660209081526040808320338085529083528184208a90558c84526008835281842089905583526007909152812085905560098490559091508511611ce6576001611ce8565b845b6000828152600a602090815260408083208c84528252808320600160a060020a038c1684529091528120919091558311611d23576001611d25565b825b6000828152600b60209081526040808320600160a060020a038c1684529091528120919091558411611d58576001611d5a565b835b6000828152600c602090815260408083208c84529091528120919091558211611d84576001611d86565b815b6000828152600d6020908152604080832093909355600160a060020a038a168252600e905220541515611dfc57600160a060020a0387166000908152600e60209081526040808320600019850190558a8352600f9091529020541515611dfc576000888152600f60205260409020600019820190555b6040805182815260208101889052808201879052606081018590526080810186905260a081018490529051600160a060020a038916918a917f4f93859f92d0225eddd0aa4e2264bc8f2c792a8a7ebd5592875a33d3aee0220d9181900360c00190a35050505050505050565b600080611e736121ca565b9050808410611ecc576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420676574206174206c65617374206f6e65207765656b000000000000604482015290519081900360640190fd5b8215611eda57828401611edc565b805b915080821115611f5b576040805160e560020a62461bcd028152602060048201526024808201527f63616e277420676574206d6f7265207468616e207468652063757272656e742060448201527f7765656b00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5092915050565b6000818152600d602052604081205490811515611faf5750815b811515611f9d57600019016000818152600d60205260409020549150611f7c565b6000838152600d602052604090208290555b50919050565b6000821515611fc657506000611c2a565b50818102818382811515611fd657fe5b0414611c2a576040805160e560020a62461bcd02815260206004820152600a60248201527f6d756c206661696c656400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038381169083161415612090576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e2774207472616e7366657220746f20796f757273656c66000000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600460205260409020546120b9908263ffffffff611c3016565b600160a060020a0380851660009081526004602052604080822093909355908416815220546120ee908263ffffffff611bcf16565b600160a060020a0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3600160a060020a0383166000818152600460209081526040918290205482519384529083015280516000805160206121db8339815191529281900390910190a1600160a060020a0382166000818152600460209081526040918290205482519384529083015280516000805160206121db8339815191529281900390910190a1505050565b62093a8042635bb1637f190104905600134e340554ff8a7d64280a2a28b982df554e2595e5bf45cd39368f31099172a6a165627a7a7230582097fd233605a4d632faad84b940eee57f324707b285a890a2e4d48d63b955bc24002900000000000000000000000009d8b66c48424324b25754a873e290cae5dca439

Deployed Bytecode

0x6080604052600436106101c15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166309e201cc81146101c657806313af4035146101f05780631cf73c131461021357806324d86f001461022e57806327e235e3146102495780632e1a7d4d1461026a5780632ed3aae31461028257806335e748fb1461029757806341f36984146102af57806346ba6f61146102ca578063535cd529146102e7578063639c5d36146102ff578063644b2b9f146103205780636d6ad2df146103445780636eb227ce1461035c5780636fe5091e1461037157806370a0823114610389578063710eb26c146103aa5780637850f0a4146103db5780637b2643f214610405578063817b1cd21461042057806384ae2a74146104355780638c25f54e1461044a5780638da5cb5b1461046b5780638f4ffcb1146104805780639ec40d2c146104f0578063a976db9b14610514578063ad88db611461052c578063b3c185a714610547578063bec10cde14610562578063cada4b191461057d578063cbac0d0a14610592578063d3f33009146105b3578063da9c7d93146105c8578063f0d85c89146105ef578063f90f11b714610610575b600080fd5b3480156101d257600080fd5b506101de60043561062b565b60408051918252519081900360200190f35b3480156101fc57600080fd5b50610211600160a060020a036004351661063d565b005b34801561021f57600080fd5b506102116004356024356106f2565b34801561023a57600080fd5b506101de600435602435610741565b34801561025557600080fd5b506101de600160a060020a036004351661089e565b34801561027657600080fd5b506102116004356108b0565b34801561028e57600080fd5b506101de610a69565b3480156102a357600080fd5b506101de600435610a71565b3480156102bb57600080fd5b506101de600435602435610a83565b3480156102d657600080fd5b506102116004356024351515610daa565b3480156102f357600080fd5b506101de600435610ef1565b34801561030b57600080fd5b506101de600160a060020a0360043516610f03565b34801561032c57600080fd5b506101de600435600160a060020a0360243516610f15565b34801561035057600080fd5b506101de600435610f32565b34801561036857600080fd5b506101de610f44565b34801561037d57600080fd5b506101de600435610f53565b34801561039557600080fd5b506101de600160a060020a03600435166111c7565b3480156103b657600080fd5b506103bf6111e2565b60408051600160a060020a039092168252519081900360200190f35b3480156103e757600080fd5b506102116004803590602480351515916044359182019101356111f1565b34801561041157600080fd5b506102116004356024356113f4565b34801561042c57600080fd5b506101de611525565b34801561044157600080fd5b506101de61152b565b34801561045657600080fd5b50610211600160a060020a0360043516611532565b34801561047757600080fd5b506103bf611578565b34801561048c57600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261021194600160a060020a038135811695602480359660443590931695369560849492019181908401838280828437509497506115879650505050505050565b3480156104fc57600080fd5b506101de600435600160a060020a036024351661181d565b34801561052057600080fd5b506101de60043561183a565b34801561053857600080fd5b506101de60043560243561184c565b34801561055357600080fd5b50610211600435602435611869565b34801561056e57600080fd5b506101de600435602435611917565b34801561058957600080fd5b506103bf611a58565b34801561059e57600080fd5b506101de600160a060020a0360043516611a67565b3480156105bf57600080fd5b506103bf611a79565b3480156105d457600080fd5b506101de600435602435600160a060020a0360443516611a88565b3480156105fb57600080fd5b50610211600160a060020a0360043516611aab565b34801561061c57600080fd5b50610211600435602435611b21565b600f6020526000908152604090205481565b600354600160a060020a0316331461065457600080fd5b600160a060020a038116151561066957600080fd5b600354600160a060020a038281169116141561068457600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169182179283905560408051939091168352602083019190915280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a150565b6000828152600660209081526040808320338452909152902054818110156107265761072083828403611917565b5061073c565b8181111561073c5761073a83838303610741565b505b505050565b6000808080808080871161079f576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742062652061206e6f6e2d7a65726f206368616e676500000000000000604482015290519081900360640190fd5b336000908152600460205260409020546107bf908863ffffffff611bcf16565b336000818152600460209081526040918290208490558151928352820183905280519297506000805160206121db83398151915292918290030190a160008881526006602090815260408083203384529091529020549350610827848863ffffffff611c3016565b600089815260086020526040902054909650610849908863ffffffff611c3016565b3360009081526007602052604090205490935061086c908863ffffffff611c3016565b600954909250610882908863ffffffff611c3016565b905061089388338689878787611c90565b505050505092915050565b60046020526000908152604090205481565b600080600083116108d057336000908152600460205260409020546108d2565b825b91506000821161092c576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e2774207769746864726177202d207a65726f2062616c616e6365000000604482015290519081900360640190fd5b3360009081526004602052604090205461094c908363ffffffff611c3016565b3360008181526004602090815260409182902084905581519283528201859052818101839052519192507fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb919081900360600190a1604080513381526020810183905281516000805160206121db833981519152929181900390910190a160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169263a9059cbb926044808401936020939083900390910190829087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b5050505050565b635bb1638081565b60086020526000908152604090205481565b600154604080517fdded5dd800000000000000000000000000000000000000000000000000000000815260048101859052336024820152905160009283928392839283928392839283928c92600160a060020a039092169163dded5dd89160448082019260209290919082900301818887803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b505050506040513d6020811015610b2c57600080fd5b50511515610b3957600080fd5b60008b8152600f602052604081205498508811610ba0576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420626520612076616c6964207374617274207765656b000000000000604482015290519081900360640190fd5b610baa888b611e68565b9650868810610c28576040805160e560020a62461bcd028152602060048201526024808201527f6d757374206265206174206c65617374206f6e65207765656b20746f2070617960448201527f206f757400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b86881015610d00576000888152600c602090815260408083208e845290915290205415610c6e576000888152600c602090815260408083208e8452909152902054610c70565b855b9450849550610c7e88611f62565b6000898152600560205260409020549094509250600183118015610ca25750600185115b8015610cae5750600184115b610cb9576000610ce1565b600284610ccc878663ffffffff611fb516565b811515610cd557fe5b04811515610cdf57fe5b045b9150610cf3898363ffffffff611bcf16565b9850600190970196610c28565b6000878152600c602090815260408083208e84529091529020541515610d3d576000878152600c602090815260408083208e845290915290208690555b60008b8152600f60205260409020879055610d59308c8b61202c565b604080518a8152602081018990528151600160a060020a038e16927f634235fcf5af0adbca1a405ec65f6f6c08f55e1f379c2c45cd10f23cb29e0e31928290030190a2505050505050505092915050565b600254600090600160a060020a03163314610dc457600080fd5b600154604080517f117a5b90000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163117a5b90916024808201926020929091908290030181600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b50519050828114610eb0576040805160e560020a62461bcd02815260206004820152601260248201527f67616d65496473206d757374206d617463680000000000000000000000000000604482015290519081900360640190fd5b60408051848152831515602082015281517f5b4957968986533a98fe0578e9917f978928aec1a9b5f937bd2d1ccbd3afb099929181900390910190a1505050565b600d6020526000908152604090205481565b600e6020526000908152604090205481565b600660209081526000928352604080842090915290825290205481565b60056020526000908152604090205481565b6000610f4e6121ca565b905090565b336000908152600e602052604081205481808080808080808811610fc1576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420626520612076616c6964207374617274207765656b000000000000604482015290519081900360640190fd5b610fcb888b611e68565b9650868810611049576040805160e560020a62461bcd028152602060048201526024808201527f6d757374206265206174206c65617374206f6e65207765656b20746f2070617960448201527f206f757400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8794505b86851015611125576000858152600b6020908152604080832033845290915290205415611093576000858152600b60209081526040808320338452909152902054611095565b855b93508395506110a385611f62565b60008681526005602052604090205490935091506001821180156110c75750600184115b80156110d35750600183115b6110de576000611106565b6002836110f1868563ffffffff611fb516565b8115156110fa57fe5b0481151561110457fe5b045b9050611118898263ffffffff611bcf16565b985060019094019361104d565b6000878152600b602090815260408083203384529091529020541515611162576000878152600b6020908152604080832033845290915290208690555b336000818152600e602052604090208890556111809030908b61202c565b604080518a815260208101899052815133927f634235fcf5af0adbca1a405ec65f6f6c08f55e1f379c2c45cd10f23cb29e0e31928290030190a25050505050505050919050565b600160a060020a031660009081526004602052604090205490565b600354600160a060020a031681565b600254600090600160a060020a0316331461120b57600080fd5b600154604080517f117a5b90000000000000000000000000000000000000000000000000000000008152600481018890529051600160a060020a039092169163117a5b90916024808201926020929091908290030181600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505190508481146112f7576040805160e560020a62461bcd02815260206004820152601260248201527f67616d65496473206d757374206d617463680000000000000000000000000000604482015290519081900360640190fd5b7f8728f0c0bc2db13d2866769cb2ad18639ecbe8bc0585443df1d158bc56a65cc985858661133357604080516020810190915260008152611364565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375050505050505b604051808481526020018315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113b1578181015183820152602001611399565b50505050905090810190601f1680156113de5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050505050565b6000806113ff6121ca565b83101561147c576040805160e560020a62461bcd02815260206004820152602560248201527f43757272656e74205765656b206d75737420626520657175616c206f7220677260448201527f6561746572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008381526010602052604090205461149b908563ffffffff611bcf16565b600084815260106020908152604080832084905560059091529020549092506114ca908563ffffffff611bcf16565b600084815260056020908152604091829020839055815186815290810183905281519293507ff94b2162733d4f2db563a9c01ce4072fdefdc683f58d7e171662cec2f1bc3e67929081900390910190a161073a33308661202c565b60095481565b62093a8081565b600254600160a060020a0316331461154957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b8051600090156115e1576040805160e560020a62461bcd02815260206004820152601560248201527f796f75206d7573742070617373206e6f20646174610000000000000000000000604482015290519081900360640190fd5b600054600160a060020a0384811691161461166c576040805160e560020a62461bcd02815260206004820152602e60248201527f73656e64696e672066726f6d2061206e6f6e2d4e565420636f6e74726163742060448201527f6973206e6f7420616c6c6f776564000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038516600090815260046020526040902054611695908563ffffffff611bcf16565b600160a060020a0386166000818152600460209081526040918290208490558151928352820183905280519293506000805160206121db83398151915292918290030190a160408051600160a060020a03871681526020810186905280820183905290517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360600190a160008054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015230602483015260448201899052915191909216926323b872dd92606480820193602093909283900390910190829087803b15801561179b57600080fd5b505af11580156117af573d6000803e3d6000fd5b505050506040513d60208110156117c557600080fd5b50511515610a62576040805160e560020a62461bcd02815260206004820152601a60248201527f6d757374207375636365737366756c6c79207472616e73666572000000000000604482015290519081900360640190fd5b600b60209081526000928352604080842090915290825290205481565b60106020526000908152604090205481565b600c60209081526000928352604080842090915290825290205481565b600154604080517fdded5dd80000000000000000000000000000000000000000000000000000000081526004810185905233602482015290518492600160a060020a03169163dded5dd89160448083019260209291908290030181600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b505050506040513d60208110156118ff57600080fd5b5051151561190c57600080fd5b61073c33848461202c565b60008080808080808711611975576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742062652061206e6f6e2d7a65726f206368616e676500000000000000604482015290519081900360640190fd5b33600090815260046020526040902054611995908863ffffffff611c3016565b336000818152600460209081526040918290208490558151928352820183905280519297506000805160206121db83398151915292918290030190a1600088815260066020908152604080832033845290915290205493506119fd848863ffffffff611bcf16565b600089815260086020526040902054909650611a1f908863ffffffff611bcf16565b33600090815260076020526040902054909350611a42908863ffffffff611bcf16565b600954909250610882908863ffffffff611bcf16565b600054600160a060020a031681565b60076020526000908152604090205481565b600154600160a060020a031681565b600a60209081526000938452604080852082529284528284209052825290205481565b600254600160a060020a03163314611ac257600080fd5b600160a060020a0381161515611ad757600080fd5b600254600160a060020a0382811691161415611af257600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517fdded5dd80000000000000000000000000000000000000000000000000000000081526004810185905233602482015290518492600160a060020a03169163dded5dd89160448083019260209291908290030181600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b505050506040513d6020811015611bb757600080fd5b50511515611bc457600080fd5b61073c83338461202c565b81810182811015611c2a576040805160e560020a62461bcd02815260206004820152600860248201527f616464206661696c000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b92915050565b600082821115611c8a576040805160e560020a62461bcd02815260206004820152600860248201527f737562206661696c000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611c9a6121ca565b6000898152600660209081526040808320338085529083528184208a90558c84526008835281842089905583526007909152812085905560098490559091508511611ce6576001611ce8565b845b6000828152600a602090815260408083208c84528252808320600160a060020a038c1684529091528120919091558311611d23576001611d25565b825b6000828152600b60209081526040808320600160a060020a038c1684529091528120919091558411611d58576001611d5a565b835b6000828152600c602090815260408083208c84529091528120919091558211611d84576001611d86565b815b6000828152600d6020908152604080832093909355600160a060020a038a168252600e905220541515611dfc57600160a060020a0387166000908152600e60209081526040808320600019850190558a8352600f9091529020541515611dfc576000888152600f60205260409020600019820190555b6040805182815260208101889052808201879052606081018590526080810186905260a081018490529051600160a060020a038916918a917f4f93859f92d0225eddd0aa4e2264bc8f2c792a8a7ebd5592875a33d3aee0220d9181900360c00190a35050505050505050565b600080611e736121ca565b9050808410611ecc576040805160e560020a62461bcd02815260206004820152601a60248201527f6d75737420676574206174206c65617374206f6e65207765656b000000000000604482015290519081900360640190fd5b8215611eda57828401611edc565b805b915080821115611f5b576040805160e560020a62461bcd028152602060048201526024808201527f63616e277420676574206d6f7265207468616e207468652063757272656e742060448201527f7765656b00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5092915050565b6000818152600d602052604081205490811515611faf5750815b811515611f9d57600019016000818152600d60205260409020549150611f7c565b6000838152600d602052604090208290555b50919050565b6000821515611fc657506000611c2a565b50818102818382811515611fd657fe5b0414611c2a576040805160e560020a62461bcd02815260206004820152600a60248201527f6d756c206661696c656400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038381169083161415612090576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e2774207472616e7366657220746f20796f757273656c66000000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600460205260409020546120b9908263ffffffff611c3016565b600160a060020a0380851660009081526004602052604080822093909355908416815220546120ee908263ffffffff611bcf16565b600160a060020a0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3600160a060020a0383166000818152600460209081526040918290205482519384529083015280516000805160206121db8339815191529281900390910190a1600160a060020a0382166000818152600460209081526040918290205482519384529083015280516000805160206121db8339815191529281900390910190a1505050565b62093a8042635bb1637f190104905600134e340554ff8a7d64280a2a28b982df554e2595e5bf45cd39368f31099172a6a165627a7a7230582097fd233605a4d632faad84b940eee57f324707b285a890a2e4d48d63b955bc240029

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

00000000000000000000000009d8b66c48424324b25754a873e290cae5dca439

-----Decoded View---------------
Arg [0] : _nvtContract (address): 0x09D8b66C48424324b25754A873e290caE5dca439

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000009d8b66c48424324b25754a873e290cae5dca439


Swarm Source

bzzr://97fd233605a4d632faad84b940eee57f324707b285a890a2e4d48d63b955bc24
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.