Web3 & DApp Development Fundamentals · Урок

Выпуск и сжигание

Управление предложением

Урок 4 из 413 шагов

«Выпуск и сжигание» — бесплатный урок Web3 & DApp Development Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Web3 & DApp Development Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Managing Supply

Minting creates new tokens and burning destroys them. Together they let a token's totalSupply grow or shrink over time.

These operations are not part of the core ERC-20 interface, but they are extremely common extensions.

What Minting Does

Minting increases totalSupply and credits new tokens to a recipient's balance. It is how tokens enter circulation - at deployment, as rewards, or on demand.

Implementing Mint

A mint function adds to both totalSupply and the recipient's balance, then emits a Transfer event from the zero address.

<code>function _mint(address to, uint256 amount) internal {
    require(to != address(0), 'mint to zero');
    totalSupply += amount;
    balanceOf[to] += amount;
    emit Transfer(address(0), to, amount);
}</code>

Mint Emits From Zero

By convention a mint is logged as a Transfer from address(0). Wallets and indexers interpret a transfer originating at the zero address as new tokens being created.

<code>emit Transfer(address(0), to, amount); // signals minting</code>

What Burning Does

Burning reduces totalSupply and subtracts from a holder's balance, permanently removing tokens from circulation. It is used for deflationary mechanics, redemptions, and buybacks.

Implementing Burn

A burn function checks the holder's balance, decreases it and totalSupply, then emits a Transfer to the zero address.

<code>function _burn(address from, uint256 amount) internal {
    require(balanceOf[from] >= amount, 'burn exceeds balance');
    balanceOf[from] -= amount;
    totalSupply -= amount;
    emit Transfer(from, address(0), amount);
}</code>

Burn Emits To Zero

Symmetrically, a burn is logged as a Transfer to address(0). Tokens sent to the zero address are unrecoverable, which is exactly the intent.

<code>emit Transfer(from, address(0), amount); // signals burning</code>

Access Control on Mint

Minting must be restricted - an open mint function lets anyone create unlimited tokens, destroying value. Gate it behind an owner or minter role.

<code>address public owner;
modifier onlyOwner() { require(msg.sender == owner, 'not owner'); _; }

function mint(address to, uint256 amount) public onlyOwner {
    _mint(to, amount);
}</code>

Burning Your Own Tokens

Holders are usually allowed to burn their own tokens freely. A public burn simply burns from msg.sender.

<code>function burn(uint256 amount) public {
    _burn(msg.sender, amount);
}</code>

Capped Supply

To guarantee scarcity, a token can enforce a maximum supply by checking against a cap before minting.

<code>uint256 public immutable cap;

function mint(address to, uint256 amount) public onlyOwner {
    require(totalSupply + amount <= cap, 'cap exceeded');
    _mint(to, amount);
}</code>

Burn From Allowance

Like transferFrom, a burnFrom lets an approved spender burn another account's tokens, decrementing the allowance first.

<code>function burnFrom(address from, uint256 amount) public {
    require(allowance[from][msg.sender] >= amount, 'allowance');
    allowance[from][msg.sender] -= amount;
    _burn(from, amount);
}</code>

Quick Check

Test your understanding of minting and burning.

Recap

You learned supply management:

  • Mint increases totalSupply, credits a balance, emits Transfer from address(0)
  • Burn decreases totalSupply, debits a balance, emits Transfer to address(0)
  • Minting must be access-controlled; holders can usually burn their own tokens
  • Caps enforce a maximum supply; burnFrom uses allowances
Можно начать бесплатно

Изучай Web3 & DApp Development Fundamentals с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
29
Уроки
105

Часто задаваемые вопросы

Урок «Выпуск и сжигание» бесплатный?

Да — полный текст урока «Выпуск и сжигание» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Web3 & DApp Development Fundamentals, подпишись на CoddyKit PRO. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Выпуск и сжигание»?

Управление предложением Ты практикуешь Web3 & DApp Development Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Web3 & DApp Development Fundamentals?

Предыдущий опыт не требуется. Web3 & DApp Development Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Выпуск и сжигание»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Web3 & DApp Development Fundamentals?

Да. Каждый урок Web3 & DApp Development Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Стандарт ERC-20
  2. Реализация токена
  3. Разрешения
  4. Выпуск и сжигание
← Назад к Web3 & DApp Development Fundamentals