18.30
($1.06%)
| 1 Gwei
// SPDX-License-Identifier: GLWTPL pragma solidity ^0.8.11; //TMWSTW Metaverse profit tokens //100 million total supply, that represent 100% of TMWSTW metaverse income from resource claiming fees //70% of tokens represent DAO profits (forever locked) //20% of tokens claimed at start by creator //10% of tokens can be claimed by list of early plot claimers (claim period ~1year) contract TMWSTW_PROFITS{ string private _name = "TMWSTW_PROFITS"; string private _symbol = "TMWSTW"; uint256 private _totalSupply = 100000000; // 100 million total supply uint256 private creator_claim_amount = 20000000;//20% uint256 private predefined_supply = 90000000;//90% creator+DAO address private _creator; bool private og_tables_locked; uint256 private claim_end_block; //AT START constructor() { _balanceOf[address(this)] = _totalSupply; _creator = msg.sender; claim_end_block = block.number+2500000; claim_tokens(msg.sender,creator_claim_amount); } ///////////////////////////////////////////OG LIST and CLAIM mapping(address => uint256) private og_claimable_amount;//amount OG can claim //SETUP OG TABLES ONCE function set_og_tables(uint256[] calldata og_points, address[] calldata og_wallets) external CREATOR_ONLY{ require(!og_tables_locked,"tables locked"); //must be unlocked to change for (uint i = 0; i < og_wallets.length; i++){ og_claimable_amount[og_wallets[i]] = og_points[i]; } og_tables_locked = true; } //OG CLAIM -- !!! make time limit function og_claim()public { require(og_tables_locked,"OG tables not set yet"); require(block.number<claim_end_block,"Claim period finished"); require(og_claimable_amount[msg.sender]>0,"Not on OG list");//ignore non OGs claim_tokens(msg.sender, og_claimable_amount[msg.sender]); og_claimable_amount[msg.sender]=0; } function claim_unclaimed()public CREATOR_ONLY{ require(block.number>claim_end_block,"Claim still going"); uint current_supply = contract_balance(); require(current_supply>predefined_supply,"Nothing left to claim"); uint remaining_tokens = current_supply - predefined_supply; claim_tokens(msg.sender,remaining_tokens); } function claim_tokens(address claimer_address, uint256 claim_amount) internal{ _transfer(address(this),claimer_address,claim_amount); emit Tokens_claimed(claimer_address,claim_amount); } event Tokens_claimed(address claimer,uint256 amount); function claimable_amount(address this_address)public view returns(uint256){ return og_claimable_amount[this_address]; } ////////////////////////////////EXTRA READS //check balance of contract function contract_balance() public view returns (uint256){ return _balanceOf[address(this)]; } ///////////////////////////////////CREATOR //change CREATOR function change_creator(address _this_address)public CREATOR_ONLY{ _creator = _this_address; } modifier CREATOR_ONLY { require(msg.sender == _creator,"must be creator"); //must be creator _; } /////////////////////////////////ERC20 CLASSICS //mappings mapping(address => uint256) private _balanceOf; mapping(address => mapping(address => uint256)) private _allowance; //events event Transfer(address indexed _from, address indexed _to, uint256 _value); //transfer event event Approval(address indexed _owner, address indexed _spender, uint256 _value); //aproval event //transfer tokens function transfer(address _to, uint256 _value) public { _transfer(msg.sender,_to,_value); } //internal transfer function function _transfer(address _from,address _to, uint256 _value) internal virtual { require(_from != address(0)); //ignore null address require(_to != address(0)); //ignore null address require(_balanceOf[_from] >= _value); //check if balance is good _balanceOf[_from] -= _value; //sunstract balance of sender _balanceOf[_to] += _value; //add to balance of receiver emit Transfer(_from, _to, _value); //emit transfer event } //aprove 3rd party to transfer tokens function approve(address _spender, uint256 _value) public { require(msg.sender != address(0)); //ignore null address require(_spender != address(0)); //ignore null address _allowance[msg.sender][_spender] = _value; //update allowance array emit Approval(msg.sender, _spender, _value); //emit aproval event } //transfer by 3rd party function transferFrom(address _from, address _to, uint256 _value) public { uint256 currentAllowance = _allowance[_from][msg.sender]; if(currentAllowance != type(uint256).max){ require(_allowance[_from][msg.sender] >= _value); //check if allowance is clear _allowance[_from][msg.sender] -= _value; //substract from allowance } _transfer(_from,_to,_value); } //check name function name() public view returns (string memory){ return _name; } //check symbol function symbol() public view returns (string memory){ return _symbol; } //check supply function totalSupply() public view returns (uint256){ return _totalSupply; } //check balance function balanceOf(address _account) public view returns (uint256){ return _balanceOf[_account]; } //show allowance function allowance(address _owner, address _spender) public view returns (uint256){ return _allowance[_owner][_spender]; } //show decimals function decimals() public pure returns (uint8){ return 0; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Tokens_claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_this_address","type":"address"}],"name":"change_creator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim_unclaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"this_address","type":"address"}],"name":"claimable_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contract_balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"og_claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"og_points","type":"uint256[]"},{"internalType":"address[]","name":"og_wallets","type":"address[]"}],"name":"set_og_tables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]