-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoken_block.sol
74 lines (59 loc) · 2.28 KB
/
token_block.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
65
66
67
68
69
70
71
72
73
74
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.6;
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="BLK";
string public decimal="0";
uint public override totalSupply;
address public founder;
mapping(address=>uint) public balance;
mapping(address=>mapping(address=>uint)) allowed;
constructor()
{
totalSupply=1000000000;
founder=msg.sender;
balance[founder]=totalSupply;
}
function balanceOf(address tokenOwner) public view override returns(uint balances)
{
return balance[tokenOwner];
}
function transfer(address to,uint tokens) public override returns(bool success)
{
require(balance[msg.sender]>=tokens);
balance[to]+=tokens;
balance[msg.sender]-=tokens;
emit Transfer(msg.sender,to,tokens);
return true;
}
function approve(address spender,uint tokens) public override returns(bool success)
{
require(balance[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)
{
return allowed[tokenOwner][spender];
}
function transferFrom(address from,address to,uint tokens) public override returns(bool success)
{
require(allowed[from][to]>=tokens);
require(balance[from]>=tokens);
balance[from]-=tokens;
balance[to]+=tokens;
return true;
}
}