Contract 0xae53417c65f8d05879bc0ad3f52700cbd154411d

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0xd402500abdaf7f754190027a358a7bb2d8a54ff8b5e1664fdfd16d691a03ccf31929857371 days 19 hrs ago0x48bf6e1f6edcc27e3275408602833f640da16823 IN  0xae53417c65f8d05879bc0ad3f52700cbd154411d0 Ether0.000607756
0x09caf93e3cbd04bc49af247e2609e7439d1afde6280a9d985d9f71730c601b0f1929851371 days 19 hrs ago0x49fd5f37b52abb2ae1104fd0f9e916adc0c51d19 IN  0xae53417c65f8d05879bc0ad3f52700cbd154411d0 Ether0.00009126
0x46282f98b120ba9bdd581a607eadbdd1e99f88764a0f375808f41b365be391fd1926258372 days 10 hrs ago0x49fd5f37b52abb2ae1104fd0f9e916adc0c51d19 IN  0xae53417c65f8d05879bc0ad3f52700cbd154411d0 Ether0.00009126
0xdef742b58b2bd3f7cfee6bd5002c02254054d96a9d6be567c1679ac6750c23b31926238372 days 10 hrs ago0x49fd5f37b52abb2ae1104fd0f9e916adc0c51d19 IN  0xae53417c65f8d05879bc0ad3f52700cbd154411d0 Ether0.000667756
0xd25bdc22fcc0206ec2bbe48eb099db9dfd31a8f69ee4635cf424ecf284be7de71924257372 days 19 hrs ago0x48bf6e1f6edcc27e3275408602833f640da16823 IN  Contract Creation0 Ether0.004945412
[ Download CSV Export 

Latest 2 internal transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xd402500abdaf7f754190027a358a7bb2d8a54ff8b5e1664fdfd16d691a03ccf31929857371 days 19 hrs ago0xae53417c65f8d05879bc0ad3f52700cbd154411d0xf6130d36fe4a2c91fafc8cd0900329b26ddb0c7c0 Ether
0xdef742b58b2bd3f7cfee6bd5002c02254054d96a9d6be567c1679ac6750c23b31926238372 days 10 hrs ago0xae53417c65f8d05879bc0ad3f52700cbd154411d0xf6130d36fe4a2c91fafc8cd0900329b26ddb0c7c0 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
ZombieOwnership

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.13;

library SafeMath16 {

  function mul(uint16 a, uint16 b) internal pure returns (uint16) {
    if (a == 0) {
      return 0;
    }
    uint16 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint16 a, uint16 b) internal pure returns (uint16) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint16 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint16 a, uint16 b) internal pure returns (uint16) {
    assert(b <= a);
    return a - b;
  }

  function add(uint16 a, uint16 b) internal pure returns (uint16) {
    uint16 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract ERC721 {
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  function balanceOf(address _owner) public view returns (uint256 _balance);
  function ownerOf(uint256 _tokenId) public view returns (address _owner);
  function transfer(address _to, uint256 _tokenId) public;
  function approve(address _to, uint256 _tokenId) public;
  function takeOwnership(uint256 _tokenId) public;
}

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

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

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

}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

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

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

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

library UtilLib {
	uint constant dnaDigits_ = 16;
	uint constant dnaModulus_ = 10 ** dnaDigits_;
 
	function dnaDigits() public pure returns(uint) {
		return dnaDigits_;
	}

	function dnaModulus() public pure returns(uint) {
		return dnaModulus_;
	}

	function generateRandomDna(string _str) public pure returns (uint) {
		uint rand = uint(keccak256(_str));
		return rand % dnaModulus_;
	}

}

contract KittyInterface {
	function getKitty(uint256 _id) external view returns (
		bool isGestating,
		bool isReady,
		uint256 cooldownIndex,
		uint256 nextActionAt,
		uint256 siringWithId,
		uint256 birthTime,
		uint256 matronId,
		uint256 sireId,
		uint256 generation,
		uint256 genes
	);
}

contract ZombieFactoryEvents {
    event NewZombie(uint zombieId, string name, uint dna);    
}

contract ZombieFactory is ZombieFactoryEvents, Ownable {

	using SafeMath for uint256;
	using SafeMath32 for uint32;
	using SafeMath16 for uint16;

	uint cooldownTime = 1 days;
	
	struct Zombie {
		string name;
		uint dna;
		uint32 level;
		uint32 readyTime;
		uint16 winCount;
		uint16 lossCount;
	}

	Zombie[] public zombies;

	mapping (uint => address) public zombieToOwner;
	mapping (address => uint) ownerZombieCount;

	function _createZombie(string _name, uint _dna) internal {
		uint id = zombies.push(Zombie(_name, _dna, 1, uint32(now + cooldownTime), 0, 0)) - 1;
		zombieToOwner[id] = msg.sender;
		ownerZombieCount[msg.sender] = ownerZombieCount[msg.sender].add(1);
		NewZombie(id, _name, _dna);
	}

	function createRandomZombie(string _name) public {
		require(ownerZombieCount[msg.sender] == 0);
		uint randDna = UtilLib.generateRandomDna(_name);
		randDna = randDna - randDna % 100;
		_createZombie(_name, randDna);
	}

	function getZombiesCount() external view returns (uint) {
		return zombies.length;
	}
	
	function getDnaByIndex(uint idx) external view returns (uint) {
		return zombies[idx].dna;    
	}
}

library SafeMath32 {

  function mul(uint32 a, uint32 b) internal pure returns (uint32) {
    if (a == 0) {
      return 0;
    }
    uint32 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint32 a, uint32 b) internal pure returns (uint32) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint32 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint32 a, uint32 b) internal pure returns (uint32) {
    assert(b <= a);
    return a - b;
  }

  function add(uint32 a, uint32 b) internal pure returns (uint32) {
    uint32 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract ZombieFeeding is ZombieFactory {

	KittyInterface kittyContract;

	modifier onlyOwnerOf(uint _zombieId) {
		require(msg.sender == zombieToOwner[_zombieId]);
		_;
	}


	function setKittyContractAddress(address _address) external onlyOwner {
		kittyContract = KittyInterface(_address);
	}

	function _triggerCooldown(Zombie storage _zombie) internal {
		_zombie.readyTime = uint32(now + cooldownTime);
	}

	function _isReady(Zombie storage _zombie) internal view returns (bool) {
		return (_zombie.readyTime <= now);
	}


	function feedAndMultiply(uint _zombieId, uint _targetDna, string _species) 
			public onlyOwnerOf(_zombieId) {
			
		Zombie storage myZombie = zombies[_zombieId];
		_targetDna = _targetDna % UtilLib.dnaModulus();
		uint newDna = (myZombie.dna + _targetDna) / 2;
		if (keccak256(_species)==keccak256("kitty"))
		{
			newDna = newDna - newDna % 100 + 99;
		}
		_createZombie("NoName", newDna);
		_triggerCooldown(myZombie);
	}

	function feedOnKitty(uint _zombieId, uint _kittyId) public {
		uint kittyDna;
		(,,,,,,,,,kittyDna) = kittyContract.getKitty(_kittyId);
		// And modify function call here:
		feedAndMultiply(_zombieId, kittyDna, "kitty");
	}

}

contract ZombieHelper is ZombieFeeding {

	uint levelUpFee = 0.001 ether;
	
	modifier aboveLevel(uint _level, uint _zombieId) {
		require(zombies[_zombieId].level >= _level);
		_;
	}

	function withdraw() external onlyOwner {
		assert(owner != 0);
		owner.transfer(this.balance);
	}

	function setLevelUpFee(uint _fee) external onlyOwner {
		levelUpFee = _fee;
	}
	
	function levelUp(uint _zombieId) external payable {
		require(msg.value==levelUpFee);
		zombies[_zombieId].level = zombies[_zombieId].level.add(1);
	}

	function changeName(uint _zombieId, string _newName) 
			external aboveLevel(2, _zombieId) onlyOwnerOf(_zombieId) {
		zombies[_zombieId].name = _newName;
	}

	function changeDna(uint _zombieId, uint _newDna) 
			external aboveLevel(20, _zombieId) onlyOwnerOf(_zombieId) {
		zombies[_zombieId].dna = _newDna;
	}

	function getZombiesByOwner(address _owner) external view returns(uint[]) {
		uint[] memory result = new uint[](ownerZombieCount[_owner]);

		uint counter = 0;
		
		for (uint i=0; i < zombies.length; i++) {
			if (zombieToOwner[i] == _owner) {
				result[counter] = i;
				counter++;
			}
		}
		return result;
	}

}

contract ZombieBattle is ZombieHelper {

	uint randNonce = 0;

	uint attackVictoryProbability=70;
	
	function randMod(uint _modulus) internal returns(uint) {
		randNonce = randNonce.add(1);
		return uint(keccak256(now, msg.sender, randNonce)) % _modulus;
	}

	function attack(uint _zombieId, uint _targetId) external onlyOwnerOf(_zombieId) {
		Zombie storage myZombie = zombies[_zombieId];
		Zombie storage enemyZombie = zombies[_targetId];
  
		uint rand = randMod(100);

		if (rand <= attackVictoryProbability) {
			myZombie.winCount = myZombie.winCount.add(1);
			myZombie.level = myZombie.level.add(1);
			enemyZombie.lossCount = enemyZombie.lossCount.add(1);
			
			feedAndMultiply(_zombieId, enemyZombie.dna, "zombie");
		} else {
			myZombie.lossCount = myZombie.lossCount.add(1);
			enemyZombie.winCount = enemyZombie.winCount.add(1);
			
			_triggerCooldown(myZombie);
			
		}
	}

}

contract ZombieOwnership is ZombieBattle, ERC721 {
	
	mapping(uint => address) zombieApprovals;
	
	function balanceOf(address _owner) public view returns (uint256 _balance) {
		return ownerZombieCount[_owner];
	}

	function ownerOf(uint256 _tokenId) public view returns (address _owner) {
		return zombieToOwner[_tokenId];
	}
	
	function _transfer(address _from, address _to, uint256 _tokenId) private {
		ownerZombieCount[_to] = ownerZombieCount[_to].add(1);
		ownerZombieCount[_from] = ownerZombieCount[_from].sub(1);
		zombieToOwner[_tokenId]=_to;
		Transfer(_from, _to, _tokenId);
	}

	function transfer(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId){
		_transfer(msg.sender, _to, _tokenId);
	}

	function approve(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) {
		zombieApprovals[_tokenId] =_to;
		Approval(msg.sender, _to, _tokenId);
	}

	function takeOwnership(uint256 _tokenId) public {
		require(zombieApprovals[_tokenId]==msg.sender);
		address owner = ownerOf(_tokenId);
		_transfer(owner, msg.sender, _tokenId);
	}


}

Contract ABI

[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"}],"name":"levelUp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"},{"name":"_kittyId","type":"uint256"}],"name":"feedOnKitty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"zombies","outputs":[{"name":"name","type":"string"},{"name":"dna","type":"uint256"},{"name":"level","type":"uint32"},{"name":"readyTime","type":"uint32"},{"name":"winCount","type":"uint16"},{"name":"lossCount","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getZombiesByOwner","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"zombieToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setKittyContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"},{"name":"_newDna","type":"uint256"}],"name":"changeDna","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"},{"name":"_targetDna","type":"uint256"},{"name":"_species","type":"string"}],"name":"feedAndMultiply","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_name","type":"string"}],"name":"createRandomZombie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"},{"name":"_newName","type":"string"}],"name":"changeName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setLevelUpFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_zombieId","type":"uint256"},{"name":"_targetId","type":"uint256"}],"name":"attack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getZombiesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idx","type":"uint256"}],"name":"getDnaByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"zombieId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"dna","type":"uint256"}],"name":"NewZombie","type":"event"}]

Contract Creation Code

60606040526201518060015566038d7ea4c6800060065560006007556046600855336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061225f8061006f6000396000f300606060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461012d5780630ce90ec21461016f57806317a7f4cc146101875780632052465e146101b35780633ccfd60b146102b75780634412e104146102cc578063528b7b8f1461035a5780635f4623f1146103bd5780635faf2880146103f65780636352211e146104225780636b0bfc801461048557806370a08231146104f45780637bff0a01146105415780638da5cb5b1461059e578063a9059cbb146105f3578063b2e6ceeb14610635578063c39cbef114610658578063ccf670f81461068f578063e1fa7638146106b2578063e343cdec146106de578063ef2e50bd14610707578063f2fde38b1461073e575b600080fd5b341561013857600080fd5b61016d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610777565b005b61018560048080359060200190919050506108a1565b005b341561019257600080fd5b6101b1600480803590602001909190803590602001909190505061093c565b005b34156101be57600080fd5b6101d46004808035906020019091905050610aa9565b60405180806020018781526020018663ffffffff1663ffffffff1681526020018563ffffffff1663ffffffff1681526020018461ffff1661ffff1681526020018361ffff1661ffff1681526020018281038252888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156102a35780601f10610278576101008083540402835291602001916102a3565b820191906000526020600020905b81548152906001019060200180831161028657829003601f168201915b505097505050505050505060405180910390f35b34156102c257600080fd5b6102ca610b2f565b005b34156102d757600080fd5b610303600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c48565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561034657808201518184015260208101905061032b565b505050509050019250505060405180910390f35b341561036557600080fd5b61037b6004808035906020019091905050610d76565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103c857600080fd5b6103f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610da9565b005b341561040157600080fd5b6104206004808035906020019091908035906020019091905050610e48565b005b341561042d57600080fd5b6104436004808035906020019091905050610f2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561049057600080fd5b6104f2600480803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f67565b005b34156104ff57600080fd5b61052b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a8565b6040518082815260200191505060405180910390f35b341561054c57600080fd5b61059c600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506111f1565b005b34156105a957600080fd5b6105b1611354565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105fe57600080fd5b610633600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611379565b005b341561064057600080fd5b61065660048080359060200190919050506113f7565b005b341561066357600080fd5b61068d60048080359060200190919080359060200190820180359060200191909192905050611480565b005b341561069a57600080fd5b6106b0600480803590602001909190505061156e565b005b34156106bd57600080fd5b6106dc60048080359060200190919080359060200190919050506115d3565b005b34156106e957600080fd5b6106f1611866565b6040518082815260200191505060405180910390f35b341561071257600080fd5b6107286004808035906020019091905050611873565b6040518082815260200191505060405180910390f35b341561074957600080fd5b610775600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061189d565b005b806003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107e557600080fd5b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3505050565b600654341415156108b157600080fd5b6108fb60016002838154811015156108c557fe5b906000526020600020906003020160020160009054906101000a900463ffffffff1663ffffffff166119f290919063ffffffff16565b60028281548110151561090a57fe5b906000526020600020906003020160020160006101000a81548163ffffffff021916908363ffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98b7f4d83600060405161014001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061014060405180830381600087803b15156109d957600080fd5b6102c65a03f115156109ea57600080fd5b5050506040518051906020018051906020018051906020018051906020018051906020018051906020018051906020018051906020018051906020018051905090919293949596979850909192939495969750909192939495965090919293949550909192939450909192935090919250909150905080915050610aa483826040805190810160405280600581526020017f6b69747479000000000000000000000000000000000000000000000000000000815250610f67565b505050565b600281815481101515610ab857fe5b906000526020600020906003020160009150905080600001908060010154908060020160009054906101000a900463ffffffff16908060020160049054906101000a900463ffffffff16908060020160089054906101000a900461ffff169080600201600a9054906101000a900461ffff16905086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8a57600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610bce57fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515610c4657600080fd5b565b610c50611ff1565b610c58611ff1565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051805910610ca85750595b9080825280602002602001820160405250925060009150600090505b600280549050811015610d6b578473ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d5e57808383815181101515610d4757fe5b906020019060200201818152505081806001019250505b8080600101915050610cc4565b829350505050919050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e0457600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60148281600282815481101515610e5b57fe5b906000526020600020906003020160020160009054906101000a900463ffffffff1663ffffffff1610151515610e9057600080fd5b836003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610efe57600080fd5b83600286815481101515610f0e57fe5b9060005260206000209060030201600101819055505050505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080846003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fd857600080fd5b600286815481101515610fe757fe5b9060005260206000209060030201925073f6130d36fe4a2c91fafc8cd0900329b26ddb0c7c63daba07116000604051602001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b151561105f57600080fd5b6102c65a03f4151561107057600080fd5b505050604051805190508581151561108457fe5b06945060028584600101540181151561109957fe5b04915060405180807f6b697474790000000000000000000000000000000000000000000000000000008152506005019050604051809103902060001916846040518082805190602001908083835b60208310151561110c57805182526020820191506020810190506020830392506110e7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561115857606360648381151561115157fe5b0683030191505b6111976040805190810160405280600681526020017f4e6f4e616d65000000000000000000000000000000000000000000000000000081525083611a1c565b6111a083611ceb565b505050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561124057600080fd5b73f6130d36fe4a2c91fafc8cd0900329b26ddb0c7c636989bb4d836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112cf5780820151818401526020810190506112b4565b50505050905090810190601f1680156112fc5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561131857600080fd5b6102c65a03f4151561132957600080fd5b50505060405180519050905060648181151561134157fe5b06810390506113508282611a1c565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113e757600080fd5b6113f2338484611d15565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561146657600080fd5b61146f82610f2a565b905061147c813384611d15565b5050565b6002838160028281548110151561149357fe5b906000526020600020906003020160020160009054906101000a900463ffffffff1663ffffffff16101515156114c857600080fd5b846003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153657600080fd5b848460028881548110151561154757fe5b90600052602060002090600302016000019190611565929190612005565b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115c957600080fd5b8060068190555050565b6000806000846003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164657600080fd5b60028681548110151561165557fe5b9060005260206000209060030201935060028581548110151561167457fe5b9060005260206000209060030201925061168e6064611efd565b9150600854821115156117c4576116c560018560020160089054906101000a900461ffff1661ffff16611f9490919063ffffffff16565b8460020160086101000a81548161ffff021916908361ffff16021790555061171160018560020160009054906101000a900463ffffffff1663ffffffff166119f290919063ffffffff16565b8460020160006101000a81548163ffffffff021916908363ffffffff16021790555061175d600184600201600a9054906101000a900461ffff1661ffff16611f9490919063ffffffff16565b83600201600a6101000a81548161ffff021916908361ffff1602179055506117bf8684600101546040805190810160405280600681526020017f7a6f6d6269650000000000000000000000000000000000000000000000000000815250610f67565b61185e565b6117ee600185600201600a9054906101000a900461ffff1661ffff16611f9490919063ffffffff16565b84600201600a6101000a81548161ffff021916908361ffff16021790555061183660018460020160089054906101000a900461ffff1661ffff16611f9490919063ffffffff16565b8360020160086101000a81548161ffff021916908361ffff16021790555061185d84611ceb565b5b505050505050565b6000600280549050905090565b600060028281548110151561188457fe5b9060005260206000209060030201600101549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118f857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561193457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508363ffffffff168163ffffffff1610151515611a1257fe5b8091505092915050565b6000600160028054806001018281611a349190612085565b9160005260206000209060030201600060c060405190810160405280888152602001878152602001600163ffffffff168152602001600154420163ffffffff168152602001600061ffff168152602001600061ffff1681525090919091506000820151816000019080519060200190611aae9291906120b7565b506020820151816001015560408201518160020160006101000a81548163ffffffff021916908363ffffffff16021790555060608201518160020160046101000a81548163ffffffff021916908363ffffffff16021790555060808201518160020160086101000a81548161ffff021916908361ffff16021790555060a082015181600201600a6101000a81548161ffff021916908361ffff1602179055505050039050336003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bf76001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fba90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f88f026aacbbecc90c18411df4b1185fd8d9be2470f1962f192bf84a27d0704b78184846040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611caa578082015181840152602081019050611c8f565b50505050905090810190601f168015611cd75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b60015442018160020160046101000a81548163ffffffff021916908363ffffffff16021790555050565b611d686001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fba90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dfe6001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd890919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611f156001600754611fba90919063ffffffff16565b600781905550814233600754604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019350505050604051809103902060019004811515611f8c57fe5b069050919050565b60008082840190508361ffff168161ffff1610151515611fb057fe5b8091505092915050565b6000808284019050838110151515611fce57fe5b8091505092915050565b6000828211151515611fe657fe5b818303905092915050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061204657803560ff1916838001178555612074565b82800160010185558215612074579182015b82811115612073578235825591602001919060010190612058565b5b5090506120819190612137565b5090565b8154818355818115116120b2576003028160030283600052602060002091820191016120b1919061215c565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120f857805160ff1916838001178555612126565b82800160010185558215612126579182015b8281111561212557825182559160200191906001019061210a565b5b5090506121339190612137565b5090565b61215991905b8082111561215557600081600090555060010161213d565b5090565b90565b6121e891905b808211156121e4576000808201600061217b91906121eb565b60018201600090556002820160006101000a81549063ffffffff02191690556002820160046101000a81549063ffffffff02191690556002820160086101000a81549061ffff021916905560028201600a6101000a81549061ffff021916905550600301612162565b5090565b90565b50805460018160011615610100020316600290046000825580601f106122115750612230565b601f01602090049060005260206000209081019061222f9190612137565b5b505600a165627a7a72305820710b384c70021dc97e2d55b65234f58af75a30a0a21e1c59b5a89d83f50c091a0029

Swarm Source

bzzr://710b384c70021dc97e2d55b65234f58af75a30a0a21e1c59b5a89d83f50c091a
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward