diff --git a/mev_inspect/models/curve_traces.py b/mev_inspect/models/curve_traces.py new file mode 100644 index 0000000..4c68782 --- /dev/null +++ b/mev_inspect/models/curve_traces.py @@ -0,0 +1,112 @@ +from mev_inspect.schemas.classified_traces import ( + ClassifierSpec, + Protocol, +) + +""" +Deployment addresses found here +https://curve.readthedocs.io/ref-addresses.html + +organized into 3 groups +1. Base Pools: 2 or more tokens implementing stable swap + - StableSwap + - Deposit + - CurveContract + - CurveTokenV1/V2 +2. Meta Pools: 1 token trading with an LP from above + - StableSwap + - Deposit + - CurveTokenV1/V2 +3. Liquidity Gauges: stake LP get curve governance token? + - LiquidityGauge + - LiquidityGaugeV1/V2 + - LiquidityGaugeReward +4. DAO stuff +5..? Other stuff, haven't decided if important +""" +CURVE_BASE_POOLS = [ + ClassifierSpec( + abi_name="CurveTokenV1", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B", # BUSD + "0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8", # PAX + "0x49849C98ae39Fff122806C06791Fa73784FB3675", # renBTC + "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", # sBTC + "0xC25a3A3b969415c80451098fa907EC722572917F", # sUSD + "0x9fC689CCaDa600B6DF723D9E47D84d76664a1F23", # USDT + ], + ), + ClassifierSpec( + abi_name="CurveTokenV2", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", # 3Pool + "0xb19059ebb43466C323583928285a49f558E572Fd", # hBTC + ], + ), + ClassifierSpec( + abi_name="CurveTokenV3", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0xFd2a8fA60Abd58Efe3EeE34dd494cD491dC14900", # AAVE + "0xaA17A236F2bAdc98DDc0Cf999AbB47D47Fc0A6Cf", # ankrETH + "0x194eBd173F6cDacE046C53eACcE9B953F28411d1", # EURS + "0x5282a4eF67D9C33135340fB3289cc1711c13638C", # IronBank + "0xcee60cfa923170e4f8204ae08b4fa6a3f5656f3a", # Link + "0x53a901d48795C58f485cBB38df08FA96a24669D5", # rETH + "0x02d341CcB60fAaf662bC0554d13778015d1b285C", # sAAVE + "0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c", # sETH + "0x06325440D014e39736583c165C2963BA99fAf14E", # stETH + "0x571FF5b7b346F706aa48d696a9a4a288e9Bb4091", # Yv2 + ], + ), + ClassifierSpec( + abi_name="CurveTokenV4", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0xcA3d75aC011BF5aD07a98d02f18225F9bD9A6BDF", # TriCrypto + ], + ), + ClassifierSpec( + abi_name="StableSwap", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7", # 3Pool + "0xDeBF20617708857ebe4F679508E7b7863a8A8EeE", # AAVE + "0xA96A65c051bF88B4095Ee1f2451C2A9d43F53Ae2", # ankrETH + "0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27", # BUSD + "0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56", # Compound + "0x0Ce6a5fF5217e38315f87032CF90686C96627CAA", # EURS + "0x4CA9b3063Ec5866A4B82E437059D2C43d1be596F", # hBTC + "0x2dded6Da1BF5DBdF597C45fcFaa3194e53EcfeAF", # IronBank + "0xf178c0b5bb7e7abf4e12a4838c7b7c5ba2c623c0", # Link + "0x06364f10B501e868329afBc005b3492902d6C763", # PAX + "0x93054188d876f558f4a66B2EF1d97d16eDf0895B", # renBTC + "0xF9440930043eb3997fc70e1339dBb11F341de7A8", # rETH + "0xEB16Ae0052ed37f479f7fe63849198Df1765a733", # sAAVE + "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714", # sBTC + "0xc5424B857f758E906013F3555Dad202e4bdB4567", # sETH + "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022", # stETH + "0xA5407eAE9Ba41422680e2e00537571bcC53efBfD", # sUSD + "0x52EA46506B9CC5Ef470C5bf89f17Dc28bB35D85C", # USDT + "0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51", # Y + "0x8925D9d9B4569D737a48499DeF3f67BaA5a144b9", # Yv2 + ], + ), + ClassifierSpec( + abi_name="Deposit", + protocol=Protocol.curve, + valid_contract_addresses=[ + "0xb6c057591E073249F2D9D88Ba59a46CFC9B59EdB", # BUSD + "0xeB21209ae4C2c9FF2a86ACA31E123764A3B6Bc06", # Compound + "0xA50cCc70b6a011CffDdf45057E39679379187287", # PAX + "0xFCBa3E75865d2d561BE8D220616520c171F12851", # sUSD + "0x331aF2E331bd619DefAa5DAc6c038f53FCF9F785", # TriCrypto + "0xac795D2c97e60DF6a99ff1c814727302fD747a80", # USDT + "0xbBC81d23Ea2c3ec7e56D39296F0cbB648873a5d3", # Y + ], + ), +] + +CLASSIFIER_SPECS = [*CURVE_BASE_POOLS]