Docs
La Recherche⌘ K
  • Accueil
  • À propos de The Graph
  • Réseaux pris en charge
  • Contrats du Protocole
  • Subgraphs
    • Substreams
      • Token API
        • AI Suite
          • Indexing
            • Resources
              Indexing

              6 minutes

              GraphTally Guide

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

              Aperçu

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

              • Gère efficacement les micropaiements.
              • Ajoute une couche de consolidations aux transactions et aux coûts onchain.
              • Permet aux Indexeurs de contrôler les recettes et les paiements, garantissant ainsi le paiement des requêtes.
              • Il permet des passerelles décentralisées, sans confiance, et améliore les performances du service d’indexation pour les expéditeurs multiples.

              Spécificités⁠

              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.

              Pour chaque requête, la passerelle vous enverra un reçu signé qui sera stocké dans votre base de données. Ensuite, ces requêtes seront agrégées par un tap-agent par le biais d’une demande. Vous recevrez ensuite un RAV. Vous pouvez mettre à jour un RAV en l’envoyant avec des reçus plus récents, ce qui générera un nouveau RAV avec une valeur plus élevée.

              À propos des RAV

              • C’est de l’argent qui attend d’être envoyé à la blockchain.

              • Il continuera à envoyer des demandes d’agrégation et veillera à ce que la valeur totale des recettes non agrégées ne dépasse pas le « montant que vous êtes prêt à risquer de perdre ».

              • Chaque RAV ne peut être racheté qu’une seule fois dans les contrats, c’est pourquoi ils sont envoyés après la clôture de l’allocation.

              Rachat de RAV

              Tant que vous exécutez tap-agent et indexer-agent, tout sera exécuté automatiquement. Voici une description détaillée du processus :

              1. Un Indexeur clôture l’allocation.

              2. Pendant la période <recently-closed-allocation-buffer>, tap-agent regroupe tous les reçus (receipts) en attente pour cette allocation particulière et demande leur agrégation dans un RAV, en le marquant comme « dernier » (last).

              3. indexer-agent récupère tous les derniers RAVS et envoie des demandes de rachat à la blockchain, qui mettra à jour la valeur de redeem_at.

              4. Pendant la période <finality-time>, indexer-agent surveille si la blockchain a des réorganisations qui annulent la transaction.

                • Si elle a été annulée, la RAV est renvoyée à la blockchain. S’il n’a pas été modifié, il est marqué comme final.

              Adresses sur la blockchain

              Contrats

              ContratMainnet Arbitrum (42161)Arbitrum Sepolia (421614)
              TAP Verifier0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a0xfC24cE7a4428A6B89B52645243662A02BA734ECF
              AllocationIDTracker0x5B2F33d7Ca6Ec88f5586f2528f58c20843D9FE7c0xAaC28a10d707bbc6e02029f1bfDAEB5084b2aD11
              Tiers de confiance (Escrow)0x8f477709eF277d4A880801D01A140a9CF88bA0d30x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02

              Passerelle (Gateway)

              ComposantMainnet Node et Edge (Arbitrum Mainnet)Testnet Node et Edge (Arbitrum Mainnet)
              Sender0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F4670xC3dDf37906724732FfD748057FEBe23379b0710D
              Signataires0xfF4B7A5EfD00Ff2EC3518D4F250A27e4c29A22110xFb142dE83E261e43a81e9ACEADd1c66A0DB121FE
              Aggregateurhttps://tap-aggregator.network.thegraph.comhttps://tap-aggregator.testnet.thegraph.com

              Prérequis

              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.

              • Graph TAP Arbitrum Sepolia Subgraph (for The Graph testnet)
              • Graph TAP Arbitrum One Subgraph (for The Graph mainnet)

              Note: indexer-agent does not currently handle the indexing of this Subgraph like it does for the network Subgraph deployment. As a result, you have to index it manually.

              Guide De Migration

              Versions du logiciel

              La version requise du logiciel peut être trouvée ici⁠.

              Étapes

              1. Agent d’indexeur

                • Suivez le même processus⁠.
                • Give the new argument --tap-subgraph-endpoint to activate the new GraphTally codepaths and enable redeeming of RAVs.
              2. Indexer Service

                • Remplacez complètement votre configuration actuelle par le nouveau service d’Indexeur rs⁠. Il est recommandé d’utiliser l’image du conteneur⁠.
                • Comme dans la version précédente, vous pouvez facilement faire monter Indexer Service en charge (scaling horizontal) car il reste sans état (stateless).
              3. TAP Agent

                • Exécutez une seule instance de Agent TAP⁠ à tout moment. Il est recommandé d’utiliser l’image de conteneur⁠.
              4. Configuration de l’Indexer Service et du TAP Agent

                La configuration se fait via un fichier TOML partagé entre indexer-service et tap-agent, passé en paramètre par --config /path/to/config.toml.

                Consultez la configuration complète⁠ et les valeurs par défaut⁠

              Pour une configuration minimale, utilisez le modèle suivant :

              1# You will have to change *all* the values below to match your setup.2#3# Some of the config below are global graph network values, which you can find here:4# <https://github.com/graphprotocol/indexer/tree/main/docs/networks>5#6# Pro tip: if you need to load some values from the environment into this config, you7# can overwrite with environment variables. For example, the following can be replaced8# by [PREFIX]_DATABASE_POSTGRESURL, where PREFIX can be `INDEXER_SERVICE` or `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# The URL of the Postgres database used for the indexer components. The same database19# that is used by the `indexer-agent`. It is expected that `indexer-agent` will create20# the necessary tables.21postgres_url = "postgres://postgres@postgres:5432/postgres"2223[graph_node]24# URL to your graph-node's query endpoint25query_url = "<http://graph-node:8000>"26# URL to your graph-node's status endpoint27status_url = "<http://graph-node:8000/graphql>"2829[subgraphs.network]30# Query URL for the Graph Network Subgraph.31query_url = "<http://example.com/network-subgraph>"32# Optional, deployment to look for in the local `graph-node`, if locally indexed.33# Locally indexing the Subgraph is recommended.34# NOTE: Use `query_url` or `deployment_id` only35deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"3637[subgraphs.escrow]38# Query URL for the Escrow Subgraph.39query_url = "<http://example.com/network-subgraph>"40# Optional, deployment to look for in the local `graph-node`, if locally indexed.41# Locally indexing the Subgraph is recommended.42# NOTE: Use `query_url` or `deployment_id` only43deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"4445[blockchain]46# The chain ID of the network that the graph network is running on47chain_id = 133748# Contract address of TAP's receipt aggregate voucher (RAV) verifier.49receipts_verifier_address = "0x2222222222222222222222222222222222222222"5051########################################52# Specific configurations to tap-agent #53########################################54[tap]55# This is the amount of fees you are willing to risk at any given time. For ex.56# if the sender stops supplying RAVs for long enough and the fees exceed this57# amount, the indexer-service will stop accepting queries from the sender58# until the fees are aggregated.59# NOTE: Use strings for decimal values to prevent rounding errors60# e.g:61# max_amount_willing_to_lose_grt = "0.1"62max_amount_willing_to_lose_grt = 206364[tap.sender_aggregator_endpoints]65# Key-Value of all senders and their aggregator endpoints66# This one below is for the E&N testnet gateway for example.670xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467 = "https://tap-aggregator.network.thegraph.com"

              Notez :

              • Les valeurs de tap.sender_aggregator_endpoints peuvent être trouvées dans la section passerelle.
              • Les valeurs de blockchain.receipts_verifier_address doivent être utilisées conformément à la Section des adresses Blockchain en utilisant le chain id approprié.

              Niveau de journalisation

              • Vous pouvez définir le niveau de journalisation en utilisant la variable d’environnement RUST_LOG.
              • Il est recommandé de le mettre à RUST_LOG=indexer_tap_agent=debug,info.

              Monitoring

              Métriques

              Tous les composants exposent le port 7300 qui peut être interrogé par prometheus.

              Tableau de bord Grafana

              Vous pouvez télécharger le Tableau de bord Grafana⁠ et l’importer.

              Launchpad

              Actuellement, il existe une version WIP de indexer-rs et de tap-agent qui peut être trouvée ici⁠

              ⁠Edit on GitHub⁠

              GraphcastExigences du réseau pris en charge
              On this page
              • Aperçu
              • Spécificités⁠
              • À propos des RAV
              • Rachat de RAV
              • Adresses sur la blockchain
              • Contrats
              • Passerelle (Gateway)
              • Prérequis
              • Guide De Migration
              • Versions du logiciel
              • Étapes
              • Monitoring
              • Métriques
              • Tableau de bord Grafana
              • Launchpad
              The GraphStatusTestnetActifs de la MarqueForumSécuritéPolitique de confidentialitéConditions d'utilisation