Lβobiettivo di oggi Γ¨ creare un nuovo Token ERC20 con Solidity sulla Blockchain Ethereum.
Figo! Potremmo fare il token dedicato a Squid Game!
Calma amico, lo hanno giΓ fatto ed Γ¨ finita maleβ¦
Potremmo cambiare serie TV! Facciamo il Game of thrones token!
Per dimostrare la facilitΓ con cui si puΓ² creare la propria (shit)coin, mettiamo un timer 15 minuti e via.
Preparare lβecosistema di sviluppo
Per prima cosa Γ¨ necessario preparare quanto serve per lo sviluppo quindi:
- Remix: IDE per sviluppare smart contract in Solidity per chain EVM compatibili
- Ganache: Blockchain locale per il testing
- OpenZeppelin: libreria open source per lo sviluppo di token ERC20 e ERC721
Lavorare con file in locale
Remix permette di lavorare su dei file nella sua cache del browser. Per un token serio come il nostro Γ¨ necessario avere dei file in locale (magari in una repositoryβ¦) che si sincronizzano automaticamente con Remix.
Per lavorare con file in locale Γ¨ necessario il pacchetto NPM chiamato remixd
Una volta installato npm
scrivere su terminale
npm install -g @remix-project/remixd
per installare remixd. Una volta fatto Γ¨ necessario lanciarlo in background indicando la cartella che si vuole utilizzare per sviluppare, usando la sintassi
remixd -s <Path completo della cartella a cui puntare> -u https://remix.ethereum.org/
Una volta lanciato il demone sul proprio PC andare su Remix nel browser e nei workspace selezionare βlocalhostβ.
Dopo aver premuto βConnectβ appariranno i file presenti in locale.
Deployare e testare in una Blockchain locale
Il modo piΓΉ comodo per deployare e testare Γ¨ utilizzare una Blockchain locale. Per farlo Γ¨ comodo utilizzare Ganache che, una volta installato, permette di far girare sul proprio pc in localhost su una determinata porta una Blockchain Ethereum.
Da Remix Γ¨ possibile deployare su tale Blockchain indicando come Environment βWeb3 Providerβ e fornendo la porta di Ganache (default 7545).
Sviluppo del token
Ok, ora che tutto il nostro ecosistema per lo sviluppo Γ¨ pronto possiamo iniziare.
Abbiamo solo 15 minuti, non possiamo perdere tempo a scrivere codice!
Nessun problema, per lo sviluppo del token ci pensa OpenZeppelin e il suo Contracts Wizard!
Aprendo il link troviamo:
- Name: nome del token. Nel nostro caso direi che va benissimo GameOfThrones
- Symbol: simbolo del token. Formato da 3 lettere, nel nostro caso direi che GOT Γ¨ perfetto
- Premint: numero di token iniziali che vengono forniti automaticamente al creatore dello smart contract. Qualora il token non sia mintabile questo valore Γ¨ la max supply del token
- Features: caratteristiche del token, opzionali.
- Access control: possibilitΓ di avere un solo owner del token oppure vari address ognuno con il suo ruolo e i suoi permessi
- Upgradeability: gli smart contract, essendo su Blockchain, sono immutabili. Questo puΓ² essere evitato se dono deployati su un proxy aggiornabile.
Per il nostro semplicissimo token scegliamo solo Pausable come feature (lβowner puΓ² mettere in pausa lo smart contract) e Ownable come Role (lβaddress che ha fatto il deploy del contratto Γ¨ salvato come owner e puΓ² chiamare delle funzioni speciali).
Indichiamo un premint di 10000 token senza possibilitΓ di minting ulteriore, sarΓ quindi il nostro max supply et voilΓ !
Interfaccia di OpenZeppelin con il nostro GOT token
Copiamo il tutto su Remix e siamo pronti al deploy!
Deploy
Il deploy puΓ² avvenire su 3 diverse chain
- Blockchain vere: Ethereum mainnet
- Blockchain di test: Ropsten, GΓΆrli
- Blockchain locali: Ganache
Dato che non vogliamo consumare gas fee utilizzeremo Ropsten test network.
Per fare questo Γ¨ necessario andare nella sezione Deploy di Remix, indicare Injected Web3 e autorizzare con MetaMask (dopo essere passati, su MetaMask, alla chain di test ovviamenteβ¦).
- Ambiente dove voglio inviare il contratto. Injected Web3 indica che lo sto inviando ad una Blockchain vera tramite MetaMask; Web3 Provider su una Blockchain locale come Ganache. La Blockchain dove verrΓ aggiunto tale script sarΓ quella indicata in MetaMask se Injected Web3 oppure sarΓ la Blockchain standard di Ganache;
- Address creatore dello smart contract, sarΓ quindi anche lβowner
- Nome dello smart contract da deployare;
- Deploy! Permette di trasferire lo smart contract sulla Blockchain
Una volta premuto βDeployβ comparirΓ lβalert di MetaMask per autorizzare la transazione e pagare le gas fee.
Gas fee da pagare per poter mettere il proprio smart contract sulla chain
Confermiamo e via! Il nostro token Γ¨ sulla Blockchain e MetaMask fornisce il link univoco alla transazione.
Andando a vedere la transazione troviamo molte informazioni interessanti:
- Address del wallet creatore dello smart contract;
- Indirizzo univoco dello smart contract che gestirΓ il token GOT
- Transazione di minting dei 10000 token GOT, quindi un passaggio dallβaddress null
- Al mio address
- Di 10000 token GOT.
Cliccando sul token si apre la pagina riepilogativa del token che ne indica la max supply, gli holder, le transazioni e lβidentificativo univoco del token.
Andando a copiare tale id e inseriamolo in MetaMask tramite βimport tokenβ
Eccolo! Il nostro bellissimo GOT token Γ¨ stato aggiunto a MetaMask.
Andando a copiare lβaddress del contract in Remix compariranno tutti i metodi public dello standard ERC20. Il metodo transfer, per esempio, permette di trasferire una determinata somma allβaddress indicato.
Conclusioni
Abbiamo visto come sia semplicissimo sviluppare e deployare un token ERC20 sulla Blockchain Ethereum. Ovviamente nessun token serio sarΓ formato dalle 10 righe di codice fornite da un wizard; perΓ² non siamo troppo lontaniβ¦
Capire come sviluppare un token Γ¨ una ottima difesa intellettuale contro gli scam, le shitcoin e le piattaforme copincollate. State attenti prima di investire soldi o tempo in un progetto.
A proposito, vi servono dei GOT token?