The pipeline supports 10 EVM networks, each configured with its own token addresses, reward thresholds, and Dune blockchain name. The active network is selected via theDocumentation 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.
NETWORK environment variable using the enum value shown in the table below.
The Network enum
src/config.py
NETWORK environment variable to the enum’s string value to select the target chain:
Network reference table
| Network | NETWORK value | Dune blockchain | Native token | min_native_token_transfer | min_cow_transfer | quote_reward_cap_native |
|---|---|---|---|---|---|---|
| Ethereum mainnet | mainnet | ethereum | ETH | 0.001 ETH (1e15) | 10 COW (10e18) | 0.0007 ETH (7e14) |
| Gnosis Chain | gnosis | gnosis | xDAI | 0.01 xDAI (1e16) | 1 COW (1e18) | 0.15 xDAI (15e16) |
| Arbitrum One | arbitrum | arbitrum | ETH | 0.0001 ETH (1e14) | 1 COW (1e18) | 0.00024 ETH (24e13) |
| Base | base | base | ETH | 0.0001 ETH (1e14) | 1 COW (1e18) | 0.00024 ETH (24e13) |
| Avalanche | avalanche | avalanche_c | AVAX | 0.0001 AVAX (1e14) | 1 COW (1e18) | 0.006 AVAX (6e15) |
| Polygon | polygon | polygon | POL | 0.0001 POL (1e14) | 1 COW (1e18) | 0.6 POL (6e17) |
| BNB Smart Chain | bnb | bnb | BNB | 0.0001 BNB (1e14) | 1 COW (1e18) | 0.001 BNB (1e15) |
| Linea | linea | linea | ETH | 0.0001 ETH (1e14) | 1 COW (1e18) | 0.00003 ETH (3e13) |
| Plasma | plasma | plasma | XPL | 0.0001 XPL (1e14) | 1 COW (1e18) | 0.6 XPL (6e17) |
| Ink | ink | ink | ETH | 0.0001 ETH (1e14) | 1 COW (1e18) | 0.00003 ETH (3e13) |
Token addresses per network
Each network is configured with two key token addresses inPaymentConfig:
wrapped_native_token_address— the wrapped version of the chain’s native gas token (e.g. WETH, WAVAX). Used to check whether a WETH unwrap must be prepended to the multisend transaction.wrapped_eth_address— the address of bridged/wrapped ETH on that chain. Used for price lookups via CoinPaprika.
Ethereum mainnet
Ethereum mainnet
| Field | Value |
|---|---|
| Wrapped native token (WETH) | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 |
| Wrapped ETH | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 |
| COW token | 0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB |
| Analytics DB name | mainnet |
| Safe short name | eth |
Gnosis Chain
Gnosis Chain
| Field | Value |
|---|---|
| Wrapped native token (WXDAI) | 0xe91d153e0b41518a2ce8dd3d7944fa863463a97d |
| Wrapped ETH | 0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1 |
| COW token | 0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB |
| Analytics DB name | xdai |
| Safe short name | gno |
Arbitrum One
Arbitrum One
| Field | Value |
|---|---|
| Wrapped native token (WETH) | 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 |
| Wrapped ETH | 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | arbitrum-one |
| Safe short name | arb1 |
Base
Base
| Field | Value |
|---|---|
| Wrapped native token (WETH) | 0x4200000000000000000000000000000000000006 |
| Wrapped ETH | 0x4200000000000000000000000000000000000006 |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | base |
| Safe short name | base |
Avalanche
Avalanche
| Field | Value |
|---|---|
| Wrapped native token (WAVAX) | 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 |
| Wrapped ETH | 0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | avalanche |
| Safe short name | avax |
Polygon
Polygon
| Field | Value |
|---|---|
| Wrapped native token (WPOL) | 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 |
| Wrapped ETH | 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | polygon |
| Safe short name | matic |
BNB Smart Chain
BNB Smart Chain
| Field | Value |
|---|---|
| Wrapped native token (WBNB) | 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c |
| Wrapped ETH | 0x4db5a66e937a9f4473fa95b1caf1d1e1d62e29ea |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | bnb |
| Safe short name | bnb |
Linea
Linea
| Field | Value |
|---|---|
| Wrapped native token (WETH) | 0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f |
| Wrapped ETH | 0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | linea |
| Safe short name | linea |
Plasma
Plasma
| Field | Value |
|---|---|
| Wrapped native token (WXPL) | 0x6100e367285b01f48d07953803a2d8dca5d19873 |
| Wrapped ETH | 0x9895d81bb462a195b4922ed7de0e3acd007c32cb |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | plasma |
| Safe short name | plasma |
Ink
Ink
| Field | Value |
|---|---|
| Wrapped native token (WETH) | 0x4200000000000000000000000000000000000006 |
| Wrapped ETH | 0x4200000000000000000000000000000000000006 |
| COW token (dummy) | 0x0000000000000000000000000000000000000006 |
| Analytics DB name | ink |
| Safe short name | ink |
The COW token address is only real on Ethereum mainnet (
0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB) and Gnosis Chain. On all other networks it is set to the dummy address 0x0000000000000000000000000000000000000006. This is intentional: COW token transfers are always executed on Ethereum mainnet regardless of which network is being processed, so the on-chain cow_token_address for non-mainnet networks is never used in actual ERC-20 calls.COW transfers always happen on Ethereum mainnet
The pipeline maintains two separate Safe transactions per payout run: one for native token transfers on the target network, and one for COW token transfers — the latter is always posted to Ethereum mainnet, even when processing rewards for Gnosis Chain, Arbitrum, or any other network. This means the pipeline requires a mainnet node URL (NODE_URL_MAINNET) in addition to the target-chain node URL (NODE_URL).
From src/fetch/transfer_file.py:
src/fetch/transfer_file.py
Nonce modifier system
Because the pipeline proposes COW transfers for all supported networks via the same Ethereum mainnet Safe, it needs to queue multiple transactions without nonce conflicts. Thenonce_modifier_dict assigns each network a unique offset from the current Safe nonce:
src/config.py
Network enum in reverse order and assigns start=0 to the last network (INK), incrementing toward MAINNET. The result is a stable, deterministic offset for each network’s mainnet COW transaction.
The NONCE_MODIFIER environment variable can override the computed value if a specific offset is needed (for example when re-running a failed proposal).
