This contract's source code is verified! Compiler
0.8.24+commit.e11b9ed9
File 1 of 4: IERC20.sol
pragma solidity ^0.8.18;
interface IERC20 {
function decimals ( ) external view returns (uint8 ) ;
function symbol ( ) external view returns (string memory ) ;
function name ( ) external view returns (string memory ) ;
function totalSupply ( ) external view returns (uint256 ) ;
function balanceOf (address account ) external view returns (uint256 ) ;
function transfer (address recipient, uint256 amount )
external
returns (bool ) ;
function allowance (address owner, address spender )
external
view
returns (uint256 ) ;
function approve (address spender, uint256 amount ) external returns (bool ) ;
function transferFrom (
address sender,
address recipient,
uint256 amount
) external returns (bool ) ;
function mint (address recipient, uint256 amount ) external returns (bool ) ;
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 value ) ;
}
File 2 of 4: Ownable.sol
pragma solidity ^0.8.18;
abstract contract Ownable {
address internal _owner;
event OwnershipTransferred (
address indexed previousOwner,
address indexed newOwner
) ;
constructor ( ) {
address msgSender = tx .origin ;
_owner = msgSender;
emit OwnershipTransferred(address (0 ), msgSender);
}
function owner ( ) public view returns (address ) {
return _owner;
}
modifier onlyOwner ( ) {
require (_owner = = msg .sender , "!owner" );
_ ;
}
function renounceOwnership ( ) public virtual onlyOwner {
emit OwnershipTransferred(_owner, address (0xDEAD ));
_owner = address (0xDEAD );
}
function transferOwnership (address newOwner ) public virtual onlyOwner {
require (newOwner ! = address (0 ), "new is 0" );
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
File 3 of 4: SafeMath.sol
pragma solidity ^0.8.18;
library SafeMath {
function add (uint256 a, uint256 b ) internal pure returns (uint256 ) {
uint256 c = a + b;
require (c > = a, "SafeMath: addition overflow" );
return c;
}
function sub (uint256 a, uint256 b ) internal pure returns (uint256 ) {
require (b < = a, "SafeMath: subtraction overflow" );
uint256 c = a - b;
return c;
}
function mul (uint256 a, uint256 b ) internal pure returns (uint256 ) {
if (a = = 0 ) {
return 0 ;
}
uint256 c = a * b;
require (c / a = = b, "SafeMath: multiplication overflow" );
return c;
}
function div (uint256 a, uint256 b ) internal pure returns (uint256 ) {
require (b > 0 , "SafeMath: division by zero" );
uint256 c = a / b;
return c;
}
function sub (
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256 ) {
require (b < = a, errorMessage);
uint256 c = a - b;
return c;
}
}
File 4 of 4: TSK.sol
pragma solidity ^0.8.18;
import "./Ownable.sol" ;
import "./IERC20.sol" ;
import "./SafeMath.sol" ;
abstract contract IERC20Token is IERC20 , Ownable {
using SafeMath for uint256 ;
mapping (address = > uint256 ) private _balances;
mapping (address = > mapping (address = > uint256 )) private _allowances;
string private _name;
string private _symbol;
uint8 private _decimals;
uint256 private _totalSupply;
uint256 private _totalMint;
constructor (
string memory name_,
string memory symbol_,
uint8 decimals_,
uint256 totalSupply_
) {
_name = name_;
_symbol = symbol_;
_decimals = decimals_;
_totalSupply = totalSupply_ * 10 * * decimals_;
transferOwnership(msg .sender );
}
function symbol ( ) public view override returns (string memory ) {
return _symbol;
}
function name ( ) public view override returns (string memory ) {
return _name;
}
function decimals ( ) public view override returns (uint8 ) {
return _decimals;
}
function totalSupply ( ) public view override returns (uint256 ) {
return _totalSupply;
}
function totalMint ( ) public view returns (uint256 ) {
return _totalMint;
}
function balanceOf (address account ) public view override returns (uint256 ) {
return _balances[account];
}
function transfer (address recipient, uint256 amount )
public
override
returns (bool )
{
_transfer(msg .sender , recipient, amount);
return true ;
}
function allowance (address owner, address spender )
public
view
override
returns (uint256 )
{
return _allowances[owner][spender];
}
function approve (address spender, uint256 amount )
public
override
returns (bool )
{
_approve(msg .sender , spender, amount);
return true ;
}
function transferFrom (
address sender,
address recipient,
uint256 amount
) public override returns (bool ) {
_transfer(sender, recipient, amount);
_approve(
sender,
msg .sender ,
_allowances[sender][msg .sender ].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true ;
}
function mint (address recipient, uint256 amount )
public
override
onlyOwner
returns (bool )
{
_mint(recipient, amount);
return true ;
}
function _approve (
address owner,
address spender,
uint256 amount
) private {
require (owner ! = address (0 ), "ERC20: approve from the zero address" );
require (spender ! = address (0 ), "ERC20: approve to the zero address" );
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer (
address sender,
address recipient,
uint256 amount
) private {
require (sender ! = address (0 ), "ERC20: transfer from the zero address" );
require (recipient ! = address (0 ), "ERC20: transfer to the zero address" );
_balances[sender] = _balances[sender].sub(
amount,
"ERC20: transfer amount exceeds balance"
);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint (address recipient, uint256 amount ) private {
require (_totalMint.add(amount) < = _totalSupply, "Exceeded max supply" );
_totalMint = _totalMint.add(amount);
_balances[recipient] = _balances[recipient].add(amount);
emit Mint(recipient, amount);
}
}
contract TaskFi is IERC20Token {
constructor ( ) IERC20Token ("TaskFi Token" , "TSK" , 6 , 15000000000000 ) {}
}
{
"compilationTarget" : {
"TSK.sol" : "TaskFi"
} ,
"evmVersion" : "shanghai" ,
"libraries" : { } ,
"metadata" : {
"bytecodeHash" : "ipfs"
} ,
"optimizer" : {
"enabled" : false ,
"runs" : 200
} ,
"remappings" : [ ]
} [{"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":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]