Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 939 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Upgrade Contract | 5197853 | 2880 days ago | IN | 0 ETH | 0.00025396 | ||||
| Withdraw Treasur... | 5197799 | 2880 days ago | IN | 0 ETH | 0.00026365 | ||||
| Withdraw Treasur... | 5197719 | 2880 days ago | IN | 0 ETH | 0.00024168 | ||||
| On Maintenance | 5197717 | 2880 days ago | IN | 0 ETH | 0.000219 | ||||
| Purchase | 5197667 | 2880 days ago | IN | 0.002 ETH | 0.00018544 | ||||
| Withdraw Treasur... | 5197441 | 2880 days ago | IN | 0 ETH | 0.00051928 | ||||
| Attack Island | 5197428 | 2880 days ago | IN | 0 ETH | 0.00179881 | ||||
| Withdraw Treasur... | 5197420 | 2880 days ago | IN | 0 ETH | 0.00064911 | ||||
| Attack Island | 5197407 | 2880 days ago | IN | 0 ETH | 0.00095975 | ||||
| Attack Island | 5197296 | 2880 days ago | IN | 0 ETH | 0.00047949 | ||||
| Withdraw Treasur... | 5197291 | 2880 days ago | IN | 0 ETH | 0.00064911 | ||||
| Buy Ships | 5197178 | 2880 days ago | IN | 0.03 ETH | 0.00093808 | ||||
| Buy Ships | 5197176 | 2880 days ago | IN | 0.05 ETH | 0.00086503 | ||||
| Withdraw Treasur... | 5197174 | 2880 days ago | IN | 0 ETH | 0.00084384 | ||||
| Attack Island | 5197153 | 2880 days ago | IN | 0 ETH | 0.00033742 | ||||
| Attack Island | 5197147 | 2880 days ago | IN | 0 ETH | 0.00143905 | ||||
| Withdraw Treasur... | 5197095 | 2880 days ago | IN | 0 ETH | 0.00064911 | ||||
| Withdraw Treasur... | 5197094 | 2880 days ago | IN | 0 ETH | 0.00045846 | ||||
| Attack Island | 5197090 | 2880 days ago | IN | 0 ETH | 0.00119921 | ||||
| Withdraw Treasur... | 5197067 | 2880 days ago | IN | 0 ETH | 0.00090875 | ||||
| Attack Island | 5197064 | 2880 days ago | IN | 0 ETH | 0.00239842 | ||||
| Withdraw Treasur... | 5196976 | 2880 days ago | IN | 0 ETH | 0.00064911 | ||||
| Attack Island | 5196971 | 2880 days ago | IN | 0 ETH | 0.00179953 | ||||
| Buy Ships | 5196967 | 2880 days ago | IN | 0.03 ETH | 0.0010824 | ||||
| Buy Ships | 5196926 | 2880 days ago | IN | 0.05 ETH | 0.00144172 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5197853 | 2880 days ago | 0.29298072 ETH | ||||
| Transfer | 5197441 | 2880 days ago | 0.00011916 ETH | ||||
| Transfer | 5197441 | 2880 days ago | 0.00023832 ETH | ||||
| Transfer | 5197441 | 2880 days ago | 0.01155856 ETH | ||||
| Transfer | 5197428 | 2880 days ago | 0.00077623 ETH | ||||
| Transfer | 5197428 | 2880 days ago | 0.00019405 ETH | ||||
| Transfer | 5197428 | 2880 days ago | 0.00291088 ETH | ||||
| Transfer | 5197428 | 2880 days ago | 0.00582177 ETH | ||||
| Transfer | 5197428 | 2880 days ago | 0.01455442 ETH | ||||
| Transfer | 5197420 | 2880 days ago | 0.00014374 ETH | ||||
| Transfer | 5197420 | 2880 days ago | 0.00028749 ETH | ||||
| Transfer | 5197420 | 2880 days ago | 0.0139435 ETH | ||||
| Transfer | 5197407 | 2880 days ago | 0.00111331 ETH | ||||
| Transfer | 5197407 | 2880 days ago | 0.00027832 ETH | ||||
| Transfer | 5197407 | 2880 days ago | 0.00417494 ETH | ||||
| Transfer | 5197407 | 2880 days ago | 0.00834989 ETH | ||||
| Transfer | 5197407 | 2880 days ago | 0.02087474 ETH | ||||
| Transfer | 5197296 | 2880 days ago | 0.00005185 ETH | ||||
| Transfer | 5197296 | 2880 days ago | 0.00001296 ETH | ||||
| Transfer | 5197296 | 2880 days ago | 0.00019445 ETH | ||||
| Transfer | 5197296 | 2880 days ago | 0.0003889 ETH | ||||
| Transfer | 5197296 | 2880 days ago | 0.00097225 ETH | ||||
| Transfer | 5197291 | 2880 days ago | 0.00000478 ETH | ||||
| Transfer | 5197291 | 2880 days ago | 0.00000956 ETH | ||||
| Transfer | 5197291 | 2880 days ago | 0.00046405 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EtherIslands
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-03-04
*/
pragma solidity ^0.4.19;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
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;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
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;
}
}
/**
* @title ERC721 interface
* @dev see https://github.com/ethereum/eips/issues/721
*/
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 EtherIslands is Ownable, ERC721 {
using SafeMath for uint256;
/*** EVENTS ***/
event NewIsland(uint256 tokenId, bytes32 name, address owner);
event IslandSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, bytes32 name);
event Transfer(address from, address to, uint256 tokenId);
event DividendsPaid(address to, uint256 amount, bytes32 divType);
event ShipsBought(uint256 tokenId, address owner);
event IslandAttacked(uint256 attackerId, uint256 targetId);
event TreasuryWithdrawn(uint256 tokenId);
/*** STRUCTS ***/
struct Island {
bytes32 name;
address owner;
uint256 price;
uint256 treasury;
uint256 treasury_next_withdrawal_block;
uint256 previous_price;
uint256 attack_ships_count;
uint256 defense_ships_count;
uint256 transactions_count;
address approve_transfer_to;
address[2] previous_owners;
}
struct IslandBattleStats {
uint256 attacks_won;
uint256 attacks_lost;
uint256 defenses_won;
uint256 defenses_lost;
uint256 treasury_stolen;
uint256 treasury_lost;
uint256 attack_cooldown;
uint256 defense_cooldown;
}
/*** CONSTANTS ***/
string public constant NAME = "EtherIslands";
string public constant SYMBOL = "EIS";
bool public maintenance = true;
uint256 islands_count;
uint256 shipPrice = 0.01 ether;
uint256 withdrawalBlocksCooldown = 100;
address m_address = 0xd17e2bFE196470A9fefb567e8f5992214EB42F24;
mapping(address => uint256) private ownerCount;
mapping(uint256 => Island) private islands;
mapping(uint256 => IslandBattleStats) private islandBattleStats;
/*** DEFAULT METHODS ***/
function symbol() public pure returns (string) {return SYMBOL;}
function name() public pure returns (string) {return NAME;}
function implementsERC721() public pure returns (bool) {return true;}
function EtherIslands() public {
_create_island("Santorini", msg.sender, 0.001 ether, 0, 0, 0);
_create_island("Seychelles", msg.sender, 0.001 ether, 0, 0, 0);
_create_island("Palawan", msg.sender, 0.001 ether, 0, 0, 0);
_create_island("The Cook Islands", msg.sender, 0.001 ether, 0, 0, 0);
_create_island("Bora Bora", msg.sender, 0.001 ether, 0, 0, 0);
_create_island("Maldives", msg.sender, 0.001 ether, 0, 0, 0);
}
/** PUBLIC METHODS **/
function createIsland(bytes32 _name, uint256 _price, address _owner, uint256 _attack_ships_count, uint256 _defense_ships_count) public onlyOwner {
require(msg.sender != address(0));
_create_island(_name, _owner, _price, 0, _attack_ships_count, _defense_ships_count);
}
function attackIsland(uint256 _attacker_id, uint256 _target_id) public payable {
require(maintenance == false);
Island storage attackerIsland = islands[_attacker_id];
IslandBattleStats storage attackerIslandBattleStats = islandBattleStats[_attacker_id];
Island storage defenderIsland = islands[_target_id];
IslandBattleStats storage defenderIslandBattleStats = islandBattleStats[_target_id];
require(attackerIsland.owner == msg.sender);
require(attackerIsland.owner != defenderIsland.owner);
require(msg.sender != address(0));
require(msg.value == 0);
require(block.number >= attackerIslandBattleStats.attack_cooldown);
require(block.number >= defenderIslandBattleStats.defense_cooldown);
require(attackerIsland.attack_ships_count > 0); // attacker must have at least 1 attack ship
require(attackerIsland.attack_ships_count > defenderIsland.defense_ships_count);
uint256 goods_stolen = SafeMath.mul(SafeMath.div(defenderIsland.treasury, 100), 75);
defenderIsland.treasury = SafeMath.sub(defenderIsland.treasury, goods_stolen);
attackerIslandBattleStats.attacks_won++;
attackerIslandBattleStats.treasury_stolen = SafeMath.add(attackerIslandBattleStats.treasury_stolen, goods_stolen);
defenderIslandBattleStats.defenses_lost++;
defenderIslandBattleStats.treasury_lost = SafeMath.add(defenderIslandBattleStats.treasury_lost, goods_stolen);
uint256 cooldown_block = block.number + 20;
attackerIslandBattleStats.attack_cooldown = cooldown_block;
defenderIslandBattleStats.defense_cooldown = cooldown_block;
uint256 goods_to_treasury = SafeMath.mul(SafeMath.div(goods_stolen, 100), 75);
attackerIsland.treasury = SafeMath.add(attackerIsland.treasury, goods_to_treasury);
// 2% of attacker army and 10% of defender army is destroyed
attackerIsland.attack_ships_count = SafeMath.sub(attackerIsland.attack_ships_count, SafeMath.mul(SafeMath.div(attackerIsland.attack_ships_count, 100), 2));
defenderIsland.defense_ships_count = SafeMath.sub(defenderIsland.defense_ships_count, SafeMath.mul(SafeMath.div(defenderIsland.defense_ships_count, 100), 10));
// Dividends
uint256 goods_for_current_owner = SafeMath.mul(SafeMath.div(goods_stolen, 100), 15);
uint256 goods_for_previous_owner_1 = SafeMath.mul(SafeMath.div(goods_stolen, 100), 6);
uint256 goods_for_previous_owner_2 = SafeMath.mul(SafeMath.div(goods_stolen, 100), 3);
uint256 goods_for_dev = SafeMath.mul(SafeMath.div(goods_stolen, 100), 1);
attackerIsland.owner.transfer(goods_for_current_owner);
attackerIsland.previous_owners[0].transfer(goods_for_previous_owner_1);
attackerIsland.previous_owners[1].transfer(goods_for_previous_owner_2);
//Split dev fee
m_address.transfer(SafeMath.mul(SafeMath.div(goods_for_dev, 100), 20));
owner.transfer(SafeMath.mul(SafeMath.div(goods_for_dev, 100), 80));
IslandAttacked(_attacker_id, _target_id);
}
function buyShips(uint256 _island_id, uint256 _ships_to_buy, bool _is_attack_ships) public payable {
require(maintenance == false);
Island storage island = islands[_island_id];
uint256 totalPrice = SafeMath.mul(_ships_to_buy, shipPrice);
require(island.owner == msg.sender);
require(msg.sender != address(0));
require(msg.value >= totalPrice);
if (_is_attack_ships) {
island.attack_ships_count = SafeMath.add(island.attack_ships_count, _ships_to_buy);
} else {
island.defense_ships_count = SafeMath.add(island.defense_ships_count, _ships_to_buy);
}
// Dividends
uint256 treasury_div = SafeMath.mul(SafeMath.div(totalPrice, 100), 80);
uint256 dev_div = SafeMath.mul(SafeMath.div(totalPrice, 100), 17);
uint256 previous_owner_div = SafeMath.mul(SafeMath.div(totalPrice, 100), 2);
uint256 previous_owner2_div = SafeMath.mul(SafeMath.div(totalPrice, 100), 1);
island.previous_owners[0].transfer(previous_owner_div);
//divs for 1st previous owner
island.previous_owners[1].transfer(previous_owner2_div);
//divs for 2nd previous owner
island.treasury = SafeMath.add(treasury_div, island.treasury);
// divs for treasury
//Split dev fee
uint256 m_fee = SafeMath.mul(SafeMath.div(dev_div, 100), 20);
uint256 d_fee = SafeMath.mul(SafeMath.div(dev_div, 100), 80);
m_address.transfer(m_fee);
owner.transfer(d_fee);
DividendsPaid(island.previous_owners[0], previous_owner_div, "buyShipPreviousOwner");
DividendsPaid(island.previous_owners[1], previous_owner2_div, "buyShipPreviousOwner2");
ShipsBought(_island_id, island.owner);
}
function withdrawTreasury(uint256 _island_id) public payable {
require(maintenance == false);
Island storage island = islands[_island_id];
require(island.owner == msg.sender);
require(msg.sender != address(0));
require(island.treasury > 0);
require(block.number >= island.treasury_next_withdrawal_block);
uint256 treasury_to_withdraw = SafeMath.mul(SafeMath.div(island.treasury, 100), 10);
uint256 treasury_for_previous_owner_1 = SafeMath.mul(SafeMath.div(treasury_to_withdraw, 100), 2);
uint256 treasury_for_previous_owner_2 = SafeMath.mul(SafeMath.div(treasury_to_withdraw, 100), 1);
uint256 treasury_for_previous_owners = SafeMath.add(treasury_for_previous_owner_2, treasury_for_previous_owner_1);
uint256 treasury_for_current_owner = SafeMath.sub(treasury_to_withdraw, treasury_for_previous_owners);
island.owner.transfer(treasury_for_current_owner);
island.previous_owners[0].transfer(treasury_for_previous_owner_1);
island.previous_owners[1].transfer(treasury_for_previous_owner_2);
island.treasury = SafeMath.sub(island.treasury, treasury_to_withdraw);
island.treasury_next_withdrawal_block = block.number + withdrawalBlocksCooldown;
//setting cooldown for next withdrawal
DividendsPaid(island.previous_owners[0], treasury_for_previous_owner_1, "withdrawalPreviousOwner");
DividendsPaid(island.previous_owners[1], treasury_for_previous_owner_2, "withdrawalPreviousOwner2");
DividendsPaid(island.owner, treasury_for_current_owner, "withdrawalOwner");
TreasuryWithdrawn(_island_id);
}
function purchase(uint256 _island_id) public payable {
require(maintenance == false);
Island storage island = islands[_island_id];
require(island.owner != msg.sender);
require(msg.sender != address(0));
require(msg.value >= island.price);
uint256 excess = SafeMath.sub(msg.value, island.price);
if (island.previous_price > 0) {
uint256 owners_cut = SafeMath.mul(SafeMath.div(island.price, 160), 130);
uint256 treasury_cut = SafeMath.mul(SafeMath.div(island.price, 160), 18);
uint256 dev_fee = SafeMath.mul(SafeMath.div(island.price, 160), 7);
uint256 previous_owner_fee = SafeMath.mul(SafeMath.div(island.price, 160), 3);
uint256 previous_owner_fee2 = SafeMath.mul(SafeMath.div(island.price, 160), 2);
if (island.owner != address(this)) {
island.owner.transfer(owners_cut);
//divs for current island owner
}
island.previous_owners[0].transfer(previous_owner_fee);
//divs for 1st previous owner
island.previous_owners[1].transfer(previous_owner_fee2);
//divs for 2nd previous owner
island.treasury = SafeMath.add(treasury_cut, island.treasury);
// divs for treasury
//Split dev fee
uint256 m_fee = SafeMath.mul(SafeMath.div(dev_fee, 100), 20);
uint256 d_fee = SafeMath.mul(SafeMath.div(dev_fee, 100), 80);
m_address.transfer(m_fee);
owner.transfer(d_fee);
DividendsPaid(island.previous_owners[0], previous_owner_fee, "previousOwner");
DividendsPaid(island.previous_owners[1], previous_owner_fee2, "previousOwner2");
DividendsPaid(island.owner, owners_cut, "owner");
DividendsPaid(owner, dev_fee, "dev");
} else {
island.owner.transfer(msg.value);
}
island.previous_price = island.price;
island.treasury_next_withdrawal_block = block.number + withdrawalBlocksCooldown;
address _old_owner = island.owner;
island.price = SafeMath.mul(SafeMath.div(island.price, 100), 160);
//Change owners
island.previous_owners[1] = island.previous_owners[0];
island.previous_owners[0] = island.owner;
island.owner = msg.sender;
island.transactions_count++;
ownerCount[_old_owner] -= 1;
ownerCount[island.owner] += 1;
Transfer(_old_owner, island.owner, _island_id);
IslandSold(_island_id, island.previous_price, island.price, _old_owner, island.owner, island.name);
msg.sender.transfer(excess);
//returning excess
}
function onMaintenance() public onlyOwner {
require(msg.sender != address(0));
maintenance = true;
}
function offMaintenance() public onlyOwner {
require(msg.sender != address(0));
maintenance = false;
}
function totalSupply() public view returns (uint256 total) {
return islands_count;
}
function balanceOf(address _owner) public view returns (uint256 balance) {
return ownerCount[_owner];
}
function priceOf(uint256 _island_id) public view returns (uint256 price) {
return islands[_island_id].price;
}
function getIslandBattleStats(uint256 _island_id) public view returns (
uint256 id,
uint256 attacks_won,
uint256 attacks_lost,
uint256 defenses_won,
uint256 defenses_lost,
uint256 treasury_stolen,
uint256 treasury_lost,
uint256 attack_cooldown,
uint256 defense_cooldown
) {
id = _island_id;
attacks_won = islandBattleStats[_island_id].attacks_won;
attacks_lost = islandBattleStats[_island_id].attacks_lost;
defenses_won = islandBattleStats[_island_id].defenses_won;
defenses_lost = islandBattleStats[_island_id].defenses_lost;
treasury_stolen = islandBattleStats[_island_id].treasury_stolen;
treasury_lost = islandBattleStats[_island_id].treasury_lost;
attack_cooldown = islandBattleStats[_island_id].attack_cooldown;
defense_cooldown = islandBattleStats[_island_id].defense_cooldown;
}
function getIsland(uint256 _island_id) public view returns (
uint256 id,
bytes32 island_name,
address owner,
uint256 price,
uint256 treasury,
uint256 treasury_next_withdrawal_block,
uint256 previous_price,
uint256 attack_ships_count,
uint256 defense_ships_count,
uint256 transactions_count
) {
id = _island_id;
island_name = islands[_island_id].name;
owner = islands[_island_id].owner;
price = islands[_island_id].price;
treasury = islands[_island_id].treasury;
treasury_next_withdrawal_block = islands[_island_id].treasury_next_withdrawal_block;
previous_price = islands[_island_id].previous_price;
attack_ships_count = islands[_island_id].attack_ships_count;
defense_ships_count = islands[_island_id].defense_ships_count;
transactions_count = islands[_island_id].transactions_count;
}
function getIslands() public view returns (uint256[], address[], uint256[], uint256[], uint256[], uint256[], uint256[]) {
uint256[] memory ids = new uint256[](islands_count);
address[] memory owners = new address[](islands_count);
uint256[] memory prices = new uint256[](islands_count);
uint256[] memory treasuries = new uint256[](islands_count);
uint256[] memory attack_ships_counts = new uint256[](islands_count);
uint256[] memory defense_ships_counts = new uint256[](islands_count);
uint256[] memory transactions_count = new uint256[](islands_count);
for (uint256 _id = 0; _id < islands_count; _id++) {
ids[_id] = _id;
owners[_id] = islands[_id].owner;
prices[_id] = islands[_id].price;
treasuries[_id] = islands[_id].treasury;
attack_ships_counts[_id] = islands[_id].attack_ships_count;
defense_ships_counts[_id] = islands[_id].defense_ships_count;
transactions_count[_id] = islands[_id].transactions_count;
}
return (ids, owners, prices, treasuries, attack_ships_counts, defense_ships_counts, transactions_count);
}
/** PRIVATE METHODS **/
function _create_island(bytes32 _name, address _owner, uint256 _price, uint256 _previous_price, uint256 _attack_ships_count, uint256 _defense_ships_count) private {
islands[islands_count] = Island({
name : _name,
owner : _owner,
price : _price,
treasury : 0,
treasury_next_withdrawal_block : 0,
previous_price : _previous_price,
attack_ships_count : _attack_ships_count,
defense_ships_count : _defense_ships_count,
transactions_count : 0,
approve_transfer_to : address(0),
previous_owners : [_owner, _owner]
});
islandBattleStats[islands_count] = IslandBattleStats({
attacks_won : 0,
attacks_lost : 0,
defenses_won : 0,
defenses_lost : 0,
treasury_stolen : 0,
treasury_lost : 0,
attack_cooldown : 0,
defense_cooldown : 0
});
NewIsland(islands_count, _name, _owner);
Transfer(address(this), _owner, islands_count);
islands_count++;
}
function _transfer(address _from, address _to, uint256 _island_id) private {
islands[_island_id].owner = _to;
islands[_island_id].approve_transfer_to = address(0);
ownerCount[_from] -= 1;
ownerCount[_to] += 1;
Transfer(_from, _to, _island_id);
}
/*** ERC-721 compliance. ***/
function approve(address _to, uint256 _island_id) public {
require(msg.sender == islands[_island_id].owner);
islands[_island_id].approve_transfer_to = _to;
Approval(msg.sender, _to, _island_id);
}
function ownerOf(uint256 _island_id) public view returns (address owner){
owner = islands[_island_id].owner;
require(owner != address(0));
}
function takeOwnership(uint256 _island_id) public {
address oldOwner = islands[_island_id].owner;
require(msg.sender != address(0));
require(islands[_island_id].approve_transfer_to == msg.sender);
_transfer(oldOwner, msg.sender, _island_id);
}
function transfer(address _to, uint256 _island_id) public {
require(msg.sender != address(0));
require(msg.sender == islands[_island_id].owner);
_transfer(msg.sender, _to, _island_id);
}
function transferFrom(address _from, address _to, uint256 _island_id) public {
require(_from == islands[_island_id].owner);
require(islands[_island_id].approve_transfer_to == _to);
require(_to != address(0));
_transfer(_from, _to, _island_id);
}
function upgradeContract(address _newContract) public onlyOwner {
_newContract.transfer(this.balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_island_id","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"withdrawTreasury","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_island_id","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_island_id","type":"uint256"},{"name":"_ships_to_buy","type":"uint256"},{"name":"_is_attack_ships","type":"bool"}],"name":"buyShips","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maintenance","outputs":[{"name":"","type":"bool"}],"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":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"getIsland","outputs":[{"name":"id","type":"uint256"},{"name":"island_name","type":"bytes32"},{"name":"owner","type":"address"},{"name":"price","type":"uint256"},{"name":"treasury","type":"uint256"},{"name":"treasury_next_withdrawal_block","type":"uint256"},{"name":"previous_price","type":"uint256"},{"name":"attack_ships_count","type":"uint256"},{"name":"defense_ships_count","type":"uint256"},{"name":"transactions_count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_attacker_id","type":"uint256"},{"name":"_target_id","type":"uint256"}],"name":"attackIsland","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"onMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_island_id","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"},{"name":"_attack_ships_count","type":"uint256"},{"name":"_defense_ships_count","type":"uint256"}],"name":"createIsland","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"offMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"getIslandBattleStats","outputs":[{"name":"id","type":"uint256"},{"name":"attacks_won","type":"uint256"},{"name":"attacks_lost","type":"uint256"},{"name":"defenses_won","type":"uint256"},{"name":"defenses_lost","type":"uint256"},{"name":"treasury_stolen","type":"uint256"},{"name":"treasury_lost","type":"uint256"},{"name":"attack_cooldown","type":"uint256"},{"name":"defense_cooldown","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getIslands","outputs":[{"name":"","type":"uint256[]"},{"name":"","type":"address[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newContract","type":"address"}],"name":"upgradeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_island_id","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"NewIsland","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"bytes32"}],"name":"IslandSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"divType","type":"bytes32"}],"name":"DividendsPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"owner","type":"address"}],"name":"ShipsBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"attackerId","type":"uint256"},{"indexed":false,"name":"targetId","type":"uint256"}],"name":"IslandAttacked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"TreasuryWithdrawn","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"}]Contract Creation Code
60606040526000805460a060020a60ff02191674010000000000000000000000000000000000000000179055662386f26fc10000600255606460035560048054600160a060020a03191673d17e2bfe196470a9fefb567e8f5992214eb42f2417905534156200006d57600080fd5b60008054600160a060020a03191633600160a060020a038116919091178255620000d3917f53616e746f72696e690000000000000000000000000000000000000000000000919066038d7ea4c68000908080640100000000620002378102620021231704565b620001197f5365796368656c6c6573000000000000000000000000000000000000000000003366038d7ea4c6800060008080640100000000620021236200023782021704565b6200015f7f50616c6177616e000000000000000000000000000000000000000000000000003366038d7ea4c6800060008080640100000000620021236200023782021704565b620001a57f54686520436f6f6b2049736c616e6473000000000000000000000000000000003366038d7ea4c6800060008080640100000000620021236200023782021704565b620001eb7f426f726120426f726100000000000000000000000000000000000000000000003366038d7ea4c6800060008080640100000000620021236200023782021704565b620002317f4d616c64697665730000000000000000000000000000000000000000000000003366038d7ea4c6800060008080640100000000620021236200023782021704565b62000569565b610160604051908101604052808760001916815260200186600160a060020a031681526020018581526020016000815260200160008152602001848152602001838152602001828152602001600081526020016000600160a060020a03168152602001604080519081016040908152600160a060020a038916808352602080840191909152919092526001546000908152600690915220815181556020820151600182018054600160a060020a031916600160a060020a039290921691909117905560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151600982018054600160a060020a031916600160a060020a03929092169190911790556101408201516200038090600a8301906002620004e0565b5090505061010060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250600760006001548152602001908152602001600020600082015181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050507f6dbe83e0361d1759b05d67925ee5ed7d3c73361da16f0abb8aaebf121c7fd34560015487876040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a17fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3086600154604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050600180548101905550505050565b82600281019282156200052d579160200282015b828111156200052d5782518254600160a060020a031916600160a060020a039190911617825560209290920191600190910190620004f4565b506200053b9291506200053f565b5090565b6200056691905b808211156200053b578054600160a060020a031916815560010162000546565b90565b6124a680620005796000396000f30060606040526004361061015e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610163578063095ea7b3146101ed5780631051db341461021157806311f1fc991461023857806318160ddd1461024357806323b872dd1461026857806361b98cb3146102905780636352211e146102a35780636c376cc5146102d557806370a08231146102e85780638da5cb5b14610307578063913158f71461031a57806394b6638614610394578063952868b5146103a257806395d89b41146103b5578063a3f4df7e146103c8578063a9059cbb146103db578063b2e6ceeb146103fd578063b5dd20e914610413578063b9186d7d1461043e578063d5ea36f914610454578063dc3134ae14610467578063deb081df146104ca578063eb2c0223146106cf578063efef39a1146106ee578063f2fde38b146106f9578063f76f8d7814610718575b600080fd5b341561016e57600080fd5b61017661072b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101b257808201518382015260200161019a565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101f857600080fd5b61020f600160a060020a036004351660243561076d565b005b341561021c57600080fd5b610224610804565b604051901515815260200160405180910390f35b61020f600435610809565b341561024e57600080fd5b610256610b2b565b60405190815260200160405180910390f35b341561027357600080fd5b61020f600160a060020a0360043581169060243516604435610b31565b61020f6004356024356044351515610ba8565b34156102ae57600080fd5b6102b9600435610eef565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b610224610f1b565b34156102f357600080fd5b610256600160a060020a0360043516610f2b565b341561031257600080fd5b6102b9610f46565b341561032557600080fd5b610330600435610f55565b604051998a5260208a0198909852600160a060020a039096166040808a01919091526060890195909552608088019390935260a087019190915260c086015260e0850152610100840191909152610120830191909152610140909101905180910390f35b61020f600435602435610fab565b34156103ad57600080fd5b61020f611390565b34156103c057600080fd5b6101766113e6565b34156103d357600080fd5b610176611427565b34156103e657600080fd5b61020f600160a060020a036004351660243561145e565b341561040857600080fd5b61020f6004356114ac565b341561041e57600080fd5b61020f600435602435600160a060020a036044351660643560843561150c565b341561044957600080fd5b610256600435611552565b341561045f57600080fd5b61020f611567565b341561047257600080fd5b61047d6004356115b7565b60405198895260208901979097526040808901969096526060880194909452608087019290925260a086015260c085015260e0840152610100830191909152610120909101905180910390f35b34156104d557600080fd5b6104dd6115fc565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b8381101561053557808201518382015260200161051d565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b8381101561057457808201518382015260200161055c565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b838110156105b357808201518382015260200161059b565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b838110156105f25780820151838201526020016105da565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b83811015610631578082015183820152602001610619565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b83811015610670578082015183820152602001610658565b50505050905001888103825289818151815260200191508051906020019060200280838360005b838110156106af578082015183820152602001610697565b505050509050019e50505050505050505050505050505060405180910390f35b34156106da57600080fd5b61020f600160a060020a03600435166118c0565b61020f60043561191b565b341561070457600080fd5b61020f600160a060020a0360043516611f36565b341561072357600080fd5b610176611fc4565b6107336123ca565b60408051908101604052600c81527f457468657249736c616e64730000000000000000000000000000000000000000602082015290505b90565b60008181526006602052604090206001015433600160a060020a0390811691161461079757600080fd5b600081815260066020526040908190206009018054600160a060020a031916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600190565b600080548190819081908190819060a060020a900460ff161561082b57600080fd5b6000878152600660205260409020600181015490965033600160a060020a0390811691161461085957600080fd5b33600160a060020a0316151561086e57600080fd5b60038601546000901161088057600080fd5b600486015443101561089157600080fd5b6108aa6108a387600301546064611ffb565b600a612017565b94506108c16108ba866064611ffb565b6002612017565b93506108d86108d1866064611ffb565b6001612017565b92506108e48385612049565b91506108f08583612058565b6001870154909150600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561092857600080fd5b600a860154600160a060020a03166108fc85150285604051600060405180830381858888f19350505050151561095d57600080fd5b600b860154600160a060020a03166108fc84150284604051600060405180830381858888f19350505050151561099257600080fd5b6109a0866003015486612058565b6003878101919091555443016004870155600a86015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f7769746864726177616c50726576696f75734f776e65720000000000000000006040808301919091526060909101905180910390a1600b86015460008051602061245b83398151915290600160a060020a031684604051600160a060020a03909216825260208201527f7769746864726177616c50726576696f75734f776e65723200000000000000006040808301919091526060909101905180910390a1600186015460008051602061245b83398151915290600160a060020a031682604051600160a060020a03909216825260208201527f7769746864726177616c4f776e657200000000000000000000000000000000006040808301919091526060909101905180910390a17fdcfb70a6f0f5eab41644ac0cde62fe5f51ce0bb0a53b88ea72c4b2b78ad887bc8760405190815260200160405180910390a150505050505050565b60015490565b600081815260066020526040902060010154600160a060020a03848116911614610b5a57600080fd5b600081815260066020526040902060090154600160a060020a03838116911614610b8357600080fd5b600160a060020a0382161515610b9857600080fd5b610ba383838361206a565b505050565b60008054819081908190819081908190819060a060020a900460ff1615610bce57600080fd5b60008b8152600660205260409020600254909850610bed908b90612017565b600189015490975033600160a060020a03908116911614610c0d57600080fd5b33600160a060020a03161515610c2257600080fd5b3487901015610c3057600080fd5b8815610c4e57610c4488600601548b612049565b6006890155610c62565b610c5c88600701548b612049565b60078901555b610c77610c70886064611ffb565b6050612017565b9550610c8e610c87886064611ffb565b6011612017565b9450610c9e6108ba886064611ffb565b9350610cae6108d1886064611ffb565b600a890154909350600160a060020a03166108fc85150285604051600060405180830381858888f193505050501515610ce657600080fd5b600b880154600160a060020a03166108fc84150284604051600060405180830381858888f193505050501515610d1b57600080fd5b610d29868960030154612049565b6003890155610d43610d3c866064611ffb565b6014612017565b9150610d53610c70866064611ffb565b600454909150600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515610d8957600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610dbc57600080fd5b600a88015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f6275795368697050726576696f75734f776e65720000000000000000000000006040808301919091526060909101905180910390a1600b88015460008051602061245b83398151915290600160a060020a031684604051600160a060020a03909216825260208201527f6275795368697050726576696f75734f776e65723200000000000000000000006040808301919091526060909101905180910390a160018801547ff93b010291992b1f39b774e39ebd25679d89423a837516acc89864839e693579908c90600160a060020a0316604051918252600160a060020a031660208201526040908101905180910390a15050505050505050505050565b600081815260066020526040902060010154600160a060020a0316801515610f1657600080fd5b919050565b60005460a060020a900460ff1681565b600160a060020a031660009081526005602052604090205490565b600054600160a060020a031681565b600081815260066020819052604090912080546001820154600283015460038401546004850154600586015496860154600787015460089097015498999598600160a060020a0390951697939692959194909291565b60008060008060008060008060008060008060149054906101000a900460ff16151560001515141515610fdd57600080fd5b600660008e81526020019081526020016000209a50600760008e81526020019081526020016000209950600660008d81526020019081526020016000209850600760008d8152602001908152602001600020975033600160a060020a03168b60010160009054906101000a9004600160a060020a0316600160a060020a031614151561106857600080fd5b6001808a0154908c0154600160a060020a039081169116141561108a57600080fd5b33600160a060020a0316151561109f57600080fd5b34156110aa57600080fd5b60068a01544310156110bb57600080fd5b60078801544310156110cc57600080fd5b60068b0154600090116110de57600080fd5b600789015460068c0154116110f257600080fd5b61110b6111048a600301546064611ffb565b604b612017565b965061111b896003015488612058565b60038a015589546001018a5560048a01546111369088612049565b60048b0155600388018054600101905560058801546111559088612049565b60058901556014430160068b0181905560078901819055955061117c611104886064611ffb565b945061118c8b6003015486612049565b60038c015560068b01546111ad906111a86108ba826064611ffb565b612058565b60068c015560078901546111c9906111a86108a3826064611ffb565b60078a01556111e36111dc886064611ffb565b600f612017565b93506111fa6111f3886064611ffb565b6006612017565b925061121161120a886064611ffb565b6003612017565b91506112216108d1886064611ffb565b60018c0154909150600160a060020a031684156108fc0285604051600060405180830381858888f19350505050151561125957600080fd5b600a8b0154600160a060020a03166108fc84150284604051600060405180830381858888f19350505050151561128e57600080fd5b600b8b0154600160a060020a03166108fc83150283604051600060405180830381858888f1935050505015156112c357600080fd5b600454600160a060020a03166108fc6112e0610d3c846064611ffb565b9081150290604051600060405180830381858888f19350505050151561130557600080fd5b600054600160a060020a03166108fc611322610c70846064611ffb565b9081150290604051600060405180830381858888f19350505050151561134757600080fd5b7fcb506c37cfbb0a3ca5ece5771a78558cb9099b1dc7bf09e7f3e17845fb6f40268d8d60405191825260208201526040908101905180910390a150505050505050505050505050565b60005433600160a060020a039081169116146113ab57600080fd5b33600160a060020a031615156113c057600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b6113ee6123ca565b60408051908101604052600381527f45495300000000000000000000000000000000000000000000000000000000006020820152905090565b60408051908101604052600c81527f457468657249736c616e64730000000000000000000000000000000000000000602082015281565b33600160a060020a0316151561147357600080fd5b60008181526006602052604090206001015433600160a060020a0390811691161461149d57600080fd5b6114a833838361206a565b5050565b600081815260066020526040902060010154600160a060020a0390811690331615156114d757600080fd5b60008281526006602052604090206009015433600160a060020a0390811691161461150157600080fd5b6114a881338461206a565b60005433600160a060020a0390811691161461152757600080fd5b33600160a060020a0316151561153c57600080fd5b61154b85848660008686612123565b5050505050565b60009081526006602052604090206002015490565b60005433600160a060020a0390811691161461158257600080fd5b33600160a060020a0316151561159757600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b60008181526007602081905260409091208054600182015460028301546003840154600485015460058601546006870154969097015497989497939692959194909390565b6116046123ca565b61160c6123ca565b6116146123ca565b61161c6123ca565b6116246123ca565b61162c6123ca565b6116346123ca565b61163c6123ca565b6116446123ca565b61164c6123ca565b6116546123ca565b61165c6123ca565b6116646123ca565b61166c6123ca565b600060015460405180591061167e5750595b908082528060200260200182016040525097506001546040518059106116a15750595b908082528060200260200182016040525096506001546040518059106116c45750595b908082528060200260200182016040525095506001546040518059106116e75750595b9080825280602002602001820160405250945060015460405180591061170a5750595b9080825280602002602001820160405250935060015460405180591061172d5750595b908082528060200260200182016040525092506001546040518059106117505750595b90808252806020026020018201604052509150600090505b6001548110156118a9578088828151811061177f57fe5b6020908102909101810191909152600082815260069091526040902060010154600160a060020a03168782815181106117b457fe5b600160a060020a0390921660209283029091018201526000828152600690915260409020600201548682815181106117e857fe5b602090810290910181019190915260008281526006909152604090206003015485828151811061181457fe5b6020908102909101810191909152600082815260069182905260409020015484828151811061183f57fe5b602090810290910181019190915260008281526006909152604090206007015483828151811061186b57fe5b602090810290910181019190915260008281526006909152604090206008015482828151811061189757fe5b60209081029091010152600101611768565b50959d949c50929a50909850965094509092509050565b60005433600160a060020a039081169116146118db57600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561191857600080fd5b50565b6000805481908190819081908190819081908190819060a060020a900460ff161561194557600080fd5b60008b81526006602052604090206001810154909a5033600160a060020a039081169116141561197457600080fd5b33600160a060020a0316151561198957600080fd5b60028a015434101561199a57600080fd5b6119a8348b60020154612058565b985060008a600501541115611d2d576119d06119c98b6002015460a0611ffb565b6082612017565b97506119eb6119e48b6002015460a0611ffb565b6012612017565b9650611a066119ff8b6002015460a0611ffb565b6007612017565b9550611a1a61120a8b6002015460a0611ffb565b9450611a2e6108ba8b6002015460a0611ffb565b60018b015490945030600160a060020a03908116911614611a7e5760018a0154600160a060020a031688156108fc0289604051600060405180830381858888f193505050501515611a7e57600080fd5b600a8a0154600160a060020a03166108fc86150286604051600060405180830381858888f193505050501515611ab357600080fd5b600b8a0154600160a060020a03166108fc85150285604051600060405180830381858888f193505050501515611ae857600080fd5b611af6878b60030154612049565b60038b0155611b09610d3c876064611ffb565b9250611b19610c70876064611ffb565b600454909250600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515611b4f57600080fd5b600054600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515611b8257600080fd5b600a8a015460008051602061245b83398151915290600160a060020a031686604051600160a060020a03909216825260208201527f70726576696f75734f776e6572000000000000000000000000000000000000006040808301919091526060909101905180910390a1600b8a015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f70726576696f75734f776e6572320000000000000000000000000000000000006040808301919091526060909101905180910390a160018a015460008051602061245b83398151915290600160a060020a031689604051600160a060020a03909216825260208201527f6f776e65720000000000000000000000000000000000000000000000000000006040808301919091526060909101905180910390a160005460008051602061245b83398151915290600160a060020a031687604051600160a060020a03909216825260208201527f64657600000000000000000000000000000000000000000000000000000000006040808301919091526060909101905180910390a1611d63565b60018a0154600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515611d6357600080fd5b50600289015460058a01819055600354430160048b015560018a0154600160a060020a031690611d9f90611d98906064611ffb565b60a0612017565b60028b0155600a8a018054600b8c018054600160a060020a03808416600160a060020a0319928316179092556001808f01805480851695841695909517909555921633821617835560088d01805483019055838116600090815260056020526040808220805460001901905584548316825290819020805490930190925591547fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9284929116908e9051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a160058a015460028b015460018c01548c547fdcab0704e5b2c212cba558657bf325bc1b823c2a4e89c77e93926533ec56b5f9938f93909290918691600160a060020a0316906040519586526020860194909452604080860193909352600160a060020a03918216606086015216608084015260a083019190915260c0909101905180910390a1600160a060020a03331689156108fc028a604051600060405180830381858888f193505050501515611f2957600080fd5b5050505050505050505050565b60005433600160a060020a03908116911614611f5157600080fd5b600160a060020a0381161515611f6657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60408051908101604052600381527f4549530000000000000000000000000000000000000000000000000000000000602082015281565b600080828481151561200957fe5b0490508091505b5092915050565b60008083151561202a5760009150612010565b5082820282848281151561203a57fe5b041461204257fe5b9392505050565b60008282018381101561204257fe5b60008282111561206457fe5b50900390565b600081815260066020908152604080832060018082018054600160a060020a03808a16600160a060020a03199283168117909355600990940180549091169055918816855260059093528184208054600019019055835291829020805490910190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084908490849051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b610160604051908101604052808760001916815260200186600160a060020a031681526020018581526020016000815260200160008152602001848152602001838152602001828152602001600081526020016000600160a060020a03168152602001604080519081016040908152600160a060020a038916808352602080840191909152919092526001546000908152600690915220815181556020820151600182018054600160a060020a031916600160a060020a039290921691909117905560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151600982018054600160a060020a031916600160a060020a039290921691909117905561014082015161226a90600a83019060026123dc565b5090505061010060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250600760006001548152602001908152602001600020600082015181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050507f6dbe83e0361d1759b05d67925ee5ed7d3c73361da16f0abb8aaebf121c7fd34560015487876040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a17fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3086600154604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050600180548101905550505050565b60206040519081016040526000815290565b8260028101928215612426579160200282015b828111156124265782518254600160a060020a031916600160a060020a0391909116178255602092909201916001909101906123ef565b50612432929150612436565b5090565b61076a91905b80821115612432578054600160a060020a031916815560010161243c5600643236658eb2709c16f0857e1a7a4fffee3c798264461cc3462be70c4fa9d8cda165627a7a7230582043d2474d71b265c422cea6b7fdf8ef08730f9426bf200f400e3fbb18a9a784840029
Deployed Bytecode
0x60606040526004361061015e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610163578063095ea7b3146101ed5780631051db341461021157806311f1fc991461023857806318160ddd1461024357806323b872dd1461026857806361b98cb3146102905780636352211e146102a35780636c376cc5146102d557806370a08231146102e85780638da5cb5b14610307578063913158f71461031a57806394b6638614610394578063952868b5146103a257806395d89b41146103b5578063a3f4df7e146103c8578063a9059cbb146103db578063b2e6ceeb146103fd578063b5dd20e914610413578063b9186d7d1461043e578063d5ea36f914610454578063dc3134ae14610467578063deb081df146104ca578063eb2c0223146106cf578063efef39a1146106ee578063f2fde38b146106f9578063f76f8d7814610718575b600080fd5b341561016e57600080fd5b61017661072b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101b257808201518382015260200161019a565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101f857600080fd5b61020f600160a060020a036004351660243561076d565b005b341561021c57600080fd5b610224610804565b604051901515815260200160405180910390f35b61020f600435610809565b341561024e57600080fd5b610256610b2b565b60405190815260200160405180910390f35b341561027357600080fd5b61020f600160a060020a0360043581169060243516604435610b31565b61020f6004356024356044351515610ba8565b34156102ae57600080fd5b6102b9600435610eef565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b610224610f1b565b34156102f357600080fd5b610256600160a060020a0360043516610f2b565b341561031257600080fd5b6102b9610f46565b341561032557600080fd5b610330600435610f55565b604051998a5260208a0198909852600160a060020a039096166040808a01919091526060890195909552608088019390935260a087019190915260c086015260e0850152610100840191909152610120830191909152610140909101905180910390f35b61020f600435602435610fab565b34156103ad57600080fd5b61020f611390565b34156103c057600080fd5b6101766113e6565b34156103d357600080fd5b610176611427565b34156103e657600080fd5b61020f600160a060020a036004351660243561145e565b341561040857600080fd5b61020f6004356114ac565b341561041e57600080fd5b61020f600435602435600160a060020a036044351660643560843561150c565b341561044957600080fd5b610256600435611552565b341561045f57600080fd5b61020f611567565b341561047257600080fd5b61047d6004356115b7565b60405198895260208901979097526040808901969096526060880194909452608087019290925260a086015260c085015260e0840152610100830191909152610120909101905180910390f35b34156104d557600080fd5b6104dd6115fc565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b8381101561053557808201518382015260200161051d565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b8381101561057457808201518382015260200161055c565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b838110156105b357808201518382015260200161059b565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b838110156105f25780820151838201526020016105da565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b83811015610631578082015183820152602001610619565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b83811015610670578082015183820152602001610658565b50505050905001888103825289818151815260200191508051906020019060200280838360005b838110156106af578082015183820152602001610697565b505050509050019e50505050505050505050505050505060405180910390f35b34156106da57600080fd5b61020f600160a060020a03600435166118c0565b61020f60043561191b565b341561070457600080fd5b61020f600160a060020a0360043516611f36565b341561072357600080fd5b610176611fc4565b6107336123ca565b60408051908101604052600c81527f457468657249736c616e64730000000000000000000000000000000000000000602082015290505b90565b60008181526006602052604090206001015433600160a060020a0390811691161461079757600080fd5b600081815260066020526040908190206009018054600160a060020a031916600160a060020a038581169182179092559133909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600190565b600080548190819081908190819060a060020a900460ff161561082b57600080fd5b6000878152600660205260409020600181015490965033600160a060020a0390811691161461085957600080fd5b33600160a060020a0316151561086e57600080fd5b60038601546000901161088057600080fd5b600486015443101561089157600080fd5b6108aa6108a387600301546064611ffb565b600a612017565b94506108c16108ba866064611ffb565b6002612017565b93506108d86108d1866064611ffb565b6001612017565b92506108e48385612049565b91506108f08583612058565b6001870154909150600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561092857600080fd5b600a860154600160a060020a03166108fc85150285604051600060405180830381858888f19350505050151561095d57600080fd5b600b860154600160a060020a03166108fc84150284604051600060405180830381858888f19350505050151561099257600080fd5b6109a0866003015486612058565b6003878101919091555443016004870155600a86015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f7769746864726177616c50726576696f75734f776e65720000000000000000006040808301919091526060909101905180910390a1600b86015460008051602061245b83398151915290600160a060020a031684604051600160a060020a03909216825260208201527f7769746864726177616c50726576696f75734f776e65723200000000000000006040808301919091526060909101905180910390a1600186015460008051602061245b83398151915290600160a060020a031682604051600160a060020a03909216825260208201527f7769746864726177616c4f776e657200000000000000000000000000000000006040808301919091526060909101905180910390a17fdcfb70a6f0f5eab41644ac0cde62fe5f51ce0bb0a53b88ea72c4b2b78ad887bc8760405190815260200160405180910390a150505050505050565b60015490565b600081815260066020526040902060010154600160a060020a03848116911614610b5a57600080fd5b600081815260066020526040902060090154600160a060020a03838116911614610b8357600080fd5b600160a060020a0382161515610b9857600080fd5b610ba383838361206a565b505050565b60008054819081908190819081908190819060a060020a900460ff1615610bce57600080fd5b60008b8152600660205260409020600254909850610bed908b90612017565b600189015490975033600160a060020a03908116911614610c0d57600080fd5b33600160a060020a03161515610c2257600080fd5b3487901015610c3057600080fd5b8815610c4e57610c4488600601548b612049565b6006890155610c62565b610c5c88600701548b612049565b60078901555b610c77610c70886064611ffb565b6050612017565b9550610c8e610c87886064611ffb565b6011612017565b9450610c9e6108ba886064611ffb565b9350610cae6108d1886064611ffb565b600a890154909350600160a060020a03166108fc85150285604051600060405180830381858888f193505050501515610ce657600080fd5b600b880154600160a060020a03166108fc84150284604051600060405180830381858888f193505050501515610d1b57600080fd5b610d29868960030154612049565b6003890155610d43610d3c866064611ffb565b6014612017565b9150610d53610c70866064611ffb565b600454909150600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515610d8957600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610dbc57600080fd5b600a88015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f6275795368697050726576696f75734f776e65720000000000000000000000006040808301919091526060909101905180910390a1600b88015460008051602061245b83398151915290600160a060020a031684604051600160a060020a03909216825260208201527f6275795368697050726576696f75734f776e65723200000000000000000000006040808301919091526060909101905180910390a160018801547ff93b010291992b1f39b774e39ebd25679d89423a837516acc89864839e693579908c90600160a060020a0316604051918252600160a060020a031660208201526040908101905180910390a15050505050505050505050565b600081815260066020526040902060010154600160a060020a0316801515610f1657600080fd5b919050565b60005460a060020a900460ff1681565b600160a060020a031660009081526005602052604090205490565b600054600160a060020a031681565b600081815260066020819052604090912080546001820154600283015460038401546004850154600586015496860154600787015460089097015498999598600160a060020a0390951697939692959194909291565b60008060008060008060008060008060008060149054906101000a900460ff16151560001515141515610fdd57600080fd5b600660008e81526020019081526020016000209a50600760008e81526020019081526020016000209950600660008d81526020019081526020016000209850600760008d8152602001908152602001600020975033600160a060020a03168b60010160009054906101000a9004600160a060020a0316600160a060020a031614151561106857600080fd5b6001808a0154908c0154600160a060020a039081169116141561108a57600080fd5b33600160a060020a0316151561109f57600080fd5b34156110aa57600080fd5b60068a01544310156110bb57600080fd5b60078801544310156110cc57600080fd5b60068b0154600090116110de57600080fd5b600789015460068c0154116110f257600080fd5b61110b6111048a600301546064611ffb565b604b612017565b965061111b896003015488612058565b60038a015589546001018a5560048a01546111369088612049565b60048b0155600388018054600101905560058801546111559088612049565b60058901556014430160068b0181905560078901819055955061117c611104886064611ffb565b945061118c8b6003015486612049565b60038c015560068b01546111ad906111a86108ba826064611ffb565b612058565b60068c015560078901546111c9906111a86108a3826064611ffb565b60078a01556111e36111dc886064611ffb565b600f612017565b93506111fa6111f3886064611ffb565b6006612017565b925061121161120a886064611ffb565b6003612017565b91506112216108d1886064611ffb565b60018c0154909150600160a060020a031684156108fc0285604051600060405180830381858888f19350505050151561125957600080fd5b600a8b0154600160a060020a03166108fc84150284604051600060405180830381858888f19350505050151561128e57600080fd5b600b8b0154600160a060020a03166108fc83150283604051600060405180830381858888f1935050505015156112c357600080fd5b600454600160a060020a03166108fc6112e0610d3c846064611ffb565b9081150290604051600060405180830381858888f19350505050151561130557600080fd5b600054600160a060020a03166108fc611322610c70846064611ffb565b9081150290604051600060405180830381858888f19350505050151561134757600080fd5b7fcb506c37cfbb0a3ca5ece5771a78558cb9099b1dc7bf09e7f3e17845fb6f40268d8d60405191825260208201526040908101905180910390a150505050505050505050505050565b60005433600160a060020a039081169116146113ab57600080fd5b33600160a060020a031615156113c057600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b6113ee6123ca565b60408051908101604052600381527f45495300000000000000000000000000000000000000000000000000000000006020820152905090565b60408051908101604052600c81527f457468657249736c616e64730000000000000000000000000000000000000000602082015281565b33600160a060020a0316151561147357600080fd5b60008181526006602052604090206001015433600160a060020a0390811691161461149d57600080fd5b6114a833838361206a565b5050565b600081815260066020526040902060010154600160a060020a0390811690331615156114d757600080fd5b60008281526006602052604090206009015433600160a060020a0390811691161461150157600080fd5b6114a881338461206a565b60005433600160a060020a0390811691161461152757600080fd5b33600160a060020a0316151561153c57600080fd5b61154b85848660008686612123565b5050505050565b60009081526006602052604090206002015490565b60005433600160a060020a0390811691161461158257600080fd5b33600160a060020a0316151561159757600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b60008181526007602081905260409091208054600182015460028301546003840154600485015460058601546006870154969097015497989497939692959194909390565b6116046123ca565b61160c6123ca565b6116146123ca565b61161c6123ca565b6116246123ca565b61162c6123ca565b6116346123ca565b61163c6123ca565b6116446123ca565b61164c6123ca565b6116546123ca565b61165c6123ca565b6116646123ca565b61166c6123ca565b600060015460405180591061167e5750595b908082528060200260200182016040525097506001546040518059106116a15750595b908082528060200260200182016040525096506001546040518059106116c45750595b908082528060200260200182016040525095506001546040518059106116e75750595b9080825280602002602001820160405250945060015460405180591061170a5750595b9080825280602002602001820160405250935060015460405180591061172d5750595b908082528060200260200182016040525092506001546040518059106117505750595b90808252806020026020018201604052509150600090505b6001548110156118a9578088828151811061177f57fe5b6020908102909101810191909152600082815260069091526040902060010154600160a060020a03168782815181106117b457fe5b600160a060020a0390921660209283029091018201526000828152600690915260409020600201548682815181106117e857fe5b602090810290910181019190915260008281526006909152604090206003015485828151811061181457fe5b6020908102909101810191909152600082815260069182905260409020015484828151811061183f57fe5b602090810290910181019190915260008281526006909152604090206007015483828151811061186b57fe5b602090810290910181019190915260008281526006909152604090206008015482828151811061189757fe5b60209081029091010152600101611768565b50959d949c50929a50909850965094509092509050565b60005433600160a060020a039081169116146118db57600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561191857600080fd5b50565b6000805481908190819081908190819081908190819060a060020a900460ff161561194557600080fd5b60008b81526006602052604090206001810154909a5033600160a060020a039081169116141561197457600080fd5b33600160a060020a0316151561198957600080fd5b60028a015434101561199a57600080fd5b6119a8348b60020154612058565b985060008a600501541115611d2d576119d06119c98b6002015460a0611ffb565b6082612017565b97506119eb6119e48b6002015460a0611ffb565b6012612017565b9650611a066119ff8b6002015460a0611ffb565b6007612017565b9550611a1a61120a8b6002015460a0611ffb565b9450611a2e6108ba8b6002015460a0611ffb565b60018b015490945030600160a060020a03908116911614611a7e5760018a0154600160a060020a031688156108fc0289604051600060405180830381858888f193505050501515611a7e57600080fd5b600a8a0154600160a060020a03166108fc86150286604051600060405180830381858888f193505050501515611ab357600080fd5b600b8a0154600160a060020a03166108fc85150285604051600060405180830381858888f193505050501515611ae857600080fd5b611af6878b60030154612049565b60038b0155611b09610d3c876064611ffb565b9250611b19610c70876064611ffb565b600454909250600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515611b4f57600080fd5b600054600160a060020a031682156108fc0283604051600060405180830381858888f193505050501515611b8257600080fd5b600a8a015460008051602061245b83398151915290600160a060020a031686604051600160a060020a03909216825260208201527f70726576696f75734f776e6572000000000000000000000000000000000000006040808301919091526060909101905180910390a1600b8a015460008051602061245b83398151915290600160a060020a031685604051600160a060020a03909216825260208201527f70726576696f75734f776e6572320000000000000000000000000000000000006040808301919091526060909101905180910390a160018a015460008051602061245b83398151915290600160a060020a031689604051600160a060020a03909216825260208201527f6f776e65720000000000000000000000000000000000000000000000000000006040808301919091526060909101905180910390a160005460008051602061245b83398151915290600160a060020a031687604051600160a060020a03909216825260208201527f64657600000000000000000000000000000000000000000000000000000000006040808301919091526060909101905180910390a1611d63565b60018a0154600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515611d6357600080fd5b50600289015460058a01819055600354430160048b015560018a0154600160a060020a031690611d9f90611d98906064611ffb565b60a0612017565b60028b0155600a8a018054600b8c018054600160a060020a03808416600160a060020a0319928316179092556001808f01805480851695841695909517909555921633821617835560088d01805483019055838116600090815260056020526040808220805460001901905584548316825290819020805490930190925591547fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9284929116908e9051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a160058a015460028b015460018c01548c547fdcab0704e5b2c212cba558657bf325bc1b823c2a4e89c77e93926533ec56b5f9938f93909290918691600160a060020a0316906040519586526020860194909452604080860193909352600160a060020a03918216606086015216608084015260a083019190915260c0909101905180910390a1600160a060020a03331689156108fc028a604051600060405180830381858888f193505050501515611f2957600080fd5b5050505050505050505050565b60005433600160a060020a03908116911614611f5157600080fd5b600160a060020a0381161515611f6657600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60408051908101604052600381527f4549530000000000000000000000000000000000000000000000000000000000602082015281565b600080828481151561200957fe5b0490508091505b5092915050565b60008083151561202a5760009150612010565b5082820282848281151561203a57fe5b041461204257fe5b9392505050565b60008282018381101561204257fe5b60008282111561206457fe5b50900390565b600081815260066020908152604080832060018082018054600160a060020a03808a16600160a060020a03199283168117909355600990940180549091169055918816855260059093528184208054600019019055835291829020805490910190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084908490849051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b610160604051908101604052808760001916815260200186600160a060020a031681526020018581526020016000815260200160008152602001848152602001838152602001828152602001600081526020016000600160a060020a03168152602001604080519081016040908152600160a060020a038916808352602080840191909152919092526001546000908152600690915220815181556020820151600182018054600160a060020a031916600160a060020a039290921691909117905560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151600982018054600160a060020a031916600160a060020a039290921691909117905561014082015161226a90600a83019060026123dc565b5090505061010060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250600760006001548152602001908152602001600020600082015181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050507f6dbe83e0361d1759b05d67925ee5ed7d3c73361da16f0abb8aaebf121c7fd34560015487876040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a17fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3086600154604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050600180548101905550505050565b60206040519081016040526000815290565b8260028101928215612426579160200282015b828111156124265782518254600160a060020a031916600160a060020a0391909116178255602092909201916001909101906123ef565b50612432929150612436565b5090565b61076a91905b80821115612432578054600160a060020a031916815560010161243c5600643236658eb2709c16f0857e1a7a4fffee3c798264461cc3462be70c4fa9d8cda165627a7a7230582043d2474d71b265c422cea6b7fdf8ef08730f9426bf200f400e3fbb18a9a784840029
Swarm Source
bzzr://43d2474d71b265c422cea6b7fdf8ef08730f9426bf200f400e3fbb18a9a78484
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.