Feature Tip: Add private address tag to any address under My Name Tag !
This is E4ROW old contract address. The new contract can be found here.
Overview
ETH Balance
1.143157062013640696 ETH
Eth Value
$3,556.38 (@ $3,111.01/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 947 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Change Devevoper... | 20121099 | 154 days ago | IN | 0 ETH | 0.00016748 | ||||
Change Owner | 19924967 | 181 days ago | IN | 0 ETH | 0.00020472 | ||||
Purchase Token | 19924964 | 181 days ago | IN | 0.001 ETH | 0.00020022 | ||||
Change Owner | 19924804 | 181 days ago | IN | 0 ETH | 0.00018598 | ||||
Change Devevoper... | 19924801 | 181 days ago | IN | 0 ETH | 0.00018191 | ||||
Purchase Token | 19924793 | 181 days ago | IN | 0.00001 ETH | 0.0002021 | ||||
Hara Kiri | 19920901 | 182 days ago | IN | 0 ETH | 0.00026544 | ||||
Approve | 5610275 | 2382 days ago | IN | 0 ETH | 0.00095111 | ||||
Withdraw Dividen... | 5610211 | 2382 days ago | IN | 0 ETH | 0.00042951 | ||||
Transfer | 5513955 | 2398 days ago | IN | 0 ETH | 0.00024746 | ||||
Approve | 4951945 | 2493 days ago | IN | 0 ETH | 0.00018116 | ||||
Withdraw Dividen... | 4950885 | 2494 days ago | IN | 0 ETH | 0.00008181 | ||||
Approve | 4863840 | 2509 days ago | IN | 0 ETH | 0.00141592 | ||||
Withdraw Dividen... | 4863801 | 2509 days ago | IN | 0 ETH | 0.00064426 | ||||
Approve | 4822363 | 2517 days ago | IN | 0 ETH | 0.00135873 | ||||
Approve | 4822290 | 2517 days ago | IN | 0 ETH | 0.0009964 | ||||
Withdraw Dividen... | 4822230 | 2517 days ago | IN | 0 ETH | 0.00061359 | ||||
Transfer | 4785081 | 2523 days ago | IN | 0 ETH | 0.00041726 | ||||
Approve | 4737721 | 2531 days ago | IN | 0 ETH | 0.00030291 | ||||
Approve | 4726700 | 2533 days ago | IN | 0 ETH | 0.00045291 | ||||
Withdraw Dividen... | 4726576 | 2533 days ago | IN | 0 ETH | 0.00020453 | ||||
Approve | 4711870 | 2536 days ago | IN | 0 ETH | 0.00045291 | ||||
Withdraw Dividen... | 4711561 | 2536 days ago | IN | 0 ETH | 0.00020453 | ||||
Withdraw Dividen... | 4707549 | 2536 days ago | IN | 0 ETH | 0.00042951 | ||||
Transfer | 4662994 | 2544 days ago | IN | 0 ETH | 0.00080012 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5610211 | 2382 days ago | 0.00795544 ETH | ||||
4950885 | 2494 days ago | 0.00012366 ETH | ||||
4863801 | 2509 days ago | 0.00286796 ETH | ||||
4822230 | 2517 days ago | 0.00093839 ETH | ||||
4726576 | 2533 days ago | 0.00045148 ETH | ||||
4711561 | 2536 days ago | 0.00003502 ETH | ||||
4707549 | 2536 days ago | 0.00024732 ETH | ||||
4235470 | 2634 days ago | 0.41293464 ETH | ||||
4216866 | 2639 days ago | 0.00263008 ETH | ||||
4208469 | 2642 days ago | 0.00098929 ETH | ||||
4202954 | 2643 days ago | 0.00003502 ETH | ||||
4199918 | 2644 days ago | 0.00263008 ETH | ||||
4199374 | 2644 days ago | 0.00390284 ETH | ||||
4194842 | 2645 days ago | 0.00273199 ETH | ||||
4183516 | 2648 days ago | 0.0023417 ETH | ||||
4171317 | 2651 days ago | 0.00010508 ETH | ||||
4161185 | 2653 days ago | 0.00584901 ETH | ||||
4149467 | 2656 days ago | 0.01329321 ETH | ||||
4148355 | 2656 days ago | 0.00014011 ETH | ||||
4145659 | 2657 days ago | 0.00039028 ETH | ||||
4132947 | 2660 days ago | 0.00021017 ETH | ||||
4130810 | 2661 days ago | 0.00014011 ETH | ||||
4129558 | 2661 days ago | 0.01876795 ETH | ||||
4128959 | 2661 days ago | 0.00581274 ETH | ||||
4128846 | 2661 days ago | 0.00014011 ETH |
Loading...
Loading
Contract Name:
E4Token
Compiler Version
v0.4.10+commit.f0d539ae
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-04-25 */ // VERSION M(A) pragma solidity ^0.4.8; // // FOR REFERENCE - INCLUDE iE4RowEscrow (interface) CONTRACT at the top ..... // contract iE4RowEscrow { function getNumGamesStarted() constant returns (int ngames); } // Abstract contract for the full ERC 20 Token standard // https://github.com/ethereum/EIPs/issues/20 // --------------------------------- // ABSTRACT standard token class // --------------------------------- contract Token { function totalSupply() constant returns (uint256 supply); function balanceOf(address _owner) constant returns (uint256 balance); function transfer(address _to, uint256 _value) returns (bool success); function transferFrom(address _from, address _to, uint256 _value) returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint256 remaining); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } // -------------------------- // E4RowRewards - abstract e4 dividend contract // -------------------------- contract E4RowRewards { function checkDividends(address _addr) constant returns(uint _amount); function withdrawDividends() public returns (uint namount); } // -------------------------- // Finney Chip - token contract // -------------------------- contract E4Token is Token, E4RowRewards { event StatEvent(string msg); event StatEventI(string msg, uint val); enum SettingStateValue {debug, release, lockedRelease} enum IcoStatusValue {anouncement, saleOpen, saleClosed, failed, succeeded} struct tokenAccount { bool alloced; // flag to ascert prior allocation uint tokens; // num tokens uint balance; // rewards balance } // ----------------------------- // data storage // ---------------------------------------- address developers; // developers token holding address address public owner; // deployer executor address founderOrg; // founder orginaization contract address auxPartner; // aux partner (pr/auditing) - 1 percent upon close address e4_partner; // e4row contract addresses mapping (address => tokenAccount) holderAccounts ; // who holds how many tokens (high two bytes contain curPayId) mapping (uint => address) holderIndexes ; // for iteration thru holder uint numAccounts; uint partnerCredits; // amount partner (e4row) has paid mapping (address => mapping (address => uint256)) allowed; // approvals uint maxMintableTokens; // ... uint minIcoTokenGoal;// token goal by sale end uint minUsageGoal; // num games goal by usage deadline uint public tokenPrice; // price per token uint public payoutThreshold; // threshold till payout uint totalTokenFundsReceived; // running total of token funds received uint public totalTokensMinted; // total number of tokens minted uint public holdoverBalance; // hold this amount until threshhold before reward payout int public payoutBalance; // hold this amount until threshhold before reward payout int prOrigPayoutBal; // original payout balance before run uint prOrigTokensMint; // tokens minted at start of pay run uint public curPayoutId; // current payout id uint public lastPayoutIndex; // payout idx between run segments uint public maxPaysPer; // num pays per segment uint public minPayInterval; // min interval between start pay run uint fundingStart; // funding start time immediately after anouncement uint fundingDeadline; // funding end time uint usageDeadline; // deadline where minimum usage needs to be met before considered success uint public lastPayoutTime; // timestamp of last payout time uint vestTime; // 1 year past sale vest developer tokens uint numDevTokens; // 10 per cent of tokens after close to developers bool developersGranted; // flag uint remunerationStage; // 0 for not yet, 1 for 10 percent, 2 for remaining upon succeeded. uint public remunerationBalance; // remuneration balance to release token funds uint auxPartnerBalance; // aux partner balance - 1 percent uint rmGas; // remuneration gas uint rwGas; // reward gas uint rfGas; // refund gas IcoStatusValue icoStatus; // current status of ico SettingStateValue public settingsState; // -------------------- // contract constructor // -------------------- function E4Token() { owner = msg.sender; developers = msg.sender; } // ----------------------------------- // use this to reset everything, will never be called after lockRelease // ----------------------------------- function applySettings(SettingStateValue qState, uint _saleStart, uint _saleEnd, uint _usageEnd, uint _minUsage, uint _tokGoal, uint _maxMintable, uint _threshold, uint _price, uint _mpp, uint _mpi ) { if (msg.sender != owner) return; // these settings are permanently tweakable for performance adjustments payoutThreshold = _threshold; maxPaysPer = _mpp; minPayInterval = _mpi; // this first test checks if already locked if (settingsState == SettingStateValue.lockedRelease) return; settingsState = qState; // this second test allows locking without changing other permanent settings // WARNING, MAKE SURE YOUR'RE HAPPY WITH ALL SETTINGS // BEFORE LOCKING if (qState == SettingStateValue.lockedRelease) { StatEvent("Locking!"); return; } icoStatus = IcoStatusValue.anouncement; rmGas = 100000; // remuneration gas rwGas = 10000; // reward gas rfGas = 10000; // refund gas // zero out all token holders. // leave alloced on, leave num accounts // cant delete them anyways if (totalTokensMinted > 0) { for (uint i = 0; i < numAccounts; i++ ) { address a = holderIndexes[i]; if (a != address(0)) { holderAccounts[a].tokens = 0; holderAccounts[a].balance = 0; } } } // do not reset numAccounts! totalTokensMinted = 0; // this will erase totalTokenFundsReceived = 0; // this will erase. partnerCredits = 0; // reset all partner credits fundingStart = _saleStart; fundingDeadline = _saleEnd; usageDeadline = _usageEnd; minUsageGoal = _minUsage; minIcoTokenGoal = _tokGoal; maxMintableTokens = _maxMintable; tokenPrice = _price; vestTime = fundingStart + (365 days); numDevTokens = 0; holdoverBalance = 0; payoutBalance = 0; curPayoutId = 1; lastPayoutIndex = 0; remunerationStage = 0; remunerationBalance = 0; auxPartnerBalance = 0; developersGranted = false; lastPayoutTime = 0; if (this.balance > 0) { if (!owner.call.gas(rfGas).value(this.balance)()) StatEvent("ERROR!"); } StatEvent("ok"); } // --------------------------------------------------- // tokens held reserve the top two bytes for the payid last paid. // this is so holders at the top of the list dont transfer tokens // to themselves on the bottom of the list thus scamming the // system. this function deconstructs the tokenheld value. // --------------------------------------------------- function getPayIdAndHeld(uint _tokHeld) internal returns (uint _payId, uint _held) { _payId = (_tokHeld / (2 ** 48)) & 0xffff; _held = _tokHeld & 0xffffffffffff; } function getHeld(uint _tokHeld) internal returns (uint _held) { _held = _tokHeld & 0xffffffffffff; } // --------------------------------------------------- // allocate a new account by setting alloc to true // set the top to bytes of tokens to cur pay id to leave out of current round // add holder index, bump the num accounts // --------------------------------------------------- function addAccount(address _addr) internal { holderAccounts[_addr].alloced = true; holderAccounts[_addr].tokens = (curPayoutId * (2 ** 48)); holderIndexes[numAccounts++] = _addr; } // -------------------------------------- // BEGIN ERC-20 from StandardToken // -------------------------------------- function totalSupply() constant returns (uint256 supply) { if (icoStatus == IcoStatusValue.saleOpen || icoStatus == IcoStatusValue.anouncement) supply = maxMintableTokens; else supply = totalTokensMinted; } function transfer(address _to, uint256 _value) returns (bool success) { if ((msg.sender == developers) && (now < vestTime)) { //statEvent("Tokens not yet vested."); return false; } //Default assumes totalSupply can't be over max (2^256 - 1). //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap. //Replace the if with this one instead. //if (holderAccounts[msg.sender] >= _value && balances[_to] + _value > holderAccounts[_to]) { var (pidFrom, heldFrom) = getPayIdAndHeld(holderAccounts[msg.sender].tokens); if (heldFrom >= _value && _value > 0) { holderAccounts[msg.sender].tokens -= _value; if (!holderAccounts[_to].alloced) { addAccount(_to); } uint newHeld = _value + getHeld(holderAccounts[_to].tokens); if (icoStatus == IcoStatusValue.saleOpen) // avoid mcgees gambit pidFrom = curPayoutId; holderAccounts[_to].tokens = newHeld | (pidFrom * (2 ** 48)); Transfer(msg.sender, _to, _value); return true; } else { return false; } } function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { if ((_from == developers) && (now < vestTime)) { //statEvent("Tokens not yet vested."); return false; } //same as above. Replace this line with the following if you want to protect against wrapping uints. //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) { var (pidFrom, heldFrom) = getPayIdAndHeld(holderAccounts[_from].tokens); if (heldFrom >= _value && allowed[_from][msg.sender] >= _value && _value > 0) { holderAccounts[_from].tokens -= _value; if (!holderAccounts[_to].alloced) addAccount(_to); uint newHeld = _value + getHeld(holderAccounts[_to].tokens); if (icoStatus == IcoStatusValue.saleOpen) // avoid mcgees gambit pidFrom = curPayoutId; holderAccounts[_to].tokens = newHeld | (pidFrom * (2 ** 48)); allowed[_from][msg.sender] -= _value; Transfer(_from, _to, _value); return true; } else { return false; } } function balanceOf(address _owner) constant returns (uint256 balance) { // vars default to 0 if (holderAccounts[_owner].alloced) { balance = getHeld(holderAccounts[_owner].tokens); } } function approve(address _spender, uint256 _value) returns (bool success) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) constant returns (uint256 remaining) { return allowed[_owner][_spender]; } // ---------------------------------- // END ERC20 // ---------------------------------- // ------------------------------------------- // default payable function. // if sender is e4row partner, this is a rake fee payment // otherwise this is a token purchase. // tokens only purchaseable between tokenfundingstart and end // ------------------------------------------- function () payable { if (msg.sender == e4_partner) { feePayment(); // from e4row game escrow contract } else { purchaseToken(); } } // ----------------------------- // purchase token function - tokens only sold during sale period up until the max tokens // purchase price is tokenPrice. all units in wei. // purchaser will not be included in current pay run // ----------------------------- function purchaseToken() payable { uint nvalue = msg.value; // being careful to preserve msg.value address npurchaser = msg.sender; if (nvalue < tokenPrice) throw; uint qty = nvalue/tokenPrice; updateIcoStatus(); if (icoStatus != IcoStatusValue.saleOpen) // purchase is closed throw; if (totalTokensMinted + qty > maxMintableTokens) throw; if (!holderAccounts[npurchaser].alloced) addAccount(npurchaser); // purchaser waits for next payrun. otherwise can disrupt cur pay run uint newHeld = qty + getHeld(holderAccounts[npurchaser].tokens); holderAccounts[npurchaser].tokens = newHeld | (curPayoutId * (2 ** 48)); totalTokensMinted += qty; totalTokenFundsReceived += nvalue; if (totalTokensMinted == maxMintableTokens) { icoStatus = IcoStatusValue.saleClosed; //test unnecessary - if (getNumTokensPurchased() >= minIcoTokenGoal) doDeveloperGrant(); StatEventI("Purchased,Granted", qty); } else StatEventI("Purchased", qty); } // --------------------------- // accept payment from e4row contract // WARNING! DO NOT CALL THIS FUNCTION LEST YOU LOSE YOUR MONEY // HOWEVER ADD THIS GIFT TO THE HOLDOVERBALANCE // YOU HAVE BEEN WARNED // --------------------------- function feePayment() payable { if (msg.sender != e4_partner) { if (msg.value > 0) holdoverBalance += msg.value; StatEvent("forbidden"); return; // thank you } uint nfvalue = msg.value; // preserve value in case changed in dev grant updateIcoStatus(); holdoverBalance += nfvalue; partnerCredits += nfvalue; StatEventI("Payment", nfvalue); if (holdoverBalance > payoutThreshold || payoutBalance > 0) doPayout(maxPaysPer); } // --------------------------- // set the e4row partner, this is only done once // --------------------------- function setE4RowPartner(address _addr) public { // ONLY owner can set and ONLY ONCE! (unless "unlocked" debug) // once its locked. ONLY ONCE! if (msg.sender == owner) { if ((e4_partner == address(0)) || (settingsState == SettingStateValue.debug)) { e4_partner = _addr; partnerCredits = 0; //StatEventI("E4-Set", 0); } else { StatEvent("Already Set"); } } } // ---------------------------- // return the total tokens purchased // ---------------------------- function getNumTokensPurchased() constant returns(uint _purchased) { _purchased = totalTokensMinted-numDevTokens; } // ---------------------------- // return the num games as reported from the e4row contract // ---------------------------- function getNumGames() constant returns(uint _games) { //_games = 0; if (e4_partner != address(0)) { iE4RowEscrow pe4 = iE4RowEscrow(e4_partner); _games = uint(pe4.getNumGamesStarted()); } //else //StatEvent("Empty E4"); } // ------------------------------------------------ // get the founders, auxPartner, developer // -------------------------------------------------- function getSpecialAddresses() constant returns (address _fndr, address _aux, address _dev, address _e4) { //if (_sender == owner) { // no msg.sender on constant functions at least in mew _fndr = founderOrg; _aux = auxPartner; _dev = developers; _e4 = e4_partner; //} } // ---------------------------- // update the ico status // ---------------------------- function updateIcoStatus() public { if (icoStatus == IcoStatusValue.succeeded || icoStatus == IcoStatusValue.failed) return; else if (icoStatus == IcoStatusValue.anouncement) { if (now > fundingStart && now <= fundingDeadline) { icoStatus = IcoStatusValue.saleOpen; } else if (now > fundingDeadline) { // should not be here - this will eventually fail icoStatus = IcoStatusValue.saleClosed; } } else { uint numP = getNumTokensPurchased(); uint numG = getNumGames(); if ((now > fundingDeadline && numP < minIcoTokenGoal) || (now > usageDeadline && numG < minUsageGoal)) { icoStatus = IcoStatusValue.failed; } else if ((now > fundingDeadline) // dont want to prevent more token sales && (numP >= minIcoTokenGoal) && (numG >= minUsageGoal)) { icoStatus = IcoStatusValue.succeeded; // hooray } if (icoStatus == IcoStatusValue.saleOpen && ((numP >= maxMintableTokens) || (now > fundingDeadline))) { icoStatus = IcoStatusValue.saleClosed; } } if (!developersGranted && icoStatus != IcoStatusValue.saleOpen && icoStatus != IcoStatusValue.anouncement && getNumTokensPurchased() >= minIcoTokenGoal) { doDeveloperGrant(); // grant whenever status goes from open to anything... } } // ---------------------------- // request refund. Caller must call to request and receive refund // WARNING - withdraw rewards/dividends before calling. // YOU HAVE BEEN WARNED // ---------------------------- function requestRefund() { address nrequester = msg.sender; updateIcoStatus(); uint ntokens = getHeld(holderAccounts[nrequester].tokens); if (icoStatus != IcoStatusValue.failed) StatEvent("No Refund"); else if (ntokens == 0) StatEvent("No Tokens"); else { uint nrefund = ntokens * tokenPrice; if (getNumTokensPurchased() >= minIcoTokenGoal) nrefund -= (nrefund /10); // only 90 percent b/c 10 percent payout if (!holderAccounts[developers].alloced) addAccount(developers); holderAccounts[developers].tokens += ntokens; holderAccounts[nrequester].tokens = 0; if (holderAccounts[nrequester].balance > 0) { // see above warning!! holderAccounts[developers].balance += holderAccounts[nrequester].balance; holderAccounts[nrequester].balance = 0; } if (!nrequester.call.gas(rfGas).value(nrefund)()) throw; //StatEventI("Refunded", nrefund); } } // --------------------------------------------------- // payout rewards to all token holders // use a second holding variable called PayoutBalance to do // the actual payout from b/c too much gas to iterate thru // each payee. Only start a new run at most once per "minpayinterval". // Its done in runs of "_numPays" // we use special coding for the holderAccounts to avoid a hack // of getting paid at the top of the list then transfering tokens // to another address at the bottom of the list. // because of that each holderAccounts entry gets the payoutid stamped upon it (top two bytes) // also a token transfer will transfer the payout id. // --------------------------------------------------- function doPayout(uint _numPays) internal { if (totalTokensMinted == 0) return; if ((holdoverBalance > 0) && (payoutBalance == 0) && (now > (lastPayoutTime+minPayInterval))) { // start a new run curPayoutId++; if (curPayoutId >= 32768) curPayoutId = 1; lastPayoutTime = now; payoutBalance = int(holdoverBalance); prOrigPayoutBal = payoutBalance; prOrigTokensMint = totalTokensMinted; holdoverBalance = 0; lastPayoutIndex = 0; StatEventI("StartRun", uint(curPayoutId)); } else if (payoutBalance > 0) { // work down the p.o.b uint nAmount; uint nPerTokDistrib = uint(prOrigPayoutBal)/prOrigTokensMint; uint paids = 0; uint i; // intentional for (i = lastPayoutIndex; (paids < _numPays) && (i < numAccounts) && (payoutBalance > 0); i++ ) { address a = holderIndexes[i]; if (a == address(0)) { continue; } var (pid, held) = getPayIdAndHeld(holderAccounts[a].tokens); if ((held > 0) && (pid != curPayoutId)) { nAmount = nPerTokDistrib * held; if (int(nAmount) <= payoutBalance){ holderAccounts[a].balance += nAmount; holderAccounts[a].tokens = (curPayoutId * (2 ** 48)) | held; payoutBalance -= int(nAmount); paids++; } } } lastPayoutIndex = i; if (lastPayoutIndex >= numAccounts || payoutBalance <= 0) { lastPayoutIndex = 0; if (payoutBalance > 0) holdoverBalance += uint(payoutBalance);// put back any leftovers payoutBalance = 0; StatEventI("RunComplete", uint(prOrigPayoutBal) ); } else { StatEventI("PayRun", paids ); } } } // ---------------------------- // sender withdraw entire rewards/dividends // ---------------------------- function withdrawDividends() public returns (uint _amount) { if (holderAccounts[msg.sender].balance == 0) { //_amount = 0; StatEvent("0 Balance"); return; } else { if ((msg.sender == developers) && (now < vestTime)) { //statEvent("Tokens not yet vested."); //_amount = 0; return; } _amount = holderAccounts[msg.sender].balance; holderAccounts[msg.sender].balance = 0; if (!msg.sender.call.gas(rwGas).value(_amount)()) throw; //StatEventI("Paid", _amount); } } // ---------------------------- // set gas for operations // ---------------------------- function setOpGas(uint _rm, uint _rf, uint _rw) { if (msg.sender != owner && msg.sender != developers) { //StatEvent("only owner calls"); return; } else { rmGas = _rm; rfGas = _rf; rwGas = _rw; } } // ---------------------------- // get gas for operations // ---------------------------- function getOpGas() constant returns (uint _rm, uint _rf, uint _rw) { _rm = rmGas; _rf = rfGas; _rw = rwGas; } // ---------------------------- // check rewards. pass in address of token holder // ---------------------------- function checkDividends(address _addr) constant returns(uint _amount) { if (holderAccounts[_addr].alloced) _amount = holderAccounts[_addr].balance; } // ------------------------------------------------ // icoCheckup - check up call for administrators // after sale is closed if min ico tokens sold, 10 percent will be distributed to // company to cover various operating expenses // after sale and usage dealines have been met, remaining 90 percent will be distributed to // company. // ------------------------------------------------ function icoCheckup() public { if (msg.sender != owner && msg.sender != developers) throw; uint nmsgmask; //nmsgmask = 0; if (icoStatus == IcoStatusValue.saleClosed) { if ((getNumTokensPurchased() >= minIcoTokenGoal) && (remunerationStage == 0 )) { remunerationStage = 1; remunerationBalance = (totalTokenFundsReceived/100)*9; // 9 percent auxPartnerBalance = (totalTokenFundsReceived/100); // 1 percent nmsgmask |= 1; } } if (icoStatus == IcoStatusValue.succeeded) { if (remunerationStage == 0 ) { remunerationStage = 1; remunerationBalance = (totalTokenFundsReceived/100)*9; auxPartnerBalance = (totalTokenFundsReceived/100); nmsgmask |= 4; } if (remunerationStage == 1) { // we have already suceeded remunerationStage = 2; remunerationBalance += totalTokenFundsReceived - (totalTokenFundsReceived/10); // 90 percent nmsgmask |= 8; } } uint ntmp; if (remunerationBalance > 0) { // only pay one entity per call, dont want to run out of gas ntmp = remunerationBalance; remunerationBalance = 0; if (!founderOrg.call.gas(rmGas).value(ntmp)()) { remunerationBalance = ntmp; nmsgmask |= 32; } else { nmsgmask |= 64; } } else if (auxPartnerBalance > 0) { // note the "else" only pay one entity per call, dont want to run out of gas ntmp = auxPartnerBalance; auxPartnerBalance = 0; if (!auxPartner.call.gas(rmGas).value(ntmp)()) { auxPartnerBalance = ntmp; nmsgmask |= 128; } else { nmsgmask |= 256; } } StatEventI("ico-checkup", nmsgmask); } // ---------------------------- // swap executor // ---------------------------- function changeOwner(address _addr) { if (msg.sender != owner || settingsState == SettingStateValue.lockedRelease) throw; owner = _addr; } // ---------------------------- // swap developers account // ---------------------------- function changeDevevoperAccont(address _addr) { if (msg.sender != owner || settingsState == SettingStateValue.lockedRelease) throw; developers = _addr; } // ---------------------------- // change founder // ---------------------------- function changeFounder(address _addr) { if (msg.sender != owner || settingsState == SettingStateValue.lockedRelease) throw; founderOrg = _addr; } // ---------------------------- // change auxPartner // ---------------------------- function changeAuxPartner(address _aux) { if (msg.sender != owner || settingsState == SettingStateValue.lockedRelease) throw; auxPartner = _aux; } // ---------------------------- // DEBUG ONLY - end this contract, suicide to developers // ---------------------------- function haraKiri() { if (settingsState != SettingStateValue.debug) throw; if (msg.sender != owner) throw; suicide(developers); } // ---------------------------- // get all ico status, funding and usage info // ---------------------------- function getIcoInfo() constant returns(IcoStatusValue _status, uint _saleStart, uint _saleEnd, uint _usageEnd, uint _saleGoal, uint _usageGoal, uint _sold, uint _used, uint _funds, uint _credits, uint _remuStage, uint _vest) { _status = icoStatus; _saleStart = fundingStart; _saleEnd = fundingDeadline; _usageEnd = usageDeadline; _vest = vestTime; _saleGoal = minIcoTokenGoal; _usageGoal = minUsageGoal; _sold = getNumTokensPurchased(); _used = getNumGames(); _funds = totalTokenFundsReceived; _credits = partnerCredits; _remuStage = remunerationStage; } // ---------------------------- // NOTE! CALL AT THE RISK OF RUNNING OUT OF GAS. // ANYONE CAN CALL THIS FUNCTION BUT YOU HAVE TO SUPPLY // THE CORRECT AMOUNT OF GAS WHICH MAY DEPEND ON // THE _NUMPAYS PARAMETER. WHICH MUST BE BETWEEN 1 AND 1000 // THE STANDARD VALUE IS STORED IN "maxPaysPer" // ---------------------------- function flushDividends(uint _numPays) { if ((_numPays == 0) || (_numPays > 1000)) { StatEvent("Invalid."); } else if (holdoverBalance > 0 || payoutBalance > 0) { doPayout(_numPays); } else { StatEvent("Nothing to do."); } } function doDeveloperGrant() internal { if (!developersGranted) { developersGranted = true; numDevTokens = (totalTokensMinted * 15)/100; totalTokensMinted += numDevTokens; if (!holderAccounts[developers].alloced) addAccount(developers); uint newHeld = getHeld(holderAccounts[developers].tokens) + numDevTokens; holderAccounts[developers].tokens = newHeld | (curPayoutId * (2 ** 48)); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"changeDevevoperAccont","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"remunerationBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"payoutBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"checkDividends","outputs":[{"name":"_amount","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxPaysPer","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"updateIcoStatus","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawDividends","outputs":[{"name":"_amount","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"feePayment","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_rm","type":"uint256"},{"name":"_rf","type":"uint256"},{"name":"_rw","type":"uint256"}],"name":"setOpGas","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"curPayoutId","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_numPays","type":"uint256"}],"name":"flushDividends","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastPayoutTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"settingsState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"payoutThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getNumGames","outputs":[{"name":"_games","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"icoCheckup","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalTokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getIcoInfo","outputs":[{"name":"_status","type":"uint8"},{"name":"_saleStart","type":"uint256"},{"name":"_saleEnd","type":"uint256"},{"name":"_usageEnd","type":"uint256"},{"name":"_saleGoal","type":"uint256"},{"name":"_usageGoal","type":"uint256"},{"name":"_sold","type":"uint256"},{"name":"_used","type":"uint256"},{"name":"_funds","type":"uint256"},{"name":"_credits","type":"uint256"},{"name":"_remuStage","type":"uint256"},{"name":"_vest","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setE4RowPartner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"qState","type":"uint8"},{"name":"_saleStart","type":"uint256"},{"name":"_saleEnd","type":"uint256"},{"name":"_usageEnd","type":"uint256"},{"name":"_minUsage","type":"uint256"},{"name":"_tokGoal","type":"uint256"},{"name":"_maxMintable","type":"uint256"},{"name":"_threshold","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_mpp","type":"uint256"},{"name":"_mpi","type":"uint256"}],"name":"applySettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"changeFounder","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOpGas","outputs":[{"name":"_rm","type":"uint256"},{"name":"_rf","type":"uint256"},{"name":"_rw","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_aux","type":"address"}],"name":"changeAuxPartner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getSpecialAddresses","outputs":[{"name":"_fndr","type":"address"},{"name":"_aux","type":"address"},{"name":"_dev","type":"address"},{"name":"_e4","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"purchaseToken","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"getNumTokensPurchased","outputs":[{"name":"_purchased","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"haraKiri","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minPayInterval","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"requestRefund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"holdoverBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastPayoutIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"}],"name":"StatEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"string"},{"indexed":false,"name":"val","type":"uint256"}],"name":"StatEventI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6060604052341561000c57fe5b5b60018054600160a060020a033316600160a060020a031991821681179092556000805490911690911790555b5b612366806100496000396000f300606060405236156101d25763ffffffff60e060020a60003504166302ff1fac8114610208578063095ea7b31461022657806318160ddd146102595780631b0762bb1461027b57806320b0554e1461029d57806322f16c8d146102bf57806323b872dd146102ed57806328c4b676146103265780632a1a8d4a146103485780632e92abdd1461035a57806333c7c0261461037c5780633cebb4d7146103865780633dce1ea9146103a1578063433e852d146103c357806358a1cabf146103d85780635f437e48146103fa5780636b5e1a181461042e5780636ce079fe1461045057806370a082311461047257806378eba8fc146104a05780637d549e99146104b25780637ff9b596146104d45780638582ac21146104f65780638706ab57146105775780638ab7f807146105955780638da5cb5b146105ce57806393c32e06146105fa5780639a6921e414610618578063a53d66e414610646578063a6f9dae114610664578063a7ecd0ad14610682578063a9059cbb146106c6578063a95c4d62146106f9578063ab06264314610703578063c405255914610725578063ce4a920614610737578063d5cef13314610759578063dd62ed3e1461076b578063fa1e4fcb1461079f578063fabfbefb146107c1575b6102065b60045433600160a060020a03908116911614156101fa576101f56107e3565b610202565b6102026108f8565b5b5b565b005b341561021057fe5b610206600160a060020a0360043516610acf565b005b341561022e57fe5b610245600160a060020a0360043516602435610b2d565b604080519115158252519081900360200190f35b341561026157fe5b610269610b98565b60408051918252519081900360200190f35b341561028357fe5b610269610be2565b60408051918252519081900360200190f35b34156102a557fe5b610269610be8565b60408051918252519081900360200190f35b34156102c757fe5b610269600160a060020a0360043516610bee565b60408051918252519081900360200190f35b34156102f557fe5b610245600160a060020a0360043581169060243516604435610c33565b604080519115158252519081900360200190f35b341561032e57fe5b610269610dfa565b60408051918252519081900360200190f35b341561035057fe5b610206610e00565b005b341561036257fe5b610269611001565b60408051918252519081900360200190f35b6102066107e3565b005b341561038e57fe5b6102066004356024356044356110ea565b005b34156103a957fe5b610269611138565b60408051918252519081900360200190f35b34156103cb57fe5b61020660043561113e565b005b34156103e057fe5b61026961121e565b60408051918252519081900360200190f35b341561040257fe5b61040a611224565b6040518082600281111561041a57fe5b60ff16815260200191505060405180910390f35b341561043657fe5b610269611232565b60408051918252519081900360200190f35b341561045857fe5b610269611238565b60408051918252519081900360200190f35b341561047a57fe5b610269600160a060020a03600435166112c8565b60408051918252519081900360200190f35b34156104a857fe5b610206611317565b005b34156104ba57fe5b610269611549565b60408051918252519081900360200190f35b34156104dc57fe5b61026961154f565b60408051918252519081900360200190f35b34156104fe57fe5b610506611555565b604051808d600481111561051657fe5b60ff168152602081019c909c52506040808c019a909a5260608b019890985260808a019690965260a089019490945260c088019290925260e08701526101008601526101208501526101408401526101608301525190819003610180019150f35b341561057f57fe5b610206600160a060020a03600435166115af565b005b341561059d57fe5b61020660ff6004351660243560443560643560843560a43560c43560e435610104356101243561014435611672565b005b34156105d657fe5b6105de611940565b60408051600160a060020a039092168252519081900360200190f35b341561060257fe5b610206600160a060020a036004351661194f565b005b341561062057fe5b6106286119ad565b60408051938452602084019290925282820152519081900360600190f35b341561064e57fe5b610206600160a060020a03600435166119bc565b005b341561066c57fe5b610206600160a060020a0360043516611a1a565b005b341561068a57fe5b610692611a78565b60408051600160a060020a039586168152938516602085015291841683830152909216606082015290519081900360800190f35b34156106ce57fe5b610245600160a060020a0360043516602435611aa0565b604080519115158252519081900360200190f35b6102066108f8565b005b341561070b57fe5b610269611c16565b60408051918252519081900360200190f35b341561072d57fe5b610206611c21565b005b341561073f57fe5b610269611c71565b60408051918252519081900360200190f35b341561076157fe5b610206611c77565b005b341561077357fe5b610269600160a060020a0360043581169060243516611e74565b60408051918252519081900360200190f35b34156107a757fe5b610269611ea1565b60408051918252519081900360200190f35b34156107c957fe5b610269611ea7565b60408051918252519081900360200190f35b60045460009033600160a060020a0390811691161461086157600034111561080e5760118054340190555b6040805160208082526009908201527f666f7262696464656e000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a16108f3565b503461086b610e00565b6011805482019055600880548201905560408051602081018390528181526007818301527f5061796d656e7400000000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a1600e5460115411806108e357506000601254135b156108f3576108f3601754611ead565b5b5b50565b600d543490339060009081908410156109115760006000fd5b600d548481151561091e57fe5b049150610929610e00565b60015b60265460ff16600481111561093d57fe5b146109485760006000fd5b600a548260105401111561095c5760006000fd5b600160a060020a03831660009081526005602052604090205460ff1615156109875761098783612196565b5b600160a060020a0383166000908152600560205260409020600101546109ad906121f8565b601554600160a060020a0385166000908152600560205260409020660100000000000090910291840191821760019091015560108054840190819055600f805487019055600a549192501415610a7357602680546002919060ff19166001835b0217905550610a1a612207565b60408051602081018490528181526011818301527f5075726368617365642c4772616e746564000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a1610ac8565b60408051602081018490528181526009818301527f5075726368617365640000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5b50505050565b60015433600160a060020a039081169116141580610b03575060025b602654610100900460ff166002811115610b0157fe5b145b15610b0e5760006000fd5b60008054600160a060020a031916600160a060020a0383161790555b50565b600160a060020a03338116600081815260096020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600060015b60265460ff166004811115610bae57fe5b1480610bcb575060005b60265460ff166004811115610bc957fe5b145b15610bd95750600a54610bde565b506010545b5b90565b60215481565b60125481565b600160a060020a03811660009081526005602052604081205460ff1615610c2d5750600160a060020a0381166000908152600560205260409020600201545b5b919050565b60008054819081908190600160a060020a038881169116148015610c585750601d5442105b15610c665760009350610def565b600160a060020a038716600090815260056020526040902060010154610c8b906122d5565b92509250848210158015610cc65750600160a060020a0380881660009081526009602090815260408083203390941683529290522054859010155b8015610cd25750600085115b15610dea57600160a060020a03808816600090815260056020526040808220600101805489900390559188168152205460ff161515610d1457610d1486612196565b5b600160a060020a038616600090815260056020526040902060010154610d3a906121f8565b8501905060015b60265460ff166004811115610d5257fe5b1415610d5e5760155492505b600160a060020a0380871660008181526005602090815260408083206601000000000000890287176001909101558b8516808452600983528184203390961684529482529182902080548a90039055815189815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a360019350610def565b600093505b5b5050509392505050565b60175481565b60008060045b60265460ff166004811115610e1757fe5b1480610e34575060035b60265460ff166004811115610e3257fe5b145b15610e3e57610ffb565b60005b60265460ff166004811115610e5257fe5b1415610eaf5760195442118015610e6b5750601a544211155b15610e8957602680546001919060ff191682805b0217905550610ea9565b601a54421115610ea957602680546002919060ff19166001835b02179055505b5b610f94565b610eb7611c16565b9150610ec1611238565b9050601a5442118015610ed55750600b5482105b80610eed5750601b5442118015610eed5750600c5481105b5b15610f0d57602680546003919060ff19166001835b0217905550610f49565b601a5442118015610f205750600b548210155b8015610f2e5750600c548110155b15610f4957602680546004919060ff19166001835b02179055505b5b60015b60265460ff166004811115610f5e57fe5b148015610f785750600a5482101580610f785750601a5442115b5b15610f9457602680546002919060ff19166001835b02179055505b5b5b601f5460ff16158015610fbb575060015b60265460ff166004811115610fb857fe5b14155b8015610fd9575060005b60265460ff166004811115610fd657fe5b14155b8015610fee5750600b54610feb611c16565b10155b15610ffb57610ffb612207565b5b5b5050565b600160a060020a0333166000908152600560205260408120600201541515611076576040805160208082526009908201527f302042616c616e6365000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1610bde565b60005433600160a060020a0390811691161480156110955750601d5442105b1561109f57610bde565b50600160a060020a0333166000818152600560205260408082206002018054908390556024549151909392849190818181858888f193505050501515610bde5760006000fd5b5b5b90565b60015433600160a060020a03908116911614801590611118575060005433600160a060020a03908116911614155b1561112257611132565b6023839055602582905560248190555b5b505050565b60155481565b80158061114c57506103e881115b156111a4576040805160208082526008908201527f496e76616c69642e00000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a16108f3565b600060115411806111b757506000601254135b156111ca576111c581611ead565b6108f3565b604080516020808252600e908201527f4e6f7468696e6720746f20646f2e00000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b5b50565b601c5481565b602654610100900460ff1681565b600e5481565b6004546000908190600160a060020a0316156112c357600460009054906101000a9004600160a060020a0316905080600160a060020a0316631123efd56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156112ac57fe5b60325a03f115156112b957fe5b5050604051519250505b5b5090565b600160a060020a03811660009081526005602052604081205460ff1615610c2d57600160a060020a03821660009081526005602052604090206001015461130e906121f8565b90505b5b919050565b600154600090819033600160a060020a0390811691161480159061134a575060005433600160a060020a03908116911614155b156113555760006000fd5b60025b60265460ff16600481111561136957fe5b14156113b357600b5461137a611c16565b101580156113885750602054155b156113b3576001602055600f546064905b04600902602155600f546064905b04602255600191909117905b5b60045b60265460ff1660048111156113c857fe5b141561142f5760205415156113fd576001602055600f546064905b04600902602155600f546064905b04602255600491909117905b6020546001141561142f576002602055600f54600a905b04600f54036021600082825401925050819055506008821791505b5b600060215411156114915750602180546000918290556002546023546040519293600160a060020a03909216929091849190818181858888f1935050505015156114855760218190556020919091179061148c565b6040821791505b6114ee565b600060225411156114ee5750602280546000918290556003546023546040519293600160a060020a03909216929091849190818181858888f1935050505015156114e6576022819055608091909117906114ee565b610100821791505b5b5b6040805160208101849052818152600b818301527f69636f2d636865636b7570000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5050565b60105481565b600d5481565b602654601954601a54601b54601d54600b54600c5460ff9096169590916000908190819081908190611585611c16565b955061158f611238565b9450600f549350600854925060205491505b909192939495969798999a9b565b60015433600160a060020a03908116911614156108f357600454600160a060020a031615806115f4575060005b602654610100900460ff1660028111156115f257fe5b145b1561161e5760048054600160a060020a031916600160a060020a03831617905560006008556108f3565b604080516020808252600b908201527f416c72656164792053657400000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b5b50565b600154600090819033600160a060020a0390811691161461169257611931565b600e8690556017849055601883905560025b602654610100900460ff1660028111156116ba57fe5b14156116c557611931565b602680548e919061ff0019166101008360028111156116e057fe5b021790555060025b8d60028111156116f457fe5b141561174d576040805160208082526008908201527f4c6f636b696e672100000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611931565b602680546000919060ff19166001835b0217905550620186a0602355612710602481905560255560105460009011156117de57600091505b6007548210156117de5750600081815260066020526040902054600160a060020a031680156117d257600160a060020a038116600090815260056020526040812060018101829055600201555b5b600190910190611785565b5b60006010819055600f819055600881905560198d9055601a8c9055601b8b9055600c8a9055600b899055600a889055600d8690556301e133808d01601d55601e8190556011819055601281905560016015556016819055602081905560218190556022819055601f805460ff19169055601c819055600160a060020a0330163111156118e157600154602554604051600160a060020a0392831692301631906000818181858888f1935050505015156118e1576040805160208082526006908201527f4552524f5221000000000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b6040805160208082526002908201527f6f6b00000000000000000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b50505050505050505050505050565b600154600160a060020a031681565b60015433600160a060020a039081169116141580611983575060025b602654610100900460ff16600281111561198157fe5b145b1561198e5760006000fd5b60028054600160a060020a031916600160a060020a0383161790555b50565b6023546025546024545b909192565b60015433600160a060020a0390811691161415806119f0575060025b602654610100900460ff1660028111156119ee57fe5b145b156119fb5760006000fd5b60038054600160a060020a031916600160a060020a0383161790555b50565b60015433600160a060020a039081169116141580611a4e575060025b602654610100900460ff166002811115611a4c57fe5b145b15611a595760006000fd5b60018054600160a060020a031916600160a060020a0383161790555b50565b600254600354600054600454600160a060020a03938416939283169291821691165b90919293565b6000805481908190819033600160a060020a039081169116148015611ac65750601d5442105b15611ad45760009350611c0c565b600160a060020a033316600090815260056020526040902060010154611af9906122d5565b92509250848210158015611b0d5750600085115b15611c0757600160a060020a03338116600090815260056020526040808220600101805489900390559188168152205460ff161515611b4f57611b4f86612196565b5b600160a060020a038616600090815260056020526040902060010154611b75906121f8565b8501905060015b60265460ff166004811115611b8d57fe5b1415611b995760155492505b600160a060020a038087166000818152600560209081526040918290206601000000000000880286176001909101558151898152915192933316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a360019350611c0c565b600093505b5b50505092915050565b601e54601054035b90565b60005b602654610100900460ff166002811115611c3a57fe5b14611c455760006000fd5b60015433600160a060020a03908116911614611c615760006000fd5b600054600160a060020a0316ff5b565b60185481565b33600080611c83610e00565b600160a060020a038316600090815260056020526040902060010154611ca8906121f8565b915060035b60265460ff166004811115611cbe57fe5b14611d16576040805160208082526009908201527f4e6f20526566756e64000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611132565b811515611d70576040805160208082526009908201527f4e6f20546f6b656e73000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611132565b600d5482029050600b54611d82611c16565b10611d8f57600a815b0490035b60008054600160a060020a031681526005602052604090205460ff161515611dc657600054611dc690600160a060020a0316612196565b5b60008054600160a060020a03908116825260056020526040808320600190810180548701905591861683528220908101829055600201541115611e3e57600160a060020a03808416600081815260056020526040808220600290810180548454909616845291832001805490940190935590815290555b602554604051600160a060020a038516919083906000818181858888f1935050505015156111325760006000fd5b5b5b5b505050565b600160a060020a038083166000908152600960209081526040808320938516835292905220545b92915050565b60115481565b60165481565b600060006000600060006000600060105460001415611ecb57612189565b6000601154118015611edd5750601254155b8015611eee5750601854601c540142115b15611f885760158054600101908190556180009010611f0d5760016015555b42601c556011805460128190556013556010546014556000908190556016556015546040805160208101929092528082526008828201527f537461727452756e0000000000000000000000000000000000000000000000006060830152516000805160206122fb8339815191529181900360800190a1612189565b6000601254131561218957601454601354811515611fa257fe5b0495506000945060165493505b8785108015611fbf575060075484105b8015611fcd57506000601254135b1561209857600084815260066020526040902054600160a060020a03169250821515611ff85761208b565b600160a060020a03831660009081526005602052604090206001015461201d906122d5565b9150915060008111801561203357506015548214155b1561208b576012548682029750871361208b57600160a060020a038316600090815260056020526040902060028101805489019055601554660100000000000002821760019182015560128054899003905594909401935b5b5b600190930192611faf565b6016849055600754841015806120b15750600060125413155b15612134576000601681905560125413156120d3576012546011805490910190555b6000601255601354604080516020810192909252808252600b828201527f52756e436f6d706c6574650000000000000000000000000000000000000000006060830152516000805160206122fb8339815191529181900360800190a1612189565b60408051602081018790528181526006818301527f50617952756e0000000000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5b5b5b5050505050505050565b600160a060020a0381166000818152600560209081526040808320805460ff191660019081178255601554660100000000000002918101919091556007805491820190558352600690915290208054600160a060020a03191690911790555b50565b65ffffffffffff81165b919050565b601f5460009060ff1615156108f357601f805460ff19166001179055601054606490600f025b04601e81905560108054909101905560008054600160a060020a031681526005602052604090205460ff1615156122735760005461227390600160a060020a0316612196565b5b601e5460008054600160a060020a031681526005602052604090206001015461229c906121f8565b60155460008054600160a060020a03168152600560205260409020919092016601000000000000909202821760019091015590505b5b50565b6000806601000000000000835b0461ffff1691508265ffffffffffff1690505b91509156009e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e648a165627a7a72305820c3039feace276128a8a24bc387d61714eecae740de955c6578526a4a4027bebc0029
Deployed Bytecode
0x606060405236156101d25763ffffffff60e060020a60003504166302ff1fac8114610208578063095ea7b31461022657806318160ddd146102595780631b0762bb1461027b57806320b0554e1461029d57806322f16c8d146102bf57806323b872dd146102ed57806328c4b676146103265780632a1a8d4a146103485780632e92abdd1461035a57806333c7c0261461037c5780633cebb4d7146103865780633dce1ea9146103a1578063433e852d146103c357806358a1cabf146103d85780635f437e48146103fa5780636b5e1a181461042e5780636ce079fe1461045057806370a082311461047257806378eba8fc146104a05780637d549e99146104b25780637ff9b596146104d45780638582ac21146104f65780638706ab57146105775780638ab7f807146105955780638da5cb5b146105ce57806393c32e06146105fa5780639a6921e414610618578063a53d66e414610646578063a6f9dae114610664578063a7ecd0ad14610682578063a9059cbb146106c6578063a95c4d62146106f9578063ab06264314610703578063c405255914610725578063ce4a920614610737578063d5cef13314610759578063dd62ed3e1461076b578063fa1e4fcb1461079f578063fabfbefb146107c1575b6102065b60045433600160a060020a03908116911614156101fa576101f56107e3565b610202565b6102026108f8565b5b5b565b005b341561021057fe5b610206600160a060020a0360043516610acf565b005b341561022e57fe5b610245600160a060020a0360043516602435610b2d565b604080519115158252519081900360200190f35b341561026157fe5b610269610b98565b60408051918252519081900360200190f35b341561028357fe5b610269610be2565b60408051918252519081900360200190f35b34156102a557fe5b610269610be8565b60408051918252519081900360200190f35b34156102c757fe5b610269600160a060020a0360043516610bee565b60408051918252519081900360200190f35b34156102f557fe5b610245600160a060020a0360043581169060243516604435610c33565b604080519115158252519081900360200190f35b341561032e57fe5b610269610dfa565b60408051918252519081900360200190f35b341561035057fe5b610206610e00565b005b341561036257fe5b610269611001565b60408051918252519081900360200190f35b6102066107e3565b005b341561038e57fe5b6102066004356024356044356110ea565b005b34156103a957fe5b610269611138565b60408051918252519081900360200190f35b34156103cb57fe5b61020660043561113e565b005b34156103e057fe5b61026961121e565b60408051918252519081900360200190f35b341561040257fe5b61040a611224565b6040518082600281111561041a57fe5b60ff16815260200191505060405180910390f35b341561043657fe5b610269611232565b60408051918252519081900360200190f35b341561045857fe5b610269611238565b60408051918252519081900360200190f35b341561047a57fe5b610269600160a060020a03600435166112c8565b60408051918252519081900360200190f35b34156104a857fe5b610206611317565b005b34156104ba57fe5b610269611549565b60408051918252519081900360200190f35b34156104dc57fe5b61026961154f565b60408051918252519081900360200190f35b34156104fe57fe5b610506611555565b604051808d600481111561051657fe5b60ff168152602081019c909c52506040808c019a909a5260608b019890985260808a019690965260a089019490945260c088019290925260e08701526101008601526101208501526101408401526101608301525190819003610180019150f35b341561057f57fe5b610206600160a060020a03600435166115af565b005b341561059d57fe5b61020660ff6004351660243560443560643560843560a43560c43560e435610104356101243561014435611672565b005b34156105d657fe5b6105de611940565b60408051600160a060020a039092168252519081900360200190f35b341561060257fe5b610206600160a060020a036004351661194f565b005b341561062057fe5b6106286119ad565b60408051938452602084019290925282820152519081900360600190f35b341561064e57fe5b610206600160a060020a03600435166119bc565b005b341561066c57fe5b610206600160a060020a0360043516611a1a565b005b341561068a57fe5b610692611a78565b60408051600160a060020a039586168152938516602085015291841683830152909216606082015290519081900360800190f35b34156106ce57fe5b610245600160a060020a0360043516602435611aa0565b604080519115158252519081900360200190f35b6102066108f8565b005b341561070b57fe5b610269611c16565b60408051918252519081900360200190f35b341561072d57fe5b610206611c21565b005b341561073f57fe5b610269611c71565b60408051918252519081900360200190f35b341561076157fe5b610206611c77565b005b341561077357fe5b610269600160a060020a0360043581169060243516611e74565b60408051918252519081900360200190f35b34156107a757fe5b610269611ea1565b60408051918252519081900360200190f35b34156107c957fe5b610269611ea7565b60408051918252519081900360200190f35b60045460009033600160a060020a0390811691161461086157600034111561080e5760118054340190555b6040805160208082526009908201527f666f7262696464656e000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a16108f3565b503461086b610e00565b6011805482019055600880548201905560408051602081018390528181526007818301527f5061796d656e7400000000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a1600e5460115411806108e357506000601254135b156108f3576108f3601754611ead565b5b5b50565b600d543490339060009081908410156109115760006000fd5b600d548481151561091e57fe5b049150610929610e00565b60015b60265460ff16600481111561093d57fe5b146109485760006000fd5b600a548260105401111561095c5760006000fd5b600160a060020a03831660009081526005602052604090205460ff1615156109875761098783612196565b5b600160a060020a0383166000908152600560205260409020600101546109ad906121f8565b601554600160a060020a0385166000908152600560205260409020660100000000000090910291840191821760019091015560108054840190819055600f805487019055600a549192501415610a7357602680546002919060ff19166001835b0217905550610a1a612207565b60408051602081018490528181526011818301527f5075726368617365642c4772616e746564000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a1610ac8565b60408051602081018490528181526009818301527f5075726368617365640000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5b50505050565b60015433600160a060020a039081169116141580610b03575060025b602654610100900460ff166002811115610b0157fe5b145b15610b0e5760006000fd5b60008054600160a060020a031916600160a060020a0383161790555b50565b600160a060020a03338116600081815260096020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600060015b60265460ff166004811115610bae57fe5b1480610bcb575060005b60265460ff166004811115610bc957fe5b145b15610bd95750600a54610bde565b506010545b5b90565b60215481565b60125481565b600160a060020a03811660009081526005602052604081205460ff1615610c2d5750600160a060020a0381166000908152600560205260409020600201545b5b919050565b60008054819081908190600160a060020a038881169116148015610c585750601d5442105b15610c665760009350610def565b600160a060020a038716600090815260056020526040902060010154610c8b906122d5565b92509250848210158015610cc65750600160a060020a0380881660009081526009602090815260408083203390941683529290522054859010155b8015610cd25750600085115b15610dea57600160a060020a03808816600090815260056020526040808220600101805489900390559188168152205460ff161515610d1457610d1486612196565b5b600160a060020a038616600090815260056020526040902060010154610d3a906121f8565b8501905060015b60265460ff166004811115610d5257fe5b1415610d5e5760155492505b600160a060020a0380871660008181526005602090815260408083206601000000000000890287176001909101558b8516808452600983528184203390961684529482529182902080548a90039055815189815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a360019350610def565b600093505b5b5050509392505050565b60175481565b60008060045b60265460ff166004811115610e1757fe5b1480610e34575060035b60265460ff166004811115610e3257fe5b145b15610e3e57610ffb565b60005b60265460ff166004811115610e5257fe5b1415610eaf5760195442118015610e6b5750601a544211155b15610e8957602680546001919060ff191682805b0217905550610ea9565b601a54421115610ea957602680546002919060ff19166001835b02179055505b5b610f94565b610eb7611c16565b9150610ec1611238565b9050601a5442118015610ed55750600b5482105b80610eed5750601b5442118015610eed5750600c5481105b5b15610f0d57602680546003919060ff19166001835b0217905550610f49565b601a5442118015610f205750600b548210155b8015610f2e5750600c548110155b15610f4957602680546004919060ff19166001835b02179055505b5b60015b60265460ff166004811115610f5e57fe5b148015610f785750600a5482101580610f785750601a5442115b5b15610f9457602680546002919060ff19166001835b02179055505b5b5b601f5460ff16158015610fbb575060015b60265460ff166004811115610fb857fe5b14155b8015610fd9575060005b60265460ff166004811115610fd657fe5b14155b8015610fee5750600b54610feb611c16565b10155b15610ffb57610ffb612207565b5b5b5050565b600160a060020a0333166000908152600560205260408120600201541515611076576040805160208082526009908201527f302042616c616e6365000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1610bde565b60005433600160a060020a0390811691161480156110955750601d5442105b1561109f57610bde565b50600160a060020a0333166000818152600560205260408082206002018054908390556024549151909392849190818181858888f193505050501515610bde5760006000fd5b5b5b90565b60015433600160a060020a03908116911614801590611118575060005433600160a060020a03908116911614155b1561112257611132565b6023839055602582905560248190555b5b505050565b60155481565b80158061114c57506103e881115b156111a4576040805160208082526008908201527f496e76616c69642e00000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a16108f3565b600060115411806111b757506000601254135b156111ca576111c581611ead565b6108f3565b604080516020808252600e908201527f4e6f7468696e6720746f20646f2e00000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b5b50565b601c5481565b602654610100900460ff1681565b600e5481565b6004546000908190600160a060020a0316156112c357600460009054906101000a9004600160a060020a0316905080600160a060020a0316631123efd56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b15156112ac57fe5b60325a03f115156112b957fe5b5050604051519250505b5b5090565b600160a060020a03811660009081526005602052604081205460ff1615610c2d57600160a060020a03821660009081526005602052604090206001015461130e906121f8565b90505b5b919050565b600154600090819033600160a060020a0390811691161480159061134a575060005433600160a060020a03908116911614155b156113555760006000fd5b60025b60265460ff16600481111561136957fe5b14156113b357600b5461137a611c16565b101580156113885750602054155b156113b3576001602055600f546064905b04600902602155600f546064905b04602255600191909117905b5b60045b60265460ff1660048111156113c857fe5b141561142f5760205415156113fd576001602055600f546064905b04600902602155600f546064905b04602255600491909117905b6020546001141561142f576002602055600f54600a905b04600f54036021600082825401925050819055506008821791505b5b600060215411156114915750602180546000918290556002546023546040519293600160a060020a03909216929091849190818181858888f1935050505015156114855760218190556020919091179061148c565b6040821791505b6114ee565b600060225411156114ee5750602280546000918290556003546023546040519293600160a060020a03909216929091849190818181858888f1935050505015156114e6576022819055608091909117906114ee565b610100821791505b5b5b6040805160208101849052818152600b818301527f69636f2d636865636b7570000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5050565b60105481565b600d5481565b602654601954601a54601b54601d54600b54600c5460ff9096169590916000908190819081908190611585611c16565b955061158f611238565b9450600f549350600854925060205491505b909192939495969798999a9b565b60015433600160a060020a03908116911614156108f357600454600160a060020a031615806115f4575060005b602654610100900460ff1660028111156115f257fe5b145b1561161e5760048054600160a060020a031916600160a060020a03831617905560006008556108f3565b604080516020808252600b908201527f416c72656164792053657400000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b5b50565b600154600090819033600160a060020a0390811691161461169257611931565b600e8690556017849055601883905560025b602654610100900460ff1660028111156116ba57fe5b14156116c557611931565b602680548e919061ff0019166101008360028111156116e057fe5b021790555060025b8d60028111156116f457fe5b141561174d576040805160208082526008908201527f4c6f636b696e672100000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611931565b602680546000919060ff19166001835b0217905550620186a0602355612710602481905560255560105460009011156117de57600091505b6007548210156117de5750600081815260066020526040902054600160a060020a031680156117d257600160a060020a038116600090815260056020526040812060018101829055600201555b5b600190910190611785565b5b60006010819055600f819055600881905560198d9055601a8c9055601b8b9055600c8a9055600b899055600a889055600d8690556301e133808d01601d55601e8190556011819055601281905560016015556016819055602081905560218190556022819055601f805460ff19169055601c819055600160a060020a0330163111156118e157600154602554604051600160a060020a0392831692301631906000818181858888f1935050505015156118e1576040805160208082526006908201527f4552524f5221000000000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b5b6040805160208082526002908201527f6f6b00000000000000000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a15b50505050505050505050505050565b600154600160a060020a031681565b60015433600160a060020a039081169116141580611983575060025b602654610100900460ff16600281111561198157fe5b145b1561198e5760006000fd5b60028054600160a060020a031916600160a060020a0383161790555b50565b6023546025546024545b909192565b60015433600160a060020a0390811691161415806119f0575060025b602654610100900460ff1660028111156119ee57fe5b145b156119fb5760006000fd5b60038054600160a060020a031916600160a060020a0383161790555b50565b60015433600160a060020a039081169116141580611a4e575060025b602654610100900460ff166002811115611a4c57fe5b145b15611a595760006000fd5b60018054600160a060020a031916600160a060020a0383161790555b50565b600254600354600054600454600160a060020a03938416939283169291821691165b90919293565b6000805481908190819033600160a060020a039081169116148015611ac65750601d5442105b15611ad45760009350611c0c565b600160a060020a033316600090815260056020526040902060010154611af9906122d5565b92509250848210158015611b0d5750600085115b15611c0757600160a060020a03338116600090815260056020526040808220600101805489900390559188168152205460ff161515611b4f57611b4f86612196565b5b600160a060020a038616600090815260056020526040902060010154611b75906121f8565b8501905060015b60265460ff166004811115611b8d57fe5b1415611b995760155492505b600160a060020a038087166000818152600560209081526040918290206601000000000000880286176001909101558151898152915192933316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a360019350611c0c565b600093505b5b50505092915050565b601e54601054035b90565b60005b602654610100900460ff166002811115611c3a57fe5b14611c455760006000fd5b60015433600160a060020a03908116911614611c615760006000fd5b600054600160a060020a0316ff5b565b60185481565b33600080611c83610e00565b600160a060020a038316600090815260056020526040902060010154611ca8906121f8565b915060035b60265460ff166004811115611cbe57fe5b14611d16576040805160208082526009908201527f4e6f20526566756e64000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611132565b811515611d70576040805160208082526009908201527f4e6f20546f6b656e73000000000000000000000000000000000000000000000081830152905160008051602061231b8339815191529181900360600190a1611132565b600d5482029050600b54611d82611c16565b10611d8f57600a815b0490035b60008054600160a060020a031681526005602052604090205460ff161515611dc657600054611dc690600160a060020a0316612196565b5b60008054600160a060020a03908116825260056020526040808320600190810180548701905591861683528220908101829055600201541115611e3e57600160a060020a03808416600081815260056020526040808220600290810180548454909616845291832001805490940190935590815290555b602554604051600160a060020a038516919083906000818181858888f1935050505015156111325760006000fd5b5b5b5b505050565b600160a060020a038083166000908152600960209081526040808320938516835292905220545b92915050565b60115481565b60165481565b600060006000600060006000600060105460001415611ecb57612189565b6000601154118015611edd5750601254155b8015611eee5750601854601c540142115b15611f885760158054600101908190556180009010611f0d5760016015555b42601c556011805460128190556013556010546014556000908190556016556015546040805160208101929092528082526008828201527f537461727452756e0000000000000000000000000000000000000000000000006060830152516000805160206122fb8339815191529181900360800190a1612189565b6000601254131561218957601454601354811515611fa257fe5b0495506000945060165493505b8785108015611fbf575060075484105b8015611fcd57506000601254135b1561209857600084815260066020526040902054600160a060020a03169250821515611ff85761208b565b600160a060020a03831660009081526005602052604090206001015461201d906122d5565b9150915060008111801561203357506015548214155b1561208b576012548682029750871361208b57600160a060020a038316600090815260056020526040902060028101805489019055601554660100000000000002821760019182015560128054899003905594909401935b5b5b600190930192611faf565b6016849055600754841015806120b15750600060125413155b15612134576000601681905560125413156120d3576012546011805490910190555b6000601255601354604080516020810192909252808252600b828201527f52756e436f6d706c6574650000000000000000000000000000000000000000006060830152516000805160206122fb8339815191529181900360800190a1612189565b60408051602081018790528181526006818301527f50617952756e0000000000000000000000000000000000000000000000000000606082015290516000805160206122fb8339815191529181900360800190a15b5b5b5b5050505050505050565b600160a060020a0381166000818152600560209081526040808320805460ff191660019081178255601554660100000000000002918101919091556007805491820190558352600690915290208054600160a060020a03191690911790555b50565b65ffffffffffff81165b919050565b601f5460009060ff1615156108f357601f805460ff19166001179055601054606490600f025b04601e81905560108054909101905560008054600160a060020a031681526005602052604090205460ff1615156122735760005461227390600160a060020a0316612196565b5b601e5460008054600160a060020a031681526005602052604090206001015461229c906121f8565b60155460008054600160a060020a03168152600560205260409020919092016601000000000000909202821760019091015590505b5b50565b6000806601000000000000835b0461ffff1691508265ffffffffffff1690505b91509156009e229c55f86322ec7d67b654476e2d52934c738b3cd58c026b5b2b6e9b7b992d1df4241f9d28385037b9339fabdb2fac8a42cb5e489c20da7a82bb32f517e648a165627a7a72305820c3039feace276128a8a24bc387d61714eecae740de955c6578526a4a4027bebc0029
Swarm Source
bzzr://c3039feace276128a8a24bc387d61714eecae740de955c6578526a4a4027bebc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,111.01 | 1.1432 | $3,556.38 |
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.