Implementere en token
transfer og approve
Implementere en token er en gratis leksjon i Grunnleggende om Web3- og DApp-utvikling på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om Web3- og DApp-utvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Bygging av et token
Nå skal De implementere kjernen i et ERC-20-token fra bunnen av. Når De forstår det interne, blir det enklere å feilsøke og revidere ekte tokens, selv når De senere bruker biblioteker.
Vi fokuserer på tilstanden, transfer og approve.
Kjernens tilstandsvariabler
Et token må holde oversikt over saldoer og total forsyning. Saldoer lagres i en mapping fra adresse til beløp.
<code>contract Token {
string public name = 'MyToken';
string public symbol = 'MTK';
uint8 public decimals = 18;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
}</code>Konstruktøren
Konstruktøren oppretter en opprinnelig forsyning til den som distribuerer kontrakten. Vi øker totalSupply og krediterer oppretterens saldo.
<code>constructor(uint256 initialSupply) {
totalSupply = initialSupply;
balanceOf[msg.sender] = initialSupply;
}</code>Eventene
Erklær de to obligatoriske eventene. Vi sender ut Transfer ved hver overføring og Approval når en allowance settes.
<code>event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);</code>Implementering av transfer
transfer-funksjonen flytter tokens fra den som kaller funksjonen, til en mottaker. Den må kontrollere at kalleren har tilstrekkelig saldo og sende ut Transfer-eventen.
<code>function transfer(address to, uint256 amount) public returns (bool) {
require(balanceOf[msg.sender] >= amount, 'insufficient balance');
balanceOf[msg.sender] -= amount;
balanceOf[to] += amount;
emit Transfer(msg.sender, to, amount);
return true;
}</code>Beskyttelse mot nulladressen
Å sende tokens til address(0) ødelegger dem i praksis ved et uhell. Mange implementasjoner avviser dette uttrykkelig.
<code>function transfer(address to, uint256 amount) public returns (bool) {
require(to != address(0), 'transfer to zero');
require(balanceOf[msg.sender] >= amount, 'insufficient');
balanceOf[msg.sender] -= amount;
balanceOf[to] += amount;
emit Transfer(msg.sender, to, amount);
return true;
}</code>Allowance-mappingen
For å støtte delegerte overføringer legger vi til en nestet mapping: eier til spender til godkjent beløp.
<code>mapping(address => mapping(address => uint256)) public allowance;</code>Implementering av approve
approve-funksjonen lar kalleren gi en spender tillatelse til å flytte opptil et bestemt antall av kalleren sine tokens. Den lagrer allowancen og sender ut Approval.
<code>function approve(address spender, uint256 amount) public returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}</code>Sikkerhet mot overflow
Siden Solidity 0.8 gjør aritmetikk automatisk revert ved overflow og underflow. Subtraksjonen i transfer er trygg: Hvis saldoen er for lav, gjør den revert, selv om den uttrykkelige require-sjekken gir en tydeligere feilmelding.
Hvorfor returnere bool
Standarden angir en bool-returverdi av hensyn til kompatibilitet. Vi returnerer true ved suksess. Ved feil gjør vi revert, noe som er moderne konvensjon og tryggere enn å returnere false i stillhet.
Sette alt sammen
Med tilstand, events, transfer og approve på plass har De et fungerende fungibelt token. I neste leksjon legger vi til transferFrom for å fullføre allowance-flyten.
<code>// state + constructor + events + transfer + approve
// = a minimal working ERC-20</code>Hurtigsjekk
Test forståelsen Deres av hvordan et token implementeres.
Oppsummering
De har implementert kjernen i et ERC-20-token:
- Tilstand: name, symbol, decimals, totalSupply og balanceOf-mapping
- Konstruktøren oppretter den opprinnelige forsyningen til den som distribuerer kontrakten
transferkontrollerer saldoen, oppdaterer tilstanden og sender utTransferapprovelagrer en allowance og sender utApproval- Beskytt mot nulladressen og stol på overflow-sikkerheten i 0.8
Lær deg Grunnleggende om Web3- og DApp-utvikling med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 29
- Leksjoner
- 105
Ofte stilte spørsmål
Er leksjonen «Implementere en token» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om Web3- og DApp-utvikling, inkludert «Implementere en token», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Implementere en token»?
transfer og approve Du øver på Grunnleggende om Web3- og DApp-utvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om Web3- og DApp-utvikling?
Ingen tidligere erfaring er nødvendig. Grunnleggende om Web3- og DApp-utvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Implementere en token»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om Web3- og DApp-utvikling-leksjonen?
Ja. Alle Grunnleggende om Web3- og DApp-utvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- ERC-20-standarden
- Implementere en token
- Tillatelser
- Minting og brenning