Capitolo 5 di 9
Il token con OpenZeppelin
ERC-20 è lo standard dei token: un elenco di regole (saldo, trasferimento, autorizzazione a spendere) che permette a wallet e siti di trattare qualunque token allo stesso modo. Scriverlo da zero è un rischio inutile, perciò si usa la versione di OpenZeppelin, una libreria molto usata e controllata da molti esperti.
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract FuelToken is ERC20 {
constructor() ERC20("FuelToken", "FUEL") {}
}
importporta nel tuo file il contrattoERC20di OpenZeppelin.contract FuelToken is ERC20significa che il tuo contratto eredita tutto ciò che sa fare un ERC-20.ERC20("FuelToken", "FUEL")dà il nome e la sigla alla moneta.- Il corpo
{}è vuoto: non servono altre istruzioni per avere saldi e trasferimenti.
I decimali
Come per i prezzi, la blockchain lavora con numeri interi. Per rappresentare frazioni di token, ERC-20 usa decimals, di solito 18: il saldo scritto nel contratto è il numero di token moltiplicato per 1018. Quindi 1000000000000000000 significa «1 token» e 500000000000000000 significa «mezzo token».
Nel nostro progetto 1 token = 1 litro: avere 0,5 token significa «mezzo litro» sulla carta. Come il centesimo è la parte più piccola dell'euro, qui la parte più piccola è un miliardesimo di miliardesimo di litro.
Questo contratto per ora non crea nessun token: lo farà buy() nel prossimo capitolo.
Prova tu
Calcola a mano: quanti «pezzetti» (unità più piccole) sono 2,5 token? (Risposta: 2.500.000.000.000.000.000, cioè 2,5 × 1018.) Poi scrivi quanti pezzetti corrispondono a un decilitro, cioè 0,1 token.
Cosa hai imparato
- ERC-20 è lo standard comune dei token; OpenZeppelin ne offre una versione sicura.
- Ereditando da
ERC20bastano tre righe per avere un token. - Con 18 decimali il saldo è il numero di token per 1018; per noi 1 token è 1 litro.