ERC規格(ERC-20、ERC-721)
代替可能トークン向けのERC-20や、非代替性トークン(NFT)向けのERC-721など、代表的なEthereum Request for Comments(ERC)規格を学びます。
「ERC規格(ERC-20、ERC-721)」はCoddyKit上の無料Web3 & DApp Development Fundamentalsレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはWeb3 & DApp Development Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Web3 & DApp Development Fundamentalsコースには全3レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
What are ERC Standards?
ERC stands for Ethereum Request for Comments. These are official proposals that define specific rules and functionalities for smart contracts on the Ethereum blockchain.
Think of them as blueprints or common agreements. They ensure that different contracts and applications can 'speak the same language' and interact seamlessly.
Understanding ERC-20 Tokens
An ERC-20 token is a standard for fungible tokens. Fungible means each unit is identical and interchangeable with another, just like regular currency.
If you have one dollar, it's the same as any other dollar. ERC-20 tokens are used for cryptocurrencies, stablecoins, and utility tokens.
ERC-20: Basic Operations
The ERC-20 standard defines a set of functions and events that all compliant tokens must implement. Key functions include:
totalSupply(): Returns the total number of tokens.balanceOf(address account): Gets the balance of an address.transfer(address recipient, uint256 amount): Sends tokens from the caller to a recipient.
ERC-20: Simple Transfer
Here's a simplified contract demonstrating the core idea of an ERC-20 token's transfer function. It manages balances and allows sending tokens.
Try deploying this in Remix and transferring tokens!
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleToken {
string public name = "MySimpleToken";
string public symbol = "MST";
uint8 public decimals = 18;
uint256 public totalSupply = 1000000 * (10 ** decimals);
mapping(address => uint256) public balances;
constructor() {
balances[msg.sender] = totalSupply;
}
function transfer(address recipient, uint256 amount)
public returns (bool)
{
require(balances[msg.sender] >= amount, "Insufficient balance");
balances[msg.sender] -= amount;
balances[recipient] += amount;
return true;
}
function balanceOf(address account)
public view returns (uint256)
{
return balances[account];
}
}ERC-20: Approve & TransferFrom
To allow other contracts (like decentralized exchanges) to spend tokens on your behalf, ERC-20 uses allowances:
approve(address spender, uint256 amount): Allows aspenderto withdraw up toamountfrom your account.transferFrom(address sender, address recipient, uint256 amount): Transfers tokens fromsendertorecipient, usually called by aspenderwho has an allowance.
Introducing ERC-721 NFTs
ERC-721 tokens are for non-fungible tokens (NFTs). Non-fungible means each token is unique and cannot be replaced by another.
Think of a unique piece of art or a specific collectible card. NFTs are used for digital art, unique game items, land in virtual worlds, and more.
ERC-721: Ownership & Transfers
The ERC-721 standard also defines specific functions:
ownerOf(uint256 tokenId): Returns the owner of a specific token ID.balanceOf(address owner): Returns the number of NFTs an owner has.safeTransferFrom(address from, address to, uint256 tokenId): Safely transfers a specific NFT from one address to another.
ERC-721: Simple NFT Minting
This contract shows a basic way to 'mint' (create) unique NFTs and track their ownership. Each NFT has a unique tokenId.
After deploying, try calling the mint function multiple times!
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleNFT {
string public name = "MySimpleNFT";
string public symbol = "SNFT";
uint256 private _nextTokenId;
mapping(uint256 => address) public ownerOf;
mapping(address => uint256) public balanceOf;
constructor() {
_nextTokenId = 0;
}
function mint(address recipient)
public returns (uint256)
{
_nextTokenId++;
uint256 newTokenId = _nextTokenId;
ownerOf[newTokenId] = recipient;
balanceOf[recipient]++;
return newTokenId;
}
}ERC-20 vs. ERC-721: Key Differences
Here's a quick comparison:
- Fungibility: ERC-20 tokens are fungible (interchangeable); ERC-721 tokens are non-fungible (unique).
- Uniqueness: ERC-20 tokens are tracked by quantity; ERC-721 tokens are tracked by unique IDs.
- Use Cases: ERC-20 for currencies, voting rights; ERC-721 for digital art, collectibles, deeds.
Identify the Standards
Which of the following statements correctly describe the characteristics or use cases of ERC-20 and ERC-721 tokens?
Recap: ERC Standards
We've explored two foundational Ethereum standards:
- ERC-20 for fungible tokens, ideal for currencies and utility tokens.
- ERC-721 for non-fungible tokens (NFTs), perfect for unique digital assets like art and collectibles.
These standards are crucial for interoperability and building a wide range of DApps on Ethereum.
よくある質問
「ERC規格(ERC-20、ERC-721)」レッスンは無料ですか?
はい。「ERC規格(ERC-20、ERC-721)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Web3 & DApp Development Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Web3 & DApp Development Fundamentalsコースには全3レッスンが含まれています。
「ERC規格(ERC-20、ERC-721)」で何を学びますか?
代替可能トークン向けのERC-20や、非代替性トークン(NFT)向けのERC-721など、代表的なEthereum Request for Comments(ERC)規格を学びます。 ブラウザで直接実行するハンズオンコードでWeb3 & DApp Development Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Web3 & DApp Development Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのWeb3 & DApp Development Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「ERC規格(ERC-20、ERC-721)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このWeb3 & DApp Development Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのWeb3 & DApp Development Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ERC規格(ERC-20、ERC-721)
- コントラクトのセキュリティベストプラクティス
- アップグレード可能なコントラクト