Sponsored Link:   Etheal: Backed by a Finance Minister & Michael Terpin & Harvard alumnus Prof 30% bonus - First hour only: June 25
Contract Overview
Balance: 1.945604530808404699 Ether
Ether Value: $845.27 (@ $434.45/ETH)
Transactions: 12165 txns
Token Contract: Banker Token (BNK)
 Latest 25 txns from a total Of 12165 transactions
View All

TxHash Age From To Value [TxFee]
0x94ed7d527bd4233b7dd9c10d39692aa552400574070bc68f1a08ca65c4d8e6a54 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00027239
0x6a34a1065a3f0bdde8be0817cb105e7b373728ceed369ac2819ba6be68626d3f19 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.001338384
0xcc8c83e409dfe8847a906ed4f4b0a897c91e6497e6f86df7ec0f122c3dee2da935 mins ago0xcf03b4ad9d6d1a1ae133ab10f99ec7ad1901a20e  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000136195
0x35f4017cd2c95ed3625ce18d3026bfaf200549166e1071fc92c24bfaf91f6c1336 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00083713
0xf064d9e4d92f399706a1a40539117fde6e75e131a5c5f9532bd8ceda2f700e9538 mins ago0x9e5ef2fee93ed2038489c3e77bb08c1ae2257ee1  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.007555849
0x7d124daacb1fd3a71760d4cf9d6507515b1e43916ec765c70b5af776611841b139 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00022472175
0xb22608d972b7f55a9ebababb9b7e20c651e12b3f31cc83a1771882b5f05753ce47 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000476998206
0xded8f4a01dcbc7246198e3210c349d80be6474516852844ff8f484fb88aefbde53 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00069036825
0xb3254d0ac7ca97ae3926b7d2b9e5fbf5cbd2e5c1e77b569c6ea930c408f4952a1 hr 10 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00083649
0x88f8496df9c30b15af4cef90dff2571f095418ae4f3aa0f0586dc91724471a8c1 hr 13 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.0008532198
0x33888bb14a3c304c87831fcc50ed5ad1d5ebc8c4467a0be3cc723f1afb8cd4e71 hr 29 mins ago0xd85758763ee955c88468064f79f28cbf5d968c4a  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000163626
0x21b5969d2e55577731ca9d33b2fecd67da0a19f8dc5af2da88c7ebc89650850b1 hr 39 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00081272
0x19ca7c4206db17cbd03f47442d95b56d5c92aff569f8deed1066985cd12ed1e31 hr 43 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00060954
0x6375a47affee6704148708d1223e31226b1294eaa14fde39e70f5146292531f41 hr 45 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.0006861842
0x1be70a646becc9e06c7033abae73b421095a9a9764b6f3367b9eaa50deaacdea2 hrs ago0x7be952a9c4780ba1c7719c470ea83bdfa6546133  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000081813
0x362fb29877e9b8798330039635df5787d8b73dc3ff717dc855b4bddd435718432 hrs 6 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.00016305
0xeffe8a9a2500d8b7e7629a749b7de6c14fcd853e85bad7b8e076e5a505189d992 hrs 19 mins ago0xd85758763ee955c88468064f79f28cbf5d968c4a  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000642675
0xde147ee0c938dae674ba1d58932fd87c938545fce1f602ae3789ceb1c015b38f2 hrs 28 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000502278
0x0ded1cac0bf6ebd5f67b2a123d3034d8093db0f78cf1ec61d478f218377da7d42 hrs 42 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000502086
0x15e1d9ba6d4ac548f197e29596fe9749821aa030a7b1ee81cb298bd13b2c1eb92 hrs 44 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000253434
0x61b603cd04d1c222cb564006670a842fdc433caba8b80a4f8d69e5d31d219f792 hrs 46 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000502278
0xd5e8159e4be0b8f931093600c135492af94cd8f6db2661d9810832e72ebe85002 hrs 51 mins ago0xd85758763ee955c88468064f79f28cbf5d968c4a  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.0096
0x893be43f36dcbb43158aad0368faef14a3f76571f65cd0eede667e91adc9f8152 hrs 56 mins ago0x003e36550908907c2a2da960fd19a419b9a774b7  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000502086
0x5d2f513a3edf5741cd5d58edb3018dd3e29036e95bc95265475e89550753d46e3 hrs 15 mins ago0xd85758763ee955c88468064f79f28cbf5d968c4a  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.004185
0xf257c023d3092099d679c8da51ada38f02a23918097e474ef5f6baffad8be0633 hrs 22 mins agoHitBTC_2  IN   0xc80c5e40220172b36adee2c951f26f2a577810c50 Ether0.000501894
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 9 Internal Transactions

ParentTxHash Block Age From To Value
0x5ebb38423c301f88337800bec4b1a022ec491dfee7625ea34e381606bc56610858446478 hrs 18 mins ago0xc80c5e40220172b36adee2c951f26f2a577810c50x85a4ed0467fd1fe01a552aa7bbc54275c4b47b950.002818 Ether
0x9157c83efbcca3aefb0470f99d69aea657197136a2ea38bd461ea3272503b2c4584247317 hrs 9 mins ago0xc80c5e40220172b36adee2c951f26f2a577810c50xac45bc4419c7cd31171cc17fd3d333f1cc89ea7c0.00043019853900639 Ether
0xb385031cdcada8d0b9d3f72fce515ff07885f2e6dc67c3f9de8037703c84e07c58019247 days 14 hrs ago0xc80c5e40220172b36adee2c951f26f2a577810c50x1b47bf7562d7bcd6b99c1ca2b56b213e7f71a7770.000267484007438977 Ether
0x5ff130e9db8d0ca8ac2d1d2d2ef8bb0b6fc59bd5e703c92a9d67445b936d5d0757992398 days 1 hr ago0xc80c5e40220172b36adee2c951f26f2a577810c50x3dacbf42434ce3f1b46470809d51c4aae2d083390.000109490663149614 Ether
0x418bc5cb092053ff17a8be54ab2904d42270c82d2515bfaafcf1525bb35640ed57936179 days 53 mins ago0xc80c5e40220172b36adee2c951f26f2a577810c50x324af563563e9f7f5f8f96f53f37ba978a73b2b20.001189 Ether
0xa238cf358af6bdd3e127f38bbf9c742fd62746896e3955018bcebc4a88d9d630575271416 days 5 hrs ago0xc80c5e40220172b36adee2c951f26f2a577810c50x9ce7a4ad8d545d482f236bb09ffe99f5bf321d1c0.000063993523134208 Ether
0xba2c052f646c24916e457b8effe15fb62c8c087100d87426513632cdc4383f3f575235216 days 6 hrs ago0xc80c5e40220172b36adee2c951f26f2a577810c50x6aa48a1457416ecd9244b94466e6d2059470c3cd0.012421075211283776 Ether
0xfd3dd0011d9e1dfb381dfca40c19862d6e0e6907a274962546b31c1a8f36c235574915016 days 20 hrs ago0xc80c5e40220172b36adee2c951f26f2a577810c50x1a03a0512a8776c2a8f61d84d232db5797b767350.004958337837579712 Ether
0x896bfca51718f50b00027d8f195ca3e886c7f296eceaac3f598ccda7eb6999f2574878916 days 21 hrs ago0xc80c5e40220172b36adee2c951f26f2a577810c50x49a105924960535d23fa3aee9b92bc853932f9ab0.027137889410002624 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: BankeraToken
Compiler Version: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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 ABI  
[{"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 Switch To Opcodes View
6060604052600080556722b1c8c1227a00006001556005805460a060020a60e860020a0319169055341561003257600080fd5b604051604080612613833981016040528080519190602001805160028054600160a060020a03191633600160a060020a031617905543600b55600a9390935550506005805460a060020a60e060020a0319167401000000000000000000000000000000000000000067ffffffffffffffff90931692909202919091179055612554806100bf6000396000f3006060604052600436106101f55763ffffffff60e060020a600035041663046f7da2811461020e57806306fdde0314610221578063095ea7b3146102ab57806311fe7e43146102e157806318160ddd14610338578063205360e01461035d57806323b872dd146103805780632e12e6a1146103a8578063313ce567146103d45780633284b3e2146103fd5780633c9c97f0146104295780633ead67b514610449578063475a9fa914610468578063522e35fb1461048a5780635c975abb146104a957806366188463146104bc5780636e4ed796146104de5780636ff96d17146104f157806370a082311461053d5780637362377b1461055c578063763232531461056f5780637af05516146105855780638456cb59146105a55780638a19c8bc146105b85780638b39d181146105e857806395d89b411461060a5780639d1303431461061d578063a293d1e81461063c578063a9059cbb14610655578063b5931f7c14610677578063b88a802f14610690578063be45fd62146106a3578063c0ee0b8a14610708578063c38e650f1461076d578063c7b235611461078c578063d05c78da146107fe578063d2631e4214610817578063d73dd62314610836578063dd62ed3e14610858578063e6cb90131461087d578063f6368f8a14610896578063f6ba13a51461093d578063f9368e7a14610950575b60055460e060020a900460ff161561020c57600080fd5b005b341561021957600080fd5b61020c610970565b341561022c57600080fd5b6102346109cb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610270578082015183820152602001610258565b50505050905090810190601f16801561029d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102b657600080fd5b6102cd600160a060020a0360043516602435610a02565b604051901515815260200160405180910390f35b34156102ec57600080fd5b61030167ffffffffffffffff60043516610a85565b60405167ffffffffffffffff9094168452602084019290925260408084019190915290151560608301526080909101905180910390f35b341561034357600080fd5b61034b610aba565b60405190815260200160405180910390f35b341561036857600080fd5b61020c67ffffffffffffffff60043516602435610ac1565b341561038b57600080fd5b6102cd600160a060020a0360043581169060243516604435610b9e565b34156103b357600080fd5b6102cd600160a060020a036004351667ffffffffffffffff60243516610cad565b34156103df57600080fd5b6103e7610ce7565b60405160ff909116815260200160405180910390f35b341561040857600080fd5b61034b600160a060020a036004351667ffffffffffffffff60243516610cec565b341561043457600080fd5b61020c67ffffffffffffffff60043516610f0f565b341561045457600080fd5b61020c600160a060020a0360043516610f6d565b341561047357600080fd5b61020c600160a060020a0360043516602435610fda565b341561049557600080fd5b61020c600160a060020a036004351661103f565b34156104b457600080fd5b6102cd6110a4565b34156104c757600080fd5b6102cd600160a060020a03600435166024356110b4565b34156104e957600080fd5b61034b6111a8565b34156104fc57600080fd5b610510600160a060020a03600435166111ae565b60405192835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390f35b341561054857600080fd5b61034b600160a060020a03600435166111d9565b341561056757600080fd5b61020c6111f4565b341561057a57600080fd5b61020c600435611265565b341561059057600080fd5b61034b67ffffffffffffffff600435166112d3565b34156105b057600080fd5b61020c6113b3565b34156105c357600080fd5b6105cb611413565b60405167ffffffffffffffff909116815260200160405180910390f35b34156105f357600080fd5b61034b600160a060020a036004351660243561142a565b341561061557600080fd5b610234611456565b341561062857600080fd5b61034b600160a060020a036004351661148d565b341561064757600080fd5b61034b6004356024356114b5565b341561066057600080fd5b6102cd600160a060020a03600435166024356114c7565b341561068257600080fd5b61034b600435602435611552565b341561069b57600080fd5b61034b611567565b34156106ae57600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506115ab95505050505050565b341561071357600080fd5b61020c60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061162795505050505050565b341561077857600080fd5b61020c600160a060020a036004351661163e565b341561079757600080fd5b6107ab600160a060020a03600435166116a3565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107ea5780820151838201526020016107d2565b505050509050019250505060405180910390f35b341561080957600080fd5b61034b60043560243561175d565b341561082257600080fd5b61020c600160a060020a0360043516611788565b341561084157600080fd5b6102cd600160a060020a03600435166024356117ed565b341561086357600080fd5b61034b600160a060020a036004358116906024351661188b565b341561088857600080fd5b61034b6004356024356118d1565b34156108a157600080fd5b6102cd60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506118eb95505050505050565b341561094857600080fd5b61034b611bca565b341561095b57600080fd5b61034b67ffffffffffffffff60043516611bd0565b60025433600160a060020a0390811691161461098b57600080fd5b60055460e060020a900460ff1615156109a357600080fd5b600580547cff0000000000000000000000000000000000000000000000000000000019169055565b60408051908101604052600c81527f42616e6b657220546f6b656e0000000000000000000000000000000000000000602082015281565b60055460009060e060020a900460ff1615610a1c57600080fd5b600160a060020a03338116600081815260096020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600660205260009081526040902080546001820154600283015460039093015467ffffffffffffffff90921692909160ff1684565b6001545b90565b60055460009060e060020a900460ff1615610adb57600080fd5b60035433600160a060020a03908116911614801590610b09575060025433600160a060020a03908116911614155b15610b1357600080fd5b610b1b611be2565b5067ffffffffffffffff8083166000818152600660205260409020805490921614610b4257fe5b600381015460ff1615610b5157fe5b600181018290556000821115610b8c5767ffffffffffffffff8316600090815260086020526040902054610b86908390611552565b60028201555b600301805460ff191660011790555050565b6000610ba861248e565b60055460e060020a900460ff1615610bbf57600080fd5b600160a060020a0384161515610bd457600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054831115610c0757600080fd5b610c1084611c05565b15610c3157610c2185858584611c0d565b1515610c2c57600080fd5b610c48565b610c3d85858584611e40565b1515610c4857600080fd5b600160a060020a0380861660009081526009602090815260408083203390941683529290522054610c7990846114b5565b600160a060020a0380871660009081526009602090815260408083203390941683529290522055600191505b509392505050565b600160a060020a038216600090815260076020908152604080832067ffffffffffffffff8516845260020190915290205460ff1692915050565b600881565b6000806000806000806000806000809750600560149054906101000a900467ffffffffffffffff1667ffffffffffffffff168a67ffffffffffffffff161115610d3457600080fd5b600554600160a060020a90910467ffffffffffffffff161015610d5657600080fd5b600160a060020a038b16600090815260076020526040902060038101549097501515610d8157600080fd5b600487015467ffffffffffffffff90811696508a1686901015610da357600080fd5b8594505b8967ffffffffffffffff168567ffffffffffffffff161015610f005767ffffffffffffffff85166000908152600660205260409020600381015490945060ff161515610def57fe5b67ffffffffffffffff8516600090815260028801602052604090205460ff1615610e5057610e4988610e448960010160008967ffffffffffffffff16815260200190815260200160002054876002015461175d565b6118d1565b9750610ef5565b60038701546000935091505b6000821115610ec1576003870180546000198401908110610e7957fe5b6000918252602090912060048204015460039091166008026101000a900467ffffffffffffffff908116915085168111610eb557809250610ec1565b60001990910190610e5c565b610ef288610e448960010160008767ffffffffffffffff16815260200190815260200160002054876002015461175d565b97505b600190940193610da7565b50959998505050505050505050565b60055460e060020a900460ff1615610f2657600080fd5b60045433600160a060020a03908116911614801590610f54575060025433600160a060020a03908116911614155b15610f5e57600080fd5b67ffffffffffffffff16600a55565b60025433600160a060020a03908116911614610f8857600080fd5b610f90611be2565b600254600160a060020a03828116911614610fd2576002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600080fd5b50565b60055460e060020a900460ff1615610ff157600080fd5b60055433600160a060020a0390811691161480159061101f575060025433600160a060020a03908116911614155b1561102957600080fd5b611031611be2565b61103b8282611f92565b5050565b60025433600160a060020a0390811691161461105a57600080fd5b611062611be2565b600554600160a060020a03828116911614610fd2576005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b60055460e060020a900460ff1681565b600160a060020a0333811660009081526009602090815260408083209386168352929052908120548083111561111157600160a060020a033381166000908152600960209081526040808320938816835292905290812055611142565b61111b81846114b5565b600160a060020a033381166000908152600960209081526040808320938916835292905220555b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600a5481565b600760205260009081526040902080546004820154600590920154909167ffffffffffffffff169083565b600160a060020a031660009081526007602052604090205490565b60025433600160a060020a0390811691161461120f57600080fd5b611217611be2565b600030600160a060020a0316311115610fd257600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561126357600080fd5b565b600080600061127643600b546114b5565b600a5490935083106112cd5761128e83600a54611552565b91508382111561129c578391505b6112ae600b54610e4484600a5461175d565b600b555060005b818110156112cd576112c56121a1565b6001016112b5565b50505050565b60055460009060e060020a900460ff16156112ed57600080fd5b6112f5611be2565b6112ff3383610cec565b33600160a060020a03166000908152600760205260408120600401805467ffffffffffffffff191667ffffffffffffffff86161790559091508111156113ae57600160a060020a03331660009081526007602052604090206005015461136590826118d1565b600160a060020a03331660008181526007602052604090819020600501929092559082156108fc0290839051600060405180830381858888f1935050505015156113ae57600080fd5b919050565b60025433600160a060020a039081169116146113ce57600080fd5b60055460e060020a900460ff16156113e557600080fd5b600580547cff00000000000000000000000000000000000000000000000000000000191660e060020a179055565b60055460a060020a900467ffffffffffffffff1681565b600160a060020a0391909116600090815260076020908152604080832093835260019093019052205490565b60408051908101604052600381527f424e4b0000000000000000000000000000000000000000000000000000000000602082015281565b60006114af82600560149054906101000a900467ffffffffffffffff16610cec565b92915050565b6000828211156114c157fe5b50900390565b60006114d161248e565b8380600160a060020a031633600160a060020a031614156114f157600080fd5b60055460e060020a900460ff161561150857600080fd5b600160a060020a038516151561151d57600080fd5b61152685611c05565b1561153e5761153733868685611c0d565b925061154a565b61153733868685611e40565b505092915050565b6000818381151561155f57fe5b049392505050565b60055460009060e060020a900460ff161561158157600080fd5b611589611be2565b6005546115a69060a060020a900467ffffffffffffffff166112d3565b905090565b60055460009060e060020a900460ff16156115c557600080fd5b8380600160a060020a031633600160a060020a031614156115e557600080fd5b600160a060020a03851615156115fa57600080fd5b61160385611c05565b1561161b5761161433868686611c0d565b9150610ca5565b61161433868686611e40565b60055460e060020a900460ff1615610fd257600080fd5b60025433600160a060020a0390811691161461165957600080fd5b611661611be2565b600454600160a060020a03828116911614610fd2576004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b6116ab61248e565b6007600083600160a060020a0316600160a060020a0316815260200190815260200160002060030180548060200260200160405190810160405280929190818152602001828054801561175157602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161170c5790505b50505050509050919050565b6000828202831580611779575082848281151561177657fe5b04145b151561178157fe5b9392505050565b60025433600160a060020a039081169116146117a357600080fd5b6117ab611be2565b600354600160a060020a03828116911614610fd2576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610fd7565b600160a060020a03338116600090815260096020908152604080832093861683529290529081205461181f90836118d1565b600160a060020a0333811660008181526009602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b60055460009060e060020a900460ff16156118a557600080fd5b50600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600082820183811080159061177957508281101561178157fe5b60055460009060e060020a900460ff161561190557600080fd5b8480600160a060020a031633600160a060020a0316141561192557600080fd5b600160a060020a038616151561193a57600080fd5b61194386611c05565b15611bb257600160a060020a0333166000908152600760205260409020548590101561196e57600080fd5b600160a060020a03861660009081526007602052604090205461199181876118d1565b101561199c57600080fd5b6119a4611be2565b6119ae3386612231565b6119b88686612326565b85600160a060020a03166000846040518082805190602001908083835b602083106119f45780518252601f1990920191602091820191016119d5565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051809103902060e060020a9004903388886040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611a85578082015183820152602001611a6d565b50505050905090810190601f168015611ab25780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611ad257fe5b85600160a060020a031633600160a060020a03166000805160206124e9833981519152878760405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611b39578082015183820152602001611b21565b50505050905090810190601f168015611b665780820380516001836020036101000a031916815260200191505b50935050505060405180910390a385600160a060020a031633600160a060020a03166000805160206125098339815191528760405190815260200160405180910390a360019150611bc1565b611bbe33878787611e40565b91505b50949350505050565b600b5481565b60086020526000908152604090205481565b6000611bf043600b546114b5565b600a549091508110610fd757610fd781612447565b6000903b1190565b600160a060020a038416600090815260076020526040812054819084901015611c3557600080fd5b600160a060020a038516600090815260076020526040902054611c5881866118d1565b1015611c6357600080fd5b611c6b611be2565b611c758685612231565b611c7f8585612326565b5083600160a060020a03811663c0ee0b8a8786866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d00578082015183820152602001611ce8565b50505050905090810190601f168015611d2d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515611d4d57600080fd5b5af11515611d5a57600080fd5b50505084600160a060020a031686600160a060020a03166000805160206124e9833981519152868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611dc4578082015183820152602001611dac565b50505050905090810190601f168015611df15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031686600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a350600195945050505050565b600160a060020a03841660009081526007602052604081205483901015611e6657600080fd5b600160a060020a038416600090815260076020526040902054611e8981856118d1565b1015611e9457600080fd5b611e9c611be2565b611ea68584612231565b611eb08484612326565b83600160a060020a031685600160a060020a03166000805160206124e9833981519152858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015611f17578082015183820152602001611eff565b50505050905090810190601f168015611f445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a383600160a060020a031685600160a060020a03166000805160206125098339815191528560405190815260200160405180910390a3506001949350505050565b6000611f9c61248e565b6000831515611faa57600080fd5b611fb6846000546118d1565b9250600154831115611fc757600080fd5b611fd18585612326565b6000839055611fdf85611c05565b156120c3575083600160a060020a03811663c0ee0b8a3386856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561206557808201518382015260200161204d565b50505050905090810190601f1680156120925780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156120b257600080fd5b5af115156120bf57600080fd5b5050505b84600160a060020a031633600160a060020a03166000805160206124e9833981519152868560405182815260406020820181815290820183818151815260200191508051906020019080838360005b8381101561212a578082015183820152602001612112565b50505050905090810190601f1680156121575780820380516001836020036101000a031916815260200191505b50935050505060405180910390a384600160a060020a031633600160a060020a03166000805160206125098339815191528660405190815260200160405180910390a35050505050565b600080546005805467ffffffffffffffff60a060020a91829004811685526008602090815260408087209590955583548390048216808752600690915293909420805467ffffffffffffffff1916909317909255805482810484166001019093169091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff1615156122ec576003810180546001810161228a83826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836114b5565b80825560055460a060020a900467ffffffffffffffff16600090815260019092016020526040909120555050565b600160a060020a038216600090815260076020908152604080832060055460a060020a900467ffffffffffffffff168452600281019092529091205460ff16151561243b5760038101541580156123915750600554600060a060020a90910467ffffffffffffffff16115b156123c55760055460048201805460a060020a90920467ffffffffffffffff1667ffffffffffffffff199092169190911790555b600381018054600181016123d983826124a0565b50600091825260208083206005805460048504909201805467ffffffffffffffff60039096166008026101000a8681021990911660a060020a9485900487169091021790555404909116825260028301905260409020805460ff191660011790555b80546122f890836118d1565b60008061245683600a54611552565b915061246a600b54610e4484600a5461175d565b600b555060005b81811015612489576124816121a1565b600101612471565b505050565b60206040519081016040526000815290565b8154818355818115116124895760008381526020902061248991610abe9160046003928301819004820192860104015b808211156124e457600081556001016124d0565b50905600e19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200de39c798fd5f56c3400ead577732ed81f31812abd4f012b6991853bbe9d062c002900000000000000000000000000000000000000000000000000000000000053f20000000000000000000000000000000000000000000000000000000000000026

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

-----Decoded View---------------
Found 2 constructor arguments :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000053f2
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000026


   Swarm Source:
bzzr://0de39c798fd5f56c3400ead577732ed81f31812abd4f012b6991853bbe9d062c

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.