-
Notifications
You must be signed in to change notification settings - Fork 0
/
ERC20.sol
64 lines (53 loc) · 2.48 KB
/
ERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.6.0 <0.9.0; // ---------------------------------------------------------------------------- // EIP-20: ERC-20 Token Standard // https://eips.ethereum.org/EIPS/eip-20 // -----------------------------------------
interface ERC20Interface {
function totalSupply() external view returns (uint);
function balanceOf(address tokenOwner) external view returns (uint balance);
function transfer(address to, uint tokens) external returns (bool success);
function allowance(address tokenOwner, address spender) external view returns (uint remaining);
function approve(address spender, uint tokens) external returns (bool success);
function transferFrom(address from, address to, uint tokens) external returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
contract Block is ERC20Interface{
string public name="Block";
string public symbol ="TANQ";
string public decimal="0";
uint public override totalSupply;
address public founder;
mapping(address=>uint) public balances;
mapping(address=>mapping(address=>uint)) allowed;
constructor(){
totalSupply=99;
founder=msg.sender;
balances[founder]=totalSupply;
}
function balanceOf(address tokenOwner) public view override returns(uint balance){
return balances[tokenOwner];
}
function transfer(address to,uint tokens) public override returns(bool success){ //Transfering Tokens
require(balances[msg.sender]>=tokens);
balances[to]+=tokens;
balances[msg.sender]-=tokens;
emit Transfer(msg.sender,to,tokens);
return true;
}
function approve(address spender,uint tokens) public override returns(bool success){ // Owner->Spender->Reciever(Giving Allowance To Spend From Owner Amount But Spender is different)
require(balances[msg.sender]>=tokens);
require(tokens>0);
allowed[msg.sender][spender]=tokens;
emit Approval(msg.sender,spender,tokens);
return true;
}
function allowance(address tokenOwner,address spender) public view override returns(uint noOfTokens){ // allowance Given
return allowed[tokenOwner][spender];
}
function transferFrom(address from,address to,uint tokens) public override returns(bool success){
require(allowed[from][to]>=tokens);
require(balances[from]>=tokens);
balances[from]-=tokens;
balances[to]+=tokens;
return true;
}
}