Librerie di contratti intelligenti
Ultimo aggiornamento della pagina: 21 agosto 2025
Non è necessario scrivere da zero ogni contratto intelligente del tuo progetto. Sono disponibili molte librerie di contratti intelligenti open source che forniscono blocchi di costruzione riutilizzabili per il tuo progetto, evitandoti di dover reinventare la ruota.
Prerequisiti
Prima di tuffarti nelle librerie di contratti intelligenti, è una buona idea avere una buona comprensione della struttura di un contratto intelligente. Dai un'occhiata all'anatomia dei contratti intelligenti se non l'hai ancora fatto.
Cosa c'è in una libreria
Di solito puoi trovare due tipi di blocchi di costruzione nelle librerie di contratti intelligenti: comportamenti riutilizzabili che puoi aggiungere ai tuoi contratti e implementazioni di vari standard.
Comportamenti
Quando scrivi contratti intelligenti, c'è una buona probabilità che ti ritroverai a scrivere schemi simili più e più volte, come assegnare un indirizzo admin per eseguire operazioni protette in un contratto, o aggiungere un pulsante di pausa di emergenza in caso di un problema imprevisto.
Le librerie di contratti intelligenti di solito forniscono implementazioni riutilizzabili di questi comportamenti come librerie (opens in a new tab) o tramite ereditarietà (opens in a new tab) in Solidity.
Ad esempio, di seguito è riportata una versione semplificata del contratto Ownable (opens in a new tab) dalla libreria OpenZeppelin Contracts (opens in a new tab), che designa un indirizzo come proprietario di un contratto e fornisce un modificatore per limitare l'accesso a un metodo solo a quel proprietario.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Mostra tuttoPer utilizzare un blocco di costruzione come questo nel tuo contratto, dovresti prima importarlo e poi estenderlo nei tuoi contratti. Questo ti consentirà di utilizzare il modificatore fornito dal contratto base Ownable per proteggere le tue funzioni.
1import ".../Ownable.sol"; // Percorso della libreria importata23contract MyContract is Ownable {4 // La seguente funzione può essere chiamata solo dal proprietario5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Un altro esempio popolare è SafeMath (opens in a new tab) o DsMath (opens in a new tab). Queste sono librerie (al contrario dei contratti base) che forniscono funzioni aritmetiche con controlli di overflow, che non sono forniti dal linguaggio. È una buona pratica utilizzare una di queste librerie invece delle operazioni aritmetiche native per proteggere il tuo contratto dagli overflow, che possono avere conseguenze disastrose!
Standard
Per facilitare la componibilità e l'interoperabilità, la comunità di Ethereum ha definito diversi standard sotto forma di ERC. Puoi leggere di più al riguardo nella sezione degli standard.
Quando includi un ERC come parte dei tuoi contratti, è una buona idea cercare implementazioni standard piuttosto che cercare di crearne di tue. Molte librerie di contratti intelligenti includono implementazioni per gli ERC più popolari. Ad esempio, l'onnipresente standard per token fungibili ERC20 può essere trovato in HQ20 (opens in a new tab), DappSys (opens in a new tab) e OpenZeppelin (opens in a new tab). Inoltre, alcuni ERC forniscono anche implementazioni canoniche come parte dell'ERC stesso.
Vale la pena menzionare che alcuni ERC non sono a sé stanti, ma sono aggiunte ad altri ERC. Ad esempio, l'ERC2612 (opens in a new tab) aggiunge un'estensione all'ERC20 per migliorarne l'usabilità.
Come aggiungere una libreria
Fai sempre riferimento alla documentazione della libreria che stai includendo per istruzioni specifiche su come includerla nel tuo progetto. Diverse librerie di contratti Solidity sono pacchettizzate usando npm, quindi puoi semplicemente eseguire npm install. La maggior parte degli strumenti per la compilazione dei contratti cercherà le librerie di contratti intelligenti nel tuo node_modules, quindi puoi fare quanto segue:
1// Questo caricherà la libreria @openzeppelin/contracts dai tuoi node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Indipendentemente dal metodo che usi, quando includi una libreria, tieni sempre d'occhio la versione del linguaggio. Ad esempio, non puoi usare una libreria per Solidity 0.6 se stai scrivendo i tuoi contratti in Solidity 0.5.
Quando usarle
L'uso di una libreria di contratti intelligenti per il tuo progetto ha diversi vantaggi. Innanzitutto, ti fa risparmiare tempo fornendoti blocchi di costruzione pronti all'uso che puoi includere nel tuo sistema, piuttosto che doverli programmare tu stesso.
Anche la sicurezza è un grande vantaggio. Le librerie di contratti intelligenti open source sono spesso esaminate attentamente. Dato che molti progetti dipendono da esse, c'è un forte incentivo da parte della comunità a mantenerle sotto costante revisione. È molto più comune trovare errori nel codice dell'applicazione che nelle librerie di contratti riutilizzabili. Alcune librerie sono anche sottoposte ad audit esterni (opens in a new tab) per una maggiore sicurezza.
Tuttavia, l'uso di librerie di contratti intelligenti comporta il rischio di includere nel tuo progetto codice con cui non hai familiarità. È allettante importare un contratto e includerlo direttamente nel tuo progetto, ma senza una buona comprensione di ciò che fa quel contratto, potresti inavvertitamente introdurre un problema nel tuo sistema a causa di un comportamento imprevisto. Assicurati sempre di leggere la documentazione del codice che stai importando e poi rivedi il codice stesso prima di renderlo parte del tuo progetto!
Infine, quando decidi se includere una libreria, considera il suo utilizzo complessivo. Una libreria ampiamente adottata ha il vantaggio di avere una comunità più ampia e più occhi che la esaminano alla ricerca di problemi. La sicurezza dovrebbe essere il tuo obiettivo principale quando costruisci con i contratti intelligenti!
Strumenti correlati
OpenZeppelin Contracts - La libreria più popolare per lo sviluppo sicuro di contratti intelligenti.
- Documentazione (opens in a new tab)
- GitHub (opens in a new tab)
- Forum della community (opens in a new tab)
DappSys - Blocchi di costruzione sicuri, semplici e flessibili per contratti intelligenti.
HQ20 - Un progetto Solidity con contratti, librerie ed esempi per aiutarti a costruire applicazioni distribuite complete per il mondo reale.
thirdweb Solidity SDK - Fornisce gli strumenti necessari per costruire contratti intelligenti personalizzati in modo efficiente
Tutorial correlati
- Considerazioni sulla sicurezza per gli sviluppatori di Ethereum – Un tutorial sulle considerazioni di sicurezza durante la creazione di contratti intelligenti, incluso l'uso delle librerie.
- Comprendere il contratto intelligente del token ERC-20 - Tutorial sullo standard ERC20, fornito da più librerie.
Letture consigliate
Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!