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

                5 minutos

                GraphTally Guide

                Learn about The Graph’s new payment system, GraphTally (previously Timeline Aggregation Protocol)⁠. This system provides fast, efficient microtransactions with minimized trust.

                Visão geral

                GraphTally is a drop-in replacement to the Scalar payment system currently in place. It provides the following key features:

                • Processamento eficiente de micropagamentos.
                • Uma camada de consolidações para transações e custos na chain.
                • Controle total de recibos e pagamentos para Indexadores, garantindo pagamentos por queries.
                • Pontes de ligação descentralizadas e livres de confiança, melhorando o desempenho do indexer-service para grupos de remetentes.

                Especificações

                GraphTally allows a sender to make multiple payments to a receiver, Receipts, which aggregates these payments into a single payment, a Receipt Aggregate Voucher, also known as a RAV. This aggregated payment can then be verified on the blockchain, reducing the number of transactions and simplifying the payment process.

                Para cada query, a ponte de ligação enviará um signed receipt (“recibo assinado”) para armazenar na sua base de dados. Estes queries serão então agregados por um tap-agent através de uma solicitação. Depois, você receberá um RAV. Para atualizar um RAV, envie-o com novos recibos para gerar um novo RAV com valor maior.

                Detalhes de um RAV

                • É dinheiro esperando ser enviado à blockchain.

                • Ele continuará a enviar solicitações de agregação e evitará que o valor total de recibos não agregados passe do amount willing to lose (“quantia viável de perder”).

                • Cada RAV pode ser resgatado uma vez nos contratos; é por isto que são enviados após o fechamento da alocação.

                Como resgatar um RAV

                Tudo será executado automaticamente enquanto tap-agent e indexer-agent forem executados. Veja um passo-a-passo do processo:

                1. Um Indexador fecha uma alocação.

                2. <recently-closed-allocation-buffer> period, tap-agent pega todos os recibos pendentes dessa alocação específica e solicita uma agregação para um RAV, marcando como last (“último”).

                3. O indexer-agent pega todos os últimos RAVs e manda solicitações de resgate à blockchain, que atualizará o valor de redeem-at.

                4. Durante o período de <finality-time>, o indexer-agent monitora se a blockchain tem reorganizações que possam reverter a transação.

                  • Se revertida, o RAV é reenviado à blockchain. Se não for revertida, é marcada como final.

                Endereços de Blockchain

                Contratos

                ContratoMainnet Arbitrum (42161)Arbitrum Sepolia (421614)
                Verificador do TAP0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a0xfC24cE7a4428A6B89B52645243662A02BA734ECF
                AllocationIDTracker0x5B2F33d7Ca6Ec88f5586f2528f58c20843D9FE7c0xAaC28a10d707bbc6e02029f1bfDAEB5084b2aD11
                Escrow0x8f477709eF277d4A880801D01A140a9CF88bA0d30x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02

                Porta de Ligação

                ComponenteMainnet Edge and Note (Mainnet Arbitrum)Testnet do Edge and Node (Arbitrum Sepolia)
                Remetente0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F4670xC3dDf37906724732FfD748057FEBe23379b0710D
                Signatários0xfF4B7A5EfD00Ff2EC3518D4F250A27e4c29A22110xFb142dE83E261e43a81e9ACEADd1c66A0DB121FE
                Agregadorhttps://tap-aggregator.network.thegraph.comhttps://tap-aggregator.testnet.thegraph.com

                Pré-requisitos

                In addition to the typical requirements to run an indexer, you’ll need a tap-escrow-subgraph endpoint to query updates. You can use The Graph Network to query or host yourself on your graph-node.

                • Subgraph do TAP do The Graph — Arbitrum Sepolia (para a testnet do The Graph)
                • Subgraph do TAP do The Graph (para a mainnet do The Graph)

                Nota: o indexer-agent atualmente não executa a indexação deste subgraph como faz com a implantação de subgraphs da rede. Portanto, ela deve ser anexada manualmente.

                Guia de migração

                Versões de software

                O software necessário está aqui⁠.

                Passo a passo

                1. Agente Indexador

                  • Siga o mesmo processo⁠.
                  • Give the new argument --tap-subgraph-endpoint to activate the new GraphTally codepaths and enable redeeming of RAVs.
                2. Serviço Indexador

                  • Substitua a sua configuração atual com o novo rs do Serviço Indexador⁠. Vale apena usar a imagem recipiente⁠.
                  • Assim como a versão mais antiga, o Serviço Indexador pode ser horizontalmente escalado com facilidade. Neste caso, ainda não mantém memória.
                3. Agente do TAP

                  • Execute uma instância do Agente do TAP⁠ constantemente. Recomendamos usar a imagem recipiente⁠.
                4. Configuração do Serviço Indexador e Agente do TAP

                  A configuração está num arquivo TOML compartilhado entre indexer-service e tap-agent, providenciada com o argumento --config /path/to/config.toml.

                  Veja a íntegra da configuração⁠ e os valores padrão⁠

                Para o mínimo de configuração, veja o exemplo abaixo:

                1# Mude *todos* os valores abaixo para combinar com a sua configuração.2#3# A config abaixo inclui valores globais da graph network, conforme aqui:4# <https://github.com/graphprotocol/indexer/tree/main/docs/networks>5#6# Fica a dica: se precisar carregar alguns valores do ambiente nesta config, você7# pode reescrever com variáveis de ambiente. Por exemplo, dá para trocar o seguinte8# com [PREFIX]_DATABASE_POSTGRESURL, onde PREFIX pode ser `INDEXER_SERVICE` ou `TAP_AGENT`:9#10# [database]11# postgres_url = "postgresql://indexer:${POSTGRES_PASSWORD}@postgres:5432/indexer_components_0"1213[indexer]14indexer_address = "0x1111111111111111111111111111111111111111"15operator_mnemonic = "celery smart tip orange scare van steel radio dragon joy alarm crane"1617[database]18# A URL do banco de dados Postgres usada para os componentes do indexador; o mesmo19# banco usado pelo `indexer-agent`. Espera-se que o `indexer-agent` crie20# as tabelas necessárias.21postgres_url = "postgres://postgres@postgres:5432/postgres"2223[graph_node]24# URL para o endpoint de queries do seu graph-node25query_url = "<http://graph-node:8000>"26# URL para o endpoint de estado do seu graph-node27status_url = "<http://graph-node:8000/graphql>"2829[subgraphs.network]30# URL de Query para o Subgraph da Graph Network31query_url = "<http://example.com/network-subgraph>"32# Opcional, implantação para buscar no `graph-node` local, se indexada localmente.33# Recomenda-se indexar o Subgraph localmente.34# IMPORTANTE: Só use `query_url` ou `deployment-id`35deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3637[subgraphs.escrow]38# URL de Query para o Subgraph da Escrow39query_url = "<http://example.com/network-subgraph>"40# Opcional, implantação para buscar no `graph-node` local, se indexada localmente.41# Recomenda-se indexar o Subgraph localmente.42# IMPORTANTE: Só use `query_url` ou `deployment-id`43deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"4445[blockchain]46# A ID de chain da rede a executar o Graph Network47chain_id = 133748# Endereço de contrato do verificador de RAV (Prova de Recibos Agregados) do TAP.49receipts_verifier_address = "0x2222222222222222222222222222222222222222"5051########################################52# Configurações específicas ao tap-agent #53########################################54[tap]55# Esta é a quantia de taxas que você pode arriscar a qualquer momento. Por exemplo,56# se o remetente parar de fornecer RAVs por tempo suficiente e as taxas excederem57# essa quantia, o serviço indexador vai parar de aceitar queries do remetente58# até as taxas serem agregadas.59# IMPORTANTE: Use strings de valores decimais, para evitar erros de arredondamento60# e.g:61# max_amount_willing_to_lose_grt = "0.1"62max_amount_willing_to_lose_grt = 206364[tap.sender_aggregator_endpoints]65# Valor-Chave de todos os remetentes e seus endpoints agregadores66# Por exemplo, abaixo está o valor para o gateway da testnet do Edge & Node.670xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467 = "https://tap-aggregator.network.thegraph.com"

                Notas:

                • Os valores de tap.sender_aggregator_endpoints estão na seção sobre pontos de ligação.
                • Os valores de blockchain.receipts_verifier_address devem ser usados conforme a seção sobre endereços de blockchain, usando a ID de chain apropriada.

                Nível de Log

                • Os níveis de log podem ser ajustados pelo variável de ambiente RUST_LOG.
                • Recomendamos configurar para RUST_LOG=indexer_tap_agent=debug,info.

                Monitoração

                Métricas

                Todos os componentes expõem a porta 7300 a queries do Prometheus.

                Paineis de Controle com Grafana

                O painel de controlo do Grafana⁠ pode ser baixado e importado.

                Plataforma de Lançamento

                Atualmente, há uma versão em obras do indexer-rs e tap-agent aqui⁠.

                ⁠Editar no GitHub⁠

                GraphcastRequisitos de Redes Apoiadas
                Nesta página
                • Visão geral
                • Especificações
                • Detalhes de um RAV
                • Como resgatar um RAV
                • Endereços de Blockchain
                • Contratos
                • Porta de Ligação
                • Pré-requisitos
                • Guia de migração
                • Versões de software
                • Passo a passo
                • Monitoração
                • Métricas
                • Paineis de Controle com Grafana
                • Plataforma de Lançamento
                The GraphStatusRede de TestesAtivos de MarcaFórumSegurançaPolítica de PrivacidadeAcordo de Serviço