Каждый год отрасль блокчейн производит инновационные и современные разработки, которые бросают вызов существующей системе и приносят обновления, особенно в децентрализованном финансовом пространстве.
Binance Smart Chain - это недавняя разработка, которая приносит своим пользователям пользу благодаря богатой и растущей экосистеме цифровых активов, невиданной ранее в спектре децентрализованного обмена.
Используя Binance Smart Chain, любой может создать и запустить свой цифровой токен. Создание токена BEP-20 на Binance Smart Chain - довольно простая задача. В этой статье дана подробная информация о том, как создать токен BEP-20. Давайте рассмотрим, как это работает.
Что такое Binance Smart Chain?
Это архитектура с двойной цепочкой, которая дает пользователям возможность создавать свои децентрализованные приложения и цифровые активы на блокчейне и обеспечивает преимущество быстрой торговли.
Основные особенности BSC:
BSC работает параллельно с цепочкой Binance и включает смарт-контракты для токенов в цепочке блоков Binance. Также был введен совершенно новый механизм ставок для BNB, одной из ведущих криптовалют в мире.
BSC предлагает своим пользователям:
Что такое стандарт токена 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?
Добавление тестового BNB в кошелек
Кодирование токена
// 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;
}
}
Развертывание токена
Добавление токена в кошелек
Вывод