Fitur-Fitur yang Bisa Ditambahkan ke Token Digital Kosmonuts

Lanjut…. sebelumnya kosmonuts sudah bikin basic token, berikutnya yuk tambahin fitur-fitur yang mungkin dibutuhin.


1. Minting (Mencetak Token Baru)

Fitur ini memungkinkan kosmonuts mencetak token baru setelah token pertama kali dibuat. Cocok banget kalau kosmonuts mau nambah pasokan token di masa depan.

Cara Tambahkan:

  • Tambahkan fungsi mint di smart contract kosmonuts :
    function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); }
  • Pastikan kosmonuts menambahkan modifier onlyOwner agar hanya pemilik contract yang bisa mencetak token.

2. Burning (Membakar Token)

Fitur ini memungkinkan pengguna atau pemilik contract untuk “membakar” (menghapus) token dari sirkulasi. Berguna banget kalau kosmonuts mau mengurangi pasokan token.

Cara Tambahkan:

  • Tambahkan fungsi burn di smart contract kosmonuts :
    function burn(uint256 amount) public { _burn(msg.sender, amount); }

3. Pausable (Menghentikan Sementara Transaksi)

Fitur ini memungkinkan kosmonuts menghentikan sementara semua transaksi token. Misalnya, kalau ada masalah keamanan atau maintenance.

Cara Tambahkan:

  • Import library Pausable dari OpenZeppelin:
    import "@openzeppelin/contracts/security/Pausable.sol";
  • Tambahkan modifier whenNotPaused ke fungsi transfer:
    function transfer(address to, uint256 amount) public whenNotPaused override returns (bool) { return super.transfer(to, amount); }
  • Tambahkan fungsi pause dan unpause:
    function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); }

4. Cap (Batas Maksimal Supply)

Fitur ini membatasi jumlah maksimal token yang bisa dicetak. Cocok buat token yang nggak mau inflasi.

Cara Tambahkan:

  • Gunakan library ERC20Capped dari OpenZeppelin:
    import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
  • Modifikasi constructor untuk menambahkan cap:
    constructor(uint256 cap) ERC20("MyToken", "MTK") ERC20Capped(cap * 10 ** decimals()) { _mint(msg.sender, cap * 10 ** decimals()); }

5. Allowance dan TransferFrom (Transfer dengan Izin)

Fitur ini memungkinkan pengguna mengizinkan orang lain untuk mentransfer token atas nama mereka. Berguna banget buat aplikasi DeFi.

Cara Tambahkan:

  • Fungsi ini sudah otomatis ada di ERC20, tapi kosmonuts bisa modifikasi sesuai kebutuhan:
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, allowance(sender, msg.sender) - amount); return true; }

6. Role-Based Access Control (RBAC)

Fitur ini memungkinkan kosmonuts mengatur siapa saja yang bisa mengakses fungsi tertentu di smart contract. Misalnya, hanya admin yang bisa mencetak token.

Cara Tambahkan:

  • Import library AccessControl dari OpenZeppelin:
    import "@openzeppelin/contracts/access/AccessControl.sol";
  • Tambahkan role dan atur hak akses:
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); constructor() ERC20("MyToken", "MTK") { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(MINTER_ROLE, msg.sender); } function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) { _mint(to, amount); }

7. Snapshot (Mengambil “Foto” Saldo Token)

Fitur ini memungkinkan kosmonuts mengambil “foto” saldo token pengguna di waktu tertentu. Berguna buat sistem airdrop atau voting.

Cara Tambahkan:

  • Import library ERC20Snapshot dari OpenZeppelin:
    import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Snapshot.sol";
  • Modifikasi contract kosmonuts :
    contract MyToken is ERC20Snapshot { constructor() ERC20("MyToken", "MTK") {} function snapshot() public onlyOwner { _snapshot(); } }

8. Upgradeable Contract (Kontrak yang Bisa Di-Upgrade)

Fitur ini memungkinkan kosmonuts meng-upgrade smart contract tanpa kehilangan data. Cocok buat proyek yang masih berkembang.

Cara Tambahkan:

  • Gunakan library @openzeppelin/contracts-upgradeable:
    import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
  • Modifikasi contract kosmonuts :
    contract MyToken is ERC20Upgradeable { function initialize() public initializer { __ERC20_init("MyToken", "MTK"); _mint(msg.sender, 1000000 * 10 ** decimals()); } }

Cara Deploy Fitur-Fitur Ini di Remix

  1. Buka Remix IDE di https://remix.ethereum.org/.
  2. Compile smart contract kosmonuts .
  3. Deploy ke jaringan BSC Testnet atau Mainnet.
  4. Interaksi dengan contract menggunakan panel Deployed Contracts.

Tips Tambahan

  • Test Dulu: Selalu tes smart contract kosmonuts di Testnet sebelum deploy ke Mainnet.
  • Verifikasi Contract: Setelah deploy, verifikasi contract kosmonuts di BscScan.
  • Baca Dokumentasi: OpenZeppelin punya dokumentasi lengkap di https://docs.openzeppelin.com/.

Done.

About Denny

Motobike & food lovers. Father of four. Workin' on some linux & mikrotik servers. Just simply, enjoyable journey.

Leave a Comment

You must be logged in to post a comment.