Как создать токен BEP-20 в BNB chain?

Используя Binance Smart Chain, любой может создать и запустить свой цифровой токен.

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


Binance Smart Chain - это недавняя разработка, которая приносит своим пользователям пользу благодаря богатой и растущей экосистеме цифровых активов, невиданной ранее в спектре децентрализованного обмена.


Используя Binance Smart Chain, любой может создать и запустить свой цифровой токен. Создание токена BEP-20 на Binance Smart Chain - довольно простая задача. В этой статье дана подробная информация о том, как создать токен BEP-20. Давайте рассмотрим, как это работает.


  • Что такое Binance Smart Chain?
  • Что такое стандарт токена BEP-20?
  • Как создать токен BEP-20?

Что такое Binance Smart Chain?

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


Основные особенности BSC:

  • EVM Compatible
  • Cross-chain transfer
  • Proof of Stake authority
  • Block time ~3 seconds

BSC работает параллельно с цепочкой Binance и включает смарт-контракты для токенов в цепочке блоков Binance. Также был введен совершенно новый механизм ставок для BNB, одной из ведущих криптовалют в мире.


BSC предлагает своим пользователям:

  • низкие комиссии за транзакции
  • кросс-цепной механизм defi, который увеличивает функциональную совместимость defi
  • высокопроизводительная сеть, способная создавать блок каждые 3 секунды
  • растущая экосистема с миллионами пользователей
  • поддерживающая экосистема Binance, которая финансирует и поддерживает различные проекты defi

Что такое стандарт токена BEP-20?

BEP20 - это интеллектуальная цепочка Binance, эквивалентная популярной спецификации ERC20 для токенов в сети Ethereum.


Разница в том, что токен BEP20 работает не в сети Ethereum, а в сети Binance Smart Chain. Несмотря на это различие, поскольку BSC (Binance Smart Chain) реализует виртуальную машину Ethereum (EVM) для всех своих смарт-контрактов, они в конечном итоге практически идентичны как по спецификации, так и по реализации.


В этом руководстве вы узнаете, как создать свой собственный токен BEP20.


Токены BSC соответствуют стандарту BEP-20, который аналогичен стандарту ERC-20 Ethereum. Поскольку BEP-20 и ERC-20 почти идентичны, он совместим с обоими. Binance Smart Chain (BSC) - это ответвление основной сети Ethereum.


Стандарты токенов обеспечивают базовые функции для токенов, такие как возврат баланса, передача, просмотр владения токенами и т.д.


Важно отметить, что токены BSC позволяют заменять обычную цепочку Binance, которая соответствует стандарту BEP-2. Транзакции, происходящие с этими токенами в сети, требуют оплаты комиссии в BNB. Это похоже на компенсацию валидаторам за защиту сети.


Давайте посмотрим, как создавать эти токены.

Как создать токен BEP-20?

Первое, что вам нужно сделать для этого нового проекта, - это настроить тестовую сеть BSC с вашим кошельком MetaMask.

Вы можете сделать это, открыв MetaMask, щелкнув вкладку сети и нажав «Custom RPC». Чтобы настроить кошелек для подключения к тестовой сети BSC, вам нужно заполнить формы, как на картинке ниже.
Имя сети: BSC Testnet, RPC_URL: https://data-seed-prebsc-1-s1.binance.org:8545/, Chain_ID: 97, Currency_Symbol: BNB, BlockExplorerURL: https://testnet.bscscan.com

Теперь ваш кошелек может подключиться к тестовой сети BSC!

Добавление тестового BNB в кошелек

Следующее, что нам нужно сделать, это получить немного BNB, чтобы поиграть с ним. BNB - валюта BSC; BNB для BSC - это то же самое, что ETH для Ethereum.

Чтобы получить тест BNB, мы отправимся сюда
Вы можете скопировать адрес своего кошелька из расширения браузера MetaMask и вставить его в поле, чтобы вам отправили BNB.

Кодирование токена

Поскольку BSC использует EVM, код для развертывания токена ERC-20 и токена BEP20 одинаков. Что это позволяет нам сделать, так это получить спецификацию ERC-20 от OpenZepplin и использовать ее в нашем смарт-контракте.

Следующее, что нужно сделать, это открыть новую вкладку браузера, перейти в Remix IDE и запустить новую рабочую область.

В папке контрактов мы создадим файл с именем BEP20.sol.

В этом новом файле вы можете написать следующий код:

// contracts/BEP20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract BEP20 is ERC20 {
    constructor(uint256 initialSupply) ERC20("BEP20Test", "BPT") {
        _mint(msg.sender, initialSupply;)
    }
}

// SPDX-License-Identifier: UNLISCENSED

pragma solidity 0.8.4;


/**
 * @title SampleBEP20Token
 * @dev Very simple BEP20 Token example, where all tokens are pre-assigned to the creator.
 * Note they can later distribute these tokens as they wish using `transfer` and other
 * `BEP20` functions.
 * USE IT ONLY FOR LEARNING PURPOSES. SHOULD BE MODIFIED FOR PRODUCTION
 */
 
contract SampleBEP20Token {
    string public name = "SampleBEP20 Token";
    string public symbol = "SBT";
    uint256 public totalSupply = 1000000000000000000000000; // 1 million tokens
    uint8 public decimals = 18;
    
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed _from, address indexed _to, uint256 _value);

     /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 _value
    );

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     */
    constructor() {
        balanceOf[msg.sender] = totalSupply;
    }

     /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address _to, uint256 _value)
        public
        returns (bool success)
    {
        require(balanceOf[msg.sender] >= _value);
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
    
     /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */

    function approve(address _spender, uint256 _value)
        public
        returns (bool success)
    {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) public returns (bool success) {
        require(_value <= balanceOf[_from]);
        require(_value <= allowance[_from][msg.sender]);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        allowance[_from][msg.sender] -= _value;
        emit Transfer(_from, _to, _value);
        return true;
    }
}

Развертывание токена

Выписав исходный файл BEP20.sol, мы можем развернуть его в тестовой сети BSC.
Щелкните BEP20.sol, а затем откройте вкладку компилятора Solidity и измените версию компилятора на «0.8.0 + commit.c7dfd78e». Затем нажмите синюю кнопку «Скомпилировать BEP20.sol».
После составления контракта вы готовы! Щелкните вкладку «Развертывание и выполнение транзакций» в Remix и щелкните вкладку «Среда» для изменения на Injected Web 3. Если вы не подключались к Remix с помощью MetaMask, он может запросить подтверждение.

После того, как ваша MetaMask подключится к Remix, вы должны увидеть свой адрес в поле «Учетная запись». Если это так, теперь вы можете выбрать контракт BEP20 в раскрывающейся вкладке. Вы должны увидеть оранжевую кнопку развертывания и форму справа от нее. Здесь вы можете передать аргумент в параметр initialSupply из ранее.

Я создам 100 токенов, для этого я передам 100 000 000 000 000 000 000 и затем нажму «Развернуть».
Вам нужно будет принять транзакцию MetaMask, поскольку развертывание чего-либо в сети будет стоить BNB.
Если до этого момента вы все сделали правильно, в терминале должно появиться сообщение об успешном выполнении!

Вы можете скопировать адрес контракта на вкладке «Развернутые контракты» и найти его на bscscan. Вы увидите адрес своего кошелька в поле «от» и увидите, что на ваш кошелек было отправлено 100 токенов BPT.

Добавление токена в кошелек

Чтобы просмотреть это в пользовательском интерфейсе MetaMask, вам нужно будет щелкнуть «Добавить токен» на вкладке «Активы». Это должно привести вас к меню с 3 полями для заполнения. Если вы вставите адрес контракта из Remix, вы увидите, что все поля автоматически заполнятся, и тогда вы сможете принять токен.

К концу должно получиться так.

Вывод

Поздравляю!

Вы добрались до конца.

Вы знаете, как развернуть собственный токен в сети BSC и добавить его в свою MetaMask.

На самом деле теперь вы знаете даже больше, поскольку для сети Ethereum процесс точно такой же, вам нужно будет только указать Remix и MetaMask в сети Ethereum, а не в сети BSC!

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

Поддержите блог, перечислив небольшие чаевые

Если у вас нет кошелька MetaMask, вы можете получить его здесь
Made on
Tilda