pragma solidity ^0.4.8;contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }contract MyToken {/* Public variables of the token */string public standard = ‘Token 0.1’;string public name;string public symbol;uint8 public decimals;uint256 public totalSupply;/* This creates an array with all balances */mapping (address => uint256) public balanceOf;mapping (address => mapping (address => uint256)) public allowance;/* This generates a public event on the blockchain that will notify clients */event Transfer(address indexed from, address indexed to, uint256 value);/* This notifies clients about the amount burnt */event Burn(address indexed from, uint256 value);/* Initializes contract with initial supply tokens to the creator of the contract */function MyToken(uint256 initialSupply,string tokenName,uint8 decimalUnits,string tokenSymbol) {balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokenstotalSupply = initialSupply; // Update total supplyname = tokenName; // Set the name for display purposessymbol = tokenSymbol; // Set the symbol for display purposesdecimals = decimalUnits; // Amount of decimals for display purposes}/* Send coins */function transfer(address _to, uint256 _value) {if (_to == 0x0) throw; // Prevent transfer to 0x0 address. Use burn() insteadif (balanceOf[msg.sender] < _value) throw; // Check if the sender has enoughif (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflowsbalanceOf[msg.sender] -= _value; // Subtract from the senderbalanceOf[_to] += _value; // Add the same to the recipientTransfer(msg.sender, _to, _value); // Notify anyone listening that this transfer took place}/* Allow another contract to spend some tokens in your behalf */function approve(address _spender, uint256 _value)returns (bool success) {allowance[msg.sender][_spender] = _value;return true;}/* Approve and then communicate the approved contract in a single tx */function approveAndCall(address _spender, uint256 _value, bytes _extraData)returns (bool success) {tokenRecipient spender = tokenRecipient(_spender);if (approve(_spender, _value)) {spender.receiveApproval(msg.sender, _value, this, _extraData);return true;}}/* A contract attempts to get the coins */function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {if (_to == 0x0) throw; // Prevent transfer to 0x0 address. Use burn() insteadif (balanceOf[_from] < _value) throw; // Check if the sender has enoughif (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflowsif (_value > allowance[_from][msg.sender]) throw; // Check allowancebalanceOf[_from] -= _value; // Subtract from the senderbalanceOf[_to] += _value; // Add the same to the recipientallowance[_from][msg.sender] -= _value;Transfer(_from, _to, _value);return true;}function burn(uint256 _value) returns (bool success) {if (balanceOf[msg.sender] < _value) throw; // Check if the sender has enoughbalanceOf[msg.sender] -= _value; // Subtract from the sendertotalSupply -= _value; // Updates totalSupplyBurn(msg.sender, _value);return true;}function burnFrom(address _from, uint256 _value) returns (bool success) {if (balanceOf[_from] < _value) throw; // Check if the sender has enoughif (_value > allowance[_from][msg.sender]) throw; // Check allowancebalanceOf[_from] -= _value; // Subtract from the sendertotalSupply -= _value; // Updates totalSupplyBurn(_from, _value);return true;}}

--

--

Technology craftsman, entrepreneur, Blockchain & Artificial Intelligence expert, founder of Borgdena, Apex Wave ai & Trember GmbH

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store