Docs
Buscar⌘ K
  • Início
  • Sobre o The Graph
  • Redes Apoiadas
  • Contratos de Protocolo
  • Subgraphs
    • Substreams
      • Token API
        • AI Suite
          • Indexação
            • Recursos
              Subgraphs > Programação

              7 minutos

              Perguntas frequentes do programador

              Esta página resume algumas das perguntas mais comuns para programadores que trabalham no The Graph.

              Perguntas sobre Subgraphs

              1. What is a Subgraph?

              A Subgraph is a custom API built on blockchain data. Subgraphs are queried using the GraphQL query language and are deployed to a Graph Node using The Graph CLI. Once deployed and published to The Graph’s decentralized network, Indexers process Subgraphs and make them available for Subgraph consumers to query.

              2. What is the first step to create a Subgraph?

              To successfully create a Subgraph, you will need to install The Graph CLI. Review the Quick Start to get started. For detailed information, see Creating a Subgraph.

              3. Can I still create a Subgraph if my smart contracts don’t have events?

              It is highly recommended that you structure your smart contracts to have events associated with data you are interested in querying. Event handlers in the Subgraph are triggered by contract events and are the fastest way to retrieve useful data.

              If the contracts you work with do not contain events, your Subgraph can use call and block handlers to trigger indexing. However, this is not recommended, as performance will be significantly slower.

              4. Can I change the GitHub account associated with my Subgraph?

              No. Once a Subgraph is created, the associated GitHub account cannot be changed. Please make sure to carefully consider this before creating your Subgraph.

              5. How do I update a Subgraph on mainnet?

              You can deploy a new version of your Subgraph to Subgraph Studio using the CLI. This action maintains your Subgraph private, but once you’re happy with it, you can publish to Graph Explorer. This will create a new version of your Subgraph that Curators can start signaling on.

              6. Is it possible to duplicate a Subgraph to another account or endpoint without redeploying?

              You have to redeploy the Subgraph, but if the Subgraph ID (IPFS hash) doesn’t change, it won’t have to sync from the beginning.

              7. How do I call a contract function or access a public state variable from my Subgraph mappings?

              Veja o estado de Acesso ao contrato inteligente dentro da secção API AssemblyScript.

              8. Can I import ethers.js or other JS libraries into my Subgraph mappings?

              Não atualmente, afinal, os mapeamentos são escritos em AssemblyScript.

              Uma solução alternativa possível é armazenar dados brutos em entidades e executar uma lógica que exige bibliotecas de JS no cliente.

              9. Ao escutar vários contratos, é possível selecionar a ordem do contrato para escutar eventos?

              Within a Subgraph, the events are always processed in the order they appear in the blocks, regardless of whether that is across multiple contracts or not.

              10. Quais são as diferenças entre modelos e fontes de dados?

              Templates allow you to create data sources quickly, while your Subgraph is indexing. Your contract might spawn new contracts as people interact with it. Since you know the shape of those contracts (ABI, events, etc.) upfront, you can define how you want to index them in a template. When they are spawned, your Subgraph will create a dynamic data source by supplying the contract address.

              Confira a secção “Como instanciar um modelo de fonte de dados” em: Modelos de Fonte de Dados.

              11. Is it possible to set up a Subgraph using graph init from graph-cli with two contracts? Or should I manually add another dataSource in subgraph.yaml after running graph init?

              Sim. No comando graph init, pode-se adicionar várias dataSources ao inserir um contrato após o outro.

              O comando graph add também pode adicionar uma nova dataSource.

              12. Em qual ordem os handlers de evento, bloco, e chamada são ativados para uma fonte de dados?

              Primeiro, handlers de eventos e chamadas são organizados pelo índice de transações dentro do bloco. Handlers de evento e chamada dentro da mesma transação são organizados com uma convenção: handlers de eventos primeiro e depois handlers de chamadas, com cada tipo a respeitar a ordem em que são definidos no manifest. Handlers de blocos são executados após handlers de eventos e chamadas, na ordem em que são definidos no manifest. Estas regras de organizações estão sujeitas a mudanças.

              Com a criação de novas fontes de dados dinâmicas, os handlers definidos para fontes de dados dinâmicas só começarão a processar após o processamento dos handlers das fontes, e se repetirão na mesma sequência sempre que acionados.

              13. Como garantir que estou a usar a versão mais recente do graph-node para as minhas implantações locais?

              Podes executar o seguinte comando:

              1docker pull graphprotocol/graph-node:latest

              Observação: O docker / docker-compose sempre usará a versão do graph-node que foi puxada na primeira vez que o executou, então é importante fazer isto para garantir que está em dia com a versão mais recente do graph-node.

              14. Qual é a forma recomendada de construir ids “autogeradas” para uma entidade ao lidar com eventos?

              Se só uma entidade for criada durante o evento e não houver nada melhor disponível, então o hash da transação + o index do registo seria único. Esses podem ser ofuscados ao converter em Bytes e então passar pelo crypto.keccak256, mas isto não deixará os dados mais singulares.

              15. Can I delete my Subgraph?

              Yes, you can delete and transfer your Subgraph.

              Perguntas sobre Rede

              16. Quais redes são apoiadas pelo The Graph?

              Veja a lista das redes apoiadas aqui.

              17. É possível diferenciar entre redes (mainnet, Sepolia, local) dentro de handlers de eventos?

              Sim. Isto é possível ao importar o graph-ts como no exemplo abaixo:

              1import { dataSource } from '@graphprotocol/graph-ts'23dataSource.network()4dataSource.address()

              18. Vocês apoiam handlers de bloco e de chamadas no Sepolia?

              Sim. O Sepolia apoia handlers de blocos, chamadas e eventos. Vale notar que handlers de eventos têm desempenho muito melhor do que os outros dois e têm apoio em todas as redes compatíveis com EVMs.

              Perguntas sobre Indexação e Queries

              19. É possível especificar o bloco de onde a indexação deve começar?

              Sim. O dataSources.source.startBlock no arquivo subgraph.yaml especifica o número do bloco de onde a fonte de dados começa a indexar. Geralmente, sugerimos usar o bloco em que o contrato foi criado: Blocos de início

              20. What are some tips to increase the performance of indexing? My Subgraph is taking a very long time to sync

              Sim. Confira o recurso opcional de bloco inicial (start block) para começar a indexar do bloco em que o contrato foi lançado: Blocos iniciais

              21. Is there a way to query the Subgraph directly to determine the latest block number it has indexed?

              Sim! Execute o seguinte comando, com “organization/subgraphName” substituído com a organização sob a qual ele foi publicado e o nome do seu subgraph:

              1curl -X POST -d '{ "query": "{indexingStatusForCurrentVersion(subgraphName: \"organization/subgraphName\") { chains { latestBlock { hash number }}}}"}' https://api.thegraph.com/index-node/graphql

              22. Há um limite de quantos objetos o Graph pode retornar por query?

              Normalmente, respostas a queries são limitadas a 100 itens por coleção. Se quiser receber mais, pode subir para até 1000 itens por coleção; além disto, pode paginar com:

              1someCollection(first: 1000, skip: <number>) { ... }

              23. Se a frontend do meu dApp usa o The Graph para queries, eu preciso escrever a minha chave de API diretamente na frontend? E se pagarmos taxas de query para utilizadores — algum utilizador malicioso pode aumentar demais estas taxas?

              Currently, the recommended approach for a dapp is to add the key to the frontend and expose it to end users. That said, you can limit that key to a hostname, like yourdapp.io and Subgraph. The gateway is currently being run by Edge & Node. Part of the responsibility of a gateway is to monitor for abusive behavior and block traffic from malicious clients.

              Outras Perguntas

              24. É possível usar a Apollo Federation juntamente ao graph-node?

              Ainda não há apoio ao Federation. No momento, é possível costurar schemas, seja no cliente ou via um serviço de proxy.

              25. Quero contribuir ou adicionar um problema no GitHub. Onde posso encontrar os repositórios de código aberto?

              • graph-node⁠
              • graph-tooling⁠
              • graph-docs⁠
              • graph-client⁠
              ⁠Editar no GitHub⁠

              Como Apagar um SubgraphCobranças
              Nesta página
              • Perguntas sobre Subgraphs
              • 1. What is a Subgraph?
              • 2. What is the first step to create a Subgraph?
              • 3. Can I still create a Subgraph if my smart contracts don’t have events?
              • 4. Can I change the GitHub account associated with my Subgraph?
              • 5. How do I update a Subgraph on mainnet?
              • 6. Is it possible to duplicate a Subgraph to another account or endpoint without redeploying?
              • 7. How do I call a contract function or access a public state variable from my Subgraph mappings?
              • 8. Can I import ethers.js or other JS libraries into my Subgraph mappings?
              • 9. Ao escutar vários contratos, é possível selecionar a ordem do contrato para escutar eventos?
              • 10. Quais são as diferenças entre modelos e fontes de dados?
              • 11. Is it possible to set up a Subgraph using graph init from graph-cli with two contracts? Or should I manually add another dataSource in subgraph.yaml after running graph init?
              • 12. Em qual ordem os handlers de evento, bloco, e chamada são ativados para uma fonte de dados?
              • 13. Como garantir que estou a usar a versão mais recente do graph-node para as minhas implantações locais?
              • 14. Qual é a forma recomendada de construir ids “autogeradas” para uma entidade ao lidar com eventos?
              • 15. Can I delete my Subgraph?
              • Perguntas sobre Rede
              • 16. Quais redes são apoiadas pelo The Graph?
              • 17. É possível diferenciar entre redes (mainnet, Sepolia, local) dentro de handlers de eventos?
              • 18. Vocês apoiam handlers de bloco e de chamadas no Sepolia?
              • Perguntas sobre Indexação e Queries
              • 19. É possível especificar o bloco de onde a indexação deve começar?
              • 20. What are some tips to increase the performance of indexing? My Subgraph is taking a very long time to sync
              • 21. Is there a way to query the Subgraph directly to determine the latest block number it has indexed?
              • 22. Há um limite de quantos objetos o Graph pode retornar por query?
              • 23. Se a frontend do meu dApp usa o The Graph para queries, eu preciso escrever a minha chave de API diretamente na frontend? E se pagarmos taxas de query para utilizadores — algum utilizador malicioso pode aumentar demais estas taxas?
              • Outras Perguntas
              • 24. É possível usar a Apollo Federation juntamente ao graph-node?
              • 25. Quero contribuir ou adicionar um problema no GitHub. Onde posso encontrar os repositórios de código aberto?
              The GraphStatusRede de TestesAtivos de MarcaFórumSegurançaPolítica de PrivacidadeAcordo de Serviço