Exemple #1
0
def is_uniswap(address):
    try:
        pair = interface.UniswapPair(address)
        assert pair.factory() == UNISWAP_FACTORY
        print(f'{address} is a uniswap pool')
    except (AssertionError, ValueError):
        return False
    return True
Exemple #2
0
def TOKEN_PRICES():
    SUSHI_USDC_ETH = interface.UniswapPair(
        "0x905dfcd5649217c42684f23958568e533c711aa3")
    SUSHI_USDT_ETH = interface.UniswapPair(
        "0xcb0e5bfa72bbb4d16ab5aa0c60601c438f04b4ad")
    SUSHI_MIM_ETH = interface.UniswapPair(
        "0xb6dd51d5425861c808fd60827ab6cfbffe604959")

    return {
        "Sushi-Arbitrum": (SUSHISWAP_ROUTER, [
            ("ETH", ETH),
            ("BTC", BTC),
            ("MIM", MIM),
            ("USDC_ETH", SUSHI_USDC_ETH),
            ("USDT_ETH", SUSHI_USDT_ETH),
            ("MIM_ETH", SUSHI_MIM_ETH),
        ]),
    }
Exemple #3
0
def TOKEN_PRICES():
    HUSD_USDT = interface.UniswapPair(
        "0xdff86b408284dff30a7cad7688fedb465734501c")

    return {
        "MDex": (MDEX_ROUTER, [
            ("HUSD_USDT", HUSD_USDT),
        ])
    }
Exemple #4
0
def uniswap_lp_price(address):
    """ Get Uniswap LP token price. """
    pair = interface.UniswapPair(address)
    router = FACTORY_TO_ROUTER[pair.factory()]
    tokens = [interface.ERC20(token) for token in [pair.token0(), pair.token1()]]
    scales = [10 ** token.decimals() for token in tokens]
    prices = [price_router(token, router=router) for token in tokens]
    supply = pair.totalSupply() / 1e18
    return sum(reserve / scale * price for reserve, scale, price in zip(pair.getReserves(), scales, prices)) / supply
Exemple #5
0
def price_direct(token_in, token_out):
    """
    Calculate a price based on Uniswap Pair reserves.
    Only supports direct pairs.
    """
    pair = interface.UniswapPair(factory.getPair(token_in, token_out))
    reserves = dict(zip([pair.token0(), pair.token1()], pair.getReserves()))
    reserves_in = reserves[token_in] / 10 ** interface.ERC20(token_in).decimals()
    reserves_out = reserves[token_out] / 10 ** interface.ERC20(token_out).decimals()
    return reserves_out / reserves_in
Exemple #6
0
def fetch_farm_info(stacking_contract, router_address):

    reward_token = interface.IERC20(stacking_contract.rewardsToken())

    reward_token_price = priceOf(reward_token, router_address)

    reward_per_day = stacking_contract.rewardRate(
    ) * ONE_DAY / 10**reward_token.decimals()

    stake_token = interface.UniswapPair(stacking_contract.stakingToken())

    stake_token_price = priceOfUniPair(stake_token, router_address)

    tvl = stake_token_price * stake_token.balanceOf(
        stacking_contract) / 10**stake_token.decimals()

    apr = reward_per_day * 365 * reward_token_price / tvl

    return (tvl, apr)
Exemple #7
0
def homoraV2PositionSize(pos_id: int, bank_address: str,
                         router_address: str) -> float:
    bank = interface.HomoraBank(bank_address)

    (_owner, coll_token, coll_id, coll_size) = bank.getPositionInfo(pos_id)
    coll = interface.WMasterChef(coll_token)

    underlying_lp_token = interface.UniswapPair(
        coll.getUnderlyingToken(coll_id))
    position_size = priceOfUniPair(
        underlying_lp_token,
        router_address) * coll_size / 10**underlying_lp_token.decimals()

    debts = bank.getPositionDebts(pos_id)
    total_debt = 0

    for (debt_token, debt_size) in zip(*debts):
        debt_token = interface.ERC20(debt_token)
        total_debt += priceOf(
            debt_token,
            router_address) * debt_size / 10**debt_token.decimals()

    return position_size - total_debt
Exemple #8
0
def getPair(factory, token0, token1):
  return interface.UniswapPair(factory.getPair(token0, token1))
Exemple #9
0
def subgraph_for(pair_address):
  pair = interface.UniswapPair(pair_address)
  factory = pair.factory()

  return SUBGRAPHS_FROM_FACTORY.get(str(factory).lower(), None)
Exemple #10
0
ETH = interface.IERC20("0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2")
BTC = interface.IERC20("0x2260fac5e5542a773aa44fbcfedf7c193bc2c599")
UNI = interface.IERC20("0x1f9840a85d5af5bf1d1762f925bdaddc4201f984")
SUSHI = interface.IERC20("0x6b3595068778dd592e39a122f4f5a5cf09c90fe2")
ONE_INCH = interface.IERC20("0x111111111117dc0aa78b770fa6a738034120c302")
YFI = interface.IERC20("0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e")
DAI = interface.IERC20("0x6b175474e89094c44da98b954eedeac495271d0f")
USDC = interface.IERC20("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")
USDT = interface.IERC20("0xdac17f958d2ee523a2206206994597c13d831ec7")
BUSD = interface.IERC20("0x4fabb145d64652a948d72533023f6e7a623c7c53")
UWL = interface.IERC20("0xdbdd6f355a37b94e6c7d32fef548e98a280b8df5")
COMP = interface.IERC20("0xc00e94cb662c3520282e6f5717214004a7f26888")
LRC = interface.IERC20("0xbbbbca6a901c926f240b89eacb641d8aec7aeafd")
AAVE = interface.IERC20("0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9")

UNI_USDT_ETH = interface.UniswapPair(
    "0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852")
UNI_DAI_ETH = interface.UniswapPair(
    "0xa478c2975ab1ea89e8196811f51a7b7ade33eb11")
UNI_ALPHA_ETH = interface.UniswapPair(
    "0x411a9b902f364817a0f9c4261ce28b5566a42875")

SUSHI_ALPHA_ibETHv2 = interface.UniswapPair(
    "0xf79a07cd3488bbafb86df1bad09a6168d935c017")
SUSHI_ALCX = interface.IERC20("0xdbdb4d16eda451d0503b854cf79d55697f90c8df")

TOKEN_PRICES = {
    "Uniswap": (UNISWAP_ROUTER, [
        ("ETH", ETH),
        ("BTC", BTC),
        ("UNI", UNI),
        ("SUSHI", SUSHI),
Exemple #11
0
from brownie import interface

VIKING_MASTER_CHEF = interface.VikingMasterChef(
    "0xEf6e807fD2c0Ef5883A03Ed1b962333E8C9b725f")
OATSWAP_MASTER_CHEF = interface.OatMasterChef(
    "0x96aA7C001576a7C581Ef01655f34B674d4D17de1")
ICECREAM_MASTER_CHEF = interface.IceCreamMasterChef(
    "0xC26316b19117495E89c187339Ddb6E86f1e39f0c")
GOOSE_MASTER_CHEF = interface.GooseMasterChef(
    "0xe70E9185F5ea7Ba3C5d63705784D8563017f2E57")
SLIME_MASTER_CHEF = interface.SlimeMasterChef(
    "0x4B0073A79f2b46Ff5a62fA1458AAc86Ed918C80C")

PANCAKE_USDT_BUSD = interface.UniswapPair(
    "0xc15fa3e22c912a276550f3e5fe3b0deb87b55acd")
PANCAKE_DAI_BUSD = interface.UniswapPair(
    "0x3ab77e40340ab084c3e23be8e5a6f7afed9d41dc")
PANCAKE_USDC_BUSD = interface.UniswapPair(
    "0x680dd100e4b394bda26a59dd5c119a391e747d18")
PANCAKE_VAI_BUSD = interface.UniswapPair(
    "0xff17ff314925dff772b71abdff2782bc913b3575")
PANCAKE_UST_BUSD = interface.UniswapPair(
    "0xd1f12370b2ba1c79838337648f820a87edf5e1e6")
PANCAKE_BNB_BUSD = interface.UniswapPair(
    "0x1b96b92314c44b159149f7e0303511fb2fc4774f")
PANCAKE_BNB_BTC = interface.UniswapPair(
    "0x7561eee90e24f3b348e1087a005f78b4c8453524")
PANCAKE_BNB_ETH = interface.UniswapPair(
    "0x70d8929d04b60af4fb9b58713ebcf18765ade422")

PANCAKE_OAT_BUSD = interface.UniswapPair(
Exemple #12
0
def is_uniswap_pool(address):
    try:
        return interface.UniswapPair(address).factory() in FACTORY_TO_ROUTER
    except (ValueError, OverflowError):
        pass
    return False
Exemple #13
0
QUICKSWAP_ROUTER = "0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff"

USDC_WETH_STAKING = interface.StakingRewards("0x9732E1cC876d8D0B61389385fC1FC756920404fd")
DAI_WETH_STAKING = interface.StakingRewards("0xDFc1b89b6184DfCC7371E3dd898377ECBFEf7058")
USDC_maUSDC_STAKING = interface.StakingRewards("0x68910d18332fFDc1D11caEA4fE93C94Ccd540732")
ETH_wBTC_STAKING = interface.StakingRewards("0x74aF83811468d7a51452128727AB14507B7DC57E")
maUSDC_maTUSD_STAKING = interface.StakingRewards("0x5AE1e3Af79270e600D0e86609bB56B6c6CE23Ee8")
maUSDC_maUSDT_STAKING = interface.StakingRewards("0x66aCCDc838F563D36D0695539c5A01E651eAAEC9")
maUSDC_maDAI_STAKING = interface.StakingRewards("0x0A8E11C2C9B89285e810A206D391CE480dbA7562")

MATIC_ETH = interface.IERC20("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619")
MATIC_BTC = interface.IERC20("0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6")
MATIC_QUICK = interface.IERC20("0x831753dd7087cac61ab5644b308642cc1c33dc13")
MATIC_MATIC = interface.IERC20("0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270")

QUICK_ETH_USDC = interface.UniswapPair("0x853ee4b2a13f8a742d64c8f088be7ba2131f670d")
QUICK_ETH_DAI = interface.UniswapPair("0x4a35582a710e1f4b2030a3f826da20bfb6703c09")

TOKEN_PRICES = {
  "Quickswap": (
    QUICKSWAP_ROUTER,
    [
      ("ETH", MATIC_ETH),
      ("BTC", MATIC_BTC),
      ("QUICK", MATIC_QUICK),
      ("MATIC", MATIC_MATIC),
      ("ETH_USDC", QUICK_ETH_USDC),
      ("ETH_DAI", QUICK_ETH_DAI),
    ]
  )
}
Exemple #14
0
from functools import lru_cache
from brownie import interface

PANCAKEV2_ETH_USDC = interface.UniswapPair(
    "0xEa26B78255Df2bBC31C1eBf60010D78670185bD0")
PANCAKEV2_ETH_BTCB = interface.UniswapPair(
    "0xD171B26E4484402de70e3Ea256bE5A2630d7e88D")
PANCAKEV2_BTCB_BUSD = interface.UniswapPair(
    "0xf45cd219aef8618a92baa7ad848364a158a24f33")

PANCAKESWAPV2_ROUTER = "0x10ED43C718714eb63d5aA57B78B54704E256024E"

BSC_DAI = interface.IERC20("0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3")
BSC_BUSD = interface.IERC20("0xe9e7cea3dedca5984780bafc599bd69add087d56")
BSC_USDT = interface.IERC20("0x55d398326f99059ff775485246999027b3197955")
BSC_USDC = interface.IERC20("0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d")
BSC_VAI = interface.IERC20("0x4bd17003473389a42daf6a0a729f6fdb328bbbd7")
BSC_ETH = interface.IERC20("0x2170ed0880ac9a755fd29b2688956bd959f933f8")
BSC_BTC = interface.IERC20("0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c")
BSC_BNB = interface.IERC20("0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c")


@lru_cache
def TOKEN_PRICES():
    return {
        "PancakeSwapV2": (PANCAKESWAPV2_ROUTER, [
            ("ETH", BSC_ETH),
            ("BTC", BSC_BTC),
            ("BNB", BSC_BNB),
            ("ETH_USDC", PANCAKEV2_ETH_USDC),
            ("ETH_BTCB", PANCAKEV2_ETH_BTCB),
Exemple #15
0
def TOKEN_PRICES():
    ONE_INCH = interface.IERC20("0x111111111117dc0aa78b770fa6a738034120c302")
    DAI = interface.IERC20("0x6b175474e89094c44da98b954eedeac495271d0f")
    BUSD = interface.IERC20("0x4fabb145d64652a948d72533023f6e7a623c7c53")
    UWL = interface.IERC20("0xdbdd6f355a37b94e6c7d32fef548e98a280b8df5")
    COMP = interface.IERC20("0xc00e94cb662c3520282e6f5717214004a7f26888")
    LRC = interface.IERC20("0xbbbbca6a901c926f240b89eacb641d8aec7aeafd")
    LQTY = interface.IERC20("0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d")
    LUSD = interface.IERC20("0x5f98805a4e8be255a32880fdec7f6728c6568ba0")
    DOG = interface.IERC20("0xbaac2b4491727d78d2b78815144570b9f2fe8899")

    UNI_FRAX_ETH = interface.UniswapPair(
        "0xFD0A40Bc83C5faE4203DEc7e5929B446b07d1C76")
    UNI_LUSD_ETH = interface.UniswapPair(
        "0xf20ef17b889b437c151eb5ba15a47bfc62bff469")
    UNI_USDT_ETH = interface.UniswapPair(
        "0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852")
    UNI_USDC_ETH = interface.UniswapPair(
        "0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc")

    SUSHI_ALCX_ETH = interface.UniswapPair(
        "0xc3f279090a47e80990fe3a9c30d24cb117ef91a8")
    SUSHI_bDPI_ETH = interface.UniswapPair(
        "0x8d782C5806607E9AAFB2AC38c1DA3838Edf8BD03")
    SUSHI_USDC_ETH = interface.UniswapPair(
        "0x397ff1542f962076d0bfe58ea045ffa2d347aca0")
    SUSHI_USDT_ETH = interface.UniswapPair(
        "0x06da0fd433c1a5d7a4faa01111c044910a184553")

    SUSHI_ALCX = interface.IERC20("0xdbdb4d16eda451d0503b854cf79d55697f90c8df")
    SUSHI_ANY = interface.IERC20("0xf99d58e463a2e07e5692127302c20a191861b4d6")

    CRV_TRICRYPTO = interface.CurveLPToken(
        "0xca3d75ac011bf5ad07a98d02f18225f9bd9a6bdf")
    CRV_TRICRYPTO2 = interface.CurveLPToken(
        "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff")
    CRV_MIM = interface.CurvePool("0x5a6a4d54456819380173272a5e8e9b9904bdf41b")

    return {
        "Uniswap": (UNISWAP_ROUTER, [
            ("ETH", ETH),
            ("BTC", BTC),
            ("UNI", UNI),
            ("SUSHI", SUSHI),
            ("1INCH", ONE_INCH),
            ("YFI", YFI),
            ("DAI", DAI),
            ("USDC", USDC),
            ("USDT", USDT),
            ("BUSD", BUSD),
            ("LUSD", LUSD),
            ("UWL", UWL),
            ("COMP", COMP),
            ("LRC", LRC),
            ("AAVE", AAVE),
            ("LQTY", LQTY),
            ("FRAX_ETH", UNI_FRAX_ETH),
            ("LUSD_ETH", UNI_LUSD_ETH),
            ("USDT_ETH", UNI_USDT_ETH),
            ("USDC_ETH", UNI_USDC_ETH),
            ("crvTricrypto", CRV_TRICRYPTO),
            ("crvTricrypto2", CRV_TRICRYPTO2),
            ("crvMIM", CRV_MIM),
        ]),
        "SushiSwap": (SUSHISWAP_ROUTER, [
            ("ALCX", SUSHI_ALCX),
            ("ANY", SUSHI_ANY),
            ("DOG", DOG),
            ("ALCX_ETH", SUSHI_ALCX_ETH),
            ("bDPI_ETH", SUSHI_bDPI_ETH),
            ("USDC_ETH", SUSHI_USDC_ETH),
            ("USDT_ETH", SUSHI_USDT_ETH),
        ]),
    }