Skip to content

Commit

Permalink
Add list for custom partner fees (#509)
Browse files Browse the repository at this point in the history
This PR allows to set different percents for the partner fee cut,
depending on the partner. Up till now, there was only one partner
address that could have a custom fee
  • Loading branch information
harisang authored Feb 10, 2025
1 parent bc95c8b commit 72f0abb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 19 deletions.
20 changes: 11 additions & 9 deletions src/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,13 @@ class ProtocolFeeConfig:
Attributes:
protocol_fee_safe -- address to forward protocol fees to
partner_fee_cut -- fraction of partner fees withheld from integration partners
partner_fee_reduced_cut -- reduced amount withheld from partner specified as reduced_cut_address
reduced_cut_address -- partner fee recipient who pays the reduced cut partner_fee_reduced_cut
default_partner_fee_cut -- default fraction of partner fees withheld from integration partners
custom_partner_fee_dict -- dictionary of partner fee recipients and corresponding fractions
"""

protocol_fee_safe: Address
partner_fee_cut: float
partner_fee_reduced_cut: float
reduced_cut_address: str
default_partner_fee_cut: float
custom_partner_fee_dict: dict[str, float]

@staticmethod
def from_network(network: Network) -> ProtocolFeeConfig:
Expand Down Expand Up @@ -138,9 +136,13 @@ def from_network(network: Network) -> ProtocolFeeConfig:
)
return ProtocolFeeConfig(
protocol_fee_safe=protocol_fee_safe,
partner_fee_cut=0.15,
partner_fee_reduced_cut=0.10,
reduced_cut_address="0x63695Eee2c3141BDE314C5a6f89B98E62808d716",
default_partner_fee_cut=0.5,
custom_partner_fee_dict={
"0xe37da2d07e769b7fcb808bdeaeffb84561ff4eca": 0.15,
"0x63695eee2c3141bde314c5a6f89b98e62808d716": 0.10,
"0x352a3666b27bb09aca7b4a71ed624429b7549551": 0.15,
"0x90a48d5cf7343b08da12e067680b4c6dbfe551be": 0.15,
},
)


Expand Down
9 changes: 4 additions & 5 deletions src/fetch/partner_fees.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from collections import defaultdict

import numpy as np
import pandas as pd
from pandas import DataFrame

Expand Down Expand Up @@ -124,10 +123,10 @@ def compute_partner_fees_per_partner(
columns=["partner", "partner_fee_eth"],
)

partner_fees_df["partner_fee_tax"] = np.where(
partner_fees_df["partner"] == config.reduced_cut_address,
config.partner_fee_reduced_cut,
config.partner_fee_cut,
partner_fees_df["partner_fee_tax"] = (
partner_fees_df["partner"]
.map(config.custom_partner_fee_dict)
.fillna(config.default_partner_fee_cut)
)

# change all types to object to use native python types
Expand Down
14 changes: 9 additions & 5 deletions tests/unit/test_partner_fees.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def test_compute_partner_fees_per_partner():
{
"partner": ["partner_1", "partner_2", "partner_3"],
"partner_fee_eth": [10**16, 10**17 + 10**18, 10**19],
"partner_fee_tax": [0.15, 0.15, 0.15],
"partner_fee_tax": [0.5, 0.5, 0.5],
}
).astype(object)

Expand Down Expand Up @@ -58,17 +58,21 @@ def test_compute_partner_fees_per_partner_reduced_cut():
config = ProtocolFeeConfig.from_network(Network.MAINNET)
partner_fee_lists = DataFrame(
{
"partner_list": [[config.reduced_cut_address]],
"partner_list": [["0x63695eee2c3141bde314c5a6f89b98e62808d716"]],
"partner_fee_eth": [[10**18]],
}
)

partner_fees_df = compute_partner_fees_per_partner(partner_fee_lists, config)
expected_protocol_fees_df = DataFrame(
{
"partner": [config.reduced_cut_address],
"partner": ["0x63695eee2c3141bde314c5a6f89b98e62808d716"],
"partner_fee_eth": [10**18],
"partner_fee_tax": [config.partner_fee_reduced_cut],
"partner_fee_tax": [
config.custom_partner_fee_dict[
"0x63695eee2c3141bde314c5a6f89b98e62808d716"
]
],
}
).astype(object)

Expand All @@ -92,7 +96,7 @@ def test_compute_partner_fees_per_partner_duplicates():
{
"partner": ["partner_1"],
"partner_fee_eth": [10**17 + 10**18],
"partner_fee_tax": [0.15],
"partner_fee_tax": [0.5],
}
).astype(object)

Expand Down

0 comments on commit 72f0abb

Please sign in to comment.