The pipeline reads configuration exclusively from environment variables (loaded viaDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/cowprotocol/solver-rewards/llms.txt
Use this file to discover all available pages before exploring further.
python-dotenv from a .env file at the project root). Copy .env.sample to .env and fill in the values before running.
Network & Node
The EVM network to run accounting for. Must be one of:
mainnet, gnosis, arbitrum, base, avalanche, polygon, bnb, linea, plasma, ink.JSON-RPC endpoint for the target network specified by
NETWORK. Used for on-chain queries (token decimals, Safe nonce, etc.) and for posting Safe transactions.JSON-RPC endpoint specifically for Ethereum mainnet. Required even when
NETWORK is set to another chain, because COW token payments are always proposed on mainnet via a nonce-shifted transaction.Dune Analytics
API key for the Dune Analytics API. Used by
DuneFetcher to execute on-chain queries that compute solver performance, slippage, and quote rewards.Database
PostgreSQL connection URL for the CoW Protocol analytics database, without a trailing database name. The pipeline appends
/{environment}_{network_db_name} dynamically (e.g. prod_mainnet, staging_xdai) to target each environment. Used by MultiInstanceDBFetcher to retrieve solver metrics from the dbt schema.PostgreSQL connection URL for the barn (staging) orderbook database.
PostgreSQL connection URL for the production orderbook database.
Safe & Payments
Checksum address of the Gnosis Safe on the target network that holds native token funds and signs reimbursement transactions.
Checksum address of the Gnosis Safe on Ethereum mainnet that holds COW tokens. COW rewards for all chains are paid from this safe using a nonce offset to allow multiple in-flight transactions.
Private key (hex, no
0x prefix) of the account authorised to sign and propose Safe transactions. When left empty the pipeline runs in read-only / dry-run mode and will not post any transactions.API key for the Safe Transaction Service. Required when
PROPOSER_PK is set and transactions need to be posted to the Safe queue.Overrides the automatic nonce offset applied to mainnet transactions. When not set, the pipeline computes a deterministic offset per network based on the reversed
Network enum ordering so that simultaneous multi-chain runs can queue distinct transactions without nonce collisions.Default: computed from {network: idx for idx, network in enumerate(reversed(list(Network)), start=0)}Slack Notifications
OAuth token for a Slack bot app. When provided together with
SLACK_CHANNEL, the pipeline posts a summary of computed transfers to the channel after each run.Slack channel ID (e.g.
C01234ABCDE) where payout summaries are posted. Has no effect unless SLACK_TOKEN is also set.Output
Directory where CSV output files are written. Relative paths are resolved from the project root.Default:
./out