Skip to content
This repository was archived by the owner on Nov 17, 2025. It is now read-only.

Commit 0cced67

Browse files
authored
Merge pull request #199 from bancorprotocol/198-add-support-for-graphene-on-base
Add addresses & handling to route through Graphene on Base
2 parents 6cd9cb5 + 3916866 commit 0cced67

File tree

6 files changed

+23
-6
lines changed

6 files changed

+23
-6
lines changed

fastlane_bot/config/network.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def get_fork_map(df: pd.DataFrame, fork_name: str) -> Dict:
5555
fork = row[1][2]
5656
contract_name = row[1][3]
5757
address = row[1][4]
58-
if fork in fork_name and contract_name == S.ROUTER_ADDRESS:
58+
if fork in fork_name and contract_name in [S.ROUTER_ADDRESS, S.CARBON_CONTROLLER]:
5959
fork_map[exchange_name] = address
6060
return fork_map
6161

@@ -480,9 +480,11 @@ class _ConfigNetworkBase(ConfigNetwork):
480480
WEB3_ALCHEMY_PROJECT_ID = os.environ.get("WEB3_ALCHEMY_BASE")
481481

482482
network_df = get_multichain_addresses(network="coinbase_base")
483-
FASTLANE_CONTRACT_ADDRESS = "0x8e6AF0013688e5ef92217f23895Ea822cD3051E8"
483+
FASTLANE_CONTRACT_ADDRESS = "0x2f33499368C4239290B045e3A34DFFA2AeD2CA05"
484484
MULTICALL_CONTRACT_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11"
485485

486+
CARBON_CONTROLLER_ADDRESS = GRAPHENE_CONTROLLER_ADDRESS = "0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA"
487+
CARBON_CONTROLLER_VOUCHER = GRAPHENE_CONTROLLER_VOUCHER = "0x907F03ae649581EBFF369a21C587cb8F154A0B84"
486488
NATIVE_GAS_TOKEN_KEY = "ETH-EEeE"
487489
WRAPPED_GAS_TOKEN_KEY = "WETH-0006"
488490
STABLECOIN_KEY = "USDC-2913"

fastlane_bot/config/provider.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ def __init__(self, network: ConfigNetwork, **kwargs):
100100
address=network.BANCOR_V3_NETWORK_INFO_ADDRESS,
101101
abi=BANCOR_V3_NETWORK_INFO_ABI,
102102
)
103+
if network.NETWORK in [N.NETWORK_BASE, N.NETWORK_ETHEREUM]:
103104
self.CARBON_CONTROLLER_CONTRACT = self.w3.eth.contract(
104105
address=network.CARBON_CONTROLLER_ADDRESS,
105106
abi=CARBON_CONTROLLER_ABI,
@@ -108,15 +109,22 @@ def __init__(self, network: ConfigNetwork, **kwargs):
108109
address=self.w3.toChecksumAddress(network.FASTLANE_CONTRACT_ADDRESS),
109110
abi=FAST_LANE_CONTRACT_ABI,
110111
)
111-
reward_percent, max_profit = self.BANCOR_ARBITRAGE_CONTRACT.caller.rewards()
112112

113-
self.ARB_REWARD_PERCENTAGE = str(int(reward_percent) / 1000000)
114-
self.ARB_MAX_PROFIT = str(int(max_profit) / (10 ** 18))
115-
self.EXPECTED_GAS_MODIFIER = "0.85"
116113
else:
117114
self.CARBON_CONTROLLER_CONTRACT = None
118115
self.BANCOR_ARBITRAGE_CONTRACT = None
116+
117+
if self.BANCOR_ARBITRAGE_CONTRACT is not None:
118+
try:
119+
reward_percent, max_profit = self.BANCOR_ARBITRAGE_CONTRACT.caller.rewards()
120+
self.ARB_REWARD_PERCENTAGE = str(int(reward_percent) / 1000000)
121+
self.ARB_MAX_PROFIT = 1000000 # This is no longer used
122+
except:
123+
self.ARB_REWARD_PERCENTAGE = "0.5"
124+
else:
119125
self.ARB_REWARD_PERCENTAGE = "0.5"
126+
127+
self.EXPECTED_GAS_MODIFIER = "0.85"
120128
class _ConfigProviderTenderly(ConfigProvider):
121129
"""
122130
Fastlane bot config -- provider [Tenderly]

fastlane_bot/config/selectors.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
FACTORY_ADDRESS = "FACTORY_ADDRESS"
4141
ROUTER_ADDRESS = "ROUTER_ADDRESS"
4242
CARBON_CONTROLLER_ADDRESS = "CARBON_CONTROLLER_ADDRESS"
43+
CARBON_CONTROLLER = "CARBON_CONTROLLER"
4344
BALANCER_VAULT_ADDRESS = "BALANCER_VAULT_ADDRESS"
4445
UNISWAP_V2 = "uniswap_v2"
4546
UNISWAP_V3 = "uniswap_v3"

fastlane_bot/data/multichain_addresses.csv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
exchange_name,chain,fork,contract_name,address,fee,start_block
2+
carbon_v1,ethereum,carbon_v1,CARBON_CONTROLLER,0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1,NA,17087375
3+
carbon_v1,coinbase_base,carbon_v1,CARBON_CONTROLLER,0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA,NA,17087375
4+
graphene_v1,coinbase_base,carbon_v1,CARBON_CONTROLLER,0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA,NA,17087375
25
uniswap_v2,ethereum,uniswap_v2,FACTORY_ADDRESS,0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f,0.003,10000835
36
uniswap_v2,ethereum,uniswap_v2,ROUTER_ADDRESS,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0.003,
47
uniswap_v3,ethereum,uniswap_v3,FACTORY_ADDRESS,0x1F98431c8aD98523631AE4a59f267346ea31F984,NA,12369621

fastlane_bot/helpers/routehandler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,8 @@ def get_custom_address(
353353
"""
354354
if pool.exchange_name == self.ConfigObj.BANCOR_V2_NAME:
355355
return pool.anchor
356+
elif pool.exchange_name in self.ConfigObj.CARBON_V1_FORKS:
357+
return self.ConfigObj.CARBON_CONTROLLER_MAPPING[pool.exchange_name]
356358
elif pool.exchange_name in self.ConfigObj.UNI_V2_FORKS:
357359
return self.ConfigObj.UNI_V2_ROUTER_MAPPING[pool.exchange_name]
358360
elif pool.exchange_name in self.ConfigObj.CARBON_V1_FORKS:

main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@
219219
type=click.Choice(
220220
[
221221
"ethereum",
222+
"coinbase_base"
222223
]
223224
),
224225
)

0 commit comments

Comments
 (0)