Token-laajennukset
Pausable, Burnable.
Token-laajennukset on ilmainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.
Tokenien laajentaminen
Perusmuotoinen ERC-20 käsittelee vain siirtoja ja hyväksyntöjä. OpenZeppelin tarjoaa laajennuksia, jotka lisäävät ominaisuuksia perinnän avulla:
- Pausable — jäädyttää siirrot hätätilanteissa.
- Burnable — antaa haltijoiden tuhota tokeneita.
- Capped — pakottaa enimmäistarjonnan.
- Permit — mahdollistaa kaasumaksuttomat hyväksynnät allekirjoitusten avulla.
Yhdistäminen perinnän avulla
Yhdistäkää laajennukset luettelemalla useita kantasopimuksia:
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
contract MyToken is ERC20, ERC20Burnable {
constructor() ERC20("MyToken", "MTK") {}
}import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
contract MyToken is ERC20, ERC20Burnable {
constructor() ERC20("MyToken", "MTK") {}
}Burnable-tokenit
ERC20Burnable lisää kaksi funktiota:
burn(amount)— tuhoaa kutsujan omat tokenit.burnFrom(account, amount)— polttaa tokeneita tililtä, joka on antanut teille siihen hyväksynnän.
Polttaminen vähentää totalSupply-arvoa, jota voidaan hyödyntää deflatorisissa mekanismeissa.
// holder destroys their tokens
token.burn(ethers.parseEther("100"));Pausable-tokenit
ERC20Pausable mahdollistaa sen, että valtuutettu tili voi pysäyttää kaikki siirrot — tästä on hyötyä tietoturvapoikkeaman aikana:
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyToken is ERC20, ERC20Pausable, Ownable {
function pause() public onlyOwner { _pause(); }
function unpause() public onlyOwner { _unpause(); }
}import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyToken is ERC20, ERC20Pausable, Ownable {
function pause() public onlyOwner { _pause(); }
function unpause() public onlyOwner { _unpause(); }
}Miten pysäyttäminen toimii
Pysäytettynä siirrot kumoutuvat virheellä EnforcedPause. Pausable-laajennus kytkeytyy tokenin sisäiseen siirtologiikkaan, joten transfer, transferFrom, minttaus ja polttaminen estetään, kunnes unpause kutsutaan.
Käyttäkää pysäytystä harkiten — se keskittää hallinnan.
Funktioristiriitojen ratkaiseminen
Kun kaksi kantaluokkaa määrittelee saman sisäisen hook-funktion, Solidity edellyttää, että ylikirjoitatte funktion ja määritätte järjestyksen:
function _update(address from, address to, uint256 value)
internal override(ERC20, ERC20Pausable) {
super._update(from, to, value);
}Tämä kertoo kääntäjälle, miten perintähierarkia linearisoidaan.
function _update(address from, address to, uint256 value)
internal override(ERC20, ERC20Pausable) {
super._update(from, to, value);
}Rajoitettu kokonaistarjonta
ERC20Capped asettaa käyttöönoton yhteydessä määritetyn ehdottoman enimmäistarjonnan:
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
contract MyToken is ERC20Capped {
constructor()
ERC20("MyToken", "MTK")
ERC20Capped(1000000 * 10 ** 18) {}
}Kaikki minttaukset, jotka ylittäisivät enimmäismäärän, kumoutuvat.
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
contract MyToken is ERC20Capped {
constructor()
ERC20("MyToken", "MTK")
ERC20Capped(1000000 * 10 ** 18) {}
}Kaasuttomat hyväksynnät Permitillä
ERC20Permit mahdollistaa kulutuksen hyväksymisen ketjun ulkopuolisella allekirjoituksella sen sijaan, että käyttäjän pitäisi tehdä ketjussa approve-transaktio:
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
contract MyToken is ERC20, ERC20Permit {
constructor()
ERC20("MyToken", "MTK")
ERC20Permit("MyToken") {}
}Tämä parantaa käyttökokemusta poistamalla yhden transaktion tarpeen.
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
contract MyToken is ERC20, ERC20Permit {
constructor()
ERC20("MyToken", "MTK")
ERC20Permit("MyToken") {}
}Myös NFT-laajennukset
ERC-721:lle on vastaavia laajennuksia:
- ERC721Enumerable — käy läpi kaikki tokenit.
- ERC721URIStorage — tokenikohtaiset metadatan URI:t.
- ERC721Burnable / ERC721Pausable — samat ideat kuin ERC-20:ssä.
Perinnän avulla tapahtuva koostaminen toimii samalla tavalla.
Koostakaa vain tarvitsemanne
Jokainen laajennus lisää koodia, kaasukustannuksia ja hyökkäyspinta-alaa. Sisällyttäkää vain ominaisuudet, joita tokeninne todella tarvitsee:
- Harvemmat laajennukset tarkoittavat halvempaa käyttöönottoa ja pienempää hyökkäyspinta-alaa.
- Dokumentoikaa, miksi kukin laajennus on mukana.
Votes-laajennus
ERC20Votes seuraa äänivallan historiaa ottamalla saldoista tilannekuvan jokaisessa lohkossa, mikä mahdollistaa ketjussa tapahtuvan hallinnon:
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";Haltijat voivat delegoida äänensä, ja ehdotukset voivat kysyä aiemman äänivallan flash loan -manipulaation estämiseksi.
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";Pikatarkistus
Testatkaa ymmärrystänne token-laajennuksista.
Kertaus
Opitte koostamaan tokenien ominaisuuksia laajennusten avulla.
- Laajennukset lisäävät toiminnallisuutta moniperinnän avulla.
- Burnable tuhoaa tokeneita; Capped rajoittaa enimmäistarjontaa.
- Pausable jäädyttää siirrot hätätilanteissa.
- Permit mahdollistaa kaasuttomat, allekirjoitukseen perustuvat hyväksynnät.
- Ratkaiskaa hook-funktioiden ristiriidat ylikirjoittamalla ne, esimerkiksi
_update, ja sisällyttäkää vain tarvitsemanne ominaisuudet.
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 ”Token-laajennukset” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Token-laajennukset”. 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 ”Token-laajennukset”?
Pausable, Burnable. 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 3/4.
Kuinka kauan ”Token-laajennukset”-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
- Miksi OpenZeppelin
- Käyttöoikeuksien hallinta
- Token-laajennukset
- Päivitettävät sopimukset