├── README.md └── BNB Token Smart Contract └── BNB_Token.sol /README.md: -------------------------------------------------------------------------------- 1 | # Binance-Smart-Chain- 2 | 3 | 4 | Admin Can Create Own Token and set Token Price 5 | 6 | User Can Buy CSM Token and send BNB To Admin 7 | 8 | Smart Contract for Token Creation and Token Transfer 9 | -------------------------------------------------------------------------------- /BNB Token Smart Contract/BNB_Token.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLISCENSED 2 | pragma solidity ^0.6.0; 3 | 4 | interface BEP20 { 5 | 6 | function totalSupply() external view returns (uint256); 7 | function balanceOf(address account) external view returns (uint256); 8 | function allowance(address owner, address spender) external view returns (uint256); 9 | 10 | function transfer(address recipient, uint256 amount) external returns (bool); 11 | function approve(address spender, uint256 amount) external returns (bool); 12 | function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); 13 | 14 | 15 | event Transfer(address indexed from, address indexed to, uint256 value); 16 | event Approval(address indexed owner, address indexed spender, uint256 value); 17 | } 18 | 19 | 20 | contract SampleBEP20Token is BEP20 { 21 | 22 | event Bought(uint256 amount); 23 | event Sold(uint256 amount); 24 | event TransferSent(address _from, address _destAddr, uint _amount); 25 | 26 | BEP20 public token; 27 | 28 | string public constant name = "CSM Token"; 29 | string public constant symbol = "CSM"; 30 | uint8 public constant decimals = 18; 31 | uint256 tokenBalance; 32 | 33 | 34 | event Approval(address indexed tokenOwner, address indexed spender, uint tokens); 35 | event Transfer(address indexed from, address indexed to, uint tokens); 36 | 37 | 38 | mapping(address => uint256) balances; 39 | 40 | mapping(address => mapping (address => uint256)) allowed; 41 | 42 | uint256 totalSupply_ = 1000000000000000000000000; 43 | 44 | using SafeMath for uint256; 45 | 46 | constructor() public { 47 | balances[msg.sender] = totalSupply_; 48 | } 49 | 50 | function totalSupply() public override view returns (uint256) { 51 | return totalSupply_; 52 | } 53 | 54 | function balanceOf(address tokenOwner) public override view returns (uint256) { 55 | return balances[tokenOwner]; 56 | } 57 | 58 | function transfer(address receiver, uint256 numTokens) public override returns (bool) { 59 | require(numTokens <= balances[msg.sender]); 60 | balances[msg.sender] = balances[msg.sender].sub(numTokens); 61 | balances[receiver] = balances[receiver].add(numTokens); 62 | emit Transfer(msg.sender, receiver, numTokens); 63 | return true; 64 | 65 | } 66 | 67 | function approve(address delegate, uint256 numTokens) public override returns (bool) { 68 | allowed[msg.sender][delegate] = numTokens; 69 | emit Approval(msg.sender, delegate, numTokens); 70 | return true; 71 | } 72 | 73 | function allowance(address owner, address delegate) public override view returns (uint) { 74 | return allowed[owner][delegate]; 75 | } 76 | 77 | function transferFrom(address owner, address buyer, uint256 numTokens) public override returns (bool) { 78 | require(numTokens <= balances[owner]); 79 | require(numTokens <= allowed[owner][msg.sender]); 80 | 81 | balances[owner] = balances[owner].sub(numTokens); 82 | allowed[owner][msg.sender] = allowed[owner][msg.sender].sub(numTokens); 83 | balances[buyer] = balances[buyer].add(numTokens); 84 | emit Transfer(owner, buyer, numTokens); 85 | return true; 86 | } 87 | 88 | 89 | function transferToken(address owner, uint256 amount,uint256 numTokens) public payable returns(string memory,uint256) { 90 | balances[owner] = balances[owner].sub(numTokens); 91 | 92 | balances[msg.sender] = balances[msg.sender].add(numTokens); 93 | emit Transfer(msg.sender, owner, numTokens); 94 | // uint256 tokenBalance = token.balanceOf(address(this)); 95 | // require(amount <= tokenBalance, "balance is low"); 96 | // token.transfer(owner, amount); 97 | // emit TransferSent(msg.sender, owner, amount); 98 | payable(owner).transfer(amount); 99 | 100 | return("Token Transfer Done",numTokens); 101 | 102 | 103 | } 104 | // function transferToken(address to, uint256 amount) public { 105 | // uint256 tokenBalance = token.balanceOf(address(this)); 106 | // require(amount <= tokenBalance, "balance is low"); 107 | // token.transfer(to, amount); 108 | // emit TransferSent(msg.sender, to, amount); 109 | // } 110 | } 111 | 112 | library SafeMath { 113 | function sub(uint256 a, uint256 b) internal pure returns (uint256) { 114 | assert(b <= a); 115 | return a - b; 116 | } 117 | 118 | function add(uint256 a, uint256 b) internal pure returns (uint256) { 119 | uint256 c = a + b; 120 | assert(c >= a); 121 | return c; 122 | } 123 | } 124 | --------------------------------------------------------------------------------