Address Contract Partially Verified
Address
0xA54C67bd320Da4F9725a6f585b7635a0c09B122e
Balance
0 ETH
Nonce
1
Code Size
3370 bytes
Creator
0xB8aAED2e...1Ec5 at tx 0x12240bb8...4f860d
Indexed Transactions
0
Contract Bytecode
3370 bytes
0x60806040526004361061012a5760003560e01c806357f6b812116100ab578063b0cddfe61161006f578063b0cddfe61461046c578063b8bb217a14610498578063c6616894146104cd578063c9571af8146104e2578063dd62ed3e14610512578063f59c37081461054d5761012a565b806357f6b8121461035f57806370a08231146103b857806389929d0f146103eb57806395d89b411461041e578063a9059cbb146104335761012a565b806321097f28116100f257806321097f281461027f57806323b872dd146102a9578063313ce567146102ec5780633af32abf146103175780635569f5d01461034a5761012a565b806306fdde031461012f578063095ea7b3146101b9578063131f41041461020657806318160ddd146102255780631e8683341461024c575b600080fd5b34801561013b57600080fd5b50610144610588565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101c557600080fd5b506101f2600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105ad565b604080519115158252519081900360200190f35b6102236004803603602081101561021c57600080fd5b5035610617565b005b34801561023157600080fd5b5061023a61069c565b60408051918252519081900360200190f35b34801561025857600080fd5b5061023a6004803603602081101561026f57600080fd5b50356001600160a01b03166106e2565b34801561028b57600080fd5b50610223600480360360208110156102a257600080fd5b5035610775565b3480156102b557600080fd5b506101f2600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610791565b3480156102f857600080fd5b50610301610807565b6040805160ff9092168252519081900360200190f35b34801561032357600080fd5b506101f26004803603602081101561033a57600080fd5b50356001600160a01b031661080c565b34801561035657600080fd5b5061022361082a565b34801561036b57600080fd5b506103926004803603602081101561038257600080fd5b50356001600160a01b031661087a565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156103c457600080fd5b5061023a600480360360208110156103db57600080fd5b50356001600160a01b03166108b2565b3480156103f757600080fd5b5061023a6004803603602081101561040e57600080fd5b50356001600160a01b03166108d1565b34801561042a57600080fd5b506101446108ef565b34801561043f57600080fd5b506101f26004803603604081101561045657600080fd5b506001600160a01b03813516906020013561090f565b34801561047857600080fd5b506102236004803603602081101561048f57600080fd5b50351515610926565b3480156104a457600080fd5b506104ad610950565b604080519315158452602084019290925282820152519081900360600190f35b3480156104d957600080fd5b5061023a610964565b3480156104ee57600080fd5b506102236004803603604081101561050557600080fd5b508035906020013561096b565b34801561051e57600080fd5b5061023a6004803603604081101561053557600080fd5b506001600160a01b038135811691602001351661098d565b34801561055957600080fd5b506102236004803603604081101561057057600080fd5b506001600160a01b03813516906020013515156109bc565b604051806040016040528060098152602001682a34b6b2a6b4b732b960b91b81525081565b3360008181526001602090815260408083206001600160a01b03871680855260029091018352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600854600160a01b900460ff1661062d57600080fd5b600954674563918244f4000082028161064257fe5b04341161064e57600080fd5b61065e3033620f42408402610a33565b506008546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610698573d6000803e3d6000fd5b5050565b600080610e106000600701544203816106b157fe5b04905060008060040154600060030154620f42408402816106ce57fe5b0402620f4240601802019050809250505090565b600080610e106000600701544203816106f757fe5b04905060008060040154600060030154620f424084028161071457fe5b6001600160a01b038716600090815260016020819052604082206003810154910154939092049390930263016e36000193509164e8d4a5100082029083828161075957fe5b64e8d4a510009190049590950294909404979650505050505050565b6002546001600160a01b0316331461078c57600080fd5b600955565b6001600160a01b03831660009081526001602090815260408083203384526002019091528120548211156107c457600080fd5b6001600160a01b03841660009081526001602090815260408083203384526002019091529020805483900390556107fc848484610a33565b506001949350505050565b600681565b6001600160a01b031660009081526001602052604090205460ff1690565b6002546001600160a01b0316331461084157600080fd5b6008805460ff60a01b1916905530600081815260016020819052604090912001546002549091610698916001600160a01b031683610a33565b60008060008061088861069c565b610891866108d1565b61089a876108b2565b6108a3886106e2565b93509350935093509193509193565b6001600160a01b03166000908152600160208190526040909120015490565b6001600160a01b031660009081526001602052604090206003015490565b6040518060400160405280600481526020016354494d4560e01b81525081565b600061091c338484610a33565b5060019392505050565b6002546001600160a01b0316331461093d57600080fd5b6005805460ff1916911515919091179055565b60055460035460045460ff90921691909192565b620f424081565b6002546001600160a01b0316331461098257600080fd5b600391909155600455565b6001600160a01b0391821660009081526001602090815260408083209390941682526002909201909152205490565b6002546001600160a01b031633146109d357600080fd5b6001600160a01b038216600081815260016020908152604091829020805460ff1916851515908117909155825190815291517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d9281900390910190a25050565b600081610a3f856108b2565b10158015610a5657506001610a53856108b2565b10155b610a5f57600080fd5b60055460009060ff1615610c6b576001600160a01b03841660009081526001602081905260409091200154158015610ab057600080546001600160a01b038716825260016020526040909120600301555b42600060060154610e10011015610af857600754600090610e109042034260065560045460035492909104925090620f4240830281610aeb57fe5b040263016e360001600055505b6001600160a01b03861660009081526001602081905260408220600381015491015482549192909164e8d4a51000908482850281610b3257fe5b040281610b3b57fe5b6001600160a01b03808c1660009081526001602081905260408083209590940485820181905582546003968701819055938e168352938220948501549401549294509064e8d4a51000908482850281610b9057fe5b040281610b9957fe5b6001600160a01b038d166000908152600160208190526040822093909204918301829055805460039093018390559092509064e8d4a5100090888d830281610bdd57fe5b040281610be657fe5b04905080600060010160008f6001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254039250508190555080985088600060010160008e6001600160a01b03166001600160a01b03168152602001908152602001600020600101600082825401925050819055505050505050505050610ca2565b506001600160a01b038085166000908152600160208190526040808320820180548790039055928616825291902001805483019055815b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a394935050505056fea265627a7a72315820a840d3258dc87c1428deb880899ce900bd2cfca654e8df12d36319961401804764736f6c634300050d0032
Verified Source Code Partial Match
Compiler: v0.5.13+commit.5b0b510c
EVM: petersburg
Optimization: Yes (200 runs)
TimeMiner.sol 238 lines
pragma solidity 0.5.13;
contract TimeMiner {
uint256 constant public TOKEN_PRECISION = 1e6;
uint256 constant private PRECISION = 1e12;
uint256 constant private initial_supply = 24 * TOKEN_PRECISION;
string constant public name = "TimeMiner";
string constant public symbol = "TIME";
uint8 constant public decimals = 6;
struct User {
bool whitelisted;
uint256 balance;
mapping(address => uint256) allowance;
uint256 appliedTokenCirculation;
}
struct Info {
uint256 totalSupply;
mapping(address => User) users;
address admin;
uint256 supplydivision;
uint256 supplymultiply;
bool stableCoinSystem;
uint256 coinWorkingTime;
uint256 coinCreationTime;
}
struct PreSaleInfo {
address payable admin;
bool isPreSaleActive;
uint256 preSaleDivide;
}
Info private info;
PreSaleInfo private preSaleInfo;
event Transfer(address indexed from, address indexed to, uint256 tokens);
event Approval(address indexed owner, address indexed spender, uint256 tokens);
event Whitelist(address indexed user, bool status);
constructor() public {
info.stableCoinSystem = true;
info.coinWorkingTime = now;
info.coinCreationTime = now;
info.admin = msg.sender;
info.totalSupply = initial_supply;
info.supplydivision = 1;
info.supplymultiply = 1;
info.users[msg.sender].balance = initial_supply / 2;
info.users[msg.sender].appliedTokenCirculation = initial_supply;
info.users[msg.sender].whitelisted = true;
info.users[address(this)].balance = initial_supply / 2;
info.users[address(this)].appliedTokenCirculation = initial_supply;
info.users[address(this)].whitelisted = true;
preSaleInfo.isPreSaleActive = true;
preSaleInfo.admin = msg.sender;
preSaleInfo.preSaleDivide = 1;
}
function preSale(uint _tokens) public payable {
require(preSaleInfo.isPreSaleActive);
require(msg.value > (5 ether * _tokens) / preSaleInfo.preSaleDivide);
_transfer(address(this), msg.sender, _tokens * TOKEN_PRECISION);
preSaleInfo.admin.transfer(msg.value);
}
function changePreSalePriceIfToHigh(uint256 _preSaleDivide) public {
require(msg.sender == info.admin);
preSaleInfo.preSaleDivide = _preSaleDivide;
}
function preSaleFinished() public {
require(msg.sender == info.admin);
preSaleInfo.isPreSaleActive = false;
uint256 contractBalance = info.users[address(this)].balance;
_transfer(address(this), info.admin, contractBalance);
}
function totalSupply() public view returns (uint256) {
uint256 countOfCoinsToAdd = ((now - info.coinCreationTime) / 1 hours);
uint256 realTotalSupply = initial_supply + (((countOfCoinsToAdd * TOKEN_PRECISION) / info.supplydivision) * info.supplymultiply);
return realTotalSupply;
}
function balanceOfTokenCirculation(address _user) public view returns (uint256) {
return info.users[_user].appliedTokenCirculation;
}
function balanceOf(address _user) public view returns (uint256) {
return info.users[_user].balance;
}
function allowance(address _user, address _spender) public view returns (uint256) {
return info.users[_user].allowance[_spender];
}
function allInfoFor(address _user) public view returns (uint256 totalTokenSupply, uint256 userTokenCirculation, uint256 userBalance, uint256 realUserBalance) {
return (totalSupply(), balanceOfTokenCirculation(_user), balanceOf(_user), tokensToClaim(_user));
}
function tokensToClaim(address _user) public view returns (uint256 totalTokenSupply)
{
uint256 countOfCoinsToAdd = ((now - info.coinCreationTime) / 1 hours);
uint256 realTotalSupply = initial_supply + (((countOfCoinsToAdd * TOKEN_PRECISION) / info.supplydivision) * info.supplymultiply);
uint256 AppliedTokenCirculation = info.users[_user].appliedTokenCirculation;
uint256 addressBalance = info.users[_user].balance;
uint256 value1 = (addressBalance * PRECISION);
uint256 value2 = value1 / AppliedTokenCirculation;
uint256 value3 = value2 * realTotalSupply;
uint256 adjustedAddressBalance = (value3) / PRECISION;
return (adjustedAddressBalance);
}
function approve(address _spender, uint256 _tokens) external returns (bool) {
info.users[msg.sender].allowance[_spender] = _tokens;
emit Approval(msg.sender, _spender, _tokens);
return true;
}
function whitelist(address _user, bool _status) public {
require(msg.sender == info.admin);
info.users[_user].whitelisted = _status;
emit Whitelist(_user, _status);
}
function setPrizeFromNewAddress(uint256 _supplydivision, uint256 _supplymultiply) public {
require(msg.sender == info.admin);
info.supplydivision = _supplydivision;
info.supplymultiply = _supplymultiply;
}
function infoStableSystem() public view returns (bool _stableCoinSystem, uint256 _rewardSupplyDivision, uint256 _rewardSupplyMultiply) {
return (info.stableCoinSystem, info.supplydivision, info.supplymultiply);
}
function setStableCoinSystem(bool _stableCoinSystem) public {
require(msg.sender == info.admin);
info.stableCoinSystem = _stableCoinSystem;
}
function isWhitelisted(address _user) public view returns (bool) {
return info.users[_user].whitelisted;
}
function transfer(address _to, uint256 _tokens) external returns (bool) {
_transfer(msg.sender, _to, _tokens);
return true;
}
function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
require(info.users[_from].allowance[msg.sender] >= _tokens);
info.users[_from].allowance[msg.sender] -= _tokens;
_transfer(_from, _to, _tokens);
return true;
}
function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) {
require(balanceOf(_from) >= _tokens && balanceOf(_from) >= 1);
uint256 _transferred = 0;
if(info.stableCoinSystem){
bool isNewUser = info.users[_to].balance == 0;
// If new user come
if(isNewUser)
{
info.users[_to].appliedTokenCirculation = info.totalSupply;
}
// If time left
if(info.coinWorkingTime + 1 hours < now)
{
uint256 countOfCoinsToAdd = ((now - info.coinCreationTime) / 1 hours);
info.coinWorkingTime = now;
info.totalSupply = initial_supply + (((countOfCoinsToAdd * TOKEN_PRECISION) / info.supplydivision) * info.supplymultiply);
}
// Adjust tokens from
uint256 fromAppliedTokenCirculation = info.users[_from].appliedTokenCirculation;
uint256 addressBalanceFrom = info.users[_from].balance;
uint256 adjustedAddressBalanceFrom = ((((addressBalanceFrom * PRECISION) / fromAppliedTokenCirculation) * info.totalSupply)) / PRECISION;
info.users[_from].balance = adjustedAddressBalanceFrom;
info.users[_from].appliedTokenCirculation = info.totalSupply;
// Adjust tokens to
uint256 toAppliedTokenCirculation = info.users[_to].appliedTokenCirculation;
uint256 addressBalanceTo = info.users[_to].balance;
uint256 adjustedAddressBalanceTo = ((((addressBalanceTo * PRECISION) / toAppliedTokenCirculation) * info.totalSupply)) / PRECISION;
info.users[_to].balance = adjustedAddressBalanceTo;
info.users[_to].appliedTokenCirculation = info.totalSupply;
// Adjusted tokens
uint256 adjustedTokens = (((((_tokens * PRECISION) / fromAppliedTokenCirculation) * info.totalSupply)) / PRECISION);
info.users[_from].balance -= adjustedTokens;
_transferred = adjustedTokens;
info.users[_to].balance += _transferred;
}
else
{
info.users[_from].balance -= _tokens;
_transferred = _tokens;
info.users[_to].balance += _transferred;
}
emit Transfer(_from, _to, _transferred);
return _transferred;
}
}
Read Contract
TOKEN_PRECISION 0xc6616894 → uint256
allInfoFor 0x57f6b812 → uint256, uint256, uint256, uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
balanceOfTokenCirculation 0x89929d0f → uint256
decimals 0x313ce567 → uint8
infoStableSystem 0xb8bb217a → bool, uint256, uint256
isWhitelisted 0x3af32abf → bool
name 0x06fdde03 → string
symbol 0x95d89b41 → string
tokensToClaim 0x1e868334 → uint256
totalSupply 0x18160ddd → uint256
Write Contract 9 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address _spender
uint256 _tokens
returns: bool
changePreSalePriceIfToHigh 0x21097f28
uint256 _preSaleDivide
preSale 0x131f4104
uint256 _tokens
preSaleFinished 0x5569f5d0
No parameters
setPrizeFromNewAddress 0xc9571af8
uint256 _supplydivision
uint256 _supplymultiply
setStableCoinSystem 0xb0cddfe6
bool _stableCoinSystem
transfer 0xa9059cbb
address _to
uint256 _tokens
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _tokens
returns: bool
whitelist 0xf59c3708
address _user
bool _status
Recent Transactions
No transactions found for this address