Vai al contenuto principale
Change page

Librerie API JavaScript

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 Ethereum.

A questo scopo, ogni client Ethereum implementa la specifica JSON-RPC, in modo che vi sia un insieme uniforme di metodi su cui le applicazioni possono fare affidamento.

Se desideri utilizzare JavaScript per connetterti a un nodo 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 le richieste JSON-RPC (internamente) che interagiscono con Ethereum.

Tieni presente che da The Merge, per eseguire un nodo sono necessari due software 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 sull'esecuzione di un nodo.

Prerequisiti

Oltre a comprendere JavaScript, potrebbe essere utile comprendere lo stack di Ethereum e i client Ethereum.

Perché usare una libreria?

Queste librerie astraggono gran parte della complessità dell'interazione diretta con un nodo Ethereum. Forniscono inoltre 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 Ethereum e più tempo a concentrarti sulle funzionalità uniche della tua applicazione.

Funzionalità delle librerie

Connettersi ai nodi 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 è stata archiviata 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

// Un BrowserProvider avvolge un provider Web3 standard, che è
// ciò che MetaMask inietta come window.ethereum in ogni pagina
const provider = new ethers.BrowserProvider(window.ethereum)

// Il plugin MetaMask consente anche di firmare transazioni per
// inviare ether e pagare per cambiare lo stato all'interno della blockchain.
// Per questo, abbiamo bisogno del signer dell'account...
const signer = provider.getSigner()

Esempio con Web3js

Una volta configurato, sarai in grado di interrogare la blockchain per:

  • numeri di blocco
  • stime del gas
  • eventi degli smart contract
  • ID di 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

Leggi 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 degli smart contract

Le librerie client JavaScript consentono alla tua applicazione di chiamare le funzioni degli smart contract 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:

Risulterebbe nel seguente JSON:

Questo significa che puoi:

  • Inviare una transazione allo smart contract ed eseguire il suo metodo
  • Chiamare per stimare il gas che richiederà l'esecuzione di un metodo quando eseguito nell'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ì:

// Ottieni il saldo di un account (tramite indirizzo o nome ENS)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Spesso sarà necessario formattare l'output per l'utente
// che preferisce vedere i valori in ether (invece che in Wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

Librerie disponibili

Web3.js - API JavaScript di Ethereum.

Ethers.js - Implementazione completa del portafoglio Ethereum e utilità in JavaScript e TypeScript.

The Graph - Un protocollo per l'indicizzazione dei dati di Ethereum e IPFS e per interrogarli utilizzando GraphQL.

Alchemy SDK - Wrapper per Ethers.js con API migliorate.

viem - Interfaccia TypeScript per Ethereum.

Codex - API di dati blockchain arricchiti e in tempo reale su dozzine di catene.

Drift - Meta-libreria TypeScript con caching integrato, hook e mock di test.

Letture consigliate

Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!

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.