No centro da arquitetura do Graph está o Graph Node. Esse componente-chave é responsável por indexar subgráficos e tornar os dados resultantes acessíveis por meio de uma API GraphQL. Ele é o núcleo da pilha do indexador e sua operação eficaz é crucial para a execução de um indexador bem-sucedido. O Graph Node opera com versatilidade, capaz de ser executado em ambientes bare metal e em nuvem, refletindo a adaptabilidade necessária no cenário dinâmico da tecnologia blockchain.
Parte integrante da operação do Graph Node é o banco de dados PostgreSQL, que atua como o armazenamento principal. Esse banco de dados abriga não apenas os dados do subgrafo, mas também metadados sobre subgrafos e dados essenciais da rede, como caches de bloco e eth_call. A organização e o gerenciamento desse banco de dados são essenciais para o bom funcionamento do Graph Node, garantindo a integridade e a acessibilidade dos dados.
Para indexar redes de blockchain, o Graph Node se conecta a clientes de rede por meio de uma API JSON-RPC compatível com EVM. Essa configuração pode variar desde a conexão com um único cliente até um arranjo mais complexo que envolva o balanceamento de carga entre vários clientes. Além disso, a The Graph desenvolveu o Network Firehoses, um serviço gRPC que fornece um fluxo de blocos ordenado e com reconhecimento de bifurcação. Embora atualmente não seja um requisito para indexadores, o Firehose representa um avanço significativo no suporte à indexação de desempenho em escala.
A interação do Graph Node com a rede IPFS é fundamental para armazenar metadados de implantação de subgráficos. Um nó IPFS hospedado no nível da rede simplifica esse processo para os indexadores. Além disso, a integração opcional com um servidor de métricas Prometheus para monitoramento e geração de relatórios acrescenta outra camada de sofisticação, permitindo que os indexadores rastreiem e otimizem o desempenho do Graph Node.
A configuração flexível do Graph Node, desde as opções de instalação até os recursos de dimensionamento, destaca o compromisso da The Graph em acomodar várias necessidades operacionais. O sistema pode ser dimensionado horizontalmente com vários Graph Nodes e bancos de dados, atendendo às crescentes demandas da rede. Os usuários avançados podem aproveitar as opções de configuração do Graph Node, gerenciadas por meio de um arquivo TOML ou variáveis de ambiente, para otimizar o processamento de dados e a distribuição da carga de trabalho.
O Firehose, conceituado e desenvolvido pela StreamingFast, marca uma revolução na extração de dados de nós de blockchain. Essa ferramenta inovadora divide cada transação de um bloco de blockchain em seus menores elementos, salvando-os como arquivos simples e planos. Esses arquivos simples não são apenas um formato de armazenamento; eles incorporam uma mudança de paradigma na indexação de dados. Eles facilitam o processamento paralelo, o que acelera drasticamente as operações de indexação. Essa tecnologia fornece dados avançados e com reconhecimento de bifurcação de nós de blockchain instrumentados diretamente aos consumidores. Em termos práticos, o Firehose demonstrou sua capacidade ao oferecer velocidades de captura e processamento que antes eram consideradas inatingíveis, estabelecendo assim novos padrões para a extração de dados no ecossistema do The Graph.
Os substreams, uma extensão dos recursos fornecidos pelo Firehose, foram projetados para o processamento de dados de alto desempenho de forma paralela e com streaming em primeiro lugar. Esses módulos escritos em Rust permitem que os desenvolvedores componham, classifiquem, armazenem e transformem dados de blockchain para vários usos. A engenhosidade do Substreams está em sua capacidade de utilizar os arquivos simples do Firehose para indexar dados em velocidades excepcionalmente rápidas. Essa abordagem garante que as Substreams não só sejam altamente eficientes no processamento de dados, mas também na distribuição deles assim que estiverem disponíveis, em vez de dependerem de solicitações contínuas.
A integração do Firehose e do Substreams no ecossistema da The Graph oferece uma combinação poderosa para o processamento de dados. O Firehose garante o fornecimento rápido de dados de blockchain em um formato otimizado, enquanto os Substreams refinam e processam ainda mais esses dados. Essa relação sinérgica resulta em uma eficiência incomparável no manuseio de grandes volumes de dados de blockchain, elevando significativamente os recursos do The Graph.
Os subgrafos se tornaram o padrão do setor na indexação de dados de blockchain desde sua introdução pela The Graph em 2018. Elas são essencialmente APIs abertas que extraem, processam e armazenam dados de blockchains, tornando-os facilmente consultáveis por meio de uma interface GraphQL. Com mais de 85.000 subgrafos suportados em mais de 40 cadeias, os subgrafos se tornaram indispensáveis para os desenvolvedores da web3. Eles permitem a rápida implementação de um banco de dados Postgres preenchido com dados indexados, prontos para serem consultados usando uma camada GraphQL. Os subgráficos permitem que os desenvolvedores exibam uma ampla gama de dados de blockchain em seus DApps, de transações DeFi a proveniência NFT, de forma organizada e eficiente.
No cenário em constante evolução da tecnologia blockchain, os subgrafos surgiram como um conceito fundamental, transformando a maneira como interagimos e utilizamos os dados do blockchain. Essas APIs abertas atuam como intermediárias, preenchendo perfeitamente a lacuna entre o mundo descentralizado das cadeias de blocos e o reino familiar dos dados estruturados. Ao extrair, processar e organizar dados de blockchain em um formato consultável, os subgráficos capacitam os desenvolvedores a criar aplicativos inovadores e orientados por dados.
Os subgrafos oferecem uma infinidade de benefícios, o que os torna uma opção atraente para desenvolvedores e usuários. Sua natureza descentralizada garante resistência à censura e ao tempo de inatividade, promovendo um ecossistema de dados seguro e confiável. Além disso, os subgrafos são inerentemente dimensionáveis, capazes de lidar com grandes quantidades de dados sem comprometer o desempenho. A relação custo-benefício é outra vantagem importante, pois os subgráficos costumam ser mais econômicos do que as APIs de dados tradicionais.
Os subgrafos são compostos por três componentes essenciais que trabalham em harmonia para oferecer seus recursos transformadores:
Manifesto: O manifesto serve como o projeto do subgráfico, descrevendo suas fontes de dados, esquema e código AssemblyScript. Ele define os limites dos dados que o subgráfico indexará, garantindo que somente as informações relevantes sejam capturadas.
Esquema: O esquema define a estrutura dos dados, semelhante à planta de um edifício. Ele descreve as entidades, os campos e os relacionamentos entre as entidades, fornecendo uma maneira clara e organizada de representar os dados.
Código AssemblyScript: Esse código executável atua como o carro-chefe do subgráfico, traduzindo os dados brutos de blockchains em um formato que o mecanismo GraphQL possa compreender. Ele também lida com a indexação e o armazenamento de dados, garantindo sua acessibilidade e confiabilidade.
A criação de um subgráfico envolve uma série de etapas, cada uma delas cuidadosamente elaborada para garantir a funcionalidade e a eficácia do subgráfico:
Conceituando e projetando: A jornada começa com uma ideia clara dos dados a serem indexados e dos aplicativos que serão utilizados. Isso envolve definir as entidades, os campos e os relacionamentos entre eles, garantindo que a estrutura do subgráfico esteja alinhada com a finalidade pretendida.
Desenvolvimento do manifesto e do esquema: O manifesto e o esquema são meticulosamente elaborados, fornecendo a base para a arquitetura de dados do subgráfico. O manifesto especifica os recursos de dados, enquanto o esquema descreve a estrutura de dados, garantindo a integridade e a consistência dos dados.
Implementação do código AssemblyScript: O código AssemblyScript é escrito, traduzindo os dados brutos do blockchain em um formato que o GraphQL possa entender. Ele lida com a indexação, o armazenamento e a recuperação de dados, permitindo o acesso eficiente aos dados indexados.
Depois que o subgráfico é desenvolvido, ele passa por um processo de implantação que o apresenta ao mundo:
Integração com o Subgraph Studio: O Subgraph Studio funciona como uma plataforma centralizada para o gerenciamento de subgrafos. Ele facilita o processo de implantação, permitindo que os desenvolvedores publiquem seus subgráficos na rede descentralizada.
Indexação e curadoria: Os indexadores, responsáveis por buscar e armazenar dados de blockchain, são essenciais para tornar os subgráficos acessíveis aos desenvolvedores. A curadoria, normalmente feita por meio de tokens GRT, incentiva os indexadores a priorizar os subgráficos com alta demanda.
Consulta e utilização: Os desenvolvedores agora podem consultar o subgráfico implantado usando consultas GraphQL, recuperando dados específicos adaptados às necessidades de seus aplicativos. Essa integração perfeita permite que os desenvolvedores aproveitem os dados do blockchain para inovar.
À medida que o Graph embarca em sua nova era (exploraremos isso na lição 5), a evolução contínua dessas tecnologias essenciais - subgrafos, Firehose e Substreams - é aguardada com ansiedade. Esses componentes devem se expandir e evoluir, desempenhando papéis vitais na introdução de novos serviços de dados e garantindo fluxos de dados mais rápidos e modulares. O Verifiable Firehose, por exemplo, está pronto para ser uma solução inovadora para acessar dados históricos da Ethereum, abordando os desafios da evolução dos padrões de blockchain.
É fundamental distinguir entre subgrafos e substratos, pois eles têm finalidades diferentes. Os subgráficos são ideais para recuperação e gerenciamento de dados padrão, oferecendo facilidade de configuração e uso com uma camada de consulta GraphQL. Por outro lado, os Substreams são adaptados para necessidades mais complexas de análise e big data, oferecendo processamento de dados paralelizados e maior flexibilidade no manuseio e armazenamento de dados. Os substreams permitem que os desenvolvedores transformem dados de formatos de arquivos básicos em formas mais utilizáveis, atendendo a requisitos sofisticados de processamento de dados.
O Graph, tradicionalmente conhecido por sua proeza na organização de dados na cadeia, agora está expandindo seus horizontes ao se aventurar no reino dos dados fora da cadeia. Essa abordagem está alinhada com a missão de longo prazo do The Graph de fornecer acesso fácil ao conhecimento e às informações públicas do mundo.
Na arquitetura Web3, embora os usuários possam interagir diretamente com o blockchain por meio de serviços de middleware, há uma compensação, especialmente no que diz respeito ao custo. Os custos de transação na cadeia, geralmente chamados de taxas de gás, podem ser proibitivamente altos para cálculos complexos ou armazenamento extensivo de dados. Historicamente, essa limitação tem restringido a complexidade dos aplicativos ou levado os desenvolvedores a criar APIs proprietárias fora da cadeia, afastando-se dos modelos de código aberto.
O Graph apresenta uma solução exclusiva para esse desafio, permitindo a organização e o fornecimento de dados fora da cadeia por meio de sua rede descentralizada. Esse método envolve um fluxo de trabalho em que os dados tradicionalmente fora da cadeia são postados no IPFS (InterPlanetary File System) e os hashes do IPFS são registrados na cadeia. Posteriormente, esses dados podem ser indexados por subgrafos e disponibilizados para consulta. Essa abordagem oferece uma maneira dimensionável e econômica de publicar e fornecer dados complexos e dinâmicos sem a sobrecarga de criar e manter APIs proprietárias.
Cron Jobs para computação e publicação de dados: Um cron job off-chain executa cálculos complexos e publica os resultados em uma fonte permaweb, como o IPFS, indexável pelo The Graph. Esse trabalho também gera uma transação na cadeia para publicar o hash do arquivo IPFS e quaisquer metadados relevantes.
Publicação do subgrafo para indexação: A próxima etapa envolve a publicação de um subgráfico que indexa esses arquivos IPFS com base nos hashes de arquivo postados na cadeia. Depois que o subgráfico é publicado, ele pode ser coletado e servido por indexadores na rede do The Graph, permitindo que desenvolvedores e usuários de terceiros consultem os dados.
Acesso robusto e confiável aos dados: Ao aproveitar a rede distribuída de indexadores da The Graph, o acesso aos dados permanece robusto e confiável sem esforço adicional do editor de dados. Essa estrutura descentralizada aumenta significativamente a disponibilidade e a integridade dos dados.
Um exemplo prático no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node para publicar o custo da rede e a qualidade das métricas de serviço. Esse oráculo publica dados agregados no IPFS a cada cinco minutos e registra o hash do arquivo IPFS na cadeia Gnosis. Esses dados são então indexados em um subgráfico, que pode ser consumido pelos participantes do protocolo. O custo associado a esse fluxo de trabalho é surpreendentemente baixo, o que o torna uma opção atraente para os editores de dados.
Esse método de usar o Graph para dados dinâmicos abre novas e interessantes possibilidades para sites da permaweb, incluindo back-ends enxutos para blogs, curadoria de conteúdo algorítmico e sistemas de monitoramento em tempo real. Ele representa uma mudança significativa na forma como os dados são publicados, indexados e acessados, promovendo um ecossistema mais aberto e colaborativo na Web3.
A expansão do Graph para o gerenciamento de dados fora da cadeia abre novos caminhos no ecossistema da Web3, criando uma ponte entre os domínios de dados descentralizados e tradicionais. Essa iniciativa reflete a missão da The Graph de tornar acessível um espectro mais amplo de informações de forma descentralizada, abordando as limitações inerentes ao armazenamento e à computação de dados na cadeia.
O Graph reconhece as compensações relacionadas ao custo do armazenamento e da computação de dados na cadeia em arquiteturas Web3. Embora a interação direta com o blockchain seja simples, os cálculos complexos e o armazenamento de dados em grande escala podem se tornar proibitivamente caros. Para contornar essas limitações, o The Graph apresenta um método que combina o armazenamento de dados fora da cadeia com a referência de dados na cadeia, mantendo assim o espírito descentralizado e aprimorando a funcionalidade.
Computação fora da cadeia e lançamento no IPFS: Os cálculos complexos são realizados fora da cadeia e os dados resultantes são postados no IPFS, uma solução de armazenamento descentralizada. Essa etapa garante que os dados, embora fora da cadeia, sejam armazenados de forma verificável e descentralizada.
Vinculação na cadeia por meio de transações: Além de armazenar dados no IPFS, uma transação correspondente na cadeia é feita para registrar o hash do IPFS e outros metadados relevantes. Esse método ancora os dados fora da cadeia ao blockchain, fornecendo uma camada de confiança e rastreabilidade.
Indexação de subgráficos para acessibilidade: A etapa final envolve a indexação dos dados armazenados no IPFS usando subgrafos. Esse processo torna os dados fora da cadeia facilmente consultáveis e acessíveis por meio da rede descentralizada do The Graph.
Implementação prática: Edge & Node's Oracle
Uma aplicação prática dessa metodologia no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node. Esse oráculo publica métricas de custo de rede e qualidade de serviço a cada cinco minutos da seguinte maneira:
Os dados agregados são publicados no IPFS.
O hash do arquivo IPFS correspondente é então registrado na cadeia Gnosis por meio de um contrato DataEdge.
Esses arquivos IPFS são indexados em um subgráfico, tornando os dados disponíveis para as partes interessadas de forma descentralizada.
Essa implementação demonstra a abordagem de baixo custo, dimensionável e eficiente para publicar e fornecer dados complexos sem a necessidade de APIs proprietárias. Ele exemplifica como o método da The Graph pode ser aproveitado para criar fontes de dados dinâmicas para uma variedade de aplicativos.
Os custos associados a esse fluxo de trabalho são surpreendentemente baixos, o que o torna uma solução atraente para os editores de dados. Por exemplo, a implementação do oráculo pelo Edge & Node incorre em despesas mínimas para transações na cadeia e fixação do nó IPFS, sendo que os custos de atendimento são suportados pelo consumidor de dados. Esse modelo reduz efetivamente a sobrecarga operacional dos editores de dados e, ao mesmo tempo, garante um acesso robusto e confiável aos dados.
Esse método abre novas possibilidades para aplicativos permaweb, como back-ends dinâmicos para blogs, curadoria de conteúdo algorítmico e sistemas de monitoramento em tempo real. Ele permite o particionamento de publicadores de dados de operadores de aplicativos/front-end, incentivando a especialização e a divisão do trabalho em uma comunidade de código aberto. Essa abordagem é promissora para aplicativos e protocolos sociais descentralizados, oferecendo um novo caminho para a publicação e o consumo de dados descentralizados.
A integração do GraphQL como a linguagem de consulta preferida. Essa decisão molda significativamente a maneira como os dados são acessados e interagidos por meio das APIs do The Graph, fornecendo um método simplificado e eficiente para consultar dados de blockchain.
O GraphQL está na vanguarda do design moderno de APIs, oferecendo uma abordagem flexível e eficiente para a recuperação de dados. No contexto do blockchain, em que as estruturas de dados são complexas e estão em constante evolução, a capacidade do GraphQL de buscar exatamente o que é necessário se torna inestimável.
Consultas de dados sob medida: No centro do apelo do GraphQL está sua capacidade de permitir que os clientes definam com precisão a estrutura dos dados de que precisam. Esse recurso é um desvio significativo das respostas tradicionais de estrutura fixa, permitindo uma interação de dados mais focada e eficiente.
Aprimorando as interações em tempo real: Além da simples consulta, o GraphQL no The Graph oferece suporte a assinaturas de dados em tempo real. Esse recurso é vital para aplicativos de blockchain em que atualizações oportunas e capacidade de resposta são fundamentais para a experiência do usuário.
Acesso descentralizado e sem confiança aos dados: O uso do GraphQL pelo Graph amplia sua filosofia de descentralização para o âmbito do acesso aos dados. Ao fazer a interface com uma rede de nós descentralizados, as consultas GraphQL garantem que os dados permaneçam abertos, transparentes e resistentes à censura.
A convergência de APIs e GraphQL
No ecossistema da The Graph, a fusão das APIs com o GraphQL cria um sistema harmônico e poderoso para a recuperação de dados:
Definição de esquema e mapeamento de dados: Os desenvolvedores definem um esquema GraphQL em seu subgráfico, delineando a estrutura dos dados consultáveis. O esquema é então intrinsecamente mapeado para eventos de blockchain, traduzindo as atividades na cadeia em dados estruturados.
Execução de consultas por meio de indexadores: Quando uma consulta GraphQL é enviada a uma API de subgráfico, ela é processada pela rede descentralizada de indexadores do The Graph. Esse processo exemplifica como as consultas são executadas de forma distribuída, mantendo os princípios da tecnologia blockchain.
Manipulação de relacionamentos de dados complexos: Como os relacionamentos de dados complexos são comuns no blockchain, a capacidade do GraphQL de lidar com consultas complexas, incluindo várias formas de filtragem e classificação de dados, é especialmente benéfica.
Os benefícios se revelam para desenvolvedores e usuários finais
A integração do GraphQL no The Graph traz inúmeros benefícios:
No centro da arquitetura do Graph está o Graph Node. Esse componente-chave é responsável por indexar subgráficos e tornar os dados resultantes acessíveis por meio de uma API GraphQL. Ele é o núcleo da pilha do indexador e sua operação eficaz é crucial para a execução de um indexador bem-sucedido. O Graph Node opera com versatilidade, capaz de ser executado em ambientes bare metal e em nuvem, refletindo a adaptabilidade necessária no cenário dinâmico da tecnologia blockchain.
Parte integrante da operação do Graph Node é o banco de dados PostgreSQL, que atua como o armazenamento principal. Esse banco de dados abriga não apenas os dados do subgrafo, mas também metadados sobre subgrafos e dados essenciais da rede, como caches de bloco e eth_call. A organização e o gerenciamento desse banco de dados são essenciais para o bom funcionamento do Graph Node, garantindo a integridade e a acessibilidade dos dados.
Para indexar redes de blockchain, o Graph Node se conecta a clientes de rede por meio de uma API JSON-RPC compatível com EVM. Essa configuração pode variar desde a conexão com um único cliente até um arranjo mais complexo que envolva o balanceamento de carga entre vários clientes. Além disso, a The Graph desenvolveu o Network Firehoses, um serviço gRPC que fornece um fluxo de blocos ordenado e com reconhecimento de bifurcação. Embora atualmente não seja um requisito para indexadores, o Firehose representa um avanço significativo no suporte à indexação de desempenho em escala.
A interação do Graph Node com a rede IPFS é fundamental para armazenar metadados de implantação de subgráficos. Um nó IPFS hospedado no nível da rede simplifica esse processo para os indexadores. Além disso, a integração opcional com um servidor de métricas Prometheus para monitoramento e geração de relatórios acrescenta outra camada de sofisticação, permitindo que os indexadores rastreiem e otimizem o desempenho do Graph Node.
A configuração flexível do Graph Node, desde as opções de instalação até os recursos de dimensionamento, destaca o compromisso da The Graph em acomodar várias necessidades operacionais. O sistema pode ser dimensionado horizontalmente com vários Graph Nodes e bancos de dados, atendendo às crescentes demandas da rede. Os usuários avançados podem aproveitar as opções de configuração do Graph Node, gerenciadas por meio de um arquivo TOML ou variáveis de ambiente, para otimizar o processamento de dados e a distribuição da carga de trabalho.
O Firehose, conceituado e desenvolvido pela StreamingFast, marca uma revolução na extração de dados de nós de blockchain. Essa ferramenta inovadora divide cada transação de um bloco de blockchain em seus menores elementos, salvando-os como arquivos simples e planos. Esses arquivos simples não são apenas um formato de armazenamento; eles incorporam uma mudança de paradigma na indexação de dados. Eles facilitam o processamento paralelo, o que acelera drasticamente as operações de indexação. Essa tecnologia fornece dados avançados e com reconhecimento de bifurcação de nós de blockchain instrumentados diretamente aos consumidores. Em termos práticos, o Firehose demonstrou sua capacidade ao oferecer velocidades de captura e processamento que antes eram consideradas inatingíveis, estabelecendo assim novos padrões para a extração de dados no ecossistema do The Graph.
Os substreams, uma extensão dos recursos fornecidos pelo Firehose, foram projetados para o processamento de dados de alto desempenho de forma paralela e com streaming em primeiro lugar. Esses módulos escritos em Rust permitem que os desenvolvedores componham, classifiquem, armazenem e transformem dados de blockchain para vários usos. A engenhosidade do Substreams está em sua capacidade de utilizar os arquivos simples do Firehose para indexar dados em velocidades excepcionalmente rápidas. Essa abordagem garante que as Substreams não só sejam altamente eficientes no processamento de dados, mas também na distribuição deles assim que estiverem disponíveis, em vez de dependerem de solicitações contínuas.
A integração do Firehose e do Substreams no ecossistema da The Graph oferece uma combinação poderosa para o processamento de dados. O Firehose garante o fornecimento rápido de dados de blockchain em um formato otimizado, enquanto os Substreams refinam e processam ainda mais esses dados. Essa relação sinérgica resulta em uma eficiência incomparável no manuseio de grandes volumes de dados de blockchain, elevando significativamente os recursos do The Graph.
Os subgrafos se tornaram o padrão do setor na indexação de dados de blockchain desde sua introdução pela The Graph em 2018. Elas são essencialmente APIs abertas que extraem, processam e armazenam dados de blockchains, tornando-os facilmente consultáveis por meio de uma interface GraphQL. Com mais de 85.000 subgrafos suportados em mais de 40 cadeias, os subgrafos se tornaram indispensáveis para os desenvolvedores da web3. Eles permitem a rápida implementação de um banco de dados Postgres preenchido com dados indexados, prontos para serem consultados usando uma camada GraphQL. Os subgráficos permitem que os desenvolvedores exibam uma ampla gama de dados de blockchain em seus DApps, de transações DeFi a proveniência NFT, de forma organizada e eficiente.
No cenário em constante evolução da tecnologia blockchain, os subgrafos surgiram como um conceito fundamental, transformando a maneira como interagimos e utilizamos os dados do blockchain. Essas APIs abertas atuam como intermediárias, preenchendo perfeitamente a lacuna entre o mundo descentralizado das cadeias de blocos e o reino familiar dos dados estruturados. Ao extrair, processar e organizar dados de blockchain em um formato consultável, os subgráficos capacitam os desenvolvedores a criar aplicativos inovadores e orientados por dados.
Os subgrafos oferecem uma infinidade de benefícios, o que os torna uma opção atraente para desenvolvedores e usuários. Sua natureza descentralizada garante resistência à censura e ao tempo de inatividade, promovendo um ecossistema de dados seguro e confiável. Além disso, os subgrafos são inerentemente dimensionáveis, capazes de lidar com grandes quantidades de dados sem comprometer o desempenho. A relação custo-benefício é outra vantagem importante, pois os subgráficos costumam ser mais econômicos do que as APIs de dados tradicionais.
Os subgrafos são compostos por três componentes essenciais que trabalham em harmonia para oferecer seus recursos transformadores:
Manifesto: O manifesto serve como o projeto do subgráfico, descrevendo suas fontes de dados, esquema e código AssemblyScript. Ele define os limites dos dados que o subgráfico indexará, garantindo que somente as informações relevantes sejam capturadas.
Esquema: O esquema define a estrutura dos dados, semelhante à planta de um edifício. Ele descreve as entidades, os campos e os relacionamentos entre as entidades, fornecendo uma maneira clara e organizada de representar os dados.
Código AssemblyScript: Esse código executável atua como o carro-chefe do subgráfico, traduzindo os dados brutos de blockchains em um formato que o mecanismo GraphQL possa compreender. Ele também lida com a indexação e o armazenamento de dados, garantindo sua acessibilidade e confiabilidade.
A criação de um subgráfico envolve uma série de etapas, cada uma delas cuidadosamente elaborada para garantir a funcionalidade e a eficácia do subgráfico:
Conceituando e projetando: A jornada começa com uma ideia clara dos dados a serem indexados e dos aplicativos que serão utilizados. Isso envolve definir as entidades, os campos e os relacionamentos entre eles, garantindo que a estrutura do subgráfico esteja alinhada com a finalidade pretendida.
Desenvolvimento do manifesto e do esquema: O manifesto e o esquema são meticulosamente elaborados, fornecendo a base para a arquitetura de dados do subgráfico. O manifesto especifica os recursos de dados, enquanto o esquema descreve a estrutura de dados, garantindo a integridade e a consistência dos dados.
Implementação do código AssemblyScript: O código AssemblyScript é escrito, traduzindo os dados brutos do blockchain em um formato que o GraphQL possa entender. Ele lida com a indexação, o armazenamento e a recuperação de dados, permitindo o acesso eficiente aos dados indexados.
Depois que o subgráfico é desenvolvido, ele passa por um processo de implantação que o apresenta ao mundo:
Integração com o Subgraph Studio: O Subgraph Studio funciona como uma plataforma centralizada para o gerenciamento de subgrafos. Ele facilita o processo de implantação, permitindo que os desenvolvedores publiquem seus subgráficos na rede descentralizada.
Indexação e curadoria: Os indexadores, responsáveis por buscar e armazenar dados de blockchain, são essenciais para tornar os subgráficos acessíveis aos desenvolvedores. A curadoria, normalmente feita por meio de tokens GRT, incentiva os indexadores a priorizar os subgráficos com alta demanda.
Consulta e utilização: Os desenvolvedores agora podem consultar o subgráfico implantado usando consultas GraphQL, recuperando dados específicos adaptados às necessidades de seus aplicativos. Essa integração perfeita permite que os desenvolvedores aproveitem os dados do blockchain para inovar.
À medida que o Graph embarca em sua nova era (exploraremos isso na lição 5), a evolução contínua dessas tecnologias essenciais - subgrafos, Firehose e Substreams - é aguardada com ansiedade. Esses componentes devem se expandir e evoluir, desempenhando papéis vitais na introdução de novos serviços de dados e garantindo fluxos de dados mais rápidos e modulares. O Verifiable Firehose, por exemplo, está pronto para ser uma solução inovadora para acessar dados históricos da Ethereum, abordando os desafios da evolução dos padrões de blockchain.
É fundamental distinguir entre subgrafos e substratos, pois eles têm finalidades diferentes. Os subgráficos são ideais para recuperação e gerenciamento de dados padrão, oferecendo facilidade de configuração e uso com uma camada de consulta GraphQL. Por outro lado, os Substreams são adaptados para necessidades mais complexas de análise e big data, oferecendo processamento de dados paralelizados e maior flexibilidade no manuseio e armazenamento de dados. Os substreams permitem que os desenvolvedores transformem dados de formatos de arquivos básicos em formas mais utilizáveis, atendendo a requisitos sofisticados de processamento de dados.
O Graph, tradicionalmente conhecido por sua proeza na organização de dados na cadeia, agora está expandindo seus horizontes ao se aventurar no reino dos dados fora da cadeia. Essa abordagem está alinhada com a missão de longo prazo do The Graph de fornecer acesso fácil ao conhecimento e às informações públicas do mundo.
Na arquitetura Web3, embora os usuários possam interagir diretamente com o blockchain por meio de serviços de middleware, há uma compensação, especialmente no que diz respeito ao custo. Os custos de transação na cadeia, geralmente chamados de taxas de gás, podem ser proibitivamente altos para cálculos complexos ou armazenamento extensivo de dados. Historicamente, essa limitação tem restringido a complexidade dos aplicativos ou levado os desenvolvedores a criar APIs proprietárias fora da cadeia, afastando-se dos modelos de código aberto.
O Graph apresenta uma solução exclusiva para esse desafio, permitindo a organização e o fornecimento de dados fora da cadeia por meio de sua rede descentralizada. Esse método envolve um fluxo de trabalho em que os dados tradicionalmente fora da cadeia são postados no IPFS (InterPlanetary File System) e os hashes do IPFS são registrados na cadeia. Posteriormente, esses dados podem ser indexados por subgrafos e disponibilizados para consulta. Essa abordagem oferece uma maneira dimensionável e econômica de publicar e fornecer dados complexos e dinâmicos sem a sobrecarga de criar e manter APIs proprietárias.
Cron Jobs para computação e publicação de dados: Um cron job off-chain executa cálculos complexos e publica os resultados em uma fonte permaweb, como o IPFS, indexável pelo The Graph. Esse trabalho também gera uma transação na cadeia para publicar o hash do arquivo IPFS e quaisquer metadados relevantes.
Publicação do subgrafo para indexação: A próxima etapa envolve a publicação de um subgráfico que indexa esses arquivos IPFS com base nos hashes de arquivo postados na cadeia. Depois que o subgráfico é publicado, ele pode ser coletado e servido por indexadores na rede do The Graph, permitindo que desenvolvedores e usuários de terceiros consultem os dados.
Acesso robusto e confiável aos dados: Ao aproveitar a rede distribuída de indexadores da The Graph, o acesso aos dados permanece robusto e confiável sem esforço adicional do editor de dados. Essa estrutura descentralizada aumenta significativamente a disponibilidade e a integridade dos dados.
Um exemplo prático no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node para publicar o custo da rede e a qualidade das métricas de serviço. Esse oráculo publica dados agregados no IPFS a cada cinco minutos e registra o hash do arquivo IPFS na cadeia Gnosis. Esses dados são então indexados em um subgráfico, que pode ser consumido pelos participantes do protocolo. O custo associado a esse fluxo de trabalho é surpreendentemente baixo, o que o torna uma opção atraente para os editores de dados.
Esse método de usar o Graph para dados dinâmicos abre novas e interessantes possibilidades para sites da permaweb, incluindo back-ends enxutos para blogs, curadoria de conteúdo algorítmico e sistemas de monitoramento em tempo real. Ele representa uma mudança significativa na forma como os dados são publicados, indexados e acessados, promovendo um ecossistema mais aberto e colaborativo na Web3.
A expansão do Graph para o gerenciamento de dados fora da cadeia abre novos caminhos no ecossistema da Web3, criando uma ponte entre os domínios de dados descentralizados e tradicionais. Essa iniciativa reflete a missão da The Graph de tornar acessível um espectro mais amplo de informações de forma descentralizada, abordando as limitações inerentes ao armazenamento e à computação de dados na cadeia.
O Graph reconhece as compensações relacionadas ao custo do armazenamento e da computação de dados na cadeia em arquiteturas Web3. Embora a interação direta com o blockchain seja simples, os cálculos complexos e o armazenamento de dados em grande escala podem se tornar proibitivamente caros. Para contornar essas limitações, o The Graph apresenta um método que combina o armazenamento de dados fora da cadeia com a referência de dados na cadeia, mantendo assim o espírito descentralizado e aprimorando a funcionalidade.
Computação fora da cadeia e lançamento no IPFS: Os cálculos complexos são realizados fora da cadeia e os dados resultantes são postados no IPFS, uma solução de armazenamento descentralizada. Essa etapa garante que os dados, embora fora da cadeia, sejam armazenados de forma verificável e descentralizada.
Vinculação na cadeia por meio de transações: Além de armazenar dados no IPFS, uma transação correspondente na cadeia é feita para registrar o hash do IPFS e outros metadados relevantes. Esse método ancora os dados fora da cadeia ao blockchain, fornecendo uma camada de confiança e rastreabilidade.
Indexação de subgráficos para acessibilidade: A etapa final envolve a indexação dos dados armazenados no IPFS usando subgrafos. Esse processo torna os dados fora da cadeia facilmente consultáveis e acessíveis por meio da rede descentralizada do The Graph.
Implementação prática: Edge & Node's Oracle
Uma aplicação prática dessa metodologia no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node. Esse oráculo publica métricas de custo de rede e qualidade de serviço a cada cinco minutos da seguinte maneira:
Os dados agregados são publicados no IPFS.
O hash do arquivo IPFS correspondente é então registrado na cadeia Gnosis por meio de um contrato DataEdge.
Esses arquivos IPFS são indexados em um subgráfico, tornando os dados disponíveis para as partes interessadas de forma descentralizada.
Essa implementação demonstra a abordagem de baixo custo, dimensionável e eficiente para publicar e fornecer dados complexos sem a necessidade de APIs proprietárias. Ele exemplifica como o método da The Graph pode ser aproveitado para criar fontes de dados dinâmicas para uma variedade de aplicativos.
Os custos associados a esse fluxo de trabalho são surpreendentemente baixos, o que o torna uma solução atraente para os editores de dados. Por exemplo, a implementação do oráculo pelo Edge & Node incorre em despesas mínimas para transações na cadeia e fixação do nó IPFS, sendo que os custos de atendimento são suportados pelo consumidor de dados. Esse modelo reduz efetivamente a sobrecarga operacional dos editores de dados e, ao mesmo tempo, garante um acesso robusto e confiável aos dados.
Esse método abre novas possibilidades para aplicativos permaweb, como back-ends dinâmicos para blogs, curadoria de conteúdo algorítmico e sistemas de monitoramento em tempo real. Ele permite o particionamento de publicadores de dados de operadores de aplicativos/front-end, incentivando a especialização e a divisão do trabalho em uma comunidade de código aberto. Essa abordagem é promissora para aplicativos e protocolos sociais descentralizados, oferecendo um novo caminho para a publicação e o consumo de dados descentralizados.
A integração do GraphQL como a linguagem de consulta preferida. Essa decisão molda significativamente a maneira como os dados são acessados e interagidos por meio das APIs do The Graph, fornecendo um método simplificado e eficiente para consultar dados de blockchain.
O GraphQL está na vanguarda do design moderno de APIs, oferecendo uma abordagem flexível e eficiente para a recuperação de dados. No contexto do blockchain, em que as estruturas de dados são complexas e estão em constante evolução, a capacidade do GraphQL de buscar exatamente o que é necessário se torna inestimável.
Consultas de dados sob medida: No centro do apelo do GraphQL está sua capacidade de permitir que os clientes definam com precisão a estrutura dos dados de que precisam. Esse recurso é um desvio significativo das respostas tradicionais de estrutura fixa, permitindo uma interação de dados mais focada e eficiente.
Aprimorando as interações em tempo real: Além da simples consulta, o GraphQL no The Graph oferece suporte a assinaturas de dados em tempo real. Esse recurso é vital para aplicativos de blockchain em que atualizações oportunas e capacidade de resposta são fundamentais para a experiência do usuário.
Acesso descentralizado e sem confiança aos dados: O uso do GraphQL pelo Graph amplia sua filosofia de descentralização para o âmbito do acesso aos dados. Ao fazer a interface com uma rede de nós descentralizados, as consultas GraphQL garantem que os dados permaneçam abertos, transparentes e resistentes à censura.
A convergência de APIs e GraphQL
No ecossistema da The Graph, a fusão das APIs com o GraphQL cria um sistema harmônico e poderoso para a recuperação de dados:
Definição de esquema e mapeamento de dados: Os desenvolvedores definem um esquema GraphQL em seu subgráfico, delineando a estrutura dos dados consultáveis. O esquema é então intrinsecamente mapeado para eventos de blockchain, traduzindo as atividades na cadeia em dados estruturados.
Execução de consultas por meio de indexadores: Quando uma consulta GraphQL é enviada a uma API de subgráfico, ela é processada pela rede descentralizada de indexadores do The Graph. Esse processo exemplifica como as consultas são executadas de forma distribuída, mantendo os princípios da tecnologia blockchain.
Manipulação de relacionamentos de dados complexos: Como os relacionamentos de dados complexos são comuns no blockchain, a capacidade do GraphQL de lidar com consultas complexas, incluindo várias formas de filtragem e classificação de dados, é especialmente benéfica.
Os benefícios se revelam para desenvolvedores e usuários finais
A integração do GraphQL no The Graph traz inúmeros benefícios: