Contract 0x4bdDe1E9fbaeF2579dD63E2AbbF0BE445ab93F10 1

 

Contract Overview

Balance:
3.233030000000000003 Ether

EtherValue:
$4,243.48 (@ $1,312.54/ETH)

Token:
Txn Hash
Method
Block
From
To
Value
0x466e9b364cf7c2574f6d1a75ff4ee24dd77fc5c2a758d972b668687cfbfd384dSell City For Et...139835742022-01-11 10:09:55261 days 4 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100 Ether0.00795353 143.54755518
0x1cadcc4e8dc2fede4c1410c6501a76960cea7426db69098ebff8805108255e9bResolve Sell Cit...132965602021-09-25 18:17:26368 days 20 hrs ago0x90b610fd8545426fb83f9bb709d831ef3e77b7c6 IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.1 Ether0.00758888 80.04645224
0x34a3a846784686fec9b38ef435c0f438253a831d750f2e51f0fcd21610193216Resolve Sell Cit...132490582021-09-18 10:14:09376 days 4 hrs agoENS Name laois.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.075 Ether0.00643704 37.59801168
0x6fe25b5d276eb1a196e4ef77a039530d1381882809a1e81dcdf0b5df916b4891Resolve Sell Cit...132367602021-09-16 12:29:00378 days 2 hrs agoENS Name callumquin.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.1 Ether0.00487651 53.55103239
0x261e1074025263b94442d928d5c9c4ae6a87d7079870a9b97a0ab7a637c94aafBuy City132366932021-09-16 12:14:59378 days 2 hrs agoENS Name callumquin.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.05 Ether0.01213623 62.72311107
0x6370c06bb05c2538557a7c8ac305c852952b0adf1480557999d9cbea60b146c1Approve132341302021-09-16 2:42:33378 days 12 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100 Ether0.00501346 108
0x41365098a916a24011a0205261e134be6c8e9445ff29bc3ab1b8e464a3993eebBuy City132340472021-09-16 2:26:27378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.1 Ether0.00792017 72.75356752
0x37370282ff238bd7fdb06b6c4163e76856c4e110188abc06d0ab895bc80ae8ffBuy City132340262021-09-16 2:21:57378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.06 Ether0.00873111 74.99539579
0x2d467a2b4d224ed5ce0109bb54bebf8e1c4273f4504c4ee6f2d433579bddcd58Buy City132340132021-09-16 2:19:45378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.04 Ether0.01427382 75.9674598
0x9b0b381e582f2b6feda2cb2977a3895b41755e886bc8f269b861c2d8d30fd65eResolve Sell Cit...132339862021-09-16 2:14:14378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.125 Ether0.00748067 72.25962642
0xdc6034d795fb09ecd4471d4b758ddfc8e16b8a736d184ef51514a7b36c96cb15Resolve Sell Cit...132339712021-09-16 2:11:57378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.15 Ether0.01520203 97.5489628
0x3dad96f29c932cef1200e2ae071a6edbb6ac19311e2be980b87dcf8548496074Resolve Sell Cit...132339592021-09-16 2:08:27378 days 12 hrs ago0xca11d10ceb098f597a0cab28117fc3465991a63c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.1 Ether0.00719727 75.91580297
0x10aa43872f6e51296016a66fab432574c90afbe336caf53bed172477a72b39b4Resolve Sell Cit...131634442021-09-05 4:01:04389 days 10 hrs ago0xccb045271c73693b9a3c5dae36aaf5bdaaac6f3c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.049 Ether0.01406955 88.21425534
0x9a983277fad67301b07788bc630ff9f0158bb0e9624ad2d6f765b35b8ba3f2ecBuy City131634242021-09-05 3:57:06389 days 10 hrs ago0xccb045271c73693b9a3c5dae36aaf5bdaaac6f3c IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f101 Ether0.01530914 98.99218653
0xe50d0388dfb83e5cf052efb9e2ab8cac08138086aaed671c2d86218613d26572Sell City For Et...131572572021-09-04 5:11:33390 days 9 hrs agoENS Name fulldecent.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100 Ether0.00571904 103.19640698
0x0e66fdd6f87d9f292f84a48dd536bede2706bc67aa050c053e4f02bda5549c73Buy City131572502021-09-04 5:09:37390 days 9 hrs agoENS Name fulldecent.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.12 Ether0.01104029 117.49368546
0xc60b33ccd2383f8da5dbb52a5640b199b028320b8e153a3324d9a26b9d5ccba7Sell City For Et...131571772021-09-04 4:53:25390 days 9 hrs agoENS Name fulldecent.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100 Ether0.00470661 84.9277747
0xb69ef80b3ad196eb0c479d5b2413f51753df8f81dedfcb4f891ce56a35834f9aBuy City131571512021-09-04 4:49:43390 days 10 hrs agoENS Name fulldecent.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.09 Ether0.01411782 110.35843204
0xc0b9af15f2ef4abba52e0019b0169e7d921ace5c60da65ee7ad51d586ea1670eBuy City131133292021-08-28 10:29:22397 days 4 hrs agoENS Name primalkolor.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.11 Ether0.00387648 46.87578005
0xdf558ec7919652e15da894f4e272b9afcb023328835d748326f4cf9b47ee45b7Buy City131133292021-08-28 10:29:22397 days 4 hrs agoENS Name primalkolor.eth IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.15 Ether0.00510553 42.72555679
0xe5a24495797802f3f2fb475df2dfa8e3a5fcb2c2ae8ce3a977fa58614d6f8fd7Buy City131111712021-08-28 2:22:42397 days 12 hrs ago0x6b0df6bdeac7ae8c94e0e13e701285ceafbaf5c0 IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.03 Ether0.0104931581.51794623
0x5ec09d428c084ae48c471724c2269b574a5fd28368f376cd79454a6a69c710c3Resolve Sell Cit...131109992021-08-28 1:42:49397 days 13 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.05 Ether0.00442353 49.14714789
0xfa2fd19a23f5d232c2c3db895256fe563f1ebefbecd75f1a3b9ec67a724ea428Buy City131109662021-08-28 1:37:05397 days 13 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.02 Ether0.00570693 53.82526894
0xe271ad8bcb61cec2ecf3eb52af554dc0a06a5f0b33b7a7c4cda7a28ad06bfc1bBuy City131109442021-08-28 1:33:33397 days 13 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.04 Ether0.00597507 60.01480529
0x843a33d7ddaaacf874f1274fdefafe80eb1c2cc0092f8f9603b459a7462353edBuy City131109252021-08-28 1:28:52397 days 13 hrs ago0xf44302f691a6282b52dda6015b09ee8920008d4f IN  0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100.02 Ether0.00750564 61.35470042
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1cadcc4e8dc2fede4c1410c6501a76960cea7426db69098ebff8805108255e9b132965602021-09-25 18:17:26368 days 20 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xb327d112a560f832765a12c72451de40af3c2be20.097 Ether
0x34a3a846784686fec9b38ef435c0f438253a831d750f2e51f0fcd21610193216132490582021-09-18 10:14:09376 days 4 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x02444b241a6f7dc4d0131bf499a6656d136ac4940.07275 Ether
0x6fe25b5d276eb1a196e4ef77a039530d1381882809a1e81dcdf0b5df916b4891132367602021-09-16 12:29:00378 days 2 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xf745f479a7da0b538ee5bbc35d719c7c481e1b7e0.097 Ether
0x9b0b381e582f2b6feda2cb2977a3895b41755e886bc8f269b861c2d8d30fd65e132339862021-09-16 2:14:14378 days 12 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x36e058332ae39efad2315776b9c844e30d07388b0.12125 Ether
0xdc6034d795fb09ecd4471d4b758ddfc8e16b8a736d184ef51514a7b36c96cb15132339712021-09-16 2:11:57378 days 12 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x1eb695d7575eda1f2c8a0aa6edf871b5fc73ea6d0.1455 Ether
0x3dad96f29c932cef1200e2ae071a6edbb6ac19311e2be980b87dcf8548496074132339592021-09-16 2:08:27378 days 12 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xb327d112a560f832765a12c72451de40af3c2be20.097 Ether
0x10aa43872f6e51296016a66fab432574c90afbe336caf53bed172477a72b39b4131634442021-09-05 4:01:04389 days 10 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xb7674eb5586c8f9997399fb6e0752e096998fc9a0.04753 Ether
0x5ec09d428c084ae48c471724c2269b574a5fd28368f376cd79454a6a69c710c3131109992021-08-28 1:42:49397 days 13 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xb327d112a560f832765a12c72451de40af3c2be20.0485 Ether
0xa3ea2449ef3104cbb2e271cbd14deb2de8e418cdd78c9149036c6dfde776dcb4131106202021-08-28 0:14:43397 days 14 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x401f5248dd9f71d2bb5566147a2abdecc78a35850.0873 Ether
0xb9858751e8403508bf856d47325be29003d3ee6f50bdf9c3422cbbb0d8e192ad131104192021-08-27 23:27:21397 days 15 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xf745f479a7da0b538ee5bbc35d719c7c481e1b7e0.097 Ether
0xfdc85acf77c930cc009992b8b8927cb13c98168e52e0dfe1e476e3ed3d16fff270317172019-01-08 14:25:371360 days 25 mins ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x702c4f24bd11c3851d4e2409628be7032f3b43c30.001 Ether
0xaa0303a9793acf5ef115908228f7d1b512dc88fd0ac6bbb2ccd7fe183ac6053a70317152019-01-08 14:24:551360 days 26 mins ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x702c4f24bd11c3851d4e2409628be7032f3b43c30.002 Ether
0xef3d5241c1cc975277612303ad422af4a6f82564a8df65a667358328da99e93d70317142019-01-08 14:24:411360 days 26 mins ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x702c4f24bd11c3851d4e2409628be7032f3b43c30.004 Ether
0x80a6ef5a43ab4622f98292db6bdd1764ccd875e20a46bdd1ccbab2bb510e918d66728392018-11-09 14:22:421420 days 28 mins ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x709329dcc370898d0de55e9fc0160a0a4b9717190.00291 Ether
0xff0a1941914ce4522b7a9205bc59a65eb4af6ac5b4c8009ae291e42d50e7850866218912018-11-01 5:42:561428 days 9 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x709329dcc370898d0de55e9fc0160a0a4b9717190.01746 Ether
0x3e0cc727ebd412a96e4b0a6fa2a1f21edfe16ca6077b73390959e4798676963d60431182018-07-28 4:05:301524 days 10 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x02444b241a6f7dc4d0131bf499a6656d136ac4940.00097 Ether
0x139ff0182b3c3941afe6da22d32de1832afca92a554496a9533f1b4c1bedd9ee59761362018-07-16 18:24:351535 days 20 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x702c4f24bd11c3851d4e2409628be7032f3b43c30.001 Ether
0xc739922602034c3f7afef7d9c88ef3939162fa2fd33094f07b85ac2ece9fc56c59760812018-07-16 18:13:121535 days 20 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x02444b241a6f7dc4d0131bf499a6656d136ac4940.0097 Ether
0x37ad122287d9729084ac4c7538510b2988a8bd62fef93dcb9763d1b8be83f69757906952018-06-15 2:05:401567 days 12 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x95096780efd48fa66483bc197677e89f37ca0cb50.008 Ether
0x16b0e804b439e3c4c577b265b1efeff67ef795de1eb2b0e79ef2f5edee99f35d57905272018-06-15 1:24:121567 days 13 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x401f5248dd9f71d2bb5566147a2abdecc78a35850.00776 Ether
0x97cfaece3400f153845e515fa81071a157c7eebf29ae0b8b98acc7dc23e9d30756932652018-05-28 20:40:221584 days 18 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xe1811ec49f493afb1f4b42e3ef4a3b9d62d9a01b0.50099666 Ether
0x97cfaece3400f153845e515fa81071a157c7eebf29ae0b8b98acc7dc23e9d30756932652018-05-28 20:40:221584 days 18 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x1e4f1275bb041586d7bec44d2e3e4f30e0da7ba40.50099666 Ether
0x97cfaece3400f153845e515fa81071a157c7eebf29ae0b8b98acc7dc23e9d30756932652018-05-28 20:40:221584 days 18 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xd5d6301de62d82f461dc29824fc597d38d80c4240.50099666 Ether
0x0954f30bd194a1c3626ce6894b63a6dd2704df0a3c03fef2e32b88f4b1f3255456860912018-05-27 14:28:451586 days 22 mins ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100xa1349cde05c534e747dca402eab1c901121890d01 Ether
0xcea7938a90caf55982d0a642d29f15daea6b9a1a8a55810ecf95ccc827d8a79f56001672018-05-12 10:06:451601 days 4 hrs ago 0x4bdde1e9fbaef2579dd63e2abbf0be445ab93f100x41b818bc8edfba76ec66a21478e018f31c2a6e460.01 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CityMayor

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-05
*/

pragma solidity ^0.4.19;

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.
  */
 // we don't need "div"
/*  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;
  }
}


contract CityMayor {

	using SafeMath for uint256;

	//
	// ERC-20
	//

   	string public name = "CityCoin";
   	string public symbol = "CITY";
   	uint8 public decimals = 0;

	mapping(address => uint256) balances;

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

	/**
	* @dev total number of tokens in existence
	*/
	uint256 totalSupply_;
	function totalSupply() public view returns (uint256) {
		return totalSupply_;
	}

	/**
	* @dev transfer token for a specified address
	* @param _to The address to transfer to.
	* @param _value The amount to be transferred.
	*/
	function transfer(address _to, uint256 _value) public returns (bool) {
		require(_to != address(0));
		require(_value <= balances[msg.sender]);

		// SafeMath.sub will throw if there is not enough balance.
		balances[msg.sender] = balances[msg.sender].sub(_value);
		balances[_to] = balances[_to].add(_value);
		Transfer(msg.sender, _to, _value);
		return true;
	}

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

	mapping (address => mapping (address => uint256)) internal allowed;


	/**
	* @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
	*/
	function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
		require(_to != address(0));
		require(_value <= balances[_from]);
		require(_value <= allowed[_from][msg.sender]);

		balances[_from] = balances[_from].sub(_value);
		balances[_to] = balances[_to].add(_value);
		allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
		Transfer(_from, _to, _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.
	*/
	function approve(address _spender, uint256 _value) public 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.
	*/
	function allowance(address _owner, address _spender) public view 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, uint _addedValue) public returns (bool) {
		allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_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, uint _subtractedValue) public returns (bool) {
		uint oldValue = allowed[msg.sender][_spender];
		if (_subtractedValue > oldValue) {
			allowed[msg.sender][_spender] = 0;
			} else {
				allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
			}
			Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
			return true;
		}

   	//
   	// Game Meta values
   	//

   	address public unitedNations; // the UN organisation

   	uint16 public MAX_CITIES = 5000; // maximum amount of cities in our world
   	uint256 public UNITED_NATIONS_FUND = 5000000; // initial funding for the UN
   	uint256 public ECONOMY_BOOST = 5000; // minted CITYs when a new city is being bought 

   	uint256 public BUY_CITY_FEE = 3; // UN fee (% of ether) to buy a city from someon / 100e
   	uint256 public ECONOMY_BOOST_TRADE = 100; // _immutable_ gift (in CITY) from the UN when a city is traded (shared among the cities of the relevant country)

   	uint256 public MONUMENT_UN_FEE = 3; // UN fee (CITY) to buy a monument
   	uint256 public MONUMENT_CITY_FEE = 3; // additional fee (CITY) to buy a monument (shared to the monument's city)

   	//
   	// Game structures
   	//

   	struct country {
   		string name;
   		uint16[] cities;
   	}

   	struct city {
   		string name;
   		uint256 price;
   		address owner;

   		uint16 countryId;
   		uint256[] monuments;

   		bool buyable; // set to true when it can be bought

   		uint256 last_purchase_price;
   	}

   	struct monument {
   		string name;
   		uint256 price;
   		address owner;

   		uint16 cityId;
   	}

   	city[] public cities; // cityId -> city
   	country[] public countries; // countryId -> country
   	monument[] public monuments; // monumentId -> monument

   	// total amount of offers (escrowed money)
	uint256 public totalOffer;

   	//
   	// Game events
   	//


	event NewCity(uint256 cityId, string name, uint256 price, uint16 countryId);
	event NewMonument(uint256 monumentId, string name, uint256 price, uint16 cityId);

	event CityForSale(uint16 cityId, uint256 price);
	event CitySold(uint16 cityId, uint256 price, address previousOwner, address newOwner, uint256 offerId);

	event MonumentSold(uint256 monumentId, uint256 price);

   	// 
   	// Admin stuff
   	//

   	// constructor
   	function CityMayor() public {
   		unitedNations = msg.sender;
   		balances[unitedNations] = UNITED_NATIONS_FUND; // initial funding for the united nations
   		uint256 perFounder = 500000;
   		balances[address(0xe1811eC49f493afb1F4B42E3Ef4a3B9d62d9A01b)] = perFounder; // david
   		balances[address(0x1E4F1275bB041586D7Bec44D2E3e4F30e0dA7Ba4)] = perFounder; // simon
   		balances[address(0xD5d6301dE62D82F461dC29824FC597D38d80c424)] = perFounder; // eric
   		// total supply updated
   		totalSupply_ = UNITED_NATIONS_FUND + 3 * perFounder;
   	}

   	// this function is used to let admins give cities back to owners of previous contracts
   	function AdminBuyForSomeone(uint16 _cityId, address _owner) public {
   		// admin only
   		require(msg.sender == unitedNations);
	   	// fetch
	   	city memory fetchedCity = cities[_cityId];
	   	// requires
		require(fetchedCity.buyable == true);
		require(fetchedCity.owner == 0x0); 
	   	// transfer ownership
	   	cities[_cityId].owner = _owner;
	   	// update city metadata
	   	cities[_cityId].buyable = false;
	   	cities[_cityId].last_purchase_price = fetchedCity.price;
	   	// increase economy of region according to ECONOMY_BOOST
	   	uint16[] memory fetchedCities = countries[fetchedCity.countryId].cities;
	   	uint256 perCityBoost = ECONOMY_BOOST / fetchedCities.length;
	   	for(uint16 ii = 0; ii < fetchedCities.length; ii++){
	   		address _to = cities[fetchedCities[ii]].owner;
	   		if(_to != 0x0) { // MINT only if address exists
	   			balances[_to] = balances[_to].add(perCityBoost);
	   			totalSupply_ += perCityBoost; // update the total supply
	   		}
	   	}
	   	// event
	   	CitySold(_cityId, fetchedCity.price, 0x0, _owner, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);	
   	}

   	// this function allows to make an offer from someone else
	function makeOfferForCityForSomeone(uint16 _cityId, uint256 _price, address from) public payable {
		// only for admins
		require(msg.sender == unitedNations);
		// requires
		require(cities[_cityId].owner != 0x0);
		require(_price > 0);
		require(msg.value >= _price);
		require(cities[_cityId].owner != from);
		// add the offer
		uint256 lastId = offers.push(offer(_cityId, _price, from)) - 1;
		// increment totalOffer
		totalOffer = totalOffer.add(_price);
		// event
		OfferForCity(lastId, _cityId, _price, from, cities[_cityId].owner);
	}

	// withdrawing funds
	function adminWithdraw(uint256 _amount) public {
		require(msg.sender == 0xD5d6301dE62D82F461dC29824FC597D38d80c424 || msg.sender == 0x1E4F1275bB041586D7Bec44D2E3e4F30e0dA7Ba4 || msg.sender == 0xe1811eC49f493afb1F4B42E3Ef4a3B9d62d9A01b || msg.sender == unitedNations);
		// do not touch the escrowed money
		uint256 totalAvailable = this.balance.sub(totalOffer);
		if(_amount > totalAvailable) {
			_amount = totalAvailable;
		}
		// divide the amount for founders
		uint256 perFounder = _amount / 3;
		address(0xD5d6301dE62D82F461dC29824FC597D38d80c424).transfer(perFounder); // eric
		address(0x1E4F1275bB041586D7Bec44D2E3e4F30e0dA7Ba4).transfer(perFounder); // simon
		address(0xe1811eC49f493afb1F4B42E3Ef4a3B9d62d9A01b).transfer(perFounder); // david
	}

	//
	// Admin adding stuff
	//

	// we need to add a country before we can add a city
	function adminAddCountry(string _name) public returns (uint256) {
		// requires
		require(msg.sender == unitedNations);
		// add country
		uint256 lastId = countries.push(country(_name, new uint16[](0))) - 1; 
		//
		return lastId;
	}
	// adding a city will mint ECONOMY_BOOST citycoins (country must exist)
	function adminAddCity(string _name, uint256 _price, uint16 _countryId) public returns (uint256) {
		// requires
		require(msg.sender == unitedNations);
		require(cities.length < MAX_CITIES);
		// add city
		uint256 lastId = cities.push(city(_name, _price, 0, _countryId, new uint256[](0), true, 0)) - 1;
		countries[_countryId].cities.push(uint16(lastId));
		// event
		NewCity(lastId, _name, _price, _countryId);
		//
		return lastId;
	}

	// adding a monument (city must exist)
	function adminAddMonument(string _name, uint256 _price, uint16 _cityId) public returns (uint256) {
		// requires
		require(msg.sender == unitedNations);
		require(_price > 0);
		// add monument
		uint256 lastId = monuments.push(monument(_name, _price, 0, _cityId)) - 1;
		cities[_cityId].monuments.push(lastId);
		// event
		NewMonument(lastId, _name, _price, _cityId);
		//
		return lastId;
	}

	// Edit a city if it hasn't been bought yet
	function adminEditCity(uint16 _cityId, string _name, uint256 _price, address _owner) public {
		// requires
		require(msg.sender == unitedNations);
		require(cities[_cityId].owner == 0x0);
		//
		cities[_cityId].name = _name;
		cities[_cityId].price = _price;
		cities[_cityId].owner = _owner;
	}

	// 
	// Buy and manage a city
	//

	function buyCity(uint16 _cityId) public payable {
		// fetch
		city memory fetchedCity = cities[_cityId];
		// requires
		require(fetchedCity.buyable == true);
		require(fetchedCity.owner == 0x0); 
		require(msg.value >= fetchedCity.price);
		// transfer ownership
		cities[_cityId].owner = msg.sender;
		// update city metadata
		cities[_cityId].buyable = false;
		cities[_cityId].last_purchase_price = fetchedCity.price;
		// increase economy of region according to ECONOMY_BOOST
		uint16[] memory fetchedCities = countries[fetchedCity.countryId].cities;
		uint256 perCityBoost = ECONOMY_BOOST / fetchedCities.length;
		for(uint16 ii = 0; ii < fetchedCities.length; ii++){
			address _to = cities[fetchedCities[ii]].owner;
			if(_to != 0x0) { // MINT only if address exists
				balances[_to] = balances[_to].add(perCityBoost);
				totalSupply_ += perCityBoost; // update the total supply
			}
		}
		// event
		CitySold(_cityId, fetchedCity.price, 0x0, msg.sender, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
	}

	//
	// Economy boost:
	// this is called by functions below that will "buy a city from someone else"
	// it will draw ECONOMY_BOOST_TRADE CITYs from the UN funds and split them in the relevant country
	//

	function economyBoost(uint16 _countryId, uint16 _excludeCityId) private {
		if(balances[unitedNations] < ECONOMY_BOOST_TRADE) {
			return; // unless the UN has no more funds
		}
		uint16[] memory fetchedCities = countries[_countryId].cities;
		if(fetchedCities.length == 1) {
			return;
		}
		uint256 perCityBoost = ECONOMY_BOOST_TRADE / (fetchedCities.length - 1); // excluding the bought city
		for(uint16 ii = 0; ii < fetchedCities.length; ii++){
			address _to = cities[fetchedCities[ii]].owner;
			if(_to != 0x0 && fetchedCities[ii] != _excludeCityId) { // only if address exists AND not the current city
				balances[_to] = balances[_to].add(perCityBoost);
				balances[unitedNations] -= perCityBoost;
			}
		}
	}

	//
	// Sell a city
	//

	// step 1: owner sets buyable = true
	function sellCityForEther(uint16 _cityId, uint256 _price) public {
		// requires
		require(cities[_cityId].owner == msg.sender);
		// for sale
		cities[_cityId].price = _price;
		cities[_cityId].buyable = true;
		// event
		CityForSale(_cityId, _price);
	}

	event CityNotForSale(uint16 cityId);

	// step 2: owner can always cancel 
	function cancelSellCityForEther(uint16 _cityId) public {
		// requires
		require(cities[_cityId].owner == msg.sender);
		//
		cities[_cityId].buyable = false;
		// event
		CityNotForSale(_cityId);
	}

	// step 3: someone else accepts the offer
	function resolveSellCityForEther(uint16 _cityId) public payable {
		// fetch
		city memory fetchedCity = cities[_cityId];
		// requires
		require(fetchedCity.buyable == true);
		require(msg.value >= fetchedCity.price);
		require(fetchedCity.owner != msg.sender);
		// calculate the fee
		uint256 fee = BUY_CITY_FEE.mul(fetchedCity.price) / 100;
		// pay the price
		address previousOwner =	fetchedCity.owner;
		previousOwner.transfer(fetchedCity.price.sub(fee));
		// transfer of ownership
		cities[_cityId].owner = msg.sender;
		// update metadata
		cities[_cityId].buyable = false;
		cities[_cityId].last_purchase_price = fetchedCity.price;
		// increase economy of region
		economyBoost(fetchedCity.countryId, _cityId);
		// event
		CitySold(_cityId, fetchedCity.price, previousOwner, msg.sender, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
	}

	//
	// Make an offer for a city
	//

	struct offer {
		uint16 cityId;
		uint256 price;
		address from;
	}

	offer[] public offers;

	event OfferForCity(uint256 offerId, uint16 cityId, uint256 price, address offererAddress, address owner);
	event CancelOfferForCity(uint256 offerId);

	// 1. we make an offer for some cityId that we don't own yet (we deposit money in escrow)
	function makeOfferForCity(uint16 _cityId, uint256 _price) public payable {
		// requires
		require(cities[_cityId].owner != 0x0);
		require(_price > 0);
		require(msg.value >= _price);
		require(cities[_cityId].owner != msg.sender);
		// add the offer
		uint256 lastId = offers.push(offer(_cityId, _price, msg.sender)) - 1;
		// increment totalOffer
		totalOffer = totalOffer.add(_price);
		// event
		OfferForCity(lastId, _cityId, _price, msg.sender, cities[_cityId].owner);
	}

	// 2. we cancel it (getting back our money)
	function cancelOfferForCity(uint256 _offerId) public {
		// fetch
		offer memory offerFetched = offers[_offerId];
		// requires
		require(offerFetched.from == msg.sender);
		// refund
		msg.sender.transfer(offerFetched.price);
		// decrement totaloffer
		totalOffer = totalOffer.sub(offerFetched.price);
		// remove offer
		offers[_offerId].cityId = 0;
		offers[_offerId].price = 0;
		offers[_offerId].from = 0x0;
		// event
		CancelOfferForCity(_offerId);
	}

	// 3. the city owner can accept the offer
	function acceptOfferForCity(uint256 _offerId, uint16 _cityId, uint256 _price) public {
		// fetch
		city memory fetchedCity = cities[_cityId];
		offer memory offerFetched = offers[_offerId];
		// requires
		require(offerFetched.cityId == _cityId);
		require(offerFetched.from != 0x0);
		require(offerFetched.from != msg.sender);
		require(offerFetched.price == _price);
		require(fetchedCity.owner == msg.sender);
		// compute the fee
		uint256 fee = BUY_CITY_FEE.mul(_price) / 100;
		// transfer the escrowed money
		uint256 priceSubFee = _price.sub(fee);
		cities[_cityId].owner.transfer(priceSubFee);
		// decrement tracked amount of escrowed ethers
		totalOffer = totalOffer.sub(priceSubFee);
		// transfer of ownership
		cities[_cityId].owner = offerFetched.from;
		// update metadata
		cities[_cityId].last_purchase_price = _price;
		cities[_cityId].buyable = false; // in case it was also set to be purchasable
		// increase economy of region 
		economyBoost(fetchedCity.countryId, _cityId);
		// event
		CitySold(_cityId, _price, msg.sender, offerFetched.from, _offerId);
		// remove offer
		offers[_offerId].cityId = 0;
		offers[_offerId].price = 0;
		offers[_offerId].from = 0x0;
	}

	//
	// in-game use of CITYs
	//

	/* 
   	uint256 public MONUMENT_UN_FEE = 3; // UN fee (CITY) to buy a monument
   	uint256 public MONUMENT_CITY_FEE = 3; // additional fee (CITY) to buy a monument (shared to the monument's city)
   	*/

	// anyone can buy a monument from someone else (with CITYs)
	function buyMonument(uint256 _monumentId, uint256 _price) public {
		// fetch
		monument memory fetchedMonument = monuments[_monumentId];
		// requires
		require(fetchedMonument.price > 0);
		require(fetchedMonument.price == _price);
		require(balances[msg.sender] >= _price);
		require(fetchedMonument.owner != msg.sender);
		// pay first!
		balances[msg.sender] = balances[msg.sender].sub(_price);
		// compute fee
		uint256 UN_fee = MONUMENT_UN_FEE.mul(_price) / 100;
		uint256 city_fee = MONUMENT_CITY_FEE.mul(_price) / 100;
		// previous owner gets paid
		uint256 toBePaid = _price.sub(UN_fee);
		toBePaid = toBePaid.sub(city_fee);
		balances[fetchedMonument.owner] = balances[fetchedMonument.owner].add(toBePaid);
		// UN gets a fee
		balances[unitedNations] = balances[unitedNations].add(UN_fee);
		// city gets a fee
		address cityOwner = cities[fetchedMonument.cityId].owner;
		balances[cityOwner] = balances[cityOwner].add(city_fee);
		// transfer of ownership
		monuments[_monumentId].owner = msg.sender;
		// price increase of the monument
		monuments[_monumentId].price = monuments[_monumentId].price.mul(2);
		// event
		MonumentSold(_monumentId, _price);
	}

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"countries","outputs":[{"name":"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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"monuments","outputs":[{"name":"name","type":"string"},{"name":"price","type":"uint256"},{"name":"owner","type":"address"},{"name":"cityId","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BUY_CITY_FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNITED_NATIONS_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ECONOMY_BOOST_TRADE","outputs":[{"name":"","type":"uint256"}],"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":"","type":"uint256"}],"name":"cities","outputs":[{"name":"name","type":"string"},{"name":"price","type":"uint256"},{"name":"owner","type":"address"},{"name":"countryId","type":"uint16"},{"name":"buyable","type":"bool"},{"name":"last_purchase_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unitedNations","outputs":[{"name":"","type":"address"}],"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":"_amount","type":"uint256"}],"name":"adminWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MONUMENT_UN_FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_monumentId","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"buyMonument","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"}],"name":"resolveSellCityForEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"offers","outputs":[{"name":"cityId","type":"uint16"},{"name":"price","type":"uint256"},{"name":"from","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"},{"name":"_price","type":"uint256"}],"name":"sellCityForEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"}],"name":"cancelSellCityForEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"}],"name":"buyCity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_price","type":"uint256"},{"name":"_countryId","type":"uint16"}],"name":"adminAddCity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_CITIES","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ECONOMY_BOOST","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offerId","type":"uint256"}],"name":"cancelOfferForCity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_price","type":"uint256"},{"name":"_cityId","type":"uint16"}],"name":"adminAddMonument","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalOffer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MONUMENT_CITY_FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_name","type":"string"}],"name":"adminAddCountry","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offerId","type":"uint256"},{"name":"_cityId","type":"uint16"},{"name":"_price","type":"uint256"}],"name":"acceptOfferForCity","outputs":[],"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":false,"inputs":[{"name":"_cityId","type":"uint16"},{"name":"_owner","type":"address"}],"name":"AdminBuyForSomeone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"},{"name":"_price","type":"uint256"},{"name":"from","type":"address"}],"name":"makeOfferForCityForSomeone","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"},{"name":"_price","type":"uint256"}],"name":"makeOfferForCity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_cityId","type":"uint16"},{"name":"_name","type":"string"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"}],"name":"adminEditCity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cityId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"countryId","type":"uint16"}],"name":"NewCity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"monumentId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"cityId","type":"uint16"}],"name":"NewMonument","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cityId","type":"uint16"},{"indexed":false,"name":"price","type":"uint256"}],"name":"CityForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cityId","type":"uint16"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"},{"indexed":false,"name":"offerId","type":"uint256"}],"name":"CitySold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"monumentId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"MonumentSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cityId","type":"uint16"}],"name":"CityNotForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"offerId","type":"uint256"},{"indexed":false,"name":"cityId","type":"uint16"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"offererAddress","type":"address"},{"indexed":false,"name":"owner","type":"address"}],"name":"OfferForCity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"offerId","type":"uint256"}],"name":"CancelOfferForCity","type":"event"}]

606060405260408051908101604052600881527f43697479436f696e000000000000000000000000000000000000000000000000602082015260009080516200004d929160200190620001c4565b5060408051908101604052600481527f43495459000000000000000000000000000000000000000000000000000000006020820152600190805162000097929160200190620001c4565b506002805460ff191690556006805460a060020a61ffff0219167513880000000000000000000000000000000000000000179055624c4b40600755611388600855600360098190556064600a55600b819055600c553415620000f857600080fd5b60068054600160a060020a03191633600160a060020a039081169190911791829055600754911660009081526003602052604081208290556207a1207f2a63bad538ddfd395ab8dde62aff1acbfa309d3fb83ed3c9561e48c9de00f0188190557fa15da8895dd182a72e987ecbc3bb37499548bcf2a89927ee3bec9d96511d77e581905573d5d6301de62d82f461dc29824fc597d38d80c4249091527f51ab90ea3a05b09d43d4d4be3921347ba395ef247be34b90afb47cc8332a5b00556216e3600160045562000269565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020757805160ff191683800117855562000237565b8280016001018555821562000237579182015b82811115620002375782518255916020019190600101906200021a565b506200024592915062000249565b5090565b6200026691905b8082111562000245576000815560010162000250565b90565b613be180620002796000396000f3006060604052600436106101e25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101e757806308e9daa514610271578063095ea7b31461030f57806318160ddd1461034557806323b872dd1461036a578063313ce5671461039257806337f83291146103bb5780634a87e08a1461047c5780634c34d7e91461048f5780635a768e4a146104a257806366188463146104b55780636a51b918146104d75780636e2c10a1146105a957806370a08231146105d85780637c5b4a37146105f757806382b57b961461060f578063839acf14146106225780638973e3161461063b5780638a72ea6a1461064a57806395d89b411461069257806396dbad1e146106a55780639e65a03a146106c2578063a0bde945146106dc578063a25fc8dc146106eb578063a2741bdb14610747578063a27c175614610771578063a9059cbb14610784578063ae93e513146107a6578063b2bdc6b3146107bc578063bd1de90014610818578063d02e8f701461082b578063d73dd6231461083e578063db5a277814610860578063dc1c1389146108b1578063dd62ed3e146108d1578063e3b55276146108f6578063e6c89d4a1461091c578063ee5845cc1461093a578063f93e2d311461094c575b600080fd5b34156101f257600080fd5b6101fa6109b6565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561023657808201518382015260200161021e565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027c57600080fd5b610287600435610a54565b604051602080825282546002600019610100600184161502019091160490820181905281906040820190849080156103005780601f106102d557610100808354040283529160200191610300565b820191906000526020600020905b8154815290600101906020018083116102e357829003601f168201915b50509250505060405180910390f35b341561031a57600080fd5b610331600160a060020a0360043516602435610a77565b604051901515815260200160405180910390f35b341561035057600080fd5b610358610ae3565b60405190815260200160405180910390f35b341561037557600080fd5b610331600160a060020a0360043581169060243516604435610aea565b341561039d57600080fd5b6103a5610c6c565b60405160ff909116815260200160405180910390f35b34156103c657600080fd5b6103d1600435610c75565b60405160208101849052600160a060020a038316604082015261ffff821660608201526080808252855460026000196101006001841615020190911604908201819052819060a08201908790801561046a5780601f1061043f5761010080835404028352916020019161046a565b820191906000526020600020905b81548152906001019060200180831161044d57829003601f168201915b50509550505050505060405180910390f35b341561048757600080fd5b610358610cba565b341561049a57600080fd5b610358610cc0565b34156104ad57600080fd5b610358610cc6565b34156104c057600080fd5b610331600160a060020a0360043516602435610ccc565b34156104e257600080fd5b6104ed600435610dc8565b60405160208101869052600160a060020a038516604082015261ffff84166060820152821515608082015260a0810182905260c0808252875460026000196101006001841615020190911604908201819052819060e0820190899080156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b505097505050505050505060405180910390f35b34156105b457600080fd5b6105bc610e1e565b604051600160a060020a03909116815260200160405180910390f35b34156105e357600080fd5b610358600160a060020a0360043516610e2d565b341561060257600080fd5b61060d600435610e48565b005b341561061a57600080fd5b610358610fc7565b341561062d57600080fd5b61060d600435602435610fcd565b61060d61ffff600435166113da565b341561065557600080fd5b61066060043561173b565b60405161ffff90931683526020830191909152600160a060020a03166040808301919091526060909101905180910390f35b341561069d57600080fd5b6101fa61177a565b34156106b057600080fd5b61060d61ffff600435166024356117e5565b34156106cd57600080fd5b61060d61ffff600435166118cc565b61060d61ffff60043516611982565b34156106f657600080fd5b61035860046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020013561ffff169350611dcf92505050565b341561075257600080fd5b61075a61206b565b60405161ffff909116815260200160405180910390f35b341561077c57600080fd5b61035861207c565b341561078f57600080fd5b610331600160a060020a0360043516602435612082565b34156107b157600080fd5b61060d60043561217d565b34156107c757600080fd5b61035860046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020013561ffff16935061231992505050565b341561082357600080fd5b6103586124c0565b341561083657600080fd5b6103586124c6565b341561084957600080fd5b610331600160a060020a03600435166024356124cc565b341561086b57600080fd5b61035860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061257095505050505050565b34156108bc57600080fd5b61060d60043561ffff60243516604435612626565b34156108dc57600080fd5b610358600160a060020a0360043581169060243516612aea565b341561090157600080fd5b61060d61ffff60043516600160a060020a0360243516612b15565b61060d61ffff60043516602435600160a060020a0360443516612f6e565b61060d61ffff60043516602435613170565b341561095757600080fd5b61060d6004803561ffff169060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460200135600160a060020a0316935061335692505050565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a4c5780601f10610a2157610100808354040283529160200191610a4c565b820191906000526020600020905b815481529060010190602001808311610a2f57829003601f168201915b505050505081565b600e805482908110610a6257fe5b60009182526020909120600290910201905081565b600160a060020a03338116600081815260056020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6004545b90565b6000600160a060020a0383161515610b0157600080fd5b600160a060020a038416600090815260036020526040902054821115610b2657600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054821115610b5957600080fd5b600160a060020a038416600090815260036020526040902054610b82908363ffffffff61345916565b600160a060020a038086166000908152600360205260408082209390935590851681522054610bb7908363ffffffff61346b16565b600160a060020a03808516600090815260036020908152604080832094909455878316825260058152838220339093168252919091522054610bff908363ffffffff61345916565b600160a060020a03808616600081815260056020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60025460ff1681565b600f805482908110610c8357fe5b600091825260209091206003909102016001810154600282015491925090600160a060020a0381169060a060020a900461ffff1684565b60095481565b60075481565b600a5481565b600160a060020a03338116600090815260056020908152604080832093861683529290529081205480831115610d2957600160a060020a033381166000908152600560209081526040808320938816835292905290812055610d60565b610d39818463ffffffff61345916565b600160a060020a033381166000908152600560209081526040808320938916835292905220555b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600d805482908110610dd657fe5b6000918252602090912060069091020160018101546002820154600483015460058401549394509192600160a060020a0382169260a060020a90920461ffff169160ff169086565b600654600160a060020a031681565b600160a060020a031660009081526003602052604090205490565b60008073d5d6301de62d82f461dc29824fc597d38d80c424600160a060020a0333161480610e925750731e4f1275bb041586d7bec44d2e3e4f30e0da7ba4600160a060020a033316145b80610eb9575073e1811ec49f493afb1f4b42e3ef4a3b9d62d9a01b600160a060020a033316145b80610ed2575060065433600160a060020a039081169116145b1515610edd57600080fd5b601054610efb90600160a060020a033016319063ffffffff61345916565b915081831115610f09578192505b506003820473d5d6301de62d82f461dc29824fc597d38d80c4246108fc82150282604051600060405180830381858888f193505050501515610f4a57600080fd5b731e4f1275bb041586d7bec44d2e3e4f30e0da7ba481156108fc0282604051600060405180830381858888f193505050501515610f8657600080fd5b73e1811ec49f493afb1f4b42e3ef4a3b9d62d9a01b81156108fc0282604051600060405180830381858888f193505050501515610fc257600080fd5b505050565b600b5481565b610fd56136a0565b600080600080600f87815481101515610fea57fe5b906000526020600020906003020160806040519081016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561109d5780601f106110725761010080835404028352916020019161109d565b820191906000526020600020905b81548152906001019060200180831161108057829003601f168201915b50505091835250506001820154602080830191909152600290920154600160a060020a038116604083015260a060020a900461ffff16606090910152909550600090860151116110ec57600080fd5b858560200151146110fc57600080fd5b600160a060020a0333166000908152600360205260409020548690101561112257600080fd5b33600160a060020a03168560400151600160a060020a0316141561114557600080fd5b600160a060020a03331660009081526003602052604090205461116e908763ffffffff61345916565b600160a060020a033316600090815260036020526040902055600b5460649061119d908863ffffffff61348116565b8115156111a657fe5b04935060646111c087600c5461348190919063ffffffff16565b8115156111c957fe5b0492506111dc868563ffffffff61345916565b91506111ee828463ffffffff61345916565b915061122382600360008860400151600160a060020a031681526020810191909152604001600020549063ffffffff61346b16565b600360008760400151600160a060020a0390811682526020808301939093526040918201600090812094909455600654168352600390915290205461126e908563ffffffff61346b16565b600654600160a060020a0316600090815260036020526040902055600d606086015161ffff168154811015156112a057fe5b6000918252602080832060026006909302019190910154600160a060020a031680835260039091526040909120549091506112e1908463ffffffff61346b16565b600160a060020a038216600090815260036020526040902055600f80543391908990811061130b57fe5b906000526020600020906003020160020160006101000a815481600160a060020a030219169083600160a060020a031602179055506113746002600f8981548110151561135457fe5b90600052602060002090600302016001015461348190919063ffffffff16565b600f80548990811061138257fe5b9060005260206000209060030201600101819055507f7c9ad11aa27b57eb5eea52d3d9a74277b8454eeef2c3aa9e999d882267674e99878760405191825260208201526040908101905180910390a150505050505050565b6113e26136cf565b600080600d8461ffff168154811015156113f857fe5b906000526020600020906006020160e06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ab5780601f10611480576101008083540402835291602001916114ab565b820191906000526020600020905b81548152906001019060200180831161148e57829003601f168201915b505050918352505060018201546020808301919091526002830154600160a060020a03811660408085019190915260a060020a90910461ffff16606084015260038401805460809094019390929091828202909101905190810160405280929190818152602001828054801561154057602002820191906000526020600020905b81548152602001906001019080831161152c575b5050509183525050600482015460ff1615156020820152600590910154604090910152925060a0830151151560011461157857600080fd5b826020015134101561158957600080fd5b33600160a060020a03168360400151600160a060020a031614156115ac57600080fd5b60646115c584602001516009549063ffffffff61348116565b8115156115ce57fe5b0491508260400151905080600160a060020a03166108fc6115fa8486602001519063ffffffff61345916565b9081150290604051600060405180830381858888f19350505050151561161f57600080fd5b33600d8561ffff1681548110151561163357fe5b600091825260208220600691909102016002018054600160a060020a031916600160a060020a039390931692909217909155600d805461ffff871690811061167757fe5b906000526020600020906006020160040160006101000a81548160ff0219169083151502179055508260200151600d805461ffff87169081106116b657fe5b9060005260206000209060060201600501819055506116d98360600151856134ac565b600080516020613b96833981519152848460200151833360001960405161ffff90951685526020850193909352600160a060020a0391821660408086019190915291166060840152608083019190915260a0909101905180910390a150505050565b601180548290811061174957fe5b600091825260209091206003909102018054600182015460029092015461ffff9091169250600160a060020a031683565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a4c5780601f10610a2157610100808354040283529160200191610a4c565b33600160a060020a0316600d8361ffff1681548110151561180257fe5b6000918252602090912060026006909202010154600160a060020a03161461182957600080fd5b80600d8361ffff1681548110151561183d57fe5b9060005260206000209060060201600101819055506001600d8361ffff1681548110151561186757fe5b60009182526020909120600690910201600401805460ff19169115159190911790557f0b986d5d004281c772a464f4eacd47239e3226bb5d8d17e69f5e37f5ddb7e654828260405161ffff909216825260208201526040908101905180910390a15050565b33600160a060020a0316600d8261ffff168154811015156118e957fe5b6000918252602090912060026006909202010154600160a060020a03161461191057600080fd5b6000600d8261ffff1681548110151561192557fe5b60009182526020909120600690910201600401805460ff19169115159190911790557f3c0759c341f371c2750cb2ceeeb6ec99ea2f1c90c2334b005ed637525c7afc5c8160405161ffff909116815260200160405180910390a150565b61198a6136cf565b611992613719565b6000806000600d8661ffff168154811015156119aa57fe5b906000526020600020906006020160e06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a5d5780601f10611a3257610100808354040283529160200191611a5d565b820191906000526020600020905b815481529060010190602001808311611a4057829003601f168201915b505050918352505060018201546020808301919091526002830154600160a060020a03811660408085019190915260a060020a90910461ffff166060840152600384018054608090940193909290918282029091019051908101604052809291908181526020018280548015611af257602002820191906000526020600020905b815481526020019060010190808311611ade575b5050509183525050600482015460ff1615156020820152600590910154604090910152945060a08501511515600114611b2a57600080fd5b8460400151600160a060020a031615611b4257600080fd5b8460200151341015611b5357600080fd5b33600d8761ffff16815481101515611b6757fe5b600091825260208220600691909102016002018054600160a060020a031916600160a060020a039390931692909217909155600d805461ffff8916908110611bab57fe5b906000526020600020906006020160040160006101000a81548160ff0219169083151502179055508460200151600d805461ffff8916908110611bea57fe5b906000526020600020906006020160050181905550600e856060015161ffff16815481101515611c1657fe5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611c9957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411611c605790505b505050505093508351600854811515611cae57fe5b049250600091505b83518261ffff161015611d6a57600d848361ffff1681518110611cd557fe5b9060200190602002015161ffff16815481101515611cef57fe5b6000918252602090912060026006909202010154600160a060020a031690508015611d5f57600160a060020a038116600090815260036020526040902054611d3d908463ffffffff61346b16565b600160a060020a03821660009081526003602052604090205560048054840190555b600190910190611cb6565b600080516020613b9683398151915286866020015160003360001960405161ffff90951685526020850193909352600160a060020a0391821660408086019190915291166060840152608083019190915260a0909101905180910390a1505050505050565b600654600090819033600160a060020a03908116911614611def57600080fd5b600654600d5460a060020a90910461ffff169010611e0c57600080fd5b6001600d8054806001018281611e22919061372b565b9160005260206000209060060201600060e0604051908101604052808a81526020018981526020016000600160a060020a031681526020018861ffff1681526020016000604051805910611e735750595b90808252806020026020018201604052508152600160208201526000604090910152919050815181908051611eac929160200190613757565b50602082015181600101556040820151600282018054600160a060020a031916600160a060020a039290921691909117905560608201518160020160146101000a81548161ffff021916908361ffff160217905550608082015181600301908051611f1b9291602001906137d5565b5060a082015160048201805460ff191691151591909117905560c082015181600501555050039050600e8361ffff16815481101515611f5657fe5b90600052602060002090600202016001018054806001018281611f79919061380f565b916000526020600020906010918282040191900660020283909190916101000a81548161ffff021916908361ffff160217905550507f6aea3abde5fe13332dca1abdda86999b40570d7328d1ff22df39b639ef7930d6818686866040518481526040810183905261ffff8216606082015260806020820181815290820185818151815260200191508051906020019080838360005b8381101561202657808201518382015260200161200e565b50505050905090810190601f1680156120535780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1949350505050565b60065460a060020a900461ffff1681565b60085481565b6000600160a060020a038316151561209957600080fd5b600160a060020a0333166000908152600360205260409020548211156120be57600080fd5b600160a060020a0333166000908152600360205260409020546120e7908363ffffffff61345916565b600160a060020a03338116600090815260036020526040808220939093559085168152205461211c908363ffffffff61346b16565b600160a060020a0380851660008181526003602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b612185613843565b601180548390811061219357fe5b906000526020600020906003020160606040519081016040908152825461ffff16825260018301546020830152600290920154600160a060020a0390811692820192835290925033169051600160a060020a0316146121f157600080fd5b33600160a060020a03166108fc82602001519081150290604051600060405180830381858888f19350505050151561222857600080fd5b61223f81602001516010549063ffffffff61345916565b60105560118054600091908490811061225457fe5b60009182526020822060039190910201805461ffff191661ffff9390931692909217909155601180548490811061228757fe5b90600052602060002090600302016001018190555060006011838154811015156122ad57fe5b906000526020600020906003020160020160006101000a815481600160a060020a030219169083600160a060020a031602179055507fb0afb0649ace03a89dfaef4e0ec1b57a8147430a37de1d0bd938cf0e1ba1d4cc8260405190815260200160405180910390a15050565b600654600090819033600160a060020a0390811691161461233957600080fd5b6000841161234657600080fd5b6001600f805480600101828161235c9190613863565b91600052602060002090600302016000608060405190810160409081528a8252602082018a905260009082015261ffff881660608201529190508151819080516123aa929160200190613757565b50602082015181600101556040820151600282018054600160a060020a031916600160a060020a039290921691909117905560608201518160020160146101000a81548161ffff021916908361ffff1602179055505050039050600d8361ffff1681548110151561241757fe5b9060005260206000209060060201600301805480600101828161243a919061388f565b5060009182526020909120018190557f3d9d17a8fce809f94f985369b4789ce434e54d263e670183cad99a99d83300a1818686866040518481526040810183905261ffff8216606082015260806020820181815290820185818151815260200191508051906020019080838360008381101561202657808201518382015260200161200e565b60105481565b600c5481565b600160a060020a033381166000908152600560209081526040808320938616835292905290812054612504908363ffffffff61346b16565b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600654600090819033600160a060020a0390811691161461259057600080fd5b6001600e80548060010182816125a691906138b3565b91600052602060002090600202016000604080519081016040528088815260200160006040518059106125d65750595b90808252806020026020018201604052509052919050815181908051612600929160200190613757565b5060208201518160010190805161261b9291602001906138df565b505050039392505050565b61262e6136cf565b612636613843565b600080600d8661ffff1681548110151561264c57fe5b906000526020600020906006020160e06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126ff5780601f106126d4576101008083540402835291602001916126ff565b820191906000526020600020905b8154815290600101906020018083116126e257829003601f168201915b505050918352505060018201546020808301919091526002830154600160a060020a03811660408085019190915260a060020a90910461ffff16606084015260038401805460809094019390929091828202909101905190810160405280929190818152602001828054801561279457602002820191906000526020600020905b815481526020019060010190808311612780575b5050509183525050600482015460ff16151560208201526005909101546040909101526011805491955090889081106127c957fe5b906000526020600020906003020160606040519081016040908152825461ffff908116835260018401546020840152600290930154600160a060020a03169082015293508616835161ffff161461281f57600080fd5b8260400151600160a060020a0316151561283857600080fd5b33600160a060020a03168360400151600160a060020a0316141561285b57600080fd5b8483602001511461286b57600080fd5b33600160a060020a03168460400151600160a060020a03161461288d57600080fd5b6009546064906128a3908763ffffffff61348116565b8115156128ac57fe5b0491506128bf858363ffffffff61345916565b9050600d8661ffff168154811015156128d457fe5b6000918252602090912060026006909202010154600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561291857600080fd5b60105461292b908263ffffffff61345916565b6010556040830151600d805461ffff891690811061294557fe5b906000526020600020906006020160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555084600d8761ffff1681548110151561298e57fe5b9060005260206000209060060201600501819055506000600d8761ffff168154811015156129b857fe5b60009182526020909120600690910201600401805460ff19169115159190911790556129e86060850151876134ac565b600080516020613b9683398151915286863386604001518b60405161ffff90951685526020850193909352600160a060020a0391821660408086019190915291166060840152608083019190915260a0909101905180910390a16000601188815481101515612a5357fe5b60009182526020822060039190910201805461ffff191661ffff93909316929092179091556011805489908110612a8657fe5b9060005260206000209060030201600101819055506000601188815481101515612aac57fe5b906000526020600020906003020160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555050505050505050565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b612b1d6136cf565b612b25613719565b6006546000908190819033600160a060020a03908116911614612b4757600080fd5b600d805461ffff8916908110612b5957fe5b906000526020600020906006020160e06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c0c5780601f10612be157610100808354040283529160200191612c0c565b820191906000526020600020905b815481529060010190602001808311612bef57829003601f168201915b505050918352505060018201546020808301919091526002830154600160a060020a03811660408085019190915260a060020a90910461ffff166060840152600384018054608090940193909290918282029091019051908101604052809291908181526020018280548015612ca157602002820191906000526020600020905b815481526020019060010190808311612c8d575b5050509183525050600482015460ff1615156020820152600590910154604090910152945060a08501511515600114612cd957600080fd5b8460400151600160a060020a031615612cf157600080fd5b85600d8861ffff16815481101515612d0557fe5b600091825260208220600691909102016002018054600160a060020a031916600160a060020a039390931692909217909155600d805461ffff8a16908110612d4957fe5b906000526020600020906006020160040160006101000a81548160ff0219169083151502179055508460200151600d805461ffff8a16908110612d8857fe5b906000526020600020906006020160050181905550600e856060015161ffff16815481101515612db457fe5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015612e3757602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411612dfe5790505b505050505093508351600854811515612e4c57fe5b049250600091505b83518261ffff161015612f0857600d848361ffff1681518110612e7357fe5b9060200190602002015161ffff16815481101515612e8d57fe5b6000918252602090912060026006909202010154600160a060020a031690508015612efd57600160a060020a038116600090815260036020526040902054612edb908463ffffffff61346b16565b600160a060020a03821660009081526003602052604090205560048054840190555b600190910190612e54565b600080516020613b9683398151915287866020015160008960001960405161ffff90951685526020850193909352600160a060020a0391821660408086019190915291166060840152608083019190915260a0909101905180910390a150505050505050565b60065460009033600160a060020a03908116911614612f8c57600080fd5b600d805461ffff8616908110612f9e57fe5b6000918252602090912060026006909202010154600160a060020a03161515612fc657600080fd5b60008311612fd357600080fd5b3483901015612fe157600080fd5b81600160a060020a0316600d8561ffff16815481101515612ffe57fe5b6000918252602090912060026006909202010154600160a060020a0316141561302657600080fd5b60016011805480600101828161303c9190613984565b916000526020600020906003020160006060604051908101604090815261ffff8a16825260208201899052600160a060020a038816908201529190508151815461ffff191661ffff919091161781556020820151816001015560408201516002919091018054600160a060020a031916600160a060020a039092169190911790555060105491900391506130d0908461346b565b6010819055507f5aae35e7071630e315bae14b34295052ec312a6cbaf5e75894549df1e4f25f9f81858585600d8961ffff1681548110151561310e57fe5b6000918252602090912060026006909202010154600160a060020a031660405194855261ffff9093166020850152604080850192909252600160a060020a03908116606085015291909116608083015260a0909101905180910390a150505050565b6000600d8361ffff1681548110151561318557fe5b6000918252602090912060026006909202010154600160a060020a031615156131ad57600080fd5b600082116131ba57600080fd5b34829010156131c857600080fd5b33600160a060020a0316600d8461ffff168154811015156131e557fe5b6000918252602090912060026006909202010154600160a060020a0316141561320d57600080fd5b6001601180548060010182816132239190613984565b916000526020600020906003020160006060604051908101604090815261ffff8916825260208201889052600160a060020a033316908201529190508151815461ffff191661ffff919091161781556020820151816001015560408201516002919091018054600160a060020a031916600160a060020a039092169190911790555060105491900391506132b7908361346b565b6010819055507f5aae35e7071630e315bae14b34295052ec312a6cbaf5e75894549df1e4f25f9f81848433600d8861ffff168154811015156132f557fe5b6000918252602090912060026006909202010154600160a060020a031660405194855261ffff9093166020850152604080850192909252600160a060020a03908116606085015291909116608083015260a0909101905180910390a1505050565b60065433600160a060020a0390811691161461337157600080fd5b600d805461ffff861690811061338357fe5b6000918252602090912060026006909202010154600160a060020a0316156133aa57600080fd5b82600d8561ffff168154811015156133be57fe5b90600052602060002090600602016000019080516133e0929160200190613757565b5081600d8561ffff168154811015156133f557fe5b90600052602060002090600602016001018190555080600d8561ffff1681548110151561341e57fe5b906000526020600020906006020160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555050505050565b60008282111561346557fe5b50900390565b60008282018381101561347a57fe5b9392505050565b6000808315156134945760009150610dc1565b508282028284828115156134a457fe5b041461347a57fe5b6134b4613719565b600a54600654600160a060020a03166000908152600360205260408120549091829182919010156134e457613698565b600e805461ffff88169081106134f657fe5b906000526020600020906002020160010180548060200260200160405190810160405280929190818152602001828054801561357957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116135405790505b5050505050935083516001141561358f57613698565b6001845103600a548115156135a057fe5b049250600091505b83518261ffff16101561369857600d848361ffff16815181106135c757fe5b9060200190602002015161ffff168154811015156135e157fe5b6000918252602090912060026006909202010154600160a060020a03169050801580159061363057508461ffff16848361ffff168151811061361f57fe5b9060200190602002015161ffff1614155b1561368d57600160a060020a03811660009081526003602052604090205461365e908463ffffffff61346b16565b600160a060020a0380831660009081526003602052604080822093909355600654909116815220805484900390555b6001909101906135a8565b505050505050565b6080604051908101604052806136b4613719565b81526000602082018190526040820181905260609091015290565b60e0604051908101604052806136e3613719565b8152600060208201819052604082018190526060820152608001613705613719565b815260006020820181905260409091015290565b60206040519081016040526000815290565b815481835581811511610fc257600602816006028360005260206000209182019101610fc291906139b0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061379857805160ff19168380011785556137c5565b828001600101855582156137c5579182015b828111156137c55782518255916020019190600101906137aa565b506137d1929150613a1e565b5090565b8280548282559060005260206000209081019282156137c557916020028201828111156137c55782518255916020019190600101906137aa565b815481835581811511610fc257600f016010900481600f01601090048360005260206000209182019101610fc29190613a1e565b606060405190810160409081526000808352602083018190529082015290565b815481835581811511610fc257600302816003028360005260206000209182019101610fc29190613a38565b815481835581811511610fc257600083815260209020610fc2918101908301613a1e565b815481835581811511610fc257600202816002028360005260206000209182019101610fc29190613a83565b82805482825590600052602060002090600f016010900481019282156139785791602002820160005b8382111561394857835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613908565b80156139765782816101000a81549061ffff0219169055600201602081600101049283019260010302613948565b505b506137d1929150613ab4565b815481835581811511610fc257600302816003028360005260206000209182019101610fc29190613ad3565b610ae791905b808211156137d15760006139ca8282613b0b565b60006001830181905560028301805475ffffffffffffffffffffffffffffffffffffffffffff19169055613a02906003840190613b52565b5060048101805460ff19169055600060058201556006016139b6565b610ae791905b808211156137d15760008155600101613a24565b610ae791905b808211156137d1576000613a528282613b0b565b506000600182015560028101805475ffffffffffffffffffffffffffffffffffffffffffff19169055600301613a3e565b610ae791905b808211156137d1576000613a9d8282613b0b565b613aab600183016000613b70565b50600201613a89565b610ae791905b808211156137d157805461ffff19168155600101613aba565b610ae791905b808211156137d157805461ffff1916815560006001820155600281018054600160a060020a0319169055600301613ad9565b50805460018160011615610100020316600290046000825580601f10613b315750613b4f565b601f016020900490600052602060002090810190613b4f9190613a1e565b50565b5080546000825590600052602060002090810190613b4f9190613a1e565b50805460008255600f016010900490600052602060002090810190613b4f9190613a1e56005efb38ad30f497e82c51ea3ed01f9afe1195fb15ebceb0ad2b2c64eaacf19c78a165627a7a723058205e08dd01ca0acf6b581fa8bda2e0e898353ee44bc5a6f3b73e96fea34d80f7be0029

Swarm Source

bzzr://5e08dd01ca0acf6b581fa8bda2e0e898353ee44bc5a6f3b73e96fea34d80f7be
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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