Skip to content

Releases: graphprotocol/indexer

Release v0.21.5

11 Oct 21:09
Compare
Choose a tag to compare

What's Changed

Docs

New Contributors

Full Changelog: v0.21.4...v0.21.5

v0.21.4-5

08 Oct 15:38
Compare
Choose a tag to compare

Performance fix release v0.21.4-5

  • removes a workaround where we had to query the graph-node for indexingStatus twice to determine a deployment's state
  • moves flushOutstanding (receipts) to use READ_COMMITTED isolation level
  • bumps urql to 3.1.0 and common-ts to 2.0.10 to bring in the upstream memory leak fix

v0.21.4

15 Jul 22:02
Compare
Choose a tag to compare

Important Node.js Version Update

The version of node.js required to run the indexer is one of 18, 20, 22. This is to keep within LTS maintenance and support. If another version of node.js is used, you may see a Segmentation Fault when attempting to run. This is a known issue.

node.js end of life chart

Indexer CLI

  • Receipts collect - new command to initiate receipt collection for an allocation. PR #903
  • Improve testing setup: Add type annotation for test utility network specifications. PR #944

Agent and Common

  • Improve deployment management PR #868:
    • Indexer-agent no longer makes assignment decisions, instead relying on graph-node to assign deployments.
    • Pause mechanism in graph-node now used to better control pausing and resuming deployments.
  • Support for closing allocations on unsupported networks. PR #949
  • Enhance gas fee and price logging within the TransactionManager to provide better insights into transaction costs. PR #954
  • Update default values for subgraph.maxBlockDistance to reduce agent halting to wait for subgraphs. The previous default was overly strict at 0 blocks. PR #955
  • Make tap and RAV feature optional: Indexer may use tapSubgraph config to control the feature (not used when not set). PR #952
  • Allow configuring polling interval for data collection in agent. PR #977
  • Improve collision resistance of allocation IDs in common. PR #981
  • Add logging for endpoint in freshness checker in common. PR #839
  • Add Moonbeam, Fuse, and Blast to chain ID lookups in common. PR #980
  • Remove failed subgraph check in common. PR #984
  • Fix database migration for value_aggregate in agent from 20 to 39 digits. PR #973
  • Fix indexerStatus (paused) query by @dwerner in #989
  • Improve DB migration 14 which migrates deployments to use pause mechanism by @fordN in #990

Indexer-native

  • Update indexer-native to support neon 1.0.0 and napi-6. PR #975

Fixes

  • Remove queryInterface references to reduce the amount of objects being passed around. PR #948
  • Fix paused mechanism in indexer-common to ensure proper handling of deployment states. PR #986
  • Defend against graph-node bug #5550 (null paused) in agent. PR #978
  • Remove LRU max length by @dwerner in #991

Documentation

  • Remove outdated Scalar documentation to ensure users reference the most current information. PR #877
  • Eliminate references to the deprecated ethereum-network parameter and update gateway parameters for clearer configuration. PR #953

Continuous Integration

  • Remove support for Node.js 19 and add support for Node.js 22 to ensure compatibility with newer Node.js features and performance improvements. PR #874
  • Add a package manager for Corepack detection to streamline dependency management. PR #942

Full Changelog: v0.21.3...v0.21.4

v0.21.3

28 Jun 22:56
Compare
Choose a tag to compare
v0.21.3 Pre-release
Pre-release

Changes and fixes

  • indexer-agent: if alias does not exist try the actual flag by @saihaj in #838
  • indexer-agent: Avoid race conditions when queuing actions (hopefully fixes #879) by @Jannis in #883
  • indexer-agent: broken comparison of indexing decisions by @Theodus in #870
  • indexer-agent,indexer-common: Cleanup migration 12 by @carlosvdr in #932
  • indexer-agent,indexer-common: Improve control of subgraph deployment health safety check by @fordN in #852
  • indexer-agent,indexer-common: feat: allow early allocation closure by @tmigone in #895
  • indexer-agent,indexer-common: lower the default parameters for query fee claiming by @chriswessels in #922
  • indexer-agent,indexer-common,indexer-cli: Allow cost models in single network mode by @aasseman in #899
  • indexer-agent,indexer-common: fix tsconfig, error-handling export by @dwerner in #935
  • indexer-agent,indexer-common,indexer-service: feat optionally override address book by @Theodus in #818
  • indexer-agent,indexer-common,indexer-service: use sepolia instead of goerli for tests by @saihaj in #871
  • indexer-common: Add support for BSC, Base, Linea, Scroll by @fordN in #934
  • indexer-common: Upgrade @graphprotocol/cost-model by @fordN in #829
  • indexer-common: Avoid using createdAt field for pagination by @fordN in #914
  • indexer-common: Add more tests into tap.tests by @carlosvdr in #892
  • indexer-integration-tests: start integration test package by @dwerner in #891
  • indexer-service: Use consistent authorization header formats by @fordN in #896
  • indexer-service: Support setting rate limits and body size limits at startup by @fordN in #900
  • indexer-service: Increase size of attestation signer cache by @fordN in #906
  • indexer-service: Server integration tests by @fordN in #901
  • indexer-service: fix paginate allocation queries by @Theodus in #862
  • *: Make tapSubgraph to be an optional value by @carlosvdr in #904
  • *: bump versions by @dwerner in #938
  • *: Collect tap ravs by @carlosvdr in #869
  • docker: increase memory limit for node-js by @DaMandal0rian in #865
  • workflows: Fix formatting of Setup Python step in image build workflows by @fordN in #850

Doc and config updates

  • Add Optimism to support matrix by @fordN in #849
  • Release graph-node v0.34.0 to mainnet by @incrypto32 in #848
  • Release graph-node v0.35.0-rc.0 to testnet by @fordN in #872
  • Docs: updated feature support matrix with Graph Node v0.34.1 by @PedroMD in #855
  • docs: added base, bsc, scroll and linea to the feature support matrix by @PedroMD in #898
  • chore: update network subgraph deployment hashes by @juanmardefago in #897
  • fix: arbitrum-sepolia.md signer address by @aasseman in #884
  • Update feature support (ens, arweave, 0.35.x) by @azf20 in #886
  • Update hosted service subgraph endpoints in /docs & /docs/config-examples by @alex-pakalniskis in #909
  • Add missing addresses and resolve table formatting issues in network docs by @alex-pakalniskis in #924

New Contributors

Full Changelog: v0.21.2...v0.21.3

v0.21.2

19 Jan 17:23
Compare
Choose a tag to compare
v0.21.2 Pre-release
Pre-release

What's Changed

Changes and fixes

  • indexer-agent: Fix bug in stake usage summary by @fordN in #801
  • indexer-agent: Support subgraphs syncing sepolia and arbitrum-sepolia by @fordN in #819
  • indexer-agent: Improve robustness of DAI contract contract calls by @fordN in #825
  • indexer-agent: add tests for allocation decision consolidation by @tilacog in #767
  • indexer-agent: Improve batch action preparation by @fordN in #817
  • indexer-service: fix allocation monitor query by @tilacog in #808
  • indexer-service: Various robustness improvements by @fordN in #821
  • indexer-service: Improve validation of operator wallet by @fordN in #826
  • indexer-service: Add graph-node version endpoint from status api by @abarmat in #841
  • indexer-common: Reduce stringency of action validation when adding to queue by @fordN in #833

Docs and config updates

  • Release graph-node v0.33.0-rc.0 to testnet by @incrypto32 in #804
  • Release graph-node v0.33.0 to mainnet by @incrypto32 in #812
  • Update feature-support-matrix.md w/ Graph Node v0.33.0 as minimum ver… by @PedroMD in #810
  • docs: fix gateway url for arbitrum-one by @chriswessels in #795
  • docs/networks: Add network config docs for Sepolia and Arbitrum Sepolia by @fordN in #820
  • docs/networks: Arbitrum and Arbitrum Goerli update by @tomasztrzos in #823

Chores

New Contributors

Full Changelog: v0.20.23...v0.21.2

v0.20.23

11 Oct 15:00
Compare
Choose a tag to compare

For the complete list of issues resolved by this release, check the v0.20.23 Milestone.

v0.20.22

29 Aug 17:10
Compare
Choose a tag to compare

Fixed

  • Fixed bug causing the network subgraph to be removed after syncing.
  • Addressed minor Typescript lints regarding asynchronous function calls.

v0.20.21

24 Aug 19:57
Compare
Choose a tag to compare

Fixed

  • Add missing fields when parsing network specification from CLI options

Changed

  • Upgraded common-ts dependency to v2.0.3

v0.20.20

21 Aug 23:18
Compare
Choose a tag to compare

Adds the capacity for the Agent to interact with multiple protocol networks (blockchains that host The Graph Protocol) by running a single instance of the indexer-agent program.

Table of Contents

Multi-Network Mode

Multinetwork Mode can be enabled by setting the environment variable INDEXER_AGENT_MULTINETWORK_MODE
to "true".

While in multinetwork mode, the Indexer Agent will perform all of its usual routines, but for each
specified network.

In that mode, each protocol network is represented by one YAML file under the same directory, which can
be decalred in the command line argument --network-specifications-directory, which must be a path
the Indexer Agent can access during its startup.

Example Network Specification Files

Goerli

This example network specification YAML file represents all possible configuration fields and their
default values.

networkIdentifier: goerli  # could also be named "eipp155:5"

gateway:
  url: https://gateway.testnet.thegraph.com

indexerOptions:
  address: "0x391042eC4ae8ab799Efdfd82021d059a19c6ED86"
  mnemonic: "aunt what review ordinary initial rocket wheel enter private chef tree surface"
  url: http://localhost:7600
  allocationManagementMode: auto
  restakeRewards: true
  rebateClaimThreshold: 200
  rebateClaimBatchThreshold: 200
  rebateClaimMaxBatchSize: 100
  poiDisputeMonitoring: false
  poiDisputableEpochs: 1
  defaultAllocationAmount: 0.1
  voucherRedemptionThreshold: 200
  voucherRedemptionBatchThreshold: 2000
  voucherRedemptionMaxBatchSize: 100
  autoAllocationMinBatchSize: 1
  allocateOnNetworkSubgraph: false
  register: true

transactionMonitoring:
  gasPriceMax: 100
  gasIncreaseTimeout: 240 # in seconds
  gasIncreaseFactor: 1.2
  gasPriceMax: 100 # in gwei
  baseFeePerGasMax: 100 # in gwei
  maxTransactionAttempts: 0 # zero retries indefinitely

subgraphs:
  networkSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-goerli
    deployment: QmRFMZT2rmdo558S8GWPNYJ61qchSUTEMHirYnm4MRqHEP
  epochSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/goerli-epoch-block-oracle

networkProvider:
  url: "<insert the URL of your Goerli JSON-RPC provider here>"

dai:
  # Mind that the cost model feature is only enabled for Ethereum Mainnet (see notes below)
  contractAddress: "0x11fE4B6AE13d2a6055C8D9cF65c55bac32B5d844"
  inject: true

Arbitrum Goerli

In turn, this YAML network specification file represents just the required fields.

networkIdentifier: arbitrum-goerli # could also be named "eipp155:421613"

gateway:
  url: https://gateway-testnet-arbitrum.network.thegraph.com

indexerOptions:
  address: "0x79EB6E112a00A4b99B8ABf0B983159d54A8be316"
  mnemonic: "juice zebra sister column fit praise behind trust merit slab place general"
  url: http://localhost:7600
  allocationManagementMode: oversight

subgraphs:
  networkSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-arbitrum-goerli
    deployment: QmW8YxdkQjFb7wHMDo9u4DodLga4YHdByfKsBxCCcUx6cQ
  epochSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/arb-goerli-epoch-block-oracle

networkProvider:
  url: "<insert the URL of your Goerli JSON-RPC provider here>"

API Changes

The Indexer Agent GraphQL API was updated to accept (and in some cases require) a protocolNetwork
parameter to determine which network should be used for queries or mutations.

Likewise,the Indexer CLI was updated to accept the --network option as the context for most of its
commands.

GraphQL API Changes

# --------------------------------------------------------------------------------
# * inputs
# --------------------------------------------------------------------------------
input AllocationFilter {
  protocolNetwork: String # new optional filtering parameter
}

input ActionInput {
  protocolNetwork: String! # new required parameter
}

input ActionFilter {
  protocolNetwork: String # new optional filtering parameter
}

# New dedicated identifier type
input POIDisputeIdentifier {
  allocationID: String!
  protocolNetwork: String!
}

input POIDisputeInput {
  protocolNetwork: String! # new required parameter
}

input IndexingRuleInput {
  protocolNetwork: String! # new required parameter
}

# New dedicated identifier type
input IndexingRuleIdentifier {
  identifier: String!
  protocolNetwork: String!
}

# --------------------------------------------------------------------------------
# * types
# --------------------------------------------------------------------------------
type Allocation {
  protocolNetwork: String! # new non-nullable field
}

type CreateAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type CloseAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type ReallocateAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type Action {
  protocolNetwork: String! # new non-nullable field
}

type ActionResult {
  protocolNetwork: String! # new non-nullable field
}

type POIDispute {
  protocolNetwork: String! # new non-nullable field
}

type IndexingRule {
  protocolNetwork: String! # new non-nullable field
}

type IndexerRegistration {
  protocolNetwork: String # new non-nullable field
}

type IndexerEndpoint {
  protocolNetwork: String! # new optional filtering parameter
}

#--------------------------------------------------------------------------------
# * enums
# --------------------------------------------------------------------------------
enum ActionParams {
  protocolNetwork # new enum variant
}

# --------------------------------------------------------------------------------
# * queries
# --------------------------------------------------------------------------------

type Query {
  indexingRule(
    identifier: IndexingRuleIdentifier! # parameter type changed from String!
  ): IndexingRule

  indexingRules(
    protocolNetwork: String # new optional filtering parameter
  ): [IndexingRule!]!

  indexerRegistration(
    protocolNetwork: String! # new required parameter
  ): IndexerRegistration!

  indexerAllocations(
    protocolNetwork: String! # new required parameter
  ): [IndexerAllocation]!

  indexerEndpoints(
    protocolNetwork: String! # new required parameter
  ): [IndexerEndpoints!]!

  dispute(
    identifier: POIDisputeIdentifier! # parameter type changed from String!
  ): POIDispute

  disputes(
    protocolNetwork: String # new optional filtering parameter
  ): [POIDispute]!

  disputesClosedAfter(
    protocolNetwork: String # new optional filtering parameter
  ): [POIDispute]!
}

# --------------------------------------------------------------------------------
# * mutations
# --------------------------------------------------------------------------------
type Mutation {
  deleteIndexingRule(
    identifier: IndexingRuleIdentifier! # parameter type changed from String!
  ): Boolean!
  deleteIndexingRules(
    identifiers: [IndexingRuleIdentifier!]! # parameter changed from [String!]!
  ): Boolean!

  deleteDisputes(
    identifiers: [POIDisputeIdentifier!]! # parameter changed from [String!]!
  ): Int!

  createAllocation(
    protocolNetwork: String # new required parameter
  ): CreateAllocationResult!
  closeAllocation(
    protocolNetwork: String! # new required parameter
  ): CloseAllocationResult!
  reallocateAllocation(
    protocolNetwork: String! # new required parameter
  ): ReallocateAllocationResult!
}

Indexer CLI command changes

Most indexer-cli commands now accept or require a network argument, to bring the protocol network
into the command's context

  1. Commands that now accept the --network option to filter its results

    • indexer actions get
    • indexer allocations get
    • indexer disputes get
    • indexer rules get
  2. Commands that now require the --network option

    • indexer actions queue
    • indexer rules clear
    • indexer rules delete
    • indexer rules maybe
    • indexer rules offchain
    • indexer rules set
    • indexer rules start
    • indexer rules stop
    • indexer status
  3. Commands that now require a network positional argument

    • indexer allocations close
    • indexer allocations create
    • indexer allocations reallocate

The /network endopoint

The /network endpoint exposed by the Agent now requires an additional path segment to disambiguate
which protocol network it should target.

Assuming the Agent is configured with those networks, all the paths below are valid:

  • /network/mainnet
  • /network/eip155:1
  • /network/arbitrum-one
  • /network/eip155:42161
  • /network/goerli
  • /network/eip155:5
  • /network/arbitrum-goerli
  • /network/eip155:421613

Database Migrations

A new database migration will create a...

Read more

v0.20.18

11 Aug 19:18
Compare
Choose a tag to compare
v0.20.18 Pre-release
Pre-release

L2 Support for Indexer Agent

Adds the capacity for the Agent to interact with multiple protocol networks (blockchains that host The Graph Protocol) by running a single instance of the indexer-agent program.

Table of Contents

Multi-Network Mode

Multinetwork Mode can be enabled by setting the environment variable INDEXER_AGENT_MULTINETWORK_MODE
to "true".

While in multinetwork mode, the Indexer Agent will perform all of its usual routines, but for each
specified network.

In that mode, each protocol network is represented by one YAML file under the same directory, which can
be decalred in the command line argument --network-specifications-directory, which must be a path
the Indexer Agent can access during its startup.

Example Network Specification Files

Goerli

This example network specification YAML file represents all possible configuration fields and their
default values.

networkIdentifier: goerli  # could also be named "eipp155:5"

gateway:
  url: https://gateway.testnet.thegraph.com

indexerOptions:
  address: "0x391042eC4ae8ab799Efdfd82021d059a19c6ED86"
  mnemonic: "aunt what review ordinary initial rocket wheel enter private chef tree surface"
  url: http://localhost:7600
  allocationManagementMode: auto
  restakeRewards: true
  rebateClaimThreshold: 200
  rebateClaimBatchThreshold: 200
  rebateClaimMaxBatchSize: 100
  poiDisputeMonitoring: false
  poiDisputableEpochs: 1
  defaultAllocationAmount: 0.1
  voucherRedemptionThreshold: 200
  voucherRedemptionBatchThreshold: 2000
  voucherRedemptionMaxBatchSize: 100
  autoAllocationMinBatchSize: 1
  allocateOnNetworkSubgraph: false
  register: true

transactionMonitoring:
  gasPriceMax: 100
  gasIncreaseTimeout: 240 # in seconds
  gasIncreaseFactor: 1.2
  gasPriceMax: 100 # in gwei
  baseFeePerGasMax: 100 # in gwei
  maxTransactionAttempts: 0 # zero retries indefinitely

subgraphs:
  networkSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-goerli
    deployment: QmRFMZT2rmdo558S8GWPNYJ61qchSUTEMHirYnm4MRqHEP
  epochSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/goerli-epoch-block-oracle

networkProvider:
  url: "<insert the URL of your Goerli JSON-RPC provider here>"

dai:
  # Mind that the cost model feature is only enabled for Ethereum Mainnet (see notes below)
  contractAddress: "0x11fE4B6AE13d2a6055C8D9cF65c55bac32B5d844"
  inject: true

Arbitrum Goerli

In turn, this YAML network specification file represents just the required fields.

networkIdentifier: arbitrum-goerli # could also be named "eipp155:421613"

gateway:
  url: https://gateway-testnet-arbitrum.network.thegraph.com

indexerOptions:
  address: "0x79EB6E112a00A4b99B8ABf0B983159d54A8be316"
  mnemonic: "juice zebra sister column fit praise behind trust merit slab place general"
  url: http://localhost:7600
  allocationManagementMode: oversight

subgraphs:
  networkSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-arbitrum-goerli
    deployment: QmW8YxdkQjFb7wHMDo9u4DodLga4YHdByfKsBxCCcUx6cQ
  epochSubgraph:
    url: https://api.thegraph.com/subgraphs/name/graphprotocol/arb-goerli-epoch-block-oracle

networkProvider:
  url: "<insert the URL of your Goerli JSON-RPC provider here>"

API Changes

The Indexer Agent GraphQL API was updated to accept (and in some cases require) a protocolNetwork
parameter to determine which network should be used for queries or mutations.

Likewise,the Indexer CLI was updated to accept the --network option as the context for most of its
commands.

GraphQL API Changes

# --------------------------------------------------------------------------------
# * inputs
# --------------------------------------------------------------------------------
input AllocationFilter {
  protocolNetwork: String # new optional filtering parameter
}

input ActionInput {
  protocolNetwork: String! # new required parameter
}

input ActionFilter {
  protocolNetwork: String # new optional filtering parameter
}

# New dedicated identifier type
input POIDisputeIdentifier {
  allocationID: String!
  protocolNetwork: String!
}

input POIDisputeInput {
  protocolNetwork: String! # new required parameter
}

input IndexingRuleInput {
  protocolNetwork: String! # new required parameter
}

# New dedicated identifier type
input IndexingRuleIdentifier {
  identifier: String!
  protocolNetwork: String!
}

# --------------------------------------------------------------------------------
# * types
# --------------------------------------------------------------------------------
type Allocation {
  protocolNetwork: String! # new non-nullable field
}

type CreateAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type CloseAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type ReallocateAllocationResult {
  protocolNetwork: String! # new non-nullable field
}

type Action {
  protocolNetwork: String! # new non-nullable field
}

type ActionResult {
  protocolNetwork: String! # new non-nullable field
}

type POIDispute {
  protocolNetwork: String! # new non-nullable field
}

type IndexingRule {
  protocolNetwork: String! # new non-nullable field
}

type IndexerRegistration {
  protocolNetwork: String # new non-nullable field
}

type IndexerEndpoint {
  protocolNetwork: String! # new optional filtering parameter
}

#--------------------------------------------------------------------------------
# * enums
# --------------------------------------------------------------------------------
enum ActionParams {
  protocolNetwork # new enum variant
}

# --------------------------------------------------------------------------------
# * queries
# --------------------------------------------------------------------------------

type Query {
  indexingRule(
    identifier: IndexingRuleIdentifier! # parameter type changed from String!
  ): IndexingRule

  indexingRules(
    protocolNetwork: String # new optional filtering parameter
  ): [IndexingRule!]!

  indexerRegistration(
    protocolNetwork: String! # new required parameter
  ): IndexerRegistration!

  indexerAllocations(
    protocolNetwork: String! # new required parameter
  ): [IndexerAllocation]!

  indexerEndpoints(
    protocolNetwork: String! # new required parameter
  ): [IndexerEndpoints!]!

  dispute(
    identifier: POIDisputeIdentifier! # parameter type changed from String!
  ): POIDispute

  disputes(
    protocolNetwork: String # new optional filtering parameter
  ): [POIDispute]!

  disputesClosedAfter(
    protocolNetwork: String # new optional filtering parameter
  ): [POIDispute]!
}

# --------------------------------------------------------------------------------
# * mutations
# --------------------------------------------------------------------------------
type Mutation {
  deleteIndexingRule(
    identifier: IndexingRuleIdentifier! # parameter type changed from String!
  ): Boolean!
  deleteIndexingRules(
    identifiers: [IndexingRuleIdentifier!]! # parameter changed from [String!]!
  ): Boolean!

  deleteDisputes(
    identifiers: [POIDisputeIdentifier!]! # parameter changed from [String!]!
  ): Int!

  createAllocation(
    protocolNetwork: String # new required parameter
  ): CreateAllocationResult!
  closeAllocation(
    protocolNetwork: String! # new required parameter
  ): CloseAllocationResult!
  reallocateAllocation(
    protocolNetwork: String! # new required parameter
  ): ReallocateAllocationResult!
}

Indexer CLI command changes

Most indexer-cli commands now accept or require a network argument, to bring the protocol network
into the command's context

  1. Commands that now accept the --network option to filter its results

    • indexer actions get
    • indexer allocations get
    • indexer disputes get
    • indexer rules get
  2. Commands that now require the --network option

    • indexer actions queue
    • indexer rules clear
    • indexer rules delete
    • indexer rules maybe
    • indexer rules offchain
    • indexer rules set
    • indexer rules start
    • indexer rules stop
    • indexer status
  3. Commands that now require a network positional argument

    • indexer allocations close
    • indexer allocations create
    • indexer allocations reallocate

The /network endopoint

The /network endpoint exposed by the Agent now requires an additional path segment to disambiguate
which protocol network it should target.

Assuming the Agent is configured with those networks, all the paths below are valid:

  • /network/mainnet
  • /network/eip155:1
  • /network/arbitrum-one
  • /network/eip155:42161
  • /network/goerli
  • /network/eip155:5
  • /network/arbitrum-goerli
  • /network/eip155:421613

Database Migrations

A ne...

Read more