Стандарт взаимозаменяемых токенов ERC-20
Разберитесь в спецификациях и возможностях стандарта ERC-20 для создания взаимозаменяемых токенов.
«Стандарт взаимозаменяемых токенов ERC-20» — бесплатный урок Blockchain Smart Contracts with Solidity на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Blockchain Smart Contracts with Solidity, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Blockchain Smart Contracts with Solidity содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Intro to Blockchain Tokens
Welcome to the world of blockchain tokens! Beyond cryptocurrencies like Ether, blockchains host many other digital assets.
These assets, often called 'tokens', can represent anything from digital currency to ownership of real-world items, or even voting rights in a decentralized organization.
Fungibility: Interchangeable Assets
A key concept for tokens is fungibility. What does it mean?
- Fungible: Each unit is identical and interchangeable with another. Like a dollar bill – one $1 bill is the same as any other $1 bill.
- Non-Fungible: Each unit is unique and cannot be replaced by another. Like a piece of art or a specific house.
ERC-20 tokens are fungible, meaning every token is equal to every other token of the same type.
Meet the ERC-20 Standard
ERC-20 (Ethereum Request for Comment 20) is a technical standard for fungible tokens on the Ethereum blockchain.
It defines a common set of rules that all compliant tokens must follow. This ensures they can interact seamlessly with wallets, exchanges, and other smart contracts.
Interoperability Through Standards
Why is a standard so important?
- Compatibility: Any wallet that supports ERC-20 can manage any ERC-20 token.
- Ecosystem Growth: Decentralized applications (dApps) can easily integrate different tokens.
- Predictable Behavior: Developers know exactly how an ERC-20 token will behave, making integration safer and faster.
Core Function: `totalSupply()`
The totalSupply() function returns the total number of tokens in existence. It's a public view function, meaning it doesn't change the blockchain state and costs no gas to call.
Try running this simple contract to see how totalSupply might be represented:
pragma solidity ^0.8.0;
contract SimpleTokenInfo {
uint256 public totalTokens = 1000; // Example supply
function totalSupply() public view returns (uint256) {
return totalTokens;
}
}Core Function: `balanceOf()`
The balanceOf(address account) function returns the token balance of a specific address. It helps you check how many tokens a user owns.
Let's add balanceOf to our example. The deployer will start with all tokens.
pragma solidity ^0.8.0;
contract SimpleTokenInfo {
uint256 public totalTokens = 1000;
mapping(address => uint256) public balances;
constructor() {
balances[msg.sender] = totalTokens; // Assign all to deployer
}
function totalSupply() public view returns (uint256) {
return totalTokens;
}
function balanceOf(address account) public view returns (uint256) {
return balances[account];
}
}Core Function: `transfer()`
The transfer(address recipient, uint256 amount) function allows the sender of the transaction to send tokens directly to another address.
This is the most common way to move tokens between users.
pragma solidity ^0.8.0;
contract SimpleTokenInfo {
uint256 public totalTokens = 1000;
mapping(address => uint256) public balances;
constructor() {
balances[msg.sender] = totalTokens;
}
function totalSupply() public view returns (uint256) {
return totalTokens;
}
function balanceOf(address account) public view returns (uint256) {
return balances[account];
}
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;
}
}Delegated Transfers: `approve()` & `allowance()`
ERC-20 also supports delegated transfers, where one user (the owner) allows another address (the spender) to move tokens on their behalf.
approve(address spender, uint256 amount): The owner grants permission to a spender to withdraw a specificamountof tokens.allowance(address owner, address spender): Returns the amount of tokens that thespenderis currently allowed to withdraw from theowner.
Executing Delegated Transfers: `transferFrom()`
Once an approve() call has been made, the designated spender can then use the transferFrom() function.
transferFrom(address sender, address recipient, uint256 amount): Allows a spender to transfer amount tokens from the sender's balance to the recipient, provided the spender has enough allowance from the sender.
Tracking Actions: ERC-20 Events
ERC-20 defines two standard events: Transfer and Approval. These events are crucial for off-chain applications (like wallets or block explorers) to track token movements and approvals without having to read the entire blockchain state.
They emit logs that can be efficiently indexed and queried.
pragma solidity ^0.8.0;
contract EventExample {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function demonstrateTransferEvent(address _to, uint256 _value) public {
// Imagine actual transfer logic here
emit Transfer(msg.sender, _to, _value);
}
function demonstrateApprovalEvent(address _spender, uint256 _value) public {
// Imagine actual approval logic here
emit Approval(msg.sender, _spender, _value);
}
}Check Your Understanding
The ERC-20 standard outlines specific functions that all compliant tokens must implement. Understanding these is crucial for working with tokens.
ERC-20: Your Token Blueprint
You've now learned about the ERC-20 Fungible Token Standard! It's the blueprint for most interchangeable tokens on Ethereum.
- It defines core functions like
totalSupply(),balanceOf(), andtransfer(). - It enables delegated transfers with
approve(),allowance(), andtransferFrom(). - Standard events
TransferandApprovalhelp track token activity.
This standard ensures that all ERC-20 tokens are compatible, making the Ethereum ecosystem robust and easy to navigate. Next, we'll dive into implementing your own ERC-20 token!
Часто задаваемые вопросы
Урок «Стандарт взаимозаменяемых токенов ERC-20» бесплатный?
Да — полный текст урока «Стандарт взаимозаменяемых токенов ERC-20» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Blockchain Smart Contracts with Solidity, подпишись на CoddyKit PRO. Курс Blockchain Smart Contracts with Solidity содержит 4 уроков всего.
Чему я научусь в уроке «Стандарт взаимозаменяемых токенов ERC-20»?
Разберитесь в спецификациях и возможностях стандарта ERC-20 для создания взаимозаменяемых токенов. Ты практикуешь Blockchain Smart Contracts with Solidity с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Blockchain Smart Contracts with Solidity?
Предыдущий опыт не требуется. Blockchain Smart Contracts with Solidity на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Стандарт взаимозаменяемых токенов ERC-20»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Blockchain Smart Contracts with Solidity?
Да. Каждый урок Blockchain Smart Contracts with Solidity включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стандарт взаимозаменяемых токенов ERC-20
- Реализация токена ERC-20
- Невзаимозаменяемые токены ERC-721 (NFT)
- Мульти-токенный стандарт ERC-1155