Overview
ETH Balance
0.0004 ETH
Eth Value
$1.36 (@ $3,399.50/ETH)More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Change Visit Cos... | 4191022 | 2653 days ago | IN | 0 ETH | 0.00008618 | ||||
Withdraw Foreign... | 4191019 | 2653 days ago | IN | 0 ETH | 0.00004206 | ||||
Withdraw Foreign... | 4191019 | 2653 days ago | IN | 0 ETH | 0.00002706 | ||||
Repossess Bookin... | 4191001 | 2653 days ago | IN | 0 ETH | 0.00013449 | ||||
Complete Booking | 4186580 | 2654 days ago | IN | 0 ETH | 0.00014802 | ||||
Complete Booking | 4144473 | 2664 days ago | IN | 0 ETH | 0.00014496 | ||||
Book Day Visit | 4141885 | 2665 days ago | IN | 0.0004 ETH | 0.0003757 | ||||
Book Spa Visit | 4141881 | 2665 days ago | IN | 0 ETH | 0.00039134 | ||||
Change Cardboard... | 4136655 | 2666 days ago | IN | 0 ETH | 0.00004408 | ||||
Change Grove Add... | 4136651 | 2666 days ago | IN | 0 ETH | 0.00004386 | ||||
0x60606040 | 4136469 | 2666 days ago | IN | 0 ETH | 0.0021736 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UnicornRanch
Compiler Version
v0.4.15+commit.bbb8e64f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-08-09 */ pragma solidity ^0.4.11; contract ERC20Token { function balanceOf(address _who) constant returns (uint balance); function allowance(address _owner, address _spender) constant returns (uint remaining); function transferFrom(address _from, address _to, uint _value); function transfer(address _to, uint _value); } contract GroveAPI { function insert(bytes32 indexName, bytes32 id, int value) public; } /** * Math operations with safety checks */ library SafeMath { function mul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint a, uint b) internal returns (uint) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function add(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c >= a); return c; } function max64(uint64 a, uint64 b) internal constant returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal constant returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal constant returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal constant returns (uint256) { return a < b ? a : b; } } contract UnicornRanch { using SafeMath for uint; enum VisitType { Spa, Afternoon, Day, Overnight, Week, Extended } enum VisitState { InProgress, Completed, Repossessed } struct Visit { uint unicornCount; VisitType t; uint startBlock; uint expiresBlock; VisitState state; uint completedBlock; uint completedCount; } struct VisitMeta { address owner; uint index; } address public cardboardUnicornTokenAddress; address public groveAddress; address public owner = msg.sender; mapping (address => Visit[]) bookings; mapping (bytes32 => VisitMeta) public bookingMetadataForKey; mapping (uint8 => uint) public visitLength; mapping (uint8 => uint) public visitCost; uint public visitingUnicorns = 0; uint public repossessionBlocks = 43200; uint8 public repossessionBountyPerTen = 2; uint8 public repossessionBountyPerHundred = 25; uint public birthBlockThreshold = 43860; uint8 public birthPerTen = 1; uint8 public birthPerHundred = 15; event NewBooking(address indexed _who, uint indexed _index, VisitType indexed _type, uint _unicornCount); event BookingUpdate(address indexed _who, uint indexed _index, VisitState indexed _newState, uint _unicornCount); event RepossessionBounty(address indexed _who, uint _unicornCount); event DonationReceived(address indexed _who, uint _unicornCount); modifier onlyOwner { require(msg.sender == owner); _; } function UnicornRanch() { visitLength[uint8(VisitType.Spa)] = 720; visitLength[uint8(VisitType.Afternoon)] = 1440; visitLength[uint8(VisitType.Day)] = 2880; visitLength[uint8(VisitType.Overnight)] = 8640; visitLength[uint8(VisitType.Week)] = 60480; visitLength[uint8(VisitType.Extended)] = 120960; visitCost[uint8(VisitType.Spa)] = 0; visitCost[uint8(VisitType.Afternoon)] = 0; visitCost[uint8(VisitType.Day)] = 10 szabo; visitCost[uint8(VisitType.Overnight)] = 30 szabo; visitCost[uint8(VisitType.Week)] = 50 szabo; visitCost[uint8(VisitType.Extended)] = 70 szabo; } function getBookingCount(address _who) constant returns (uint count) { return bookings[_who].length; } function getBooking(address _who, uint _index) constant returns (uint _unicornCount, VisitType _type, uint _startBlock, uint _expiresBlock, VisitState _state, uint _completedBlock, uint _completedCount) { Visit storage v = bookings[_who][_index]; return (v.unicornCount, v.t, v.startBlock, v.expiresBlock, v.state, v.completedBlock, v.completedCount); } function bookSpaVisit(uint _unicornCount) payable { return addBooking(VisitType.Spa, _unicornCount); } function bookAfternoonVisit(uint _unicornCount) payable { return addBooking(VisitType.Afternoon, _unicornCount); } function bookDayVisit(uint _unicornCount) payable { return addBooking(VisitType.Day, _unicornCount); } function bookOvernightVisit(uint _unicornCount) payable { return addBooking(VisitType.Overnight, _unicornCount); } function bookWeekVisit(uint _unicornCount) payable { return addBooking(VisitType.Week, _unicornCount); } function bookExtendedVisit(uint _unicornCount) payable { return addBooking(VisitType.Extended, _unicornCount); } function addBooking(VisitType _type, uint _unicornCount) payable { if (_type == VisitType.Afternoon) { return donateUnicorns(availableBalance(msg.sender)); } require(msg.value >= visitCost[uint8(_type)].mul(_unicornCount)); // Must be paying proper amount ERC20Token cardboardUnicorns = ERC20Token(cardboardUnicornTokenAddress); cardboardUnicorns.transferFrom(msg.sender, address(this), _unicornCount); // Transfer the actual asset visitingUnicorns = visitingUnicorns.add(_unicornCount); uint expiresBlock = block.number.add(visitLength[uint8(_type)]); // Calculate when this booking will be done // Add the booking to the ledger bookings[msg.sender].push(Visit( _unicornCount, _type, block.number, expiresBlock, VisitState.InProgress, 0, 0 )); uint newIndex = bookings[msg.sender].length - 1; bytes32 uniqueKey = keccak256(msg.sender, newIndex); // Create a unique key for this booking // Add a reference for that key, to find the metadata about it later bookingMetadataForKey[uniqueKey] = VisitMeta( msg.sender, newIndex ); if (groveAddress > 0) { // Insert into Grove index for applications to query GroveAPI g = GroveAPI(groveAddress); g.insert("bookingExpiration", uniqueKey, int(expiresBlock)); } // Send event about this new booking NewBooking(msg.sender, newIndex, _type, _unicornCount); } function completeBooking(uint _index) { require(bookings[msg.sender].length > _index); // Sender must have at least this many bookings Visit storage v = bookings[msg.sender][_index]; require(block.number >= v.expiresBlock); // Expired time must be past require(v.state == VisitState.InProgress); // Visit must not be complete or repossessed uint unicornsToReturn = v.unicornCount; ERC20Token cardboardUnicorns = ERC20Token(cardboardUnicornTokenAddress); // Determine if any births occurred uint birthCount = 0; if (SafeMath.sub(block.number, v.startBlock) >= birthBlockThreshold) { if (v.unicornCount >= 100) { birthCount = uint(birthPerHundred).mul(v.unicornCount / 100); } else if (v.unicornCount >= 10) { birthCount = uint(birthPerTen).mul(v.unicornCount / 10); } } if (birthCount > 0) { uint availableUnicorns = cardboardUnicorns.balanceOf(address(this)) - visitingUnicorns; if (availableUnicorns < birthCount) { birthCount = availableUnicorns; } unicornsToReturn = unicornsToReturn.add(birthCount); } // Update the status of the Visit v.state = VisitState.Completed; v.completedBlock = block.number; v.completedCount = unicornsToReturn; bookings[msg.sender][_index] = v; // Transfer the asset back to the owner visitingUnicorns = visitingUnicorns.sub(unicornsToReturn); cardboardUnicorns.transfer(msg.sender, unicornsToReturn); // Send event about this update BookingUpdate(msg.sender, _index, VisitState.Completed, unicornsToReturn); } function repossessBooking(address _who, uint _index) { require(bookings[_who].length > _index); // Address in question must have at least this many bookings Visit storage v = bookings[_who][_index]; require(block.number > v.expiresBlock.add(repossessionBlocks)); // Repossession time must be past require(v.state == VisitState.InProgress); // Visit must not be complete or repossessed visitingUnicorns = visitingUnicorns.sub(v.unicornCount); // Send event about this update BookingUpdate(_who, _index, VisitState.Repossessed, v.unicornCount); // Calculate Bounty amount uint bountyCount = 1; if (v.unicornCount >= 100) { bountyCount = uint(repossessionBountyPerHundred).mul(v.unicornCount / 100); } else if (v.unicornCount >= 10) { bountyCount = uint(repossessionBountyPerTen).mul(v.unicornCount / 10); } // Send bounty to bounty hunter ERC20Token cardboardUnicorns = ERC20Token(cardboardUnicornTokenAddress); cardboardUnicorns.transfer(msg.sender, bountyCount); // Send event about the bounty payout RepossessionBounty(msg.sender, bountyCount); // Update the status of the Visit v.state = VisitState.Repossessed; v.completedBlock = block.number; v.completedCount = v.unicornCount - bountyCount; bookings[_who][_index] = v; } function availableBalance(address _who) internal returns (uint) { ERC20Token cardboardUnicorns = ERC20Token(cardboardUnicornTokenAddress); uint count = cardboardUnicorns.allowance(_who, address(this)); if (count == 0) { return 0; } uint balance = cardboardUnicorns.balanceOf(_who); if (balance < count) { return balance; } return count; } function() payable { if (cardboardUnicornTokenAddress == 0) { return; } return donateUnicorns(availableBalance(msg.sender)); } function donateUnicorns(uint _unicornCount) payable { if (_unicornCount == 0) { return; } ERC20Token cardboardUnicorns = ERC20Token(cardboardUnicornTokenAddress); cardboardUnicorns.transferFrom(msg.sender, address(this), _unicornCount); DonationReceived(msg.sender, _unicornCount); } /** * Change ownership of the Ranch */ function changeOwner(address _newOwner) onlyOwner { owner = _newOwner; } /** * Change the outside contracts used by this contract */ function changeCardboardUnicornTokenAddress(address _newTokenAddress) onlyOwner { cardboardUnicornTokenAddress = _newTokenAddress; } function changeGroveAddress(address _newAddress) onlyOwner { groveAddress = _newAddress; } /** * Update block durations for various types of visits */ function changeVisitLengths(uint _spa, uint _afternoon, uint _day, uint _overnight, uint _week, uint _extended) onlyOwner { visitLength[uint8(VisitType.Spa)] = _spa; visitLength[uint8(VisitType.Afternoon)] = _afternoon; visitLength[uint8(VisitType.Day)] = _day; visitLength[uint8(VisitType.Overnight)] = _overnight; visitLength[uint8(VisitType.Week)] = _week; visitLength[uint8(VisitType.Extended)] = _extended; } /** * Update ether costs for various types of visits */ function changeVisitCosts(uint _spa, uint _afternoon, uint _day, uint _overnight, uint _week, uint _extended) onlyOwner { visitCost[uint8(VisitType.Spa)] = _spa; visitCost[uint8(VisitType.Afternoon)] = _afternoon; visitCost[uint8(VisitType.Day)] = _day; visitCost[uint8(VisitType.Overnight)] = _overnight; visitCost[uint8(VisitType.Week)] = _week; visitCost[uint8(VisitType.Extended)] = _extended; } /** * Update bounty reward settings */ function changeRepoSettings(uint _repoBlocks, uint8 _repoPerTen, uint8 _repoPerHundred) onlyOwner { repossessionBlocks = _repoBlocks; repossessionBountyPerTen = _repoPerTen; repossessionBountyPerHundred = _repoPerHundred; } /** * Update birth event settings */ function changeBirthSettings(uint _birthBlocks, uint8 _birthPerTen, uint8 _birthPerHundred) onlyOwner { birthBlockThreshold = _birthBlocks; birthPerTen = _birthPerTen; birthPerHundred = _birthPerHundred; } function withdraw() onlyOwner { owner.transfer(this.balance); // Send all ether in this contract to this contract's owner } function withdrawForeignTokens(address _tokenContract) onlyOwner { ERC20Token token = ERC20Token(_tokenContract); token.transfer(owner, token.balanceOf(address(this))); // Send all owned tokens to this contract's owner } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"repossessionBlocks","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"birthPerTen","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_index","type":"uint256"}],"name":"getBooking","outputs":[{"name":"_unicornCount","type":"uint256"},{"name":"_type","type":"uint8"},{"name":"_startBlock","type":"uint256"},{"name":"_expiresBlock","type":"uint256"},{"name":"_state","type":"uint8"},{"name":"_completedBlock","type":"uint256"},{"name":"_completedCount","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spa","type":"uint256"},{"name":"_afternoon","type":"uint256"},{"name":"_day","type":"uint256"},{"name":"_overnight","type":"uint256"},{"name":"_week","type":"uint256"},{"name":"_extended","type":"uint256"}],"name":"changeVisitLengths","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"visitingUnicorns","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"}],"name":"completeBooking","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"visitCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookExtendedVisit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"getBookingCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cardboardUnicornTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_repoBlocks","type":"uint256"},{"name":"_repoPerTen","type":"uint8"},{"name":"_repoPerHundred","type":"uint8"}],"name":"changeRepoSettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"repossessionBountyPerHundred","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"repossessionBountyPerTen","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"changeGroveAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookAfternoonVisit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"},{"name":"_unicornCount","type":"uint256"}],"name":"addBooking","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"visitLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"birthBlockThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookDayVisit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookOvernightVisit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_index","type":"uint256"}],"name":"repossessBooking","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newTokenAddress","type":"address"}],"name":"changeCardboardUnicornTokenAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"donateUnicorns","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"birthPerHundred","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookSpaVisit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_spa","type":"uint256"},{"name":"_afternoon","type":"uint256"},{"name":"_day","type":"uint256"},{"name":"_overnight","type":"uint256"},{"name":"_week","type":"uint256"},{"name":"_extended","type":"uint256"}],"name":"changeVisitCosts","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"withdrawForeignTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_birthBlocks","type":"uint256"},{"name":"_birthPerTen","type":"uint8"},{"name":"_birthPerHundred","type":"uint8"}],"name":"changeBirthSettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"bookingMetadataForKey","outputs":[{"name":"owner","type":"address"},{"name":"index","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"groveAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_unicornCount","type":"uint256"}],"name":"bookWeekVisit","outputs":[],"payable":true,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"},{"indexed":true,"name":"_index","type":"uint256"},{"indexed":true,"name":"_type","type":"uint8"},{"indexed":false,"name":"_unicornCount","type":"uint256"}],"name":"NewBooking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"},{"indexed":true,"name":"_index","type":"uint256"},{"indexed":true,"name":"_newState","type":"uint8"},{"indexed":false,"name":"_unicornCount","type":"uint256"}],"name":"BookingUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"},{"indexed":false,"name":"_unicornCount","type":"uint256"}],"name":"RepossessionBounty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_who","type":"address"},{"indexed":false,"name":"_unicornCount","type":"uint256"}],"name":"DonationReceived","type":"event"}]
Contract Creation Code
606060405260028054600160a060020a03191633600160a060020a0316178155600060075561a8c06008556009805460ff1990811690921761ff00199081166119001790915561ab54600a55600b805490921660011716610f00179055341561006757600080fd5b5b6102d060056000805b60ff16815260208101919091526040016000908120919091556105a09060059060015b60ff1681526020810191909152604001600090812091909155610b409060059060025b60ff16815260208101919091526040016000908120919091556121c09060059060035b60ff168152602081019190915260400160009081209190915561ec409060059060045b60ff16815260208101919091526040016000908120919091556201d88090600590815b60ff1681526020810191909152604001600090812091909155600681805b60ff168152602081019190915260400160009081209190915560068160015b60ff16815260208101919091526040016000908120919091556509184e72a0009060069060025b60ff1681526020810191909152604001600090812091909155651b48eb57e0009060069060035b60ff1681526020810191909152604001600090812091909155652d79883d20009060069060045b60ff1681526020810191909152604001600090812091909155653faa252260009060069060055b60ff1681526020810191909152604001600020555b5b6119f78061021e6000396000f300606060405236156101905763ffffffff60e060020a60003504166307e0421f81146101bc5780630a4c374a146101e15780630b0edad31461020a5780630be80fa9146102885780631453bfb3146102af5780631a2b3431146102d457806324ffca71146102ec57806339eb54d2146103175780633ca19952146103245780633ccfd60b146103555780633e8c34e51461036a578063435afa54146103995780634c9f45eb146103bd5780634db1ba5a146103e65780635d956b3e1461040f578063671d331514610430578063701513c01461043d57806373df6b191461045057806389c735651461047b5780638da5cb5b146104a05780639379077f146104cf578063940900b8146104dc578063a6f9dae1146104e9578063b9b949971461050a578063c9c666aa1461052e578063d16517861461054f578063da658f221461055c578063dba3191114610585578063dde0523f14610592578063e58fc54c146105b9578063e5a23e7e146105da578063e6506873146105fe578063e760fb0614610636578063ed15863a14610665575b5b600054600160a060020a031615156101a8576101b9565b6101b96101b433610672565b610791565b5b005b34156101c757600080fd5b6101cf61085a565b60405190815260200160405180910390f35b34156101ec57600080fd5b6101f4610860565b60405160ff909116815260200160405180910390f35b341561021557600080fd5b61022c600160a060020a0360043516602435610869565b6040518088815260200187600581111561024257fe5b60ff16815260200186815260200185815260200184600281111561026257fe5b60ff16815260200183815260200182815260200197505050505050505060405180910390f35b341561029357600080fd5b6101b960043560243560443560643560843560a435610902565b005b34156102ba57600080fd5b6101cf6109e6565b60405190815260200160405180910390f35b34156102df57600080fd5b6101b96004356109ec565b005b34156102f757600080fd5b6101cf60ff60043516610d59565b60405190815260200160405180910390f35b6101b9600435610d6b565b005b341561032f57600080fd5b6101cf600160a060020a0360043516610d7a565b60405190815260200160405180910390f35b341561036057600080fd5b6101b9610d99565b005b341561037557600080fd5b61037d610df1565b604051600160a060020a03909116815260200160405180910390f35b34156103a457600080fd5b6101b960043560ff60243581169060443516610e00565b005b34156103c857600080fd5b6101f4610e49565b60405160ff909116815260200160405180910390f35b34156103f157600080fd5b6101f4610e57565b60405160ff909116815260200160405180910390f35b341561041a57600080fd5b6101b9600160a060020a0360043516610e60565b005b6101b9600435610ea8565b005b6101b960ff60043516602435610eb7565b005b341561045b57600080fd5b6101cf60ff60043516611290565b60405190815260200160405180910390f35b341561048657600080fd5b6101cf6112a2565b60405190815260200160405180910390f35b34156104ab57600080fd5b61037d6112a8565b604051600160a060020a03909116815260200160405180910390f35b6101b96004356112b7565b005b6101b96004356112c6565b005b34156104f457600080fd5b6101b9600160a060020a03600435166112d5565b005b341561051557600080fd5b6101b9600160a060020a036004351660243561131d565b005b341561053957600080fd5b6101b9600160a060020a036004351661160c565b005b6101b9600435610791565b005b341561056757600080fd5b6101f4611654565b60405160ff909116815260200160405180910390f35b6101b9600435611662565b005b341561059d57600080fd5b6101b960043560243560443560643560843560a435611671565b005b34156105c457600080fd5b6101b9600160a060020a036004351661175a565b005b34156105e557600080fd5b6101b960043560ff60243581169060443516611857565b005b341561060957600080fd5b6106146004356118a0565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561064157600080fd5b61037d6118c5565b604051600160a060020a03909116815260200160405180910390f35b6101b96004356118d4565b005b60008054600160a060020a031681808263dd62ed3e8630846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156106d657600080fd5b6102c65a03f115156106e757600080fd5b50505060405180519250508115156107025760009350610789565b82600160a060020a03166370a082318660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b50505060405180519150508181101561078557809350610789565b8193505b505050919050565b600081151561079f57610856565b50600054600160a060020a0316806323b872dd33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561080457600080fd5b6102c65a03f1151561081557600080fd5b50505033600160a060020a03167f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528360405190815260200160405180910390a25b5050565b60085481565b600b5460ff1681565b600080600080600080600080600360008b600160a060020a0316600160a060020a03168152602001908152602001600020898154811015156108a757fe5b906000526020600020906007020160005b508054600182015460028301546003840154600485015460058601546006870154959e5060ff9485169d50929b5090995090911696509450925090505b5092959891949750929550565b60025433600160a060020a0390811691161461091d57600080fd5b8560056000805b60ff1681526020810191909152604001600090812091909155859060059060015b60ff1681526020810191909152604001600090812091909155849060059060025b60ff1681526020810191909152604001600090812091909155839060059060035b60ff1681526020810191909152604001600090812091909155829060059060045b60ff16815260208101919091526040016000908120919091558190600590815b60ff1681526020810191909152604001600020555b5b505050505050565b60075481565b600160a060020a0333166000908152600360205260408120548190819081908190869011610a1957600080fd5b600160a060020a0333166000908152600360205260409020805487908110610a3d57fe5b906000526020600020906007020160005b506003810154909550431015610a6357600080fd5b60005b600486015460ff166002811115610a7957fe5b14610a8357600080fd5b845460008054600a546002890154939750600160a060020a03909116955090935090610ab09043906118e3565b10610b0e57845460649010610ae3578454610adc906064905b600b54610100900460ff169190046118fa565b9150610b0e565b8454600a9010610b0e578454610b0b90600a905b600b5460ff1691900463ffffffff6118fa16565b91505b5b5b6000821115610bb05760075483600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b7357600080fd5b6102c65a03f11515610b8457600080fd5b5050506040518051905003905081811015610b9d578091505b610bad848363ffffffff61192916565b93505b6004850180546001919060ff191682805b021790555043600586015560068501849055600160a060020a0333166000908152600360205260409020805486919088908110610bfa57fe5b906000526020600020906007020160005b5081548155600180830154818301805460ff90921692909160ff191690836005811115610c3457fe5b02179055506002828101548282015560038084015490830155600480840154908301805460ff90921692909160ff1916906001908490811115610c7357fe5b021790555060058281015490820155600691820154910155600754610c9e908563ffffffff6118e316565b600755600160a060020a03831663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610cf557600080fd5b6102c65a03f11515610d0657600080fd5b5060019150610d129050565b8633600160a060020a03167f3b19c86806543f3eff13d440630e1c2e2929cedd2abc91deef4811b1ffa000398760405190815260200160405180910390a45b505050505050565b60066020526000908152604090205481565b610d76600582610eb7565b5b50565b600160a060020a0381166000908152600360205260409020545b919050565b60025433600160a060020a03908116911614610db457600080fd5b600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610ded57600080fd5b5b5b565b600054600160a060020a031681565b60025433600160a060020a03908116911614610e1b57600080fd5b60088390556009805460ff8381166101000261ff001991861660ff1990931692909217161790555b5b505050565b600954610100900460ff1681565b60095460ff1681565b60025433600160a060020a03908116911614610e7b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b610d76600182610eb7565b5b50565b60008080808060015b876005811115610ecc57fe5b1415610ee857610ee36101b433610672565b610791565b611287565b610f1c86600660008a6005811115610efc57fe5b60ff1681526020810191909152604001600020549063ffffffff6118fa16565b341015610f2857600080fd5b600054600160a060020a03169450846323b872dd33308960405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610f8e57600080fd5b6102c65a03f11515610f9f57600080fd5b5050600754610fb591508763ffffffff61192916565b600755610feb600560008982811115610fca57fe5b60ff168152602081019190915260400160002054439063ffffffff61192916565b600160a060020a0333166000908152600360205260409020805491955090600181016110178382611943565b916000526020600020906007020160005b60e0604051908101604052808a81526020018b600581111561104657fe5b81524360208201526040810189905260600160005b815260006020820181905260409091015291905081518155602082015160018083018054909160ff199091169083600581111561109457fe5b02179055506040820151816002015560608201518160030155608082015160048201805460ff191660018360028111156110ca57fe5b021790555060a0820151816005015560c08201516006909101555050600160a060020a03339081166000908152600360205260409081902054600019019450849051600160a060020a03929092166c01000000000000000000000000028252601482015260340160405180910390209150604080519081016040908152600160a060020a0333168252602080830186905260008581526004909152208151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03919091161781556020820151600191820155546000600160a060020a039091161115905061123c5750600154600160a060020a03168063870e5405838660405160e060020a63ffffffff85160281527f626f6f6b696e6745787069726174696f6e000000000000000000000000000000600482015260248101929092526044820152606401600060405180830381600087803b151561122757600080fd5b6102c65a03f1151561123857600080fd5b5050505b86600581111561124857fe5b8333600160a060020a03167fe1dcf3ded2916fdf0b0696536e13adeed2f8665a3004440397b776f14aa5befd8960405190815260200160405180910390a45b50505050505050565b60056020526000908152604090205481565b600a5481565b600254600160a060020a031681565b610d76600282610eb7565b5b50565b610d76600382610eb7565b5b50565b60025433600160a060020a039081169116146112f057600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0382166000908152600360205260408120548190819084901161134657600080fd5b600160a060020a038516600090815260036020526040902080548590811061136a57fe5b906000526020600020906007020160005b509250611397600854846003015461192990919063ffffffff16565b43116113a257600080fd5b60005b600484015460ff1660028111156113b857fe5b146113c257600080fd5b82546007546113d69163ffffffff6118e316565b60075560025b8486600160a060020a03167f3b19c86806543f3eff13d440630e1c2e2929cedd2abc91deef4811b1ffa00039866000015460405190815260200160405180910390a482546001925060649010611450578254611449906064905b600954610100900460ff169190046118fa565b915061147b565b8254600a901061147b57825461147890600a905b60095460ff1691900463ffffffff6118fa16565b91505b5b50600054600160a060020a03168063a9059cbb338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114d457600080fd5b6102c65a03f115156114e557600080fd5b50505033600160a060020a03167ff19cfeff04aee8eb4233e04f52861d77065ae3c502e2767d82a5836d0090eb4c8360405190815260200160405180910390a26004830180546002919060ff19166001835b021790555043600584015582548290036006840155600160a060020a038516600090815260036020526040902080548491908690811061157357fe5b906000526020600020906007020160005b5081548155600180830154818301805460ff90921692909160ff1916908360058111156115ad57fe5b02179055506002828101548282015560038084015490830155600480840154908301805460ff90921692909160ff19169060019084908111156115ec57fe5b0217905550600582810154908201556006918201549101555b5050505050565b60025433600160a060020a0390811691161461162757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600b54610100900460ff1681565b610d76600082610eb7565b5b50565b60025433600160a060020a0390811691161461168c57600080fd5b8560066000805b60ff1681526020810191909152604001600090812091909155859060069060015b60ff1681526020810191909152604001600090812091909155849060069060025b60ff1681526020810191909152604001600090812091909155839060069060035b60ff1681526020810191909152604001600090812091909155829060069060045b60ff1681526020810191909152604001600090812091909155819060069060056109c8565b60ff1681526020810191909152604001600020555b5b505050505050565b60025460009033600160a060020a0390811691161461177857600080fd5b506002548190600160a060020a038083169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156117df57600080fd5b6102c65a03f115156117f057600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561183d57600080fd5b6102c65a03f1151561160557600080fd5b5050505b5b5050565b60025433600160a060020a0390811691161461187257600080fd5b600a839055600b805460ff8381166101000261ff001991861660ff1990931692909217161790555b5b505050565b60046020526000908152604090208054600190910154600160a060020a039091169082565b600154600160a060020a031681565b610d76600482610eb7565b5b50565b6000828211156118ef57fe5b508082035b92915050565b6000828202831580611916575082848281151561191357fe5b04145b151561191e57fe5b8091505b5092915050565b60008282018381101561191e57fe5b8091505b5092915050565b815481835581811511610e4357600702816007028360005260206000209182019101610e439190611975565b5b505050565b6119c891905b808211156119c457600080825560018201805460ff199081169091556002830182905560038301829055600483018054909116905560058201819055600682015560070161197b565b5090565b905600a165627a7a72305820164174a0d70dde5d0fcf9b7f4b9db57453c2f675353f456783fc997bb371c64a0029
Deployed Bytecode
0x606060405236156101905763ffffffff60e060020a60003504166307e0421f81146101bc5780630a4c374a146101e15780630b0edad31461020a5780630be80fa9146102885780631453bfb3146102af5780631a2b3431146102d457806324ffca71146102ec57806339eb54d2146103175780633ca19952146103245780633ccfd60b146103555780633e8c34e51461036a578063435afa54146103995780634c9f45eb146103bd5780634db1ba5a146103e65780635d956b3e1461040f578063671d331514610430578063701513c01461043d57806373df6b191461045057806389c735651461047b5780638da5cb5b146104a05780639379077f146104cf578063940900b8146104dc578063a6f9dae1146104e9578063b9b949971461050a578063c9c666aa1461052e578063d16517861461054f578063da658f221461055c578063dba3191114610585578063dde0523f14610592578063e58fc54c146105b9578063e5a23e7e146105da578063e6506873146105fe578063e760fb0614610636578063ed15863a14610665575b5b600054600160a060020a031615156101a8576101b9565b6101b96101b433610672565b610791565b5b005b34156101c757600080fd5b6101cf61085a565b60405190815260200160405180910390f35b34156101ec57600080fd5b6101f4610860565b60405160ff909116815260200160405180910390f35b341561021557600080fd5b61022c600160a060020a0360043516602435610869565b6040518088815260200187600581111561024257fe5b60ff16815260200186815260200185815260200184600281111561026257fe5b60ff16815260200183815260200182815260200197505050505050505060405180910390f35b341561029357600080fd5b6101b960043560243560443560643560843560a435610902565b005b34156102ba57600080fd5b6101cf6109e6565b60405190815260200160405180910390f35b34156102df57600080fd5b6101b96004356109ec565b005b34156102f757600080fd5b6101cf60ff60043516610d59565b60405190815260200160405180910390f35b6101b9600435610d6b565b005b341561032f57600080fd5b6101cf600160a060020a0360043516610d7a565b60405190815260200160405180910390f35b341561036057600080fd5b6101b9610d99565b005b341561037557600080fd5b61037d610df1565b604051600160a060020a03909116815260200160405180910390f35b34156103a457600080fd5b6101b960043560ff60243581169060443516610e00565b005b34156103c857600080fd5b6101f4610e49565b60405160ff909116815260200160405180910390f35b34156103f157600080fd5b6101f4610e57565b60405160ff909116815260200160405180910390f35b341561041a57600080fd5b6101b9600160a060020a0360043516610e60565b005b6101b9600435610ea8565b005b6101b960ff60043516602435610eb7565b005b341561045b57600080fd5b6101cf60ff60043516611290565b60405190815260200160405180910390f35b341561048657600080fd5b6101cf6112a2565b60405190815260200160405180910390f35b34156104ab57600080fd5b61037d6112a8565b604051600160a060020a03909116815260200160405180910390f35b6101b96004356112b7565b005b6101b96004356112c6565b005b34156104f457600080fd5b6101b9600160a060020a03600435166112d5565b005b341561051557600080fd5b6101b9600160a060020a036004351660243561131d565b005b341561053957600080fd5b6101b9600160a060020a036004351661160c565b005b6101b9600435610791565b005b341561056757600080fd5b6101f4611654565b60405160ff909116815260200160405180910390f35b6101b9600435611662565b005b341561059d57600080fd5b6101b960043560243560443560643560843560a435611671565b005b34156105c457600080fd5b6101b9600160a060020a036004351661175a565b005b34156105e557600080fd5b6101b960043560ff60243581169060443516611857565b005b341561060957600080fd5b6106146004356118a0565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561064157600080fd5b61037d6118c5565b604051600160a060020a03909116815260200160405180910390f35b6101b96004356118d4565b005b60008054600160a060020a031681808263dd62ed3e8630846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156106d657600080fd5b6102c65a03f115156106e757600080fd5b50505060405180519250508115156107025760009350610789565b82600160a060020a03166370a082318660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b50505060405180519150508181101561078557809350610789565b8193505b505050919050565b600081151561079f57610856565b50600054600160a060020a0316806323b872dd33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561080457600080fd5b6102c65a03f1151561081557600080fd5b50505033600160a060020a03167f264f630d9efa0d07053a31163641d9fcc0adafc9d9e76f1c37c2ce3a558d2c528360405190815260200160405180910390a25b5050565b60085481565b600b5460ff1681565b600080600080600080600080600360008b600160a060020a0316600160a060020a03168152602001908152602001600020898154811015156108a757fe5b906000526020600020906007020160005b508054600182015460028301546003840154600485015460058601546006870154959e5060ff9485169d50929b5090995090911696509450925090505b5092959891949750929550565b60025433600160a060020a0390811691161461091d57600080fd5b8560056000805b60ff1681526020810191909152604001600090812091909155859060059060015b60ff1681526020810191909152604001600090812091909155849060059060025b60ff1681526020810191909152604001600090812091909155839060059060035b60ff1681526020810191909152604001600090812091909155829060059060045b60ff16815260208101919091526040016000908120919091558190600590815b60ff1681526020810191909152604001600020555b5b505050505050565b60075481565b600160a060020a0333166000908152600360205260408120548190819081908190869011610a1957600080fd5b600160a060020a0333166000908152600360205260409020805487908110610a3d57fe5b906000526020600020906007020160005b506003810154909550431015610a6357600080fd5b60005b600486015460ff166002811115610a7957fe5b14610a8357600080fd5b845460008054600a546002890154939750600160a060020a03909116955090935090610ab09043906118e3565b10610b0e57845460649010610ae3578454610adc906064905b600b54610100900460ff169190046118fa565b9150610b0e565b8454600a9010610b0e578454610b0b90600a905b600b5460ff1691900463ffffffff6118fa16565b91505b5b5b6000821115610bb05760075483600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b7357600080fd5b6102c65a03f11515610b8457600080fd5b5050506040518051905003905081811015610b9d578091505b610bad848363ffffffff61192916565b93505b6004850180546001919060ff191682805b021790555043600586015560068501849055600160a060020a0333166000908152600360205260409020805486919088908110610bfa57fe5b906000526020600020906007020160005b5081548155600180830154818301805460ff90921692909160ff191690836005811115610c3457fe5b02179055506002828101548282015560038084015490830155600480840154908301805460ff90921692909160ff1916906001908490811115610c7357fe5b021790555060058281015490820155600691820154910155600754610c9e908563ffffffff6118e316565b600755600160a060020a03831663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610cf557600080fd5b6102c65a03f11515610d0657600080fd5b5060019150610d129050565b8633600160a060020a03167f3b19c86806543f3eff13d440630e1c2e2929cedd2abc91deef4811b1ffa000398760405190815260200160405180910390a45b505050505050565b60066020526000908152604090205481565b610d76600582610eb7565b5b50565b600160a060020a0381166000908152600360205260409020545b919050565b60025433600160a060020a03908116911614610db457600080fd5b600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610ded57600080fd5b5b5b565b600054600160a060020a031681565b60025433600160a060020a03908116911614610e1b57600080fd5b60088390556009805460ff8381166101000261ff001991861660ff1990931692909217161790555b5b505050565b600954610100900460ff1681565b60095460ff1681565b60025433600160a060020a03908116911614610e7b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b610d76600182610eb7565b5b50565b60008080808060015b876005811115610ecc57fe5b1415610ee857610ee36101b433610672565b610791565b611287565b610f1c86600660008a6005811115610efc57fe5b60ff1681526020810191909152604001600020549063ffffffff6118fa16565b341015610f2857600080fd5b600054600160a060020a03169450846323b872dd33308960405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610f8e57600080fd5b6102c65a03f11515610f9f57600080fd5b5050600754610fb591508763ffffffff61192916565b600755610feb600560008982811115610fca57fe5b60ff168152602081019190915260400160002054439063ffffffff61192916565b600160a060020a0333166000908152600360205260409020805491955090600181016110178382611943565b916000526020600020906007020160005b60e0604051908101604052808a81526020018b600581111561104657fe5b81524360208201526040810189905260600160005b815260006020820181905260409091015291905081518155602082015160018083018054909160ff199091169083600581111561109457fe5b02179055506040820151816002015560608201518160030155608082015160048201805460ff191660018360028111156110ca57fe5b021790555060a0820151816005015560c08201516006909101555050600160a060020a03339081166000908152600360205260409081902054600019019450849051600160a060020a03929092166c01000000000000000000000000028252601482015260340160405180910390209150604080519081016040908152600160a060020a0333168252602080830186905260008581526004909152208151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03919091161781556020820151600191820155546000600160a060020a039091161115905061123c5750600154600160a060020a03168063870e5405838660405160e060020a63ffffffff85160281527f626f6f6b696e6745787069726174696f6e000000000000000000000000000000600482015260248101929092526044820152606401600060405180830381600087803b151561122757600080fd5b6102c65a03f1151561123857600080fd5b5050505b86600581111561124857fe5b8333600160a060020a03167fe1dcf3ded2916fdf0b0696536e13adeed2f8665a3004440397b776f14aa5befd8960405190815260200160405180910390a45b50505050505050565b60056020526000908152604090205481565b600a5481565b600254600160a060020a031681565b610d76600282610eb7565b5b50565b610d76600382610eb7565b5b50565b60025433600160a060020a039081169116146112f057600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0382166000908152600360205260408120548190819084901161134657600080fd5b600160a060020a038516600090815260036020526040902080548590811061136a57fe5b906000526020600020906007020160005b509250611397600854846003015461192990919063ffffffff16565b43116113a257600080fd5b60005b600484015460ff1660028111156113b857fe5b146113c257600080fd5b82546007546113d69163ffffffff6118e316565b60075560025b8486600160a060020a03167f3b19c86806543f3eff13d440630e1c2e2929cedd2abc91deef4811b1ffa00039866000015460405190815260200160405180910390a482546001925060649010611450578254611449906064905b600954610100900460ff169190046118fa565b915061147b565b8254600a901061147b57825461147890600a905b60095460ff1691900463ffffffff6118fa16565b91505b5b50600054600160a060020a03168063a9059cbb338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114d457600080fd5b6102c65a03f115156114e557600080fd5b50505033600160a060020a03167ff19cfeff04aee8eb4233e04f52861d77065ae3c502e2767d82a5836d0090eb4c8360405190815260200160405180910390a26004830180546002919060ff19166001835b021790555043600584015582548290036006840155600160a060020a038516600090815260036020526040902080548491908690811061157357fe5b906000526020600020906007020160005b5081548155600180830154818301805460ff90921692909160ff1916908360058111156115ad57fe5b02179055506002828101548282015560038084015490830155600480840154908301805460ff90921692909160ff19169060019084908111156115ec57fe5b0217905550600582810154908201556006918201549101555b5050505050565b60025433600160a060020a0390811691161461162757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600b54610100900460ff1681565b610d76600082610eb7565b5b50565b60025433600160a060020a0390811691161461168c57600080fd5b8560066000805b60ff1681526020810191909152604001600090812091909155859060069060015b60ff1681526020810191909152604001600090812091909155849060069060025b60ff1681526020810191909152604001600090812091909155839060069060035b60ff1681526020810191909152604001600090812091909155829060069060045b60ff1681526020810191909152604001600090812091909155819060069060056109c8565b60ff1681526020810191909152604001600020555b5b505050505050565b60025460009033600160a060020a0390811691161461177857600080fd5b506002548190600160a060020a038083169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156117df57600080fd5b6102c65a03f115156117f057600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561183d57600080fd5b6102c65a03f1151561160557600080fd5b5050505b5b5050565b60025433600160a060020a0390811691161461187257600080fd5b600a839055600b805460ff8381166101000261ff001991861660ff1990931692909217161790555b5b505050565b60046020526000908152604090208054600190910154600160a060020a039091169082565b600154600160a060020a031681565b610d76600482610eb7565b5b50565b6000828211156118ef57fe5b508082035b92915050565b6000828202831580611916575082848281151561191357fe5b04145b151561191e57fe5b8091505b5092915050565b60008282018381101561191e57fe5b8091505b5092915050565b815481835581811511610e4357600702816007028360005260206000209182019101610e439190611975565b5b505050565b6119c891905b808211156119c457600080825560018201805460ff199081169091556002830182905560038301829055600483018054909116905560058201819055600682015560070161197b565b5090565b905600a165627a7a72305820164174a0d70dde5d0fcf9b7f4b9db57453c2f675353f456783fc997bb371c64a0029
Swarm Source
bzzr://164174a0d70dde5d0fcf9b7f4b9db57453c2f675353f456783fc997bb371c64a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,412.34 | 0.0004 | $1.36 |
Loading...
Loading
[ 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.