Бесплатный Код Криптомонеты на Solidity

ЧудоМир
Chudomir
Published in
3 min readMar 1, 2020

Для многих слово Криптомонета звучит очень страшно и дорого. Тысячи часов разработки, сотни программистов и километры офисных помещений, кишащих людьми… Сотни миллионов долларов на первичные размещения монет и рыдающие инвесторы….

Но на самом деле все эти монеты — это пару строчек кода, на примитивном языке Solidity, который под силу даже школьнику младших классов, кем по сути и являются большинство так называемых разработчиков криптовалют.

Но вот Он — Момент Истинны! Время застыло Бесплатный Шаблон Криптомонеты уже у вас в кармане!

Теперь не только каждый школьник, но и каждая школьница может создать свою собственную Криптомонету всего за 5 минут! Вопрос нужна ли она?

Конечно Нужна! Это же можно миллиардером стать!

Итак перед вами уже готовый, Бесплатный Шаблон Криптомонеты, все что вам нужно — это заменить название и еще пару значений. Все! Вы, как Виталик Бутерин! Даже Круче! Можете начинать поднимать миллиардные инвестиции, выступать по телевизору и спорить с Илон Маском по Твиттеру!

pragma solidity ^0.X.X;

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 tokens

totalSupply = initialSupply; // Update total supply

name = tokenName; // Set the name for display purposes

symbol = tokenSymbol; // Set the symbol for display purposes

decimals = decimalUnits; // Amount of decimals for display purposes

}

/* Send coins */

function transfer(address _to, uint256 _value) {

if (_to == 0x0) burn; // Prevent transfer to 0x0 address. Use burn() instead

if (balanceOf[msg.sender] < _value) burn; // Check if the sender has enough

if (balanceOf[_to] + _value < balanceOf[_to]) burn; // Check for overflows

balanceOf[msg.sender] -= _value; // Subtract from the sender

balanceOf[_to] += _value; // Add the same to the recipient

Transfer(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) burn; // Prevent transfer to 0x0 address. Use burn() instead

if (balanceOf[_from] < _value) burn; // Check if the sender has enough

if (balanceOf[_to] + _value < balanceOf[_to]) burn; // Check for overflows

if (_value > allowance[_from][msg.sender]) burn; // Check allowance

balanceOf[_from] -= _value; // Subtract from the sender

balanceOf[_to] += _value; // Add the same to the recipient

allowance[_from][msg.sender] -= _value;

Transfer(_from, _to, _value);

return true;

}

function burn(uint256 _value) returns (bool success) {

if (balanceOf[msg.sender] < _value) burn; // Check if the sender has enough

balanceOf[msg.sender] -= _value; // Subtract from the sender

totalSupply -= _value; // Updates totalSupply

Burn(msg.sender, _value);

return true;

}

function burnFrom(address _from, uint256 _value) returns (bool success) {

if (balanceOf[_from] < _value) burn; // Check if the sender has enough

if (_value > allowance[_from][msg.sender]) burn; // Check allowance

balanceOf[_from] -= _value; // Subtract from the sender

totalSupply -= _value; // Updates totalSupply

Burn(_from, _value);

return true;

}

}

--

--