diff --git a/fastlane_bot/config/network.py b/fastlane_bot/config/network.py index 88e85b73c..dc18271c1 100644 --- a/fastlane_bot/config/network.py +++ b/fastlane_bot/config/network.py @@ -55,7 +55,7 @@ def get_fork_map(df: pd.DataFrame, fork_name: str) -> Dict: fork = row[1][2] contract_name = row[1][3] address = row[1][4] - if fork in fork_name and contract_name == S.ROUTER_ADDRESS: + if fork in fork_name and contract_name in [S.ROUTER_ADDRESS, S.CARBON_CONTROLLER]: fork_map[exchange_name] = address return fork_map @@ -480,9 +480,11 @@ class _ConfigNetworkBase(ConfigNetwork): WEB3_ALCHEMY_PROJECT_ID = os.environ.get("WEB3_ALCHEMY_BASE") network_df = get_multichain_addresses(network="coinbase_base") - FASTLANE_CONTRACT_ADDRESS = "0x8e6AF0013688e5ef92217f23895Ea822cD3051E8" + FASTLANE_CONTRACT_ADDRESS = "0x2f33499368C4239290B045e3A34DFFA2AeD2CA05" MULTICALL_CONTRACT_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11" + CARBON_CONTROLLER_ADDRESS = GRAPHENE_CONTROLLER_ADDRESS = "0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA" + CARBON_CONTROLLER_VOUCHER = GRAPHENE_CONTROLLER_VOUCHER = "0x907F03ae649581EBFF369a21C587cb8F154A0B84" NATIVE_GAS_TOKEN_KEY = "ETH-EEeE" WRAPPED_GAS_TOKEN_KEY = "WETH-0006" STABLECOIN_KEY = "USDC-2913" diff --git a/fastlane_bot/config/provider.py b/fastlane_bot/config/provider.py index 4fdf24eff..5372d038c 100644 --- a/fastlane_bot/config/provider.py +++ b/fastlane_bot/config/provider.py @@ -100,6 +100,7 @@ def __init__(self, network: ConfigNetwork, **kwargs): address=network.BANCOR_V3_NETWORK_INFO_ADDRESS, abi=BANCOR_V3_NETWORK_INFO_ABI, ) + if network.NETWORK in [N.NETWORK_BASE, N.NETWORK_ETHEREUM]: self.CARBON_CONTROLLER_CONTRACT = self.w3.eth.contract( address=network.CARBON_CONTROLLER_ADDRESS, abi=CARBON_CONTROLLER_ABI, @@ -108,15 +109,22 @@ def __init__(self, network: ConfigNetwork, **kwargs): address=self.w3.toChecksumAddress(network.FASTLANE_CONTRACT_ADDRESS), abi=FAST_LANE_CONTRACT_ABI, ) - reward_percent, max_profit = self.BANCOR_ARBITRAGE_CONTRACT.caller.rewards() - self.ARB_REWARD_PERCENTAGE = str(int(reward_percent) / 1000000) - self.ARB_MAX_PROFIT = str(int(max_profit) / (10 ** 18)) - self.EXPECTED_GAS_MODIFIER = "0.85" else: self.CARBON_CONTROLLER_CONTRACT = None self.BANCOR_ARBITRAGE_CONTRACT = None + + if self.BANCOR_ARBITRAGE_CONTRACT is not None: + try: + reward_percent, max_profit = self.BANCOR_ARBITRAGE_CONTRACT.caller.rewards() + self.ARB_REWARD_PERCENTAGE = str(int(reward_percent) / 1000000) + self.ARB_MAX_PROFIT = 1000000 # This is no longer used + except: + self.ARB_REWARD_PERCENTAGE = "0.5" + else: self.ARB_REWARD_PERCENTAGE = "0.5" + + self.EXPECTED_GAS_MODIFIER = "0.85" class _ConfigProviderTenderly(ConfigProvider): """ Fastlane bot config -- provider [Tenderly] diff --git a/fastlane_bot/config/selectors.py b/fastlane_bot/config/selectors.py index 0ad47cdcd..1d7d57f2f 100644 --- a/fastlane_bot/config/selectors.py +++ b/fastlane_bot/config/selectors.py @@ -40,6 +40,7 @@ FACTORY_ADDRESS = "FACTORY_ADDRESS" ROUTER_ADDRESS = "ROUTER_ADDRESS" CARBON_CONTROLLER_ADDRESS = "CARBON_CONTROLLER_ADDRESS" +CARBON_CONTROLLER = "CARBON_CONTROLLER" BALANCER_VAULT_ADDRESS = "BALANCER_VAULT_ADDRESS" UNISWAP_V2 = "uniswap_v2" UNISWAP_V3 = "uniswap_v3" diff --git a/fastlane_bot/data/multichain_addresses.csv b/fastlane_bot/data/multichain_addresses.csv index 84e59c483..b1e4eb9f2 100644 --- a/fastlane_bot/data/multichain_addresses.csv +++ b/fastlane_bot/data/multichain_addresses.csv @@ -1,4 +1,7 @@ exchange_name,chain,fork,contract_name,address,fee,start_block +carbon_v1,ethereum,carbon_v1,CARBON_CONTROLLER,0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1,NA,17087375 +carbon_v1,coinbase_base,carbon_v1,CARBON_CONTROLLER,0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA,NA,17087375 +graphene_v1,coinbase_base,carbon_v1,CARBON_CONTROLLER,0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA,NA,17087375 uniswap_v2,ethereum,uniswap_v2,FACTORY_ADDRESS,0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f,0.003,10000835 uniswap_v2,ethereum,uniswap_v2,ROUTER_ADDRESS,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0.003, uniswap_v3,ethereum,uniswap_v3,FACTORY_ADDRESS,0x1F98431c8aD98523631AE4a59f267346ea31F984,NA,12369621 diff --git a/fastlane_bot/helpers/routehandler.py b/fastlane_bot/helpers/routehandler.py index 07d5e802a..00eda3759 100644 --- a/fastlane_bot/helpers/routehandler.py +++ b/fastlane_bot/helpers/routehandler.py @@ -353,6 +353,8 @@ def get_custom_address( """ if pool.exchange_name == self.ConfigObj.BANCOR_V2_NAME: return pool.anchor + elif pool.exchange_name in self.ConfigObj.CARBON_V1_FORKS: + return self.ConfigObj.CARBON_CONTROLLER_MAPPING[pool.exchange_name] elif pool.exchange_name in self.ConfigObj.UNI_V2_FORKS: return self.ConfigObj.UNI_V2_ROUTER_MAPPING[pool.exchange_name] elif pool.exchange_name in self.ConfigObj.CARBON_V1_FORKS: diff --git a/main.py b/main.py index 7d88a76c9..f15a913a0 100644 --- a/main.py +++ b/main.py @@ -219,6 +219,7 @@ type=click.Choice( [ "ethereum", + "coinbase_base" ] ), )