Asas Pembangunan Web3 & DApp · Pelajaran

Sambungan Token

Pausable, Burnable

Pelajaran 3 daripada 413 langkah

Sambungan Token ialah pelajaran Asas Pembangunan Web3 & DApp percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Pembangunan Web3 & DApp, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.

Melanjutkan Token

ERC-20 asas hanya mengendalikan pemindahan dan kelulusan. OpenZeppelin menyediakan sambungan yang menambahkan ciri melalui pewarisan:

  • Pausable — bekukan pemindahan semasa kecemasan.
  • Burnable — benarkan pemegang memusnahkan token.
  • Capped — kuatkuasakan bekalan maksimum.
  • Permit — kelulusan tanpa gas melalui tandatangan.

Menggabungkan melalui Pewarisan

Anda menggabungkan sambungan dengan menyenaraikan beberapa kontrak asas:

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") {}
}

Token Boleh Dimusnahkan

ERC20Burnable menambahkan dua fungsi:

  • burn(amount) — memusnahkan token milik pemanggil sendiri.
  • burnFrom(account, amount) — memusnahkan token daripada akaun yang telah memberikan kelulusan kepada Anda.

Pemusnahan mengurangkan totalSupply, yang boleh digunakan untuk mekanisme deflasi.

// holder destroys their tokens
token.burn(ethers.parseEther("100"));

Token Boleh Dijeda

ERC20Pausable membolehkan akaun yang diberi kuasa menghentikan semua pemindahan — berguna semasa insiden keselamatan:

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(); }
}

Cara Jeda Berfungsi

Apabila dijedakan, pemindahan akan dibatalkan dengan EnforcedPause. Sambungan Pausable dipautkan pada logik pemindahan dalaman token, jadi transfer, transferFrom, pencetakan dan pembakaran semuanya disekat sehingga unpause dipanggil.

Gunakan penjedaan secara berhemat — ia memusatkan kawalan.

Menyelesaikan Konflik Fungsi

Apabila dua induk mentakrifkan cangkuk dalaman yang sama, Solidity memerlukan anda mengatasinya dan menentukan susunannya:

function _update(address from, address to, uint256 value) internal override(ERC20, ERC20Pausable) { super._update(from, to, value); }

Ini memberitahu pengkompil cara melinearkan pewarisan.

function _update(address from, address to, uint256 value)
    internal override(ERC20, ERC20Pausable) {
    super._update(from, to, value);
}

Bekalan Terhad

ERC20Capped menguatkuasakan bekalan maksimum tetap yang ditetapkan semasa penggunaan:

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol"; contract MyToken is ERC20Capped { constructor() ERC20("MyToken", "MTK") ERC20Capped(1000000 * 10 ** 18) {} }

Sebarang pencetakan yang menyebabkan had dilebihi akan dibatalkan.

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";

contract MyToken is ERC20Capped {
    constructor()
        ERC20("MyToken", "MTK")
        ERC20Capped(1000000 * 10 ** 18) {}
}

Kelulusan Tanpa Gas dengan Permit

ERC20Permit membolehkan pengguna meluluskan perbelanjaan menggunakan tandatangan luar rantaian dan bukannya transaksi kelulusan dalam rantaian:

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; contract MyToken is ERC20, ERC20Permit { constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {} }

Ini meningkatkan pengalaman pengguna dengan menghapuskan satu transaksi.

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";

contract MyToken is ERC20, ERC20Permit {
    constructor()
        ERC20("MyToken", "MTK")
        ERC20Permit("MyToken") {}
}

Sambungan untuk NFT Juga

ERC-721 mempunyai sambungan yang sepadan:

  • ERC721Enumerable — mengiterasi semua token.
  • ERC721URIStorage — URI metadata bagi setiap token.
  • ERC721Burnable / ERC721Pausable — idea yang sama seperti ERC-20.

Corak menggabungkan ciri melalui pewarisan adalah sama.

Gabungkan Hanya yang Diperlukan

Setiap sambungan menambah kod, kos gas dan permukaan serangan. Sertakan hanya ciri yang benar-benar diperlukan oleh token anda:

  • Lebih sedikit sambungan bermakna penggunaan yang lebih murah dan permukaan serangan yang lebih kecil.
  • Dokumentasikan sebab setiap sambungan disertakan.

Sambungan Undian

ERC20Votes menjejaki kuasa undian sejarah dengan mengambil petikan baki pada setiap blok, sekali gus membolehkan tadbir urus dalam rantaian:

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";

Pemegang boleh mewakilkan undi mereka, dan cadangan boleh menanyakan kuasa undian terdahulu untuk mencegah manipulasi pinjaman kilat.

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";

Semakan Pantas

Uji pemahaman anda tentang sambungan token.

Rumusan

Anda telah mempelajari cara menggabungkan ciri token dengan sambungan.

  • Sambungan menambah tingkah laku melalui pewarisan berbilang.
  • Burnable memusnahkan token; Capped menguatkuasakan bekalan maksimum.
  • Pausable membekukan pemindahan semasa kecemasan.
  • Permit membolehkan kelulusan tanpa gas berasaskan tandatangan.
  • Selesaikan konflik cangkuk dengan mengatasinya, contohnya _update, dan sertakan hanya perkara yang diperlukan.
Percuma untuk bermula

Pelajari Asas Pembangunan Web3 & DApp dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
105

Soalan Lazim

Adakah pelajaran “Sambungan Token” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Pembangunan Web3 & DApp, termasuk “Sambungan Token”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Sambungan Token”?

Pausable, Burnable Anda berlatih Asas Pembangunan Web3 & DApp menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Asas Pembangunan Web3 & DApp?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Pembangunan Web3 & DApp di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Sambungan Token” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Pembangunan Web3 & DApp ini?

Ya. Setiap pelajaran Asas Pembangunan Web3 & DApp menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa OpenZeppelin
  2. Kawalan Capaian
  3. Sambungan Token
  4. Kontrak Boleh Dinaik Taraf
← Kembali ke Asas Pembangunan Web3 & DApp