Web3:n ja DApp-sovellusten kehityksen perusteet · Oppitunti

Tokenin toteuttaminen

transfer ja approve.

Oppitunti 2/413 vaihetta

Tokenin toteuttaminen on ilmainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.

Tokenin rakentaminen

Toteutatte nyt ERC-20-tokenin ytimen alusta alkaen. Sisäisen toiminnan ymmärtäminen auttaa korjaamaan ja auditoimaan oikeita tokeneita, vaikka käyttäisitte myöhemmin kirjastoja.

Keskitymme tilaan sekä funktioihin transfer ja approve.

Keskeiset tilamuuttujat

Tokenin on seurattava saldoja ja kokonaismäärää. Saldoja säilytetään osoitteesta määrään muodostuvassa mapping-rakenteessa.

<code>contract Token {
    string public name = 'MyToken';
    string public symbol = 'MTK';
    uint8 public decimals = 18;
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;
}</code>

Rakentaja

Rakentaja luo alkuperäisen tarjonnan ja antaa sen käyttöönottajalle. Kasvatamme arvoa totalSupply ja hyvitetään luojan saldo.

<code>constructor(uint256 initialSupply) {
    totalSupply = initialSupply;
    balanceOf[msg.sender] = initialSupply;
}</code>

Tapahtumat

Määritelkää kaksi pakollista tapahtumaa. Tuotamme Transfer-tapahtuman jokaisen siirron yhteydessä ja Approval-tapahtuman, kun käyttöoikeus asetetaan.

<code>event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);</code>

transfer-funktion toteuttaminen

transfer-funktio siirtää tokeneita kutsujalta vastaanottajalle. Sen on tarkistettava, että kutsujalla on riittävä saldo, ja tuotettava Transfer-tapahtuma.

<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>

Nollaosoitetta vastaan suojautuminen

Tokenien lähettäminen osoitteeseen address(0) tuhoaa ne käytännössä vahingossa. Monet toteutukset hylkäävät tällaisen siirron nimenomaisesti.

<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-mapping

Valtuutettujen siirtojen tukemiseksi lisäämme sisäkkäisen mapping-rakenteen: omistajasta käyttäjään ja tästä hyväksyttyyn määrään.

<code>mapping(address => mapping(address => uint256)) public allowance;</code>

approve-funktion toteuttaminen

approve-funktio antaa kutsujalle mahdollisuuden valtuuttaa käyttäjän siirtämään enintään tietyn määrän hänen tokeneitaan. Se tallentaa käyttöoikeuden ja tuottaa Approval-tapahtuman.

<code>function approve(address spender, uint256 amount) public returns (bool) {
    allowance[msg.sender][spender] = amount;
    emit Approval(msg.sender, spender, amount);
    return true;
}</code>

Ylivuotojen turvallisuus

Solidityn versiosta 0.8 lähtien laskutoimitukset peruuttavat suorituksen automaattisesti yli- ja alivuodon yhteydessä. transfer-funktion vähennyslasku on turvallinen: jos saldo on liian pieni, suoritus peruutetaan, vaikka nimenomainen require antaakin selkeämmän virheen.

Miksi palautetaan bool

Standardi määrittelee bool-palautusarvon yhteensopivuuden vuoksi. Palautamme onnistumisen yhteydessä arvon true. Virheen sattuessa peruutamme suorituksen, mikä on nykyinen käytäntö ja turvallisempaa kuin arvon false palauttaminen hiljaisesti.

Kokonaisuuden yhdistäminen

Kun tila, tapahtumat sekä transfer ja approve ovat paikoillaan, käytössänne on toimiva vaihdettava token. Seuraavassa oppitunnissa lisäämme transferFrom-funktion käyttöoikeusketjun viimeistelemiseksi.

<code>// state + constructor + events + transfer + approve
// = a minimal working ERC-20</code>

Pikakertaus

Testatkaa ymmärrystänne tokenin toteuttamisesta.

Kertaus

Toteutitte ERC-20-tokenin ytimen:

  • Tila: name, symbol, decimals, totalSupply ja balanceOf-mapping
  • Rakentaja luo alkuperäisen tarjonnan käyttöönottajalle
  • transfer tarkistaa saldon, päivittää tilan ja tuottaa Transfer-tapahtuman
  • approve tallentaa käyttöoikeuden ja tuottaa Approval-tapahtuman
  • Suoja nollaosoitetta vastaan ja Solidity 0.8:n ylivuotosuojaus
Aloita maksutta

Opi Web3:n ja DApp-sovellusten kehityksen perusteet tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
29
Oppitunnit
105

Usein kysytyt kysymykset

Onko oppitunti ”Tokenin toteuttaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Tokenin toteuttaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tokenin toteuttaminen”?

transfer ja approve. Harjoittelet Web3:n ja DApp-sovellusten kehityksen perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Web3:n ja DApp-sovellusten kehityksen perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Tokenin toteuttaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunnilla?

Kyllä. Jokainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. ERC-20-standardi
  2. Tokenin toteuttaminen
  3. Sallitut käyttömäärät
  4. Lyöminen ja polttaminen
← Takaisin: Web3:n ja DApp-sovellusten kehityksen perusteet