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]
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
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
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
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
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
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
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
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]
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',