Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Contract Name:
Scale
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-29 */ pragma solidity ^0.4.24; /** * @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 view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @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. */ constructor() 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)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /************************************************************** * @title Scale Token Contract * @file Scale.sol * @author Jared Downing and Kane Thomas of the Scale Network * @version 1.0 * * @section DESCRIPTION * * This is an ERC20-based token with staking and inflationary functionality. * *************************************************************/ ////////////////////////////////// /// OpenZeppelin library imports ////////////////////////////////// /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { 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; } 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 Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) 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); emit 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]; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view 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 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); emit 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; emit 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]; } /** * @dev Increase the amount of tokens that an owner allowed to a 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 * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ 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); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title Mintable token * @dev Simple ERC20 Token example, with mintable token creation * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol * Modified to allow minting for non-owner addresses */ contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) internal returns (bool) { totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); emit Mint(_to, _amount); emit Transfer(address(0), _to, _amount); return true; } } /** * @title Contracts that should not own Ether * @author Remco Bloemen <remco@2π.com> * @dev This tries to block incoming ether to prevent accidental loss of Ether. Should Ether end up * in the contract, it will allow the owner to reclaim this ether. * @notice Ether can still be send to this contract by: * calling functions labeled `payable` * `selfdestruct(contract_address)` * mining directly to the contract address */ contract HasNoEther is Ownable { /** * @dev Constructor that rejects incoming Ether * @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we * leave out payable, then Solidity will allow inheriting contracts to implement a payable * constructor. By doing it this way we prevent a payable constructor from working. Alternatively * we could use assembly to access msg.value. */ constructor() public payable { require(msg.value == 0); } /** * @dev Disallows direct send by settings a default function without the `payable` flag. */ function() external { } /** * @dev Transfer all Ether held by the contract to the owner. */ function reclaimEther() external onlyOwner { assert(owner.send(address(this).balance)); } } ////////////////////////////////// /// Scale Token ////////////////////////////////// contract Scale is MintableToken, HasNoEther { // Libraries using SafeMath for uint; ////////////////////// // Token Information ////////////////////// string public constant name = "SCALE"; string public constant symbol = "SCALE"; uint8 public constant decimals = 18; /////////////////////////////////////////////////////////// // Variables For Staking and Pooling /////////////////////////////////////////////////////////// // -- Pool Minting Rates and Percentages -- // // Pool for Scale distribution to rewards pool // Set to 0 to prohibit issuing to the pool before it is assigned address public pool = address(0); // Pool and Owner minted tokens per second uint public poolMintRate; uint public ownerMintRate; // Amount of Scale to be staked to the pool, staking, and mint, as calculated through their percentages uint public poolMintAmount; uint public stakingMintAmount; uint public ownerMintAmount; // Scale distribution percentages uint public poolPercentage = 70; uint public ownerPercentage = 5; uint public stakingPercentage = 25; // Last time minted for owner and pool uint public ownerTimeLastMinted; uint public poolTimeLastMinted; // -- Staking -- // // Minted tokens per second uint public stakingMintRate; // Total Scale currently staked uint public totalScaleStaked; // Mapping of the timestamp => totalStaking that is created each time an address stakes or unstakes mapping (uint => uint) totalStakingHistory; // Variable for staking accuracy. Set to 86400 for seconds in a day so that staking gains are based on the day an account begins staking. uint timingVariable = 86400; // Address staking information struct AddressStakeData { uint stakeBalance; uint initialStakeTime; } // Track all tokens staked mapping (address => AddressStakeData) public stakeBalances; // -- Inflation -- // // Inflation rate begins at 100% per year and decreases by 15% per year until it reaches 10% where it decreases by 0.5% per year uint256 inflationRate = 1000; // Used to manage when to inflate. Allowed to inflate once per year until the rate reaches 1%. uint256 public lastInflationUpdate; // -- Events -- // // Fired when tokens are staked event Stake(address indexed staker, uint256 value); // Fired when tokens are unstaked event Unstake(address indexed unstaker, uint256 stakedAmount, uint256 stakingGains); ////////////////////////////////////////////////// /// Scale Token Functionality ////////////////////////////////////////////////// /// @dev Scale token constructor constructor() public { // Assign owner owner = msg.sender; // Assign initial owner supply uint _initOwnerSupply = 10000000 ether; // Mint given to owner only one-time bool _success = mint(msg.sender, _initOwnerSupply); // Require minting success require(_success); // Set pool and owner last minted to ensure extra coins are not minted by either ownerTimeLastMinted = now; poolTimeLastMinted = now; // Set minting amount for pool, staking, and owner over the course of 1 year poolMintAmount = _initOwnerSupply.mul(poolPercentage).div(100); ownerMintAmount = _initOwnerSupply.mul(ownerPercentage).div(100); stakingMintAmount = _initOwnerSupply.mul(stakingPercentage).div(100); // One year in seconds uint _oneYearInSeconds = 31536000 ether; // Set the rate of coins minted per second for the pool, owner, and global staking poolMintRate = calculateFraction(poolMintAmount, _oneYearInSeconds, decimals); ownerMintRate = calculateFraction(ownerMintAmount, _oneYearInSeconds, decimals); stakingMintRate = calculateFraction(stakingMintAmount, _oneYearInSeconds, decimals); // Set the last time inflation was update to now so that the next time it can be updated is 1 year from now lastInflationUpdate = now; } ///////////// // Inflation ///////////// /// @dev the inflation rate begins at 100% and decreases by 15% every year until it reaches 10% /// at 10% the rate begins to decrease by 0.5% until it reaches 1% function adjustInflationRate() private { // Make sure adjustInflationRate cannot be called for at least another year lastInflationUpdate = now; // Decrease inflation rate by 15% each year if (inflationRate > 100) { inflationRate = inflationRate.sub(300); } // Inflation rate reaches 10%. Decrease inflation rate by 0.5% from here on out until it reaches 1%. else if (inflationRate > 10) { inflationRate = inflationRate.sub(5); } // Calculate new mint amount of Scale that should be created per year. // Example Inflation Past Year 1 for the poolMintAmount: 16M * 0.85 * 0.7 = 9,520,000 poolMintAmount = totalSupply.mul(inflationRate).div(1000).mul(poolPercentage).div(100); ownerMintAmount = totalSupply.mul(inflationRate).div(1000).mul(ownerPercentage).div(100); stakingMintAmount = totalSupply.mul(inflationRate).div(1000).mul(stakingPercentage).div(100); // Adjust Scale created per-second for each rate poolMintRate = calculateFraction(poolMintAmount, 31536000 ether, decimals); ownerMintRate = calculateFraction(ownerMintAmount, 31536000 ether, decimals); stakingMintRate = calculateFraction(stakingMintAmount, 31536000 ether, decimals); } /// @dev anyone can call this function to update the inflation rate yearly function updateInflationRate() public { // Require 1 year to have passed for every inflation adjustment require(now.sub(lastInflationUpdate) >= 31536000); adjustInflationRate(); } ///////////// // Staking ///////////// /// @dev staking function which allows users to stake an amount of tokens to gain interest for up to 30 days /// @param _stakeAmount how many tokens a user wants to stake function stakeScale(uint _stakeAmount) external { // Require that tokens are staked successfully require(stake(msg.sender, _stakeAmount)); } /// @dev stake for a seperate address /// @param _stakeAmount how many tokens a user wants to stake function stakeFor(address _user, uint _stakeAmount) external { // You can only stake tokens for another user if they have not already staked tokens require(stakeBalances[_user].stakeBalance == 0); // Transfer Scale from to the user transfer( _user, _stakeAmount); // Stake for the user stake(_user, _stakeAmount); } /// @dev stake function reduces the user's total available balance and adds it to their staking balance /// @param _value how many tokens a user wants to stake function stake(address _user, uint256 _value) private returns (bool success) { // You can only stake as many tokens as you have require(_value <= balances[_user]); // You can only stake tokens if you have not already staked tokens require(stakeBalances[_user].stakeBalance == 0); // Subtract stake amount from regular token balance balances[_user] = balances[_user].sub(_value); // Add stake amount to staked balance stakeBalances[_user].stakeBalance = _value; // Increment the staking staked tokens value totalScaleStaked = totalScaleStaked.add(_value); // Save the time that the stake started stakeBalances[_user].initialStakeTime = now.div(timingVariable); // Set the new staking history setTotalStakingHistory(); // Fire an event to tell the world of the newly staked tokens emit Stake(_user, _value); return true; } /// @dev returns how much Scale a user has earned so far /// @param _now is passed in to allow for a gas-free analysis /// @return staking gains based on the amount of time passed since staking began function getStakingGains(uint _now) view public returns (uint) { if (stakeBalances[msg.sender].stakeBalance == 0) { return 0; } return calculateStakeGains(_now); } /// @dev allows users to reclaim any staked tokens /// @return bool on success function unstake() external returns (bool) { // Require that there was some amount vested require(stakeBalances[msg.sender].stakeBalance > 0); // Require that at least 7 timing variables have passed (days) require(now.div(timingVariable).sub(stakeBalances[msg.sender].initialStakeTime) >= 7); // Calculate tokens to mint uint _tokensToMint = calculateStakeGains(now); balances[msg.sender] = balances[msg.sender].add(stakeBalances[msg.sender].stakeBalance); // Subtract stake balance from totalScaleStaked totalScaleStaked = totalScaleStaked.sub(stakeBalances[msg.sender].stakeBalance); // Mint the new tokens to the sender mint(msg.sender, _tokensToMint); // Scale unstaked event emit Unstake(msg.sender, stakeBalances[msg.sender].stakeBalance, _tokensToMint); // Clear out stored data from mapping stakeBalances[msg.sender].stakeBalance = 0; stakeBalances[msg.sender].initialStakeTime = 0; // Set this every time someone adjusts the totalScaleStaking amount setTotalStakingHistory(); return true; } /// @dev Helper function to claimStake that modularizes the minting via staking calculation /// @param _now when the user stopped staking. Passed in as a variable to allow for checking without using gas from the getStakingGains function. /// @return uint for total coins to be minted function calculateStakeGains(uint _now) view private returns (uint mintTotal) { uint _nowAsTimingVariable = _now.div(timingVariable); // Today as a unique value in unix time uint _initialStakeTimeInVariable = stakeBalances[msg.sender].initialStakeTime; // When the user started staking as a unique day in unix time uint _timePassedSinceStakeInVariable = _nowAsTimingVariable.sub(_initialStakeTimeInVariable); // How much time has passed, in days, since the user started staking. uint _stakePercentages = 0; // Keeps an additive track of the user's staking percentages over time uint _tokensToMint = 0; // How many new Scale tokens to create uint _lastUsedVariable; // Last day the totalScaleStaked was updated // Average this msg.sender's relative percentage ownership of totalScaleStaked throughout each day since they started staking for (uint i = _initialStakeTimeInVariable; i < _nowAsTimingVariable; i++) { // If the day exists add it to the percentages if (totalStakingHistory[i] != 0) { // If the day does exist add it to the number to be later averaged as a total average percentage of total staking _stakePercentages = _stakePercentages.add(calculateFraction(stakeBalances[msg.sender].stakeBalance, totalStakingHistory[i], decimals)); // Set this as the last day someone staked _lastUsedVariable = totalStakingHistory[i]; } else { // Use the last day found in the totalStakingHistory mapping _stakePercentages = _stakePercentages.add(calculateFraction(stakeBalances[msg.sender].stakeBalance, _lastUsedVariable, decimals)); } } // Get the account's average percentage staked of the total stake over the course of all days they have been staking uint _stakePercentageAverage = calculateFraction(_stakePercentages, _timePassedSinceStakeInVariable, 0); // Calculate this account's mint rate per second while staking uint _finalMintRate = stakingMintRate.mul(_stakePercentageAverage); // Account for 18 decimals when calculating the amount of tokens to mint _finalMintRate = _finalMintRate.div(1 ether); // Calculate total tokens to be minted. Multiply by timingVariable to convert back to seconds. if (_timePassedSinceStakeInVariable >= 365) { // Tokens were staked for the maximum amount of time, one year. Give them one year's worth of tokens. ( this limit is placed to avoid gas limits) _tokensToMint = calculateMintTotal(timingVariable.mul(365), _finalMintRate); } else { // Tokens were staked for less than the maximum amount of time _tokensToMint = calculateMintTotal(_timePassedSinceStakeInVariable.mul(timingVariable), _finalMintRate); } return _tokensToMint; } /// @dev set the new totalStakingHistory mapping to the current timestamp and totalScaleStaked function setTotalStakingHistory() private { // Get now in terms of the variable staking accuracy (days in Scale's case) uint _nowAsTimingVariable = now.div(timingVariable); // Set the totalStakingHistory as a timestamp of the totalScaleStaked today totalStakingHistory[_nowAsTimingVariable] = totalScaleStaked; } /// @dev Allows user to check their staked balance /// @return staked balance function getStakedBalance() view external returns (uint stakedBalance) { return stakeBalances[msg.sender].stakeBalance; } ///////////// // Scale Owner Claiming ///////////// /// @dev allows contract owner to claim their mint function ownerClaim() external onlyOwner { require(now > ownerTimeLastMinted); uint _timePassedSinceLastMint; // The amount of time passed since the owner claimed in seconds uint _tokenMintCount; // The amount of new tokens to mint bool _mintingSuccess; // The success of minting the new Scale tokens // Calculate the number of seconds that have passed since the owner last took a claim _timePassedSinceLastMint = now.sub(ownerTimeLastMinted); assert(_timePassedSinceLastMint > 0); // Determine the token mint amount, determined from the number of seconds passed and the ownerMintRate _tokenMintCount = calculateMintTotal(_timePassedSinceLastMint, ownerMintRate); // Mint the owner's tokens; this also increases totalSupply _mintingSuccess = mint(msg.sender, _tokenMintCount); require(_mintingSuccess); // New minting was a success. Set last time minted to current block.timestamp (now) ownerTimeLastMinted = now; } //////////////////////////////// // Scale Pool Distribution //////////////////////////////// /// @dev anyone can call this function that mints Scale to the pool dedicated to Scale distribution to rewards pool function poolIssue() public { // Do not allow tokens to be minted to the pool until the pool is set require(pool != address(0)); // Make sure time has passed since last minted to pool require(now > poolTimeLastMinted); require(pool != address(0)); uint _timePassedSinceLastMint; // The amount of time passed since the pool claimed in seconds uint _tokenMintCount; // The amount of new tokens to mint bool _mintingSuccess; // The success of minting the new Scale tokens // Calculate the number of seconds that have passed since the owner last took a claim _timePassedSinceLastMint = now.sub(poolTimeLastMinted); assert(_timePassedSinceLastMint > 0); // Determine the token mint amount, determined from the number of seconds passed and the ownerMintRate _tokenMintCount = calculateMintTotal(_timePassedSinceLastMint, poolMintRate); // Mint the owner's tokens; this also increases totalSupply _mintingSuccess = mint(pool, _tokenMintCount); require(_mintingSuccess); // New minting was a success! Set last time minted to current block.timestamp (now) poolTimeLastMinted = now; } /// @dev sets the address for the rewards pool /// @param _newAddress pool Address function setPool(address _newAddress) public onlyOwner { pool = _newAddress; } //////////////////////////////// // Helper Functions //////////////////////////////// /// @dev calculateFraction allows us to better handle the Solidity ugliness of not having decimals as a native type /// @param _numerator is the top part of the fraction we are calculating /// @param _denominator is the bottom part of the fraction we are calculating /// @param _precision tells the function how many significant digits to calculate out to /// @return quotient returns the result of our fraction calculation function calculateFraction(uint _numerator, uint _denominator, uint _precision) pure private returns(uint quotient) { // Take passed value and expand it to the required precision _numerator = _numerator.mul(10 ** (_precision + 1)); // Handle last-digit rounding uint _quotient = ((_numerator.div(_denominator)) + 5) / 10; return (_quotient); } /// @dev Determines the amount of Scale to create based on the number of seconds that have passed /// @param _timeInSeconds is the time passed in seconds to mint for /// @return uint with the calculated number of new tokens to mint function calculateMintTotal(uint _timeInSeconds, uint _mintRate) pure private returns(uint mintAmount) { // Calculates the amount of tokens to mint based upon the number of seconds passed return(_timeInSeconds.mul(_mintRate)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"stakingMintAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"name":"","type":"address"}],"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":"_stakeAmount","type":"uint256"}],"name":"stakeScale","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unstake","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_stakeAmount","type":"uint256"}],"name":"stakeFor","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":"","type":"address"}],"name":"stakeBalances","outputs":[{"name":"stakeBalance","type":"uint256"},{"name":"initialStakeTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolPercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerPercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"setPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"ownerClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"poolTimeLastMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateInflationRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakingMintRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_now","type":"uint256"}],"name":"getStakingGains","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"poolIssue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastInflationUpdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStakedBalance","outputs":[{"name":"stakedBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolMintAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingPercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolMintRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerMintRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"ownerTimeLastMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerMintAmount","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalScaleStaked","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":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"staker","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unstaker","type":"address"},{"indexed":false,"name":"stakedAmount","type":"uint256"},{"indexed":false,"name":"stakingGains","type":"uint256"}],"name":"Unstake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"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
608060405260048054600160a060020a03191690556046600a556005600b556019600c55620151806012556103e86014553480156200003d57600080fd5b5060038054600160a060020a031916331790556000808034156200006057600080fd5b60038054600160a060020a031916339081179091556a084595161401484a0000009350620000989084640100000000620001b2810204565b9150811515620000a757600080fd5b42600d819055600e55600a54620000eb90606490620000d6908690640100000000620015c4620002a182021704565b906401000000006200117a620002db82021704565b600755600b546200011490606490620000d6908690640100000000620015c4620002a182021704565b600955600c546200013d90606490620000d6908690640100000000620015c4620002a182021704565b600855506007546a1a1601fc4ea7109e000000906200016890826012640100000000620002f3810204565b6005556009546200018590826012640100000000620002f3810204565b600655600854620001a290826012640100000000620002f3810204565b600f55505042601555506200035b565b60008054620001d09083640100000000620011646200034b82021704565b6000908155600160a060020a038416815260016020526040902054620002059083640100000000620011646200034b82021704565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600080831515620002b65760009150620002d4565b50828202828482811515620002c757fe5b0414620002d057fe5b8091505b5092915050565b6000808284811515620002ea57fe5b04949350505050565b600080620003168560018501600a0a640100000000620015c4620002a182021704565b9450600a6200033486866401000000006200117a620002db82021704565b6005018115156200034157fe5b0495945050505050565b600082820183811015620002d057fe5b61161b806200036b6000396000f3006080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304e78a3081146101e657806306fdde031461020d578063095ea7b31461029757806316f0115b146102cf57806318160ddd146103005780631d60993b1461031557806323b872dd1461032f5780632def6620146103595780632ee409081461036e578063313ce567146103925780633b317dab146103bd5780633e7e30ba146103f757806341da75551461040c5780634437152a146104215780634dbe588914610442578063531e48271461045757806361c083b91461046c578063628a01ce14610481578063661884631461049657806366e1cebd146104ba5780636b178f47146104d25780636b4e8bb0146104e757806370a08231146104fc578063769658671461051d5780637e5755241461053257806381e1ccba146105475780638da5cb5b1461055c57806390cad5371461057157806395d89b411461020d5780639f727c2714610586578063a0d8b4e91461059b578063a9059cbb146105b0578063ac185644146105d4578063bb00c8f9146105e9578063d73dd623146105fe578063dd62ed3e14610622578063f162c5a114610649578063f2fde38b1461065e575b3480156101e357600080fd5b50005b3480156101f257600080fd5b506101fb61067f565b60408051918252519081900360200190f35b34801561021957600080fd5b50610222610685565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a357600080fd5b506102bb600160a060020a03600435166024356106bc565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610722565b60408051600160a060020a039092168252519081900360200190f35b34801561030c57600080fd5b506101fb610731565b34801561032157600080fd5b5061032d600435610737565b005b34801561033b57600080fd5b506102bb600160a060020a036004358116906024351660443561074f565b34801561036557600080fd5b506102bb6108c8565b34801561037a57600080fd5b5061032d600160a060020a0360043516602435610a10565b34801561039e57600080fd5b506103a7610a4d565b6040805160ff9092168252519081900360200190f35b3480156103c957600080fd5b506103de600160a060020a0360043516610a52565b6040805192835260208301919091528051918290030190f35b34801561040357600080fd5b506101fb610a6b565b34801561041857600080fd5b506101fb610a71565b34801561042d57600080fd5b5061032d600160a060020a0360043516610a77565b34801561044e57600080fd5b5061032d610abd565b34801561046357600080fd5b506101fb610b38565b34801561047857600080fd5b5061032d610b3e565b34801561048d57600080fd5b506101fb610b6d565b3480156104a257600080fd5b506102bb600160a060020a0360043516602435610b73565b3480156104c657600080fd5b506101fb600435610c65565b3480156104de57600080fd5b5061032d610c94565b3480156104f357600080fd5b506101fb610d33565b34801561050857600080fd5b506101fb600160a060020a0360043516610d39565b34801561052957600080fd5b506101fb610d54565b34801561053e57600080fd5b506101fb610d67565b34801561055357600080fd5b506101fb610d6d565b34801561056857600080fd5b506102e4610d73565b34801561057d57600080fd5b506101fb610d82565b34801561059257600080fd5b5061032d610d88565b3480156105a757600080fd5b506101fb610dd0565b3480156105bc57600080fd5b506102bb600160a060020a0360043516602435610dd6565b3480156105e057600080fd5b506101fb610eb9565b3480156105f557600080fd5b506101fb610ebf565b34801561060a57600080fd5b506102bb600160a060020a0360043516602435610ec5565b34801561062e57600080fd5b506101fb600160a060020a0360043581169060243516610f5e565b34801561065557600080fd5b506101fb610f89565b34801561066a57600080fd5b5061032d600160a060020a0360043516610f8f565b60085481565b60408051808201909152600581527f5343414c45000000000000000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600454600160a060020a031681565b60005481565b6107413382611024565b151561074c57600080fd5b50565b6000600160a060020a038316151561076657600080fd5b600160a060020a03841660009081526001602052604090205482111561078b57600080fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156107bb57600080fd5b600160a060020a0384166000908152600160205260409020546107e4908363ffffffff61115216565b600160a060020a038086166000908152600160205260408082209390935590851681522054610819908363ffffffff61116416565b600160a060020a03808516600090815260016020908152604080832094909455918716815260028252828120338252909152205461085d908363ffffffff61115216565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b33600090815260136020526040812054819081106108e557600080fd5b3360009081526013602052604090206001015460125460079161091f9161091390429063ffffffff61117a16565b9063ffffffff61115216565b101561092a57600080fd5b61093342611191565b33600090815260136020908152604080832054600190925290912054919250610962919063ffffffff61116416565b336000908152600160209081526040808320939093556013905220546010546109909163ffffffff61115216565b60105561099d3382611320565b503360008181526013602090815260409182902054825190815290810184905281517ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb280929181900390910190a233600090815260136020526040812081815560010155610a086113fb565b600191505090565b600160a060020a03821660009081526013602052604090205415610a3357600080fd5b610a3d8282610dd6565b50610a488282611024565b505050565b601281565b6013602052600090815260409020805460019091015482565b600a5481565b600b5481565b600354600160a060020a03163314610a8e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009081908190600160a060020a03163314610adb57600080fd5b600d544211610ae957600080fd5b600d54610afd90429063ffffffff61115216565b925060008311610b0957fe5b610b1583600654611428565b9150610b213383611320565b9050801515610b2f57600080fd5b505042600d5550565b600e5481565b6301e13380610b586015544261115290919063ffffffff16565b1015610b6357600080fd5b610b6b61143a565b565b600f5481565b336000908152600260209081526040808320600160a060020a038616845290915281205480831115610bc857336000908152600260209081526040808320600160a060020a0388168452909152812055610bfd565b610bd8818463ffffffff61115216565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b336000908152601360205260408120541515610c8357506000610c8f565b610c8c82611191565b90505b919050565b60045460009081908190600160a060020a03161515610cb257600080fd5b600e544211610cc057600080fd5b600454600160a060020a03161515610cd757600080fd5b600e54610ceb90429063ffffffff61115216565b925060008311610cf757fe5b610d0383600554611428565b600454909250610d1c90600160a060020a031683611320565b9050801515610d2a57600080fd5b505042600e5550565b60155481565b600160a060020a031660009081526001602052604090205490565b3360009081526013602052604090205490565b60075481565b600c5481565b600354600160a060020a031681565b60055481565b600354600160a060020a03163314610d9f57600080fd5b600354604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501515610b6b57fe5b60065481565b6000600160a060020a0383161515610ded57600080fd5b33600090815260016020526040902054821115610e0957600080fd5b33600090815260016020526040902054610e29908363ffffffff61115216565b3360009081526001602052604080822092909255600160a060020a03851681522054610e5b908363ffffffff61116416565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b600d5481565b60095481565b336000908152600260209081526040808320600160a060020a0386168452909152812054610ef9908363ffffffff61116416565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60105481565b600354600160a060020a03163314610fa657600080fd5b600160a060020a0381161515610fbb57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526001602052604081205482111561104957600080fd5b600160a060020a0383166000908152601360205260409020541561106c57600080fd5b600160a060020a038316600090815260016020526040902054611095908363ffffffff61115216565b600160a060020a03841660009081526001602090815260408083209390935560139052208290556010546110cf908363ffffffff61116416565b6010556012546110e690429063ffffffff61117a16565b600160a060020a03841660009081526013602052604090206001015561110a6113fb565b604080518381529051600160a060020a038516917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a250600192915050565b60008282111561115e57fe5b50900390565b60008282018381101561117357fe5b9392505050565b600080828481151561118857fe5b04949350505050565b6000806000806000806000806000806111b56012548c61117a90919063ffffffff16565b3360009081526013602052604090206001015490995097506111dd898963ffffffff61115216565b965060009550600094508792505b88831015611289576000838152601160205260409020541561125b573360009081526013602090815260408083205486845260119092529091205461124291611235916012611581565b879063ffffffff61116416565b600084815260116020526040902054909650935061127e565b3360009081526013602052604090205461127b9061123590866012611581565b95505b6001909201916111eb565b61129586886000611581565b600f549092506112ab908363ffffffff6115c416565b90506112c581670de0b6b3a764000063ffffffff61117a16565b905061016d87106112f6576012546112ef906112e99061016d63ffffffff6115c416565b82611428565b9450611311565b61130e6112e9601254896115c490919063ffffffff16565b94505b50929998505050505050505050565b60008054611334908363ffffffff61116416565b6000908155600160a060020a03841681526001602052604090205461135f908363ffffffff61116416565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b60006114126012544261117a90919063ffffffff16565b6010546000918252601160205260409091205550565b6000611173838363ffffffff6115c416565b42601555601454606410156114665760145461145e9061012c63ffffffff61115216565b601455611489565b600a60145411156114895760145461148590600563ffffffff61115216565b6014555b6114c960646114b1600a546114bd6103e86114b16014546000546115c490919063ffffffff16565b9063ffffffff61117a16565b9063ffffffff6115c416565b6007819055506114f760646114b1600b546114bd6103e86114b16014546000546115c490919063ffffffff16565b60098190555061152560646114b1600c546114bd6103e86114b16014546000546115c490919063ffffffff16565b600855600754611542906a1a1601fc4ea7109e0000006012611581565b60055560095461155f906a1a1601fc4ea7109e0000006012611581565b60065560085461157c906a1a1601fc4ea7109e0000006012611581565b600f55565b60008061159a8560018501600a0a63ffffffff6115c416565b9450600a6115ae868663ffffffff61117a16565b6005018115156115ba57fe5b0495945050505050565b6000808315156115d75760009150610c5e565b508282028284828115156115e757fe5b041461117357fe00a165627a7a7230582063ca74021b19bc63ba944ea970b189efacfa43fc38bcd4f517f4ea998858b6b30029
Deployed Bytecode
0x6080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304e78a3081146101e657806306fdde031461020d578063095ea7b31461029757806316f0115b146102cf57806318160ddd146103005780631d60993b1461031557806323b872dd1461032f5780632def6620146103595780632ee409081461036e578063313ce567146103925780633b317dab146103bd5780633e7e30ba146103f757806341da75551461040c5780634437152a146104215780634dbe588914610442578063531e48271461045757806361c083b91461046c578063628a01ce14610481578063661884631461049657806366e1cebd146104ba5780636b178f47146104d25780636b4e8bb0146104e757806370a08231146104fc578063769658671461051d5780637e5755241461053257806381e1ccba146105475780638da5cb5b1461055c57806390cad5371461057157806395d89b411461020d5780639f727c2714610586578063a0d8b4e91461059b578063a9059cbb146105b0578063ac185644146105d4578063bb00c8f9146105e9578063d73dd623146105fe578063dd62ed3e14610622578063f162c5a114610649578063f2fde38b1461065e575b3480156101e357600080fd5b50005b3480156101f257600080fd5b506101fb61067f565b60408051918252519081900360200190f35b34801561021957600080fd5b50610222610685565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a357600080fd5b506102bb600160a060020a03600435166024356106bc565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610722565b60408051600160a060020a039092168252519081900360200190f35b34801561030c57600080fd5b506101fb610731565b34801561032157600080fd5b5061032d600435610737565b005b34801561033b57600080fd5b506102bb600160a060020a036004358116906024351660443561074f565b34801561036557600080fd5b506102bb6108c8565b34801561037a57600080fd5b5061032d600160a060020a0360043516602435610a10565b34801561039e57600080fd5b506103a7610a4d565b6040805160ff9092168252519081900360200190f35b3480156103c957600080fd5b506103de600160a060020a0360043516610a52565b6040805192835260208301919091528051918290030190f35b34801561040357600080fd5b506101fb610a6b565b34801561041857600080fd5b506101fb610a71565b34801561042d57600080fd5b5061032d600160a060020a0360043516610a77565b34801561044e57600080fd5b5061032d610abd565b34801561046357600080fd5b506101fb610b38565b34801561047857600080fd5b5061032d610b3e565b34801561048d57600080fd5b506101fb610b6d565b3480156104a257600080fd5b506102bb600160a060020a0360043516602435610b73565b3480156104c657600080fd5b506101fb600435610c65565b3480156104de57600080fd5b5061032d610c94565b3480156104f357600080fd5b506101fb610d33565b34801561050857600080fd5b506101fb600160a060020a0360043516610d39565b34801561052957600080fd5b506101fb610d54565b34801561053e57600080fd5b506101fb610d67565b34801561055357600080fd5b506101fb610d6d565b34801561056857600080fd5b506102e4610d73565b34801561057d57600080fd5b506101fb610d82565b34801561059257600080fd5b5061032d610d88565b3480156105a757600080fd5b506101fb610dd0565b3480156105bc57600080fd5b506102bb600160a060020a0360043516602435610dd6565b3480156105e057600080fd5b506101fb610eb9565b3480156105f557600080fd5b506101fb610ebf565b34801561060a57600080fd5b506102bb600160a060020a0360043516602435610ec5565b34801561062e57600080fd5b506101fb600160a060020a0360043581169060243516610f5e565b34801561065557600080fd5b506101fb610f89565b34801561066a57600080fd5b5061032d600160a060020a0360043516610f8f565b60085481565b60408051808201909152600581527f5343414c45000000000000000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600454600160a060020a031681565b60005481565b6107413382611024565b151561074c57600080fd5b50565b6000600160a060020a038316151561076657600080fd5b600160a060020a03841660009081526001602052604090205482111561078b57600080fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156107bb57600080fd5b600160a060020a0384166000908152600160205260409020546107e4908363ffffffff61115216565b600160a060020a038086166000908152600160205260408082209390935590851681522054610819908363ffffffff61116416565b600160a060020a03808516600090815260016020908152604080832094909455918716815260028252828120338252909152205461085d908363ffffffff61115216565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b33600090815260136020526040812054819081106108e557600080fd5b3360009081526013602052604090206001015460125460079161091f9161091390429063ffffffff61117a16565b9063ffffffff61115216565b101561092a57600080fd5b61093342611191565b33600090815260136020908152604080832054600190925290912054919250610962919063ffffffff61116416565b336000908152600160209081526040808320939093556013905220546010546109909163ffffffff61115216565b60105561099d3382611320565b503360008181526013602090815260409182902054825190815290810184905281517ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb280929181900390910190a233600090815260136020526040812081815560010155610a086113fb565b600191505090565b600160a060020a03821660009081526013602052604090205415610a3357600080fd5b610a3d8282610dd6565b50610a488282611024565b505050565b601281565b6013602052600090815260409020805460019091015482565b600a5481565b600b5481565b600354600160a060020a03163314610a8e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009081908190600160a060020a03163314610adb57600080fd5b600d544211610ae957600080fd5b600d54610afd90429063ffffffff61115216565b925060008311610b0957fe5b610b1583600654611428565b9150610b213383611320565b9050801515610b2f57600080fd5b505042600d5550565b600e5481565b6301e13380610b586015544261115290919063ffffffff16565b1015610b6357600080fd5b610b6b61143a565b565b600f5481565b336000908152600260209081526040808320600160a060020a038616845290915281205480831115610bc857336000908152600260209081526040808320600160a060020a0388168452909152812055610bfd565b610bd8818463ffffffff61115216565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b336000908152601360205260408120541515610c8357506000610c8f565b610c8c82611191565b90505b919050565b60045460009081908190600160a060020a03161515610cb257600080fd5b600e544211610cc057600080fd5b600454600160a060020a03161515610cd757600080fd5b600e54610ceb90429063ffffffff61115216565b925060008311610cf757fe5b610d0383600554611428565b600454909250610d1c90600160a060020a031683611320565b9050801515610d2a57600080fd5b505042600e5550565b60155481565b600160a060020a031660009081526001602052604090205490565b3360009081526013602052604090205490565b60075481565b600c5481565b600354600160a060020a031681565b60055481565b600354600160a060020a03163314610d9f57600080fd5b600354604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501515610b6b57fe5b60065481565b6000600160a060020a0383161515610ded57600080fd5b33600090815260016020526040902054821115610e0957600080fd5b33600090815260016020526040902054610e29908363ffffffff61115216565b3360009081526001602052604080822092909255600160a060020a03851681522054610e5b908363ffffffff61116416565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b600d5481565b60095481565b336000908152600260209081526040808320600160a060020a0386168452909152812054610ef9908363ffffffff61116416565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60105481565b600354600160a060020a03163314610fa657600080fd5b600160a060020a0381161515610fbb57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526001602052604081205482111561104957600080fd5b600160a060020a0383166000908152601360205260409020541561106c57600080fd5b600160a060020a038316600090815260016020526040902054611095908363ffffffff61115216565b600160a060020a03841660009081526001602090815260408083209390935560139052208290556010546110cf908363ffffffff61116416565b6010556012546110e690429063ffffffff61117a16565b600160a060020a03841660009081526013602052604090206001015561110a6113fb565b604080518381529051600160a060020a038516917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a250600192915050565b60008282111561115e57fe5b50900390565b60008282018381101561117357fe5b9392505050565b600080828481151561118857fe5b04949350505050565b6000806000806000806000806000806111b56012548c61117a90919063ffffffff16565b3360009081526013602052604090206001015490995097506111dd898963ffffffff61115216565b965060009550600094508792505b88831015611289576000838152601160205260409020541561125b573360009081526013602090815260408083205486845260119092529091205461124291611235916012611581565b879063ffffffff61116416565b600084815260116020526040902054909650935061127e565b3360009081526013602052604090205461127b9061123590866012611581565b95505b6001909201916111eb565b61129586886000611581565b600f549092506112ab908363ffffffff6115c416565b90506112c581670de0b6b3a764000063ffffffff61117a16565b905061016d87106112f6576012546112ef906112e99061016d63ffffffff6115c416565b82611428565b9450611311565b61130e6112e9601254896115c490919063ffffffff16565b94505b50929998505050505050505050565b60008054611334908363ffffffff61116416565b6000908155600160a060020a03841681526001602052604090205461135f908363ffffffff61116416565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b60006114126012544261117a90919063ffffffff16565b6010546000918252601160205260409091205550565b6000611173838363ffffffff6115c416565b42601555601454606410156114665760145461145e9061012c63ffffffff61115216565b601455611489565b600a60145411156114895760145461148590600563ffffffff61115216565b6014555b6114c960646114b1600a546114bd6103e86114b16014546000546115c490919063ffffffff16565b9063ffffffff61117a16565b9063ffffffff6115c416565b6007819055506114f760646114b1600b546114bd6103e86114b16014546000546115c490919063ffffffff16565b60098190555061152560646114b1600c546114bd6103e86114b16014546000546115c490919063ffffffff16565b600855600754611542906a1a1601fc4ea7109e0000006012611581565b60055560095461155f906a1a1601fc4ea7109e0000006012611581565b60065560085461157c906a1a1601fc4ea7109e0000006012611581565b600f55565b60008061159a8560018501600a0a63ffffffff6115c416565b9450600a6115ae868663ffffffff61117a16565b6005018115156115ba57fe5b0495945050505050565b6000808315156115d75760009150610c5e565b508282028284828115156115e757fe5b041461117357fe00a165627a7a7230582063ca74021b19bc63ba944ea970b189efacfa43fc38bcd4f517f4ea998858b6b30029
Swarm Source
bzzr://63ca74021b19bc63ba944ea970b189efacfa43fc38bcd4f517f4ea998858b6b3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.