Construyendo APIs GraphQL en Ethereum

Rate this content
Bookmark

Las blockchains son bases de datos con un conjunto único de propiedades. A diferencia de la mayoría de las bases de datos que están optimizadas tanto para operaciones de lectura como de escritura, las blockchains están optimizadas para operaciones de escritura, generalmente enfocadas en optimizar y escalar el costo de transacción, el volumen de transacción y la velocidad de transacción.


En esta charla, profundizaré en el espacio web3 y mostraré cómo los desarrolladores pueden aprovechar el Protocolo de Graph para construir APIs y dapps GraphQL eficientes, escalables y descentralizadas en redes descentralizadas como Ethereum e IPS.

8 min
10 Dec, 2021

Video Summary and Transcription

Esta charla trata sobre la construcción de APIs GraphQL en la parte superior de Ethereum y la máquina virtual de Ethereum. El gráfico es un protocolo de indexación para consultar redes blockchain como Ethereum e IPFS. Los desarrolladores pueden construir APIs llamadas subgráficos para indexar eficientemente datos y ponerlos a disposición para consultar desde aplicaciones frontend. El gráfico atiende más de 1 mil millones de consultas al día y se utiliza en varias aplicaciones Web3, incluyendo DeFi, juegos y mercados de NFT. El proceso implica definir el modelo de datos utilizando el esquema GraphQL y las direcciones de contrato, implementar y probar el subgrafo, y utilizar un cliente GraphQL para consultar el subgrafo.

Available in English

1. Introduction to Building GraphQL APIs on Ethereum

Short description:

Hola, mi nombre es Nader Dabit. Hoy voy a hablar sobre cómo construir APIs de GraphQL en Ethereum y la máquina virtual de Ethereum. En la pila web tradicional, las bases de datos, los servidores y las APIs filtran, ordenan, paginan y unen datos antes de devolverlos a nuestras aplicaciones cliente. El gráfico es un protocolo de indexación para consultar redes blockchain como Ethereum e IPFS. Los desarrolladores pueden construir APIs llamadas subgrafos para indexar eficientemente datos y hacerlos disponibles para consultas desde aplicaciones frontend. El gráfico atiende más de mil millones de consultas al día y se utiliza en varias aplicaciones Web3, incluyendo DeFi, juegos y mercados de NFT.

Soy un ingeniero de relaciones con desarrolladores en Edge and Node. Y hoy voy a hablar sobre cómo construir APIs de GraphQL en Ethereum, pero también en la máquina virtual de Ethereum. Puedes pensar en la máquina virtual de Ethereum como el React del mundo de las blockchain. Aprendes esta habilidad y puedes construir no solo en la blockchain de Ethereum, sino en cualquier otra blockchain compatible con EVM, lo que significa una variedad de diferentes capas dos y cadenas laterales de Ethereum, así como otras blockchains completamente diferentes como Avalanche, Celo y muchas otras que existen. Dicho esto, vamos a empezar. La forma en que interactuamos y construimos sobre las blockchains es muy diferente a lo que estamos acostumbrados en la web tradicional. En una blockchain, los datos no se almacenan en un formato que pueda ser consumido de manera eficiente o fácil desde otras aplicaciones o interfaces. El problema es que necesitas tener los datos indexados y organizados para una recuperación eficiente. Tradicionalmente, ese trabajo se realiza en la pila tecnológica centralizada, pero esa capa de indexación faltaba en la pila de Web3. Así que en la pila web tradicional, las bases de datos, los servidores y las APIs filtran, ordenan, paginan, y unen datos antes de devolverlos a nuestras aplicaciones cliente, generalmente a través de algún tipo de solicitud HTTP. Y este tipo de transferencia de datos no es posible cuando se lee datos directamente desde Ethereum u otras blockchains. En el pasado, los desarrolladores y los equipos construían y operaban sus propios servidores de indexación propietarios. Pero esto requería recursos significativos de hardware e ingeniería, y también rompía los importantes principios de seguridad en torno a la descentralización. Así que alrededor del año 2018, se comenzó a construir el gráfico para resolver este problema. El gráfico es un protocolo de indexación para consultar redes blockchain como Ethereum e IPFS. Así que hablemos de cómo funciona el gráfico. Echemos un vistazo a un par de otros sistemas de indexación que podríamos estar usando en el mundo cotidiano al que ya estamos acostumbrados. Los motores de búsqueda como Google rastrean Internet, indexan datos relevantes y los ponen a disposición de los usuarios como nosotros para buscar a través de su interfaz web o sus APIs. Y sin esta capa de indexación, sería difícil saber dónde buscar y cómo encontrar información relevante en la web. Podríamos pensar en los motores de búsqueda que usamos a diario como una capa de indexación. Otra analogía similar es una biblioteca. Usando un sistema de indexación como el sistema decimal Dewey, sabemos exactamente dónde encontrar el libro que buscamos sin tener que buscar libro por libro en toda la biblioteca. Usando el gráfico, los desarrolladores pueden construir APIs llamadas subgrafos. Un subgrafo define cómo indexar eficientemente los datos de manera determinista y hacerlos disponibles para consultas desde aplicaciones frontend. Los subgrafos se encuentran entre la blockchain y la interfaz de usuario, proporcionando una parte importante de la infraestructura de software de una capa de API flexible, eficiente y descentralizada. Una vez que se implementa un subgrafo y se indexan los datos, las aplicaciones pueden comenzar a consultar los datos sin depender de ningún proveedor de servicios centralizado, y en su lugar pueden confiar en un mercado de consultas que está compuesto por una red descentralizada de indexadores, todos compitiendo por brindar el mejor servicio al mejor precio. En este momento, el gráfico atiende más de mil millones de consultas al día, y muchos tipos de aplicaciones en el mundo de Web3 lo están utilizando, incluyendo DeFi, juegos, mercados de NFT y algunos otros tipos de aplicaciones. Para comenzar, debes ir a thegraph.com y en la interfaz de usuario aquí, puedes definir el nombre del subgrafo, junto con cualquier otro metadato que desees que esté disponible para su búsqueda. Luego, usarías la herramienta de línea de comandos de código abierto de GraphCLI para crear un subgrafo localmente en el que luego puedes comenzar a construir.

2. Definición del modelo de datos y prueba de subgrafos

Short description:

A continuación, define el modelo de datos utilizando el esquema de GraphQL y las direcciones de contrato. Implementa el subgrafo y pruébalo en el panel de control del gráfico. Utiliza un cliente de GraphQL para consultar el subgrafo como cualquier otra aplicación de GraphQL. Explora y prueba otras APIs en el Explorador de Gráficos. Prueba el subgrafo foundation que consulta el mercado de NFT foundation. Obtén metadatos utilizando la URI de contenido y la ruta de IPFS. Para obtener más información, visita graph.com/docs y github.com/dabit3/building-a-subgraph-workshop. Sigue a graph en Twitter en graph protocol y únete a Discord.

A continuación, definirías el modelo de datos, que es esencialmente el esquema de GraphQL, las direcciones de contrato que te gustaría tener indexadas y cualquier otra configuración que desees tener configurada localmente. El esquema de GraphQL se vería como cualquier otro esquema de GraphQL típico. La principal diferencia es que tenemos un par de directivas diferentes que te permiten interactuar con la red del gráfico, como entity y derived from, para crear relaciones entre diferentes tipos de datos.

Cuando estés listo para implementar tu subgrafo, puedes ejecutar graph deploy. Una vez que la implementación sea exitosa, deberías poder comenzar a probarlo directamente en el panel de control del gráfico. Aquí tenemos un editor gráfico y diferentes registros para cualquier error que pueda haber ocurrido al implementar tu subgrafo. Y cuando estés listo para hacer consultas, simplemente puedes hacer consultas como lo harías desde cualquier otra aplicación típica. Puedes utilizar un cliente de GraphQL como Apollo, o Oracle te proporcionará el punto final de GraphQL desde el panel de control del gráfico. Y luego puedes ejecutar cualquier tipo de consulta que desees. Todo debería funcionar como cualquier otra aplicación de GraphQL con la que probablemente hayas interactuado en el pasado.

Entonces, dicho esto, vamos a ir a graph.com y ver cómo se ve esto. Aquí estamos en el Explorador de Gráficos y puedes ver que podemos ver todas las diferentes APIs que otras personas han implementado. Estas son completamente abiertas y públicas. Si queremos ver una, podemos hacer clic en una. Y podemos ver que podemos probarla. Podemos ejecutar diferentes consultas aquí en el playground. Podemos ver la introspección gráfica del gráfico aquí. Por lo tanto, cualquier cosa que desees saber sobre un subgrafo debería estar disponible aquí. Pero vamos a probar uno. Voy a ir aquí a buscar y voy a encontrar el subgrafo foundation, que es algo que he creado un par de veces. Y aquí podemos probar esto. Este es un subgrafo que consulta el mercado de NFT foundation. Y vamos a ejecutar una consulta aquí. Podemos ver que tenemos todos estos datos que regresan. Tenemos esta URI de contenido. Esto será algo que podemos obtener y usar para encontrar todos los diferentes metadatos de un NFT. Aquí tenemos la ruta de IPFS. Podemos probar esto yendo a IPFS.io/ipfs. Y aquí vemos que los datos realmente están regresando. Si deseas obtener más información, si deseas construir un subgrafo tú mismo, te recomendaría que consultes graph.com/docs. También puedes consultar este taller que he creado en github.com/dabit3/building-a-subgraph-workshop. Y si deseas obtener más información sobre el gráfico, sigue a graph en Twitter en graph protocol, visita graph.com, los documentos del gráfico o únete a nuestro Discord. Eso es todo. Gracias por ver mi charla. Espero que disfrutes el resto de GraphQL Galaxy.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
From GraphQL Zero to GraphQL Hero with RedwoodJS
Top Content
We all love GraphQL, but it can be daunting to get a server up and running and keep your code organized, maintainable, and testable over the long term. No more! Come watch as I go from an empty directory to a fully fledged GraphQL API in minutes flat. Plus, see how easy it is to use and create directives to clean up your code even more. You're gonna love GraphQL even more once you make things Redwood Easy!
Vue.js London Live 2021Vue.js London Live 2021
24 min
Local State and Server Cache: Finding a Balance
Top Content
How many times did you implement the same flow in your application: check, if data is already fetched from the server, if yes - render the data, if not - fetch this data and then render it? I think I've done it more than ten times myself and I've seen the question about this flow more than fifty times. Unfortunately, our go-to state management library, Vuex, doesn't provide any solution for this.For GraphQL-based application, there was an alternative to use Apollo client that provided tools for working with the cache. But what if you use REST? Luckily, now we have a Vue alternative to a react-query library that provides a nice solution for working with server cache. In this talk, I will explain the distinction between local application state and local server cache and do some live coding to show how to work with the latter.
React Day Berlin 2022React Day Berlin 2022
29 min
Get rid of your API schemas with tRPC
Do you know we can replace API schemas with a lightweight and type-safe library? With tRPC you can easily replace GraphQL or REST with inferred shapes without schemas or code generation. In this talk we will understand the benefit of tRPC and how apply it in a NextJs application. If you want reduce your project complexity you can't miss this talk.

Workshops on related topic

React Advanced Conference 2021React Advanced Conference 2021
145 min
Web3 Workshop - Building Your First Dapp
Top Content
Featured WorkshopFree
In this workshop, you'll learn how to build your first full stack dapp on the Ethereum blockchain, reading and writing data to the network, and connecting a front end application to the contract you've deployed. By the end of the workshop, you'll understand how to set up a full stack development environment, run a local node, and interact with any smart contract using React, HardHat, and Ethers.js.
GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Build with SvelteKit and GraphQL
Top Content
Featured WorkshopFree
Have you ever thought about building something that doesn't require a lot of boilerplate with a tiny bundle size? In this workshop, Scott Spence will go from hello world to covering routing and using endpoints in SvelteKit. You'll set up a backend GraphQL API then use GraphQL queries with SvelteKit to display the GraphQL API data. You'll build a fast secure project that uses SvelteKit's features, then deploy it as a fully static site. This course is for the Svelte curious who haven't had extensive experience with SvelteKit and want a deeper understanding of how to use it in practical applications.

Table of contents:
- Kick-off and Svelte introduction
- Initialise frontend project
- Tour of the SvelteKit skeleton project
- Configure backend project
- Query Data with GraphQL
- Fetching data to the frontend with GraphQL
- Styling
- Svelte directives
- Routing in SvelteKit
- Endpoints in SvelteKit
- Deploying to Netlify
- Navigation
- Mutations in GraphCMS
- Sending GraphQL Mutations via SvelteKit
- Q&A
React Advanced Conference 2022React Advanced Conference 2022
95 min
End-To-End Type Safety with React, GraphQL & Prisma
Featured WorkshopFree
In this workshop, you will get a first-hand look at what end-to-end type safety is and why it is important. To accomplish this, you’ll be building a GraphQL API using modern, relevant tools which will be consumed by a React client.
Prerequisites: - Node.js installed on your machine (12.2.X / 14.X)- It is recommended (but not required) to use VS Code for the practical tasks- An IDE installed (VSCode recommended)- (Good to have)*A basic understanding of Node.js, React, and TypeScript
GraphQL Galaxy 2022GraphQL Galaxy 2022
112 min
GraphQL for React Developers
Featured Workshop
There are many advantages to using GraphQL as a datasource for frontend development, compared to REST APIs. We developers in example need to write a lot of imperative code to retrieve data to display in our applications and handle state. With GraphQL you cannot only decrease the amount of code needed around data fetching and state-management you'll also get increased flexibility, better performance and most of all an improved developer experience. In this workshop you'll learn how GraphQL can improve your work as a frontend developer and how to handle GraphQL in your frontend React application.
React Summit 2022React Summit 2022
173 min
Build a Headless WordPress App with Next.js and WPGraphQL
Top Content
WorkshopFree
In this workshop, you’ll learn how to build a Next.js app that uses Apollo Client to fetch data from a headless WordPress backend and use it to render the pages of your app. You’ll learn when you should consider a headless WordPress architecture, how to turn a WordPress backend into a GraphQL server, how to compose queries using the GraphiQL IDE, how to colocate GraphQL fragments with your components, and more.
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Relational Database Modeling for GraphQL
Top Content
WorkshopFree
In this workshop we'll dig deeper into data modeling. We'll start with a discussion about various database types and how they map to GraphQL. Once that groundwork is laid out, the focus will shift to specific types of databases and how to build data models that work best for GraphQL within various scenarios.
Table of contentsPart 1 - Hour 1      a. Relational Database Data Modeling      b. Comparing Relational and NoSQL Databases      c. GraphQL with the Database in mindPart 2 - Hour 2      a. Designing Relational Data Models      b. Relationship, Building MultijoinsTables      c. GraphQL & Relational Data Modeling Query Complexities
Prerequisites      a. Data modeling tool. The trainer will be using dbdiagram      b. Postgres, albeit no need to install this locally, as I'll be using a Postgres Dicker image, from Docker Hub for all examples      c. Hasura