This contract's source code is verified! Compiler
0.7.5+commit.eb77ed08
File 1 of 6: Address.sol
pragma solidity ^0.7.4;
library Address {
function isContract (address account ) internal view returns (bool ) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 ;
assembly { codehash := extcodehash (account) }
return (codehash ! = accountHash & & codehash ! = 0x0 );
}
function sendValue (address payable recipient, uint256 amount ) internal {
require (address (this ).balance > = amount, "Address: insufficient balance" );
(bool success, ) = recipient.call { value : amount }("" );
require (success, "Address: unable to send value, recipient may have reverted" );
}
function functionCall (address target, bytes memory data ) internal returns (bytes memory ) {
return functionCall(target, data, "Address: low-level call failed" );
}
function functionCall (address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory ) {
return _functionCallWithValue(target, data, 0 , errorMessage);
}
function functionCallWithValue (address target, bytes memory data, uint256 value ) internal returns (bytes memory ) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed" );
}
function functionCallWithValue (address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory ) {
require (address (this ).balance > = value, "Address: insufficient balance for call" );
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue (address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory ) {
require (isContract(target), "Address: call to non-contract" );
(bool success, bytes memory returndata) = target.call { value : weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0 ) {
assembly {
let returndata_size := mload (returndata)
revert (add (32 , returndata), returndata_size)
}
} else {
revert (errorMessage);
}
}
}
} File 2 of 6: Context.sol
pragma solidity ^0.7.4;
abstract contract Context {
function _msgSender ( ) internal view virtual returns (address payable ) {
return msg .sender ;
}
function _msgData ( ) internal view virtual returns (bytes memory ) {
this ;
return msg .data ;
}
} File 3 of 6: EPANToken.sol
pragma solidity ^0.7.4;
import "ERC20.sol" ;
contract EPANToken is ERC20 {
constructor (uint256 initialSupply ) {
_mint(msg .sender , 94697000000000000000000000 );
}
}
File 4 of 6: ERC20.sol
pragma solidity ^0.7.4;
import "Context.sol" ;
import "IERC20.sol" ;
import "SafeMath.sol" ;
import "Address.sol" ;
contract ERC20 is Context , IERC20 {
using SafeMath for uint256 ;
using Address for address ;
mapping (address = > uint256 ) private _balances;
mapping (address = > mapping (address = > uint256 )) private _allowances;
uint256 private _totalSupply;
function name ( ) public pure returns (string memory ) {
return 'Paypolitan Token' ;
}
function symbol ( ) public pure returns (string memory ) {
return 'EPAN' ;
}
function decimals ( ) public pure returns (uint8 ) {
return 18 ;
}
function totalSupply ( ) public view override returns (uint256 ) {
return _totalSupply;
}
function balanceOf (address account ) public view override returns (uint256 ) {
return _balances[account];
}
function transfer (address recipient, uint256 amount ) public virtual override returns (bool ) {
_transfer(_msgSender(), recipient, amount);
return true ;
}
function allowance (address owner, address spender ) public view virtual override returns (uint256 ) {
return _allowances[owner][spender];
}
function approve (address spender, uint256 amount ) public virtual override returns (bool ) {
_approve(_msgSender(), spender, amount);
return true ;
}
function transferFrom (address sender, address recipient, uint256 amount ) public virtual override returns (bool ) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance" ));
return true ;
}
function increaseAllowance (address spender, uint256 addedValue ) public virtual returns (bool ) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true ;
}
function decreaseAllowance (address spender, uint256 subtractedValue ) public virtual returns (bool ) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero" ));
return true ;
}
function _transfer (address sender, address recipient, uint256 amount ) internal virtual {
require (sender ! = address (0 ), "ERC20: transfer from the zero address" );
require (recipient ! = address (0 ), "ERC20: transfer to the zero address" );
_beforeTokenTransfer(sender, recipient, amount);
_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 account, uint256 amount ) internal virtual {
require (account ! = address (0 ), "ERC20: mint to the zero address" );
_beforeTokenTransfer(address (0 ), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address (0 ), account, amount);
}
function _approve (address owner, address spender, uint256 amount ) internal virtual {
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 _beforeTokenTransfer (address from , address to, uint256 amount ) internal virtual { }
} File 5 of 6: IERC20.sol
pragma solidity ^0.7.4;
interface IERC20 {
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 ) ;
event Transfer (address indexed from , address indexed to, uint256 value ) ;
event Approval (address indexed owner, address indexed spender, uint256 value ) ;
} File 6 of 6: SafeMath.sol
pragma solidity ^0.7.4;
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 ) {
return sub(a, b, "SafeMath: subtraction overflow" );
}
function sub (uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256 ) {
require (b < = a, errorMessage);
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 ) {
return div(a, b, "SafeMath: division by zero" );
}
function div (uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256 ) {
require (b > 0 , errorMessage);
uint256 c = a / b;
return c;
}
function mod (uint256 a, uint256 b ) internal pure returns (uint256 ) {
return mod(a, b, "SafeMath: modulo by zero" );
}
function mod (uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256 ) {
require (b ! = 0 , errorMessage);
return a % b;
}
} {
"compilationTarget" : {
"browser/EPANToken.sol" : "EPANToken"
} ,
"evmVersion" : "istanbul" ,
"libraries" : { } ,
"metadata" : {
"bytecodeHash" : "ipfs"
} ,
"optimizer" : {
"enabled" : true ,
"runs" : 200
} ,
"remappings" : [ ]
} [{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"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":"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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"}]