Emissão e queima
Gerenciamento da oferta
Emissão e queima é uma aula grátis de Web3 & DApp Development Fundamentals no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Web3 & DApp Development Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Web3 & DApp Development Fundamentals inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
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
Perguntas Frequentes
A aula “Emissão e queima” é grátis?
Sim — o texto completo de “Emissão e queima” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Web3 & DApp Development Fundamentals, atualize para CoddyKit PRO. O curso de Web3 & DApp Development Fundamentals inclui 4 aulas no total.
O que vou aprender em “Emissão e queima”?
Gerenciamento da oferta Você pratica Web3 & DApp Development Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Web3 & DApp Development Fundamentals?
Nenhuma experiência prévia é necessária. Web3 & DApp Development Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Emissão e queima”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Web3 & DApp Development Fundamentals?
Sim. Cada aula de Web3 & DApp Development Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O padrão ERC-20
- Implementação de um token
- Permissões
- Emissão e queima