Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: graphprotocol/indexer
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.20.12
Choose a base ref
...
head repository: graphprotocol/indexer
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Feb 20, 2023

  1. Copy the full SHA
    3cc7a62 View commit details
  2. Revert "docs/networks: Update indexer components versions, epoch subg…

    …raph"
    
    This reverts commit 3cc7a62.
    fordN committed Feb 20, 2023
    Copy the full SHA
    2cc630d View commit details
  3. Copy the full SHA
    2320ba9 View commit details
  4. Copy the full SHA
    de5ec03 View commit details

Commits on Feb 24, 2023

  1. Copy the full SHA
    8463b1f View commit details

Commits on Mar 1, 2023

  1. Copy the full SHA
    38c6983 View commit details
  2. Copy the full SHA
    9ee6d80 View commit details
  3. Copy the full SHA
    d2b87c6 View commit details

Commits on Mar 10, 2023

  1. Copy the full SHA
    d2decbd View commit details
  2. Copy the full SHA
    5544cf8 View commit details
  3. Copy the full SHA
    da62b33 View commit details
  4. agent: update changelog

    tilacog committed Mar 10, 2023
    Copy the full SHA
    0ed20f2 View commit details

Commits on Mar 14, 2023

  1. common, docs: fix ActionInput schema

    `reason` and `priority` fields are mandatory.
    tilacog committed Mar 14, 2023
    Copy the full SHA
    1c0004f View commit details

Commits on Mar 22, 2023

  1. Copy the full SHA
    3b48b06 View commit details
  2. Copy the full SHA
    c38a73c View commit details

Commits on Mar 23, 2023

  1. indexer-cli: replace print.highlight with chalk colors

    hopeyen authored and hopeyen committed Mar 23, 2023
    Copy the full SHA
    2e1e0fc View commit details

Commits on Mar 28, 2023

  1. Copy the full SHA
    42276a8 View commit details
  2. Copy the full SHA
    eed5ca2 View commit details
  3. Copy the full SHA
    478f57a View commit details
  4. Copy the full SHA
    55ee3e0 View commit details
  5. Copy the full SHA
    e763c82 View commit details

Commits on Mar 30, 2023

  1. Copy the full SHA
    437b0e8 View commit details
  2. v0.20.14

    tilacog committed Mar 30, 2023
    Copy the full SHA
    708464b View commit details

Commits on Mar 31, 2023

  1. agent: Remove migration 11

    Errors were encountered when redeploying grafted subgraphs.
    We are dropping this migration so the Agent can start successfully.
    tilacog committed Mar 31, 2023
    Copy the full SHA
    1f594f3 View commit details

Commits on Apr 12, 2023

  1. Copy the full SHA
    c9718e5 View commit details

Commits on Apr 14, 2023

  1. indexer-service: Update index-node GraphQL server schema

    - Update schema filter to include root fields needed by the GraphIX data
    comparison and debugging tool
    fordN committed Apr 14, 2023
    Copy the full SHA
    25b9ac1 View commit details
  2. Partially reverts PR #615

    Partially reverts PR #615
    tilacog committed Apr 14, 2023
    Copy the full SHA
    260e9fc View commit details
  3. v0.20.15

    tilacog committed Apr 14, 2023
    Copy the full SHA
    3927d83 View commit details

Commits on Apr 19, 2023

  1. v0.20.16

    tilacog committed Apr 19, 2023
    Copy the full SHA
    67e7d41 View commit details

Commits on May 5, 2023

  1. Copy the full SHA
    711e3aa View commit details

Commits on May 16, 2023

  1. indexer-common: Only check action batch feasibility at a batch level

    - Only check one time, for the entire batch of actions
    - Removes stake feasibility check from individual actions in favor
    of the batch level check, except in the case of the allocations
    cli which only takes one action at a time
    fordN committed May 16, 2023
    Copy the full SHA
    451b11c View commit details
  2. Copy the full SHA
    9c20e03 View commit details
  3. Copy the full SHA
    7ebf16d View commit details

Commits on Jun 5, 2023

  1. added fantom and polygon to feature support matrix

    Proposing adding support for Fantom and Polygon to the feature support matrix. This PR will be included in the GGP (Graph Governance Proposal) to be created here https://snapshot.org/#/council.graphprotocol.eth.
    
    This PR should be merged after Council approval. Afterward, the reference to the canonical GGP-ratified feature support matrix (end of the .md) will be updated.
    pdiogo authored and pdiogo committed Jun 5, 2023
    Copy the full SHA
    ffb30ca View commit details
  2. changed polygon' network name to 'matic', the official network name r…

    …ecognized by the availability oracle
    Pedro Diogo authored and pdiogo committed Jun 5, 2023
    Copy the full SHA
    43c7e23 View commit details

Commits on Jun 13, 2023

  1. Copy the full SHA
    c3eb328 View commit details

Commits on Jun 14, 2023

  1. update networks docs

    trader-payne authored and neysofu committed Jun 14, 2023
    Copy the full SHA
    d1decc7 View commit details
  2. update network subgraphs ipfs hashes

    trader-payne authored and neysofu committed Jun 14, 2023
    Copy the full SHA
    3681cf9 View commit details

Commits on Jun 19, 2023

  1. indexer-common: Update partial-vouchers encoding

    - Use JSON for partial-vouchers encoding
    - Improve logging
    - Update partial voucher encoding tests
    fordN committed Jun 19, 2023
    Copy the full SHA
    9bb27f9 View commit details
  2. Copy the full SHA
    0b43779 View commit details
  3. v0.20.17

    fordN committed Jun 19, 2023
    Copy the full SHA
    51c2d9b View commit details

Commits on Jun 23, 2023

  1. Copy the full SHA
    e1cb363 View commit details
  2. Copy the full SHA
    6870e07 View commit details

Commits on Jun 28, 2023

  1. Copy the full SHA
    0260b44 View commit details
  2. fix: formatting

    pcarranzav authored and tilacog committed Jun 28, 2023
    Copy the full SHA
    f8786c9 View commit details

Commits on Aug 11, 2023

  1. one single feature matrix for protocol deployment on ethereum mainnet…

    … and arbitrum one. Updated the matrix to include indexing rewards for substreams
    Pedro Diogo authored and pdiogo committed Aug 11, 2023
    Copy the full SHA
    1e2265d View commit details
  2. added link to feature matrix support md file to networks.md

    Pedro Diogo authored and pdiogo committed Aug 11, 2023
    Copy the full SHA
    0605ab3 View commit details
  3. docs: update network subgraph deployment values

    Signed-off-by: Tomás Migone <tomas@edgeandnode.com>
    tmigone committed Aug 11, 2023
    Copy the full SHA
    e1181d1 View commit details
  4. Copy the full SHA
    c3ffee0 View commit details
  5. Copy the full SHA
    1c48c6a View commit details
Showing with 18,682 additions and 16,776 deletions.
  1. +5 −0 .env.example
  2. +6 −3 .github/workflows/check-formatting.yml
  3. +10 −9 .github/workflows/ci.yml
  4. +1 −1 .github/workflows/codeql-analysis.yml
  5. +9 −1 .github/workflows/indexer-agent-image.yml
  6. +9 −1 .github/workflows/indexer-cli-image.yml
  7. +0 −48 .github/workflows/indexer-service-image.yml
  8. +0 −60 .github/workflows/publish-native-binaries.yml
  9. +1 −0 .gitignore
  10. +7 −13 Dockerfile.indexer-agent
  11. +4 −10 Dockerfile.indexer-cli
  12. +0 −67 Dockerfile.indexer-service
  13. +44 −108 README.md
  14. +3 −3 docs/action-queue.md
  15. +5 −5 docs/errors.md
  16. +55 −23 docs/feature-support-matrix.md
  17. +5 −5 docs/networks.md
  18. +92 −0 docs/networks/arbitrum-one.md
  19. +123 −0 docs/networks/arbitrum-sepolia.md
  20. +33 −0 docs/networks/config-examples/arbitrum-sepolia-indexer-agent-config.yaml
  21. +31 −0 docs/networks/config-examples/sepolia-indexer-agent-config.yaml
  22. +0 −106 docs/networks/mainnet.md
  23. +0 −104 docs/networks/testnet.md
  24. +0 −97 docs/scalar.md
  25. +49 −0 docs/subgraph-freshness.md
  26. +9 −9 docs/testnet-setup.md
  27. +0 −7 k8s/base/indexer-service/backend_config.yaml
  28. +0 −16 k8s/base/indexer-service/service.yaml
  29. +0 −94 k8s/base/indexer-service/statefulset.yaml
  30. +0 −3 k8s/base/kustomization.yaml
  31. +0 −3 k8s/overlays/kustomization.yaml
  32. +1 −1 lerna.json
  33. +27 −0 network-configs/config.yaml
  34. +20 −14 package.json
  35. +0 −486 packages/indexer-agent/CHANGELOG.md
  36. +151 −42 packages/indexer-agent/README.md
  37. +8 −2 packages/indexer-agent/jest.config.js
  38. +26 −18 packages/indexer-agent/package.json
  39. +43 −1 packages/indexer-agent/src/__tests__/agent.ts
  40. +55 −56 packages/indexer-agent/src/__tests__/indexer.ts
  41. +550 −380 packages/indexer-agent/src/agent.ts
  42. +161 −0 packages/indexer-agent/src/commands/common-options.ts
  43. +532 −511 packages/indexer-agent/src/commands/start.ts
  44. +0 −102 packages/indexer-agent/src/cost.ts
  45. +454 −0 packages/indexer-agent/src/db/migrations/11-add-protocol-network-field.ts
  46. +229 −0 packages/indexer-agent/src/db/migrations/12-add-scalar-tap-table.ts
  47. +77 −0 packages/indexer-agent/src/db/migrations/13-add-scalar-tap-deny-list.ts
  48. +150 −0 packages/indexer-agent/src/db/migrations/14-cost-models-history.ts
  49. +94 −0 packages/indexer-agent/src/db/migrations/14-use-new-deployment-pause-mechanism.ts
  50. +64 −0 packages/indexer-agent/src/db/migrations/15-modify-scalar-tap-tables.ts
  51. +34 −0 packages/indexer-agent/src/db/migrations/16-modify-invalid-receipts-table.ts
  52. +62 −0 packages/indexer-agent/src/db/migrations/17-edit-cost-models-trigger.ts
  53. +58 −18 packages/indexer-agent/src/index.ts
  54. +0 −888 packages/indexer-agent/src/indexer.ts
  55. +51 −14 packages/indexer-agent/src/syncing-server.ts
  56. +18 −11 packages/indexer-agent/src/types.ts
  57. +0 −39 packages/indexer-agent/src/utils/balance-monitor.ts
  58. +0 −1 packages/indexer-agent/src/utils/index.ts
  59. +1 −1 packages/indexer-agent/tsconfig.json
  60. +0 −230 packages/indexer-cli/CHANGELOG.md
  61. +32 −29 packages/indexer-cli/README.md
  62. +12 −8 packages/indexer-cli/jest.config.js
  63. +14 −12 packages/indexer-cli/package.json
  64. +4 −14 packages/indexer-cli/src/__tests__/cli.test.ts
  65. +10 −28 packages/indexer-cli/src/__tests__/indexer/actions.test.ts
  66. +17 −24 packages/indexer-cli/src/__tests__/indexer/cost.test.ts
  67. +68 −49 packages/indexer-cli/src/__tests__/indexer/rules.test.ts
  68. +2 −2 packages/indexer-cli/src/__tests__/references/indexer-actions-get-fields.stdout
  69. +1 −1 packages/indexer-cli/src/__tests__/references/indexer-actions-get-first-fields.stdout
  70. +1 −1 packages/indexer-cli/src/__tests__/references/indexer-actions-get-first.stdout
  71. +2 −2 packages/indexer-cli/src/__tests__/references/indexer-actions-get.stdout
  72. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-connect.stdout
  73. +7 −11 packages/indexer-cli/src/__tests__/references/indexer-cost-all.stdout
  74. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-cost-deployment-model-only.stdout
  75. +5 −7 packages/indexer-cli/src/__tests__/references/indexer-cost-deployment-variables-only.stdout
  76. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-cost-model-deployment-multinetworks.stdout
  77. +1 −1 packages/indexer-cli/src/__tests__/references/indexer-cost-model-deployment.stdout
  78. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-cost-variables-deployment-multinetworks.stdout
  79. +5 −7 packages/indexer-cli/src/__tests__/references/indexer-cost-variables-deployment.stdout
  80. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-help.stdout
  81. +1 −1 packages/indexer-cli/src/__tests__/references/indexer-not-connected.stderr
  82. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-output-format.stdout
  83. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-always.stdout
  84. +1 −1 ...ages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-offchain-success.stdout
  85. +1 −1 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-success.stdout
  86. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-lifetime.stdout
  87. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-never.stdout
  88. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-offchain.stdout
  89. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-rules.stdout
  90. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-safety.stdout
  91. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-supported.stdout
  92. +16 −0 packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-yaml.stdout
  93. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-global-rules.stdout
  94. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-subgraph-offchain.stdout
  95. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-subgraph-options.stdout
  96. +5 −5 packages/indexer-cli/src/__tests__/references/indexer-rule-subgraph-rules.stdout
  97. +11 −1 packages/indexer-cli/src/__tests__/references/indexer-rules-command-no-args.stdout
  98. +1 −0 packages/indexer-cli/src/__tests__/references/indexer-rules-no-identifier.stderr
  99. +242 −92 packages/indexer-cli/src/__tests__/util.ts
  100. +4 −0 packages/indexer-cli/src/actions.ts
  101. +72 −15 packages/indexer-cli/src/allocations.ts
  102. +32 −21 packages/indexer-cli/src/command-helpers.ts
  103. +32 −11 packages/indexer-cli/src/commands/indexer/actions/approve.ts
  104. +9 −2 packages/indexer-cli/src/commands/indexer/actions/cancel.ts
  105. +8 −2 packages/indexer-cli/src/commands/indexer/actions/execute.ts
  106. +2 −4 packages/indexer-cli/src/commands/indexer/actions/get.ts
  107. +2 −1 packages/indexer-cli/src/commands/indexer/actions/queue.ts
  108. +1 −0 packages/indexer-cli/src/commands/indexer/actions/update.ts
  109. +27 −17 packages/indexer-cli/src/commands/indexer/allocations/close.ts
  110. +84 −0 packages/indexer-cli/src/commands/indexer/allocations/collect.ts
  111. +24 −6 packages/indexer-cli/src/commands/indexer/allocations/create.ts
  112. +3 −1 packages/indexer-cli/src/commands/indexer/allocations/get.ts
  113. +17 −4 packages/indexer-cli/src/commands/indexer/allocations/reallocate.ts
  114. +4 −6 packages/indexer-cli/src/commands/indexer/disputes/get.ts
  115. +6 −7 packages/indexer-cli/src/commands/indexer/rules/clear.ts
  116. +42 −24 packages/indexer-cli/src/commands/indexer/rules/delete.ts
  117. +19 −18 packages/indexer-cli/src/commands/indexer/rules/get.ts
  118. +6 −7 packages/indexer-cli/src/commands/indexer/rules/maybe.ts
  119. +7 −8 packages/indexer-cli/src/commands/indexer/rules/offchain.ts
  120. +12 −8 packages/indexer-cli/src/commands/indexer/rules/set.ts
  121. +6 −7 packages/indexer-cli/src/commands/indexer/rules/start.ts
  122. +13 −8 packages/indexer-cli/src/commands/indexer/rules/stop.ts
  123. +61 −37 packages/indexer-cli/src/commands/indexer/status.ts
  124. +9 −9 packages/indexer-cli/src/cost.ts
  125. +12 −9 packages/indexer-cli/src/disputes.ts
  126. +41 −34 packages/indexer-cli/src/rules.ts
  127. +1 −1 packages/indexer-cli/tsconfig.json
  128. +0 −288 packages/indexer-common/CHANGELOG.md
  129. +7 −2 packages/indexer-common/jest.config.js
  130. +53 −29 packages/indexer-common/package.json
  131. +34 −0 packages/indexer-common/src/__tests__/network-specification-files/invalid-base58.yml
  132. +35 −0 packages/indexer-common/src/__tests__/network-specification-files/invalid-epoch-subgraph.yml
  133. +36 −0 packages/indexer-common/src/__tests__/network-specification-files/invalid-extra-field.yml
  134. +35 −0 packages/indexer-common/src/__tests__/network-specification-files/invalid-missing-field.yml
  135. +35 −0 .../indexer-common/src/__tests__/network-specification-files/invalid-negative-max-block-distance.yml
  136. +35 −0 packages/indexer-common/src/__tests__/network-specification-files/invalid-network-identifier.yml
  137. +30 −0 packages/indexer-common/src/__tests__/network-specification-files/valid-missing.yml
  138. +34 −0 packages/indexer-common/src/__tests__/network-specification-files/valid.yml
  139. +101 −0 packages/indexer-common/src/__tests__/network-specification.test.ts
  140. +258 −0 packages/indexer-common/src/__tests__/subgraph.test.ts
  141. +9 −3 packages/indexer-common/src/actions.ts
  142. +67 −0 packages/indexer-common/src/allocations/__tests__/escrow-accounts.test.ts
  143. +230 −0 packages/indexer-common/src/allocations/__tests__/tap-pagination.test.ts
  144. +604 −0 packages/indexer-common/src/allocations/__tests__/tap.test.ts
  145. +93 −0 packages/indexer-common/src/allocations/__tests__/validate-queries.test.ts
  146. +67 −0 packages/indexer-common/src/allocations/escrow-accounts.ts
  147. +3 −0 packages/indexer-common/src/allocations/index.ts
  148. +25 −1 packages/indexer-common/src/allocations/keys.ts
  149. +192 −0 packages/indexer-common/src/allocations/monitor.ts
  150. +48 −5 packages/indexer-common/src/allocations/query-fees.test.ts
  151. +203 −100 packages/indexer-common/src/allocations/query-fees.ts
  152. +750 −0 packages/indexer-common/src/allocations/tap-collector.ts
  153. +11 −2 packages/indexer-common/src/allocations/types.ts
  154. +0 −44 packages/indexer-common/src/epoch-subgraph.ts
  155. +11 −1 packages/indexer-common/src/errors.ts
  156. +884 −0 packages/indexer-common/src/graph-node.ts
  157. +8 −5 packages/indexer-common/src/index.ts
  158. +170 −0 packages/indexer-common/src/indexer-management/__tests__/allocations.test.ts
  159. +478 −0 packages/indexer-common/src/indexer-management/__tests__/helpers.test.ts
  160. +0 −316 packages/indexer-common/src/indexer-management/__tests__/helpers.ts
  161. +83 −293 packages/indexer-common/src/indexer-management/__tests__/resolvers/{actions.ts → actions.test.ts}
  162. +30 −240 .../indexer-common/src/indexer-management/__tests__/resolvers/{cost-models.ts → cost-models.test.ts}
  163. +181 −93 ...er-common/src/indexer-management/__tests__/resolvers/{indexing-rules.ts → indexing-rules.test.ts}
  164. +106 −83 ...ndexer-common/src/indexer-management/__tests__/resolvers/{poi-disputes.ts → poi-disputes.test.ts}
  165. +128 −0 packages/indexer-common/src/indexer-management/__tests__/util.ts
  166. +274 −59 packages/indexer-common/src/indexer-management/actions.ts
  167. +329 −387 packages/indexer-common/src/indexer-management/allocations.ts
  168. +75 −163 packages/indexer-common/src/indexer-management/client.ts
  169. +0 −1 packages/indexer-common/src/indexer-management/index.ts
  170. +10 −0 packages/indexer-common/src/indexer-management/models/action.ts
  171. +4 −3 packages/indexer-common/src/indexer-management/models/cost-model.ts
  172. +40 −19 packages/indexer-common/src/indexer-management/models/indexing-rule.ts
  173. +19 −0 packages/indexer-common/src/indexer-management/models/poi-dispute.ts
  174. +520 −191 packages/indexer-common/src/indexer-management/monitor.ts
  175. +88 −42 packages/indexer-common/src/indexer-management/resolvers/actions.ts
  176. +331 −356 packages/indexer-common/src/indexer-management/resolvers/allocations.ts
  177. +40 −72 packages/indexer-common/src/indexer-management/resolvers/cost-models.ts
  178. +210 −118 packages/indexer-common/src/indexer-management/resolvers/indexer-status.ts
  179. +87 −48 packages/indexer-common/src/indexer-management/resolvers/indexing-rules.ts
  180. +61 −23 packages/indexer-common/src/indexer-management/resolvers/poi-disputes.ts
  181. +13 −9 packages/indexer-common/src/indexer-management/rules.ts
  182. +0 −215 packages/indexer-common/src/indexer-management/subgraphs.ts
  183. +155 −27 packages/indexer-common/src/indexer-management/types.ts
  184. +0 −274 packages/indexer-common/src/indexing-status.ts
  185. +209 −0 packages/indexer-common/src/network-specification.ts
  186. +0 −260 packages/indexer-common/src/network-subgraph.ts
  187. +382 −572 packages/indexer-common/src/network.ts
  188. +582 −0 packages/indexer-common/src/operator.ts
  189. +10 −0 packages/indexer-common/src/parsers/__tests__/parsers.ts
  190. +34 −0 packages/indexer-common/src/parsers/basic-types.ts
  191. +45 −0 packages/indexer-common/src/parsers/error-handling.ts
  192. +3 −0 packages/indexer-common/src/parsers/index.ts
  193. +144 −0 packages/indexer-common/src/parsers/test-utils.ts
  194. +30 −0 packages/indexer-common/src/parsers/validators.ts
  195. +45 −0 packages/indexer-common/src/query-fees/__test__/rav.test.ts
  196. +2 −0 packages/indexer-common/src/query-fees/allocation-utils.ts
  197. +379 −8 packages/indexer-common/src/query-fees/models.ts
  198. +2 −0 packages/indexer-common/src/rules.ts
  199. +157 −0 packages/indexer-common/src/sequential-timer.ts
  200. +302 −0 packages/indexer-common/src/subgraph-client.ts
  201. +219 −1 packages/indexer-common/src/subgraphs.ts
  202. +107 −55 packages/indexer-common/src/transactions.ts
  203. +17 −1 packages/indexer-common/src/types.ts
  204. +112 −0 packages/indexer-common/src/utils.ts
  205. +5 −3 packages/indexer-common/tsconfig.json
  206. +0 −3 packages/indexer-native/.eslintignore
  207. +0 −13 packages/indexer-native/.eslintrc.js
  208. +0 −6 packages/indexer-native/.gitignore
  209. +0 −64 packages/indexer-native/CHANGELOG.md
  210. +0 −3 packages/indexer-native/README.md
  211. +0 −5 packages/indexer-native/jest.config.js
  212. +0 −48 packages/indexer-native/lib/index.d.ts
  213. +0 −50 packages/indexer-native/lib/index.js
  214. +0 −93 packages/indexer-native/lib/index.test.js
  215. +0 −693 packages/indexer-native/native/Cargo.lock
  216. +0 −27 packages/indexer-native/native/Cargo.toml
  217. +0 −7 packages/indexer-native/native/build.rs
  218. +0 −107 packages/indexer-native/native/src/attestation.rs
  219. +0 −100 packages/indexer-native/native/src/lib.rs
  220. +0 −59 packages/indexer-native/native/src/signature_verification.rs
  221. +0 −70 packages/indexer-native/package.json
  222. +0 −3 packages/indexer-service/.eslintignore
  223. +0 −6 packages/indexer-service/.eslintrc.js
  224. +0 −7 packages/indexer-service/.prettierrc.json
  225. +0 −334 packages/indexer-service/CHANGELOG.md
  226. +0 −18 packages/indexer-service/LICENSE
  227. +0 −58 packages/indexer-service/README.md
  228. +0 −3 packages/indexer-service/bin/graph-indexer-service
  229. +0 −1 packages/indexer-service/config.yaml
  230. +0 −29 packages/indexer-service/jest.config.js
  231. +0 −90 packages/indexer-service/package.json
  232. +0 −232 packages/indexer-service/src/allocations.ts
  233. +0 −409 packages/indexer-service/src/commands/start.ts
  234. +0 −10 packages/indexer-service/src/index.ts
  235. +0 −170 packages/indexer-service/src/queries.ts
  236. +0 −226 packages/indexer-service/src/query-fees/allocations.ts
  237. +0 −13 packages/indexer-service/src/query-fees/index.ts
  238. +0 −188 packages/indexer-service/src/server/__tests__/server.test.ts
  239. +0 −203 packages/indexer-service/src/server/cost.ts
  240. +0 −85 packages/indexer-service/src/server/deployment-health.ts
  241. +0 −385 packages/indexer-service/src/server/index.ts
  242. +0 −17 packages/indexer-service/src/server/operator.ts
  243. +0 −40 packages/indexer-service/src/server/status.ts
  244. +0 −52 packages/indexer-service/src/types.ts
  245. +0 −19 packages/indexer-service/tsconfig.json
  246. +0 −29 scripts/release.sh
  247. +43 −0 scripts/run-tests.sh
  248. +0 −14 scripts/update-common-ts.sh
  249. +4,081 −4,145 yarn.lock
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Arbitrum Sepolia testnet JSON-RPC provider URL for testing (e.g., Infura, Alchemy, etc.)
INDEXER_TEST_JRPC_PROVIDER_URL=https://arbitrum-sepolia.infura.io/v3/your-project-id

# The Graph API key for querying subgraphs (from The Graph Studio)
INDEXER_TEST_API_KEY=your-graph-api-key-here
9 changes: 6 additions & 3 deletions .github/workflows/check-formatting.yml
Original file line number Diff line number Diff line change
@@ -3,15 +3,18 @@ name: "Check Formatting"
on:
push:
branches: [main]
pull_request:
branches: [main]
pull_request: {}

jobs:
check:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Node.js v20
uses: actions/setup-node@v2.1.5
with:
node-version: 20
- name: Build and Format
run: yarn
- name: Check Formatting
19 changes: 10 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -6,20 +6,15 @@ name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
pull_request: {}

jobs:
build:
strategy:
matrix:
node-version: [14, 16, 17]
node-version: [18, 20, 22]
system:
- os: ubuntu-20.04
include:
- node_version: 18
system:
os: ubuntu-22.04
- os: ubuntu-22.04
runs-on: ${{ matrix.system.os }}
services:
postgres:
@@ -38,6 +33,10 @@ jobs:
--health-retries 5
steps:
- uses: actions/checkout@v2
- name: update OS
run: |
sudo apt-get update
sudo apt install -y --no-install-recommends gcc g++ make build-essential
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
@@ -52,4 +51,6 @@ jobs:
POSTGRES_TEST_DATABASE: indexer_tests
POSTGRES_TEST_USERNAME: testuser
POSTGRES_TEST_PASSWORD: testpass
NODE_OPTIONS: '--dns-result-order=ipv4first'
NODE_OPTIONS: "--dns-result-order=ipv4first"
INDEXER_TEST_JRPC_PROVIDER_URL: ${{ secrets.TESTS_RPC_PROVIDER }}
INDEXER_TEST_API_KEY: ${{ secrets.TESTS_API_KEY }}
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ on:
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
runs-on: ubuntu-22.04

strategy:
fail-fast: false
10 changes: 9 additions & 1 deletion .github/workflows/indexer-agent-image.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
packages: write

@@ -34,6 +34,14 @@ jobs:
registry: ghcr.io
username: ${{github.repository_owner}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Set up Node.js v20
uses: actions/setup-node@v2.1.5
with:
node-version: 20
- name: Build and push Indexer Agent image
id: docker_build
uses: docker/build-push-action@v2
10 changes: 9 additions & 1 deletion .github/workflows/indexer-cli-image.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
packages: write

@@ -34,6 +34,14 @@ jobs:
registry: ghcr.io
username: ${{github.repository_owner}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Set up Node.js v20
uses: actions/setup-node@v2.1.5
with:
node-version: 20
- name: Build and push Indexer CLI image
id: docker_build
uses: docker/build-push-action@v2
48 changes: 0 additions & 48 deletions .github/workflows/indexer-service-image.yml

This file was deleted.

60 changes: 0 additions & 60 deletions .github/workflows/publish-native-binaries.yml

This file was deleted.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -119,3 +119,4 @@ yalc.lock
# IDE
.idea/
.envrc
.vscode
20 changes: 7 additions & 13 deletions Dockerfile.indexer-agent
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
########################################################################
# Build image

FROM node:16.15-bullseye-slim as build
FROM node:20.11-bookworm-slim as build

ENV NODE_ENV production

RUN apt-get update && apt-get install -y python build-essential git curl

# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y
ENV PATH="/root/.cargo/bin:$PATH"
RUN apt-get update && apt-get install -y python3 build-essential git curl

WORKDIR /opt/indexer

@@ -29,20 +25,17 @@ RUN yarn --frozen-lockfile --non-interactive --production=false
########################################################################
# Runtime image

FROM node:16.15-bullseye-slim
FROM node:20.11-bookworm-slim

ENV NODE_ENV production
# When simulating large transactions, sometimes indexer-agent runs out of memory.
# This flag seems force node into GC earlier, preventing the crash
# 1536mb is 1.5GB, which is appropriate for an environment with 2GB RAM
ENV NODE_OPTIONS="--max-old-space-size=1536"

# todo: increase this temporarily to 4GB to see if it fixes the crash
ENV NODE_OPTIONS="--max-old-space-size=4096"

RUN apt-get update && apt-get install -y python build-essential git curl

# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y
ENV PATH="/root/.cargo/bin:$PATH"
RUN apt-get update && apt-get install -y python3 build-essential git curl

WORKDIR /opt/indexer

@@ -52,6 +45,7 @@ COPY yarn.lock .
COPY tsconfig.json .
COPY lerna.json .


# Copy build output
COPY --from=build /opt/indexer/packages/indexer-common/package.json /opt/indexer/packages/indexer-common/package.json
COPY --from=build /opt/indexer/packages/indexer-common/dist /opt/indexer/packages/indexer-common/dist
14 changes: 4 additions & 10 deletions Dockerfile.indexer-cli
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
########################################################################
# Build image

FROM node:16.15-bullseye-slim as build
FROM node:20.11-bookworm-slim as build

ENV NODE_ENV production

RUN apt-get update && apt-get install -y python build-essential git curl

# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y
ENV PATH="/root/.cargo/bin:$PATH"
RUN apt-get update && apt-get install -y python3 build-essential git curl

WORKDIR /opt/indexer

@@ -21,7 +17,6 @@ COPY lerna.json .

# Copy shared and package files
COPY packages/indexer-common/ ./packages/indexer-common
COPY packages/indexer-native/ ./packages/indexer-native
COPY packages/indexer-cli/ ./packages/indexer-cli

# Install dependencies; include dev dependencies
@@ -30,11 +25,11 @@ RUN yarn --frozen-lockfile --non-interactive --production=false
########################################################################
# Runtime image

FROM node:16.15-bullseye-slim
FROM node:20.11-bookworm-slim

ENV NODE_ENV production

RUN apt-get update && apt-get install -y python build-essential git curl
RUN apt-get update && apt-get install -y python3 build-essential git curl

# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y
@@ -56,7 +51,6 @@ COPY --from=build /opt/indexer/packages/indexer-cli/dist /opt/indexer/packages/i
COPY --from=build /opt/indexer/packages/indexer-cli/bin /opt/indexer/packages/indexer-cli/bin



# Install dependencies; exclude dev dependencies
RUN yarn --frozen-lockfile --non-interactive --production=true
RUN ln -s /opt/indexer/packages/indexer-cli/bin/graph-indexer /usr/bin/graph
67 changes: 0 additions & 67 deletions Dockerfile.indexer-service

This file was deleted.

152 changes: 44 additions & 108 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Graph Protocol Indexer Components

![CI](https://github.com/graphprotocol/indexer/workflows/CI/badge.svg)
[![Docker Image: Indexer Service](https://github.com/graphprotocol/indexer/workflows/Indexer%20Service%20Image/badge.svg)](https://github.com/orgs/graphprotocol/packages/container/package/indexer-service)
[![Docker Image: Indexer Agent](https://github.com/graphprotocol/indexer/workflows/Indexer%20Agent%20Image/badge.svg)](https://github.com/orgs/graphprotocol/packages/container/package/indexer-agent)

**NOTE: THIS PROJECT IS BETA SOFTWARE.**
@@ -19,7 +18,6 @@ query fees, can be found [here](./docs/scalar.md).
The indexer service, agent and CLI can be installed as NPM packages, using

```sh
npm install -g @graphprotocol/indexer-service
npm install -g @graphprotocol/indexer-agent

# Indexer CLI is a plugin for Graph CLI, so both need to be installed:
@@ -30,9 +28,6 @@ npm install -g @graphprotocol/indexer-cli
After that, they can be run with the following commands:

```sh
# Indexer service
graph-indexer-service start ...

# Indexer agent
graph-indexer-agent start ...

@@ -42,68 +37,6 @@ graph indexer ...

## Usage

### Indexer service

```sh
$ graph-indexer-service start --help

Start the service

Ethereum
--ethereum Ethereum node or provider URL [string] [required]
--ethereum-network Ethereum network [string] [default: "mainnet"]
--ethereum-polling-interval Polling interval for the Ethereum provider (ms)
[number] [default: 4000]
--mnemonic Mnemonic for the operator wallet
[string] [required]
--indexer-address Ethereum address of the indexer
[string] [required]

Indexer Infrastructure
--port Port to serve queries at[number] [default: 7600]
--metrics-port Port to serve Prometheus metrics at
[number] [default: 7300]
--graph-node-query-endpoint Graph Node endpoint to forward queries to
[string] [required]
--graph-node-status-endpoint Graph Node endpoint for indexing statuses etc.
[string] [required]
--log-level Log level [string] [default: "debug"]

Postgres
--postgres-host Postgres host [string] [required]
--postgres-port Postgres port [number] [default: 5432]
--postgres-username Postgres username [string] [default: "postgres"]
--postgres-password Postgres password [string] [default: ""]
--postgres-database Postgres database name [string] [required]

Network Subgraph
--network-subgraph-endpoint Endpoint to query the network subgraph from
[string] [required]
--network-subgraph-auth-token Bearer token to require for /network queries
[string]
--serve-network-subgraph Whether to serve the network subgraph at
/network [boolean] [default: false]
--allocation-syncing-interval Interval (in ms) for syncing indexer
allocations from the network
[number] [default: 120000]

Query Fees
--vector-node URL of a vector node [string]
--vector-router Public identifier of the vector router [string]
--vector-transfer-definition Address of the Graph transfer definition
contract [string] [default: "auto"]

Options:
--version Show version number [boolean]
--help Show help [boolean]
--gcloud-profiling Whether to enable Google Cloud profiling
[boolean] [default: false]
--free-query-auth-token Auth token that clients can use to query for free
[array]
--client-signer-address Address that signs query fee receipts from a known
client [string]
```

### Indexer agent

```sh
@@ -162,23 +95,23 @@ Indexer Infrastructure
--rebate-claim-threshold Minimum value of rebate for a single
allocation (in GRT) in order for it to
be included in a batch rebate claim
on-chain [string] [default: "200"]
on-chain [string] [default: "1"]
--rebate-claim-batch-threshold Minimum total value of all rebates in an
batch (in GRT) before the batch is
claimed on-chain
[string] [default: "2000"]
[string] [default: "5"]
--rebate-claim-max-batch-size Maximum number of rebates inside a
batch. Upper bound is constrained by
available system memory, and by the
block gas limit [number] [default: 100]
--voucher-redemption-threshold Minimum value of rebate for a single
allocation (in GRT) in order for it to
be included in a batch rebate claim
on-chain [string] [default: "200"]
on-chain [string] [default: "1"]
--voucher-redemption-batch-threshold Minimum total value of all rebates in an
batch (in GRT) before the batch is
claimed on-chain
[string] [default: "2000"]
[string] [default: "5"]
--voucher-redemption-max-batch-size Maximum number of rebates inside a
batch. Upper bound is constrained by
available system memory, and by the
@@ -206,10 +139,6 @@ Protocol
--epoch-subgraph-endpoint Endpoint to query epoch start blocks from
[string] [required]
Cost Models
--inject-dai Inject the GRT to DAI/USDC conversion rate into cost model
variables [boolean] [default: true]
Postgres
--postgres-host Postgres host [string] [required]
--postgres-port Postgres port [number] [default: 5432]
@@ -238,9 +167,6 @@ Query Fees
Options:
--version Show version number [boolean]
--help Show help [boolean]
--dai-contract Address of the DAI or USDC contract to use for the
--inject-dai conversion rate
[string] [default: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]
--offchain-subgraphs Subgraphs to index that are not on chain
(comma-separated) [array] [default: []]
```
@@ -294,56 +220,36 @@ build the packages:
yarn
```
After this, the indexer service and agent can be run with:
After this, the agent can be run with:
```sh
# Indexer service
cd packages/indexer-service
./bin/graph-indexer-service start ...
# Indexer agent
cd packages/indexer-agent
./bin/graph-indexer-agent start ...
```
## Docker images
The easiest way to run the indexer service agent is by using Docker. Docker
The easiest way to run the indexer agent is by using Docker. Docker
images can either be pulled via
```sh
docker pull ghcr.io/graphprotocol/indexer-service:latest
docker pull ghcr.io/graphprotocol/indexer-agent:latest
```
or built locally with
```sh
# Indexer service
docker build \
-f Dockerfile.indexer-service \
-t indexer-service:latest \
.
# Indexer agent
docker build \
-f Dockerfile.indexer-agent \
-t indexer-agent:latest \
.
```
After this, the indexer agent and service can be run as follows:
1. Indexer service:
```sh
docker run -p 7600:7600 -it indexer-service:latest ...
```
After this, the indexer service should be up and running at
http://localhost:7600/.
After this, the indexer agent can be run as follows:
2. Indexer Agent
1. Indexer Agent
```sh
docker run -p 18000:8000 -it indexer-agent:latest ...
@@ -371,7 +277,6 @@ workspaces](https://classic.yarnpkg.com/en/docs/workspaces/).
[chan](https://github.com/geut/chan/tree/master/packages/chan) is
used to maintain the following changelogs:
- [indexer-service](packages/indexer-service/CHANGELOG.md)
- [indexer-agent](packages/indexer-agent/CHANGELOG.md)
- [indexer-cli](packages/indexer-cli/CHANGELOG.md)
- [indexer-common](packages/indexer-common/CHANGELOG.md)
@@ -381,16 +286,12 @@ Creating a new release involves the following steps:
1. Update all changelogs:
```sh
pushd packages/indexer-service
pushd packages/indexer-agent
chan added ...
chan fixed ...
chan changed ...
popd
pushd packages/indexer-agent
...
popd
pushd packages/indexer-cli
...
popd
@@ -408,6 +309,41 @@ Creating a new release involves the following steps:
yarn release <version>
```
## Running tests locally
To run the tests locally, you'll need:
1. Docker installed and running
2. Node.js and Yarn
3. An Arbitrum Sepolia testnet RPC provider (e.g., Infura, Alchemy)
4. An API key from The Graph Studio for querying subgraphs

### Setup

1. Create a `.env` file in the root directory with your credentials. You can copy the example file as a template:
```sh
cp .env.example .env
```

Then edit `.env` with your credentials:
```plaintext
# Your Arbitrum Sepolia testnet RPC endpoint
INDEXER_TEST_JRPC_PROVIDER_URL=https://sepolia.infura.io/v3/your-project-id
# Your API key from The Graph Studio (https://thegraph.com/studio/)
INDEXER_TEST_API_KEY=your-graph-api-key-here
```

2. Run the tests:
```sh
bash scripts/run-tests.sh
```

The script will:
- Start a PostgreSQL container with the required test configuration
- Load your credentials from the `.env` file
- Run the test suite
- Clean up the PostgreSQL container when done

# Copyright

Copyright &copy; 2020-2021 The Graph Foundation
6 changes: 3 additions & 3 deletions docs/action-queue.md
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ Local usage from source
# Queue allocate action (allocateFrom())
./bin/graph-indexer indexer actions queue allocate QmeqJ6hsdyk9dVbo1tvRgAxWrVS3rkERiEMsxzPShKLco6 5000

# Queue reallocate action (closeAndAllocate())
# Queue reallocate action (close and allocate using multicall())
./bin/graph-indexer indexer actions queue reallocate QmeqJ6hsdyk9dVbo1tvRgAxWrVS3rkERiEMsxzPShKLco6 0x4a58d33e27d3acbaecc92c15101fbc82f47c2ae5 55000

# Queue unallocate action (closeAllocation())
@@ -130,8 +130,8 @@ input ActionInput {
poi: String
force: Boolean
source: String!
reason: String
priority: Int
reason: String!
priority: Int!
}

input ActionUpdateInput {
10 changes: 5 additions & 5 deletions docs/errors.md
Original file line number Diff line number Diff line change
@@ -512,7 +512,7 @@ issues with your Ethereum node or provider, but it may also simply be an
internal error in ethers.js, in which case you can ignore this error.

If the error is _not_ related to Ethereum requests, it is likely to be an
unhandled error in indexer-agent and indexer-service and is best reported as an
unhandled error in indexer-agent and is best reported as an
issue on https://github.com/graphprotocol/indexer/issues.

## IE036
@@ -523,7 +523,7 @@ An operation failed somewhere in the system but this error wasn't handled.

**Solution**

This is likely to be an unhandled error in indexer-agent and indexer-service and
This is likely to be an unhandled error in indexer-agent and
is best reported as an issue on https://github.com/graphprotocol/indexer/issues.

## IE037
@@ -788,7 +788,7 @@ Allocation amounts must be non-negative numbers. To resolve this issue ensure th

**Summary**

Action was not executed succesfully: contracts paused or operator not authorized.
Action was not executed successfully: contracts paused or operator not authorized.

**Solution**

@@ -842,7 +842,7 @@ Failed to resolve POI: POI not available for deployment at current epoch start b

**Solution**

This error typically indicates a subgraph deployment that is too far behind the chain head to resolve a valid POI for closing the allocation. To succesfully resolve the POI and close the allocation you'll need to wait for the index node to sync the deployment enough to generate a POI for the current epoch start block. If you do not want to wait to sync you may choose to forfeit indexing rewards for the allocation by force closing it with a 0 POI by creating an unallocate or reallocate action item: `graph indexer actions queue unallocate/reallocate <deployment-id> <allocation-id> 0 true`.
This error typically indicates a subgraph deployment that is too far behind the chain head to resolve a valid POI for closing the allocation. To successfully resolve the POI and close the allocation you'll need to wait for the index node to sync the deployment enough to generate a POI for the current epoch start block. If you do not want to wait to sync you may choose to forfeit indexing rewards for the allocation by force closing it with a 0 POI by creating an unallocate or reallocate action item: `graph indexer actions queue unallocate/reallocate <deployment-id> <allocation-id> 0 true`.

## IE068

@@ -886,4 +886,4 @@ This is a sub-error of `IE069`. It is reported when the indexer agent doesn't ha

**Solution**

Please provide a `epoch-subgraph-endpoint` and make sure graph node has consistent network configurations (`mainnet`, `goerli`, `gnosis`) and is on or after version 0.28.0.
Please provide a `epoch-subgraph-endpoint` and make sure graph node has consistent network configurations (`mainnet`, `sepolia`, `gnosis`) and is on or after version 0.28.0.
78 changes: 55 additions & 23 deletions docs/feature-support-matrix.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,62 @@
# Feature support matrix

As described in [GIP-0008](https://snapshot.org/#/council.graphprotocol.eth/proposal/0xbdd884654a393620a7e8665b4289201b7542c3ee62becfad133e951b0c408444), this defines indexing & querying features which are experimental or not fully supported for indexing & query rewards and arbitration.

Each deployment of The Graph Network has its own specific Feature support matrix, as features will be introduced to testnet & mainnet at different stages of the development and testing lifecycle.

An example:

| Subgraph Feature | Aliases | Implemented | Experimental | Query Arbitration | Indexing Arbitration | Indexing Rewards |
|--------------------------|---------|-------------|--------------|-------------------|----------------------|------------------|
| **Core Features** | | | | | | |
| Full-text Search | | Yes | No | No | Yes | Yes |
| Non-Fatal Errors | | Yes | Yes | Yes | Yes | Yes |
| Grafting | | Yes | Yes | Yes | Yes | Yes |
| **Data Source Types** | | | | | | |
| eip155:* | * | Yes | No | No | No | No |
| eip155:1 | mainnet | Yes | No | Yes | Yes | Yes |
| eip155:100 | gnosis | Yes | No | Yes | Yes | Yes |
| near:* | * | Yes | Yes | No | No | No |
| cosmos:* | * | Yes | Yes | No | No | No |
| arweave:* | * | Yes | Yes | No | No | No |
| **Data Source Features** | | | | | | |
| ipfs.cat in mappings | | Yes | Yes | No | No | No |
| ENS | | Yes | Yes | No | No | No |
As described in [GIP-0008](https://snapshot.org/#/council.graphprotocol.eth/proposal/0xbdd884654a393620a7e8665b4289201b7542c3ee62becfad133e951b0c408444), the Feature support matrix defines indexing & querying features which are experimental or not fully supported for indexing & query rewards and arbitration.

The matrix below reflects the canonical Council-ratified version. As outlined in GIP-00008, Council ratification is currently required for each update, which may happen at different stages of feature development and testing lifecycle.

| Subgraph Feature | Aliases | Implemented | Experimental | Query Arbitration | Indexing Arbitration | Indexing Rewards |
| -------------------------- | ------------- | ----------- | ------------ | ----------------- | -------------------- | ---------------- |
| **Core Features** | | | | | | |
| Full-text Search | | Yes | No | No | Yes | Yes |
| Non-Fatal Errors | | Yes | Yes | Yes | Yes | Yes |
| Grafting | | Yes | Yes | Yes | Yes | Yes |
| **Data Source Types** | | | | | | |
| eip155:\* | \* | Yes | No | No | No | No |
| eip155:1 | mainnet | Yes | No | Yes | Yes | Yes |
| eip155:100 | gnosis | Yes | Yes | Yes | Yes | Yes |
| near:\* | \* | Yes | Yes | No | No | No |
| arweave:\* | \* | Yes | Yes | No | No | No |
| eip155:42161 | artbitrum-one | Yes | Yes | Yes | Yes | Yes |
| eip155:42220 | celo | Yes | Yes | Yes | Yes | Yes |
| eip155:43114 | avalanche | Yes | Yes | Yes | Yes | Yes |
| eip155:250 | fantom | Yes | Yes | Yes | Yes | Yes |
| eip155:137 | polygon | Yes | Yes | Yes | Yes | Yes |
| eip155:10 | optimism | Yes | Yes | Yes | Yes | Yes |
| eip155:8453 | base | Yes | Yes | Yes | Yes | Yes |
| eip155:534352 | scroll | Yes | Yes | Yes | Yes | Yes |
| eip155:59144 | linea | Yes | Yes | Yes | Yes | Yes |
| eip155:56 | bsc | Yes | Yes | Yes | Yes | Yes |
| eip155:122 | fuse | Yes | Yes | Yes | Yes | Yes |
| eip155:81457 | blast-mainnet | Yes | Yes | Yes | Yes | Yes |
| eip155:288 | boba | Yes | Yes | Yes | Yes | Yes |
| eip155:56288 | boba-bnb | Yes | Yes | Yes | Yes | Yes |
| eip155:7777777 | zora | Yes | Yes | Yes | Yes | Yes |
| eip155:34443 | mode | Yes | Yes | Yes | Yes | Yes |
| eip155:1284 | moonbeam | Yes | Yes | Yes | Yes | Yes |
| eip155:30 | rootstock | Yes | Yes | Yes | Yes | Yes |
| **Data Source Features** | | | | | | |
| ipfs.cat in mappings | | Yes | Yes | No | No | No |
| ENS | | Yes | Yes | Yes | Yes | Yes |
| File data sources: Arweave | | Yes | Yes | No | Yes | Yes |
| File data sources: IPFS | | Yes | Yes | No | Yes | Yes |
| Substreams: mainnet | | Yes | Yes | Yes | Yes | Yes |
| Substreams: optimism | | Yes | Yes | Yes | Yes | Yes |

The accepted `graph-node` version range must always be specified; it always comprises the latest available version and the one immediately preceding it.
The latest for the feature matrix above:

```
graph-node: >=0.35.0 <=0.36.1
```

### Latest Council snapshot

[GGP-0050 Updated Feature Matrix Support (zora, mode, moonbeam)](https://snapshot.org/#/s:council.graphprotocol.eth/proposal/0x7c1b0eaa299a24ba23f76d86d85b903ac8e8457db3656531e7bd5cee80c20146)

### Other notes

- Currently, one single matrix is used to reflect protocol behaviour for both Ethereum mainnet and Arbitrum One.
- Aliases can be used in subgraph manifest files to refer to specific networks.
- Experimental features are generally not fully supported for indexing rewards and arbitration, and usage of experimental features will be considered during any arbitration that does occur.
- Query fees apply to all queries, regardless of the underlying features used by a subgraph.
- Subgraph features not named in the matrix are assumed to be fully supported for indexing & query rewards and arbitration
- Subgraph features not named in the matrix are assumed to be fully supported for indexing & query rewards and arbitration
10 changes: 5 additions & 5 deletions docs/networks.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Mainnet and Testnet Configuration

> This content has been moved

[Mainnet configuration](./networks/mainnet.md)
[Arbitrum One configuration](./networks/arbitrum-one.md)

[Arbitrum Sepolia configuration](./networks/arbitrum-sepolia.md)

[Testnet configuration](./networks/testnet.md)
[Testnet setup instructions](./testnet-setup.md)

[Testnet setup instructions](./testnet-setup.md)
[Feature Support Matrix (Ethereum & Arbitrum One)](./feature-support-matrix.md)
92 changes: 92 additions & 0 deletions docs/networks/arbitrum-one.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Arbitrum One Configuration

Network information can be found at https://thegraph.com/explorer?chain=arbitrum-one. The Graph Network mainnet is open for everyone to participate in as an indexer. The only requirement is a minimum stake of 100k GRT.

## Latest Releases

| Component | Release |
| ------------------ | ---------------------------------------------------------------------------------- |
| contracts | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/contracts)](https://github.com/graphprotocol/contracts/releases) |
| indexer-agent | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/indexer)](https://github.com/graphprotocol/indexer/releases) |
| indexer-cli | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/indexer)](https://github.com/graphprotocol/indexer/releases) |
| indexer-service-rs | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/indexer-rs?filter=indexer-service-rs-*)](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-service-rs) |
| indexer-tap-agent | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/indexer-rs?filter=indexer-tap-agent-*)](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-tap-agent) |
| graph-node | [![GitHub Release](https://img.shields.io/github/v/release/graphprotocol/graph-node)](https://github.com/graphprotocol/graph-node/releases) |

## Network Parameters

| Parameter | Value |
| --------------------------- | -------------------- |
| Epoch length | ~ 24h (6646 blocks) |
| Maximum allocation lifetime | ~28 days (28 epochs) |

## Contracts & accounts

| Name | Address |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Graph Token (GRT) | [`0x9623063377AD1B27544C965cCd7342f7EA7e88C7`](https://arbiscan.io/address/0x9623063377AD1B27544C965cCd7342f7EA7e88C7) |
| Staking | [`0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03`](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03) |
| Data Edge | [`0x633bb9790d7c4c59991cebd377c0ed6501a35ebe`](https://arbiscan.io/address/0x633bb9790d7c4c59991cebd377c0ed6501a35ebe) |
| Block Oracle Owner | [`0x5f49491e965895ded343af13389ee45ef60ed793`](https://arbiscan.io/address/0x5f49491e965895ded343af13389ee45ef60ed793) |
| TAP Escrow | [`0x8f477709eF277d4A880801D01A140a9CF88bA0d3`](https://arbiscan.io/address/0x8f477709eF277d4A880801D01A140a9CF88bA0d3) |

Other network contracts can be found in [graphprotocol/contracts](https://github.com/graphprotocol/contracts/blob/dev/addresses.json#L752) and
[semiotic-ai/timeline-aggregation-protocol-contracts](https://github.com/semiotic-ai/timeline-aggregation-protocol-contracts/blob/main/addresses.json).

## Configuration

### Indexer Agent

| Environment Variable | CLI Argument | Value |
|---------------------------------------------|---------------------------------| ------------------------------------------------------------------------------------------------------------------------- |
| `INDEXER_AGENT_ETHEREUM` | `--ethereum` | An Arbitrum mainnet node/provider |
| `INDEXER_AGENT_INDEXER_ADDRESS` | `--indexer-address` | Ethereum address of mainnet indexer |
| `INDEXER_AGENT_INDEXER_GEO_COORDINATES` | `--indexer-geo-coordinates` | Geo coordinates of mainnet indexer infrastructure |
| `INDEXER_AGENT_MNEMONIC` | `--mnemonic` | Ethereum mnemonic for mainnet operator |
| `INDEXER_AGENT_GATEWAY_ENDPOINT` | `--gateway-endpoint` | `https://gateway-arbitrum.network.thegraph.com/` |
| `INDEXER_AGENT_GAS_PRICE_MAX` | `--gas-price-max` | `50` |
| `INDEXER_AGENT_NETWORK_SUBGRAPH_DEPLOYMENT` | `--network-subgraph-deployment` | [![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fthegraph.com%2Fexplorer%2F_next%2Fdata%2F5PBypsdmUEy39BcWLsyp0%2Fsubgraphs%2FDZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp.json%3Fview%3DAbout%26chain%3Darbitrum-one%26id%3DDZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp&query=%24.pageProps.subgraph.currentVersion.subgraphDeployment.ipfsHash&label=deployment-id)](https://thegraph.com/explorer/subgraphs/DZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp) |
| `INDEXER_AGENT_NETWORK_SUBGRAPH_ENDPOINT` | `--network-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/DZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp` |
| `INDEXER_AGENT_EPOCH_SUBGRAPH_DEPLOYMENT` | `--epoch-subgraph-deployment` | [![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fthegraph.com%2Fexplorer%2F_next%2Fdata%2F5PBypsdmUEy39BcWLsyp0%2Fsubgraphs%2F4KFYqUWRTZQ9gn7GPHC6YQ2q15chJfVrX43ezYcwkgxB.json%3Fview%3DAbout%26chain%3Darbitrum-one%26id%3D4KFYqUWRTZQ9gn7GPHC6YQ2q15chJfVrX43ezYcwkgxB&query=%24.pageProps.subgraph.currentVersion.subgraphDeployment.ipfsHash&label=deployment-id)](https://thegraph.com/explorer/subgraphs/4KFYqUWRTZQ9gn7GPHC6YQ2q15chJfVrX43ezYcwkgxB) |
| `INDEXER_AGENT_EPOCH_SUBGRAPH_ENDPOINT` | `--epoch-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/4KFYqUWRTZQ9gn7GPHC6YQ2q15chJfVrX43ezYcwkgxB` |
| `INDEXER_AGENT_TAP_SUBGRAPH_DEPLOYMENT` | `--tap-subgraph-deployment` | [![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fthegraph.com%2Fexplorer%2F_next%2Fdata%2F5PBypsdmUEy39BcWLsyp0%2Fsubgraphs%2F4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1.json%3Fview%3DAbout%26chain%3Darbitrum-one%26id%3D4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1&query=%24.pageProps.subgraph.currentVersion.subgraphDeployment.ipfsHash&label=deployment-id)](https://thegraph.com/explorer/subgraphs/4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1) |
| `INDEXER_AGENT_TAP_SUBGRAPH_ENDPOINT` | `--tap-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1` |


In order to avoid collecting or claiming query fees below a certain threshold
(e.g. below the cost of the two transactions), the following configuration
option can be used.

| Environment Variable | CLI Argument | Value |
| -------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
| `INDEXER_AGENT_REBATE_CLAIM_THRESHOLD` | `--rebate-claim-threshold` | Minimum rebate (in GRT) received for an allocation to claim (Default: 1) |
| `INDEXER_AGENT_REBATE_CLAIM_BATCH_THRESHOLD` | `--rebate-claim-batch-threshold` | Minimum total rebates (in GRT) before a batched claim is processed (Default: 5) |
| `INDEXER_AGENT_VOUCHER_EXPIRATION` | `--voucher-expiration` | Time (in seconds) to permanently delete vouchers with too few query fees (Default: 2160) |

### Indexer Service rs *and* TAP Agent

They are configured using a TOML file provided with `--config`. You should start with [the minimal config example](https://github.com/graphprotocol/indexer-rs/blob/main/config/minimal-config-example.toml). You can find the full config [here](https://github.com/graphprotocol/indexer-rs/blob/main/config/maximal-config-example.toml) and the default values
[here](https://github.com/graphprotocol/indexer-rs/blob/main/config/default_values.toml).

| Variable | Value |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `indexer.indexer_address` | Ethereum address of testnet indexer |
| `indexer.operator_mnemonic` | Ethereum mnemonic for testnet operator |
| `subgraphs.network.deployment_id` | `QmUzRg2HHMpbgf6Q4VHKNDbtBEJnyp5JWCh2gUX9AV6jXv` |
| `subgraphs.network.query_url` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/DZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp` |
| `subgraphs.escrow.deployment_id` | `QmUhiH6Z5xo6o3GNzsSvqpGKLmCt6w5WzKQ1yHk6C8AA8S` |
| `subgraphs.escrow.query_url` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1` |
| `blockchain.receipts_verifier_address` | `0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a` |
| `tap.sender_aggregator_endpoints` | `0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467 = https://tap-aggregator.network.thegraph.com` |

Notes:
- You can supply those nested values using environment variables as such: `indexer.indexer_address` -> `INDEXER_SERVICE_INDEXER__INDEXER_ADDRESS` (mind the double `_`)
- `tap.sender_aggregator_endpoints` takes a key-value list of sender address + TAP aggregator pairs. Your indexer will accept business only from the senders you add in
that list. The value provided in the table above only lists the E&N gateway for now.

### Graph Node

| Environment Variable | CLI Argument | Value |
| -------------------- | ---------------- | ----------------------------------- |
| `ethereum` | `--ethereum-rpc` | `mainnet:<ethereum-json-rpc-url>` |
| `ipfs` | `--ipfs` | `https://ipfs.network.thegraph.com` |
123 changes: 123 additions & 0 deletions docs/networks/arbitrum-sepolia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Testnet Configuration

The Graph Network's testnet is on Arbitrum Sepolia (eip155:421614). Sepolia network information can be found at https://testnet.thegraph.com/explorer?chain=arbitrum-sepolia.

## Latest Releases

| Component | Release |
| ------------------ | ------------------------------------------------------------------------------------ |
| contracts | [5.3.3](https://github.com/graphprotocol/contracts/releases/tag/v5.3.3) |
| indexer-agent | [0.22.0](https://github.com/graphprotocol/indexer/releases/tag/v0.22.0) |
| indexer-cli | [0.22.0](https://github.com/graphprotocol/indexer/releases/tag/v0.22.0) |
| indexer-service-rs | [1.0.0](https://github.com/graphprotocol/indexer-rs/releases/tag/v1.0.0) |
| tap-agent | [1.0.0](https://github.com/graphprotocol/indexer-rs/releases/tag/v1.0.0) |
| graph-node | [0.35.1](https://github.com/graphprotocol/graph-node/releases/tag/v0.35.1) |

## Network Parameters

| Parameter | Value |
| --------------------------- | ----------------- |
| Epoch length | ~ 2h (554 blocks) |
| Maximum allocation lifetime | ~ 9h (4 epochs) |

## Contracts & accounts

| Name | Address |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| Graph Token (GRT) | [`0xf8c05dCF59E8B28BFD5eed176C562bEbcfc7Ac04`](https://sepolia.arbiscan.io/address/0xf8c05dCF59E8B28BFD5eed176C562bEbcfc7Ac04) |
| Staking | [`0x865365C425f3A593Ffe698D9c4E6707D14d51e08`](https://sepolia.arbiscan.io/address/0x865365C425f3A593Ffe698D9c4E6707D14d51e08) |
| Data Edge | [`0x9b9402939133F27c6eba81a321dfBFa1feE6714E`](https://sepolia.arbiscan.io/address/0x9b9402939133F27c6eba81a321dfBFa1feE6714E) |
| Block Oracle Owner | [`0x76BC183A6d9AC1e4C5ccb27b7D46DDf0d2cc9868`](https://sepolia.arbiscan.io/address/0x76BC183A6d9AC1e4C5ccb27b7D46DDf0d2cc9868) |
| TAP Escrow | [`0x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02`](https://sepolia.arbiscan.io/address/0x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02) |

Other network contracts can be found in [graphprotocol/contracts](https://github.com/graphprotocol/contracts/blob/main/packages/contracts/addresses.json) and
[semiotic-ai/timeline-aggregation-protocol-contracts](https://github.com/semiotic-ai/timeline-aggregation-protocol-contracts/blob/main/addresses.json).

## Configuration

The Graph testnet contracts live on Arbitrum Sepolia, but many of the subgraphs used in the
testnet (for now) are Mainnet subgraphs. This means:

- Indexer Agent and Indexer Service must connect to Arbitrum Sepolia
- Graph Node must connect to at least one Mainnet Ethereum node/provider

### Indexer Agent

| Environment Variable | CLI Argument | Value |
|---------------------------------------------|---------------------------------| ----------------------------------------------------------------------------------------------------------------------- |
| `INDEXER_AGENT_ETHEREUM` | `--ethereum` | An Arbitrum Sepolia node/provider |
| `INDEXER_AGENT_INDEXER_ADDRESS` | `--indexer-address` | Ethereum address of testnet indexer |
| `INDEXER_AGENT_INDEXER_GEO_COORDINATES` | `--indexer-geo-coordinates` | Geo coordinates of testnet indexer infrastructure |
| `INDEXER_AGENT_MNEMONIC` | `--mnemonic` | Ethereum mnemonic for testnet operator |
| `INDEXER_AGENT_GATEWAY_ENDPOINT` | `--gateway-endpoint` | `https://gateway-arbitrum.testnet.thegraph.com/` |
| `INDEXER_AGENT_NETWORK_SUBGRAPH_DEPLOYMENT` | `--network-subgraph-deployment` | `QmXnGVrg6DvscnvJd86aHAPLGyGrkM17weMrAsFAEMmQLL` |
| `INDEXER_AGENT_NETWORK_SUBGRAPH_ENDPOINT` | `--network-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/3xQHhMudr1oh69ut36G2mbzpYmYxwqCeU6wwqyCDCnqV` |
| `INDEXER_AGENT_EPOCH_SUBGRAPH_DEPLOYMENT` | `--epoch-subgraph-deployment` | `QmNNn48AU8CZei8sYLXrXABMHkiXAuQDvFaZHYYPryKEvF` |
| `INDEXER_AGENT_EPOCH_SUBGRAPH_ENDPOINT` | `--epoch-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/BhnsdeZihU4SuokxZMLF4FQBVJ3jgtZf6v51gHvz3bSS` |
| `INDEXER_AGENT_TAP_SUBGRAPH_DEPLOYMENT` | `--tap-subgraph-deployment` | `QmUiLdbsk6c51UMdcNBxsP3KadJpkmp6a3k2NCprR4ZFeM` |
| `INDEXER_AGENT_TAP_SUBGRAPH_ENDPOINT` | `--tap-subgraph-endpoint` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/7ubx365MiqBH5iUz6XWXWT8PTof5BVAyEzdb8m17RvbD` |

In order to avoid collecting or claiming query fees below a certain threshold
(e.g. below the cost of the two transactions), the following configuration
option can be used.

| Environment Variable | CLI Argument | Value |
| -------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------- |
| `INDEXER_AGENT_REBATE_CLAIM_THRESHOLD` | `--rebate-claim-threshold` | Minimum rebate (in GRT) received for an allocation to claim (Default: 1) |
| `INDEXER_AGENT_REBATE_CLAIM_BATCH_THRESHOLD` | `--rebate-claim-batch-threshold` | Minimum total rebates (in GRT) before a batched claim is processed (Default: 5) |
| `INDEXER_AGENT_VOUCHER_EXPIRATION` | `--voucher-expiration` | Time (in seconds) to permanently delete vouchers with too few query fees (Default: 2160) |

### Indexer Service rs *and* TAP Agent

They are configured using a TOML file provided with `--config`. You should start with [the minimal config example](https://github.com/graphprotocol/indexer-rs/blob/main/config/minimal-config-example.toml). You can find the full config [here](https://github.com/graphprotocol/indexer-rs/blob/main/config/maximal-config-example.toml) and the default values
[here](https://github.com/graphprotocol/indexer-rs/blob/main/config/default_values.toml).

| Variable | Value |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `indexer.indexer_address` | Ethereum address of testnet indexer |
| `indexer.operator_mnemonic` | Ethereum mnemonic for testnet operator |
| `subgraphs.network.deployment_id` | `QmXnGVrg6DvscnvJd86aHAPLGyGrkM17weMrAsFAEMmQLL` |
| `subgraphs.network.query_url` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/3xQHhMudr1oh69ut36G2mbzpYmYxwqCeU6wwqyCDCnqV` |
| `subgraphs.escrow.deployment_id` | `QmUiLdbsk6c51UMdcNBxsP3KadJpkmp6a3k2NCprR4ZFeM` |
| `subgraphs.escrow.query_url` | `https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/7ubx365MiqBH5iUz6XWXWT8PTof5BVAyEzdb8m17RvbD` |
| `blockchain.receipts_verifier_address` | `0xfC24cE7a4428A6B89B52645243662A02BA734ECF` |
| `tap.sender_aggregator_endpoints` | `0xC3dDf37906724732FfD748057FEBe23379b0710D = https://tap-aggregator.testnet.thegraph.com` |

Notes:
- You can supply those nested values using environment variables as such: `indexer.indexer_address` -> `INDEXER_SERVICE_INDEXER__INDEXER_ADDRESS` (mind the double `_`)
- `tap.sender_aggregator_endpoints` takes a key-value list of sender address + TAP aggregator pairs. Your indexer will accept business only from the senders you add in
that list. The value provided in the table above only lists the E&N gateway for now.

### Graph Node

| Environment Variable | CLI Argument | Value |
| -------------------- | ---------------- | ----------------------------------- |
| `ethereum` | `--ethereum-rpc` | `arbitrum-sepolia:...` |
| `ipfs` | `--ipfs` | `https://ipfs.network.thegraph.com` |

## Feature support

> This defines indexing & querying features which are experimental or not fully supported for indexing & query rewards and arbitration ([read more](../feature-support-matrix.md)).
| Subgraph Feature | Aliases | Implemented | Experimental | Query Arbitration | Indexing Arbitration | Indexing Rewards |
| ------------------------ | ---------------- | ----------- | ------------ | ----------------- | -------------------- | ---------------- |
| **Core Features** | | | | | | |
| Full-text Search | | Yes | No | No | Yes | Yes |
| Non-Fatal Errors | | Yes | Yes | Yes | Yes | Yes |
| Grafting | | Yes | Yes | Yes | Yes | Yes |
| **Data Source Types** | | | | | | |
| eip155:\* | \* | Yes | No | No | No | No |
| eip155:1 | mainnet | Yes | No | Yes | Yes | Yes |
| eip155:100 | gnosis | Yes | No | Yes | Yes | Yes |
| near:\* | \* | Yes | Yes | No | No | No |
| cosmos:\* | \* | Yes | Yes | No | No | No |
| arweave:\* | \* | Yes | Yes | No | No | No |
| eip155:42161 | arbitrum-one | Yes | Yes | Yes | Yes | Yes |
| eip155:42220 | celo | Yes | Yes | Yes | Yes | Yes |
| eip155:43114 | avalanche | Yes | Yes | Yes | Yes | Yes |
| **Data Source Features** | | | | | | |
| ipfs.cat in mappings | | Yes | Yes | No | No | No |
| ENS | | Yes | Yes | No | No | No |
| File data sources: IPFS | | Yes | Yes | No | Yes | Yes |
| eip155:421614 | sepolia | Yes | Yes | No | Yes | Yes |
| eip155:421614 | arbitrum-sepolia | Yes | Yes | No | Yes | Yes |
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
networkIdentifier: 'arbitrum-sepolia'
indexerOptions:
address: '?'
mnemonic: '?'
url: '?'
geoCoordinates: [118.2923, 36.5785]
defaultAllocationAmount: 1000
allocationManagementMode: 'oversight'
restakeRewards: true
poiDisputeMonitoring: true
poiDisputableEpochs: 3
voucherRedemptionThreshold: 100
voucherRedemptionBatchThreshold: 250
rebateClaimThreshold: 100
rebateClaimBatchThreshold: 250
gateway:
url: 'https://gateway-testnet-arbitrum.network.thegraph.com'
subgraphs:
maxBlockDistance: 60
freshnessSleepMilliseconds: 10000
networkSubgraph:
url: 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/3xQHhMudr1oh69ut36G2mbzpYmYxwqCeU6wwqyCDCnqV'
deployment: 'QmT8UDGK7zKd2u2NQZwhLYHdA4KM55QsivkE3ouCuX6fEj'
epochSubgraph:
url: 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/BhnsdeZihU4SuokxZMLF4FQBVJ3jgtZf6v51gHvz3bSS'
deployment: 'QmTpu2mVquoMpr4SWSM77nGkU3tcUS1Bhk1sVHpjDrAUAx'
networkProvider:
url: '?'
transactionMonitoring:
baseFeePerGasMax: 100
gasIncreaseTimeout: 90
gasIncreaseFactor: 1.5
maxTransactionAttempts: 20
31 changes: 31 additions & 0 deletions docs/networks/config-examples/sepolia-indexer-agent-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
networkIdentifier: 'sepolia'
indexerOptions:
address: '?'
mnemonic: '?'
url: '?'
geoCoordinates: [118.2923, 36.5785]
defaultAllocationAmount: 5000
allocationManagementMode: 'oversight'
restakeRewards: true
poiDisputeMonitoring: true
poiDisputableEpochs: 3
voucherRedemptionThreshold: 100
voucherRedemptionBatchThreshold: 250
rebateClaimThreshold: 100
rebateClaimBatchThreshold: 250
gateway:
url: 'https://gateway.testnet.thegraph.com'
subgraphs:
networkSubgraph:
url: 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/8pVKDwHniAz87CHEQsiz2wgFXGZXrbMDkrxgauVVfMJC'
deployment: 'QmdwyUJ2GNAkSxLc3dRgFULf5fN1mZWYeQLjXsdowQcfTg'
epochSubgraph:
url: 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/3nEnuQEQd1aP6wksKvRUnuwLQcQy1zD3HPFaHZ8cMVqM'
deployment: 'QmUXAKvt84bYpkctHgXqWBjq1YY7DaTCKfmxEh8w9Xxb5X'
networkProvider:
url: '?'
transactionMonitoring:
baseFeePerGasMax: 100
gasIncreaseTimeout: 90
gasIncreaseFactor: 1.5
maxTransactionAttempts: 20
106 changes: 0 additions & 106 deletions docs/networks/mainnet.md

This file was deleted.

104 changes: 0 additions & 104 deletions docs/networks/testnet.md

This file was deleted.

97 changes: 0 additions & 97 deletions docs/scalar.md

This file was deleted.

49 changes: 49 additions & 0 deletions docs/subgraph-freshness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Subgraph Freshness Checker Feature

## Overview

The `SubgraphFreshnessChecker` class is introduced to enhance the reliability and timeliness of subgraph queries in environments where the subgraph might lag significantly behind the most recent block on the blockchain. It primarily operates by validating subgraph freshness and issuing warnings if the subgraph is not sufficiently synchronized with the latest blockchain state.

## Key Concepts

- **Subgraph Freshness:** A metric to determine how synchronized a subgraph is with the main blockchain. It's gauged by comparing the latest indexed block in the subgraph with the most recent block on the network.

## Feature Details

### 1. Continuous Retry Mechanism
The `SubgraphFreshnessChecker` perpetually retries subgraph queries under circumstances where the subgraph is notably behind the most recent block on the blockchain. A warning, including the current block distance from the chain head, is issued if this condition is detected.

### 2. Configuration
Configuration options have been expanded to allow control over the subgraph freshness checking mechanism via network specification files and Command Line Interface (CLI) parameters:

- **maxBlockDistance:** An integer defining the acceptable distance (in blocks) between the latest indexed block in the subgraph and the most recent block on the network. If the distance exceeds this value, the subgraph is considered "stale," prompting a retry mechanism and possibly a warning.

- **freshnessSleepMilliseconds:** An integer dictating the waiting duration (in milliseconds) before a query is retried when the subgraph is deemed stale.

### Example Configuration

Here is a snippet of an Arbitrum network specification file with the suggested options for Arbitrum One and Arbitrum Sepolia:

```yaml
subgraphs:
maxBlockDistance: 5000
freshnessSleepMilliseconds: 10000
```
## Practical Implications
The following default values have been established based on **Arbitrum-One** observations:
- **maxBlockDistance:** 1000 blocks
- **freshnessSleepMilliseconds:** 10000 (10 seconds)
### Potential Risk Warning
Suppose the Agent or Service utilizes the default (Ethereum) settings on Arbitrum networks. In that case, a warning will inform users about the risk that queries may forever be considered non-fresh.
Adjust the `maxBlockDistance` and `freshnessSleepMilliseconds` according to each network condition.

## Disabling this feature

This feature can be virtually turned off by setting a very high value for the **maxBlockDistance** option, which will effectively cause the freshness check always to pass.
18 changes: 9 additions & 9 deletions docs/testnet-setup.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# Testnet indexer setup

The Graph Network's testnet is on Goerli, and network information can be found at https://testnet.thegraph.com/explorer/network.
The Graph Network's testnet is on Arbitrum Sepolia, and network information can be found at https://testnet.thegraph.com/explorer/network.

> See [networks/testnet.md](/networks/testnet.md) for the latest releases & configuration information.
### Registration / Funding (GRT)

In order to participate in the testnet, you'll need Goerli ETH and GRT.
In order to participate in the testnet, you'll need Sepolia ETH and GRT.
To be eligible for testnet GRT, you'll need to

1. join [The Graph Discord](https://thegraph.com/discord/),
2. get the `@testnetindexer` role in the `#roles` channel,
3. use the `#testnet-goerli-faucet` channel to obtain testnet GRT.
3. use the `#arbi-sepolia-faucet` channel to obtain testnet GRT.

### Approving And Staking

@@ -23,7 +23,7 @@ indexer. The only requirement is a minimum stake of 100k testnet GRT.
The Graph Explorer provides an easy way to approve and stake your GRT as an indexer via a web GUI.

1. Navigate to [the testnet explorer](https://testnet.thegraph.com/)
2. Login with Metamask and select the `Goerli` network
2. Login with Metamask and select the `Arbitrum Sepolia` network
3. Navigate to your profile (click your address/avatar at top right)
4. Select the `Indexing` tab and hit the `Stake` button
5. Follow the directions on the staking screen to stake the desired amount
@@ -41,14 +41,14 @@ cd contracts
npm install
npm run compile

./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
./cli/cli.ts -m <indexer-mnemonic> -p <arbitrum-sepolia-node> \
contracts graphToken approve --account 0x35e3Cb6B317690d662160d5d02A5b364578F62c9 --amount <grt>
```

Afterwards, stake this amount:

```bash
./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
./cli/cli.ts -m <indexer-mnemonic> -p <arbitrum-sepolia-node> \
contracts staking stake --amount <grt>
```

@@ -57,7 +57,7 @@ Afterwards, stake this amount:
#### Via Graph Explorer

1. Navigate to [the testnet explorer](https://testnet.thegraph.com/)
2. Login with Metamask and select the `Goerli` network
2. Login with Metamask and select the `Arbitrum Sepolia` network
3. Navigate to your settings page (click profile dropdown at top right and select ⚙️ `Settings`)
4. Navigate to the `Operators` settings (click `Operators` button)
5. Click `+` to add your operator wallet address
@@ -66,8 +66,8 @@ Afterwards, stake this amount:
### Via the Contracts CLI

```bash
./cli/cli.ts -m <indexer-mnemonic> -p <ethereum-goerli-node> \
./cli/cli.ts -m <indexer-mnemonic> -p <arbitrum-sepolia-node> \
contracts staking setOperator --operator <operator-address> --allowed true
```

You are now ready to set up your testnet indexer, visit [networks/testnet.md](/networks/testnet.md) for configuration information.
You are now ready to set up your testnet indexer, visit [networks/arbitrum-sepolia.md](/networks/arbitrum-sepolia.md) for configuration information.
7 changes: 0 additions & 7 deletions k8s/base/indexer-service/backend_config.yaml

This file was deleted.

16 changes: 0 additions & 16 deletions k8s/base/indexer-service/service.yaml

This file was deleted.

94 changes: 0 additions & 94 deletions k8s/base/indexer-service/statefulset.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions k8s/base/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -11,9 +11,6 @@ resources:
- query-node/service.yaml
- indexer-agent/service.yaml
- indexer-agent/statefulset.yaml
- indexer-service/backend_config.yaml
- indexer-service/statefulset.yaml
- indexer-service/service.yaml
- shell.yaml
- nfs.yaml
- prometheus.yaml
3 changes: 0 additions & 3 deletions k8s/overlays/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -12,9 +12,6 @@ images:
- name: indexer-agent-image
newName: ghcr.io/graphprotocol/indexer-agent
newTag: v0.20.4
- name: indexer-service-image
newName: ghcr.io/graphprotocol/indexer-service
newTag: v0.20.4
- name: prometheus-image
newName: prom/prometheus
newTag: v2.32.1
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -4,5 +4,5 @@
],
"npmClient": "yarn",
"useWorkspaces": true,
"version": "0.20.12"
"version": "0.22.0"
}
27 changes: 27 additions & 0 deletions network-configs/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
networkIdentifier: "arbitrum-sepolia"
gateway:
url: "http://127.0.0.1:8030/"
networkProvider:
url: <network-provider>
indexerOptions:
address: "0xf56b5d582920E4527A818FBDd801C0D80A394CB8"
mnemonic: "famous aspect index polar tornado zero wedding electric floor chalk tenant junk"
url: "http://test-indexer.xyz"
subgraphs:
maxBlockDistance: 1000000
networkSubgraph:
url: "https://gateway-arbitrum.network.thegraph.com/api/<api-key>/subgraphs/id/3xQHhMudr1oh69ut36G2mbzpYmYxwqCeU6wwqyCDCnqV"
epochSubgraph:
url: "http://test-url.xyz"
tapSubgraph:
url: "https://gateway-arbitrum.network.thegraph.com/api/<api-key>/subgraphs/id/7ubx365MiqBH5iUz6XWXWT8PTof5BVAyEzdb8m17RvbD"
transactionMonitoring:
gasIncreaseTimeout: 240000
gasIncreaseFactor: 1.2
baseFeePerGasMax: 100000000000
maxTransactionAttempts: 0
tapAddressBook:
"421614":
TAPVerifier: "0xf56b5d582920E4527A818FBDd801C0D80A394CB8"
AllocationIDTracker: "0xf56b5d582920E4527A818FBDd801C0D80A394CB8"
Escrow: "0xf56b5d582920E4527A818FBDd801C0D80A394CB8"
34 changes: 20 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
@@ -6,18 +6,16 @@
"packages/indexer-common",
"packages/indexer-cli",
"packages/indexer-agent",
"packages/indexer-service",
"packages/indexer-native"
]
},
"scripts": {
"bootstrap": "lerna bootstrap",
"prepare": "lerna run prepare",
"release": "./scripts/release.sh",
"test": "lerna --concurrency 1 run test --stream --ignore @graphprotocol/indexer-service",
"test:ci": "lerna --concurrency 1 run test:ci --stream --ignore @graphprotocol/indexer-service",
"update-common-ts": "./scripts/update-common-ts.sh 1.8.3",
"clean": "rm -rf ./node_modules && lerna run clean",
"test": "lerna --concurrency 1 run test --stream",
"test:ci": "lerna --concurrency 1 run test:ci --stream",
"clean": "lerna run clean && rm -rf ./node_modules",
"compile": "lerna run compile"
},
"devDependencies": {
@@ -26,22 +24,30 @@
},
"resolutions": {
"ethers": "5.7.0",
"sequelize": "6.19.0",
"sequelize": "6.33.0",
"@ethersproject/bignumber": "5.7.0",
"@ethersproject/providers": "5.7.0",
"@urql/core": "2.4.4",
"@urql/exchange-execute": "1.2.2"
"@urql/core": "3.1.0",
"@urql/exchange-execute": "2.1.0",
"punycode": "2.3.1",
"uri-js": "4.2.2"
},
"overrides": {
"ethers": "5.7.0",
"sequelize": "6.19.0",
"sequelize": "6.33.0",
"@ethersproject/bignumber": "5.7.0",
"@ethersproject/providers": "5.7.0",
"@urql/core": "2.4.4",
"@urql/exchange-execute": "1.2.2",
"graphql": "16.3.0"
"@urql/core": "3.1.0",
"@urql/exchange-execute": "2.1.0",
"graphql": "16.8.0"
},
"engines": {
"node": ">=12.22.0"
}
"node": ">=18.0.0"
},
"jest": {
"transformIgnorePatterns": [
"node_modules/(?!@thi.ng)"
]
},
"packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
}
Loading