Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,822 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 6154115 | 2205 days ago | IN | 0 ETH | 0.00006418 | ||||
Transfer | 5561097 | 2307 days ago | IN | 0.5 ETH | 0.00017116 | ||||
Transfer | 5540633 | 2311 days ago | IN | 0.26 ETH | 0.00004279 | ||||
Transfer | 5537089 | 2311 days ago | IN | 0.178 ETH | 0.00075096 | ||||
Transfer | 5529350 | 2313 days ago | IN | 0.575 ETH | 0.00017116 | ||||
Transfer | 5529350 | 2313 days ago | IN | 0.56999999 ETH | 0.00010697 | ||||
Transfer | 5529348 | 2313 days ago | IN | 0.572253 ETH | 0.00014238 | ||||
Transfer | 5529346 | 2313 days ago | IN | 0.582253 ETH | 0.00002139 | ||||
Transfer | 5528996 | 2313 days ago | IN | 0.1 ETH | 0.00002139 | ||||
Transfer | 5524834 | 2313 days ago | IN | 2.4 ETH | 0.00017116 | ||||
Finalize | 5524304 | 2313 days ago | IN | 0 ETH | 0.00347729 | ||||
Transfer | 5524273 | 2313 days ago | IN | 1 ETH | 0.00032092 | ||||
Transfer | 5522967 | 2314 days ago | IN | 0.01 ETH | 0.00008558 | ||||
Transfer | 5522862 | 2314 days ago | IN | 0.02 ETH | 0.00008558 | ||||
Transfer | 5522593 | 2314 days ago | IN | 0.25 ETH | 0.00004279 | ||||
Transfer | 5521850 | 2314 days ago | IN | 1.99999977 ETH | 0.0021181 | ||||
Transfer | 5521847 | 2314 days ago | IN | 15.18944066 ETH | 0.0034232 | ||||
Transfer | 5521846 | 2314 days ago | IN | 0 ETH | 0.000798 | ||||
Transfer | 5521458 | 2314 days ago | IN | 4 ETH | 0.00008558 | ||||
Transfer | 5521457 | 2314 days ago | IN | 50 ETH | 0.00077379 | ||||
Transfer | 5521381 | 2314 days ago | IN | 0.25 ETH | 0.00008558 | ||||
Transfer | 5521138 | 2314 days ago | IN | 0.06299963 ETH | 0.00010697 | ||||
Transfer | 5520921 | 2314 days ago | IN | 0.06299953 ETH | 0.00008558 | ||||
Transfer | 5520661 | 2314 days ago | IN | 0.2 ETH | 0.00008558 | ||||
Transfer | 5520382 | 2314 days ago | IN | 0.83499968 ETH | 0.00021 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5519898 | 2314 days ago | 7 ETH | ||||
5519839 | 2314 days ago | 1 ETH | ||||
5519558 | 2314 days ago | 0.1 ETH | ||||
5519512 | 2314 days ago | 0.15 ETH | ||||
5519507 | 2314 days ago | 0.38 ETH | ||||
5519505 | 2314 days ago | 0.142 ETH | ||||
5519501 | 2314 days ago | 0.2 ETH | ||||
5519498 | 2314 days ago | 0.265 ETH | ||||
5519494 | 2314 days ago | 0.7 ETH | ||||
5519489 | 2314 days ago | 5.18943994 ETH | ||||
5519486 | 2314 days ago | 0.5 ETH | ||||
5519486 | 2314 days ago | 2 ETH | ||||
5519484 | 2314 days ago | 3 ETH | ||||
5519483 | 2314 days ago | 2.5 ETH | ||||
5519479 | 2314 days ago | 1.173 ETH | ||||
5519479 | 2314 days ago | 0.1 ETH | ||||
5519478 | 2314 days ago | 6 ETH | ||||
5519475 | 2314 days ago | 0.5 ETH | ||||
5519473 | 2314 days ago | 8 ETH | ||||
5519471 | 2314 days ago | 1.8 ETH | ||||
5519471 | 2314 days ago | 0.211034 ETH | ||||
5519471 | 2314 days ago | 10 ETH | ||||
5519470 | 2314 days ago | 6 ETH | ||||
5519470 | 2314 days ago | 0.3 ETH | ||||
5519470 | 2314 days ago | 1 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x45d090f5...5903f807a The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
HoloSale
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-27 */ pragma solidity ^0.4.18; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // This is an ERC-20 token contract based on Open Zepplin's StandardToken // and MintableToken plus the ability to burn tokens. // // We had to copy over the code instead of inheriting because of changes // to the modifier lists of some functions: // * transfer(), transferFrom() and approve() are not callable during // the minting period, only after MintingFinished() // * mint() can only be called by the minter who is not the owner // but the HoloTokenSale contract. // // Token can be burned by a special 'destroyer' role that can only // burn its tokens. contract HoloToken is Ownable { string public constant name = "HoloToken"; string public constant symbol = "HOT"; uint8 public constant decimals = 18; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Mint(address indexed to, uint256 amount); event MintingFinished(); event Burn(uint256 amount); uint256 public totalSupply; //================================================================================== // Zeppelin BasicToken (plus modifier to not allow transfers during minting period): //================================================================================== 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 whenMintingFinished 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 view returns (uint256 balance) { return balances[_owner]; } //===================================================================================== // Zeppelin StandardToken (plus modifier to not allow transfers during minting period): //===================================================================================== mapping (address => mapping (address => uint256)) public 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 amout of tokens to be transfered */ function transferFrom(address _from, address _to, uint256 _value) public whenMintingFinished 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 whenMintingFinished 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 view returns (uint256) { 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) { 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) { 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; } //===================================================================================== // Minting: //===================================================================================== bool public mintingFinished = false; address public destroyer; address public minter; modifier canMint() { require(!mintingFinished); _; } modifier whenMintingFinished() { require(mintingFinished); _; } modifier onlyMinter() { require(msg.sender == minter); _; } function setMinter(address _minter) external onlyOwner { minter = _minter; } function mint(address _to, uint256 _amount) external onlyMinter canMint returns (bool) { require(balances[_to] + _amount > balances[_to]); // Guard against overflow require(totalSupply + _amount > totalSupply); // Guard against overflow (this should never happen) totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); return true; } function finishMinting() external onlyMinter returns (bool) { mintingFinished = true; MintingFinished(); return true; } //===================================================================================== // Burning: //===================================================================================== modifier onlyDestroyer() { require(msg.sender == destroyer); _; } function setDestroyer(address _destroyer) external onlyOwner { destroyer = _destroyer; } function burn(uint256 _amount) external onlyDestroyer { require(balances[destroyer] >= _amount && _amount > 0); balances[destroyer] = balances[destroyer].sub(_amount); totalSupply = totalSupply.sub(_amount); Burn(_amount); } } // This contract holds a mapping of known funders with: // * a boolean flag for whitelist status // * number of reserved tokens for each day contract HoloWhitelist is Ownable { address public updater; struct KnownFunder { bool whitelisted; mapping(uint => uint256) reservedTokensPerDay; } mapping(address => KnownFunder) public knownFunders; event Whitelisted(address[] funders); event ReservedTokensSet(uint day, address[] funders, uint256[] reservedTokens); modifier onlyUpdater { require(msg.sender == updater); _; } function HoloWhitelist() public { updater = msg.sender; } function setUpdater(address new_updater) external onlyOwner { updater = new_updater; } // Adds funders to the whitelist in batches. function whitelist(address[] funders) external onlyUpdater { for (uint i = 0; i < funders.length; i++) { knownFunders[funders[i]].whitelisted = true; } Whitelisted(funders); } // Removes funders from the whitelist in batches. function unwhitelist(address[] funders) external onlyUpdater { for (uint i = 0; i < funders.length; i++) { knownFunders[funders[i]].whitelisted = false; } } // Stores reserved tokens for several funders in a batch // but all for the same day. // * day is 0-based function setReservedTokens(uint day, address[] funders, uint256[] reservedTokens) external onlyUpdater { for (uint i = 0; i < funders.length; i++) { knownFunders[funders[i]].reservedTokensPerDay[day] = reservedTokens[i]; } ReservedTokensSet(day, funders, reservedTokens); } // Used in HoloSale to check if funder is allowed function isWhitelisted(address funder) external view returns (bool) { return knownFunders[funder].whitelisted; } // Used in HoloSale to get reserved tokens per funder // and per day. // * day is 0-based function reservedTokens(address funder, uint day) external view returns (uint256) { return knownFunders[funder].reservedTokensPerDay[day]; } } // This contract is a crowdsale based on Zeppelin's Crowdsale.sol but with // several changes: // * the token contract as well as the supply contract get injected // with setTokenContract() and setSupplyContract() // * we have a dynamic token supply per day which we hold in the statsByDay // * once per day, the *updater* role runs the update function to make the // contract read the new supply and switch to the next day // * we have a minimum amount in ETH per transaction // * we have a maximum amount per transaction relative to the daily supply // // contract HoloSale is Ownable, Pausable{ using SafeMath for uint256; // Start and end block where purchases are allowed (both inclusive) uint256 public startBlock; uint256 public endBlock; // Factor between wei and full Holo tokens. // (i.e. a rate of 10^18 means one Holo per Ether) uint256 public rate; // Ratio of the current supply a transaction is allowed to by uint256 public maximumPercentageOfDaysSupply; // Minimum amount of wei a transaction has to send uint256 public minimumAmountWei; // address where funds are being send to on successful buy address public wallet; // The token being minted on sale HoloToken private tokenContract; // The contract to check beneficiaries' address against // and to hold number of reserved tokens per day HoloWhitelist private whitelistContract; // The account that is allowed to call update() // which will happen once per day during the sale period address private updater; // Will be set to true by finalize() bool private finalized = false; uint256 public totalSupply; // For every day of the sale we store one instance of this struct struct Day { // The supply available to sell on this day uint256 supply; // The number of unreserved tokens sold on this day uint256 soldFromUnreserved; // Number of tokens reserved today uint256 reserved; // Number of reserved tokens sold today uint256 soldFromReserved; // We are storing how much fuel each user has bought per day // to be able to apply our relative cap per user per day // (i.e. nobody is allowed to buy more than 10% of each day's supply) mapping(address => uint256) fuelBoughtByAddress; } // Growing list of days Day[] public statsByDay; event CreditsCreated(address beneficiary, uint256 amountWei, uint256 amountHolos); event Update(uint256 newTotalSupply, uint256 reservedTokensNextDay); modifier onlyUpdater { require(msg.sender == updater); _; } // Converts wei to smallest fraction of Holo tokens. // 'rate' is meant to give the factor between weis and full Holo tokens, // hence the division by 10^18. function holosForWei(uint256 amountWei) internal view returns (uint256) { return amountWei * rate / 1000000000000000000; } // Contstructor takes start and end block of the sale period, // the rate that defines how many full Holo token are being minted per wei // (since the Holo token has 18 decimals, 1000000000000000000 would mean that // one full Holo is minted per Ether), // minimum and maximum limits for incoming ETH transfers // and the wallet to which the Ethers are being transfered on updated() function HoloSale( uint256 _startBlock, uint256 _endBlock, uint256 _rate, uint256 _minimumAmountWei, uint256 _maximumPercentageOfDaysSupply, address _wallet) public { require(_startBlock >= block.number); require(_endBlock >= _startBlock); require(_rate > 0); require(_wallet != 0x0); updater = msg.sender; startBlock = _startBlock; endBlock = _endBlock; rate = _rate; maximumPercentageOfDaysSupply = _maximumPercentageOfDaysSupply; minimumAmountWei = _minimumAmountWei; wallet = _wallet; } //--------------------------------------------------------------------------- // Setters and Getters: //--------------------------------------------------------------------------- function setUpdater(address _updater) external onlyOwner { updater = _updater; } function setTokenContract(HoloToken _tokenContract) external onlyOwner { tokenContract = _tokenContract; } function setWhitelistContract(HoloWhitelist _whitelistContract) external onlyOwner { whitelistContract = _whitelistContract; } function currentDay() public view returns (uint) { return statsByDay.length; } function todaysSupply() external view returns (uint) { return statsByDay[currentDay()-1].supply; } function todaySold() external view returns (uint) { return statsByDay[currentDay()-1].soldFromUnreserved + statsByDay[currentDay()-1].soldFromReserved; } function todayReserved() external view returns (uint) { return statsByDay[currentDay()-1].reserved; } function boughtToday(address beneficiary) external view returns (uint) { return statsByDay[currentDay()-1].fuelBoughtByAddress[beneficiary]; } //--------------------------------------------------------------------------- // Sending money / adding asks //--------------------------------------------------------------------------- // Fallback function can be used to buy fuel function () public payable { buyFuel(msg.sender); } // Main function that checks all conditions and then mints fuel tokens // and transfers the ETH to our wallet function buyFuel(address beneficiary) public payable whenNotPaused{ require(currentDay() > 0); require(whitelistContract.isWhitelisted(beneficiary)); require(beneficiary != 0x0); require(withinPeriod()); // Calculate how many Holos this transaction would buy uint256 amountOfHolosAsked = holosForWei(msg.value); // Get current day uint dayIndex = statsByDay.length-1; Day storage today = statsByDay[dayIndex]; // Funders who took part in the crowdfund could have reserved tokens uint256 reservedHolos = whitelistContract.reservedTokens(beneficiary, dayIndex); // If they do, make sure to subtract what they bought already today uint256 alreadyBought = today.fuelBoughtByAddress[beneficiary]; if(alreadyBought >= reservedHolos) { reservedHolos = 0; } else { reservedHolos = reservedHolos.sub(alreadyBought); } // Calculate if they asked more than they have reserved uint256 askedMoreThanReserved; uint256 useFromReserved; if(amountOfHolosAsked > reservedHolos) { askedMoreThanReserved = amountOfHolosAsked.sub(reservedHolos); useFromReserved = reservedHolos; } else { askedMoreThanReserved = 0; useFromReserved = amountOfHolosAsked; } if(reservedHolos == 0) { // If this transaction is not claiming reserved tokens // it has to be over the minimum. // (Reserved tokens must be claimable even if it would be just few) require(msg.value >= minimumAmountWei); } // The non-reserved tokens asked must not exceed the max-ratio // nor the available supply. require(lessThanMaxRatio(beneficiary, askedMoreThanReserved, today)); require(lessThanSupply(askedMoreThanReserved, today)); // Everything fine if we're here // Send ETH to our wallet wallet.transfer(msg.value); // Mint receipts tokenContract.mint(beneficiary, amountOfHolosAsked); // Log this sale today.soldFromUnreserved = today.soldFromUnreserved.add(askedMoreThanReserved); today.soldFromReserved = today.soldFromReserved.add(useFromReserved); today.fuelBoughtByAddress[beneficiary] = today.fuelBoughtByAddress[beneficiary].add(amountOfHolosAsked); CreditsCreated(beneficiary, msg.value, amountOfHolosAsked); } // Returns true if we are in the live period of the sale function withinPeriod() internal constant returns (bool) { uint256 current = block.number; return current >= startBlock && current <= endBlock; } // Returns true if amount + plus fuel bought today already is not above // the maximum share one could buy today function lessThanMaxRatio(address beneficiary, uint256 amount, Day storage today) internal view returns (bool) { uint256 boughtTodayBefore = today.fuelBoughtByAddress[beneficiary]; return boughtTodayBefore.add(amount).mul(100).div(maximumPercentageOfDaysSupply) <= today.supply; } // Returns false if amount would buy more fuel than we can sell today function lessThanSupply(uint256 amount, Day today) internal pure returns (bool) { return today.soldFromUnreserved.add(amount) <= today.supply.sub(today.reserved); } //--------------------------------------------------------------------------- // Update //--------------------------------------------------------------------------- function update(uint256 newTotalSupply, uint256 reservedTokensNextDay) external onlyUpdater { totalSupply = newTotalSupply; // daysSupply is the amount of tokens (*10^18) that we can sell today uint256 daysSupply = newTotalSupply.sub(tokenContract.totalSupply()); statsByDay.push(Day(daysSupply, 0, reservedTokensNextDay, 0)); Update(newTotalSupply, reservedTokensNextDay); } //--------------------------------------------------------------------------- // Finalize //--------------------------------------------------------------------------- // Returns true if crowdsale event has ended function hasEnded() public constant returns (bool) { return block.number > endBlock; } // Mints a third of all tokens minted so far for the team. // => Team ends up with 25% of all tokens. // Also calls finishMinting() on the token contract which makes it // impossible to mint more. function finalize() external onlyOwner { require(!finalized); require(hasEnded()); uint256 receiptsMinted = tokenContract.totalSupply(); uint256 shareForTheTeam = receiptsMinted.div(3); tokenContract.mint(wallet, shareForTheTeam); tokenContract.finishMinting(); finalized = true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_whitelistContract","type":"address"}],"name":"setWhitelistContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newTotalSupply","type":"uint256"},{"name":"reservedTokensNextDay","type":"uint256"}],"name":"update","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"todaySold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"beneficiary","type":"address"}],"name":"boughtToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"todaysSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumAmountWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","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":"","type":"uint256"}],"name":"statsByDay","outputs":[{"name":"supply","type":"uint256"},{"name":"soldFromUnreserved","type":"uint256"},{"name":"reserved","type":"uint256"},{"name":"soldFromReserved","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_updater","type":"address"}],"name":"setUpdater","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maximumPercentageOfDaysSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyFuel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"todayReserved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_minimumAmountWei","type":"uint256"},{"name":"_maximumPercentageOfDaysSupply","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amountWei","type":"uint256"},{"indexed":false,"name":"amountHolos","type":"uint256"}],"name":"CreditsCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newTotalSupply","type":"uint256"},{"indexed":false,"name":"reservedTokensNextDay","type":"uint256"}],"name":"Update","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Deployed Bytecode
0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063083c63231461015457806312f261401461017d57806318160ddd146101b65780632c4e722e146101df5780632fb565e8146102085780633f4ba83a1461023457806348cd4cb1146102495780634bb278f3146102725780634bc4549c1461028757806351d10161146102b0578063521eb273146102fd578063536cfceb146103525780635c9302c91461037b5780635c975abb146103a45780637f3cb47b146103d15780638456cb59146103fa5780638da5cb5b1461040f57806399fc381b146104645780639d54f419146104b0578063bbcd5bbe146104e9578063daa1d7d414610522578063e52eb2881461054b578063ecb70fb714610579578063f2c402b6146105a6578063f2fde38b146105cf575b61015233610608565b005b341561015f57600080fd5b610167610c39565b6040518082815260200191505060405180910390f35b341561018857600080fd5b6101b4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c3f565b005b34156101c157600080fd5b6101c9610cde565b6040518082815260200191505060405180910390f35b34156101ea57600080fd5b6101f2610ce4565b6040518082815260200191505060405180910390f35b341561021357600080fd5b6102326004808035906020019091908035906020019091905050610cea565b005b341561023f57600080fd5b610247610ec8565b005b341561025457600080fd5b61025c610f86565b6040518082815260200191505060405180910390f35b341561027d57600080fd5b610285610f8c565b005b341561029257600080fd5b61029a6112ae565b6040518082815260200191505060405180910390f35b34156102bb57600080fd5b6102e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061130c565b6040518082815260200191505060405180910390f35b341561030857600080fd5b61031061137d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035d57600080fd5b6103656113a3565b6040518082815260200191505060405180910390f35b341561038657600080fd5b61038e6113d5565b6040518082815260200191505060405180910390f35b34156103af57600080fd5b6103b76113e2565b604051808215151515815260200191505060405180910390f35b34156103dc57600080fd5b6103e46113f5565b6040518082815260200191505060405180910390f35b341561040557600080fd5b61040d6113fb565b005b341561041a57600080fd5b6104226114bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561046f57600080fd5b61048560048080359060200190919050506114e0565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156104bb57600080fd5b6104e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061151f565b005b34156104f457600080fd5b610520600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115be565b005b341561052d57600080fd5b61053561165d565b6040518082815260200191505060405180910390f35b610577600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610608565b005b341561058457600080fd5b61058c611663565b604051808215151515815260200191505060405180910390f35b34156105b157600080fd5b6105b961166f565b6040518082815260200191505060405180910390f35b34156105da57600080fd5b610606600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116a1565b005b60008060008060008060008060149054906101000a900460ff1615151561062e57600080fd5b60006106386113d5565b11151561064457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf896000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561070957600080fd5b6102c65a03f1151561071a57600080fd5b50505060405180519050151561072f57600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff161415151561075557600080fd5b61075d6117f6565b151561076857600080fd5b61077134611816565b96506001600b80549050039550600b8681548110151561078d57fe5b90600052602060002090600502019450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e74a48be89886000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561086a57600080fd5b6102c65a03f1151561087b57600080fd5b5050506040518051905093508460040160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925083831015156108dd57600093506108f3565b6108f0838561183790919063ffffffff16565b93505b838711156109185761090e848861183790919063ffffffff16565b9150839050610920565b600091508690505b600084141561093b57600554341015151561093a57600080fd5b5b610946888387611850565b151561095157600080fd5b61098f8286608060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815250506118e2565b151561099a57600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156109fc57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1989896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610ac957600080fd5b6102c65a03f11515610ada57600080fd5b5050506040518051905050610afc82866001015461192090919063ffffffff16565b8560010181905550610b1b81866003015461192090919063ffffffff16565b8560030181905550610b77878660040160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192090919063ffffffff16565b8560040160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f3f47b3be2da0491a20f4f13ae3cc3a095cbbec3c88dd8b6bfdaae7e65d9f4b59883489604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050505050505050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9a57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b60035481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4857600080fd5b82600a81905550610e0a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610de057600080fd5b6102c65a03f11515610df157600080fd5b505050604051805190508461183790919063ffffffff16565b9050600b8054806001018281610e209190611994565b916000526020600020906005020160006080604051908101604052808581526020016000815260200186815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050507f8ecf343d22d1934aea3fb34b7332371552b19286c5bc696adae16c7690a90d548383604051808381526020018281526020019250505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f2357600080fd5b600060149054906101000a900460ff161515610f3e57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60015481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fea57600080fd5b600960149054906101000a900460ff1615151561100657600080fd5b61100e611663565b151561101957600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156110a757600080fd5b6102c65a03f115156110b857600080fd5b5050506040518051905091506110d860038361193e90919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156111c957600080fd5b6102c65a03f115156111da57600080fd5b5050506040518051905050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561127357600080fd5b6102c65a03f1151561128457600080fd5b50505060405180519050506001600960146101000a81548160ff0219169083151502179055505050565b6000600b60016112bc6113d5565b038154811015156112c957fe5b906000526020600020906005020160030154600b60016112e76113d5565b038154811015156112f457fe5b90600052602060002090600502016001015401905090565b6000600b600161131a6113d5565b0381548110151561132757fe5b906000526020600020906005020160040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60016113b16113d5565b038154811015156113be57fe5b906000526020600020906005020160000154905090565b6000600b80549050905090565b600060149054906101000a900460ff1681565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561145657600080fd5b600060149054906101000a900460ff1615151561147257600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b818154811015156114ef57fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561157a57600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161957600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b60006002544311905090565b6000600b600161167d6113d5565b0381548110151561168a57fe5b906000526020600020906005020160020154905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116fc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561173857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080439050600154811015801561181057506002548111155b91505090565b6000670de0b6b3a7640000600354830281151561182f57fe5b049050919050565b600082821115151561184557fe5b818303905092915050565b6000808260040160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600001546118d66004546118c860646118ba898761192090919063ffffffff16565b61195990919063ffffffff16565b61193e90919063ffffffff16565b11159150509392505050565b60006118ff8260400151836000015161183790919063ffffffff16565b61191684846020015161192090919063ffffffff16565b1115905092915050565b600080828401905083811015151561193457fe5b8091505092915050565b600080828481151561194c57fe5b0490508091505092915050565b600080600084141561196e576000915061198d565b828402905082848281151561197f57fe5b0414151561198957fe5b8091505b5092915050565b8154818355818115116119c1576005028160050283600052602060002091820191016119c091906119c6565b5b505050565b611a0291905b808211156119fe57600080820160009055600182016000905560028201600090556003820160009055506005016119cc565b5090565b905600a165627a7a7230582007130e7540ed2bb62e03a8937f85b88cd2047ad457f0d0bda4754753bcd08ff20029
Swarm Source
bzzr://07130e7540ed2bb62e03a8937f85b88cd2047ad457f0d0bda4754753bcd08ff2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.