Librerie API JavaScript
Ultimo aggiornamento della pagina: 25 febbraio 2026
Affinché un'app web possa interagire con la blockchain di Ethereum (ovvero, leggere i dati della blockchain e/o inviare transazioni alla rete), deve connettersi a un nodo di Ethereum.
A questo scopo, ogni client di Ethereum implementa la specifica JSON-RPC, quindi esiste un insieme uniforme di metodi su cui le applicazioni possono fare affidamento.
Se desideri utilizzare JavaScript per connetterti a un nodo di Ethereum, è possibile utilizzare JavaScript puro, ma all'interno dell'ecosistema esistono diverse librerie di utilità che rendono l'operazione molto più semplice. Con queste librerie, gli sviluppatori possono scrivere metodi intuitivi di una sola riga per inizializzare richieste JSON-RPC (dietro le quinte) che interagiscono con Ethereum.
Tieni presente che da La Fusione (The Merge), per eseguire un nodo sono necessari due software di Ethereum connessi: un client di esecuzione e un client di consenso. Assicurati che il tuo nodo includa sia un client di esecuzione che uno di consenso. Se il tuo nodo non si trova sulla tua macchina locale (ad es., il tuo nodo è in esecuzione su un'istanza AWS), aggiorna di conseguenza gli indirizzi IP nel tutorial. Per maggiori informazioni, consulta la nostra pagina su come eseguire un nodo.
Prerequisiti
Oltre a comprendere JavaScript, potrebbe essere utile comprendere lo stack di Ethereum e i client di Ethereum.
Perché usare una libreria?
Queste librerie astraggono gran parte della complessità dell'interazione diretta con un nodo di Ethereum. Forniscono anche funzioni di utilità (ad es., la conversione di ETH in Gwei), in modo che, come sviluppatore, tu possa dedicare meno tempo ad affrontare le complessità dei client di Ethereum e più tempo a concentrarti sulle funzionalità uniche della tua applicazione.
Funzionalità delle librerie
Connettersi ai nodi di Ethereum
Utilizzando i provider, queste librerie ti consentono di connetterti a Ethereum e leggerne i dati, che sia tramite JSON-RPC, INFURA, Etherscan, Alchemy o MetaMask.
Attenzione: Web3.js è stato archiviato il 4 marzo 2025. Leggi l'annuncio (opens in a new tab). Prendi in considerazione l'utilizzo di librerie alternative come ethers.js (opens in a new tab) o viem (opens in a new tab) per i nuovi progetti.
Esempio con Ethers
1// Un BrowserProvider incapsula un provider Web3 standard, che è2// ciò che MetaMask inietta come window.ethereum in ogni pagina3const provider = new ethers.BrowserProvider(window.ethereum)45// Il plugin MetaMask consente anche di firmare transazioni per6// inviare ether e pagare per cambiare stato all'interno della blockchain.7// Per questo, abbiamo bisogno del firmatario dell'account...8const signer = provider.getSigner()Esempio con Web3js
1var web3 = new Web3("http://localhost:8545")2// oppure3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// cambiare provider6web3.setProvider("ws://localhost:8546")7// oppure8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Usare il provider IPC in node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // percorso mac os13// oppure14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // percorso mac os17// su windows il percorso è: "\\\\.\\pipe\\geth.ipc"18// su linux il percorso è: "/users/myuser/.ethereum/geth.ipc"Mostra tuttoUna volta configurato, sarai in grado di interrogare la blockchain per:
- numeri dei blocchi
- stime del gas
- eventi del contratto intelligente
- id della rete
- e altro ancora...
Funzionalità del portafoglio
Queste librerie ti offrono funzionalità per creare portafogli, gestire chiavi e firmare transazioni.
Ecco un esempio da Ethers
1// Crea un'istanza del portafoglio da una frase mnemonica...2mnemonic =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromPhrase(mnemonic)56// ...o da una chiave privata7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// L'indirizzo come Promise secondo l'API del Signer13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Un indirizzo del portafoglio è disponibile anche in modo sincrono17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// I componenti crittografici interni21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// La frase mnemonica del portafoglio27walletMnemonic.mnemonic28// {29// locale: 'en',30// path: 'm/44\'/60\'/0\'/0/0',31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'32// }3334// Nota: Un portafoglio creato con una chiave privata non35// ha una frase mnemonica (la derivazione lo impedisce)36walletPrivateKey.mnemonic37// null3839// Firmare un messaggio40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Firmare una transazione49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// Il metodo connect restituisce una nuova istanza del53// portafoglio connesso a un provider54wallet = walletMnemonic.connect(provider)5556// Interrogare la rete57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// Inviare ether63wallet.sendTransaction(tx)Mostra tuttoLeggi la documentazione completa (opens in a new tab)
Una volta configurato, sarai in grado di:
- creare account
- inviare transazioni
- firmare transazioni
- e altro ancora...
Interagire con le funzioni dei contratti intelligenti
Le librerie client JavaScript consentono alla tua applicazione di chiamare le funzioni dei contratti intelligenti leggendo l'Application Binary Interface (ABI) di un contratto compilato.
L'ABI spiega essenzialmente le funzioni del contratto in un formato JSON e ti consente di utilizzarlo come un normale oggetto JavaScript.
Quindi il seguente contratto Solidity:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}Mostra tuttoRisulterebbe nel seguente JSON:
1[{2 "type":"constructor",3 "payable":false,4 "stateMutability":"nonpayable"5 "inputs":[{"name":"testInt","type":"uint256"}],6 },{7 "type":"function",8 "name":"foo",9 "constant":false,10 "payable":false,11 "stateMutability":"nonpayable",12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],13 "outputs":[{"name":"","type":"address"}]14 },{15 "type":"event",16 "name":"Event",17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],18 "anonymous":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Mostra tuttoQuesto significa che puoi:
- Inviare una transazione al contratto intelligente ed eseguire il suo metodo
- Chiamare per stimare il gas che richiederà l'esecuzione di un metodo quando eseguito nella EVM
- Distribuire un contratto
- E altro ancora...
Funzioni di utilità
Le funzioni di utilità ti offrono comode scorciatoie che rendono la costruzione con Ethereum un po' più semplice.
I valori in ETH sono in Wei per impostazione predefinita. 1 ETH = 1.000.000.000.000.000.000 WEI – questo significa che hai a che fare con molti numeri! web3.utils.toWei converte gli ether in Wei per te.
E in ethers si presenta così:
1// Ottenere il saldo di un account (tramite indirizzo o nome ENS)2balance = await provider.getBalance("ethers.eth")3// { BigNumber: "2337132817842795605" }45// Spesso sarà necessario formattare l'output per l'utente6// che preferisce vedere i valori in ether (invece che in wei)7ethers.utils.formatEther(balance)8// '2.337132817842795605'- Funzioni di utilità di Web3js (opens in a new tab)
- Funzioni di utilità di Ethers (opens in a new tab)
Librerie disponibili
Web3.js - API JavaScript di Ethereum.
Ethers.js - Implementazione completa del portafoglio Ethereum e utilità in JavaScript e TypeScript.
- Home di Ethers.js (opens in a new tab)
- Documentazione (opens in a new tab)
- GitHub (opens in a new tab)
The Graph - Un protocollo per indicizzare i dati di Ethereum e IPFS e interrogarli utilizzando GraphQL.
- The Graph (opens in a new tab)
- Graph Explorer (opens in a new tab)
- Documentazione (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK - Wrapper per Ethers.js con API migliorate.
viem - Interfaccia TypeScript per Ethereum.
Codex - API di dati blockchain arricchiti in tempo reale su decine di catene.
- Documentazione (opens in a new tab)
- Explorer (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Drift - Meta-libreria TypeScript con caching integrato, hook e mock di test.
Letture di approfondimento
Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!
Argomenti correlati
Tutorial correlati
- Configurare Web3js per usare la blockchain di Ethereum in JavaScript – Istruzioni per configurare web3.js nel tuo progetto.
- Chiamare un contratto intelligente da JavaScript – Usando il token DAI, scopri come chiamare le funzioni dei contratti usando JavaScript.
- Inviare transazioni usando web3 e Alchemy – Guida passo passo per inviare transazioni dal backend.
Tutorial: API JavaScript e WebSocket su Ethereum
- Usare i WebSocket – Come usare i WebSocket con Alchemy per iscriversi agli eventi di Ethereum ed effettuare richieste JSON-RPC in tempo reale.