From fddf5624258ae95b6fe71ab76cb71c821060a0b3 Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Tue, 4 Mar 2025 01:03:20 +0200 Subject: [PATCH] Add list of bonding pools where we redirect everything to rewards addresses (#513) This PR implements a request from the Rizzolver bonding pool and introduces a list of bonding pools where all relevant solvers receive their native token reimbursements in their rewards addresses (instead of their submission addresses) --- src/config.py | 16 ++++++++++------ src/fetch/solver_info.py | 10 ++++++++-- tests/unit/test_solver_info.py | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/config.py b/src/config.py index 12f4b1cb..11416fab 100644 --- a/src/config.py +++ b/src/config.py @@ -31,7 +31,6 @@ class RewardConfig: """Configuration for reward mechanism.""" reward_token_address: Address - cow_bonding_pool: Address batch_reward_cap_upper: int batch_reward_cap_lower: int quote_reward_cow: int @@ -41,7 +40,6 @@ class RewardConfig: @staticmethod def from_network(network: Network) -> RewardConfig: """Initialize reward config for a given network.""" - cow_bonding_pool = Address("0x5d4020b9261f01b6f8a45db929704b0ad6f5e9e6") service_fee_factor = Fraction(15, 100) match network: case Network.MAINNET: @@ -54,7 +52,6 @@ def from_network(network: Network) -> RewardConfig: quote_reward_cow=6 * 10**18, quote_reward_cap_native=6 * 10**14, service_fee_factor=service_fee_factor, - cow_bonding_pool=cow_bonding_pool, ) case Network.GNOSIS: return RewardConfig( @@ -66,7 +63,6 @@ def from_network(network: Network) -> RewardConfig: quote_reward_cow=6 * 10**18, quote_reward_cap_native=15 * 10**16, service_fee_factor=service_fee_factor, - cow_bonding_pool=cow_bonding_pool, ) case Network.ARBITRUM_ONE: return RewardConfig( @@ -78,7 +74,6 @@ def from_network(network: Network) -> RewardConfig: quote_reward_cow=6 * 10**18, quote_reward_cap_native=2 * 10**14, service_fee_factor=service_fee_factor, - cow_bonding_pool=cow_bonding_pool, ) case Network.BASE: return RewardConfig( @@ -90,7 +85,6 @@ def from_network(network: Network) -> RewardConfig: quote_reward_cow=6 * 10**18, quote_reward_cap_native=2 * 10**14, service_fee_factor=service_fee_factor, - cow_bonding_pool=cow_bonding_pool, ) case _: raise ValueError(f"No reward config set up for network {network}.") @@ -170,10 +164,19 @@ class BufferAccountingConfig: """Configuration for buffer accounting.""" include_slippage: bool + send_buffers_to_rewards_address_pools: list[Address] @staticmethod def from_network(network: Network) -> BufferAccountingConfig: """Initialize buffer accounting config for a given network.""" + send_buffers_to_rewards_address_pools = [ + Address( + "0x5d4020b9261f01b6f8a45db929704b0ad6f5e9e6" + ), # CoW DAO bonding pool + Address( + "0x0deb0ae9c4399c51289adb1f3ed83557a56df657" + ), # Rizzolver bonding pool + ] match network: case Network.MAINNET | Network.GNOSIS | Network.ARBITRUM_ONE | Network.BASE: include_slippage = True @@ -184,6 +187,7 @@ def from_network(network: Network) -> BufferAccountingConfig: return BufferAccountingConfig( include_slippage=include_slippage, + send_buffers_to_rewards_address_pools=send_buffers_to_rewards_address_pools, ) diff --git a/src/fetch/solver_info.py b/src/fetch/solver_info.py index 88dac322..2f5e080d 100644 --- a/src/fetch/solver_info.py +++ b/src/fetch/solver_info.py @@ -93,10 +93,16 @@ def compute_solver_info( service_fees[SERVICE_FEES_COLUMNS], how="outer", on="solver" ) + send_buffers_to_rewards_address_pools_addresses = [ + pool.address + for pool in config.buffer_accounting_config.send_buffers_to_rewards_address_pools + ] solver_info["buffer_accounting_target"] = np.where( - solver_info["pool_address"] != config.reward_config.cow_bonding_pool.address, - solver_info["solver"], + solver_info["pool_address"].isin( + send_buffers_to_rewards_address_pools_addresses + ), solver_info["reward_target"], + solver_info["solver"], ) solver_info = solver_info.drop("pool_address", axis=1) diff --git a/tests/unit/test_solver_info.py b/tests/unit/test_solver_info.py index d845ec90..f0d45570 100644 --- a/tests/unit/test_solver_info.py +++ b/tests/unit/test_solver_info.py @@ -54,7 +54,7 @@ def test_compute_solver_info_cow_dao_buffer_target(): { "solver": ["solver_1"], "reward_target": ["target_1"], - "pool_address": [str(config.reward_config.cow_bonding_pool)], + "pool_address": ["0x5d4020b9261f01b6f8a45db929704b0ad6f5e9e6"], "solver_name": ["solver_name_1"], } )