{"id":22412739,"url":"https://github.com/juliegibbs/ethereum-arbitrage-bot","last_synced_at":"2026-02-16T04:37:51.839Z","repository":{"id":237274469,"uuid":"775225474","full_name":"JulieGibbs/ethereum-arbitrage-bot","owner":"JulieGibbs","description":"Flashloan arbitrage on ethereum","archived":false,"fork":false,"pushed_at":"2024-03-21T01:38:01.000Z","size":1810,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-16T18:49:57.767Z","etag":null,"topics":["arbitrage","bot","ethereum","trading-bot","typescript","web3js"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JulieGibbs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-21T01:37:49.000Z","updated_at":"2025-04-15T18:04:00.000Z","dependencies_parsed_at":"2024-04-30T17:32:42.859Z","dependency_job_id":null,"html_url":"https://github.com/JulieGibbs/ethereum-arbitrage-bot","commit_stats":null,"previous_names":["juliegibbs/ethereum-arbitrage-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JulieGibbs/ethereum-arbitrage-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulieGibbs%2Fethereum-arbitrage-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulieGibbs%2Fethereum-arbitrage-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulieGibbs%2Fethereum-arbitrage-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulieGibbs%2Fethereum-arbitrage-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JulieGibbs","download_url":"https://codeload.github.com/JulieGibbs/ethereum-arbitrage-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulieGibbs%2Fethereum-arbitrage-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29500600,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T03:57:51.541Z","status":"ssl_error","status_checked_at":"2026-02-16T03:55:59.854Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arbitrage","bot","ethereum","trading-bot","typescript","web3js"],"created_at":"2024-12-05T14:10:07.908Z","updated_at":"2026-02-16T04:37:51.812Z","avatar_url":"https://github.com/JulieGibbs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flashloan Arbitrage Bot\nFlashloan Bot Arbitrage Finder\n\n## Usage\n\n1. Rename `.env.example` file to `.env` inside the bot directory\n \n2. Config `.env` file. \n\n    Here, you need four things. \n    * Insert your INFURA Project ID. You can create a infura Project ID [here](https://infura.io). \n    * Insert your MetaMask (Kovan Testnet) 32byte wallet private key.\n    * Insert your cotract address(mainnet or kovan)\n    * Insert UniswapV3 Factory address. \n\n3. Install node modules. Open terminal window and run:\n\n    ```\n    npm install\n    ```\n\n4. Run bot\n\n- Trade for origin \n    * trader bot\n        ```\n        yarn main-trader dai weth\n        ```\n    * finder bot\n        ```\n        yarn main-finder * weth\n        yarn main-finder weth usdt *\n        yarn main-finder weth * *\n        yarn main-finder * weth *\n        ```\n- Trade for 0x Exchage API\n    * trader bot bot\n        ```\n        yarn zero-trader dai weth\n        ```\n    * finder bot\n        ```\n        yarn zero-finder * weth\n        yarn zero-finder weth usdt *\n        yarn zero-finder weth * *\n        yarn zero-finder * weth *\n        ```\n- Trade for 1Inch Exchage API\n    * trader bot bot\n        ```\n        yarn one-trader dai weth\n        ```\n    * finder bot\n        ```\n        yarn one-finder * weth\n        yarn one-finder weth usdt *\n        yarn one-finder weth * *\n        yarn one-finder * weth *\n        ```\n- Trade for Dodo Exchage API\n    * trader bot bot\n        ```\n        yarn dodo-trader dai weth\n        ```\n    * finder bot\n        ```\n        yarn dodo-finder * weth\n        yarn dodo-finder weth usdt *\n        yarn dodo-finder weth * *\n        yarn dodo-finder * weth *\n        ```\n\n\n# Developer Instructions - Flashloan\n\n## Adding a new token \n1. Go to /config and open token.json\n2. Add the token symbol and its blockchain network token address accordingly \n\n\n## Adding a new DEX\n\n\n\n# Short List scan of top Volume tokens only\n\n- Doing a \"short scan\" of the \"short\" lists\n\n```\nts-node finder2pairshort\n```\n\n- Added 19th June, 22:20.\n\n\n\n# Add new DEX's\n\n1. (/config/dexs.json)\nAdd the DEX name, together with it's Proxy/Router/Quoter/Factory contract address(es) found in the DEX documentation to the /config/dexs.json file.\n\n2. (/abi/NEWDEXNAME.json)\nGet the ABI code from the individual DEXs GitHub repo or contract address on etherscan.io.\nAnd add it to a /abi/DEXNAME.json file. Depending on the DEX it will be the Router/Factory/Exchange/Quoter json files.\n\n3. (/lib/contracts.ts)\nCreate contract instance(constant) with address and ABI for specific DEX in lib/contracts.ts file.\nIf contract address is depended on token pair like Mooniswap, create function to get contract instance for specific token pair.\n\n\n4. (/lib/NEWDEXNAME)\nAdd the \"getCalldata.ts\" file under /lib/DEXNAME folder you create if needed.\nAdd functions(get calldatas for price and swap) in getCalldata.ts file.\n\n5. (/lib/contracts.ts):\nexport a new, shorter name as a constant of the DEX in /lib/contracts, by making the constant a combination of the Router/Quoter/Factory/AbiItem, and anything else that is required.\n\n6. (mainnet/origin/common.ts):\nadd the new short name of the router/quoter/dex info in the \"import { \" section.\n\nImport the \"getPriceOnDEXNAME\" in the same file as step 6 (around line 25)\n\nAs well as adding a new constant export of the DEXs name array to display on screen(around line 35).\n\nAlso make sure to add the new DEX with a 2-3 char name as a constant in the \"getAllQuotes\" section (around line 60).\n\nModify and add the relevant information/constants in the \"const result: Multicall\" section.\n\"getAllQuotes\" function returns array of quotes and contract instances(router).  \n\n7. (mainnet/origin/trader):\n\nimport \"getSwapOnDEXNAME\" function for the new dex in the \"header\".\n\nadd the dex to the \"const runBot\" section as an 'else if' statement by adding it below the rest as a new ID (in order).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliegibbs%2Fethereum-arbitrage-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliegibbs%2Fethereum-arbitrage-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliegibbs%2Fethereum-arbitrage-bot/lists"}