Skip to main content

Documentation 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.

Reward parameters are defined in src/config.py as frozen dataclasses. They govern how much COW and native token each solver receives per accounting period and per quote provided.

RewardConfig

@dataclass(frozen=True)
class RewardConfig:
    """Configuration for reward mechanism."""

    reward_token_address: Address
    quote_reward_cow: int
    quote_reward_cap_native: int
    service_fee_factor: Fraction
reward_token_address
Address
Address of the COW token used for reward payments. Uniform across all networks:0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aBOn networks where COW is not natively deployed (Avalanche, Polygon, BNB, Linea, Plasma, Ink), a dummy address 0x0000000000000000000000000000000000000006 is used for the on-chain token field in PaymentConfig, while actual COW transfers still go through the mainnet Safe.
quote_reward_cow
int
Fixed COW reward paid per valid quote, expressed in token atoms (18 decimals). Uniform across all networks:6 × 10¹⁸ atoms = 6 COW
quote_reward_cap_native
int
Upper bound on the per-quote reward denominated in the network’s native token atoms. The actual reward is the minimum of this cap and the COW-equivalent value. Varies by network — see the full table in Network configuration.
service_fee_factor
Fraction
Fraction of solver rewards retained as a service fee before distribution.Fraction(15, 100) = 15%

RewardConfig.from_network() factory

@staticmethod
def from_network(network: Network) -> RewardConfig:
    service_fee_factor = Fraction(15, 100)
    reward_token_address = Address("0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB")
    match network:
        case Network.MAINNET:
            quote_reward_cow = 6 * 10**18
            quote_reward_cap_native = 7 * 10**14
        case Network.GNOSIS:
            quote_reward_cow = 6 * 10**18
            quote_reward_cap_native = 15 * 10**16
        # ... (all other networks follow the same pattern)
    return RewardConfig(
        reward_token_address=reward_token_address,
        quote_reward_cow=quote_reward_cow,
        quote_reward_cap_native=quote_reward_cap_native,
        service_fee_factor=service_fee_factor,
    )

Quote reward cap values by network

Networkquote_reward_cap_native (atoms)Human-readable
mainnet7 × 10¹⁴0.0007 ETH
gnosis15 × 10¹⁶0.15 xDAI
arbitrum24 × 10¹³0.00024 ETH
base24 × 10¹³0.00024 ETH
avalanche6 × 10¹⁵0.006 AVAX
polygon6 × 10¹⁷0.6 POL
bnb1 × 10¹⁵0.001 BNB
linea3 × 10¹³0.00003 ETH
plasma6 × 10¹⁷0.6 XPL
ink3 × 10¹³0.00003 ETH

ProtocolFeeConfig

@dataclass(frozen=True)
class ProtocolFeeConfig:
    """Configuration for protocol and partner fees.

    Attributes:
    protocol_fee_safe -- address to forward protocol fees to
    """

    protocol_fee_safe: Address
protocol_fee_safe
Address
Address of the Safe that receives protocol and partner fees. The same address is used on all supported networks:0x22af3D38E50ddedeb7C47f36faB321eC3Bb72A76

BufferAccountingConfig

Buffer accounting determines which bonding pools receive buffer funds that are swept during settlement accounting.
@dataclass(frozen=True)
class BufferAccountingConfig:
    """Configuration for buffer accounting."""

    send_buffers_to_rewards_address_pools: list[Address]
send_buffers_to_rewards_address_pools
list[Address]
List of bonding pool addresses that receive buffer surpluses. Not network-specific — the same list applies on every chain.
AddressName
0x5d4020b9261f01b6f8a45db929704b0ad6f5e9e6CoW DAO bonding pool
0x0deb0ae9c4399c51289adb1f3ed83557a56df657Rizzolver bonding pool
0x7719c9c0d35d460b00487a1744394e9525e8a42cFractal bonding pool

PaymentConfig

PaymentConfig consolidates all data needed to propose and sign Safe transactions.
@dataclass(frozen=True)
class PaymentConfig:
    network: EthereumNetwork
    cow_token_address: Address
    payment_safe_address_cow: ChecksumAddress
    payment_safe_address_native: ChecksumAddress
    signing_key: str | None
    nonce_modifier: int
    safe_queue_url_cow: str
    safe_queue_url_native: str
    verification_docs_url: str
    wrapped_native_token_address: ChecksumAddress
    wrapped_eth_address: Address
    min_native_token_transfer: int
    min_cow_transfer: int
network
EthereumNetwork
safe-eth-py EthereumNetwork enum variant for the target chain. Used when instantiating the Safe client.
cow_token_address
Address
Address of the COW token contract on the target network. Set to 0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB on mainnet, Gnosis, Arbitrum, and Base. A dummy address (0x0000000000000000000000000000000000000006) is used on networks where COW is not deployed.
payment_safe_address_cow
ChecksumAddress
EIP-55 checksum address of the mainnet Safe holding COW tokens. Read from the PAYOUTS_SAFE_ADDRESS_MAINNET environment variable.
payment_safe_address_native
ChecksumAddress
EIP-55 checksum address of the Safe on the target network holding native tokens. Read from the PAYOUTS_SAFE_ADDRESS environment variable.
signing_key
str | None
Private key used to sign Safe transactions. None when PROPOSER_PK is unset or empty, which triggers dry-run mode.
nonce_modifier
int
Integer offset added to the current mainnet Safe nonce to allow multiple chains to queue transactions simultaneously without collisions. See Nonce modifier system.
safe_queue_url_cow
str
URL of the Safe transaction queue for the COW payment safe (always on mainnet). Format: https://app.safe.global/transactions/queue?safe=eth:<address>.
safe_queue_url_native
str
URL of the Safe transaction queue for the native payment safe on the target network. Format: https://app.safe.global/transactions/queue?safe=<short_name>:<address>.
wrapped_native_token_address
ChecksumAddress
Checksum address of the wrapped native token (e.g. WETH, WXDAI, WAVAX).
wrapped_eth_address
Address
Address of wrapped ETH on the target network. Equals wrapped_native_token_address on ETH-based chains; differs on Avalanche, Polygon, BNB, Gnosis, and Plasma.
min_native_token_transfer
int
Minimum native token payout in wei. Transfers below this threshold are dropped. See the full table in Network configuration.
min_cow_transfer
int
Minimum COW token payout in atoms. Transfers below this threshold are dropped.
verification_docs_url
str
URL of the Notion page documenting how to verify solver payouts. Included in Slack notifications: https://www.notion.so/cownation/Solver-Payouts-3dfee64eb3d449ed8157a652cc817a8c