RPC (chiamata di procedura remota)

Definizione

Una RPC (Remote Procedure Call) è un protocollo di comunicazione che consente a un programma di eseguire una procedura o una funzione su un server remoto come se fosse in esecuzione localmente, senza che lo sviluppatore debba gestire esplicitamente i dettagli di rete sottostanti. 

Nel contesto della blockchain e delle criptovalute, RPC è il meccanismo principale attraverso il quale wallet , applicazioni decentralizzate (dApp) e strumenti per sviluppatori interagiscono con i nodi blockchain . Quando un utente controlla il saldo del proprio wallet, invia una transazione o interroga i dati di uno smart contract, in genere effettua chiamate RPC a un nodo blockchain.

Ethereum ha reso popolare lo standard JSON-RPC per le interazioni blockchain, consentendo metodi standardizzati come `eth_getBalance`, `eth_sendTransaction` e `eth_call`. Gli endpoint RPC fungono da gateway tra il livello applicativo rivolto all'utente e la rete decentralizzata di nodi che mantengono lo stato della blockchain. 

Gli endpoint RPC pubblici sono disponibili gratuitamente, ma spesso soggetti a limitazioni di frequenza e congestione, mentre i provider RPC dedicati come Infura, Alchemy e QuickNode offrono un accesso affidabile e ad alte prestazioni per le applicazioni in produzione. 

Origine e storia

Data Event
1981 I ricercatori di Xerox PARC Bruce Jay Nelson e Andrew Birrell sono i pionieri del concetto RPC.
1984 Birrell e Nelson pubblicano l'articolo fondamentale "Implementing Remote Procedure Calls".
1988 Sun Microsystems rilascia ONC RPC (Open Network Computing RPC) come standard aperto
1998 Viene introdotto XML-RPC, che consente chiamate remote tramite HTTP utilizzando la codifica XML
2005 È stata pubblicata la specifica JSON-RPC v1.0, che offre un'alternativa leggera a XML-RPC.
2015 Ethereum viene lanciato con JSON-RPC come interfaccia standard per la comunicazione tra i nodi.
2016 Infura si presenta come il primo importante fornitore di servizi RPC Ethereum ospitati.
2017 Il boom delle ICO ha aumentato drasticamente la domanda di infrastrutture RPC affidabili.
2020 DeFi Summer mette in luce i colli di bottiglia delle RPC (Remote Point Call) a fronte di un'impennata dell'attività on-chain; Alchemy raccoglie un importante finanziamento.
2023 Le reti RPC decentralizzate come Pocket Network e Lava Protocol stanno guadagnando terreno per ridurre i rischi di centralizzazione.

“RPC è l'infrastruttura invisibile del Web3: ogni interazione on-chain, da un semplice trasferimento di token a una complessa strategia DeFi, inizia con una chiamata RPC a un nodo.” — Vitalik Buterin

Come funziona

Caratteristica RPC pubblico Fornitore RPC dedicato Nodo autogestito
Costo Gratis basata su abbonamento Hardware + larghezza di banda
Limiti tariffari Rigoroso (10-100 req/s) Elevato (migliaia di richieste/s) Illimitato
L’affidabilità Variabile, spesso congestionato SLA di uptime del 99.9%+ Dipende dalla configurazione
Latenza Più alto (condiviso) Basso (percorso ottimizzato) Il più basso (locale)
Privacy Richieste visibili al fornitore Richieste visibili al fornitore Completamente privato
Manutenzione Nona Nona Sincronizzazione e aggiornamenti dei nodi
Dati di archivio Di solito non disponibile Spesso disponibile (livello a pagamento) Se il nodo archivio è configurato
Ideale per Progetti di test e per hobby dApp di produzione operazioni critiche per la privacy

In parole semplici

  1. Il telefono delle blockchain — Proprio come quando si alza la cornetta del telefono per fare una domanda a qualcuno in un'altra città, il proprio portafoglio o dApp effettua una chiamata RPC per "telefonare" a un nodo blockchain e porgli domande come "Qual è il mio saldo?" o "La mia transazione è andata a buon fine?".
  2. Un traduttore universale — RPC standardizza il modo in cui le applicazioni comunicano con i nodi blockchain. Indipendentemente dal portafoglio Ethereum utilizzato — MetaMask, Rainbow o Rabby — tutti utilizzano lo stesso linguaggio JSON-RPC per comunicare con i nodi.
  3. Richiesta e risposta — Ogni interazione RPC è un semplice scambio: l'applicazione invia una richiesta strutturata specificando un metodo e dei parametri, e il nodo risponde con i dati richiesti o conferma l'avvenuta esecuzione dell'azione.
  4. L'infrastruttura invisibile — La maggior parte degli utenti blockchain non vede mai le chiamate RPC, ma ogni volta che scambi token su Uniswap, controlla il tuo NFT Per la raccolta, o per richiedere le ricompense di staking, decine di chiamate RPC vengono eseguite in background per rendere tutto ciò possibile.
  5. Preoccupazione per la centralizzazione — Sebbene le blockchain siano di per sé decentralizzate, la maggior parte delle dApp si basa su un numero ristretto di fornitori RPC centralizzati. Se Infura dovesse smettere di funzionare, una parte consistente delle dApp di Ethereum diventerebbe temporaneamente inutilizzabile, spingendo così a cercare di decentralizzare l'infrastruttura RPC stessa.

Esempi del mondo reale

Scenario Implementazione/Attuazione Risultato
Visualizzazione del saldo del portafoglio MetaMask MetaMask chiama `eth_getBalance` tramite l'endpoint RPC di Infura ogni volta che un utente apre il portafoglio Gli utenti possono visualizzare i propri saldi di ETH e token in tempo reale senza dover eseguire un nodo completo.
Scambio di token Uniswap Il frontend di Uniswap effettua diverse chiamate RPC per simulare lo scambio, stimare il gas e quindi trasmettere la transazione firmata. Un'esperienza di trading DeFi senza interruzioni, con quotazioni di prezzo accurate e stime del gas.
Esploratore di blocchi Etherscan Etherscan gestisce i propri nodi di archiviazione e l'infrastruttura RPC per indicizzare l'intera storia di Ethereum. Gli utenti possono cercare qualsiasi transazione, indirizzo o contratto nella cronologia completa della blockchain.
Feed dei prezzi di Chainlink Oracle I nodi Chainlink effettuano chiamate RPC per leggere i dati sui prezzi dai contratti aggregatori on-chain. I protocolli DeFi ricevono dati di prezzo affidabili e a prova di manomissione per prestiti e derivati

Vantaggi

Vantaggio Descrizione
Interfaccia standardizzata JSON-RPC fornisce un protocollo universale e ben documentato per le interazioni blockchain tra diversi client e linguaggi di programmazione.
Astrazione della complessità Gli sviluppatori possono interagire con lo stato della blockchain senza comprendere i dettagli di basso livello della rete peer-to-peer o del meccanismo di consenso.
Accesso scalabile I provider RPC consentono a milioni di utenti di interagire con le blockchain senza che ciascuno debba eseguire il proprio nodo.
Dati in tempo reale Le connessioni WebSocket RPC consentono lo streaming di aggiornamenti per nuovi blocchi, transazioni in sospeso e registri eventi.
Compatibilità multipiattaforma Il protocollo basato su HTTP funziona con qualsiasi linguaggio di programmazione, browser o dispositivo in grado di effettuare richieste web.

Svantaggi e rischi

Rischio Descrizione
Rischio di centralizzazione La forte dipendenza da pochi fornitori di RPC (Infura, Alchemy) crea punti critici di fallimento per l'ecosistema delle dApp.
Preoccupazioni relative alla privacy I provider RPC possono registrare gli indirizzi IP, gli indirizzi dei portafogli e i modelli di transazione di tutti gli utenti che transitano attraverso i loro endpoint.
rate limiting Gli endpoint RPC pubblici e gratuiti impongono limiti di frequenza rigorosi che possono causare malfunzionamenti delle dApp durante i periodi di traffico elevato.
Fiducia nell'integrità dei dati Gli utenti devono avere fiducia nel fatto che il fornitore RPC restituisca risposte oneste e non manipolate provenienti da nodi blockchain reali.
Sensibilità alla latenza La distanza geografica dai server RPC e la congestione della rete possono introdurre ritardi, influenzando in modo critico le operazioni DeFi sensibili al tempo come le liquidazioni o arbitraggio

Suggerimenti per la gestione del rischio:

  • Utilizzare più provider RPC come soluzioni di ripiego per evitare punti singoli di errore nelle applicazioni di produzione.
  • Gestisci un nodo dedicato per operazioni critiche per la privacy e per verificare i dati in modo indipendente.
  • Valutate l'utilizzo di reti RPC decentralizzate (Pocket Network, Lava Protocol) per ridurre la dipendenza da provider centralizzati.
  • Monitora lo stato di salute e i tempi di risposta degli endpoint RPC per individuare le interruzioni prima che abbiano un impatto sugli utenti.
  • Per ottenere dati in tempo reale, utilizzare connessioni WebSocket anziché il polling HTTP, riducendo così il volume di chiamate RPC non necessarie.

FAQ

D: Devo eseguire un mio nodo per utilizzare RPC?

R: No. La maggior parte degli utenti e degli sviluppatori si affida a provider di RPC ospitati come Infura, Alchemy o QuickNode, che gestiscono i nodi per conto dell'utente. Tuttavia, gestire un proprio nodo offre la massima privacy ed elimina la dipendenza da terze parti.

D: Perché le diverse blockchain utilizzano metodi RPC differenti?

A: Ogni blockchain ha la sua architettura e le sue funzionalità. Mentre il JSON-RPC di Ethereum è diventato uno standard di fatto (adottato dalla maggior parte delle blockchain compatibili con EVM), le blockchain non EVM come Solana, Bitcoin e Cosmos utilizzano le proprie specifiche RPC, adattate alle loro caratteristiche uniche.

D: Cosa succede quando un provider RPC non è disponibile?

A: Se una dApp si basa su un singolo provider RPC e questo smette di funzionare, la dApp diventa di fatto inutilizzabile: gli utenti non possono inviare transazioni, controllare i saldi o interagire con gli smart contract. Per questo motivo, le dApp in produzione dovrebbero sempre implementare strategie di fallback multi-provider.

D: Qual è la differenza tra HTTP e WebSocket RPC?

A: HTTP RPC utilizza un modello richiesta-risposta in cui il client deve effettuare un polling attivo per gli aggiornamenti. WebSocket RPC mantiene una connessione persistente che consente al server di inviare aggiornamenti in tempo reale (nuovi blocchi, conferme di transazioni, emissioni di eventi) al client senza dover effettuare polling ripetuti.

D: Le chiamate RPC sono gratuite?

A: Molti provider offrono piani gratuiti con limiti di utilizzo (ad esempio, Infura offre 100,000 richieste al giorno gratuitamente). Oltre tale limite, l'accesso RPC dedicato è un servizio a pagamento. Gli endpoint RPC pubblici della community sono gratuiti ma inaffidabili per l'utilizzo in produzione.

Suggerimento UPay: quando si sviluppa una dApp, è sempre consigliabile configurare almeno due provider RPC di riserva: Infura e Alchemy formano un'ottima coppia. Per le transazioni personali in cui la privacy è importante, è opportuno valutare l'utilizzo di un nodo leggero come Nethermind o Geth per evitare di inviare i dati del proprio portafoglio attraverso server di terze parti.

Disclaimer: Questo contenuto ha solo scopo didattico e non costituisce consulenza finanziaria. Si consiglia di condurre sempre le proprie ricerche (DYOR) e di consultare consulenti finanziari qualificati prima di prendere decisioni di investimento.

UPay — Rendere le criptovalute un'enciclopedia

Novità & Eventi speciali