الدرس رقم 2

Tecnologia por detrás do gráfico

Aprofundando a arquitetura do The Graph, encontramos um sistema complexo, mas elegantemente estruturado, que sustenta o mecanismo de consulta descentralizado no ecossistema de blockchain. Esta estrutura intrincada, centrada no nó gráfico, orquestra uma integração perfeita de vários componentes, cada um desempenhando um papel crítico no funcionamento eficiente da rede.

O nó gráfico: A potência da indexação

No coração da arquitetura do The Graph está o nó Graph. Este componente-chave é responsável por indexar subgrafos e tornar os dados resultantes acessíveis através de uma API GraphQL. É o núcleo da pilha do indexador e o seu funcionamento eficaz é crucial para executar um indexador bem sucedido. O Graph Node opera com versatilidade, capaz de funcionar tanto em ambientes bare metal como em nuvem, refletindo a adaptabilidade necessária no cenário dinâmico da tecnologia blockchain.

Armazenamento de dados em bancos de dados PostgreSQL

O banco de dados PostgreSQL, que atua como o principal armazenamento, é parte integrante da operação do Graph Node. Esta base de dados aloja não só os dados dos subgrafos, mas também metadados sobre os subgrafos e dados essenciais da rede, como caches de blocos e eth_call. A organização e gestão desta base de dados são vitais para o bom funcionamento do Nó Gráfico, garantindo a integridade e acessibilidade dos dados.

Clientes de rede e Firehoses

Para indexar redes blockchain, o Graph Node se conecta a clientes de rede por meio de uma API JSON-RPC compatível com EVM. Esta configuração pode variar desde a ligação a um único cliente até um arranjo mais complexo que envolve o equilíbrio 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 alto desempenho em escala.

Metadados em nós IPFS e monitoramento com o Prometheus

A interação do Graph Node com a rede IPFS é crucial para armazenar metadados de implementação de subgrafos. 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 acompanhem e otimizem o desempenho do nó do Graph.

Escalabilidade e configurações avançadas

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

Indexação e processamento de dados: Firehose e Substreams redefinidos

Firehose: Reinventar a extração de dados Blockchain

O Firehose, conceptualizado e desenvolvido pela StreamingFast, marca uma revolução na extração de dados de nós de blockchain. Esta ferramenta inovadora decompõe cada transação de um bloco da cadeia de blocos nos seus elementos mais pequenos, guardando-os como ficheiros simples e planos. Estes ficheiros planos não são apenas um formato de armazenamento; representam uma mudança de paradigma na indexação de dados. Facilitam o processamento paralelo, o que acelera drasticamente as operações de indexação. Esta tecnologia fornece diretamente aos consumidores dados ricos e sensíveis à bifurcação provenientes de nós de cadeias de blocos instrumentados. Em termos práticos, o Firehose demonstrou a 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 da The Graph.

Substreams: Pioneiros no processamento eficiente de dados

Os substreams, uma extensão das capacidades fornecidas pelo Firehose, foram concebidos para o processamento de dados de elevado desempenho de forma paralela e em fluxo contínuo. 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 reside na sua capacidade de utilizar os ficheiros simples do Firehose para indexar dados a velocidades excecionalmente rápidas. Esta abordagem garante que as Sub-rede não só são altamente eficientes no processamento de dados, mas também na sua distribuição assim que estes ficam disponíveis, em vez de dependerem de pedidos contínuos.

A combinação de Firehose e Substreams

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 a entrega rápida 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 tratamento de grandes volumes de dados de blockchain, elevando significativamente as capacidades do The Graph.

Subgrafos: O padrão da indústria em indexação de dados

Os subgrafos tornaram-se o padrão do setor na indexação de dados de blockchain desde sua introdução pelo The Graph em 2018. São essencialmente APIs abertas que extraem, processam e armazenam dados de cadeias de blocos, tornando-os assim facilmente consultáveis através de uma interface GraphQL. Com mais de 85.000 subgrafos suportados em mais de 40 cadeias, os subgrafos tornaram-se indispensáveis para os programadores web3. Permitem a rápida implementação de uma base de dados Postgres preenchida com dados indexados, pronta para ser consultada utilizando uma camada GraphQL. Os subgráficos permitem que os programadores apresentem uma vasta gama de dados da cadeia de blocos nas suas DApps, desde transacções DeFi a proveniência NFT, de uma forma organizada e eficiente.

No panorama em constante evolução da tecnologia de cadeia de blocos, os subgrafos surgiram como um conceito fundamental, transformando a forma como interagimos e utilizamos os dados da cadeia de blocos. Estas APIs abertas actuam como intermediários, fazendo uma ponte perfeita entre o mundo descentralizado das cadeias de blocos e o domínio familiar dos dados estruturados. Ao extrair, processar e organizar os dados da blockchain num formato consultável, os subgrafos permitem que os programadores criem aplicações inovadoras e orientadas para os dados.

Os subgrafos oferecem uma infinidade de vantagens, o que os torna uma escolha atractiva tanto para os programadores como para os utilizadores. A sua natureza descentralizada garante resistência à censura e ao tempo de inatividade, promovendo um ecossistema de dados seguro e fiável. Além disso, os subgrafos são inerentemente escaláveis, capazes de lidar com grandes quantidades de dados sem comprometer o desempenho. A relação custo-eficácia é outra vantagem fundamental, sendo os subgrafos frequentemente mais económicos do que as API de dados tradicionais.

A arquitetura do subgrafo

Os subgrafos são compostos por três componentes essenciais que funcionam em harmonia para proporcionar as suas capacidades de transformação:

  1. Manifesto: O manifesto serve como o projeto do subgrafo, delineando as suas fontes de dados, esquema e código AssemblyScript. Define os limites dos dados que o subgrafo irá indexar, garantindo que apenas as informações relevantes são capturadas.

  2. Esquema: O esquema define a estrutura dos dados, semelhante à planta de um edifício. Descreve as entidades, os campos e as relações entre entidades, fornecendo uma forma clara e organizada de representar os dados.

  3. Código AssemblyScript: Este código executável actua como o cavalo de batalha do subgrafo, traduzindo os dados brutos das cadeias de blocos para um formato que o motor GraphQL pode compreender. Também trata da indexação e do armazenamento de dados, garantindo a sua acessibilidade e fiabilidade.

Processo de desenvolvimento de subgrafos

A criação de um subgrafo implica uma série de etapas, cada uma delas cuidadosamente elaborada para garantir a funcionalidade e a eficácia do subgrafo:

  1. Conceptualização e conceção: A viagem começa com uma ideia clara dos dados a indexar e das aplicações que irá alimentar. Isto implica definir as entidades, os campos e as relações entre eles, assegurando que a estrutura do subgrafo está de acordo com o objetivo pretendido.

  2. Desenvolvimento do manifesto e do esquema: O manifesto e o esquema são meticulosamente elaborados, fornecendo a base para a arquitetura de dados do subgrafo. O manifesto especifica as fontes de dados, enquanto o esquema descreve a estrutura de dados, garantindo a integridade e a consistência dos dados.

  3. Implementação do código AssemblyScript: O código AssemblyScript é escrito, traduzindo os dados brutos da blockchain para um formato que o GraphQL possa entender. Trata da indexação, do armazenamento e da recuperação de dados, permitindo um acesso eficiente aos dados indexados.

Implantação e publicação de subgrafos

Uma vez desenvolvido o subgrafo, é submetido a um processo de implantação que o apresenta ao mundo:

  1. Integração do Subgraph Studio: O Subgraph Studio funciona como uma plataforma centralizada para a gestão de subgrafos. Facilita o processo de implementação, permitindo que os programadores publiquem os seus subgrafos na rede descentralizada.

  2. Indexação e curadoria: Os indexadores, responsáveis por buscar e armazenar dados de blockchain, são essenciais para tornar os subgrafos acessíveis aos desenvolvedores. A curadoria, normalmente feita através de tokens GRT, incentiva os indexadores a dar prioridade a subgrafos com elevada procura.

  3. Consulta e utilização: Os programadores podem agora consultar o subgrafo implementado utilizando consultas GraphQL, recuperando dados específicos adaptados às necessidades da sua aplicação. Esta integração perfeita permite que os programadores aproveitem os dados da cadeia de blocos para a inovação.

O futuro: A nova era do gráfico

À medida que o Graph embarca em sua Nova Era (vamos explorá-la na Lição 5), a evolução contínua dessas tecnologias centrais - subgrafos, Firehose e Substreams - é aguardada com ansiedade. Estes componentes deverão expandir-se 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á preparado para ser uma solução inovadora para aceder a dados históricos da Ethereum, abordando os desafios da evolução das normas da cadeia de blocos.

Diferenciação de subgrafos de fluxos

É crucial distinguir entre subgrafos e substratos, uma vez que têm objectivos diferentes. Os subgrafos são ideais para a recuperação e gestão de dados padrão, oferecendo facilidade de configuração e utilização com uma camada de consulta GraphQL. Por outro lado, as Substreams são adaptadas para necessidades analíticas e de megadados mais complexas, oferecendo processamento de dados paralelizados e maior flexibilidade no tratamento e armazenamento de dados. As sub-recursos permitem aos programadores transformar dados de formatos de ficheiros básicos em formas mais utilizáveis, satisfazendo requisitos sofisticados de processamento de dados.

Organização de dados fora da cadeia: A abordagem do Graph e o impacto nos pipelines de dados da Web3

O Graph, tradicionalmente conhecido pela sua proeza na organização de dados na cadeia, está agora a expandir os seus horizontes, aventurando-se no domínio 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.

Web3 e as soluções de compromisso na gestão de dados

Na arquitetura Web3, embora os utilizadores possam interagir diretamente com a cadeia de blocos através de serviços de middleware, existe um compromisso, especialmente no que diz respeito ao custo. Os custos de transação na cadeia, frequentemente designados por taxas de gás, podem ser proibitivamente elevados para cálculos complexos ou armazenamento de dados extensivo. Esta limitação tem historicamente restringido a complexidade das aplicações ou levado os programadores a criar APIs proprietárias fora da cadeia, afastando-se dos modelos de código aberto.

A solução exclusiva do Graph para dados fora da cadeia

O Graph apresenta uma solução única para esse desafio, permitindo a organização e o fornecimento de dados fora da cadeia por meio de sua rede descentralizada. Este método envolve um fluxo de trabalho em que os dados tradicionalmente fora da cadeia são lançados no IPFS (InterPlanetary File System) e os hashes do IPFS são depois registados na cadeia. Posteriormente, estes dados podem ser indexados por subgrafos e disponibilizados para consulta. Esta abordagem oferece uma forma escalável e económica de publicar e servir dados complexos e dinâmicos sem as despesas gerais de criação e manutenção de APIs proprietárias.

O fluxo de trabalho: Um processo em três etapas

O fluxo de trabalho é composto por três componentes principais:

  1. Cron Jobs para computação e publicação de dados: Um cron job fora da cadeia executa cálculos complexos e publica os resultados em uma fonte permaweb, como o IPFS, indexável pelo The Graph. Esta tarefa também gera uma transação na cadeia para publicar o hash do ficheiro IPFS e quaisquer metadados relevantes.

  2. Publicação do subgrafo para indexação: O próximo passo envolve a publicação de um subgrafo que indexa esses arquivos IPFS com base nos hashes de arquivo postados na cadeia. Uma vez publicado o subgrafo, este pode ser recolhido e servido por indexadores na rede da The Graph, permitindo a desenvolvedores e utilizadores terceiros consultar os dados.

  3. Acesso robusto e confiável aos dados: Ao aproveitar a rede distribuída de indexadores do Graph, o acesso aos dados permanece robusto e confiável sem esforço adicional do editor de dados. Esta estrutura descentralizada aumenta significativamente a disponibilidade e a integridade dos dados.

Implementação prática e eficiência de custos

Um exemplo prático no ecossistema The Graph é o oráculo desenvolvido pelo Edge & Node para publicar métricas de custo de rede e qualidade de serviço. Este oráculo coloca dados agregados no IPFS a cada cinco minutos e regista o hash do ficheiro IPFS na cadeia Gnosis. Estes dados são depois indexados num subgrafo, que pode ser consumido pelos intervenientes no protocolo. O custo associado a este fluxo de trabalho é surpreendentemente baixo, tornando-o uma opção atractiva para os editores de dados.

Novas possibilidades com dados dinâmicos

Este método de utilização do Graph para dados dinâmicos abre novas e excitantes possibilidades para os sítios permaweb, incluindo back-ends simples para blogues, curadoria algorítmica de conteúdos e sistemas de monitorização em tempo real. Representa uma mudança significativa na forma como os dados são publicados, indexados e acedidos, promovendo um ecossistema web3 mais aberto e colaborativo.

Organização de dados fora da cadeia: A abordagem inovadora do Graph

A expansão do Graph para o gerenciamento de dados fora da cadeia abre novos caminhos no ecossistema 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 espetro mais amplo de informações de forma descentralizada, abordando as limitações inerentes ao armazenamento e à computação de dados na cadeia.

Equilíbrio entre as necessidades de dados na cadeia e fora da cadeia

O Graph reconhece os trade-offs relacionados com os custos do armazenamento de dados na cadeia e da computação em arquitecturas Web3. Embora a interação direta com a cadeia de blocos seja simples, os cálculos complexos e o armazenamento de dados em grande escala podem tornar-se proibitivamente dispendiosos. Para contornar essas limitações, o The Graph introduz um método que combina o armazenamento de dados fora da cadeia com a referência de dados na cadeia, mantendo assim o ethos descentralizado e melhorando a funcionalidade.

A metodologia do gráfico para dados fora da cadeia

Esta abordagem envolve um fluxo de trabalho em três etapas:

  1. Computação fora da cadeia e lançamento de IPFS: Os cálculos complexos são efectuados fora da cadeia e os dados resultantes são lançados no IPFS, uma solução de armazenamento descentralizada. Este passo garante que os dados, enquanto fora da cadeia, são armazenados de forma verificável e descentralizada.

  2. Ligação na cadeia através de transacções: Juntamente com o armazenamento de dados no IPFS, é feita uma transação correspondente na cadeia para registar o hash do IPFS e outros metadados relevantes. Este método ancora os dados fora da cadeia à cadeia de blocos, proporcionando uma camada de confiança e rastreabilidade.

  3. Indexação de subgrafos para acessibilidade: A etapa final envolve a indexação dos dados armazenados no IPFS usando subgrafos. Este processo torna os dados fora da cadeia facilmente consultáveis e acessíveis através da rede descentralizada do The Graph.
    Implementação prática: Edge & Node's Oracle

Uma aplicação prática desta metodologia no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node. Este oráculo publica o custo da rede e as métricas de qualidade de serviço de cinco em cinco minutos da seguinte forma:

  • Os dados agregados são publicados no IPFS.

  • O hash do ficheiro IPFS correspondente é então registado na cadeia Gnosis através de um contrato DataEdge.

  • Estes ficheiros IPFS são indexados num subgrafo, tornando os dados disponíveis para as partes interessadas de uma forma descentralizada.
    Esta implementação demonstra a abordagem de baixo custo, escalável e eficiente para publicar e servir dados complexos sem a necessidade de APIs proprietárias. Exemplifica como o método do The Graph pode ser aproveitado para criar fontes de dados dinâmicas para uma variedade de aplicações.

Eficiência de custos e escalabilidade

Os custos associados a este fluxo de trabalho são surpreendentemente baixos, tornando-o uma solução atractiva para os editores de dados. Por exemplo, a implementação do oráculo pelo Edge & Node incorre em despesas mínimas para transacções na cadeia e fixação do nó IPFS, sendo os custos de serviço suportados pelo consumidor de dados. Este modelo reduz eficazmente as despesas operacionais dos editores de dados, garantindo simultaneamente um acesso robusto e fiável aos dados.

Permitir novos casos de utilização da Web3

Este método abre novas possibilidades para aplicações permaweb, como back-ends dinâmicos para blogues, curadoria algorítmica de conteúdos e sistemas de monitorização em tempo real. Permite a separação entre os editores de dados e os operadores de aplicações/front-end, incentivando a especialização e a divisão do trabalho numa comunidade de código aberto. Esta abordagem é promissora para aplicações e protocolos sociais descentralizados, oferecendo um novo caminho para a publicação e consumo de dados descentralizados.

Linguagem de consulta e APIs no Graph: Abraçando o GraphQL

A integração do GraphQL como a linguagem de consulta de eleição. 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.

Entendendo o papel do GraphQL no gráfico

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 torna-se inestimável.

  1. Consultas de dados sob medida: No centro do apelo do GraphQL está a sua capacidade de permitir que os clientes definam com precisão a estrutura dos dados de que necessitam. Esta capacidade representa um desvio significativo em relação às respostas tradicionais de estrutura fixa, permitindo uma interação de dados mais orientada e eficiente.

  2. Aprimorando as interações em tempo real: Além da simples consulta, o GraphQL no The Graph suporta assinaturas de dados em tempo real. Esta caraterística é vital para as aplicações de cadeia de blocos em que as actualizações atempadas e a capacidade de resposta são fundamentais para a experiência do utilizador.

  3. Acesso descentralizado e sem confiança aos dados: O uso do GraphQL pelo Graph estende sua filosofia de descentralização para o domínio do acesso a 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 harmonioso e poderoso para a recuperação de dados:

  1. Definição de esquema e mapeamento de dados: Os programadores definem um esquema GraphQL no seu subgrafo, descrevendo a estrutura dos dados consultáveis. O esquema é então intrinsecamente mapeado para eventos da cadeia de blocos, traduzindo as actividades na cadeia em dados estruturados.

  2. Executando Consultas através de Indexadores: Quando uma consulta GraphQL é submetida a uma API de subgráfico, ela é processada pela rede descentralizada de indexadores do The Graph. Este processo exemplifica a forma como as consultas são executadas de forma distribuída, defendendo os princípios da tecnologia blockchain.

  3. Lidando com relações complexas de dados: Com relações de dados complexas sendo comuns em blockchain, a capacidade do GraphQL de lidar com consultas complexas, incluindo várias formas de filtragem e classificação de dados, é especialmente benéfica.

As vantagens para os programadores e utilizadores finais

A integração do GraphQL no The Graph traz inúmeros benefícios:

  • Flexibilidade para desenvolvedores: Os programadores podem aproveitar todo o poder do GraphQL para criar consultas que se alinham precisamente com os requisitos da sua aplicação.
  • Obtenção eficiente de dados: A redução dos tempos de obtenção de dados melhora o desempenho da aplicação, traduzindo-se diretamente numa melhor experiência do utilizador final.
  • Integração perfeita de dados: A natureza padronizada das consultas GraphQL simplifica o processo de integração de diversas fontes de dados de blockchain em aplicativos.
إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 2

Tecnologia por detrás do gráfico

Aprofundando a arquitetura do The Graph, encontramos um sistema complexo, mas elegantemente estruturado, que sustenta o mecanismo de consulta descentralizado no ecossistema de blockchain. Esta estrutura intrincada, centrada no nó gráfico, orquestra uma integração perfeita de vários componentes, cada um desempenhando um papel crítico no funcionamento eficiente da rede.

O nó gráfico: A potência da indexação

No coração da arquitetura do The Graph está o nó Graph. Este componente-chave é responsável por indexar subgrafos e tornar os dados resultantes acessíveis através de uma API GraphQL. É o núcleo da pilha do indexador e o seu funcionamento eficaz é crucial para executar um indexador bem sucedido. O Graph Node opera com versatilidade, capaz de funcionar tanto em ambientes bare metal como em nuvem, refletindo a adaptabilidade necessária no cenário dinâmico da tecnologia blockchain.

Armazenamento de dados em bancos de dados PostgreSQL

O banco de dados PostgreSQL, que atua como o principal armazenamento, é parte integrante da operação do Graph Node. Esta base de dados aloja não só os dados dos subgrafos, mas também metadados sobre os subgrafos e dados essenciais da rede, como caches de blocos e eth_call. A organização e gestão desta base de dados são vitais para o bom funcionamento do Nó Gráfico, garantindo a integridade e acessibilidade dos dados.

Clientes de rede e Firehoses

Para indexar redes blockchain, o Graph Node se conecta a clientes de rede por meio de uma API JSON-RPC compatível com EVM. Esta configuração pode variar desde a ligação a um único cliente até um arranjo mais complexo que envolve o equilíbrio 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 alto desempenho em escala.

Metadados em nós IPFS e monitoramento com o Prometheus

A interação do Graph Node com a rede IPFS é crucial para armazenar metadados de implementação de subgrafos. 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 acompanhem e otimizem o desempenho do nó do Graph.

Escalabilidade e configurações avançadas

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

Indexação e processamento de dados: Firehose e Substreams redefinidos

Firehose: Reinventar a extração de dados Blockchain

O Firehose, conceptualizado e desenvolvido pela StreamingFast, marca uma revolução na extração de dados de nós de blockchain. Esta ferramenta inovadora decompõe cada transação de um bloco da cadeia de blocos nos seus elementos mais pequenos, guardando-os como ficheiros simples e planos. Estes ficheiros planos não são apenas um formato de armazenamento; representam uma mudança de paradigma na indexação de dados. Facilitam o processamento paralelo, o que acelera drasticamente as operações de indexação. Esta tecnologia fornece diretamente aos consumidores dados ricos e sensíveis à bifurcação provenientes de nós de cadeias de blocos instrumentados. Em termos práticos, o Firehose demonstrou a 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 da The Graph.

Substreams: Pioneiros no processamento eficiente de dados

Os substreams, uma extensão das capacidades fornecidas pelo Firehose, foram concebidos para o processamento de dados de elevado desempenho de forma paralela e em fluxo contínuo. 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 reside na sua capacidade de utilizar os ficheiros simples do Firehose para indexar dados a velocidades excecionalmente rápidas. Esta abordagem garante que as Sub-rede não só são altamente eficientes no processamento de dados, mas também na sua distribuição assim que estes ficam disponíveis, em vez de dependerem de pedidos contínuos.

A combinação de Firehose e Substreams

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 a entrega rápida 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 tratamento de grandes volumes de dados de blockchain, elevando significativamente as capacidades do The Graph.

Subgrafos: O padrão da indústria em indexação de dados

Os subgrafos tornaram-se o padrão do setor na indexação de dados de blockchain desde sua introdução pelo The Graph em 2018. São essencialmente APIs abertas que extraem, processam e armazenam dados de cadeias de blocos, tornando-os assim facilmente consultáveis através de uma interface GraphQL. Com mais de 85.000 subgrafos suportados em mais de 40 cadeias, os subgrafos tornaram-se indispensáveis para os programadores web3. Permitem a rápida implementação de uma base de dados Postgres preenchida com dados indexados, pronta para ser consultada utilizando uma camada GraphQL. Os subgráficos permitem que os programadores apresentem uma vasta gama de dados da cadeia de blocos nas suas DApps, desde transacções DeFi a proveniência NFT, de uma forma organizada e eficiente.

No panorama em constante evolução da tecnologia de cadeia de blocos, os subgrafos surgiram como um conceito fundamental, transformando a forma como interagimos e utilizamos os dados da cadeia de blocos. Estas APIs abertas actuam como intermediários, fazendo uma ponte perfeita entre o mundo descentralizado das cadeias de blocos e o domínio familiar dos dados estruturados. Ao extrair, processar e organizar os dados da blockchain num formato consultável, os subgrafos permitem que os programadores criem aplicações inovadoras e orientadas para os dados.

Os subgrafos oferecem uma infinidade de vantagens, o que os torna uma escolha atractiva tanto para os programadores como para os utilizadores. A sua natureza descentralizada garante resistência à censura e ao tempo de inatividade, promovendo um ecossistema de dados seguro e fiável. Além disso, os subgrafos são inerentemente escaláveis, capazes de lidar com grandes quantidades de dados sem comprometer o desempenho. A relação custo-eficácia é outra vantagem fundamental, sendo os subgrafos frequentemente mais económicos do que as API de dados tradicionais.

A arquitetura do subgrafo

Os subgrafos são compostos por três componentes essenciais que funcionam em harmonia para proporcionar as suas capacidades de transformação:

  1. Manifesto: O manifesto serve como o projeto do subgrafo, delineando as suas fontes de dados, esquema e código AssemblyScript. Define os limites dos dados que o subgrafo irá indexar, garantindo que apenas as informações relevantes são capturadas.

  2. Esquema: O esquema define a estrutura dos dados, semelhante à planta de um edifício. Descreve as entidades, os campos e as relações entre entidades, fornecendo uma forma clara e organizada de representar os dados.

  3. Código AssemblyScript: Este código executável actua como o cavalo de batalha do subgrafo, traduzindo os dados brutos das cadeias de blocos para um formato que o motor GraphQL pode compreender. Também trata da indexação e do armazenamento de dados, garantindo a sua acessibilidade e fiabilidade.

Processo de desenvolvimento de subgrafos

A criação de um subgrafo implica uma série de etapas, cada uma delas cuidadosamente elaborada para garantir a funcionalidade e a eficácia do subgrafo:

  1. Conceptualização e conceção: A viagem começa com uma ideia clara dos dados a indexar e das aplicações que irá alimentar. Isto implica definir as entidades, os campos e as relações entre eles, assegurando que a estrutura do subgrafo está de acordo com o objetivo pretendido.

  2. Desenvolvimento do manifesto e do esquema: O manifesto e o esquema são meticulosamente elaborados, fornecendo a base para a arquitetura de dados do subgrafo. O manifesto especifica as fontes de dados, enquanto o esquema descreve a estrutura de dados, garantindo a integridade e a consistência dos dados.

  3. Implementação do código AssemblyScript: O código AssemblyScript é escrito, traduzindo os dados brutos da blockchain para um formato que o GraphQL possa entender. Trata da indexação, do armazenamento e da recuperação de dados, permitindo um acesso eficiente aos dados indexados.

Implantação e publicação de subgrafos

Uma vez desenvolvido o subgrafo, é submetido a um processo de implantação que o apresenta ao mundo:

  1. Integração do Subgraph Studio: O Subgraph Studio funciona como uma plataforma centralizada para a gestão de subgrafos. Facilita o processo de implementação, permitindo que os programadores publiquem os seus subgrafos na rede descentralizada.

  2. Indexação e curadoria: Os indexadores, responsáveis por buscar e armazenar dados de blockchain, são essenciais para tornar os subgrafos acessíveis aos desenvolvedores. A curadoria, normalmente feita através de tokens GRT, incentiva os indexadores a dar prioridade a subgrafos com elevada procura.

  3. Consulta e utilização: Os programadores podem agora consultar o subgrafo implementado utilizando consultas GraphQL, recuperando dados específicos adaptados às necessidades da sua aplicação. Esta integração perfeita permite que os programadores aproveitem os dados da cadeia de blocos para a inovação.

O futuro: A nova era do gráfico

À medida que o Graph embarca em sua Nova Era (vamos explorá-la na Lição 5), a evolução contínua dessas tecnologias centrais - subgrafos, Firehose e Substreams - é aguardada com ansiedade. Estes componentes deverão expandir-se 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á preparado para ser uma solução inovadora para aceder a dados históricos da Ethereum, abordando os desafios da evolução das normas da cadeia de blocos.

Diferenciação de subgrafos de fluxos

É crucial distinguir entre subgrafos e substratos, uma vez que têm objectivos diferentes. Os subgrafos são ideais para a recuperação e gestão de dados padrão, oferecendo facilidade de configuração e utilização com uma camada de consulta GraphQL. Por outro lado, as Substreams são adaptadas para necessidades analíticas e de megadados mais complexas, oferecendo processamento de dados paralelizados e maior flexibilidade no tratamento e armazenamento de dados. As sub-recursos permitem aos programadores transformar dados de formatos de ficheiros básicos em formas mais utilizáveis, satisfazendo requisitos sofisticados de processamento de dados.

Organização de dados fora da cadeia: A abordagem do Graph e o impacto nos pipelines de dados da Web3

O Graph, tradicionalmente conhecido pela sua proeza na organização de dados na cadeia, está agora a expandir os seus horizontes, aventurando-se no domínio 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.

Web3 e as soluções de compromisso na gestão de dados

Na arquitetura Web3, embora os utilizadores possam interagir diretamente com a cadeia de blocos através de serviços de middleware, existe um compromisso, especialmente no que diz respeito ao custo. Os custos de transação na cadeia, frequentemente designados por taxas de gás, podem ser proibitivamente elevados para cálculos complexos ou armazenamento de dados extensivo. Esta limitação tem historicamente restringido a complexidade das aplicações ou levado os programadores a criar APIs proprietárias fora da cadeia, afastando-se dos modelos de código aberto.

A solução exclusiva do Graph para dados fora da cadeia

O Graph apresenta uma solução única para esse desafio, permitindo a organização e o fornecimento de dados fora da cadeia por meio de sua rede descentralizada. Este método envolve um fluxo de trabalho em que os dados tradicionalmente fora da cadeia são lançados no IPFS (InterPlanetary File System) e os hashes do IPFS são depois registados na cadeia. Posteriormente, estes dados podem ser indexados por subgrafos e disponibilizados para consulta. Esta abordagem oferece uma forma escalável e económica de publicar e servir dados complexos e dinâmicos sem as despesas gerais de criação e manutenção de APIs proprietárias.

O fluxo de trabalho: Um processo em três etapas

O fluxo de trabalho é composto por três componentes principais:

  1. Cron Jobs para computação e publicação de dados: Um cron job fora da cadeia executa cálculos complexos e publica os resultados em uma fonte permaweb, como o IPFS, indexável pelo The Graph. Esta tarefa também gera uma transação na cadeia para publicar o hash do ficheiro IPFS e quaisquer metadados relevantes.

  2. Publicação do subgrafo para indexação: O próximo passo envolve a publicação de um subgrafo que indexa esses arquivos IPFS com base nos hashes de arquivo postados na cadeia. Uma vez publicado o subgrafo, este pode ser recolhido e servido por indexadores na rede da The Graph, permitindo a desenvolvedores e utilizadores terceiros consultar os dados.

  3. Acesso robusto e confiável aos dados: Ao aproveitar a rede distribuída de indexadores do Graph, o acesso aos dados permanece robusto e confiável sem esforço adicional do editor de dados. Esta estrutura descentralizada aumenta significativamente a disponibilidade e a integridade dos dados.

Implementação prática e eficiência de custos

Um exemplo prático no ecossistema The Graph é o oráculo desenvolvido pelo Edge & Node para publicar métricas de custo de rede e qualidade de serviço. Este oráculo coloca dados agregados no IPFS a cada cinco minutos e regista o hash do ficheiro IPFS na cadeia Gnosis. Estes dados são depois indexados num subgrafo, que pode ser consumido pelos intervenientes no protocolo. O custo associado a este fluxo de trabalho é surpreendentemente baixo, tornando-o uma opção atractiva para os editores de dados.

Novas possibilidades com dados dinâmicos

Este método de utilização do Graph para dados dinâmicos abre novas e excitantes possibilidades para os sítios permaweb, incluindo back-ends simples para blogues, curadoria algorítmica de conteúdos e sistemas de monitorização em tempo real. Representa uma mudança significativa na forma como os dados são publicados, indexados e acedidos, promovendo um ecossistema web3 mais aberto e colaborativo.

Organização de dados fora da cadeia: A abordagem inovadora do Graph

A expansão do Graph para o gerenciamento de dados fora da cadeia abre novos caminhos no ecossistema 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 espetro mais amplo de informações de forma descentralizada, abordando as limitações inerentes ao armazenamento e à computação de dados na cadeia.

Equilíbrio entre as necessidades de dados na cadeia e fora da cadeia

O Graph reconhece os trade-offs relacionados com os custos do armazenamento de dados na cadeia e da computação em arquitecturas Web3. Embora a interação direta com a cadeia de blocos seja simples, os cálculos complexos e o armazenamento de dados em grande escala podem tornar-se proibitivamente dispendiosos. Para contornar essas limitações, o The Graph introduz um método que combina o armazenamento de dados fora da cadeia com a referência de dados na cadeia, mantendo assim o ethos descentralizado e melhorando a funcionalidade.

A metodologia do gráfico para dados fora da cadeia

Esta abordagem envolve um fluxo de trabalho em três etapas:

  1. Computação fora da cadeia e lançamento de IPFS: Os cálculos complexos são efectuados fora da cadeia e os dados resultantes são lançados no IPFS, uma solução de armazenamento descentralizada. Este passo garante que os dados, enquanto fora da cadeia, são armazenados de forma verificável e descentralizada.

  2. Ligação na cadeia através de transacções: Juntamente com o armazenamento de dados no IPFS, é feita uma transação correspondente na cadeia para registar o hash do IPFS e outros metadados relevantes. Este método ancora os dados fora da cadeia à cadeia de blocos, proporcionando uma camada de confiança e rastreabilidade.

  3. Indexação de subgrafos para acessibilidade: A etapa final envolve a indexação dos dados armazenados no IPFS usando subgrafos. Este processo torna os dados fora da cadeia facilmente consultáveis e acessíveis através da rede descentralizada do The Graph.
    Implementação prática: Edge & Node's Oracle

Uma aplicação prática desta metodologia no ecossistema do The Graph é o oráculo desenvolvido pelo Edge & Node. Este oráculo publica o custo da rede e as métricas de qualidade de serviço de cinco em cinco minutos da seguinte forma:

  • Os dados agregados são publicados no IPFS.

  • O hash do ficheiro IPFS correspondente é então registado na cadeia Gnosis através de um contrato DataEdge.

  • Estes ficheiros IPFS são indexados num subgrafo, tornando os dados disponíveis para as partes interessadas de uma forma descentralizada.
    Esta implementação demonstra a abordagem de baixo custo, escalável e eficiente para publicar e servir dados complexos sem a necessidade de APIs proprietárias. Exemplifica como o método do The Graph pode ser aproveitado para criar fontes de dados dinâmicas para uma variedade de aplicações.

Eficiência de custos e escalabilidade

Os custos associados a este fluxo de trabalho são surpreendentemente baixos, tornando-o uma solução atractiva para os editores de dados. Por exemplo, a implementação do oráculo pelo Edge & Node incorre em despesas mínimas para transacções na cadeia e fixação do nó IPFS, sendo os custos de serviço suportados pelo consumidor de dados. Este modelo reduz eficazmente as despesas operacionais dos editores de dados, garantindo simultaneamente um acesso robusto e fiável aos dados.

Permitir novos casos de utilização da Web3

Este método abre novas possibilidades para aplicações permaweb, como back-ends dinâmicos para blogues, curadoria algorítmica de conteúdos e sistemas de monitorização em tempo real. Permite a separação entre os editores de dados e os operadores de aplicações/front-end, incentivando a especialização e a divisão do trabalho numa comunidade de código aberto. Esta abordagem é promissora para aplicações e protocolos sociais descentralizados, oferecendo um novo caminho para a publicação e consumo de dados descentralizados.

Linguagem de consulta e APIs no Graph: Abraçando o GraphQL

A integração do GraphQL como a linguagem de consulta de eleição. 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.

Entendendo o papel do GraphQL no gráfico

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 torna-se inestimável.

  1. Consultas de dados sob medida: No centro do apelo do GraphQL está a sua capacidade de permitir que os clientes definam com precisão a estrutura dos dados de que necessitam. Esta capacidade representa um desvio significativo em relação às respostas tradicionais de estrutura fixa, permitindo uma interação de dados mais orientada e eficiente.

  2. Aprimorando as interações em tempo real: Além da simples consulta, o GraphQL no The Graph suporta assinaturas de dados em tempo real. Esta caraterística é vital para as aplicações de cadeia de blocos em que as actualizações atempadas e a capacidade de resposta são fundamentais para a experiência do utilizador.

  3. Acesso descentralizado e sem confiança aos dados: O uso do GraphQL pelo Graph estende sua filosofia de descentralização para o domínio do acesso a 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 harmonioso e poderoso para a recuperação de dados:

  1. Definição de esquema e mapeamento de dados: Os programadores definem um esquema GraphQL no seu subgrafo, descrevendo a estrutura dos dados consultáveis. O esquema é então intrinsecamente mapeado para eventos da cadeia de blocos, traduzindo as actividades na cadeia em dados estruturados.

  2. Executando Consultas através de Indexadores: Quando uma consulta GraphQL é submetida a uma API de subgráfico, ela é processada pela rede descentralizada de indexadores do The Graph. Este processo exemplifica a forma como as consultas são executadas de forma distribuída, defendendo os princípios da tecnologia blockchain.

  3. Lidando com relações complexas de dados: Com relações de dados complexas sendo comuns em blockchain, a capacidade do GraphQL de lidar com consultas complexas, incluindo várias formas de filtragem e classificação de dados, é especialmente benéfica.

As vantagens para os programadores e utilizadores finais

A integração do GraphQL no The Graph traz inúmeros benefícios:

  • Flexibilidade para desenvolvedores: Os programadores podem aproveitar todo o poder do GraphQL para criar consultas que se alinham precisamente com os requisitos da sua aplicação.
  • Obtenção eficiente de dados: A redução dos tempos de obtenção de dados melhora o desempenho da aplicação, traduzindo-se diretamente numa melhor experiência do utilizador final.
  • Integração perfeita de dados: A natureza padronizada das consultas GraphQL simplifica o processo de integração de diversas fontes de dados de blockchain em aplicativos.
إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.