Web3 & DApp Development Fundamentals · レッスン

ミントとバーン

供給量の管理

レッスン 4/413 ステップ

「ミントとバーン」はCoddyKit上の無料Web3 & DApp Development Fundamentalsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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
無料で開始

AI チューターと学ぶ Web3 & DApp Development Fundamentals — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
29
レッスン
105

よくある質問

「ミントとバーン」レッスンは無料ですか?

はい。「ミントとバーン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Web3 & DApp Development Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Web3 & DApp Development Fundamentalsコースには全4レッスンが含まれています。

「ミントとバーン」で何を学びますか?

供給量の管理 ブラウザで直接実行するハンズオンコードでWeb3 & DApp Development Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Web3 & DApp Development Fundamentalsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのWeb3 & DApp Development Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「ミントとバーン」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このWeb3 & DApp Development Fundamentalsレッスンでコードを書いて実行できますか?

はい。すべてのWeb3 & DApp Development Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ERC-20標準
  2. トークンの実装
  3. Allowance
  4. ミントとバーン
← Web3 & DApp Development Fundamentalsに戻る