Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,163 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Exit | 19772718 | 670 days ago | IN | 0 ETH | 0.000377 | ||||
| Exit | 8751864 | 2329 days ago | IN | 0 ETH | 0.00005482 | ||||
| Exit | 8751825 | 2329 days ago | IN | 0 ETH | 0.00002377 | ||||
| Exit | 8715044 | 2335 days ago | IN | 0 ETH | 0.00005482 | ||||
| Exit | 8332900 | 2394 days ago | IN | 0 ETH | 0.00054829 | ||||
| Exit | 8025052 | 2442 days ago | IN | 0 ETH | 0.00011514 | ||||
| Exit | 7725800 | 2489 days ago | IN | 0 ETH | 0.00010965 | ||||
| Sell | 7571943 | 2513 days ago | IN | 0 ETH | 0.00002281 | ||||
| Exit | 7571813 | 2513 days ago | IN | 0 ETH | 0.00002377 | ||||
| Sell | 7571813 | 2513 days ago | IN | 0 ETH | 0.00002281 | ||||
| Sell | 7571458 | 2513 days ago | IN | 0 ETH | 0.00002275 | ||||
| Sell | 7571002 | 2513 days ago | IN | 0 ETH | 0.00034224 | ||||
| Sell | 7570995 | 2513 days ago | IN | 0 ETH | 0.00034128 | ||||
| Exit | 7570654 | 2513 days ago | IN | 0 ETH | 0.00082243 | ||||
| Exit | 7539151 | 2518 days ago | IN | 0 ETH | 0.00027414 | ||||
| Exit | 7539103 | 2518 days ago | IN | 0 ETH | 0.00027414 | ||||
| Exit | 7526452 | 2520 days ago | IN | 0 ETH | 0.00010965 | ||||
| Exit | 7512074 | 2522 days ago | IN | 0 ETH | 0.00021931 | ||||
| Exit | 7512059 | 2522 days ago | IN | 0 ETH | 0.00021931 | ||||
| Exit | 7497651 | 2525 days ago | IN | 0 ETH | 0.00022479 | ||||
| Withdraw | 7432639 | 2535 days ago | IN | 0 ETH | 0.00030498 | ||||
| Sell | 7432623 | 2535 days ago | IN | 0 ETH | 0.00033697 | ||||
| Withdraw | 7432615 | 2535 days ago | IN | 0 ETH | 0.00030498 | ||||
| Exit | 7428889 | 2535 days ago | IN | 0 ETH | 0.00027414 | ||||
| Exit | 7428884 | 2535 days ago | IN | 0 ETH | 0.00021931 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 19772718 | 670 days ago | 0.01176185 ETH | ||||
| - | 8751864 | 2329 days ago | 1.06275343 ETH | ||||
| - | 8715044 | 2335 days ago | 0.00049571 ETH | ||||
| - | 8332900 | 2394 days ago | 0.9085384 ETH | ||||
| - | 8025052 | 2442 days ago | 1.16687669 ETH | ||||
| - | 7725800 | 2489 days ago | 0.06655951 ETH | ||||
| - | 7570654 | 2513 days ago | 1.21862042 ETH | ||||
| - | 7539151 | 2518 days ago | 0.14003137 ETH | ||||
| - | 7539103 | 2518 days ago | 0.20527306 ETH | ||||
| - | 7526452 | 2520 days ago | 4.12914537 ETH | ||||
| - | 7512074 | 2522 days ago | 0.00000424 ETH | ||||
| - | 7512059 | 2522 days ago | 0.05273141 ETH | ||||
| - | 7497651 | 2525 days ago | 0.21499076 ETH | ||||
| - | 7432639 | 2535 days ago | 1.33923631 ETH | ||||
| - | 7432615 | 2535 days ago | 1.5285771 ETH | ||||
| - | 7428889 | 2535 days ago | 0.27318025 ETH | ||||
| - | 7428884 | 2535 days ago | 2.84668374 ETH | ||||
| - | 7428875 | 2535 days ago | 32.12020504 ETH | ||||
| - | 7423718 | 2536 days ago | 284.4368281 ETH | ||||
| - | 7423668 | 2536 days ago | 52.80612958 ETH | ||||
| - | 7423573 | 2536 days ago | 0.0005 ETH | ||||
| - | 7423558 | 2536 days ago | 1.47810467 ETH | ||||
| - | 7423544 | 2536 days ago | 4.38552699 ETH | ||||
| - | 7423544 | 2536 days ago | 4.47518863 ETH | ||||
| - | 7423544 | 2536 days ago | 4.65307634 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
FairExchange
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-10-11
*/
pragma solidity ^0.4.25;
/*
*
* https://fairdapp.com/exchange/ https://fairdapp.com/exchange/ https://fairdapp.com/exchange/
*
* _______ _ ______ _______ ______ ______
* (_______) (_) (______)(_______|_____ (_____ \
* _____ _____ _ ____ _ _ _______ _____) )____) )
* | ___|____ | |/ ___) | | | ___ | ____/ ____/
* | | / ___ | | | | |__/ /| | | | | | |
* |_| \_____|_|_| |_____/ |_| |_|_| |_|
*
* _______ _
* (_______) | |
* _____ _ _ ____| |__ _____ ____ ____ _____
* | ___) ( \ / ) ___) _ \(____ | _ \ / _ | ___ |
* | |_____ ) X ( (___| | | / ___ | | | ( (_| | ____|
* |_______|_/ \_)____)_| |_\_____|_| |_|\___ |_____)
* (_____|
* Warning:
*
* This contract is intended to link DAPPs on the FairDAPP platform.
* All could be lost by sending anything to this contract address.
* All users are prohibited to interact with this contract if this
* contract is in conflict with user’s local regulations or laws.
*
* Original code by TEAM JUST
* Original concept by Dr. Jochen Hoenicke
* Modified by the FairDAPP community with more scalable and fairer settings.
*
*/
contract FairExchange {
using NameFilter for string;
/*=================================
= MODIFIERS =
=================================*/
// only people with tokens
modifier onlyBagholders() {
require(myTokens() > 0);
_;
}
// only people with profits
modifier onlyStronghands() {
require(myDividends(true) > 0);
_;
}
// administrators can:
// -> change the name of the contract
// -> change the name of the token
// -> Allow contracts to use transfer functions
// they CANNOT:
// -> take funds
// -> disable withdrawals
// -> kill the contract
// -> change the price of tokens
modifier onlyAdministrator(){
address _customerAddress = msg.sender;
require(administrators[keccak256(abi.encodePacked(_customerAddress))]);
_;
}
modifier buyVerify(uint256 _amountOfEthereum){
if((totalEthereumBalance() - _amountOfEthereum) < whaleBalanceLimit)
require(tx.gasprice <= gaspriceMax);
address _customerAddress = msg.sender;
if(onlyAmbassadors && now <= startTime)
require(ambassadors_[_customerAddress]);
else{
if(onlyAmbassadors)
onlyAmbassadors = false;
if((totalEthereumBalance() - _amountOfEthereum) < whaleBalanceLimit)
require(_amountOfEthereum <= maxEarlyStake);
}
_;
}
/*==============================
= EVENTS =
==============================*/
event onTokenPurchase(
address indexed customerAddress,
uint256 incomingEthereum,
uint256 tokensMinted,
address indexed referredBy
);
event onTokenSell(
address indexed customerAddress,
uint256 tokensBurned,
uint256 ethereumEarned
);
event onReinvestment(
address indexed customerAddress,
uint256 ethereumReinvested,
uint256 tokensMinted
);
event onWithdraw(
address indexed customerAddress,
uint256 ethereumWithdrawn
);
// ERC223
event Transfer(
address indexed from,
address indexed to,
uint256 tokens,
bytes data
);
/*=====================================
= CONFIGURABLES =
=====================================*/
string public name = "FairExchange";
string public symbol = "Fair";
uint8 constant public decimals = 18;
uint8 constant internal dividendFee_ = 10;
uint256 constant internal tokenPriceInitial_ = 0.0001 ether;
uint256 constant internal tokenPriceIncremental_ = 0.000000005 ether;
uint256 constant internal magnitude = 2**64;
uint256 public gaspriceMax = 20000000000;
uint256 public startTime = 1539478800;
/// @dev anti-early-whale
uint256 public maxEarlyStake = 2.5 ether;
uint256 public whaleBalanceLimit = 250 ether;
// private offering program
mapping(address => bool) internal ambassadors_;
/*================================
= DATASETS =
================================*/
// amount of shares for each address (scaled number)
mapping(address => uint256) internal tokenBalanceLedger_;
mapping(address => uint256) internal referralBalance_;
mapping(address => int256) internal payoutsTo_;
uint256 internal tokenSupply_ = 0;
uint256 internal profitPerShare_;
// administrator list (see above on what they can do)
mapping(bytes32 => bool) public administrators;
// when this is set to true, only ambassadors can purchase tokens (this prevents a whale premine, it ensures a fairly distributed upper pyramid)
bool public onlyAmbassadors = true;
mapping (address => bytes32) public register;
mapping (bytes32 => address) public userName;
mapping (address => bool) public user;
/*=======================================
= PUBLIC FUNCTIONS =
=======================================*/
/*
* -- APPLICATION ENTRY POINTS --
*/
constructor()
public
{
// add administrators here
administrators[0x851d084c805eabf5ec90588a0f5cade287038d80d52c510eefe81f320e97cdcc] = true;
// add the ambassadors here.
// max 113 ETH, 40% to developer, 60% to limited quota private sales
ambassadors_[0xbC817A495f0114755Da5305c5AA84fc5ca7ebaBd] = true;
}
function registered(string _userName)
public
{
address _customerAddress = msg.sender;
bytes32 _name = _userName.nameFilter();
require (_customerAddress == tx.origin, "sender does not meet the rules");
require(_name != bytes32(0), "name cannot be empty");
require(userName[_name] == address(0), "this name has already been registered");
require(register[_customerAddress] == bytes32(0), "please do not repeat registration");
userName[_name] = _customerAddress;
register[_customerAddress] = _name;
if(!user[_customerAddress])
user[_customerAddress] = true;
}
/**
* Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
*/
function buy(address _referredBy)
buyVerify(msg.value)
public
payable
returns(uint256)
{
purchaseTokens(msg.value, _referredBy);
}
/**
* Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
*/
function buyXname(string _referredName)
buyVerify(msg.value)
public
payable
returns(uint256)
{
purchaseTokens(msg.value, userName[_referredName.nameFilter()]);
}
/**
* Fallback function to handle ethereum that was send straight to the contract
* Unfortunately we cannot use a referral address this way.
*/
function()
buyVerify(msg.value)
payable
public
{
purchaseTokens(msg.value, 0x0);
}
/**
* Converts all of caller's dividends to tokens.
*/
function reinvest()
onlyStronghands()
public
{
// fetch dividends
uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code
// pay out the dividends virtually
address _customerAddress = msg.sender;
payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
// retrieve ref. bonus
_dividends += referralBalance_[_customerAddress];
referralBalance_[_customerAddress] = 0;
// dispatch a buy order with the virtualized "withdrawn dividends"
uint256 _tokens = purchaseTokens(_dividends, 0x0);
// fire event
emit onReinvestment(_customerAddress, _dividends, _tokens);
}
/**
* Alias of sell() and withdraw().
*/
function exit()
public
{
// get token count for caller & sell them all
address _customerAddress = msg.sender;
uint256 _tokens = tokenBalanceLedger_[_customerAddress];
if(_tokens > 0) sell(_tokens);
// lambo delivery service
withdraw();
}
/**
* Withdraws all of the callers earnings.
*/
function withdraw()
onlyStronghands()
public
{
// setup data
address _customerAddress = msg.sender;
uint256 _dividends = myDividends(false); // get ref. bonus later in the code
// update dividend tracker
payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
// add ref. bonus
_dividends += referralBalance_[_customerAddress];
referralBalance_[_customerAddress] = 0;
// lambo delivery service
_customerAddress.transfer(_dividends);
// fire event
emit onWithdraw(_customerAddress, _dividends);
}
/**
* Liquifies tokens to ethereum.
*/
function sell(uint256 _amountOfTokens)
onlyBagholders()
public
{
// setup data
address _customerAddress = msg.sender;
// russian hackers BTFO
require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
uint256 _tokens = _amountOfTokens;
uint256 _ethereum = tokensToEthereum_(_tokens);
uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
// burn the sold tokens
tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
// update dividends tracker
int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
payoutsTo_[_customerAddress] -= _updatedPayouts;
// dividing by zero is a bad idea
if (tokenSupply_ > 0) {
// update the amount of dividends per token
profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
}
// fire event
emit onTokenSell(_customerAddress, _tokens, _taxedEthereum);
}
/**
* ERC20 Transfer
* Contract address is blocked from using the transfer function
* Contact us to approve contracts for transfer
* Contracts will not be a registered user by default
* All contracts will be approved unless the contract is malicious
*/
function transfer(address _toAddress, uint256 _amountOfTokens)
onlyBagholders()
public
returns(bool)
{
// setup
address _customerAddress = msg.sender;
require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
require(user[_customerAddress]);
// withdraw all outstanding dividends first
if(myDividends(true) > 0) withdraw();
// exchange tokens
tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens);
// update dividend trackers
payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens);
bytes memory _empty;
uint256 codeLength;
assembly {
codeLength := extcodesize(_toAddress)
}
if(codeLength > 0){
ERC223ReceivingContract receiver = ERC223ReceivingContract(_toAddress);
receiver.tokenFallback(_customerAddress, _amountOfTokens, _empty);
}
// fire event
emit Transfer(_customerAddress, _toAddress, _amountOfTokens, _empty);
// ERC20
return true;
}
/**
* ERC223 Transfer
* Contract address is blocked from using the transfer function
* Contact us to approve contracts for transfer
* Contracts will not be a registered user by default
* All contracts will be approved unless the contract is malicious
*/
function transfer(address _toAddress, uint256 _amountOfTokens, bytes _data)
onlyBagholders()
public
returns(bool)
{
// setup
address _customerAddress = msg.sender;
require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
require(user[_customerAddress]);
// withdraw all outstanding dividends first
if(myDividends(true) > 0) withdraw();
// exchange tokens
tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens);
// update dividend trackers
payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens);
uint256 codeLength;
assembly {
codeLength := extcodesize(_toAddress)
}
if(codeLength > 0){
ERC223ReceivingContract receiver = ERC223ReceivingContract(_toAddress);
receiver.tokenFallback(_customerAddress, _amountOfTokens, _data);
}
// fire event
emit Transfer(_customerAddress, _toAddress, _amountOfTokens, _data);
// ERC223
return true;
}
/*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/
/**
* In case one of us dies, we need to replace ourselves.
*/
function setAdministrator(bytes32 _identifier, bool _status)
onlyAdministrator()
public
{
administrators[_identifier] = _status;
}
/**
* If we want to rebrand, we can.
*/
function setName(string _name)
onlyAdministrator()
public
{
name = _name;
}
/**
* If we want to rebrand, we can.
*/
function setSymbol(string _symbol)
onlyAdministrator()
public
{
symbol = _symbol;
}
/**
* Change start time.
*/
function setTimestamp(uint256 _timestamp)
onlyAdministrator()
public
{
require(now < 1541001600);
startTime = _timestamp;
}
/**
* Manually add a user to contract for transfer.
*/
function setUser(address[] _userAddress)
onlyAdministrator()
public
{
uint256 _length = _userAddress.length;
require(_length > 0);
for(uint256 i = 0; i < _length; i++){
if(!user[_userAddress[i]])
user[_userAddress[i]] = true;
}
}
/*---------- HELPERS AND CALCULATORS ----------*/
/**
* Method to view the current Ethereum stored in the contract
* Example: totalEthereumBalance()
*/
function totalEthereumBalance()
public
view
returns(uint)
{
return address(this).balance;
}
/**
* Retrieve the total token supply.
*/
function totalSupply()
public
view
returns(uint256)
{
return tokenSupply_;
}
/**
* Retrieve the tokens owned by the caller.
*/
function myTokens()
public
view
returns(uint256)
{
address _customerAddress = msg.sender;
return balanceOf(_customerAddress);
}
/**
* Retrieve the dividends owned by the caller.
* If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
* The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
* But in the internal calculations, we want them separate.
*/
function myDividends(bool _includeReferralBonus)
public
view
returns(uint256)
{
address _customerAddress = msg.sender;
return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
}
/**
* Retrieve the token balance of any single address.
*/
function balanceOf(address _customerAddress)
view
public
returns(uint256)
{
return tokenBalanceLedger_[_customerAddress];
}
/**
* Retrieve the dividend balance of any single address.
*/
function dividendsOf(address _customerAddress)
view
public
returns(uint256)
{
return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
}
/**
* Return the buy price of 1 individual token.
*/
function sellPrice()
public
view
returns(uint256)
{
// our calculation relies on the token supply, so we need supply. Doh.
if(tokenSupply_ == 0){
return tokenPriceInitial_ - tokenPriceIncremental_;
} else {
uint256 _ethereum = tokensToEthereum_(1e18);
uint256 _dividends = SafeMath.div(_ethereum, dividendFee_ );
uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
return _taxedEthereum;
}
}
/**
* Return the sell price of 1 individual token.
*/
function buyPrice()
public
view
returns(uint256)
{
// our calculation relies on the token supply, so we need supply. Doh.
if(tokenSupply_ == 0){
return tokenPriceInitial_ + tokenPriceIncremental_;
} else {
uint256 _ethereum = tokensToEthereum_(1e18);
uint256 _dividends = SafeMath.div(_ethereum, dividendFee_ );
uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
return _taxedEthereum;
}
}
/**
* Function for the frontend to dynamically retrieve the price scaling of buy orders.
*/
function calculateTokensReceived(uint256 _ethereumToSpend)
public
view
returns(uint256)
{
uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_);
uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
return _amountOfTokens;
}
/**
* Function for the frontend to dynamically retrieve the price scaling of sell orders.
*/
function calculateEthereumReceived(uint256 _tokensToSell)
public
view
returns(uint256)
{
require(_tokensToSell <= tokenSupply_);
uint256 _ethereum = tokensToEthereum_(_tokensToSell);
uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
return _taxedEthereum;
}
/*==========================================
= INTERNAL FUNCTIONS =
==========================================*/
function purchaseTokens(uint256 _incomingEthereum, address _referredBy)
internal
returns(uint256)
{
// data setup
address _customerAddress = msg.sender;
uint256 _undividedDividends = SafeMath.div(_incomingEthereum, dividendFee_);
uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
uint256 _fee = _dividends * magnitude;
require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
// is the user referred by a masternode?
if(
_referredBy != 0x0000000000000000000000000000000000000000 &&
_referredBy != _customerAddress &&
register[_referredBy] != bytes32(0)
){
// wealth redistribution
referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
} else {
// no ref purchase
// add the referral bonus back to the global dividends cake
_dividends = SafeMath.add(_dividends, _referralBonus);
_fee = _dividends * magnitude;
}
// we can't give people infinite ethereum
if(tokenSupply_ > 0){
// add tokens to the pool
tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
// take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
// calculate the amount of tokens the customer receives over his purchase
_fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
} else {
// add tokens to the pool
tokenSupply_ = _amountOfTokens;
}
// update circulating supply & the ledger address for the customer
tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
// Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them;
//really i know you think you do but you don't
int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
payoutsTo_[_customerAddress] += _updatedPayouts;
if(_customerAddress == tx.origin && !user[_customerAddress])
user[_customerAddress] = true;
// fire event
emit onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy);
return _amountOfTokens;
}
/**
* Calculate Token price based on an amount of incoming ethereum
* It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
* Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
*/
function ethereumToTokens_(uint256 _ethereum)
public
view
returns(uint256)
{
uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
uint256 _tokensReceived =
(
(
// underflow attempts BTFO
SafeMath.sub(
(sqrt
(
(_tokenPriceInitial**2)
+
(2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
+
(((tokenPriceIncremental_)**2)*(tokenSupply_**2))
+
(2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
)
), _tokenPriceInitial
)
)/(tokenPriceIncremental_)
)-(tokenSupply_)
;
return _tokensReceived;
}
/**
* Calculate token sell value.
* It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
* Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
*/
function tokensToEthereum_(uint256 _tokens)
internal
view
returns(uint256)
{
uint256 tokens_ = (_tokens + 1e18);
uint256 _tokenSupply = (tokenSupply_ + 1e18);
uint256 _etherReceived =
(
// underflow attempts BTFO
SafeMath.sub(
(
(
(
tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18))
)-tokenPriceIncremental_
)*(tokens_ - 1e18)
),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
)
/1e18);
return _etherReceived;
}
function sqrt(uint x) internal pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
}
contract ERC223ReceivingContract {
function tokenFallback(address _from, uint256 _amountOfTokens, bytes _data) public returns (bool);
}
/**
* @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;
}
}
library NameFilter {
function nameFilter(string _input)
internal
pure
returns(bytes32)
{
bytes memory _temp = bytes(_input);
uint256 _length = _temp.length;
//sorry limited to 32 characters
require (_length <= 32 && _length > 3, "string must be between 4 and 32 characters");
// make sure first two characters are not 0x
if (_temp[0] == 0x30)
{
require(_temp[1] != 0x78, "string cannot start with 0x");
require(_temp[1] != 0x58, "string cannot start with 0X");
}
for (uint256 i = 0; i < _length; i++)
{
require
(
// OR uppercase A-Z
(_temp[i] > 0x40 && _temp[i] < 0x5b) ||
// OR lowercase a-z
(_temp[i] > 0x60 && _temp[i] < 0x7b) ||
// or 0-9
(_temp[i] > 0x2f && _temp[i] < 0x3a),
"string contains invalid characters"
);
}
bytes32 _ret;
assembly {
_ret := mload(add(_temp, 32))
}
return (_ret);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gaspriceMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereum","type":"uint256"}],"name":"ethereumToTokens_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"register","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxEarlyStake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userName","type":"string"}],"name":"registered","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_referredName","type":"string"}],"name":"buyXname","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"user","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whaleBalanceLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_timestamp","type":"uint256"}],"name":"setTimestamp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userAddress","type":"address[]"}],"name":"setUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"userName","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Transfer","type":"event"}]Contract Creation Code
60c0604052600c60808190527f4661697245786368616e6765000000000000000000000000000000000000000060a090815262000040916000919062000150565b506040805180820190915260048082527f46616972000000000000000000000000000000000000000000000000000000006020909201918252620000879160019162000150565b506404a817c800600255635bc295106003556722b1c8c1227a0000600455680d8d726b7177a800006005556000600a55600d805460ff19166001179055348015620000d157600080fd5b507fc4d602847c072c5746c8363cc08a314d51b7735cd5794f817bfe8d33f2adf4338054600160ff19918216811790925573bc817a495f0114755da5305c5aa84fc5ca7ebabd60005260066020527f4c89a3834a4170789301d95459391d36b427695fd847bcc6e3617dd57e330e5080549091169091179055620001f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019357805160ff1916838001178555620001c3565b82800160010185558215620001c3579182015b82811115620001c3578251825591602001919060010190620001a6565b50620001d1929150620001d5565b5090565b620001f291905b80821115620001d15760008155600101620001dc565b90565b61264f80620002056000396000f3006080604052600436106101cb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461028057806306fdde03146102b357806310d0ffdd1461033d578063139965321461035557806318160ddd1461036a578063226093731461037f57806327defa1f146103975780632a9121c7146103c0578063313ce567146103d8578063392efb52146104035780633ccfd60b1461041b5780634420e486146104325780634b75033414610453578063585bc281146104685780635d2d5c371461047d578063688abbf7146104d65780636b2f4632146104f057806370a082311461050557806378e97925146105265780637edebaf11461053b57806381e7e20e146105875780638620410b146105a857806389135ae9146105bd57806391e33107146105da578063949e8acd146105ef57806395d89b4114610604578063a0a2b57314610619578063a9059cbb14610631578063b84c824614610655578063b94bae91146106ae578063be45fd6214610703578063c47f00271461076c578063e4849b32146107c5578063e639dded146107dd578063e9fad8ee14610811578063f088d54714610826578063fdb5a03e1461083a575b346000600554826101da61084f565b0310156101f0576002543a11156101f057600080fd5b50600d54339060ff16801561020757506003544211155b1561023857600160a060020a03811660009081526006602052604090205460ff16151561023357600080fd5b610270565b600d5460ff161561024e57600d805460ff191690555b6005548261025a61084f565b0310156102705760045482111561027057600080fd5b61027b346000610855565b505050005b34801561028c57600080fd5b506102a1600160a060020a0360043516610af6565b60408051918252519081900360200190f35b3480156102bf57600080fd5b506102c8610b31565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b506102a1600435610bbf565b34801561036157600080fd5b506102a1610bf4565b34801561037657600080fd5b506102a1610bfa565b34801561038b57600080fd5b506102a1600435610c00565b3480156103a357600080fd5b506103ac610c39565b604080519115158252519081900360200190f35b3480156103cc57600080fd5b506102a1600435610c42565b3480156103e457600080fd5b506103ed610cde565b6040805160ff9092168252519081900360200190f35b34801561040f57600080fd5b506103ac600435610ce3565b34801561042757600080fd5b50610430610cf8565b005b34801561043e57600080fd5b506102a1600160a060020a0360043516610dcb565b34801561045f57600080fd5b506102a1610ddd565b34801561047457600080fd5b506102a1610e32565b34801561048957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750610e389650505050505050565b3480156104e257600080fd5b506102a160043515156110a4565b3480156104fc57600080fd5b506102a161084f565b34801561051157600080fd5b506102a1600160a060020a03600435166110e7565b34801561053257600080fd5b506102a1611102565b6040805160206004803580820135601f81018490048402850184019095528484526102a19436949293602493928401919081908401838280828437509497506111089650505050505050565b34801561059357600080fd5b506103ac600160a060020a03600435166111df565b3480156105b457600080fd5b506102a16111f4565b3480156105c957600080fd5b50610430600435602435151561123d565b3480156105e657600080fd5b506102a1611322565b3480156105fb57600080fd5b506102a1611328565b34801561061057600080fd5b506102c861133b565b34801561062557600080fd5b50610430600435611395565b34801561063d57600080fd5b506103ac600160a060020a036004351660243561146f565b34801561066157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261043094369492936024939284019190819084018382808284375094975061175f9650505050505050565b3480156106ba57600080fd5b5060408051602060048035808201358381028086018501909652808552610430953695939460249493850192918291850190849080828437509497506118369650505050505050565b34801561070f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103ac948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119b19650505050505050565b34801561077857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750611c569650505050505050565b3480156107d157600080fd5b50610430600435611d2d565b3480156107e957600080fd5b506107f5600435611e84565b60408051600160a060020a039092168252519081900360200190f35b34801561081d57600080fd5b50610430611e9f565b6102a1600160a060020a0360043516611ecc565b34801561084657600080fd5b50610430611f7d565b30315b90565b6000338180808080808061086a8b600a612033565b9650610877876003612033565b9550610883878761204a565b945061088f8b8861204a565b935061089a84610c42565b925068010000000000000000850291506000831180156108c45750600a546108c2848261205c565b115b15156108cf57600080fd5b600160a060020a038a16158015906108f9575087600160a060020a03168a600160a060020a031614155b801561091c5750600160a060020a038a166000908152600e602052604090205415155b1561096257600160a060020a038a16600090815260086020526040902054610944908761205c565b600160a060020a038b1660009081526008602052604090205561097d565b61096c858761205c565b945068010000000000000000850291505b6000600a5411156109e157610994600a548461205c565b600a8190556801000000000000000086028115156109ae57fe5b600b8054929091049091019055600a546801000000000000000086028115156109d357fe5b0483028203820391506109e7565b600a8390555b600160a060020a038816600090815260076020526040902054610a0a908461205c565b600160a060020a038916600081815260076020908152604080832094909455600b5460099091529290208054928602859003928301905590915032148015610a6b5750600160a060020a03881660009081526010602052604090205460ff16155b15610a9457600160a060020a0388166000908152601060205260409020805460ff191660011790555b89600160a060020a031688600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58d86604051808381526020018281526020019250505060405180910390a350909998505050505050505050565b600160a060020a0316600090815260096020908152604080832054600790925290912054600b54680100000000000000009102919091030490565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b505050505081565b6000808080610bcf85600a612033565b9250610bdb858461204a565b9150610be682610c42565b90508093505b505050919050565b60025481565b600a5490565b600080600080600a548511151515610c1757600080fd5b610c2085612072565b9250610c2d83600a612033565b9150610be6838361204a565b600d5460ff1681565b600a546000906d04ee2d6d415b85acef810000000090829064012a05f200610ccb610cc57301c06a5ec5433c60ddaa16406f5a400000000000880268015af1d78b58c400006002860a0201710b7abc627050305adf14a3d9e400000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000016120df565b8561204a565b811515610cd457fe5b0403949350505050565b601281565b600c6020526000908152604090205460ff1681565b6000806000610d0760016110a4565b11610d1157600080fd5b339150610d1e60006110a4565b600160a060020a038316600081815260096020908152604080832080546801000000000000000087020190556008909152808220805490839055905193019350909183156108fc0291849190818181858888f19350505050158015610d87573d6000803e3d6000fd5b50604080518281529051600160a060020a038416917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a25050565b600e6020526000908152604090205481565b600080600080600a5460001415610dfc57655af1e6744e009350610e2c565b610e0d670de0b6b3a7640000612072565b9250610e1a83600a612033565b9150610e26838361204a565b90508093505b50505090565b60045481565b336000610e4483612114565b9050600160a060020a0382163214610ea6576040805160e560020a62461bcd02815260206004820152601e60248201527f73656e64657220646f6573206e6f74206d656574207468652072756c65730000604482015290519081900360640190fd5b801515610efd576040805160e560020a62461bcd02815260206004820152601460248201527f6e616d652063616e6e6f7420626520656d707479000000000000000000000000604482015290519081900360640190fd5b6000818152600f6020526040902054600160a060020a031615610f90576040805160e560020a62461bcd02815260206004820152602560248201527f74686973206e616d652068617320616c7265616479206265656e20726567697360448201527f7465726564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600e602052604090205415611024576040805160e560020a62461bcd02815260206004820152602160248201527f706c6561736520646f206e6f742072657065617420726567697374726174696f60448201527f6e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600f60209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387169081179091558352600e8252808320849055601090915290205460ff16151561109f57600160a060020a0382166000908152601060205260409020805460ff191660011790555b505050565b600033826110ba576110b581610af6565b6110de565b600160a060020a0381166000908152600860205260409020546110dc82610af6565b015b91505b50919050565b600160a060020a031660009081526007602052604090205490565b60035481565b60003460006005548261111961084f565b03101561112f576002543a111561112f57600080fd5b50600d54339060ff16801561114657506003544211155b1561117757600160a060020a03811660009081526006602052604090205460ff16151561117257600080fd5b6111af565b600d5460ff161561118d57600d805460ff191690555b6005548261119961084f565b0310156111af576004548211156111af57600080fd5b610bec34600f60006111c088612114565b8152602081019190915260400160002054600160a060020a0316610855565b60106020526000908152604090205460ff1681565b600080600080600a546000141561121357655af43a8032009350610e2c565b611224670de0b6b3a7640000612072565b925061123183600a612033565b9150610e26838361205c565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106112b65780518252601f199092019160209182019101611297565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061130191505057600080fd5b506000918252600c6020526040909120805460ff1916911515919091179055565b60055481565b600033611334816110e7565b91505b5090565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831061140e5780518252601f1990920191602091820191016113ef565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061145991505057600080fd5b635bd9d180421061146957600080fd5b50600355565b60008060606000806000611481611328565b1161148b57600080fd5b336000818152600760205260409020549094508611156114aa57600080fd5b600160a060020a03841660009081526010602052604090205460ff1615156114d157600080fd5b60006114dd60016110a4565b11156114eb576114eb610cf8565b600160a060020a03841660009081526007602052604090205461150e908761204a565b600160a060020a03808616600090815260076020526040808220939093559089168152205461153d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948a16835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b925082111561169d57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301908152602483018890526060604484019081528551606485015285518a949385169363c0ee0b8a9389938c938a9360840190602085019080838360005b8381101561162257818101518382015260200161160a565b50505050905090810190601f16801561164f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050506040513d602081101561169a57600080fd5b50505b86600160a060020a031684600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1688866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117175781810151838201526020016116ff565b50505050905090810190601f1680156117445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019695505050505050565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106117d85780518252601f1990920191602091820191016117b9565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061182391505057600080fd5b815161109f906001906020850190612595565b6000806000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106118b25780518252601f199092019160209182019101611893565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16151592506118fd91505057600080fd5b835192506000831161190e57600080fd5b600091505b828210156119ab5760106000858481518110151561192d57fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff1615156119a057600160106000868581518110151561196d57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790555b600190910190611913565b50505050565b60008060008060006119c1611328565b116119cb57600080fd5b336000818152600760205260409020549093508611156119ea57600080fd5b600160a060020a03831660009081526010602052604090205460ff161515611a1157600080fd5b6000611a1d60016110a4565b1115611a2b57611a2b610cf8565b600160a060020a038316600090815260076020526040902054611a4e908761204a565b600160a060020a038085166000908152600760205260408082209390935590891681522054611a7d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948916835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b9250821115611bdd57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660048301908152602483018890526060604484019081528751606485015287518a949385169363c0ee0b8a9388938c938c9360840190602085019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b50505b86600160a060020a031683600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168888604051808381526020018060200182810382528381815181526020019150805190602001908083836000838110156117175781810151838201526020016116ff565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611ccf5780518252601f199092019160209182019101611cb0565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611d1a91505057600080fd5b815161109f906000906020850190612595565b6000806000806000806000611d40611328565b11611d4a57600080fd5b33600081815260076020526040902054909650871115611d6957600080fd5b869450611d7585612072565b9350611d8284600a612033565b9250611d8e848461204a565b9150611d9c600a548661204a565b600a55600160a060020a038616600090815260076020526040902054611dc2908661204a565b600160a060020a038716600090815260076020908152604080832093909355600b546009909152918120805492880268010000000000000000860201928390039055600a549192501015611e3857611e34600b54600a54680100000000000000008602811515611e2e57fe5b0461205c565b600b555b60408051868152602081018490528151600160a060020a038916927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a250505050505050565b600f60205260009081526040902054600160a060020a031681565b3360008181526007602052604081205490811115611ec057611ec081611d2d565b611ec8610cf8565b5050565b600034600060055482611edd61084f565b031015611ef3576002543a1115611ef357600080fd5b50600d54339060ff168015611f0a57506003544211155b15611f3b57600160a060020a03811660009081526006602052604090205460ff161515611f3657600080fd5b611f73565b600d5460ff1615611f5157600d805460ff191690555b60055482611f5d61084f565b031015611f7357600454821115611f7357600080fd5b610bec3485610855565b600080600080611f8d60016110a4565b11611f9757600080fd5b611fa160006110a4565b33600081815260096020908152604080832080546801000000000000000087020190556008909152812080549082905590920194509250611fe3908490610855565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828481151561204157fe5b04949350505050565b60008282111561205657fe5b50900390565b60008282018381101561206b57fe5b9392505050565b600a54600090670de0b6b3a76400008381019181019083906120cc655af1e6744e0082850464012a05f20002018702600283670de0b6b3a763ffff1982890a8b9003010464012a05f200028115156120c657fe5b0461204a565b8115156120d557fe5b0495945050505050565b80600260018201045b818110156110e157809150600281828581151561210157fe5b040181151561210c57fe5b0490506120e8565b8051600090829082806020831180159061212e5750600383115b15156121aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203420616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8360008151811015156121b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156122fc578360018151811015156121f357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612270576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b83600181518110151561227f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156122fc576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b828210156125885783517f40000000000000000000000000000000000000000000000000000000000000009085908490811061233957fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156123ad575083517f5b000000000000000000000000000000000000000000000000000000000000009085908490811061238e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612457575083517f6000000000000000000000000000000000000000000000000000000000000000908590849081106123e357fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612457575083517f7b000000000000000000000000000000000000000000000000000000000000009085908490811061243857fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612501575083517f2f000000000000000000000000000000000000000000000000000000000000009085908490811061248d57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612501575083517f3a00000000000000000000000000000000000000000000000000000000000000908590849081106124e257fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561257d576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600190910190612301565b5050506020015192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125d657805160ff1916838001178555612603565b82800160010185558215612603579182015b828111156126035782518255916020019190600101906125e8565b50611337926108529250905b80821115611337576000815560010161260f5600a165627a7a72305820fa1e3d8583f022995a7e987566e75b84a988c7bb8df0a30abbbf9e69fe8fc8710029
Deployed Bytecode
0x6080604052600436106101cb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461028057806306fdde03146102b357806310d0ffdd1461033d578063139965321461035557806318160ddd1461036a578063226093731461037f57806327defa1f146103975780632a9121c7146103c0578063313ce567146103d8578063392efb52146104035780633ccfd60b1461041b5780634420e486146104325780634b75033414610453578063585bc281146104685780635d2d5c371461047d578063688abbf7146104d65780636b2f4632146104f057806370a082311461050557806378e97925146105265780637edebaf11461053b57806381e7e20e146105875780638620410b146105a857806389135ae9146105bd57806391e33107146105da578063949e8acd146105ef57806395d89b4114610604578063a0a2b57314610619578063a9059cbb14610631578063b84c824614610655578063b94bae91146106ae578063be45fd6214610703578063c47f00271461076c578063e4849b32146107c5578063e639dded146107dd578063e9fad8ee14610811578063f088d54714610826578063fdb5a03e1461083a575b346000600554826101da61084f565b0310156101f0576002543a11156101f057600080fd5b50600d54339060ff16801561020757506003544211155b1561023857600160a060020a03811660009081526006602052604090205460ff16151561023357600080fd5b610270565b600d5460ff161561024e57600d805460ff191690555b6005548261025a61084f565b0310156102705760045482111561027057600080fd5b61027b346000610855565b505050005b34801561028c57600080fd5b506102a1600160a060020a0360043516610af6565b60408051918252519081900360200190f35b3480156102bf57600080fd5b506102c8610b31565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b506102a1600435610bbf565b34801561036157600080fd5b506102a1610bf4565b34801561037657600080fd5b506102a1610bfa565b34801561038b57600080fd5b506102a1600435610c00565b3480156103a357600080fd5b506103ac610c39565b604080519115158252519081900360200190f35b3480156103cc57600080fd5b506102a1600435610c42565b3480156103e457600080fd5b506103ed610cde565b6040805160ff9092168252519081900360200190f35b34801561040f57600080fd5b506103ac600435610ce3565b34801561042757600080fd5b50610430610cf8565b005b34801561043e57600080fd5b506102a1600160a060020a0360043516610dcb565b34801561045f57600080fd5b506102a1610ddd565b34801561047457600080fd5b506102a1610e32565b34801561048957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750610e389650505050505050565b3480156104e257600080fd5b506102a160043515156110a4565b3480156104fc57600080fd5b506102a161084f565b34801561051157600080fd5b506102a1600160a060020a03600435166110e7565b34801561053257600080fd5b506102a1611102565b6040805160206004803580820135601f81018490048402850184019095528484526102a19436949293602493928401919081908401838280828437509497506111089650505050505050565b34801561059357600080fd5b506103ac600160a060020a03600435166111df565b3480156105b457600080fd5b506102a16111f4565b3480156105c957600080fd5b50610430600435602435151561123d565b3480156105e657600080fd5b506102a1611322565b3480156105fb57600080fd5b506102a1611328565b34801561061057600080fd5b506102c861133b565b34801561062557600080fd5b50610430600435611395565b34801561063d57600080fd5b506103ac600160a060020a036004351660243561146f565b34801561066157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261043094369492936024939284019190819084018382808284375094975061175f9650505050505050565b3480156106ba57600080fd5b5060408051602060048035808201358381028086018501909652808552610430953695939460249493850192918291850190849080828437509497506118369650505050505050565b34801561070f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103ac948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119b19650505050505050565b34801561077857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750611c569650505050505050565b3480156107d157600080fd5b50610430600435611d2d565b3480156107e957600080fd5b506107f5600435611e84565b60408051600160a060020a039092168252519081900360200190f35b34801561081d57600080fd5b50610430611e9f565b6102a1600160a060020a0360043516611ecc565b34801561084657600080fd5b50610430611f7d565b30315b90565b6000338180808080808061086a8b600a612033565b9650610877876003612033565b9550610883878761204a565b945061088f8b8861204a565b935061089a84610c42565b925068010000000000000000850291506000831180156108c45750600a546108c2848261205c565b115b15156108cf57600080fd5b600160a060020a038a16158015906108f9575087600160a060020a03168a600160a060020a031614155b801561091c5750600160a060020a038a166000908152600e602052604090205415155b1561096257600160a060020a038a16600090815260086020526040902054610944908761205c565b600160a060020a038b1660009081526008602052604090205561097d565b61096c858761205c565b945068010000000000000000850291505b6000600a5411156109e157610994600a548461205c565b600a8190556801000000000000000086028115156109ae57fe5b600b8054929091049091019055600a546801000000000000000086028115156109d357fe5b0483028203820391506109e7565b600a8390555b600160a060020a038816600090815260076020526040902054610a0a908461205c565b600160a060020a038916600081815260076020908152604080832094909455600b5460099091529290208054928602859003928301905590915032148015610a6b5750600160a060020a03881660009081526010602052604090205460ff16155b15610a9457600160a060020a0388166000908152601060205260409020805460ff191660011790555b89600160a060020a031688600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58d86604051808381526020018281526020019250505060405180910390a350909998505050505050505050565b600160a060020a0316600090815260096020908152604080832054600790925290912054600b54680100000000000000009102919091030490565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b505050505081565b6000808080610bcf85600a612033565b9250610bdb858461204a565b9150610be682610c42565b90508093505b505050919050565b60025481565b600a5490565b600080600080600a548511151515610c1757600080fd5b610c2085612072565b9250610c2d83600a612033565b9150610be6838361204a565b600d5460ff1681565b600a546000906d04ee2d6d415b85acef810000000090829064012a05f200610ccb610cc57301c06a5ec5433c60ddaa16406f5a400000000000880268015af1d78b58c400006002860a0201710b7abc627050305adf14a3d9e400000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000016120df565b8561204a565b811515610cd457fe5b0403949350505050565b601281565b600c6020526000908152604090205460ff1681565b6000806000610d0760016110a4565b11610d1157600080fd5b339150610d1e60006110a4565b600160a060020a038316600081815260096020908152604080832080546801000000000000000087020190556008909152808220805490839055905193019350909183156108fc0291849190818181858888f19350505050158015610d87573d6000803e3d6000fd5b50604080518281529051600160a060020a038416917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a25050565b600e6020526000908152604090205481565b600080600080600a5460001415610dfc57655af1e6744e009350610e2c565b610e0d670de0b6b3a7640000612072565b9250610e1a83600a612033565b9150610e26838361204a565b90508093505b50505090565b60045481565b336000610e4483612114565b9050600160a060020a0382163214610ea6576040805160e560020a62461bcd02815260206004820152601e60248201527f73656e64657220646f6573206e6f74206d656574207468652072756c65730000604482015290519081900360640190fd5b801515610efd576040805160e560020a62461bcd02815260206004820152601460248201527f6e616d652063616e6e6f7420626520656d707479000000000000000000000000604482015290519081900360640190fd5b6000818152600f6020526040902054600160a060020a031615610f90576040805160e560020a62461bcd02815260206004820152602560248201527f74686973206e616d652068617320616c7265616479206265656e20726567697360448201527f7465726564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600e602052604090205415611024576040805160e560020a62461bcd02815260206004820152602160248201527f706c6561736520646f206e6f742072657065617420726567697374726174696f60448201527f6e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600f60209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387169081179091558352600e8252808320849055601090915290205460ff16151561109f57600160a060020a0382166000908152601060205260409020805460ff191660011790555b505050565b600033826110ba576110b581610af6565b6110de565b600160a060020a0381166000908152600860205260409020546110dc82610af6565b015b91505b50919050565b600160a060020a031660009081526007602052604090205490565b60035481565b60003460006005548261111961084f565b03101561112f576002543a111561112f57600080fd5b50600d54339060ff16801561114657506003544211155b1561117757600160a060020a03811660009081526006602052604090205460ff16151561117257600080fd5b6111af565b600d5460ff161561118d57600d805460ff191690555b6005548261119961084f565b0310156111af576004548211156111af57600080fd5b610bec34600f60006111c088612114565b8152602081019190915260400160002054600160a060020a0316610855565b60106020526000908152604090205460ff1681565b600080600080600a546000141561121357655af43a8032009350610e2c565b611224670de0b6b3a7640000612072565b925061123183600a612033565b9150610e26838361205c565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106112b65780518252601f199092019160209182019101611297565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061130191505057600080fd5b506000918252600c6020526040909120805460ff1916911515919091179055565b60055481565b600033611334816110e7565b91505b5090565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831061140e5780518252601f1990920191602091820191016113ef565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061145991505057600080fd5b635bd9d180421061146957600080fd5b50600355565b60008060606000806000611481611328565b1161148b57600080fd5b336000818152600760205260409020549094508611156114aa57600080fd5b600160a060020a03841660009081526010602052604090205460ff1615156114d157600080fd5b60006114dd60016110a4565b11156114eb576114eb610cf8565b600160a060020a03841660009081526007602052604090205461150e908761204a565b600160a060020a03808616600090815260076020526040808220939093559089168152205461153d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948a16835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b925082111561169d57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301908152602483018890526060604484019081528551606485015285518a949385169363c0ee0b8a9389938c938a9360840190602085019080838360005b8381101561162257818101518382015260200161160a565b50505050905090810190601f16801561164f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050506040513d602081101561169a57600080fd5b50505b86600160a060020a031684600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1688866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117175781810151838201526020016116ff565b50505050905090810190601f1680156117445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019695505050505050565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106117d85780518252601f1990920191602091820191016117b9565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061182391505057600080fd5b815161109f906001906020850190612595565b6000806000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106118b25780518252601f199092019160209182019101611893565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16151592506118fd91505057600080fd5b835192506000831161190e57600080fd5b600091505b828210156119ab5760106000858481518110151561192d57fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff1615156119a057600160106000868581518110151561196d57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790555b600190910190611913565b50505050565b60008060008060006119c1611328565b116119cb57600080fd5b336000818152600760205260409020549093508611156119ea57600080fd5b600160a060020a03831660009081526010602052604090205460ff161515611a1157600080fd5b6000611a1d60016110a4565b1115611a2b57611a2b610cf8565b600160a060020a038316600090815260076020526040902054611a4e908761204a565b600160a060020a038085166000908152600760205260408082209390935590891681522054611a7d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948916835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b9250821115611bdd57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660048301908152602483018890526060604484019081528751606485015287518a949385169363c0ee0b8a9388938c938c9360840190602085019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b50505b86600160a060020a031683600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168888604051808381526020018060200182810382528381815181526020019150805190602001908083836000838110156117175781810151838201526020016116ff565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611ccf5780518252601f199092019160209182019101611cb0565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611d1a91505057600080fd5b815161109f906000906020850190612595565b6000806000806000806000611d40611328565b11611d4a57600080fd5b33600081815260076020526040902054909650871115611d6957600080fd5b869450611d7585612072565b9350611d8284600a612033565b9250611d8e848461204a565b9150611d9c600a548661204a565b600a55600160a060020a038616600090815260076020526040902054611dc2908661204a565b600160a060020a038716600090815260076020908152604080832093909355600b546009909152918120805492880268010000000000000000860201928390039055600a549192501015611e3857611e34600b54600a54680100000000000000008602811515611e2e57fe5b0461205c565b600b555b60408051868152602081018490528151600160a060020a038916927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a250505050505050565b600f60205260009081526040902054600160a060020a031681565b3360008181526007602052604081205490811115611ec057611ec081611d2d565b611ec8610cf8565b5050565b600034600060055482611edd61084f565b031015611ef3576002543a1115611ef357600080fd5b50600d54339060ff168015611f0a57506003544211155b15611f3b57600160a060020a03811660009081526006602052604090205460ff161515611f3657600080fd5b611f73565b600d5460ff1615611f5157600d805460ff191690555b60055482611f5d61084f565b031015611f7357600454821115611f7357600080fd5b610bec3485610855565b600080600080611f8d60016110a4565b11611f9757600080fd5b611fa160006110a4565b33600081815260096020908152604080832080546801000000000000000087020190556008909152812080549082905590920194509250611fe3908490610855565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828481151561204157fe5b04949350505050565b60008282111561205657fe5b50900390565b60008282018381101561206b57fe5b9392505050565b600a54600090670de0b6b3a76400008381019181019083906120cc655af1e6744e0082850464012a05f20002018702600283670de0b6b3a763ffff1982890a8b9003010464012a05f200028115156120c657fe5b0461204a565b8115156120d557fe5b0495945050505050565b80600260018201045b818110156110e157809150600281828581151561210157fe5b040181151561210c57fe5b0490506120e8565b8051600090829082806020831180159061212e5750600383115b15156121aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203420616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8360008151811015156121b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156122fc578360018151811015156121f357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612270576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b83600181518110151561227f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156122fc576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b828210156125885783517f40000000000000000000000000000000000000000000000000000000000000009085908490811061233957fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156123ad575083517f5b000000000000000000000000000000000000000000000000000000000000009085908490811061238e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612457575083517f6000000000000000000000000000000000000000000000000000000000000000908590849081106123e357fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612457575083517f7b000000000000000000000000000000000000000000000000000000000000009085908490811061243857fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612501575083517f2f000000000000000000000000000000000000000000000000000000000000009085908490811061248d57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612501575083517f3a00000000000000000000000000000000000000000000000000000000000000908590849081106124e257fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561257d576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600190910190612301565b5050506020015192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125d657805160ff1916838001178555612603565b82800160010185558215612603579182015b828111156126035782518255916020019190600101906125e8565b50611337926108529250905b80821115611337576000815560010161260f5600a165627a7a72305820fa1e3d8583f022995a7e987566e75b84a988c7bb8df0a30abbbf9e69fe8fc8710029
Swarm Source
bzzr://fa1e3d8583f022995a7e987566e75b84a988c7bb8df0a30abbbf9e69fe8fc871
Loading...
Loading
Loading...
Loading
Net Worth in USD
$8,306.50
Net Worth in ETH
4.059961
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,045.17 | 4.0615 | $8,306.5 |
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.