Token migration announcement. Banker token contract has migrated to a new address.
ERC-20
Old Contract
Overview
Max Total Supply
25,000,000,000 BNK
Holders
9,945 ( 0.010%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BankeraToken
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-17 */ pragma solidity ^0.4.18; /** * Math operations with safety checks that throw on error */ contract SafeMath { function safeMul(uint256 a, uint256 b) public pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint256 a, uint256 b) public pure returns (uint256) { //assert(a > 0);// Solidity automatically throws when dividing by 0 //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; } function safeSub(uint256 a, uint256 b) public pure returns (uint256) { assert(b <= a); return a - b; } function safeAdd(uint256 a, uint256 b) public pure returns (uint256) { uint256 c = a + b; assert(c>=a && c>=b); return c; } } /* * ERC20 interface * see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 { function totalSupply() public constant returns (uint256); function balanceOf(address _owner) public constant returns (uint256); function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); function allowance(address _owner, address _spender) public constant returns (uint256); /* ERC20 Events */ event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract ContractReceiver { function tokenFallback(address _from, uint256 _value, bytes _data) public; } contract ERC223 is ERC20 { function transfer(address _to, uint256 _value, bytes _data) public returns (bool success); function transfer(address _to, uint256 _value, bytes _data, string _custom_fallback) public returns (bool success); /* ERC223 Events */ event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data); } contract BankeraToken is ERC223, SafeMath { string public constant name = "Banker Token"; // Set the name for display purposes string public constant symbol = "BNK"; // Set the symbol for display purposes uint8 public constant decimals = 8; // Amount of decimals for display purposes uint256 private issued = 0; // tokens count issued to addresses uint256 private totalTokens = 25000000000 * 100000000; //25,000,000,000.0000 0000 BNK address private contractOwner; address private rewardManager; address private roundManager; address private issueManager; uint64 public currentRound = 0; bool public paused = false; mapping (uint64 => Reward) public reward; //key - round, value - reward in round mapping (address => AddressBalanceInfoStructure) public accountBalances; //key - address, value - address balance info mapping (uint64 => uint256) public issuedTokensInRound; //key - round, value - issued tokens mapping (address => mapping (address => uint256)) internal allowed; uint256 public blocksPerRound; // blocks per round uint256 public lastBlockNumberInRound; struct Reward { uint64 roundNumber; uint256 rewardInWei; uint256 rewardRate; //reward rate in wei. 1 sBNK - xxx wei bool isConfigured; } struct AddressBalanceInfoStructure { uint256 addressBalance; mapping (uint256 => uint256) roundBalanceMap; //key - round number, value - total token amount in round mapping (uint64 => bool) wasModifiedInRoundMap; //key - round number, value - is modified in round uint64[] mapKeys; //round balance map keys uint64 claimedRewardTillRound; uint256 totalClaimedReward; } /* Initializes contract with initial blocks per round number*/ function BankeraToken(uint256 _blocksPerRound, uint64 _round) public { contractOwner = msg.sender; lastBlockNumberInRound = block.number; blocksPerRound = _blocksPerRound; currentRound = _round; } function() public whenNotPaused payable { } // Public functions /** * @dev Reject all ERC223 compatible tokens * @param _from address The address that is transferring the tokens * @param _value uint256 the amount of the specified token * @param _data Bytes The data passed from the caller. */ function tokenFallback(address _from, uint256 _value, bytes _data) public whenNotPaused view { revert(); } function setReward(uint64 _roundNumber, uint256 _roundRewardInWei) public whenNotPaused onlyRewardManager { isNewRound(); Reward storage rewardInfo = reward[_roundNumber]; //validations assert(rewardInfo.roundNumber == _roundNumber); assert(!rewardInfo.isConfigured); //allow just not configured reward configuration rewardInfo.rewardInWei = _roundRewardInWei; if(_roundRewardInWei > 0){ rewardInfo.rewardRate = safeDiv(_roundRewardInWei, issuedTokensInRound[_roundNumber]); } rewardInfo.isConfigured = true; } /* Change contract owner */ function changeContractOwner(address _newContractOwner) public onlyContractOwner { isNewRound(); if (_newContractOwner != contractOwner) { contractOwner = _newContractOwner; } else { revert(); } } /* Change reward contract owner */ function changeRewardManager(address _newRewardManager) public onlyContractOwner { isNewRound(); if (_newRewardManager != rewardManager) { rewardManager = _newRewardManager; } else { revert(); } } /* Change round contract owner */ function changeRoundManager(address _newRoundManager) public onlyContractOwner { isNewRound(); if (_newRoundManager != roundManager) { roundManager = _newRoundManager; } else { revert(); } } /* Change issue contract owner */ function changeIssueManager(address _newIssueManager) public onlyContractOwner { isNewRound(); if (_newIssueManager != issueManager) { issueManager = _newIssueManager; } else { revert(); } } function setBlocksPerRound(uint64 _newBlocksPerRound) public whenNotPaused onlyRoundManager { blocksPerRound = _newBlocksPerRound; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyContractOwner whenNotPaused public { paused = true; } /** * @dev called by the owner to resume, returns to normal state */ function resume() onlyContractOwner whenPaused public { paused = false; } /** * * permission checker */ modifier onlyContractOwner() { if(msg.sender != contractOwner){ revert(); } _; } /** * set reward for round (reward admin) */ modifier onlyRewardManager() { if(msg.sender != rewardManager && msg.sender != contractOwner){ revert(); } _; } /** * adjust round length (round admin) */ modifier onlyRoundManager() { if(msg.sender != roundManager && msg.sender != contractOwner){ revert(); } _; } /** * issue tokens to ETH addresses (issue admin) */ modifier onlyIssueManager() { if(msg.sender != issueManager && msg.sender != contractOwner){ revert(); } _; } modifier notSelf(address _to) { if(msg.sender == _to){ revert(); } _; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } function getRoundBalance(address _address, uint256 _round) public view returns (uint256) { return accountBalances[_address].roundBalanceMap[_round]; } function isModifiedInRound(address _address, uint64 _round) public view returns (bool) { return accountBalances[_address].wasModifiedInRoundMap[_round]; } function getBalanceModificationRounds(address _address) public view returns (uint64[]) { return accountBalances[_address].mapKeys; } //action for issue tokens function issueTokens(address _receiver, uint256 _tokenAmount) public whenNotPaused onlyIssueManager { isNewRound(); issue(_receiver, _tokenAmount); } function withdrawEther() public onlyContractOwner { isNewRound(); if(this.balance > 0) { contractOwner.transfer(this.balance); } else { revert(); } } /* Send coins from owner to other address */ /*Override*/ function transfer(address _to, uint256 _value) public notSelf(_to) whenNotPaused returns (bool success){ require(_to != address(0)); //added due to backwards compatibility reasons bytes memory empty; if(isContract(_to)) { return transferToContract(msg.sender, _to, _value, empty); } else { return transferToAddress(msg.sender, _to, _value, empty); } } /*Override*/ function balanceOf(address _owner) public constant returns (uint256 balance) { return accountBalances[_owner].addressBalance; } /*Override*/ function totalSupply() public constant returns (uint256){ return totalTokens; } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ /*Override*/ function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) { require(_to != address(0)); require(_value <= allowed[_from][msg.sender]); //added due to backwards compatibility reasons bytes memory empty; if(isContract(_to)) { require(transferToContract(_from, _to, _value, empty)); } else { require(transferToAddress(_from, _to, _value, empty)); } allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ /*Override*/ function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ /*Override*/ function allowance(address _owner, address _spender) public view whenNotPaused returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint256 _addedValue) public returns (bool) { allowed[msg.sender][_spender] = safeAdd(allowed[msg.sender][_spender], _addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint256 _subtractedValue) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = safeSub(oldValue, _subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } // Function that is called when a user or another contract wants to transfer funds . /*Override*/ function transfer(address _to, uint256 _value, bytes _data) public whenNotPaused notSelf(_to) returns (bool success){ require(_to != address(0)); if(isContract(_to)) { return transferToContract(msg.sender, _to, _value, _data); } else { return transferToAddress(msg.sender, _to, _value, _data); } } // Function that is called when a user or another contract wants to transfer funds. /*Override*/ function transfer(address _to, uint256 _value, bytes _data, string _custom_fallback) public whenNotPaused notSelf(_to) returns (bool success){ require(_to != address(0)); if(isContract(_to)) { if(accountBalances[msg.sender].addressBalance < _value){ // Check if the sender has enough revert(); } if(safeAdd(accountBalances[_to].addressBalance, _value) < accountBalances[_to].addressBalance){ // Check for overflows revert(); } isNewRound(); subFromAddressBalancesInfo(msg.sender, _value); // Subtract from the sender addToAddressBalancesInfo(_to, _value); // Add the same to the recipient assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data)); /* Notify anyone listening that this transfer took place */ Transfer(msg.sender, _to, _value, _data); Transfer(msg.sender, _to, _value); return true; } else { return transferToAddress(msg.sender, _to, _value, _data); } } function claimReward() public whenNotPaused returns (uint256 rewardAmountInWei) { isNewRound(); return claimRewardTillRound(currentRound); } function claimRewardTillRound(uint64 _claimTillRound) public whenNotPaused returns (uint256 rewardAmountInWei) { isNewRound(); rewardAmountInWei = calculateClaimableRewardTillRound(msg.sender, _claimTillRound); accountBalances[msg.sender].claimedRewardTillRound = _claimTillRound; if (rewardAmountInWei > 0){ accountBalances[msg.sender].totalClaimedReward = safeAdd(accountBalances[msg.sender].totalClaimedReward, rewardAmountInWei); msg.sender.transfer(rewardAmountInWei); } return rewardAmountInWei; } function calculateClaimableReward(address _address) public constant returns (uint256 rewardAmountInWei) { return calculateClaimableRewardTillRound(_address, currentRound); } function calculateClaimableRewardTillRound(address _address, uint64 _claimTillRound) public constant returns (uint256) { uint256 rewardAmountInWei = 0; if (_claimTillRound > currentRound) { revert(); } if (currentRound < 1) { revert(); } AddressBalanceInfoStructure storage accountBalanceInfo = accountBalances[_address]; if(accountBalanceInfo.mapKeys.length == 0){ revert(); } uint64 userLastClaimedRewardRound = accountBalanceInfo.claimedRewardTillRound; if (_claimTillRound < userLastClaimedRewardRound) { revert(); } for (uint64 workRound = userLastClaimedRewardRound; workRound < _claimTillRound; workRound++) { Reward storage rewardInfo = reward[workRound]; assert(rewardInfo.isConfigured); //don't allow to withdraw reward if affected reward is not configured if(accountBalanceInfo.wasModifiedInRoundMap[workRound]){ rewardAmountInWei = safeAdd(rewardAmountInWei, safeMul(accountBalanceInfo.roundBalanceMap[workRound], rewardInfo.rewardRate)); } else { uint64 lastBalanceModifiedRound = 0; for (uint256 i = accountBalanceInfo.mapKeys.length; i > 0; i--) { uint64 modificationInRound = accountBalanceInfo.mapKeys[i-1]; if (modificationInRound <= workRound) { lastBalanceModifiedRound = modificationInRound; break; } } rewardAmountInWei = safeAdd(rewardAmountInWei, safeMul(accountBalanceInfo.roundBalanceMap[lastBalanceModifiedRound], rewardInfo.rewardRate)); } } return rewardAmountInWei; } function createRounds(uint256 maxRounds) public { uint256 blocksAfterLastRound = safeSub(block.number, lastBlockNumberInRound); //current block number - last round block number = blocks after last round if(blocksAfterLastRound >= blocksPerRound){ // need to increase reward round if blocks after last round is greater or equal blocks per round uint256 roundsNeedToCreate = safeDiv(blocksAfterLastRound, blocksPerRound); //calculate how many rounds need to create if(roundsNeedToCreate > maxRounds){ roundsNeedToCreate = maxRounds; } lastBlockNumberInRound = safeAdd(lastBlockNumberInRound, safeMul(roundsNeedToCreate, blocksPerRound)); for (uint256 i = 0; i < roundsNeedToCreate; i++) { updateRoundInformation(); } } } // Private functions //assemble the given address bytecode. If bytecode exists then the _address is a contract. function isContract(address _address) private view returns (bool is_contract) { uint256 length; assembly { //retrieve the size of the code on target address, this needs assembly length := extcodesize(_address) } return (length > 0); } function isNewRound() private { uint256 blocksAfterLastRound = safeSub(block.number, lastBlockNumberInRound); //current block number - last round block number = blocks after last round if(blocksAfterLastRound >= blocksPerRound){ // need to increase reward round if blocks after last round is greater or equal blocks per round updateRoundsInformation(blocksAfterLastRound); } } function updateRoundsInformation(uint256 _blocksAfterLastRound) private { uint256 roundsNeedToCreate = safeDiv(_blocksAfterLastRound, blocksPerRound); //calculate how many rounds need to create lastBlockNumberInRound = safeAdd(lastBlockNumberInRound, safeMul(roundsNeedToCreate, blocksPerRound)); //calculate last round creation block number for (uint256 i = 0; i < roundsNeedToCreate; i++) { updateRoundInformation(); } } function updateRoundInformation() private { issuedTokensInRound[currentRound] = issued; Reward storage rewardInfo = reward[currentRound]; rewardInfo.roundNumber = currentRound; currentRound = currentRound + 1; } function issue(address _receiver, uint256 _tokenAmount) private { if(_tokenAmount == 0){ revert(); } uint256 newIssuedAmount = safeAdd(_tokenAmount, issued); if(newIssuedAmount > totalTokens){ revert(); } addToAddressBalancesInfo(_receiver, _tokenAmount); issued = newIssuedAmount; bytes memory empty; if(isContract(_receiver)) { ContractReceiver receiverContract = ContractReceiver(_receiver); receiverContract.tokenFallback(msg.sender, _tokenAmount, empty); } /* Notify anyone listening that this transfer took place */ Transfer(msg.sender, _receiver, _tokenAmount, empty); Transfer(msg.sender, _receiver, _tokenAmount); } function addToAddressBalancesInfo(address _receiver, uint256 _tokenAmount) private { AddressBalanceInfoStructure storage accountBalance = accountBalances[_receiver]; if(!accountBalance.wasModifiedInRoundMap[currentRound]){ //allow just push one time per round // If user first time get update balance set user claimed reward round to round before. if(accountBalance.mapKeys.length == 0 && currentRound > 0){ accountBalance.claimedRewardTillRound = currentRound; } accountBalance.mapKeys.push(currentRound); accountBalance.wasModifiedInRoundMap[currentRound] = true; } accountBalance.addressBalance = safeAdd(accountBalance.addressBalance, _tokenAmount); accountBalance.roundBalanceMap[currentRound] = accountBalance.addressBalance; } function subFromAddressBalancesInfo(address _adr, uint256 _tokenAmount) private { AddressBalanceInfoStructure storage accountBalance = accountBalances[_adr]; if(!accountBalance.wasModifiedInRoundMap[currentRound]){ //allow just push one time per round accountBalance.mapKeys.push(currentRound); accountBalance.wasModifiedInRoundMap[currentRound] = true; } accountBalance.addressBalance = safeSub(accountBalance.addressBalance, _tokenAmount); accountBalance.roundBalanceMap[currentRound] = accountBalance.addressBalance; } //function that is called when transaction target is an address function transferToAddress(address _from, address _to, uint256 _value, bytes _data) private returns (bool success) { if(accountBalances[_from].addressBalance < _value){ // Check if the sender has enough revert(); } if(safeAdd(accountBalances[_to].addressBalance, _value) < accountBalances[_to].addressBalance){ // Check for overflows revert(); } isNewRound(); subFromAddressBalancesInfo(_from, _value); // Subtract from the sender addToAddressBalancesInfo(_to, _value); // Add the same to the recipient /* Notify anyone listening that this transfer took place */ Transfer(_from, _to, _value, _data); Transfer(_from, _to, _value); return true; } //function that is called when transaction target is a contract function transferToContract(address _from, address _to, uint256 _value, bytes _data) private returns (bool success) { if(accountBalances[_from].addressBalance < _value){ // Check if the sender has enough revert(); } if(safeAdd(accountBalances[_to].addressBalance, _value) < accountBalances[_to].addressBalance){ // Check for overflows revert(); } isNewRound(); subFromAddressBalancesInfo(_from, _value); // Subtract from the sender addToAddressBalancesInfo(_to, _value); // Add the same to the recipient ContractReceiver receiver = ContractReceiver(_to); receiver.tokenFallback(_from, _value, _data); /* Notify anyone listening that this transfer took place */ Transfer(_from, _to, _value, _data); Transfer(_from, _to, _value); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint64"}],"name":"reward","outputs":[{"name":"roundNumber","type":"uint64"},{"name":"rewardInWei","type":"uint256"},{"name":"rewardRate","type":"uint256"},{"name":"isConfigured","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_roundNumber","type":"uint64"},{"name":"_roundRewardInWei","type":"uint256"}],"name":"setReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_round","type":"uint64"}],"name":"isModifiedInRound","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_claimTillRound","type":"uint64"}],"name":"calculateClaimableRewardTillRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newBlocksPerRound","type":"uint64"}],"name":"setBlocksPerRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newContractOwner","type":"address"}],"name":"changeContractOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_tokenAmount","type":"uint256"}],"name":"issueTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newIssueManager","type":"address"}],"name":"changeIssueManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountBalances","outputs":[{"name":"addressBalance","type":"uint256"},{"name":"claimedRewardTillRound","type":"uint64"},{"name":"totalClaimedReward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"maxRounds","type":"uint256"}],"name":"createRounds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_claimTillRound","type":"uint64"}],"name":"claimRewardTillRound","outputs":[{"name":"rewardAmountInWei","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRound","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_round","type":"uint256"}],"name":"getRoundBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"calculateClaimableReward","outputs":[{"name":"rewardAmountInWei","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeDiv","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"claimReward","outputs":[{"name":"rewardAmountInWei","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRoundManager","type":"address"}],"name":"changeRoundManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getBalanceModificationRounds","outputs":[{"name":"","type":"uint64[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_newRewardManager","type":"address"}],"name":"changeRewardManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"},{"name":"_custom_fallback","type":"string"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastBlockNumberInRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint64"}],"name":"issuedTokensInRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_blocksPerRound","type":"uint256"},{"name":"_round","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_data","type":"bytes"}],"name":"Transfer","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":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6060604052600080556722b1c8c1227a00006001556005805460a060020a60e860020a0319169055341561003257600080fd5b604051604080612613833981016040528080519190602001805160028054600160a060020a03191633600160a060020a031617905543600b55600a9390935550506005805460a060020a60e060020a0319167401000000000000000000000000000000000000000067ffffffffffffffff90931692909202919091179055612554806100bf6000396000f3006060604052600436106101f55763ffffffff60e060020a600035041663046f7da2811461020e57806306fdde0314610221578063095ea7b3146102ab57806311fe7e43146102e157806318160ddd14610338578063205360e01461035d57806323b872dd146103805780632e12e6a1146103a8578063313ce567146103d45780633284b3e2146103fd5780633c9c97f0146104295780633ead67b514610449578063475a9fa914610468578063522e35fb1461048a5780635c975abb146104a957806366188463146104bc5780636e4ed796146104de5780636ff96d17146104f157806370a082311461053d5780637362377b1461055c578063763232531461056f5780637af05516146105855780638456cb59146105a55780638a19c8bc146105b85780638b39d181146105e857806395d89b411461060a5780639d1303431461061d578063a293d1e81461063c578063a9059cbb14610655578063b5931f7c14610677578063b88a802f14610690578063be45fd62146106a3578063c0ee0b8a14610708578063c38e650f1461076d578063c7b235611461078c578063d05c78da146107fe578063d2631e4214610817578063d73dd62314610836578063dd62ed3e14610858578063e6cb90131461087d578063f6368f8a14610896578063f6ba13a51461093d578063f9368e7a14610950575b60055460e060020a900460ff161561020c57600080fd5b005b341561021957600080fd5b61020c610970565b341561022c57600080fd5b6102346109cb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610270578082015183820152602001610258565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102b657600080fd5b6102cd600160a060020a0360043516602435610a02565b604051901515815260200160405180910390f35b34156102ec57600080fd5b61030167ffffffffffffffff60043516610a85565b60405167ffffffffffffffff9094168452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561034357600080fd5b61034b610aba565b60405190815260200160405180910390f35b341561036857600080fd5b61020c67ffffffffffffffff60043516602435610ac1565b341561038b57600080fd5b6102cd600160a060020a0360043581169060243516604435610b9e565b34156103b357600080fd5b6102cd600160a060020a036004351667ffffffffffffffff60243516610cad565b34156103df57600080fd5b6103e7610ce7565b60405160ff909116815260200160405180910390f35b341561040857600080fd5b61034b600160a060020a036004351667ffffffffffffffff60243516610cec565b341561043457600080fd5b61020c67ffffffffffffffff60043516610f0f565b341561045457600080fd5b61020c600160a060020a0360043516610f6d565b341561047357600080fd5b61020c600160a060020a0360043516602435610fda565b341561049557600080fd5b61020c600160a060020a036004351661103f565b34156104b457600080fd5b6102cd6110a4565b34156104c757600080fd5b6102cd600160a060020a03600435166024356110b4565b34156104e957600080fd5b61034b6111a8565b34156104fc57600080fd5b610510600160a060020a03600435166111ae565b60405192835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390f35b341561054857600080fd5b61034b600160a060020a03600435166111d9565b341561056757600080fd5b61020c6111f4565b341561057a57600080fd5b61020c600435611265565b341561059057600080fd5b61034b67ffffffffffffffff600435166112d3565b34156105b057600080fd5b61020c6113b3565b34156105c357600080fd5b6105cb611413565b60405167ffffffffffffffff909116815260200160405180910390f35b34156105f357600080fd5b61034b600160a060020a036004351660243561142a565b341561061557600080fd5b610234611456565b341561062857600080fd5b61034b600160a060020a036004351661148d565b341561064757600080fd5b61034b6004356024356114b5565b341561066057600080fd5b6102cd600160a060020a03600435166024356114c7565b341561068257600080fd5b61034b600435602435611552565b341561069b57600080fd5b61034b611567565b34156106ae57600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506115ab95505050505050565b341561071357600080fd5b61020c60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061162795505050505050565b341561077857600080fd5b61020c600160a060020a036004351661163e565b341561079757600080fd5b6107ab600160a060020a03600435166116a3565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107ea5780820151838201526020016107d2565b505050509050019250505060405180910390f35b341561080957600080fd5b61034b60043560243561175d565b341561082257600080fd5b61020c600160a060020a0360043516611788565b341561084157600080fd5b6102cd600160a060020a03600435166024356117ed565b341561086357600080fd5b61034b600160a060020a036004358116906024351661188b565b341561088857600080fd5b61034b6004356024356118d1565b34156108a157600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506118eb95505050505050565b341561094857600080fd5b61034b611bca565b341561095b57600080fd5b61034b67ffffffffffffffff60043516611bd0565b60025433600160a060020a0390811691161461098b57600080fd5b60055460e060020a900460ff1615156109a357600080fd5b600580547cff0000000000000000000000000000000000000000000000000000000019169055565b60408051908101604052600c81527f42616e6b657220546f6b656e0000000000000000000000000000000000000000602082015281565b60055460009060e060020a900460ff1615610a1c57600080fd5b600160a060020a03338116600081815260096020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600660205260009081526040902080546001820154600283015460039093015467ffffffffffffffff90921692909160ff1684565b6001545b90565b60055460009060e060020a900460ff1615610adb57600080fd5b60035433600160a060020a03908116911614801590610b09575060025433600160a060020a03908116911614155b15610b1357600080fd5b610b1b611be2565b5067ffffffffffffffff8083166000818152600660205260409020805490921614610b4257fe5b600381015460ff1615610b5157fe5b600181018290556000821115610b8c5767ffffffffffffffff8316600090815260086020526040902054610b86908390611552565b60028201555b600301805460ff191660011790555050565b6000610ba861248e565b60055460e060020a900460ff1615610bbf57600080fd5b600160a060020a0384161515610bd457600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054831115610c0757600080fd5b610c1084611c05565b15610c3157610c2185858584611c0d565b1515610c2c57600080fd5b610c48565b610c3d85858584611e40565b1515610c4857600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054610c7990846114b5565b600160a060020a0380871660009081526009602090815260408083203390941683529290522055600191505b509392505050565b600160a060020a038216600090815260076020908152604080832067ffffffffffffffff8516845260020190915290205460ff1692915050565b600881565b6000806000806000806000806000809750600560149054906101000a900467ffffffffffffffff1667ffffffffffffffff168a67ffffffffffffffff161115610d3457600080fd5b600554600160a060020a90910467ffffffffffffffff161015610d5657600080fd5b600160a060020a038b16600090815260076020526040902060038101549097501515610d8157600080fd5b600487015467ffffffffffffffff90811696508a1686901015610da357600080fd5b8594505b8967ffffffffffffffff168567ffffffffffffffff161015610f005767ffffffffffffffff85166000908152600660205260409020600381015490945060ff161515610def57fe5b67ffffffffffffffff8516600090815260028801602052604090205460ff1615610e5057610e4988610e448960010160008967ffffffffffffffff16815260200190815260200160002054876002015461175d565b6118d1565b9750610ef5565b60038701546000935091505b6000821115610ec1576003870180546000198401908110610e7957fe5b6000918252602090912060048204015460039091166008026101000a900467ffffffffffffffff908116915085168111610eb557809250610ec1565b60001990910190610e5c565b610ef288610e448960010160008767ffffffffffffffff16815260200190815260200160002054876002015461175d565b97505b600190940193610da7565b50959998505050505050505050565b60055460e060020a900460ff1615610f2657600080fd5b60045433600160a060020a03908116911614801590610f54575060025433600160a060020a03908116911614155b15610f5e57600080fd5b67ffffffffffffffff16600a55565b60025433600160a060020a03908116911614610f8857600080fd5b610f90611be2565b600254600160a060020a03828116911614610fd2576002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600080fd5b50565b60055460e060020a900460ff1615610ff157600080fd5b60055433600160a060020a0390811691161480159061101f575060025433600160a060020a03908116911614155b1561102957600080fd5b611031611be2565b61103b8282611f92565b5050565b60025433600160a060020a0390811691161461105a57600080fd5b611062611be2565b600554600160a060020a03828116911614610fd2576005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b60055460e060020a900460ff1681565b600160a060020a0333811660009081526009602090815260408083209386168352929052908120548083111561111157600160a060020a033381166000908152600960209081526040808320938816835292905290812055611142565b61111b81846114b5565b600160a060020a033381166000908152600960209081526040808320938916835292905220555b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600a5481565b600760205260009081526040902080546004820154600590920154909167ffffffffffffffff169083565b600160a060020a031660009081526007602052604090205490565b60025433600160a060020a0390811691161461120f57600080fd5b611217611be2565b600030600160a060020a0316311115610fd257600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561126357600080fd5b565b600080600061127643600b546114b5565b600a5490935083106112cd5761128e83600a54611552565b91508382111561129c578391505b6112ae600b54610e4484600a5461175d565b600b555060005b818110156112cd576112c56121a1565b6001016112b5565b50505050565b60055460009060e060020a900460ff16156112ed57600080fd5b6112f5611be2565b6112ff3383610cec565b33600160a060020a03166000908152600760205260408120600401805467ffffffffffffffff191667ffffffffffffffff86161790559091508111156113ae57600160a060020a03331660009081526007602052604090206005015461136590826118d1565b600160a060020a03331660008181526007602052604090819020600501929092559082156108fc0290839051600060405180830381858888f1935050505015156113ae57600080fd5b919050565b60025433600160a060020a039081169116146113ce57600080fd5b60055460e060020a900460ff16156113e557600080fd5b600580547cff00000000000000000000000000000000000000000000000000000000191660e060020a179055565b60055460a060020a900467ffffffffffffffff1681565b600160a060020a0391909116600090815260076020908152604080832093835260019093019052205490565b60408051908101604052600381527f424e4b0000000000000000000000000000000000000000000000000000000000602082015281565b60006114af82600560149054906101000a900467ffffffffffffffff16610cec565b92915050565b6000828211156114c157fe5b50900390565b60006114d161248e565b8380600160a060020a031633600160a060020a031614156114f157600080fd5b60055460e060020a900460ff161561150857600080fd5b600160a060020a038516151561151d57600080fd5b61152685611c05565b1561153e5761153733868685611c0d565b925061154a565b61153733868685611e40565b505092915050565b6000818381151561155f57fe5b049392505050565b60055460009060e060020a900460ff161561158157600080fd5b611589611be2565b6005546115a69060a060020a900467ffffffffffffffff166112d3565b905090565b60055460009060e060020a900460ff16156115c557600080fd5b8380600160a060020a031633600160a060020a031614156115e557600080fd5b600160a060020a03851615156115fa57600080fd5b61160385611c05565b1561161b5761161433868686611c0d565b9150610ca5565b61161433868686611e40565b60055460e060020a900460ff1615610fd257600080fd5b60025433600160a060020a0390811691161461165957600080fd5b611661611be2565b600454600160a060020a03828116911614610fd2576004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b6116ab61248e565b6007600083600160a060020a0316600160a060020a0316815260200190815260200160002060030180548060200260200160405190810160405280929190818152602001828054801561175157602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161170c5790505b50505050509050919050565b6000828202831580611779575082848281151561177657fe5b04145b151561178157fe5b9392505050565b60025433600160a060020a039081169116146117a357600080fd5b6117ab611be2565b600354600160a060020a03828116911614610fd2576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600160a060020a03338116600090815260096020908152604080832093861683529290529081205461181f90836118d1565b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b60055460009060e060020a900460ff16156118a557600080fd5b50600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600082820183811080159061177957508281101561178157fe5b60055460009060e060020a900460ff161561190557600080fd5b8480600160a060020a031633600160a060020a0316141561192557600080fd5b600160a060020a038616151561193a57600080fd5b61194386611c05565b15611bb257600160a060020a0333166000908152600760205260409020548590101561196e57600080fd5b600160a060020a03861660009081526007602052604090205461199181876118d1565b101561199c57600080fd5b6119a4611be2565b6119ae3386612231565b6119b88686612326565b85600160a060020a03166000846040518082805190602001908083835b602083106119f45780518252601f1990920191602091820191016119d5565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051809103902060e060020a9004903388886040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611a85578082015183820152602001611a6d565b50505050905090810190601f168015611ab25780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611ad257fe5b85600160a060020a031633600160a060020a03166000805160206124e9833981519152878760405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611b39578082015183820152602001611b21565b50505050905090810190601f168015611b665780820380516001836020036101000a031916815260200191505b50935050505060405180910390a385600160a060020a031633600160a060020a03166000805160206125098339815191528760405190815260200160405180910390a360019150611bc1565b611bbe33878787611e40565b91505b50949350505050565b600b5481565b60086020526000908152604090205481565b6000611bf043600b546114b5565b600a549091508110610fd757610fd781612447565b6000903b1190565b600160a060020a038416600090815260076020526040812054819084901015611c3557600080fd5b600160a060020a038516600090815260076020526040902054611c5881866118d1565b1015611c6357600080fd5b611c6b611be2565b611c758685612231565b611c7f8585612326565b5083600160a060020a03811663c0ee0b8a8786866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d00578082015183820152602001611ce8565b50505050905090810190601f168015611d2d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515611d4d57600080fd5b5af11515611d5a57600080fd5b50505084600160a060020a031686600160a060020a03166000805160206124e9833981519152868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611dc4578082015183820152602001611dac565b50505050905090810190601f168015611df15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031686600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a350600195945050505050565b600160a060020a03841660009081526007602052604081205483901015611e6657600080fd5b600160a060020a038416600090815260076020526040902054611e8981856118d1565b1015611e9457600080fd5b611e9c611be2565b611ea68584612231565b611eb08484612326565b83600160a060020a031685600160a060020a03166000805160206124e9833981519152858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611f17578082015183820152602001611eff565b50505050905090810190601f168015611f445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a383600160a060020a031685600160a060020a03166000805160206125098339815191528560405190815260200160405180910390a3506001949350505050565b6000611f9c61248e565b6000831515611faa57600080fd5b611fb6846000546118d1565b9250600154831115611fc757600080fd5b611fd18585612326565b6000839055611fdf85611c05565b156120c3575083600160a060020a03811663c0ee0b8a3386856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561206557808201518382015260200161204d565b50505050905090810190601f1680156120925780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156120b257600080fd5b5af115156120bf57600080fd5b5050505b84600160a060020a031633600160a060020a03166000805160206124e9833981519152868560405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561212a578082015183820152602001612112565b50505050905090810190601f1680156121575780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031633600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a35050505050565b600080546005805467ffffffffffffffff60a060020a91829004811685526008602090815260408087209590955583548390048216808752600690915293909420805467ffffffffffffffff1916909317909255805482810484166001019093169091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff1615156122ec576003810180546001810161228a83826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836114b5565b80825560055460a060020a900467ffffffffffffffff16600090815260019092016020526040909120555050565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff16151561243b5760038101541580156123915750600554600060a060020a90910467ffffffffffffffff16115b156123c55760055460048201805460a060020a90920467ffffffffffffffff1667ffffffffffffffff199092169190911790555b600381018054600181016123d983826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836118d1565b60008061245683600a54611552565b915061246a600b54610e4484600a5461175d565b600b555060005b81811015612489576124816121a1565b600101612471565b505050565b60206040519081016040526000815290565b8154818355818115116124895760008381526020902061248991610abe9160046003928301819004820192860104015b808211156124e457600081556001016124d0565b50905600e19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200de39c798fd5f56c3400ead577732ed81f31812abd4f012b6991853bbe9d062c002900000000000000000000000000000000000000000000000000000000000053f20000000000000000000000000000000000000000000000000000000000000026
Deployed Bytecode
0x6060604052600436106101f55763ffffffff60e060020a600035041663046f7da2811461020e57806306fdde0314610221578063095ea7b3146102ab57806311fe7e43146102e157806318160ddd14610338578063205360e01461035d57806323b872dd146103805780632e12e6a1146103a8578063313ce567146103d45780633284b3e2146103fd5780633c9c97f0146104295780633ead67b514610449578063475a9fa914610468578063522e35fb1461048a5780635c975abb146104a957806366188463146104bc5780636e4ed796146104de5780636ff96d17146104f157806370a082311461053d5780637362377b1461055c578063763232531461056f5780637af05516146105855780638456cb59146105a55780638a19c8bc146105b85780638b39d181146105e857806395d89b411461060a5780639d1303431461061d578063a293d1e81461063c578063a9059cbb14610655578063b5931f7c14610677578063b88a802f14610690578063be45fd62146106a3578063c0ee0b8a14610708578063c38e650f1461076d578063c7b235611461078c578063d05c78da146107fe578063d2631e4214610817578063d73dd62314610836578063dd62ed3e14610858578063e6cb90131461087d578063f6368f8a14610896578063f6ba13a51461093d578063f9368e7a14610950575b60055460e060020a900460ff161561020c57600080fd5b005b341561021957600080fd5b61020c610970565b341561022c57600080fd5b6102346109cb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610270578082015183820152602001610258565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102b657600080fd5b6102cd600160a060020a0360043516602435610a02565b604051901515815260200160405180910390f35b34156102ec57600080fd5b61030167ffffffffffffffff60043516610a85565b60405167ffffffffffffffff9094168452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561034357600080fd5b61034b610aba565b60405190815260200160405180910390f35b341561036857600080fd5b61020c67ffffffffffffffff60043516602435610ac1565b341561038b57600080fd5b6102cd600160a060020a0360043581169060243516604435610b9e565b34156103b357600080fd5b6102cd600160a060020a036004351667ffffffffffffffff60243516610cad565b34156103df57600080fd5b6103e7610ce7565b60405160ff909116815260200160405180910390f35b341561040857600080fd5b61034b600160a060020a036004351667ffffffffffffffff60243516610cec565b341561043457600080fd5b61020c67ffffffffffffffff60043516610f0f565b341561045457600080fd5b61020c600160a060020a0360043516610f6d565b341561047357600080fd5b61020c600160a060020a0360043516602435610fda565b341561049557600080fd5b61020c600160a060020a036004351661103f565b34156104b457600080fd5b6102cd6110a4565b34156104c757600080fd5b6102cd600160a060020a03600435166024356110b4565b34156104e957600080fd5b61034b6111a8565b34156104fc57600080fd5b610510600160a060020a03600435166111ae565b60405192835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390f35b341561054857600080fd5b61034b600160a060020a03600435166111d9565b341561056757600080fd5b61020c6111f4565b341561057a57600080fd5b61020c600435611265565b341561059057600080fd5b61034b67ffffffffffffffff600435166112d3565b34156105b057600080fd5b61020c6113b3565b34156105c357600080fd5b6105cb611413565b60405167ffffffffffffffff909116815260200160405180910390f35b34156105f357600080fd5b61034b600160a060020a036004351660243561142a565b341561061557600080fd5b610234611456565b341561062857600080fd5b61034b600160a060020a036004351661148d565b341561064757600080fd5b61034b6004356024356114b5565b341561066057600080fd5b6102cd600160a060020a03600435166024356114c7565b341561068257600080fd5b61034b600435602435611552565b341561069b57600080fd5b61034b611567565b34156106ae57600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506115ab95505050505050565b341561071357600080fd5b61020c60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061162795505050505050565b341561077857600080fd5b61020c600160a060020a036004351661163e565b341561079757600080fd5b6107ab600160a060020a03600435166116a3565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107ea5780820151838201526020016107d2565b505050509050019250505060405180910390f35b341561080957600080fd5b61034b60043560243561175d565b341561082257600080fd5b61020c600160a060020a0360043516611788565b341561084157600080fd5b6102cd600160a060020a03600435166024356117ed565b341561086357600080fd5b61034b600160a060020a036004358116906024351661188b565b341561088857600080fd5b61034b6004356024356118d1565b34156108a157600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506118eb95505050505050565b341561094857600080fd5b61034b611bca565b341561095b57600080fd5b61034b67ffffffffffffffff60043516611bd0565b60025433600160a060020a0390811691161461098b57600080fd5b60055460e060020a900460ff1615156109a357600080fd5b600580547cff0000000000000000000000000000000000000000000000000000000019169055565b60408051908101604052600c81527f42616e6b657220546f6b656e0000000000000000000000000000000000000000602082015281565b60055460009060e060020a900460ff1615610a1c57600080fd5b600160a060020a03338116600081815260096020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600660205260009081526040902080546001820154600283015460039093015467ffffffffffffffff90921692909160ff1684565b6001545b90565b60055460009060e060020a900460ff1615610adb57600080fd5b60035433600160a060020a03908116911614801590610b09575060025433600160a060020a03908116911614155b15610b1357600080fd5b610b1b611be2565b5067ffffffffffffffff8083166000818152600660205260409020805490921614610b4257fe5b600381015460ff1615610b5157fe5b600181018290556000821115610b8c5767ffffffffffffffff8316600090815260086020526040902054610b86908390611552565b60028201555b600301805460ff191660011790555050565b6000610ba861248e565b60055460e060020a900460ff1615610bbf57600080fd5b600160a060020a0384161515610bd457600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054831115610c0757600080fd5b610c1084611c05565b15610c3157610c2185858584611c0d565b1515610c2c57600080fd5b610c48565b610c3d85858584611e40565b1515610c4857600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054610c7990846114b5565b600160a060020a0380871660009081526009602090815260408083203390941683529290522055600191505b509392505050565b600160a060020a038216600090815260076020908152604080832067ffffffffffffffff8516845260020190915290205460ff1692915050565b600881565b6000806000806000806000806000809750600560149054906101000a900467ffffffffffffffff1667ffffffffffffffff168a67ffffffffffffffff161115610d3457600080fd5b600554600160a060020a90910467ffffffffffffffff161015610d5657600080fd5b600160a060020a038b16600090815260076020526040902060038101549097501515610d8157600080fd5b600487015467ffffffffffffffff90811696508a1686901015610da357600080fd5b8594505b8967ffffffffffffffff168567ffffffffffffffff161015610f005767ffffffffffffffff85166000908152600660205260409020600381015490945060ff161515610def57fe5b67ffffffffffffffff8516600090815260028801602052604090205460ff1615610e5057610e4988610e448960010160008967ffffffffffffffff16815260200190815260200160002054876002015461175d565b6118d1565b9750610ef5565b60038701546000935091505b6000821115610ec1576003870180546000198401908110610e7957fe5b6000918252602090912060048204015460039091166008026101000a900467ffffffffffffffff908116915085168111610eb557809250610ec1565b60001990910190610e5c565b610ef288610e448960010160008767ffffffffffffffff16815260200190815260200160002054876002015461175d565b97505b600190940193610da7565b50959998505050505050505050565b60055460e060020a900460ff1615610f2657600080fd5b60045433600160a060020a03908116911614801590610f54575060025433600160a060020a03908116911614155b15610f5e57600080fd5b67ffffffffffffffff16600a55565b60025433600160a060020a03908116911614610f8857600080fd5b610f90611be2565b600254600160a060020a03828116911614610fd2576002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600080fd5b50565b60055460e060020a900460ff1615610ff157600080fd5b60055433600160a060020a0390811691161480159061101f575060025433600160a060020a03908116911614155b1561102957600080fd5b611031611be2565b61103b8282611f92565b5050565b60025433600160a060020a0390811691161461105a57600080fd5b611062611be2565b600554600160a060020a03828116911614610fd2576005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b60055460e060020a900460ff1681565b600160a060020a0333811660009081526009602090815260408083209386168352929052908120548083111561111157600160a060020a033381166000908152600960209081526040808320938816835292905290812055611142565b61111b81846114b5565b600160a060020a033381166000908152600960209081526040808320938916835292905220555b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600a5481565b600760205260009081526040902080546004820154600590920154909167ffffffffffffffff169083565b600160a060020a031660009081526007602052604090205490565b60025433600160a060020a0390811691161461120f57600080fd5b611217611be2565b600030600160a060020a0316311115610fd257600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561126357600080fd5b565b600080600061127643600b546114b5565b600a5490935083106112cd5761128e83600a54611552565b91508382111561129c578391505b6112ae600b54610e4484600a5461175d565b600b555060005b818110156112cd576112c56121a1565b6001016112b5565b50505050565b60055460009060e060020a900460ff16156112ed57600080fd5b6112f5611be2565b6112ff3383610cec565b33600160a060020a03166000908152600760205260408120600401805467ffffffffffffffff191667ffffffffffffffff86161790559091508111156113ae57600160a060020a03331660009081526007602052604090206005015461136590826118d1565b600160a060020a03331660008181526007602052604090819020600501929092559082156108fc0290839051600060405180830381858888f1935050505015156113ae57600080fd5b919050565b60025433600160a060020a039081169116146113ce57600080fd5b60055460e060020a900460ff16156113e557600080fd5b600580547cff00000000000000000000000000000000000000000000000000000000191660e060020a179055565b60055460a060020a900467ffffffffffffffff1681565b600160a060020a0391909116600090815260076020908152604080832093835260019093019052205490565b60408051908101604052600381527f424e4b0000000000000000000000000000000000000000000000000000000000602082015281565b60006114af82600560149054906101000a900467ffffffffffffffff16610cec565b92915050565b6000828211156114c157fe5b50900390565b60006114d161248e565b8380600160a060020a031633600160a060020a031614156114f157600080fd5b60055460e060020a900460ff161561150857600080fd5b600160a060020a038516151561151d57600080fd5b61152685611c05565b1561153e5761153733868685611c0d565b925061154a565b61153733868685611e40565b505092915050565b6000818381151561155f57fe5b049392505050565b60055460009060e060020a900460ff161561158157600080fd5b611589611be2565b6005546115a69060a060020a900467ffffffffffffffff166112d3565b905090565b60055460009060e060020a900460ff16156115c557600080fd5b8380600160a060020a031633600160a060020a031614156115e557600080fd5b600160a060020a03851615156115fa57600080fd5b61160385611c05565b1561161b5761161433868686611c0d565b9150610ca5565b61161433868686611e40565b60055460e060020a900460ff1615610fd257600080fd5b60025433600160a060020a0390811691161461165957600080fd5b611661611be2565b600454600160a060020a03828116911614610fd2576004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b6116ab61248e565b6007600083600160a060020a0316600160a060020a0316815260200190815260200160002060030180548060200260200160405190810160405280929190818152602001828054801561175157602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161170c5790505b50505050509050919050565b6000828202831580611779575082848281151561177657fe5b04145b151561178157fe5b9392505050565b60025433600160a060020a039081169116146117a357600080fd5b6117ab611be2565b600354600160a060020a03828116911614610fd2576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600160a060020a03338116600090815260096020908152604080832093861683529290529081205461181f90836118d1565b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b60055460009060e060020a900460ff16156118a557600080fd5b50600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600082820183811080159061177957508281101561178157fe5b60055460009060e060020a900460ff161561190557600080fd5b8480600160a060020a031633600160a060020a0316141561192557600080fd5b600160a060020a038616151561193a57600080fd5b61194386611c05565b15611bb257600160a060020a0333166000908152600760205260409020548590101561196e57600080fd5b600160a060020a03861660009081526007602052604090205461199181876118d1565b101561199c57600080fd5b6119a4611be2565b6119ae3386612231565b6119b88686612326565b85600160a060020a03166000846040518082805190602001908083835b602083106119f45780518252601f1990920191602091820191016119d5565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051809103902060e060020a9004903388886040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611a85578082015183820152602001611a6d565b50505050905090810190601f168015611ab25780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611ad257fe5b85600160a060020a031633600160a060020a03166000805160206124e9833981519152878760405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611b39578082015183820152602001611b21565b50505050905090810190601f168015611b665780820380516001836020036101000a031916815260200191505b50935050505060405180910390a385600160a060020a031633600160a060020a03166000805160206125098339815191528760405190815260200160405180910390a360019150611bc1565b611bbe33878787611e40565b91505b50949350505050565b600b5481565b60086020526000908152604090205481565b6000611bf043600b546114b5565b600a549091508110610fd757610fd781612447565b6000903b1190565b600160a060020a038416600090815260076020526040812054819084901015611c3557600080fd5b600160a060020a038516600090815260076020526040902054611c5881866118d1565b1015611c6357600080fd5b611c6b611be2565b611c758685612231565b611c7f8585612326565b5083600160a060020a03811663c0ee0b8a8786866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d00578082015183820152602001611ce8565b50505050905090810190601f168015611d2d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515611d4d57600080fd5b5af11515611d5a57600080fd5b50505084600160a060020a031686600160a060020a03166000805160206124e9833981519152868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611dc4578082015183820152602001611dac565b50505050905090810190601f168015611df15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031686600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a350600195945050505050565b600160a060020a03841660009081526007602052604081205483901015611e6657600080fd5b600160a060020a038416600090815260076020526040902054611e8981856118d1565b1015611e9457600080fd5b611e9c611be2565b611ea68584612231565b611eb08484612326565b83600160a060020a031685600160a060020a03166000805160206124e9833981519152858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611f17578082015183820152602001611eff565b50505050905090810190601f168015611f445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a383600160a060020a031685600160a060020a03166000805160206125098339815191528560405190815260200160405180910390a3506001949350505050565b6000611f9c61248e565b6000831515611faa57600080fd5b611fb6846000546118d1565b9250600154831115611fc757600080fd5b611fd18585612326565b6000839055611fdf85611c05565b156120c3575083600160a060020a03811663c0ee0b8a3386856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561206557808201518382015260200161204d565b50505050905090810190601f1680156120925780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156120b257600080fd5b5af115156120bf57600080fd5b5050505b84600160a060020a031633600160a060020a03166000805160206124e9833981519152868560405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561212a578082015183820152602001612112565b50505050905090810190601f1680156121575780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031633600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a35050505050565b600080546005805467ffffffffffffffff60a060020a91829004811685526008602090815260408087209590955583548390048216808752600690915293909420805467ffffffffffffffff1916909317909255805482810484166001019093169091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff1615156122ec576003810180546001810161228a83826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836114b5565b80825560055460a060020a900467ffffffffffffffff16600090815260019092016020526040909120555050565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff16151561243b5760038101541580156123915750600554600060a060020a90910467ffffffffffffffff16115b156123c55760055460048201805460a060020a90920467ffffffffffffffff1667ffffffffffffffff199092169190911790555b600381018054600181016123d983826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836118d1565b60008061245683600a54611552565b915061246a600b54610e4484600a5461175d565b600b555060005b81811015612489576124816121a1565b600101612471565b505050565b60206040519081016040526000815290565b8154818355818115116124895760008381526020902061248991610abe9160046003928301819004820192860104015b808211156124e457600081556001016124d0565b50905600e19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200de39c798fd5f56c3400ead577732ed81f31812abd4f012b6991853bbe9d062c0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000053f20000000000000000000000000000000000000000000000000000000000000026
-----Decoded View---------------
Arg [0] : _blocksPerRound (uint256): 21490
Arg [1] : _round (uint64): 38
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000053f2
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000026
Swarm Source
bzzr://0de39c798fd5f56c3400ead577732ed81f31812abd4f012b6991853bbe9d062c
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.