[Python] I am trying to make an Arbitrary trading bot on Arbitrum Chain on Python but having...

Discussão em 'Python' iniciado por Stack, Maio 25, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to make a python arbitrary trading bot on for Arbitrum chain.

    I am having issues with router addresses for Uniswap and Camelot and ABIs.

    I am trying to compare prices from Uniswap and Camelot for ETH and DAI.

    I am trying to first do some testing successfully on Sepolia testnet before proceeding forward.

    However I am unable to verify the contracts and getting errors.

    'mainnet': {
    'rpc_urls': [
    'https://arb1.arbitrum.io/rpc',
    'https://arbitrum-one.publicnode.com',
    ],
    'tokens': {
    'WETH': '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
    'DAI': '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1'
    },
    'routers': {
    'Uniswap': '0x4C60051384bd2d3C01bfc845Cf5F4b44bcbE9de5',
    'Camelot': '0xc873fEcbd354f5A56E00E710B90EF4201db2448d'
    }
    },
    'testnet': {
    'rpc_urls': [
    'https://sepolia-rollup.arbitrum.io/rpc',
    'https://arbitrum-sepolia.publicnode.com',
    'https://arbitrum-sepolia-rpc.publicnode.com',
    'https://arb-sepolia.g.alchemy.com/v2/MYKEY'
    ],
    'tokens': {
    'WETH': '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73',
    'DAI': '0x9bc8388dD439fa3365B1F78A81242aDBB4677759'
    },
    'routers': {
    'Uniswap': '0x101F443a4A2D26158236F5aD075C6591b03Fc3c5',
    'Camelot': '0x171B925C51565F5D2a7d8C494ba3188D304EFD93'
    }
    }


    With the help of some Claude I was able to add these ABI's because the one's I got from the explorer did not work either.

    self.erc20_abi = [
    {
    "constant": False,
    "inputs": [
    {"name": "_spender", "type": "address"},
    {"name": "_value", "type": "uint256"}
    ],
    "name": "approve",
    "outputs": [{"name": "success", "type": "bool"}],
    "type": "function"
    },
    {
    "constant": True,
    "inputs": [{"name": "_owner", "type": "address"}],
    "name": "balanceOf",
    "outputs": [{"name": "balance", "type": "uint256"}],
    "type": "function"
    }
    ]

    # Uniswap V2 Router ABI (simplified)
    self.uniswap_v2_abi = [
    {
    "inputs": [],
    "name": "WETH",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountIn", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"}
    ],
    "name": "getAmountsOut",
    "outputs": [{"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}],
    "stateMutability": "view",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountOutMin", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"},
    {"internalType": "address", "name": "to", "type": "address"},
    {"internalType": "uint256", "name": "deadline", "type": "uint256"}
    ],
    "name": "swapExactETHForTokens",
    "outputs": [{"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}],
    "stateMutability": "payable",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountIn", "type": "uint256"},
    {"internalType": "uint256", "name": "amountOutMin", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"},
    {"internalType": "address", "name": "to", "type": "address"},
    {"internalType": "uint256", "name": "deadline", "type": "uint256"}
    ],
    "name": "swapExactTokensForETH",
    "outputs": [{"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}],
    "stateMutability": "nonpayable",
    "type": "function"
    }
    ]

    # Camelot Router ABI
    self.camelot_abi = [
    {
    "inputs": [],
    "name": "WETH",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountIn", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"}
    ],
    "name": "getAmountsOut",
    "outputs": [{"internalType": "uint256[]", "name": "amounts", "type": "uint256[]"}],
    "stateMutability": "view",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountOutMin", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"},
    {"internalType": "address", "name": "to", "type": "address"},
    {"internalType": "address", "name": "referrer", "type": "address"},
    {"internalType": "uint256", "name": "deadline", "type": "uint256"}
    ],
    "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
    },
    {
    "inputs": [
    {"internalType": "uint256", "name": "amountIn", "type": "uint256"},
    {"internalType": "uint256", "name": "amountOutMin", "type": "uint256"},
    {"internalType": "address[]", "name": "path", "type": "address[]"},
    {"internalType": "address", "name": "to", "type": "address"},
    {"internalType": "address", "name": "referrer", "type": "address"},
    {"internalType": "uint256", "name": "deadline", "type": "uint256"}
    ],
    "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
    }
    ]


    Any suggestions or alternatives are most most welcome.

    Continue reading...

Compartilhe esta Página