{"adoption": {"forks": 815, "observed_at": "2026-08-28T04:06:03.534949+00:00", "stars": 1996}, "canonical_url": "https://ross.abutalabs.com/products/amm-arbitrageur", "card": {"archived": true, "artifact_type": "application", "description": "An arbitrage bot between Uniswap AMMs", "domain": ["blockchain", "fintech"], "enriched": true, "function": ["trading", "blockchain", "sdk"], "health_score": 10, "homepage": null, "language": "Solidity", "license": "WTFPL", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["paco0x/amm-arbitrageur"], "name": "paco0x/amm-arbitrageur", "platform": [], "pushed_at": "2022-12-07T13:00:31+00:00", "repo": "paco0x/amm-arbitrageur", "stars": 1996, "tags": ["arbitrage-bot", "uniswap-v2", "flashswap", "defi", "smart-contract", "poc", "cryptocurrency", "ethereum", "bsc", "solidity", "evm"], "topics": ["bsc", "ethereum", "ethereum-contract", "arbitrage-bot", "amms", "arbitrage"], "urls": [], "use_cases": ["arbitrage between uniswap v2 forks when prices diverge", "atomic flash swap arbitrage bot on ethereum and bsc", "learn how uniswap v2 flashswap arbitrage works", "profit from price differences across amms in one transaction", "reference solidity contract for dex arbitrage"], "what_it_is": "A Solidity smart contract and demo bot that performs arbitrage between Uniswap V2-style AMMs (e.g., Uniswap, SushiSwap, PancakeSwap) using flash swaps within a single atomic transaction. It is explicitly a proof-of-concept and is no longer maintained.", "when_to_avoid": ["you need a production-ready, competitive arbitrage bot", "you expect maintenance, updates, or support", "you want to arbitrage AMMs that don't follow the Uniswap V2 interface"], "when_to_choose": ["you want to study or learn flashswap arbitrage mechanics on Uniswap V2-style AMMs", "you need a simple reference implementation to build your own production arb bot", "you're experimenting on EVM chains with Uniswap V2 fork AMMs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/amm-arbitrageur", "repo": "paco0x/amm-arbitrageur", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:03.534949+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:02:29.739304+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a5ef7474b0b261ff83a882b4cf038912b7112db26c17cd98880acd477ae23a4", "fetched_at": "2026-08-28T04:06:03.534949+00:00", "kind": "readme", "missing": false, "url": "https://github.com/paco0x/amm-arbitrageur"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1973, "days_push": 1365, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}