Informazioni su The Graph
Reading time: 4 min
Questa pagina spiega cos'è iThe Graph e come si può iniziare.
Il Graph è un protocollo decentralizzato per l'indicizzazione e query delle dati della blockchain. Il Graph permette di effettuare query dei dati difficili da effettuare query direttamente.
I progetti con smart contract complessi come e le iniziative NFT come memorizzano i dati sulla blockchain di Ethereum, rendendo davvero difficile leggere qualcosa di diverso dai dati di base direttamente dalla blockchain.
In the case of Bored Ape Yacht Club, we can perform basic read operations on like getting the owner of a certain Ape, getting the content URI of an Ape based on their ID, or the total supply. This can be done because these read operations are programmed directly into the smart contract. However, more advanced real-world queries and operations like aggregation, search, relationships, and non-trivial filtering are not possible. For example, if we wanted to query for Apes that are owned by a certain address and filter by one of its characteristics, we would not be able to get that information by interacting directly with the contract itself.
To get this data, you would have to process every single event ever emitted, read the metadata from IPFS using the Token ID and IPFS hash, and then aggregate it. It would take hours or even days for a decentralized application (dapp) running in a browser to get an answer to these simple questions.
Si potrebbe anche creare un proprio server, elaborare le transazioni, salvarle in un database e creare un endpoint API per effettuare query dai dati. Tuttavia, questa opzione richiede , necessita di manutenzione, presenta un singolo punto di guasto e infrange importanti proprietà di sicurezza necessarie per la decentralizzazione.
L'indicizzazione dei dati della blockchain è molto, molto difficile.
Blockchain properties like finality, chain reorganizations, or uncled blocks complicate this process further. They make it time consuming and conceptually hard to retrieve correct query results from blockchain data.
The Graph provides a solution with a decentralized protocol that indexes and enables the efficient and high-performance querying of blockchain data. These APIs (indexed "subgraphs") can then be queried with a standard GraphQL API. Today, there is a hosted service as well as a decentralized protocol with the same capabilities. Both are backed by the open source implementation of .
The Graph impara cosa e come indicizzare i dati di Ethereum in base alle descrizioni dei subgraph, note come manifesto del subgraph. La descrizione del subgraph definisce gli smart contract di interesse per un subgraph, gli eventi di quei contratti a cui prestare attenzione e come mappare i dati degli eventi ai dati che The Graph memorizzerà nel suo database.
Una volta scritto un subgraph manifest
, si usa la Graph CLI per memorizzare la definizione in IPFS e dire all'Indexer di iniziare l'indicizzazione dei dati per quel subgraph.
Questo diagramma fornisce maggiori dettagli sul flusso di dati una volta che è stato distribuito un subgraph manifest, che tratta le transazioni Ethereum:
Il flusso segue questi passi:
- Una dapp aggiunge dati a Ethereum attraverso una transazione su uno smart contract.
- Lo smart contract emette uno o più eventi durante l'elaborazione della transazione.
- Graph Node scansiona continuamente Ethereum alla ricerca di nuovi blocchi e dei dati del vostro subgraph che possono contenere.
- Graph Node trova gli eventi Ethereum per il vostro subgraph in questi blocchi ed esegue i gestori di mappatura che avete fornito. La mappatura è un modulo WASM che crea o aggiorna le entità di dati che Graph Node memorizza in risposta agli eventi Ethereum.
- La dapp effettua query del Graph Node per ottenere dati indicizzati dalla blockchain, utilizzando il . Il Graph Node a sua volta traduce le query GraphQL in query per il suo archivio dati sottostante, al fine di recuperare questi dati, sfruttando le capacità di indicizzazione dell'archivio. La dapp visualizza questi dati in una ricca interfaccia utente per gli utenti finali, che li utilizzano per emettere nuove transazioni su Ethereum. Il ciclo si ripete.
The following sections provide more detail on how to define subgraphs, how to deploy them, and how to query data from the indexes that Graph Node builds.
Before you start writing your own subgraph, you might want to have a look at and explore some of the subgraphs that have already been deployed. The page for each subgraph contains a playground that lets you query that subgraph's data with GraphQL.