def test_fix_incorrect_calldata(accounts, registry, pool_compound, lp_compound, cDAI):
    registry.add_pool(
        pool_compound,
        2,
        lp_compound,
        ZERO_ADDRESS,
        right_pad("0xdEAdbEEf"),
        pack_values([8, 8]),
        pack_values([18, 6]),
        True,
        True,
        {'from': accounts[0]}
    )

    with brownie.reverts("dev: bad response"):
        registry.get_pool_rates(pool_compound)

    registry.remove_pool(pool_compound)
    registry.add_pool(
        pool_compound,
        2,
        lp_compound,
        ZERO_ADDRESS,
        right_pad(cDAI.exchangeRateStored.signature),
        pack_values([8, 8]),
        pack_values([18, 6]),
        True,
        True,
        {'from': accounts[0]}
    )

    assert registry.get_pool_rates(pool_compound) == [10**18, 10**18, 0, 0, 0, 0, 0, 0]
Example #2
0
def registry(
    Registry,
    alice,
    gauge_controller,
    swap,
    pool_token,
    n_coins,
    wrapped_coins,
    wrapped_decimals,
    underlying_decimals,
    pool_data,
):
    registry = Registry.deploy(gauge_controller, {'from': alice})

    rate_sig = "0x00"
    if next((i for i in wrapped_coins if hasattr(i, "get_rate")), False):
        contract = next(i for i in wrapped_coins if hasattr(i, "get_rate"))
        rate_sig = right_pad(contract.get_rate.signature)

    if hasattr(swap, "underlying_coins"):
        registry.add_pool(swap, n_coins, pool_token, ZERO_ADDRESS, rate_sig,
                          pack_values(wrapped_decimals),
                          pack_values(underlying_decimals),
                          hasattr(swap, "initial_A"), {'from': alice})
    else:
        registry.add_pool_without_underlying(swap, n_coins, pool_token,
                                             ZERO_ADDRESS, rate_sig,
                                             pack_values(underlying_decimals),
                                             pack_values([True] + [False] * 7),
                                             hasattr(swap, "initial_A"),
                                             {'from': alice})

    yield registry
Example #3
0
def registry_eth(Registry, accounts, pool_eth, lp_y, USDT, yDAI):
    registry = Registry.deploy({'from': accounts[0]})
    registry.add_pool(pool_eth, 3, lp_y, ZERO_ADDRESS,
                      right_pad(yDAI.getPricePerFullShare.signature), "0x00",
                      "0x00", True, {'from': accounts[0]})

    yield registry
def registry_renbtc(accounts, registry, calculator, pool_renbtc, lp_renbtc):
    registry.add_pool_without_underlying(pool_renbtc, 2, lp_renbtc, calculator,
                                         right_pad("0xbd6d894d"),
                                         pack_values([8, 8]),
                                         pack_values([True] + [False] * 7),
                                         {'from': accounts[0]})

    yield registry
Example #5
0
def registry_all(Registry, accounts, pool_compound, pool_y, pool_susd, cDAI,
                 yDAI, USDT, calculator, lp_compound, lp_y, lp_susd):
    registry = Registry.deploy({'from': accounts[0]})

    registry.add_pool(pool_compound, 2, lp_compound, calculator,
                      right_pad(cDAI.exchangeRateStored.signature),
                      pack_values([8, 8]), pack_values([18, 6]), True,
                      {'from': accounts[0]})
    registry.add_pool(pool_y, 4, lp_y, calculator,
                      right_pad(yDAI.getPricePerFullShare.signature),
                      pack_values([18, 6, 6, 18]), pack_values([18, 6, 6, 18]),
                      True, {'from': accounts[0]})
    registry.add_pool(pool_susd, 4, lp_susd, calculator, "0x00",
                      pack_values([18, 6, 6, 18]), pack_values([18, 6, 6, 18]),
                      True, {'from': accounts[0]})

    yield registry
Example #6
0
def registry_y(Registry, accounts, pool_y, calculator, lp_y, yDAI, USDT):
    registry = Registry.deploy({'from': accounts[0]})
    registry.add_pool(pool_y, 4, lp_y, calculator,
                      right_pad(yDAI.getPricePerFullShare.signature),
                      pack_values([18, 6, 6, 18]), pack_values([18, 6, 6, 18]),
                      True, {'from': accounts[0]})

    yield registry
Example #7
0
def registry_compound(accounts, Registry, pool_compound, calculator,
                      lp_compound, cDAI, USDT):
    registry = Registry.deploy({'from': accounts[0]})
    registry.add_pool(pool_compound, 2, lp_compound, calculator,
                      right_pad(cDAI.exchangeRateStored.signature),
                      pack_values([8, 8]), pack_values([18, 6]), True,
                      {'from': accounts[0]})

    yield registry
Example #8
0
def test_no_initial_A(accounts, yDAI, registry, pool_y, lp_y):
    registry.add_pool(pool_y, 4, lp_y, ZERO_ADDRESS,
                      right_pad(yDAI.getPricePerFullShare.signature),
                      pack_values([18, 6, 6, 18]), pack_values([18, 6, 6, 18]),
                      False, {'from': accounts[0]})
    pool_y._set_A(1000, 2000, 3000, 4000, 5000, {'from': accounts[0]})
    pool_info = registry.get_pool_info(pool_y)
    assert pool_info['A'] == 1000
    assert pool_info['initial_A'] == 0
    assert pool_info['initial_A_time'] == 0
    assert pool_info['future_A'] == 4000
    assert pool_info['future_A_time'] == 0
Example #9
0
def test_get_pool_info(accounts, registry, pool_y, pool_susd, lp_y, lp_susd,
                       yDAI):
    registry.add_pool(pool_y, 4, lp_y, ZERO_ADDRESS,
                      right_pad(yDAI.getPricePerFullShare.signature),
                      pack_values([1, 2, 3, 4]), pack_values([9, 8, 7, 6]),
                      {'from': accounts[0]})
    y_pool_info = registry.get_pool_info.call(pool_y)

    registry.add_pool(pool_susd, 4, lp_susd, ZERO_ADDRESS, "0x00",
                      pack_values([33, 44, 55, 66]),
                      pack_values([99, 88, 77, 22]), {'from': accounts[0]})
    susd_pool_info = registry.get_pool_info.call(pool_susd)

    assert y_pool_info != susd_pool_info
Example #10
0
def registry(
    Registry,
    alice,
    gauge_controller,
    swap,
    pool_token,
    n_coins,
    wrapped_coins,
    wrapped_decimals,
    pool_data,
):
    registry = Registry.deploy(gauge_controller, {'from': alice})

    rate_sig = "0x00"
    if next((i for i in wrapped_coins if hasattr(i, "get_rate")), False):
        contract = next(i for i in wrapped_coins if hasattr(i, "get_rate"))
        rate_sig = right_pad(contract.get_rate.signature)
    has_initial_A = hasattr(swap, "initial_A")
    is_v1 = pool_data['lp_contract'] == "CurveTokenV1"

    if hasattr(swap, "underlying_coins"):
        registry.add_pool(
            swap,
            n_coins,
            pool_token,
            ZERO_ADDRESS,
            rate_sig,
            pack_values(wrapped_decimals),
            pack_values([i['decimals'] for i in pool_data['coins']]),
            has_initial_A,
            is_v1,
            {'from': alice}
        )
    else:
        use_rates = [i['wrapped'] for i in pool_data['coins']] + [False] * (8 - n_coins)
        registry.add_pool_without_underlying(
            swap,
            n_coins,
            pool_token,
            ZERO_ADDRESS,
            rate_sig,
            pack_values([i['decimals'] for i in pool_data['coins']]),
            pack_values(use_rates),
            has_initial_A,
            is_v1,
            {'from': alice}
        )

    return registry
def test_without_underlying(accounts, registry, pool_compound, cDAI, cUSDC):
    registry.add_pool_without_underlying(
        pool_compound,
        2,
        ZERO_ADDRESS,
        ZERO_ADDRESS,
        right_pad(cDAI.exchangeRateStored.signature),
        pack_values([8, 8]),
        pack_values([True] + [False] * 7),
        {'from': accounts[0]}
    )

    assert registry.get_pool_rates.call(pool_compound) == [10**18, 10**18, 0, 0, 0, 0, 0, 0]

    cDAI._set_exchange_rate(31337, {'from': accounts[0]})
    cUSDC._set_exchange_rate(31337, {'from': accounts[0]})

    assert registry.get_pool_rates.call(pool_compound) == [31337, 10**18, 0, 0, 0, 0, 0, 0]
Example #12
0
TETHERS = ["0xdAC17F958D2ee523a2206206994597C13D831ec7"] + [ZERO_ADDRESS] * 3
MAX_COINS = 8
EMPTY_DECIMALS = pack_values([0] * MAX_COINS)
CONFS = 10

CONTRACT = None  # "0x06Ce8086965234400FDecAb190B115C2C0717047"


def insert_calculator(params, calculator):
    return params[:3] + (calculator.address,) + params[3:]


POOLS = [
    (  # Compound
        '0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56', 2, '0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2',
        right_pad(cERC20.signatures['exchangeRateStored']), EMPTY_DECIMALS, EMPTY_DECIMALS,
    ),
    (  # USDT
        '0x52EA46506B9CC5Ef470C5bf89f17Dc28bB35D85C', 3, '0x9fC689CCaDa600B6DF723D9E47D84d76664a1F23',
        right_pad(cERC20.signatures['exchangeRateStored']), EMPTY_DECIMALS, EMPTY_DECIMALS,
    ),
    (  # Y
        '0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51', 4, '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8',
        right_pad(yERC20.signatures['getPricePerFullShare']), EMPTY_DECIMALS, EMPTY_DECIMALS,
    ),
    (  # BUSD
        '0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27', 4, '0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B',
        right_pad(yERC20.signatures['getPricePerFullShare']), EMPTY_DECIMALS, EMPTY_DECIMALS,
    ),
    (  # SUSD
        '0xA5407eAE9Ba41422680e2e00537571bcC53efBfD', 4, '0xC25a3A3b969415c80451098fa907EC722572917F',