Forked from bajcmartinez/erc20-token-sample.sol
Last active
December 26, 2020 03:04
-
-
Save LordAthis/29526a4b6a94d24cdd296abb821dfa4f to your computer and use it in GitHub Desktop.
Necessary code to generate an ERC20 Token
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.24; | |
// ---------------------------------------------------------------------------- | |
// Token szerződés minta | |
// | |
// Szimbólum : L1T | |
// Név : Live One Token | |
// Teljes készlet : 8000000000 | |
// Tizedesjegy : 3 | |
// Tulajdonos Fiók : 0x8AdDd7824c4d172547264295B20Af394C41dDDe1 | |
// FIGYELEM! | |
// Ezeket az adatokat mindenképpen változtasd meg a dokumentum többi részén is!!! | |
// A "Tulajdonosi Fiók"-ot is, különben nálam landol a Coin/ICO !!! | |
// | |
// Élvezd! (Enjoy.) | |
// | |
// Megjegyzés: Ez a kód tájékoztató-oktató, és szórakoztató célokat szolgál! | |
// Felhasználása csak saját felelősségre! | |
// Minden felelőség kizárva! | |
// | |
// (c) by LordAthis 2020. MIT Licence. | |
// ---------------------------------------------------------------------------- | |
// ---------------------------------------------------------------------------- | |
// Lib: Biztonságos Matematika | |
// ---------------------------------------------------------------------------- | |
contract SafeMath { | |
function safeAdd(uint a, uint b) public pure returns (uint c) { | |
c = a + b; | |
require(c >= a); | |
} | |
function safeSub(uint a, uint b) public pure returns (uint c) { | |
require(b <= a); | |
c = a - b; | |
} | |
function safeMul(uint a, uint b) public pure returns (uint c) { | |
c = a * b; | |
require(a == 0 || c / a == b); | |
} | |
function safeDiv(uint a, uint b) public pure returns (uint c) { | |
require(b > 0); | |
c = a / b; | |
} | |
} | |
/** | |
ERC Token Standard #20 Interface | |
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md | |
*/ | |
contract ERC20Interface { | |
function totalSupply() public constant returns (uint); | |
function balanceOf(address tokenOwner) public constant returns (uint balance); | |
function allowance(address tokenOwner, address spender) public constant returns (uint remaining); | |
function transfer(address to, uint tokens) public returns (bool success); | |
function approve(address spender, uint tokens) public returns (bool success); | |
function transferFrom(address from, address to, uint tokens) public returns (bool success); | |
event Transfer(address indexed from, address indexed to, uint tokens); | |
event Approval(address indexed tokenOwner, address indexed spender, uint tokens); | |
} | |
/** | |
Szerződés funkció jóváhagyás fogadására és a hívás végrehajtására egy hívás során | |
A MiniMeToken-től kölcsönözve | |
*/ | |
contract ApproveAndCallFallBack { | |
function receiveApproval(address from, uint256 tokens, address token, bytes data) public; | |
} | |
/** | |
ERC20 Token, szimbólum, név és tizedesjegyek hozzáadásával, valamint segített token átvitel | |
*/ | |
contract L1TToken is ERC20Interface, SafeMath { | |
string public symbol; | |
string public name; | |
uint8 public decimals; | |
uint public _totalSupply; | |
mapping(address => uint) balances; | |
mapping(address => mapping(address => uint)) allowed; | |
// ------------------------------------------------------------------------ | |
// Konstruktőr | |
// ------------------------------------------------------------------------ | |
constructor() public { | |
symbol = "L1T"; | |
name = "Live One Token"; | |
decimals = 3; | |
_totalSupply = 8000000000; | |
balances[0x8AdDd7824c4d172547264295B20Af394C41dDDe1] = _totalSupply; | |
emit Transfer(address(0), 0x8AdDd7824c4d172547264295B20Af394C41dDDe1, _totalSupply); | |
} | |
// ------------------------------------------------------------------------ | |
// Teljes készlet | |
// ------------------------------------------------------------------------ | |
function totalSupply() public constant returns (uint) { | |
return _totalSupply - balances[address(0)]; | |
} | |
// ------------------------------------------------------------------------ | |
// Szerezze be a tokenOwner fiók token egyenlegét | |
// ------------------------------------------------------------------------ | |
function balanceOf(address tokenOwner) public constant returns (uint balance) { | |
return balances[tokenOwner]; | |
} | |
// ------------------------------------------------------------------------ | |
// Átutalja az egyenleget a token tulajdonos számlájáról a számlára | |
// - A tulajdonos számlájának elegendő egyenleggel kell rendelkeznie az átutaláshoz | |
// - 0 értéktranszfer megengedett | |
// ------------------------------------------------------------------------ | |
function transfer(address to, uint tokens) public returns (bool success) { | |
balances[msg.sender] = safeSub(balances[msg.sender], tokens); | |
balances[to] = safeAdd(balances[to], tokens); | |
emit Transfer(msg.sender, to, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// A token tulajdonosa jóváhagyhatja, hogy a költők átvigyék a (...) tokenekről | |
// a token tulajdonos számlájáról | |
// | |
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md | |
// javasolja, hogy ne ellenőrizzék a jóváhagyási kettős kiadások támadását | |
// mivel ezt a felhasználói felületeken kell megvalósítani | |
// ------------------------------------------------------------------------ | |
function approve(address spender, uint tokens) public returns (bool success) { | |
allowed[msg.sender][spender] = tokens; | |
emit Approval(msg.sender, spender, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Tokenek átvitele a fiókból a fiókba | |
// | |
// The calling account must already have sufficient tokens approve(...)-d | |
// for spending from the from account and | |
// - A számláról elegendő egyenleggel kell rendelkeznie az átutaláshoz | |
// - A költőnek elegendő engedéllyel kell rendelkeznie az átutaláshoz | |
// - 0 értéktranszfer megengedett | |
// ------------------------------------------------------------------------ | |
function transferFrom(address from, address to, uint tokens) public returns (bool success) { | |
balances[from] = safeSub(balances[from], tokens); | |
allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens); | |
balances[to] = safeAdd(balances[to], tokens); | |
emit Transfer(from, to, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Visszaadja a tulajdonos által jóváhagyott tokenek azon összegét, | |
// amelyet át lehet utalni a költő számlájára | |
// ------------------------------------------------------------------------ | |
function allowance(address tokenOwner, address spender) public constant returns (uint remaining) { | |
return allowed[tokenOwner][spender]; | |
} | |
// ------------------------------------------------------------------------ | |
// A token tulajdonosa jóváhagyhatja, hogy a költők átadják a From (...) | |
// tokent a token tulajdonos számlájáról. | |
// A kiadási szerződés függvény megkapja a jóváhagyást (...), | |
// majd végrehajtásra kerül | |
// ------------------------------------------------------------------------ | |
function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) { | |
allowed[msg.sender][spender] = tokens; | |
emit Approval(msg.sender, spender, tokens); | |
ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Ne fogadja el az ETH-t | |
// ------------------------------------------------------------------------ | |
function () public payable { | |
revert(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.24; | |
// ---------------------------------------------------------------------------- | |
// Token szerződés minta | |
// | |
// Szimbólum : {{Token Symbol}} | |
// Név : {{Token Name}} | |
// Teljes készlet : {{Total Supply}} | |
// Tizedesjegy : {{Decimals}} | |
// Tulajdonos Fiók : {{Owner Account}} | |
// FIGYELEM! | |
// Ezeket az adatokat mindenképpen változtasd meg a dokumentum többi részén is!!! | |
// A "Tulajdonosi Fiók"-ot is, különben nálam landol a Coin/ICO !!! | |
// | |
// Élvezd! (Enjoy.) | |
// | |
// Megjegyzés: Ez a kód tájékoztató-oktató, és szórakoztató célokat szolgál! | |
// Felhasználása csak saját felelősségre! | |
// Minden felelőség kizárva! | |
// | |
// (c) by LordAthis 2020. MIT Licence. | |
// ---------------------------------------------------------------------------- | |
// ---------------------------------------------------------------------------- | |
// Lib: Biztonságos Matematika | |
// ---------------------------------------------------------------------------- | |
contract SafeMath { | |
function safeAdd(uint a, uint b) public pure returns (uint c) { | |
c = a + b; | |
require(c >= a); | |
} | |
function safeSub(uint a, uint b) public pure returns (uint c) { | |
require(b <= a); | |
c = a - b; | |
} | |
function safeMul(uint a, uint b) public pure returns (uint c) { | |
c = a * b; | |
require(a == 0 || c / a == b); | |
} | |
function safeDiv(uint a, uint b) public pure returns (uint c) { | |
require(b > 0); | |
c = a / b; | |
} | |
} | |
/** | |
ERC Token Standard #20 Interface | |
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md | |
*/ | |
contract ERC20Interface { | |
function totalSupply() public constant returns (uint); | |
function balanceOf(address tokenOwner) public constant returns (uint balance); | |
function allowance(address tokenOwner, address spender) public constant returns (uint remaining); | |
function transfer(address to, uint tokens) public returns (bool success); | |
function approve(address spender, uint tokens) public returns (bool success); | |
function transferFrom(address from, address to, uint tokens) public returns (bool success); | |
event Transfer(address indexed from, address indexed to, uint tokens); | |
event Approval(address indexed tokenOwner, address indexed spender, uint tokens); | |
} | |
/** | |
Szerződés funkció jóváhagyás fogadására és a hívás végrehajtására egy hívás során | |
A MiniMeToken-től kölcsönözve | |
*/ | |
contract ApproveAndCallFallBack { | |
function receiveApproval(address from, uint256 tokens, address token, bytes data) public; | |
} | |
/** | |
ERC20 Token, szimbólum, név és tizedesjegyek hozzáadásával, valamint segített token átvitel | |
*/ | |
contract {{Token Symbol}}Token is ERC20Interface, SafeMath { | |
string public symbol; | |
string public name; | |
uint8 public decimals; | |
uint public _totalSupply; | |
mapping(address => uint) balances; | |
mapping(address => mapping(address => uint)) allowed; | |
// ------------------------------------------------------------------------ | |
// Konstruktőr | |
// ------------------------------------------------------------------------ | |
constructor() public { | |
symbol = "{{Token Symbol}}"; | |
name = "{{Token Name}}"; | |
decimals = {{Decimals}}; | |
_totalSupply = {{Total Supply}}; | |
balances[{{Owner Account}}] = _totalSupply; | |
emit Transfer(address(0), {{Owner Account}}, _totalSupply); | |
} | |
// ------------------------------------------------------------------------ | |
// Teljes készlet | |
// ------------------------------------------------------------------------ | |
function totalSupply() public constant returns (uint) { | |
return _totalSupply - balances[address(0)]; | |
} | |
// ------------------------------------------------------------------------ | |
// Szerezze be a tokenOwner fiók token egyenlegét | |
// ------------------------------------------------------------------------ | |
function balanceOf(address tokenOwner) public constant returns (uint balance) { | |
return balances[tokenOwner]; | |
} | |
// ------------------------------------------------------------------------ | |
// Átutalja az egyenleget a token tulajdonos számlájáról a számlára | |
// - A tulajdonos számlájának elegendő egyenleggel kell rendelkeznie az átutaláshoz | |
// - 0 értéktranszfer megengedett | |
// ------------------------------------------------------------------------ | |
function transfer(address to, uint tokens) public returns (bool success) { | |
balances[msg.sender] = safeSub(balances[msg.sender], tokens); | |
balances[to] = safeAdd(balances[to], tokens); | |
emit Transfer(msg.sender, to, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// A token tulajdonosa jóváhagyhatja, hogy a költők átvigyék a (...) tokenekről | |
// a token tulajdonos számlájáról | |
// | |
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md | |
// javasolja, hogy ne ellenőrizzék a jóváhagyási kettős kiadások támadását | |
// mivel ezt a felhasználói felületeken kell megvalósítani | |
// ------------------------------------------------------------------------ | |
function approve(address spender, uint tokens) public returns (bool success) { | |
allowed[msg.sender][spender] = tokens; | |
emit Approval(msg.sender, spender, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Tokenek átvitele a fiókból a fiókba | |
// | |
// The calling account must already have sufficient tokens approve(...)-d | |
// for spending from the from account and | |
// - A számláról elegendő egyenleggel kell rendelkeznie az átutaláshoz | |
// - A költőnek elegendő engedéllyel kell rendelkeznie az átutaláshoz | |
// - 0 értéktranszfer megengedett | |
// ------------------------------------------------------------------------ | |
function transferFrom(address from, address to, uint tokens) public returns (bool success) { | |
balances[from] = safeSub(balances[from], tokens); | |
allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens); | |
balances[to] = safeAdd(balances[to], tokens); | |
emit Transfer(from, to, tokens); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Visszaadja a tulajdonos által jóváhagyott tokenek azon összegét, | |
// amelyet át lehet utalni a költő számlájára | |
// ------------------------------------------------------------------------ | |
function allowance(address tokenOwner, address spender) public constant returns (uint remaining) { | |
return allowed[tokenOwner][spender]; | |
} | |
// ------------------------------------------------------------------------ | |
// A token tulajdonosa jóváhagyhatja, hogy a költők átadják a From (...) | |
// tokent a token tulajdonos számlájáról. | |
// A kiadási szerződés függvény megkapja a jóváhagyást (...), | |
// majd végrehajtásra kerül | |
// ------------------------------------------------------------------------ | |
function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) { | |
allowed[msg.sender][spender] = tokens; | |
emit Approval(msg.sender, spender, tokens); | |
ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data); | |
return true; | |
} | |
// ------------------------------------------------------------------------ | |
// Ne fogadja el az ETH-t | |
// ------------------------------------------------------------------------ | |
function () public payable { | |
revert(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Tesztelés céljából forkoltam, MIT Licensz alatt.
Teszteléséhez 8'000'000 L1T Tokent hoztam létre, mely 3 tizedesig osztható. (8 millió * 1000 = 8'000'000'000)
A megadott ETH Tárcát cseréld a saját tárcádra!
(Ugyanebben a tárcában Adományokat - Donate - elfogadok! ;) )