Desimal
Solidity tidak mendukung angka desimal (floating point). Maka dari itu, token ERC20 menyimulasikan desimal dengan cara membagi nilai integer dengan faktor 10^decimals.
Nilai default decimals() di OpenZeppelin adalah 18, sama seperti ETH (1 ETH = 10^18 wei). Artinya:
- Jika kamu ingin merepresentasikan
1 MTK, nilainya di kontrak adalah1_000_000_000_000_000_000(atau1e18). - Jika kamu mint
100 * 10**18, wallet pengguna akan menampilkan100 MTK.
Kamu bisa override fungsi decimals() jika ingin menggunakan nilai lain:
function decimals() public pure override returns (uint8) {
return 6; // seperti USDC
}