All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.21.2 - 2024-01-18
- Improve efficiency of batch action preparation
- Add falback if decimals() call to DAI contract fails
- Add tests for allocation decision consolidation
0.20.23 - 2023-09-29
- Subgraph Freshness check for Epoch and Network subgraphs
manual
deployment management mode
- Deprecate old payment systems after Exponential Rebates contract changes
- Updated README files
0.20.22 - 2023-08-28
- Fixed bug causing the network subgraph to be removed after syncing
0.20.21 - 2023-08-22
- Add missing fields when parsing network specification from CLI options
- Upgraded
common-ts
dependency to v2.0.3
0.20.20 - 2023-08-21
- Properly skip reconciling allocations on a network in MANUAL mode
- Missing string interpolation in migration file
- Indexer registration was running for already registered indexers
0.20.19 - 2023-08-18
- Contract interface changes involving Exponential Rebates
- Included the protocolNetwork field when checking for duplicate action targets
- Enforced active connections with Graph-Node and the database during startup
- PostgreSQL connection pool size can be configured with the
postgres-pool-size
(defaults to50
).
- Skip dispute checking on epochs with unavailable start block hash
0.20.18 - 2023-08-11
- A new migration to add the
- Actions
- IndexingRules
- POIDisputes
- allocation_receipts
- vouchers
- transfer_receipts
- transfers
- allocation_summaries
- The Agent can now be configured for multiple protocol networks.
To enable this feature, start the agent with the environment variable
INDEXER_AGENT_MULTINETWORK_MODE
set totrue
and specify a directory containing YAML network specification files, one per network. - The Agent can be configured to automatically support subgraph transfers from L1 to L2. To enable
this feature, set the
enable-auto-migration-support
startup option totrue
.
- The 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. - The
/network
endpoint exposed by the Agent now requires an additional path segment to disambiguate which protocol network it should target, like/network/mainnet
or/network/arbitrum-one
.
0.20.17 - 2023-06-19
- Use updated batch stake feasibility check, improve potential action batch efficiency
0.20.12 - 2023-02-19
- Only require network current epoch resolutio if indexing a subgraph on network chain
0.20.11 - 2023-02-01
- Remove unnecessary currentEpochStartBlock eventual
0.20.9 - 2023-01-24
- The
--epoch-subgraph-endpoint
is now a required parameter to start the Agent
0.20.7 - 2022-12-20
- Agent makes deployment assignment decisions
0.20.6 - 2022-12-14
- The
ethereum-network
command line argument is no longer required
- Leave subgraph node assignment decisions to the graph nodes (user can control using graph-node.toml)
- Upgrade @graphprotocol/common-ts to v2.0.1
0.20.4 - 2022-09-29
- Use partial-vouchers endpoint to batch receipt collection
- Integrate epochSubgraph, use for multi-chain POI resolve
- Remove cost model default file in favor or applying via cli
0.20.3 - 2022-08-31
- Include rule match crieteria as action reason to improve debugging process
0.20.2 - 2022-08-09
- Migration: update Actions.failureReason column size
0.20.1 - 2022-08-04
- Provide allocation action batching controls
- Option to set a global default cost model
- Support Goerli network (upgrade @graphprotocol/contracts)
0.20.0 - 2022-06-21
- Support file-based configuration of startup params
- New allocation management mode, oversight, for requiring indexer approval to execute agents actions
- Agent now pushes proposed allocation changes to action queue for execution by worker instead of executing them from the agent
0.19.3 - 2022-06-14
- Move Network module to indexer-common
- Manual management mode
0.19.1 - 2022-04-21
- Upgrade dependencies
- Assign deployments to nodes based on usage
- Check previous allocation closed w/ valid POI before creating
0.19.0 - 2022-02-24
- Added automatic batching of query voucher redemptions
- Added
--voucher-redemption-threshold
,--voucher-redemption-batch-threshold
and--voucher-redemption-max-batch-size
for controlling voucher batching behaviour - Expose option to allocate to network subgraph
- Live metric for operator ETH balance
- DB migration CLI tool for testing and management of migrations
- Support indexer rules defined by subgraph id
- Support offchain subgraph management via indexing rules / CLI
- Agent immediately reconciles after rule update
- Manage allocation lifetimes via rules/CLI
- Reject unsupported subgraphs by default
- Optional autorenewal of allocations
- Added
--rebate-claim-max-batch-size
to make max batch size configurable. For users in low-RAM environments, the primary constraint is not block space but the RAM required to construct large transactions. - Improved validation of rebate batch claim parameters
- Upgrade dependencies
- Improve log messages readability
- Use signallTokens instead of signalAmount for minSignal threshold
- Use AllocationExchange contract from common-ts
0.18.6 - 2021-12-23
- Fix subgraphDeploymentsWorthIndexing batch query mangagement
0.18.4 - 2021-12-09
- Max claim batch size parameter
- Fix logic to ensure network subgraph not allocated towards
0.18.3 - 2021-11-23
- Only add prefix to voucher address if not present
- Bump type 2 transaction gas fee configs on retry after timeout
- Keep deployment indexing for 1 day after allocation close
- Reducing transaction logging redundancy to improve readability
0.18.2 - 2021-10-19
- Bump priority gas fee on gas price too low retry
- Set default parallelAllocations = 1
0.18.0 - 2021-09-07
- Support type 0x2 transactions (EIP-1559)
- Close all parallel allocations and only renew a single allocation per deployment
- Include an additional state for indexing dispute monitoring, references_unavailable, for the case where the indexer does not have a reference PoI available. Typically this case occurs when an indexer's deployment is not synced far enough
- Update Ethers dependencies
- Simplify transaction retry logic on nonce collisions; agent now introduces a delay and returns to reconciliation step to re-evaluate
- Deprecate the parallel allocations feature
- Update max-transaction-attempts default to unlimited to avoid orphaned transactions
- Treat deployments assigned to node = null or undefined as removed, so they are filtered out of the activeDeployments array
- Fix delete query fee vouchers logic, so they are actually removed after the expiration time
- Update tests to use the latest version of the Indexer class constructor
0.17.0 - 2021-07-21
- Reallocate to subgraph deployment in one transaction using closeAndAllocate
- Wait for gas prices below the
gas-price-max
(gwei) before proceeding with transaction execution
- Show subgraph query error reason in logs
- Use
ClusterIP
in the k8s indexer agent service rather than aLoadBalalancer
sinceLoadBalancer
services have been shown to introduce extra latency - Use undefined for auth user and password if none specified
- Update
gas-price-max
units to be gwei instead of wei for improved human readability - Default
gas-price-max
changed from 20 gwei to 50 gwei
- Improve robustness of subgraph deployments query by querying batches of only 10 deployments at a time
0.16.0 - 2021-06-09
- Default to only one transaction retry attempt to reduce gas usage
- Apply allocation claim threshold to redeeming query fee vouchers as well
- Add the same network subgraph fallback logic as the agent uses
- Improve handling of reverted transactions by detecting the revert reason
0.15.1 - 2021-05-26
- Ensure allocation summaries exist for allocations created before v0.15.0 or outside the indexer agent
0.15.0 - 2021-05-25
- Make receipts table renaming migration more robust
- Allow network subgraph endpoint to be used as a fallback for the local network subgraph deployment
- Add allocation exchange contract address for mainnet
- Rename query fee related fields in database models
0.14.0 - 2021-05-12
- Store allocations for which the POI has been checked
- Add subgraph deployment ID to POI disputes
- Add allocation-based receipts and query fee vouchers as an alternative to Vector. This is the default for now. Vector support can still be enabled with
--use-vector
.
- Handle 'nonce has already been used' transaction failures
0.13.0 - 2021-04-19
- Update to latest common-ts
- Correctly determine the previous epoch when generating POIs
0.12.0 - 2021-04-06
- Update common-ts and ethers
0.11.0 - 2021-03-31
- Add
--offchain-subgraphs
to index subgraph deployments that are not on chain - Add
--poi-monitoring
(experimental) to monitor and cross-check POIs submitted in the network - Add support for new payments system
- Add database migration to remove old state channel tables
- Resubmit transactions with higher gas price if they are not mined
- Update @graphprotocol/common-ts to 1.3.2 (equality fix in eventuals, latest contracts)
0.10.0 - 2021-01-29
- Update common-ts to 1.3.0 to include new testnet contracts
0.9.5 - 2021-01-16
- Update ethers to 5.0.26 to avoid unresolved promise rejections (#183)
- Update common-ts to 1.2.1
0.9.4 - 2021-01-13
- Never close allocations if the POI is zero or null (#186)
- Retry obtaining a POI ten times before giving up
0.9.3 - 2021-01-11
- Fix how query fee threshold is passed to claimable allocations query
0.9.2 - 2021-01-09
- Add
--allocation-claim-threshold
option for configure a GRT amount below which the agent should not attempt to claim rebate (query) rewards
- Synchronize data independently using different intervals and reconcile reliably every 2 minutes
- Submit proof of indexing for the first block of the current epoch
- Reliably obtain proof of indexing by passing block number to
proofOfIndexing
API (#186)
- Update common-ts to 1.2.0
0.9.1 - 2020-12-31
- Register after having the network subgraph synced
0.9.0-alpha.4 - 2020-12-20
- Fix race condition between registering and pause/operator detection (#167)
0.9.0-alpha.3 - 2020-12-19
- Use 1.5x the estimated gas to avoid transactions running out of gas
- Default to mainnet instead of rinkeby in
--ethereum-network
- Add
--dai-contract
/INDEXER_AGENT_DAI_CONTRACT
to set the stablecoint for--inject-dai
0.4.5 - 2020-12-15
- Retry network synchronization (#146)
- Index but don't allocate towards network subgraph
0.4.4 - 2020-12-14
- Allow non-HTTPS/insuecure Ethereum connections
- Catch and log unhandled promise rejections and exceptions instead of crashing
- Allow Ethereum network to be configured, avoiding fallible network detection in ethers.js
0.4.3 - 2020-12-07
- Fix incorrect error code used in database migrations
- Decouple claiming rewards from updating allocations
- Don't abort reconciling if removing a deployment fails
- Never fail reconciling early
- Fix zero allocation amount log messages
- Catch more unauthorized transactions
- Only queue transactions after checking paused and operator status
- Do nothing if not an operator
- Fix indexer === operator detection
- Use StaticJsonRpcProvider to reduce Ethereum requests
- Lengthen network synchronization interval to 120s
- Improve log message for already closed allocations
- Add
eth_provider_requests
metric to track Ethereum requests
0.4.2 - 2020-11-30
- Fix signing allocation ID proofs with the corresponding private key
0.4.1 - 2020-11-27
- Fix GDAI token address
0.4.0 - 2020-11-27
- Add migration to reset state channels
- Update common-ts to 0.4.0
0.3.7-alpha.8 - 2020-11-27
- Make use of the new indexer error codes
0.3.7-alpha.7 - 2020-11-27
- Increase network synchronization intervals
0.3.7-alpha.0 - 2020-11-17
- Add
--restake-rewards
option for choosing what to do with indexing rewards
- Update
@graphprotocol/common-ts
to 0.3.13
0.3.6 - 2020-11-11
- Document that --index-node-ids are comma-separated
- Update network subgraph deployment
- Fix caching of indexing status queries
- Fix submitting a non-zero PoI on incompatible networks
0.3.4 - 2020-10-29
- Update and pin all dependencies
0.3.3 - 2020-10-28
- Fix not creating any allocations at all anymore
- Add database migrations
- Rename
$DAI
injection flag to--inject-dai
0.3.2 - 2020-10-27
- Don't try to allocate zero or negative GRT amounts
- Submit random POI, if cannot create one, to allow testing of indexer rewards distribution on testnet
- Add optional GDAI/GRT variable automation
- Include metrics for the GRT<->DAI conversion rate in both directions
- Reduce failed allocate txs by improving allocation id collision resistence
- Increase effective allocations limit (100 -> 1000)
- Validate allocation ID with contract before sending an allocate() tx
0.3.1 - 2020-10-15
- Update common-ts to 0.3.3
0.3.0 - 2020-10-13
- Fix ethers incompatibilities
- Avoid closing allocations repeatedly
- Fix
INDEXER_AGENT_INDEXER_GEO_COORDINATES
environment variable (#58)
- Implement reconciliation loop using eventuals
- Improve synchronization comments
- Update common-ts to 0.3.2
- Update contracts to 0.7.5-testnet-phase2
- Add full support for managing allocations as an operator
- Generate unique but deterministic allocation IDs
- Handle network pausing
- Submit POI when closing allocations
- Claim rebate rewards for finalized allocations
- Log contract addresses when connecting to the network
- Add --indexer-address to declare which indexer is being operated for
- Remove staking (indexers need to do it, operators cannot)
0.2.6 - 2020-10-13
- Avoid settling allocations that are already settled on chain
- Fix input validation of geo coordinates
- Use new indexer-common library
- Update common-ts, server-wallet and ethers
0.2.5 - 2020-09-01
- Depend on @graphprotocol/common-ts from npmjs.org
0.2.4 - 2020-09-01
- Support
--graph-node-admin-endpoint
over HTTPS - Terraform: Allow to configure preemptible worker nodes
- Settle allocations only after at least one epoch has passed
- Reconcile deployments and allocations every ~10+ seconds
- Show and use correct token/allocation amounts everywhere
- Update @graphprotocol/common-ts to 0.2.4
0.2.3 - 2020-08-27
- Re-register indexer when geohash differs
- Update @graphprotocol/common-ts to 0.2.3
- Indexer agent fails to detect GRT approval
- Update @graphprotocol/common-ts to 0.2.2