Author

Topic: (Гайд) Как создать свой ERC-20 Token (Read 805 times)

newbie
Activity: 2
Merit: 0
Он перейдет  на etherscan.io - это Ethereum Blockchain explorer, и здесь вы можете отслеживать все, что происходит в основной и тестовой сетях, потому что все операции открыты в блокчейне.

Когда мы перейдем к этому URL, мы увидим детали о нашей транзакции. Нажмите на хэш контракта, чтобы узнать больше.
https://i.ibb.co/LNZz6dt/16.png

Все доступно в блокчейне, даже наш код. У разработчиков Solidity нет места ошибкам!
https://i.ibb.co/FgcMzMZ/17.png

Нажмите на вкладку контракта, и вы увидите наш скомпилированный код
https://i.ibb.co/kgprXzQ/18.png

Теперь вы можете перейти к Token Tracer, чтобы увидеть подробную информацию о нашем токене Blockonomi. Вы можете увидеть 3 необязательных правила, которые мы определили ранее.
https://i.ibb.co/fdkdDhX/19.png

Теперь проверь свой кошелек. Вы увидите, что Эфир, который мы заплатили за развертывание смарт контракта на Ropsten, отсутствует.
https://i.ibb.co/D1qjShK/20.png

Вывод
На этом наш урок окончен, выполнив эти шаги и наши примеры кода, вы сможете развернуть свой собственный токен Ethereum ERC-20.

Успехов!

Оригинальная статья
https://blockonomi.com/create-ethereum-token/

newbie
Activity: 2
Merit: 0
Он перейдет  на etherscan.io - это Ethereum Blockchain explorer, и здесь вы можете отслеживать все, что происходит в основной и тестовой сетях, потому что все операции открыты в блокчейне.

Когда мы перейдем к этому URL, мы увидим детали о нашей транзакции. Нажмите на хэш контракта, чтобы узнать больше.
https://i.ibb.co/LNZz6dt/16.png

Все доступно в блокчейне, даже наш код. У разработчиков Solidity нет места ошибкам!
https://i.ibb.co/FgcMzMZ/17.png

Нажмите на вкладку контракта, и вы увидите наш скомпилированный код
https://i.ibb.co/kgprXzQ/18.png

Теперь вы можете перейти к Token Tracer, чтобы увидеть подробную информацию о нашем токене Blockonomi. Вы можете увидеть 3 необязательных правила, которые мы определили ранее.
https://i.ibb.co/fdkdDhX/19.png

Теперь проверь свой кошелек. Вы увидите, что Эфир, который мы заплатили за развертывание смарт контракта на Ropsten, отсутствует.
https://i.ibb.co/D1qjShK/20.png

Вывод
На этом наш урок окончен, выполнив эти шаги и наши примеры кода, вы сможете развернуть свой собственный токен Ethereum ERC-20.

Успехов!

Оригинальная статья
https://blockonomi.com/create-ethereum-token/



Приветствую! Подскажите пожалуйста. Создал токен на бинанс смарт чейне, не могу подтвердить исходный код контракта на bscscan выдаёт ошибку не возможно создать байт код контракта и аби  общее исключение, невозможно скомпеллирования байт кода, не пойму как скомпелировать и подтвердить. Спасибо!
jr. member
Activity: 75
Merit: 2
скопировал код, подставил свои значения опять. сделал тест в старой версии remix. получилось.
включаю основную сеть, ставку в гвей поднимаю повыше, нифига. стоит в pending, но в итоге
не деплоит. что это может быть, на что похоже хоть? ну если работает в тестовой, а в основной
делаю все то же самое и оно не работает, это как?
member
Activity: 196
Merit: 52
я сейчас сделал тестовый прогон этого кода в remix. ABI есть, Bytecode нет. Почему?
на других кодах пробовал, оба кода давало
Попробовал ради интереса. Всё на месте. Видимо вы что-то делаете не так или просто не заметили сссылку на байткод.
jr. member
Activity: 75
Merit: 2
я сейчас сделал тестовый прогон этого кода в remix. ABI есть, Bytecode нет. Почему?
на других кодах пробовал, оба кода давало
jr. member
Activity: 35
Merit: 10
Сервисов дохуя - да. Говно - чтобы у тебя язык включился и раздельчик правильный открылся на страничке. Почему не сделать нормальный роутер - надо сделать.
copper member
Activity: 1540
Merit: 487
Stop the war!
Кстати есть специальный сервис, позволяющий создавать свои токены всем желающим без специальных технических навыков. За деньги. https://icoconstructor.com/how?target=1&lang=en
Кстати, таких сервисов чуть более чем дохуя. Кстати, объясни - нахуя в твоей ссылке вот это говно: "?target=1&lang=en".
jr. member
Activity: 35
Merit: 10
Кстати есть специальный сервис, позволяющий создавать свои токены всем желающим без специальных технических навыков. За деньги. https://icoconstructor.com/how?target=1&lang=en
legendary
Activity: 2422
Merit: 2166
По-моему, довольно интересная и полезная техническая инструкция по созданию ERC20-токена, пусть и не относящаяся к Bitcoin. Всё переведено лаконично, написано понятным языком, представлено с иллюстрациями.

Учитывая огромное число ERC20-смартконтрактов, созданных на блокчейне Ethereum, неудивительно, что количество ненулевых балансов монет и возможных токенов на ETH-адресах в несколько раз превышает количество непотраченных выходов Bitcoin.



В 2017 году ICO были на подъеме - каждый день появлялось бесчисленное множество проектов с дикими обещаниями того, чего они хотели достичь, и инвесторы скупали их.

С тех пор все успокоилось, поскольку пространство созрело и инвесторы исчезли, многие ICO не смогли выполнить обещанное, но это история для другого поста - мы здесь, чтобы обсудить техническую сторону.

Да, всё немного успокоилось, но борцам со скамами следует продолжать выявлять мошеннические ICO и IEO, чтобы инвесторы и трейдеры не теряли свои деньги.
sr. member
Activity: 1932
Merit: 349
Фиг его знает, может одну тему для смартконтрактов оставить в разделе кодеров? К биткоину не относится, но коддингу и блокчейну как никак отношение прямое.

На самом деле забавно наблюдать как переводят то что переведено и существует в русскоязычном интернете уже давно. По теме программирования на solidity существует масса материалов на русском языке. Если делать тему по смартконтрактам то надо уже не только смотреть на ETH но и на остальные EOS,TRON,Waves...
Вот ест сайт где можно посмотреть что нынче в моде https://dappradar.com/
member
Activity: 237
Merit: 29
Не знал что токены так легко создать, хотя могли сделать еще проще.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Фиг его знает, может одну тему для смартконтрактов оставить в разделе кодеров? К биткоину не относится, но коддингу и блокчейну как никак отношение прямое.
legendary
Activity: 1708
Merit: 1615
#SWGT CERTIK Audited
Он перейдет  на etherscan.io - это Ethereum Blockchain explorer, и здесь вы можете отслеживать все, что происходит в основной и тестовой сетях, потому что все операции открыты в блокчейне.

Когда мы перейдем к этому URL, мы увидим детали о нашей транзакции. Нажмите на хэш контракта, чтобы узнать больше.


Все доступно в блокчейне, даже наш код. У разработчиков Solidity нет места ошибкам!


Нажмите на вкладку контракта, и вы увидите наш скомпилированный код


Теперь вы можете перейти к Token Tracer, чтобы увидеть подробную информацию о нашем токене Blockonomi. Вы можете увидеть 3 необязательных правила, которые мы определили ранее.


Теперь проверь свой кошелек. Вы увидите, что Эфир, который мы заплатили за развертывание смарт контракта на Ropsten, отсутствует.


Вывод
На этом наш урок окончен, выполнив эти шаги и наши примеры кода, вы сможете развернуть свой собственный токен Ethereum ERC-20.

Успехов!

Оригинальная статья
https://blockonomi.com/create-ethereum-token/
legendary
Activity: 1708
Merit: 1615
#SWGT CERTIK Audited
Развертывание вашего токена
Для этого нам понадобится Metamask кошелек.

Metamask - это расширение, которое позволяет запускать Ethereum dApps прямо в браузере, не запуская полную ноду Ethereum.

Перейдите на страницу https://metamask.io/ из браузера (Chrome, Firefox или Opera) и добавьте его.



Создать новый кошелек в MetaMask
Когда расширение установлено, нажмите на значок в правом верхнем углу браузера, чтобы приступить к созданию кошелька.

Прочитайте и примите условия, затем введите надежный пароль и нажмите «Создать».




Вы увидите начальную фразу из 12 слов. Сохраните эти слова в виде файла или скопируйте их в безопасное место и нажмите «Я скопировал  в безопасное место».

Вы успешно создали аккаунт в MetaMask с новым адресом кошелька!

Вы заметите, что в настоящее время у вас есть 0 ETH в вашем кошельке. Для развертывания контракта в сети Ethereum необходимо некоторое количество эфира. Мы не будем размещать наш контракт в основной сети, так как это всего лишь демонстрация.

Мы опубликуем этот контракт в тестовой сети. На самом деле есть несколько тестовых сетей Ethereum - Ropsten, Rinkeby, Kovan ...

Давайте использовать Ropsten для этого примера.

Сначала тебе нужен эфир, верно? В тестовой сети мы работаем с тестовыми бесплатными эфирами. Нужно просто потребовать немного от кранов.

Перейдите по адресу: https://faucet.ropsten.be/, вставьте адрес своего кошелька и нажмите «Отправить мне тестовый эфир».

Через пару секунд вы увидите ETH в своем кошельке.


Теперь пришло время воплотить все в жизнь!

Перейдите в Remix IDE и скомпилируйте договор. Если ошибок нет, мы готовы к развертыванию.


Для среды выберите Injected Web3. Он автоматически обнаружит ваш  метамаск кошелек.


Нажмите кнопку «Развернуть».

Metamask теперь попросит вас снять средства с вашего кошелька, чтобы приобрести эту транзакцию.


Подтвердите это. Затем вернитесь в Remix IDE и обратите внимание на терминал. Мы видим, что транзакция прошла успешно.

В результате мы получили хэш транзакции. Нажмите на URI из терминала, который выглядит следующим образом: ropsten.etherscan.io/
legendary
Activity: 1708
Merit: 1615
#SWGT CERTIK Audited
Интерфейс ERC-20
Давайте реализуем интерфейс ERC-20 сейчас. Для этого нам нужно написать код для всех наших шести обязательных функций.

1. TotalSupply
Определяет общее количество созданных токенов ERC-20. Целью этого метода является определение общего количества токенов в экосистеме.

Code:
function totalSupply()
public
view
returns (uint)
{
    return _totalSupply - balances[address(0)];
}
2. balanceOf
Возвращает количество токенов на конкретный адрес, в данном случае адрес владелец контракта.

Code:
function balanceOf(address tokenOwner)
public
view
returns (uint balance)
{
    return balances[tokenOwner];
}

3. allowance
Для выполнения транзакции одной из самых важных данных, которые должен знать контракт, является баланс пользователя. В конце концов, пользователь должен иметь минимальное количество токенов, необходимых для выполнения транзакции.

Вот почему контракт ERC-20 также включает функцию allowance (). Если у пользователя нет минимально необходимого количества токенов, функция отменяет транзакцию.

Code:
function allowance
(address tokenOwner, address spender)
public
view
returns (uint remaining)
{
    return allowed[tokenOwner][spender];
}

4. approve
После проверки баланса владелец контракта может дать согласие пользователю на сбор необходимого количества токенов с адреса контракта.
Функция подтверждения также проверяет транзакцию по общему количеству токенов, чтобы убедиться, что в ней нет ни пропущенных, ни лишних.
Другими словами, это гарантирует, что подделка невозможна.

Code:
function approve(address spender, uint tokens) public
returns
(bool success)
{
    allowed[msg.sender][spender] = tokens;
    emit Approval(msg.sender, spender, tokens);
    return true;}



Safe Math Library
Чтобы правильно реализовать две оставшиеся функции, нам нужна библиотека Safe Math.

Оболочка Safe Math Library для арифметических операций Solidity с добавленными проверками переполнения.

Арифметические операции в Solidity при переполнении. Это может легко привести к ошибкам, потому что программисты обычно предполагают, что переполнение вызывает ошибку, которая является стандартным поведением в языках программирования высокого уровня.

Safe Math восстанавливает процесс, возвращая транзакцию при переполнении операции.

Использование этой библиотеки вместо непроверенных операций устраняет целый класс ошибок, поэтому рекомендуется использовать ее всегда.

Все, что нам нужно сделать сейчас, это скопировать этот код выше нашего контракта, а затем наследовать его.

Code:
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;
    }
}

Не забудьте унаследовать это:

Code:
contract BlockonomiToken is ERC20Interface, SafeMath



5. transfer

Итак, теперь, когда все проверки выполнены и контракт знает, что у пользователя есть необходимое количество токенов, необходимое для выполнения транзакции, владелец контракта может отправлять им токены с помощью функции Transfer ().

Эта функция позволяет владельцу контракта отправлять определенное количество токена на другой адрес, точно так же, как обычная криптовалютная транзакция, и позволяет передавать определенное количество токенов  в учетную запись пользователя.

Code:
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;
}

6. transferFrom

Мы уже рассмотрели передаточную функцию, почему у нас другая?

Хорошо, давайте возьмем пример, чтобы понять, почему TransferFrom является таким блестящим дополнением к контракту ERC20.

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

Вот что позволяет делать TransferFrom (). Это поможет вам автоматизировать перевод платежей на определенный счет.

Code:
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;
}

Полный код
Вот полный код нашего токена Blockonomi.

Code:
pragma solidity ^0.5.0;

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
//
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view 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);
}

// ----------------------------------------------------------------------------
// Safe Math Library
// ----------------------------------------------------------------------------
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;
    }
}


contract BlockonomiToken is ERC20Interface, SafeMath {
    string public name;
    string public symbol;
    uint8 public decimals; // 18 decimals is the strongly suggested default, avoid changing it
   
    uint256 public _totalSupply;
   
    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;
   
    /**
     * Constrctor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    constructor() public {
        name = "BlockonomiToken";
        symbol = "BKM";
        decimals = 18;
        _totalSupply = 100000000000000000000000000;
       
        balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
   
    function totalSupply() public view returns (uint) {
        return _totalSupply  - balances[address(0)];
    }
   
    function balanceOf(address tokenOwner) public view returns (uint balance) {
        return balances[tokenOwner];
    }
   
    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }
   
    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }
   
    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;
    }
   
    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;
    }
}

Поздравляем! Вы успешно разработали свой собственный токен ERC-20.

Последний шаг - развертывание в реальной сети.
legendary
Activity: 1708
Merit: 1615
#SWGT CERTIK Audited
Оригинальная статья
https://blockonomi.com/create-ethereum-token/

Это наш второй урок по Solidity, если вы пропустили первый, найдите его на https://blockonomi.com/category/education, где мы познакомим вас с некоторыми основами этого языка программирования для блокчейна Ethereum.

Мы немного объясним, как работает Solidity, как он структурирован, и начнем с простого кода для написания смарт контракта «Hello World».

В этом руководстве мы  научим вас кодингу для развертывания собственного токена Ethereum ERC-20. (Вот наш Blockonomi Token ).
https://ropsten.etherscan.io/token/0xcaed5a2327083f55a29224f91576217ab19dfc0e

Эфириум и Бум ICO

ICO означает «Первичное предложение монет», и это тип финансирования с использованием криптовалют. В ICO количество криптовалюты продается в форме «токенов»  спекулянтам или инвесторам в обмен на фиатные валюты или другие криптовалюты, такие как Биткойн или Ethereum.

Проданные токены рекламируются как будущие функциональные единицы проекта, и если будет достигнута цель финансирования ICO - проект запускается.

Мы уже говорили о том, как смарт-контракты открыли для разработчиков новый мир и возможность создавать инновации. Однако этим разработчикам нужен был способ финансировать свои проекты.

И решение было ICO.

В 2017 году ICO были на подъеме - каждый день появлялось бесчисленное множество проектов с дикими обещаниями того, чего они хотели достичь, и инвесторы скупали их.

С тех пор все успокоилось, поскольку пространство созрело и инвесторы исчезли, многие ICO не смогли выполнить обещанное, но это история для другого поста - мы здесь, чтобы обсудить техническую сторону.

Что такое токен?
Токены - это, по сути, смарт-контракты, которые живут на блокчейне Ethereum, они могут иметь различные виды использования и цели.
Токен не ограничен одной конкретной ролью. Он может выполнять много ролей в своей родной экосистеме. Вот список некоторых ролей, которые могут выполнять токены.

Toll: токен может работать как шлюз в Dapp. По сути, чтобы получить доступ к Dapp, вам нужно держать токены.

Voting Rights: Токены также могут предоставлять правообладателям определенные права голоса. Подумайте об EOS. Наличие токенов EOS позволит вам голосовать за валидаторов. EOS Blockchain стремится стать децентрализованной операционной системой, которая может поддерживать децентрализованные приложения промышленного масштаба.

Value Exchange: это одна из наиболее распространенных ролей токенов в экосистеме. Токены могут помочь создать внутреннюю экономическую систему в приложении.

User Experience Enhancement:  токен может также позволить держателям получать профит пределах конкретной среды. Например в Brave (веб-браузер) владельцы bat (токенов, используемых в Brave) получат права на заработок, используя свои токены для добавления рекламы или других услуг на платформе Brave.

Currency: может использоваться в качестве накопления стоимости, который может использоваться для проведения транзакций как внутри, так и за пределами данной экосистемы.

Что такое ERC-20?
ERC-20 - это технический стандарт, используемый для смарт контрактов в блокчейне Ethereum для реализации токенов. Большинство токенов, выпущенных на блокчейне Ethereum, соответствуют ERC-20.

ERC-20 - это стандарт протокола, который определяет определенные правила и стандарты для выдачи токенов в сети Ethereum. В "ERC-20" ERC обозначает Ethereum Request For Comments, а 20 обозначает уникальный идентификационный номер, чтобы отличать этот стандарт от других.

Проще говоря, ERC-20 - это руководство по правилам и положениям, которые помогут создать план для интеллектуальных контрактов на основе Ethereum для создания их токенов.

Токен в Ethereum - это просто смарт контракт, который следует некоторым общим правилам, а именно реализует стандартный набор функций, которые разделяют все остальные контракты токена, например, TransferFrom (address _from, address _to, uint256 _tokenId) и balanceOf (address _owner) ,

Таким образом, по сути токен - это просто контракт, который отслеживает, кому принадлежит какая часть этого токена, и некоторые функции, позволяющие этим пользователям передавать свои токены на другие адреса.

Почему ERC-20 Standard так важен?
Поскольку все токены ERC-20 имеют один и тот же набор функций с одинаковыми именами, с ними можно взаимодействовать одинаково.

Это означает, что если вы создаете приложение, способное взаимодействовать с одним токеном ERC-20, оно также может взаимодействовать с любым токеном ERC-20. Таким образом, в будущем к вашему приложению можно будет легко добавить больше токенов без необходимости их индивидуальной кодировки. Вы можете просто подключить новый адрес контракта токена, и, у вашего приложения есть другой токен, который оно может использовать.

Одним из примеров этого будет биржа. Когда биржа добавляет новый токен ERC-20, на самом деле ей просто нужно добавить еще один смарт контракт, с которым она взаимодействует. Пользователи могут указать этот контракт на отправку токенов на адрес кошелька биржи, а биржа может сообщить контракту  отправку токенов пользователям, когда они запрашивают вывод.

Бирже нужно только один раз реализовать эту логику передачи, а затем, когда она хочет добавить новый токен ERC-20, она просто добавляет новый адрес контракта в свою базу данных.

Давайте приступим к созданию токена
Мы будем использовать Remix IDE для разработки Smart Contract для нашего токена ERC-20.

Remix - это онлайн-инструмент, который позволяет вам написать смарт контракт Solidity, затем развернуть его и запустить.

Просто зайдите на https://remix.ethereum.org из вашего браузера, и мы сможем начать .




Нажмите кнопку Solidity, а затем кнопку Plus в левом верхнем углу.

Я назову его «BlockonomiToken», вы можете выбрать любое другое имя .



Хорошо, теперь все настроено.

Правила токена ERC-20
Токены ERC-20 следуют списку правил, чтобы их можно было использовать совместно, обменять на другие токены или перенести на крипто-кошелек.

Стандарт ERC20 состоит из 3 необязательных правил и 6 обязательных правил.

Проще говоря, если вы включаете определенные функции в смарт-контракт токена, вы соответствуете требованиям ERC20. Если вы не включили обязательные функции, вы не являетесь токеном ERC20.

Обязательные правила следующие:

1.totalSupply
2.balanceOf
3.transfer
4.transferFrom
5.approve
6.allowance

С другой стороны, необязательные правила:

1.Token Name
2.Symbol
3.Decimal (до 18)

Обычная практика - определять эти правила в интерфейсе. В Solidity на самом деле нет так называемого интерфейса, это просто еще один Smart Contract. К счастью, Smart Contracts можно наследовать на языке программирования Solidity

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

Code:
contract IBank {
  // base contract code...
}

contract Bank is IBank {
  // inherited contract code...
}

Вам также нужно знать, что Solidity поддерживает множественное наследование путем копирования кода, включая полиморфизм.
Все вызовы функций являются виртуальными, что означает, что вызывается самая производная функция, кроме случаев, когда имя контракта дается явно.
Когда контракт наследуется от нескольких контрактов, в цепочке блоков создается только один контракт, а код из всех базовых контрактов копируется в созданный контракт.
Давайте вернемся к нашему токену ERC-20. У нас есть обязательные правила для создания токена ERC-20.

Мы определим их как 6 функций и запишем в интерфейс. Тогда контракт нашего токена будет наследовать этот так называемый интерфейс.

Ваш код должен выглядеть следующим образом.

Code:
contract ERC20Interface {
    function totalSupply()
public
view
returns (uint);

    function balanceOf(address tokenOwner)
public
view
returns (uint balance);
    
function allowance
(address tokenOwner, address spender)
public
view
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);
}

Jump to: