
Spesso quando parliamo di Smart Contracts e Solidity ci scontriamo con la parola ABI: in questo piccolo tutorial andremo a spiegare nel dettaglio il significato di ABI, il suo utilizzo e tutti i metodi per generare l'ABI!
ABI: Abstract Binary Interface
Quando parliamo di ABI parliamo della rappresentazione binaria dell'interfaccia di uno Smart Contract. Non è molto facile da capire nella sua definizione, proviamo quindi con un esempio pratico. Di seguito puoi trovare l'ABI di SplitPayment, uno degli Smart Contracts di OpenZeppelin, di cui abbiamo parlato in questo articolo!
Come puoi notare si tratta di uno schema JSON che rappresenta il nostro Smart Contract.
Puoi trovare le variabili e le diverse funzioni dello Smart Contract: ognuna con la propria descrizione. Ecco gli attributi che troverai nella tua ABI:
constantse true si tratterà di unacall, cioè una funzione eseguida da un nodo, senza spendere Gas! Se costant dovesse invece essere false, sarebbe una function (con un costo in Gas)inputsparametri della funzione, ognuno connameetypenamein cui viene inserito il nome della variabile o funzioneoutputsvalori di ritorno di una funzionepayablela funzione è payable? Tipo booleanostateMutability:nonpayableoviewtype, che può assumere il valore difunction,constructorofallback. Sono tre tipi di funzioni che possiamo trovare in uno Smart Contract.
Smart Contract, quando ci serve l'ABI?
L'ABI di uno Smart Contract ci servirà in diverse situazioni:- deploy di uno Smart Contract
- interazione con Web3
data della funzione new il bytecode del codice!
Esatto, tutto il codice che hai scritto verrà trasformato in bytes. Da qui nasce il secondo caso in cui ti servirà l'ABI: durante l'interazione tra Web3 e la nostra Blockchain!
Cosa avviene quindi nella Ethereum Virtual Machine quando chiamiamo un metodo del nostro Smart Contract? Andiamo a scoprirlo, sempre con un esempio.
Vogliamo chiamare la funzione claim(), che si occuperà di ritirare le nostre quote di Ethereum presenti nello Smart Contract! Ecco che entrerà in gioco la nostra ABI!
Andiamo a calcolare l'Hash della funzione claim attraverso la funzione keccak, che eseguirà un SHA3 della firma della funzione, quindi claim(). Ecco il risultato:
4e71d92d1cab44b435a6dcbe7dcfe75cf72953916cfa3842f5057ce194aa60e2
Un hash di 32 bytes, in formato esadecimale (cifre da 0-9 e A-F), di cui dobbiamo prendere i primi 4! 4e,71,d9 e 2d. Ecco l'identificativo della nostra funzione claim()!
Come generare e ottenere la nostra ABI?
Ora che hai capito la struttura, l'importanza e le funzioni dell'Abstract Binary Interface ti starai sicuramente chiedendo: come genero l'ABI del mio Smart Contract?
Ti consiglio di utilizzare una funzionalità di Remix IDE! Questo potente strumento di sviluppo ci permette di ottenere la nostra ABI facilmente, ecco come:
- Entra nel tuo Smart Contract e selezionalo dal menù a tendina
- Premi "Details"

Tasto "Dettagli" nella scheda "Compile" - Cerca e copia la sezione ABI attraverso l'icona della clipboard

Ecco la nostra ABI!
Conclusioni
Questo nuovo tutorial Solidity può definirsi concluso: abbiamo capito l'utilità della ABI, abbiamo visto la trasformazione di una funzione in bytecode e infine abbiamo imparato a genere le nostre ABI! Ricorda di entrare nel nostro gruppo Telegram per non perdere neanche un articolo!Posted from my blog with SteemPress : https://www.coiners.it/tutorial-solidity-cose-una-abi-e-come-generarla/
This user is on the @buildawhale blacklist for one or more of the following reasons: