Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,633 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 16462658 | 543 days ago | IN | 0 ETH | 0.00352881 | ||||
Approve | 11541634 | 1299 days ago | IN | 0 ETH | 0.00471366 | ||||
Transfer | 8014147 | 1852 days ago | IN | 0 ETH | 0.00054958 | ||||
Transfer | 7979904 | 1858 days ago | IN | 0 ETH | 0.00128944 | ||||
Transfer | 7909364 | 1869 days ago | IN | 0 ETH | 0.01117885 | ||||
Transfer | 7866328 | 1876 days ago | IN | 0 ETH | 0.01118147 | ||||
Transfer | 6624088 | 2086 days ago | IN | 0 ETH | 0.002652 | ||||
Transfer | 6346833 | 2132 days ago | IN | 0 ETH | 0.0102039 | ||||
Transfer | 6346794 | 2132 days ago | IN | 0 ETH | 0.00622914 | ||||
Transfer | 6346741 | 2132 days ago | IN | 0 ETH | 0.00209479 | ||||
Transfer | 6333530 | 2134 days ago | IN | 0 ETH | 0.00093272 | ||||
Transfer | 6333523 | 2134 days ago | IN | 0 ETH | 0.01117885 | ||||
Transfer | 6258769 | 2146 days ago | IN | 0 ETH | 0.00046632 | ||||
Transfer | 6258751 | 2146 days ago | IN | 0 ETH | 0.01117623 | ||||
Transfer | 6256530 | 2147 days ago | IN | 0 ETH | 0.0099557 | ||||
Transfer | 6251409 | 2148 days ago | IN | 0 ETH | 0.01457316 | ||||
Transfer | 6251227 | 2148 days ago | IN | 0 ETH | 0.000424 | ||||
Transfer | 6247169 | 2148 days ago | IN | 0 ETH | 0.01316988 | ||||
Transfer | 6246931 | 2148 days ago | IN | 0 ETH | 0.00047775 | ||||
Transfer | 6245599 | 2149 days ago | IN | 0 ETH | 0.00358314 | ||||
Transfer | 6244395 | 2149 days ago | IN | 0 ETH | 0.00358314 | ||||
Transfer | 6240784 | 2149 days ago | IN | 0 ETH | 0.00995832 | ||||
Transfer | 6237323 | 2150 days ago | IN | 0 ETH | 0.00077946 | ||||
Transfer | 6237314 | 2150 days ago | IN | 0 ETH | 0.0111841 | ||||
Transfer | 6236745 | 2150 days ago | IN | 0 ETH | 0.00106153 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Spark
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-16 */ pragma solidity 0.4.19; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } 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; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { //Variables address public owner; address public newOwner; // Modifiers /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0)); newOwner = _newOwner; } function acceptOwnership() public { if (msg.sender == newOwner) { owner = newOwner; } } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public constant returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public constant returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping (address => uint256) public balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval(address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract SparkERC20 is StandardToken, Ownable { using SafeMath for uint256; /* Public variables of the token */ uint256 public creationBlock; uint8 public decimals; string public name; string public symbol; string public standard; bool public locked; /* Initializes contract with initial supply tokens to the creator of the contract */ function SparkERC20( uint256 _totalSupply, string _tokenName, uint8 _decimalUnits, string _tokenSymbol, bool _transferAllSupplyToOwner, bool _locked ) public { standard = "ERC20 0.1"; locked = _locked; totalSupply = _totalSupply; if (_transferAllSupplyToOwner) { balances[msg.sender] = totalSupply; } else { balances[this] = totalSupply; } name = _tokenName; // Set the name for display purposes symbol = _tokenSymbol; // Set the symbol for display purposes decimals = _decimalUnits; // Amount of decimals for display purposes creationBlock = block.number; } /* public methods */ function transfer(address _to, uint256 _value) public returns (bool) { require(locked == false); return super.transfer(_to, _value); } function approve(address _spender, uint256 _value) public returns (bool success) { if (locked) { return false; } return super.approve(_spender, _value); } function increaseApproval(address _spender, uint _addedValue) public returns (bool success) { if (locked) { return false; } return super.increaseApproval(_spender, _addedValue); } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool success) { if (locked) { return false; } return super.decreaseApproval(_spender, _subtractedValue); } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { if (locked) { return false; } return super.transferFrom(_from, _to, _value); } } /* This contract manages the minters and the modifier to allow mint to happen only if called by minters This contract contains basic minting functionality though */ contract MintingERC20 is SparkERC20 { // Variables uint256 public maxSupply; mapping (address => bool) public minters; // Modifiers modifier onlyMinters() { require(true == minters[msg.sender]); _; } function MintingERC20( uint256 _initialSupply, uint256 _maxSupply, string _tokenName, uint8 _decimals, string _symbol, bool _transferAllSupplyToOwner, bool _locked ) public SparkERC20( _initialSupply, _tokenName, _decimals, _symbol, _transferAllSupplyToOwner, _locked ) { standard = "MintingERC20 0.1"; minters[msg.sender] = true; maxSupply = _maxSupply; } function addMinter(address _newMinter) public onlyOwner { minters[_newMinter] = true; } function removeMinter(address _minter) public onlyOwner { minters[_minter] = false; } function mint(address _addr, uint256 _amount) public onlyMinters returns (uint256) { if (_amount == uint256(0)) { return uint256(0); } if (totalSupply.add(_amount) > maxSupply) { return uint256(0); } totalSupply = totalSupply.add(_amount); balances[_addr] = balances[_addr].add(_amount); Transfer(address(0), _addr, _amount); return _amount; } } contract Spark is MintingERC20 { ICO public ico; SparkDividends public dividends; bool public transferFrozen = true; function Spark( string _tokenName, uint8 _decimals, string _symbol, uint256 _maxSupply, bool _locked ) public MintingERC20(0, _maxSupply, _tokenName, _decimals, _symbol, false, _locked) { standard = "Spark 0.1"; } function setICO(address _ico) public onlyOwner { require(_ico != address(0)); ico = ICO(_ico); } function setSparkDividends(address _dividends) public onlyOwner { require(address(0) != _dividends); dividends = SparkDividends(_dividends); } function setLocked(bool _locked) public onlyOwner { locked = _locked; } // prevent manual minting tokens when ICO is active; function mint(address _addr, uint256 _amount) public onlyMinters returns (uint256) { uint256 mintedAmount; if (msg.sender == owner) { require(address(ico) != address(0)); if (!ico.isActive() && block.timestamp >= ico.startTime()) { mintedAmount = super.mint(_addr, _amount); } } else { mintedAmount = super.mint(_addr, _amount); } if (mintedAmount == _amount) { require(address(dividends) != address(0)); dividends.logAccount(_addr, _amount); } return mintedAmount; } // Allow token transfer. function freezing(bool _transferFrozen) public onlyOwner { if (address(ico) != address(0) && !ico.isActive() && block.timestamp >= ico.startTime()) { transferFrozen = _transferFrozen; } } // ERC20 functions // ========================= function transfer(address _to, uint _value) public returns (bool) { require(!transferFrozen); bool status = super.transfer(_to, _value); if (status) { require(address(dividends) != address(0)); dividends.logAccount(msg.sender, 0); dividends.logAccount(_to, 0); } return status; } function transferFrom(address _from, address _to, uint _value) public returns (bool success) { require(!transferFrozen); bool status = super.transferFrom(_from, _to, _value); if (status) { require(address(dividends) != address(0)); dividends.logAccount(_from, 0); dividends.logAccount(_to, 0); } return status; } } contract WhiteList is Ownable { mapping (address => bool) public whitelist; /* events */ event WhitelistSet(address contributorAddress); event WhitelistUnset(address contributorAddress); modifier onlyWhitelisted() { require(true == whitelist[msg.sender]); _; } function WhiteList() public { whitelist[msg.sender] = true; } function addToWhitelist(address _address) public onlyOwner { whitelist[_address] = true; WhitelistSet(_address); } function removeFromWhitelist(address _address) public onlyOwner { whitelist[_address] = false; WhitelistUnset(_address); } } contract SparkDividends is Ownable { using SafeMath for uint256; Spark public spark; ICO public ico; address public treasuryAddress; mapping(address => DividendData[]) public accounts; FundsData[] public funds; struct DividendData { uint256 period; uint256 day; uint256 balance; } struct FundsData { uint256 period; uint256 ethersAmount; } event Disbursed(address indexed holder, uint256 value); modifier onlySparkContracts() { require(msg.sender == address(spark) || msg.sender == address(ico)); _; } function SparkDividends( address _spark, address _ico, address _treasuryAddress ) public { require(_spark != address(0) && _ico != address(0) && _treasuryAddress != address(0)); spark = Spark(_spark); ico = ICO(_ico); treasuryAddress = _treasuryAddress; } function setSpark(address _spark) public onlyOwner { require(_spark != address(0)); spark = Spark(_spark); } function setICO(address _ico) public onlyOwner { require(_ico != address(0)); ico = ICO(_ico); } function setTreasuryAddress(address _treasuryAddress) public onlyOwner { require(_treasuryAddress != address(0)); treasuryAddress = _treasuryAddress; } function transferEthers() public onlyOwner { owner.transfer(this.balance); } function logAccount(address _address, uint256 _amount) public onlySparkContracts returns (bool) { uint256 day = 0; uint256 period = 1; if (now > ico.endTime()) { (period, day) = getPeriod(now); } if (_address != address(0) && period > 0) { if (day != 0 && _amount > 0) { logData(_address, period, 0, _amount); } logData(_address, period, day, 0); return true; } return false; } function setEtherAmount() public payable returns (bool) { if (msg.value == 0) { return false; } uint256 day = 0; uint256 period = 1; if (now > ico.endTime()) { (period, day) = getPeriod(now); } uint256 index = getFundsDataIndex(period); if (index == funds.length) { funds.push(FundsData(period, msg.value)); } else { funds[index].ethersAmount = funds[index].ethersAmount.add(msg.value); } return true; } function claim() public returns (bool) { uint256 currentDay; uint256 currentPeriod; bool status; (currentPeriod, currentDay) = getPeriod(now); if (currentPeriod == 1) { return false; } uint256 dividendAmount; uint256 outdatedAmount; (dividendAmount, outdatedAmount) = calculateAmount(msg.sender, currentPeriod, currentDay); if (dividendAmount == 0) { return false; } msg.sender.transfer(dividendAmount); if (outdatedAmount > 0) { treasuryAddress.transfer(outdatedAmount); } if (cleanDividendsData(msg.sender, currentPeriod)) { Disbursed(msg.sender, dividendAmount); status = true; } require(status); return true; } function calculateAmount( address _address, uint256 _currentPeriod, uint256 _currentDay ) public view returns (uint256 totalAmount, uint256 totalOutdated) { for (uint256 i = 0; i < accounts[_address].length; i++) { if (accounts[_address][i].period < _currentPeriod) { uint256 index = getFundsDataIndex(accounts[_address][i].period); if (index == funds.length) { continue; } uint256 dayEthers = funds[index].ethersAmount.div(90); uint256 balance; uint256 to = 90; if ( accounts[_address].length > i.add(1) && accounts[_address][i.add(1)].period == accounts[_address][i].period ) { to = accounts[_address][i.add(1)].day; } for (uint256 j = accounts[_address][i].day; j < to; j++) { balance = getBalanceByDay(_address, accounts[_address][i].period, j); if (_currentPeriod.sub(accounts[_address][i].period) > 1 && _currentDay > 2) { totalOutdated = totalOutdated.add(balance.mul(dayEthers).div(spark.maxSupply())); } else { totalAmount = totalAmount.add(balance.mul(dayEthers).div(spark.maxSupply())); } } } } } function logData(address _address, uint256 _period, uint256 _day, uint256 _amount) internal { uint256 index = getDividendDataIndex(_address, _period, _day); if (accounts[_address].length == index) { accounts[_address].push(DividendData(_period, _day, spark.balanceOf(_address).sub(_amount))); } else if (_amount == 0) { accounts[_address][index].balance = spark.balanceOf(_address); } } function getPeriod(uint256 _time) internal view returns (uint256, uint256) { uint256 day = uint(_time.sub(ico.endTime()) % 90 days).div(1 days); uint256 period = _time.sub(ico.endTime()).div(90 days); return (++period, day); } function cleanDividendsData(address _address, uint256 _currentPeriod) internal returns (bool) { for (uint256 i = 0; i < accounts[_address].length; i++) { if (accounts[_address][i].period < _currentPeriod) { for (uint256 j = i; j < accounts[_address].length.sub(1); j++) { DividendData storage dividend = accounts[_address][j]; dividend.period = accounts[_address][j.add(1)].period; dividend.day = accounts[_address][j.add(1)].day; dividend.balance = accounts[_address][j.add(1)].balance; } delete accounts[_address][accounts[_address].length.sub(1)]; accounts[_address].length--; i--; } } return true; } function getFundsDataIndex(uint256 _period) internal view returns (uint256) { for (uint256 i = 0; i < funds.length; i++) { if (funds[i].period == _period) { return i; } } return funds.length; } function getBalanceByDay(address _address, uint256 _period, uint256 _day) internal view returns (uint256) { for (uint256 i = accounts[_address].length.sub(1); i >= 0; i--) { if (accounts[_address][i].period == _period && accounts[_address][i].day <= _day) { return accounts[_address][i].balance; } } return 0; } function getDividendDataIndex(address _address, uint256 _period, uint256 _day) internal view returns (uint256) { for (uint256 i = 0; i < accounts[_address].length; i++) { if (accounts[_address][i].period == _period && accounts[_address][i].day == _day) { return i; } } return accounts[_address].length; } } contract Multivest is Ownable { /* public variables */ mapping (address => bool) public allowedMultivests; /* events */ event MultivestSet(address multivest); event MultivestUnset(address multivest); event Contribution(address holder, uint256 value, uint256 tokens); modifier onlyAllowedMultivests(address _addresss) { require(allowedMultivests[_addresss] == true); _; } /* constructor */ function Multivest(address _multivest) public { allowedMultivests[_multivest] = true; } function setAllowedMultivest(address _address) public onlyOwner { allowedMultivests[_address] = true; MultivestSet(_address); } function unsetAllowedMultivest(address _address) public onlyOwner { allowedMultivests[_address] = false; MultivestUnset(_address); } function multivestBuy(address _address, uint256 _value) public onlyAllowedMultivests(msg.sender) { require(buy(_address, _value) == true); } function multivestBuy( address _address, uint8 _v, bytes32 _r, bytes32 _s ) public payable onlyAllowedMultivests(verify(keccak256(msg.sender), _v, _r, _s)) { require(_address == msg.sender && buy(msg.sender, msg.value) == true); } function verify(bytes32 _hash, uint8 _v, bytes32 _r, bytes32 _s) internal pure returns(address) { bytes memory prefix = "\x19Ethereum Signed Message:\n32"; return ecrecover(keccak256(prefix, _hash), _v, _r, _s); } function buy(address _address, uint256 value) internal returns (bool); } contract SellableToken is Multivest { using SafeMath for uint256; // The token being sold Spark public spark; // start and end timestamps where investments are allowed (both inclusive) uint256 public startTime; uint256 public endTime; // amount of sold tokens uint256 public soldTokens; // amount of raised money in wei uint256 public collectedEthers; // address where funds are collected address public etherHolder; address public tokensHolder; Bonus[] public bonuses; struct Bonus { uint256 maxAmount; uint256 bonus; } function SellableToken( address _multivestAddress, address _etherHolder, address _tokensHolder, address _spark, uint256 _startTime, uint256 _endTime ) public Multivest(_multivestAddress) { require(_spark != address(0) && _etherHolder != address(0) && _tokensHolder != address(0)); spark = Spark(_spark); etherHolder = _etherHolder; tokensHolder = _tokensHolder; require(_startTime < _endTime); startTime = _startTime; endTime = _endTime; } function setSpark(address _spark) public onlyOwner { require(_spark != address(0)); spark = Spark(_spark); } function setEtherHolder(address _etherHolder) public onlyOwner { require(_etherHolder != address(0)); etherHolder = _etherHolder; } function setTokenHolder(address _tokensHolder) public onlyOwner { require(_tokensHolder != address(0)); tokensHolder = _tokensHolder; } function transferEthers() public onlyOwner { etherHolder.transfer(this.balance); } // @return true if sale period is active function isActive() public constant returns (bool) { if (soldTokens == spark.maxSupply()) { return false; } return withinPeriod(); } // @return true if the transaction can buy tokens function withinPeriod() public constant returns (bool) { return block.timestamp >= startTime && block.timestamp <= endTime; } } contract ICO is SellableToken, WhiteList { uint256 public price; function ICO( address _multivestAddress, address _etherHolder, address _tokensHolder, address _spark, uint256 _startTime, uint256 _endTime, uint256 _price ) public SellableToken( _multivestAddress, _etherHolder, _tokensHolder, _spark, _startTime, _endTime ) WhiteList() { require(_price > 0); price = _price; bonuses.push(Bonus(uint(10000000).mul(uint(10) ** spark.decimals()), uint256(150))); bonuses.push(Bonus(uint(15000000).mul(uint(10) ** spark.decimals()), uint256(125))); bonuses.push(Bonus(uint(20000000).mul(uint(10) ** spark.decimals()), uint256(110))); } function() public payable onlyWhitelisted { require(buy(msg.sender, msg.value) == true); } function allocateUnsoldTokens() public { if (!isActive() && block.timestamp >= startTime) { uint256 amount = spark.maxSupply().sub(soldTokens); require(amount > 0 && spark.mint(tokensHolder, amount) == amount); soldTokens = spark.maxSupply(); } } function calculateTokensAmount(uint256 _value) public view returns (uint256 amount) { amount = _value.mul(uint(10) ** spark.decimals()).div(price); amount = amount.add(calculateBonusAmount(amount)); } function calculateEthersAmount(uint256 _tokens) public view returns (uint256 ethers, uint256 bonus) { if (_tokens == 0) { return (0, 0); } ethers = _tokens.mul(price).div(uint(10) ** spark.decimals()); bonus = calculateBonusAmount(_tokens); } function buy(address _address, uint256 _value) internal returns (bool) { if (_value == 0) { return false; } require(withinPeriod() && _address != address(0)); uint256 amount = calculateTokensAmount(_value); require(amount > 0 && spark.mint(_address, amount) == amount); collectedEthers = collectedEthers.add(_value); soldTokens = soldTokens.add(amount); Contribution(_address, _value, amount); return true; } function calculateBonusAmount(uint256 _amount) internal view returns (uint256) { uint256 newSoldTokens = soldTokens; uint256 remainingValue = _amount; for (uint i = 0; i < bonuses.length; i++) { if (bonuses[i].maxAmount > soldTokens) { uint256 amount = remainingValue.mul(bonuses[i].bonus).div(100); if (newSoldTokens.add(amount) > bonuses[i].maxAmount) { uint256 diff = bonuses[i].maxAmount.sub(newSoldTokens); remainingValue = remainingValue.sub(diff.mul(100).div(bonuses[i].bonus)); newSoldTokens = newSoldTokens.add(diff); } else { remainingValue = 0; newSoldTokens = newSoldTokens.add(amount); } if (remainingValue == 0) { break; } } } return newSoldTokens.add(remainingValue).sub(soldTokens.add(_amount)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"creationBlock","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":false,"inputs":[{"name":"_locked","type":"bool"}],"name":"setLocked","outputs":[],"payable":false,"stateMutability":"nonpayable","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividends","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transferFrozen","type":"bool"}],"name":"freezing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ico","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dividends","type":"address"}],"name":"setSparkDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newMinter","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ico","type":"address"}],"name":"setICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"minters","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_tokenName","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_symbol","type":"string"},{"name":"_maxSupply","type":"uint256"},{"name":"_locked","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
6060604052600e805460a060020a60ff0219167401000000000000000000000000000000000000000017905534156200003757600080fd5b604051620018d0380380620018d083398101604052808051820191906020018051919060200180518201919060200180519190602001805160038054600160a060020a03191633600160a060020a03161790559150600090508286868684868185858583856040805190810160405260098082527f455243323020302e3100000000000000000000000000000000000000000000006020830152908051620000e492916020019062000257565b50600a805460ff191682151517905560008690558115620001205760008054600160a060020a033316825260016020526040909120556200013c565b60008054600160a060020a033016825260016020526040909120555b60078580516200015192916020019062000257565b5060088380516200016792916020019062000257565b50506006805460ff191660ff949094169390931790925550504360055550604090508051908101604052601081527f4d696e74696e67455243323020302e310000000000000000000000000000000060208201526009908051620001d092916020019062000257565b505050600160a060020a0333166000908152600c602052604090819020805460ff19166001179055600b9490945550919250829150505190810160405260098082527f537061726b20302e31000000000000000000000000000000000000000000000060208301529080516200024b92916020019062000257565b505050505050620002fc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029a57805160ff1916838001178555620002ca565b82800160010185558215620002ca579182015b82811115620002ca578251825591602001919060010190620002ad565b50620002d8929150620002dc565b5090565b620002f991905b80821115620002d85760008155600101620002e3565b90565b6115c4806200030c6000396000f3006060604052600436106101715763ffffffff60e060020a60003504166306fdde038114610176578063095ea7b314610200578063176345141461023657806318160ddd1461025b578063211e28b61461026e57806323b872dd1461028857806327e235e3146102b05780633092afd5146102cf578063313ce567146102ee57806335d974051461031757806336a23dbf1461034657806340c10f191461035e5780635a3b7e42146103805780635d4522011461039357806366188463146103a657806370a08231146103c857806379ba5097146103e75780637ec2ae46146103fa5780638da5cb5b1461041957806395d89b411461042c578063983b2d561461043f578063a9059cbb1461045e578063ade4637a14610480578063b6f50c2914610493578063cf309012146104b2578063d4ee1d90146104c5578063d5abeb01146104d8578063d73dd623146104eb578063dd62ed3e1461050d578063f2fde38b14610532578063f46eccc414610551575b600080fd5b341561018157600080fd5b610189610570565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101c55780820151838201526020016101ad565b50505050905090810190601f1680156101f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020b57600080fd5b610222600160a060020a036004351660243561060e565b604051901515815260200160405180910390f35b341561024157600080fd5b610249610637565b60405190815260200160405180910390f35b341561026657600080fd5b61024961063d565b341561027957600080fd5b6102866004351515610643565b005b341561029357600080fd5b610222600160a060020a0360043581169060243516604435610671565b34156102bb57600080fd5b610249600160a060020a03600435166107b4565b34156102da57600080fd5b610286600160a060020a03600435166107c6565b34156102f957600080fd5b610301610802565b60405160ff909116815260200160405180910390f35b341561032257600080fd5b61032a61080b565b604051600160a060020a03909116815260200160405180910390f35b341561035157600080fd5b610286600435151561081a565b341561036957600080fd5b610249600160a060020a036004351660243561094e565b341561038b57600080fd5b610189610b3f565b341561039e57600080fd5b61032a610baa565b34156103b157600080fd5b610222600160a060020a0360043516602435610bb9565b34156103d357600080fd5b610249600160a060020a0360043516610bd9565b34156103f257600080fd5b610286610bf4565b341561040557600080fd5b610286600160a060020a0360043516610c3d565b341561042457600080fd5b61032a610c9c565b341561043757600080fd5b610189610cab565b341561044a57600080fd5b610286600160a060020a0360043516610d16565b341561046957600080fd5b610222600160a060020a0360043516602435610d55565b341561048b57600080fd5b610222610e73565b341561049e57600080fd5b610286600160a060020a0360043516610e83565b34156104bd57600080fd5b610222610ee2565b34156104d057600080fd5b61032a610eeb565b34156104e357600080fd5b610249610efa565b34156104f657600080fd5b610222600160a060020a0360043516602435610f00565b341561051857600080fd5b610249600160a060020a0360043581169060243516610f20565b341561053d57600080fd5b610286600160a060020a0360043516610f4b565b341561055c57600080fd5b610222600160a060020a0360043516610faa565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b820191906000526020600020905b8154815290600101906020018083116105e957829003601f168201915b505050505081565b600a5460009060ff161561062457506000610631565b61062e8383610fbf565b90505b92915050565b60055481565b60005481565b60035433600160a060020a0390811691161461065e57600080fd5b600a805460ff1916911515919091179055565b600e54600090819060a060020a900460ff161561068d57600080fd5b61069885858561102b565b905080156107ac57600e54600160a060020a031615156106b757600080fd5b600e54600160a060020a031663fc688e87866000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071657600080fd5b6102c65a03f1151561072757600080fd5b50505060405180515050600e54600160a060020a031663fc688e87856000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561079057600080fd5b6102c65a03f115156107a157600080fd5b505050604051805150505b949350505050565b60016020526000908152604090205481565b60035433600160a060020a039081169116146107e157600080fd5b600160a060020a03166000908152600c60205260409020805460ff19169055565b60065460ff1681565b600e54600160a060020a031681565b60035433600160a060020a0390811691161461083557600080fd5b600d54600160a060020a0316158015906108af5750600d54600160a060020a03166322f3e2d46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561089257600080fd5b6102c65a03f115156108a357600080fd5b50505060405180519050155b801561091d5750600d54600160a060020a03166378e979256000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108fe57600080fd5b6102c65a03f1151561090f57600080fd5b505050604051805190504210155b1561094b57600e805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b50565b600160a060020a0333166000908152600c6020526040812054819060ff16151560011461097a57600080fd5b60035433600160a060020a0390811691161415610a9157600d54600160a060020a031615156109a857600080fd5b600d54600160a060020a03166322f3e2d46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109f057600080fd5b6102c65a03f11515610a0157600080fd5b50505060405180519050158015610a7a5750600d54600160a060020a03166378e979256000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a5b57600080fd5b6102c65a03f11515610a6c57600080fd5b505050604051805190504210155b15610a8c57610a89848461104c565b90505b610a9e565b610a9b848461104c565b90505b82811415610b3857600e54600160a060020a03161515610abd57600080fd5b600e54600160a060020a031663fc688e87858560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b1c57600080fd5b6102c65a03f11515610b2d57600080fd5b505050604051805150505b9392505050565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b600d54600160a060020a031681565b600a5460009060ff1615610bcf57506000610631565b61062e838361113f565b600160a060020a031660009081526001602052604090205490565b60045433600160a060020a0390811691161415610c3b576004546003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b60035433600160a060020a03908116911614610c5857600080fd5b600160a060020a0381161515610c6d57600080fd5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a031681565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b60035433600160a060020a03908116911614610d3157600080fd5b600160a060020a03166000908152600c60205260409020805460ff19166001179055565b600e54600090819060a060020a900460ff1615610d7157600080fd5b610d7b8484611239565b90508015610b3857600e54600160a060020a03161515610d9a57600080fd5b600e54600160a060020a031663fc688e87336000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610df957600080fd5b6102c65a03f11515610e0a57600080fd5b50505060405180515050600e54600160a060020a031663fc688e87856000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b1c57600080fd5b600e5460a060020a900460ff1681565b60035433600160a060020a03908116911614610e9e57600080fd5b600160a060020a0381161515610eb357600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a5460ff1681565b600454600160a060020a031681565b600b5481565b600a5460009060ff1615610f1657506000610631565b61062e8383611256565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a03908116911614610f6657600080fd5b600160a060020a0381161515610f7b57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600c6020526000908152604090205460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600a5460009060ff161561104157506000610b38565b6107ac8484846112fa565b600160a060020a0333166000908152600c602052604081205460ff16151560011461107657600080fd5b81151561108557506000610631565b600b5460005461109b908463ffffffff61147c16565b11156110a957506000610631565b6000546110bc908363ffffffff61147c16565b6000908155600160a060020a0384168152600160205260409020546110e7908363ffffffff61147c16565b600160a060020a0384166000818152600160205260408082209390935590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350919050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561119c57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556111d3565b6111ac818463ffffffff61148b16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600a5460009060ff161561124c57600080fd5b61062e838361149d565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461128e908363ffffffff61147c16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b6000600160a060020a038316151561131157600080fd5b600160a060020a03841660009081526001602052604090205482111561133657600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561136957600080fd5b600160a060020a038416600090815260016020526040902054611392908363ffffffff61148b16565b600160a060020a0380861660009081526001602052604080822093909355908516815220546113c7908363ffffffff61147c16565b600160a060020a0380851660009081526001602090815260408083209490945587831682526002815283822033909316825291909152205461140f908363ffffffff61148b16565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600082820183811015610b3857fe5b60008282111561149757fe5b50900390565b6000600160a060020a03831615156114b457600080fd5b600160a060020a0333166000908152600160205260409020548211156114d957600080fd5b600160a060020a033316600090815260016020526040902054611502908363ffffffff61148b16565b600160a060020a033381166000908152600160205260408082209390935590851681522054611537908363ffffffff61147c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001929150505600a165627a7a723058209c17de793d6f708f92cc0b4bea1d1fb791d042f6707316c659f806a32946ffc8002900000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000014adf4b7320334b900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535041524b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535041524b000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6060604052600436106101715763ffffffff60e060020a60003504166306fdde038114610176578063095ea7b314610200578063176345141461023657806318160ddd1461025b578063211e28b61461026e57806323b872dd1461028857806327e235e3146102b05780633092afd5146102cf578063313ce567146102ee57806335d974051461031757806336a23dbf1461034657806340c10f191461035e5780635a3b7e42146103805780635d4522011461039357806366188463146103a657806370a08231146103c857806379ba5097146103e75780637ec2ae46146103fa5780638da5cb5b1461041957806395d89b411461042c578063983b2d561461043f578063a9059cbb1461045e578063ade4637a14610480578063b6f50c2914610493578063cf309012146104b2578063d4ee1d90146104c5578063d5abeb01146104d8578063d73dd623146104eb578063dd62ed3e1461050d578063f2fde38b14610532578063f46eccc414610551575b600080fd5b341561018157600080fd5b610189610570565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101c55780820151838201526020016101ad565b50505050905090810190601f1680156101f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020b57600080fd5b610222600160a060020a036004351660243561060e565b604051901515815260200160405180910390f35b341561024157600080fd5b610249610637565b60405190815260200160405180910390f35b341561026657600080fd5b61024961063d565b341561027957600080fd5b6102866004351515610643565b005b341561029357600080fd5b610222600160a060020a0360043581169060243516604435610671565b34156102bb57600080fd5b610249600160a060020a03600435166107b4565b34156102da57600080fd5b610286600160a060020a03600435166107c6565b34156102f957600080fd5b610301610802565b60405160ff909116815260200160405180910390f35b341561032257600080fd5b61032a61080b565b604051600160a060020a03909116815260200160405180910390f35b341561035157600080fd5b610286600435151561081a565b341561036957600080fd5b610249600160a060020a036004351660243561094e565b341561038b57600080fd5b610189610b3f565b341561039e57600080fd5b61032a610baa565b34156103b157600080fd5b610222600160a060020a0360043516602435610bb9565b34156103d357600080fd5b610249600160a060020a0360043516610bd9565b34156103f257600080fd5b610286610bf4565b341561040557600080fd5b610286600160a060020a0360043516610c3d565b341561042457600080fd5b61032a610c9c565b341561043757600080fd5b610189610cab565b341561044a57600080fd5b610286600160a060020a0360043516610d16565b341561046957600080fd5b610222600160a060020a0360043516602435610d55565b341561048b57600080fd5b610222610e73565b341561049e57600080fd5b610286600160a060020a0360043516610e83565b34156104bd57600080fd5b610222610ee2565b34156104d057600080fd5b61032a610eeb565b34156104e357600080fd5b610249610efa565b34156104f657600080fd5b610222600160a060020a0360043516602435610f00565b341561051857600080fd5b610249600160a060020a0360043581169060243516610f20565b341561053d57600080fd5b610286600160a060020a0360043516610f4b565b341561055c57600080fd5b610222600160a060020a0360043516610faa565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b820191906000526020600020905b8154815290600101906020018083116105e957829003601f168201915b505050505081565b600a5460009060ff161561062457506000610631565b61062e8383610fbf565b90505b92915050565b60055481565b60005481565b60035433600160a060020a0390811691161461065e57600080fd5b600a805460ff1916911515919091179055565b600e54600090819060a060020a900460ff161561068d57600080fd5b61069885858561102b565b905080156107ac57600e54600160a060020a031615156106b757600080fd5b600e54600160a060020a031663fc688e87866000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071657600080fd5b6102c65a03f1151561072757600080fd5b50505060405180515050600e54600160a060020a031663fc688e87856000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561079057600080fd5b6102c65a03f115156107a157600080fd5b505050604051805150505b949350505050565b60016020526000908152604090205481565b60035433600160a060020a039081169116146107e157600080fd5b600160a060020a03166000908152600c60205260409020805460ff19169055565b60065460ff1681565b600e54600160a060020a031681565b60035433600160a060020a0390811691161461083557600080fd5b600d54600160a060020a0316158015906108af5750600d54600160a060020a03166322f3e2d46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561089257600080fd5b6102c65a03f115156108a357600080fd5b50505060405180519050155b801561091d5750600d54600160a060020a03166378e979256000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108fe57600080fd5b6102c65a03f1151561090f57600080fd5b505050604051805190504210155b1561094b57600e805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b50565b600160a060020a0333166000908152600c6020526040812054819060ff16151560011461097a57600080fd5b60035433600160a060020a0390811691161415610a9157600d54600160a060020a031615156109a857600080fd5b600d54600160a060020a03166322f3e2d46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109f057600080fd5b6102c65a03f11515610a0157600080fd5b50505060405180519050158015610a7a5750600d54600160a060020a03166378e979256000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a5b57600080fd5b6102c65a03f11515610a6c57600080fd5b505050604051805190504210155b15610a8c57610a89848461104c565b90505b610a9e565b610a9b848461104c565b90505b82811415610b3857600e54600160a060020a03161515610abd57600080fd5b600e54600160a060020a031663fc688e87858560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b1c57600080fd5b6102c65a03f11515610b2d57600080fd5b505050604051805150505b9392505050565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b600d54600160a060020a031681565b600a5460009060ff1615610bcf57506000610631565b61062e838361113f565b600160a060020a031660009081526001602052604090205490565b60045433600160a060020a0390811691161415610c3b576004546003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b60035433600160a060020a03908116911614610c5857600080fd5b600160a060020a0381161515610c6d57600080fd5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a031681565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106065780601f106105db57610100808354040283529160200191610606565b60035433600160a060020a03908116911614610d3157600080fd5b600160a060020a03166000908152600c60205260409020805460ff19166001179055565b600e54600090819060a060020a900460ff1615610d7157600080fd5b610d7b8484611239565b90508015610b3857600e54600160a060020a03161515610d9a57600080fd5b600e54600160a060020a031663fc688e87336000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610df957600080fd5b6102c65a03f11515610e0a57600080fd5b50505060405180515050600e54600160a060020a031663fc688e87856000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b1c57600080fd5b600e5460a060020a900460ff1681565b60035433600160a060020a03908116911614610e9e57600080fd5b600160a060020a0381161515610eb357600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a5460ff1681565b600454600160a060020a031681565b600b5481565b600a5460009060ff1615610f1657506000610631565b61062e8383611256565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a03908116911614610f6657600080fd5b600160a060020a0381161515610f7b57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600c6020526000908152604090205460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600a5460009060ff161561104157506000610b38565b6107ac8484846112fa565b600160a060020a0333166000908152600c602052604081205460ff16151560011461107657600080fd5b81151561108557506000610631565b600b5460005461109b908463ffffffff61147c16565b11156110a957506000610631565b6000546110bc908363ffffffff61147c16565b6000908155600160a060020a0384168152600160205260409020546110e7908363ffffffff61147c16565b600160a060020a0384166000818152600160205260408082209390935590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350919050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561119c57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556111d3565b6111ac818463ffffffff61148b16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600a5460009060ff161561124c57600080fd5b61062e838361149d565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461128e908363ffffffff61147c16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b6000600160a060020a038316151561131157600080fd5b600160a060020a03841660009081526001602052604090205482111561133657600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561136957600080fd5b600160a060020a038416600090815260016020526040902054611392908363ffffffff61148b16565b600160a060020a0380861660009081526001602052604080822093909355908516815220546113c7908363ffffffff61147c16565b600160a060020a0380851660009081526001602090815260408083209490945587831682526002815283822033909316825291909152205461140f908363ffffffff61148b16565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600082820183811015610b3857fe5b60008282111561149757fe5b50900390565b6000600160a060020a03831615156114b457600080fd5b600160a060020a0333166000908152600160205260409020548211156114d957600080fd5b600160a060020a033316600090815260016020526040902054611502908363ffffffff61148b16565b600160a060020a033381166000908152600160205260408082209390935590851681522054611537908363ffffffff61147c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001929150505600a165627a7a723058209c17de793d6f708f92cc0b4bea1d1fb791d042f6707316c659f806a32946ffc80029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000014adf4b7320334b900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535041524b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535041524b000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _tokenName (string): SPARK
Arg [1] : _decimals (uint8): 18
Arg [2] : _symbol (string): SPARK
Arg [3] : _maxSupply (uint256): 25000000000000000000000000
Arg [4] : _locked (bool): False
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 00000000000000000000000000000000000000000014adf4b7320334b9000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 535041524b000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 535041524b000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://9c17de793d6f708f92cc0b4bea1d1fb791d042f6707316c659f806a32946ffc8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.