Abstract Interface (V2)
Join(): joins X and Y amounts to pool
Swap(): swaps X for Y (and vice verse)
AddLiquidity(): double-sided deposit; adds liquidity using only X or Y amounts
RemoveLiquidity(): double-sided withdrawal; removes liquidity using only X or Y amounts
SwapDeposit(): single-sided deposit; deposit exact x or y by coming to pool with just one token from trading pair to make a deposit
WithdrawSwap(): single-sided withdrawal; withdraw exact x or y by leaving pool with desired token from trading pair
LPQuote(): Quote liquidity pool, via either: (a) token price; (b) LP token amount to token amount; or (c) token amount to LP token amount
To download notebook to this tutorial, see here
[9]:
from uniswappy import *
[10]:
user_nm = 'user'
eth_amount = 1000
tkn_amount = 100000
[11]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
expected_amount_out = WithdrawSwap().apply(lp, eth, user_nm, 1)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 999.0, TKN = 100000.0
Liquidity: 9994.991239989282
[12]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Join()
joins tkn0 and tkn1 amounts to pool
[13]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Swap()
tkn0 for tkn1
[14]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
out = Swap().apply(lp, tkn, user_nm, 1000)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 990.1284196560293, TKN = 101000.0
Liquidity: 10000.0
tkn1 for tkn0
[15]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
out = Swap().apply(lp, eth, user_nm, 10)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1010.0, TKN = 99012.84196560294
Liquidity: 10000.0
swap lp token for tkn1
[16]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = lp_tkn.get_liquidity()
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, lp_tkn_amount, tkn_amount)
lp2.summary()
out = Swap().apply(lp2, lp_tkn, user_nm, 100)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10000.0, TKN = 100000.0
Liquidity: 31622.776601683792
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10100.0, TKN = 99012.84196560294
Liquidity: 31622.776601683792
swap lp token for tkn0
[17]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = lp_tkn.get_liquidity()
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, lp_tkn_amount, tkn_amount)
lp2.summary()
out = Swap().apply(lp2, tkn2, user_nm, 100)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10000.0, TKN = 100000.0
Liquidity: 31622.776601683792
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 9990.039930189601, TKN = 100100.0
Liquidity: 31622.776601683792
AddLiquidity()
add tkn1 and determine tkn0
[18]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
AddLiquidity().apply(lp, eth, user_nm, 10)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1010.0, TKN = 101000.0
Liquidity: 10100.0
add tkn0 and determine tkn1
[19]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
AddLiquidity().apply(lp, tkn, user_nm, 1000)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1010.0, TKN = 101000.0
Liquidity: 10100.0
add LP based on tkn2
[20]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = lp_tkn.get_liquidity()
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, lp_tkn_amount, tkn_amount)
lp2.summary()
AddLiquidity().apply(lp2, tkn2, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10000.0, TKN = 100000.0
Liquidity: 31622.776601683792
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10001.0, TKN = 100010.0
Liquidity: 31625.93887934396
add LP based on lp_tkn
[21]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = lp_tkn.get_liquidity()
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, lp_tkn_amount, tkn_amount)
lp2.summary()
AddLiquidity().apply(lp2, lp_tkn, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10000.0, TKN = 100000.0
Liquidity: 31622.776601683792
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 10010.0, TKN = 100100.0
Liquidity: 31654.399378285478
RemoveLiquidity()
remove tkn1 and determine tkn0
[22]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
RemoveLiquidity().apply(lp, eth, user_nm, 999)
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
[22]:
{'ETH': 999.0, 'TKN': 99900.0}
remove tkn0 and determine tkn1
[23]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
RemoveLiquidity().apply(lp, tkn, user_nm, 100)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 999.0, TKN = 99900.0
Liquidity: 9990.0
remove LP based on tkn2
[24]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = 1000
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
RemoveLiquidity().apply(lp2, tkn2, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 990.0, TKN = 990.0
Liquidity: 990.0
remove LP based on lp_tkn
[25]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = 1000
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
RemoveLiquidity().apply(lp2, lp_tkn, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 990.0, TKN = 990.0
Liquidity: 990.0
SwapDeposit()
swap exact tkn1 for tkn0
deposit desired token -> perform 50% swap -> perform 50/50 deposit
[26]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
SwapDeposit().apply(lp, tkn, user_nm, 100)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100100.0
Liquidity: 10004.991241237401
swap exact tkn0 for tkn1
deposit desired token -> perform 50% swap -> perform 50/50 deposit
[27]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
amount_out = SwapDeposit().apply(lp, eth, user_nm, 1)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1001.0, TKN = 100000.0
Liquidity: 10004.991241237401
deposit LP with only tkn2
deposit desired token -> perform 50% swap -> perform 50/50 deposit
[28]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
SwapDeposit().apply(lp2, tkn2, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1010.0
Liquidity: 1004.980069557936
deposit LP with only lp_tkn
deposit desired token -> perform 50% swap -> perform 50/50 deposit
[29]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = 1000
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
SwapDeposit().apply(lp2, lp_tkn, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1010.0, TKN = 1000.0
Liquidity: 1004.980069557936
WithdrawSwap()
withdraw exact tkn1
withdraw LP based upon expected amount of eth
perform 50/50 withdraw -> swap remaining 50% -> return desired token
[30]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
expected_amount_out = WithdrawSwap().apply(lp, eth, user_nm, 1)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 999.0, TKN = 100000.0
Liquidity: 9994.991239989282
withdraw exact tkn0
withdraw LP based upon expected amount of tkn
[31]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
expected_amount_out = WithdrawSwap().apply(lp, tkn, user_nm, 100)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 99900.0
Liquidity: 9994.991239989282
withdraw LP based upon expected amount of tkn2
perform 50/50 withdraw -> swap remaining 50% -> return desired token
[32]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = 1000
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
WithdrawSwap().apply(lp2, tkn2, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 990.0
Liquidity: 994.9799447405356
withdraw LP based upon expected amount of tkn2
perform 50/50 withdraw -> swap remaining 50% -> return desired token
[33]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp_tkn = factory.deploy(exchg_data)
Join().apply(lp_tkn, user_nm, eth_amount, tkn_amount)
lp_tkn.summary()
tkn2 = ERC20("TKN", "0x112")
lp_tkn_amount = 1000
exchg_data = UniswapExchangeData(tkn0 = lp_tkn, tkn1 = tkn2, symbol="LP2", address="0x012")
lp2 = factory.deploy(exchg_data)
Join().apply(lp2, user_nm, eth_amount, lp_tkn_amount)
lp2.summary()
WithdrawSwap().apply(lp2, lp_tkn, user_nm, 10)
lp2.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 1000.0, TKN = 1000.0
Liquidity: 1000.0
Exchange ETHTKN-LP-TKN (LP2)
Reserves: ETHTKN-LP = 990.0, TKN = 1000.0
Liquidity: 994.9799447405356
LPQuote()
get LP quotes
[34]:
tkn = ERC20("TKN", "0x111")
eth = ERC20("ETH", "0x09")
exchg_data = UniswapExchangeData(tkn0 = eth, tkn1 = tkn, symbol="LP", address="0x011")
factory = UniswapFactory("ETH pool factory", "0x2")
lp = factory.deploy(exchg_data)
Join().apply(lp, user_nm, eth_amount, tkn_amount)
lp.summary()
Exchange ETH-TKN (LP)
Reserves: ETH = 1000.0, TKN = 100000.0
Liquidity: 10000.0
Retrieve LP prices
[35]:
p_eth = LPQuote().get_price(lp, eth)
p_tkn = LPQuote().get_price(lp, tkn)
print(f'The price of {eth.token_name} in {tkn.token_name} is {p_eth}')
print(f'The price of {tkn.token_name} in {eth.token_name} is {p_tkn}')
The price of ETH in TKN is 100.0
The price of TKN in ETH is 0.01
Retrieve token settlement amount given opposing token amount
[36]:
amt_eth = LPQuote(include_fee = True).get_amount(lp, eth, 1)
amt_tkn = LPQuote(include_fee = True).get_amount(lp, tkn, 1)
print(f'1 {eth.token_name} token is worth {amt_tkn} {tkn.token_name} after swap fees')
print(f'1 {tkn.token_name} token is worth {amt_eth} {eth.token_name} after swap fees')
1 ETH token is worth 0.009969900600091019 TKN after swap fees
1 TKN token is worth 99.60069810399033 ETH after swap fees
Retrieve rebased token settlement amount given amount of LP token
[37]:
amt_eth = LPQuote(False).get_amount_from_lp(lp, eth, 1)
amt_tkn = LPQuote().get_amount_from_lp(lp, eth, 1)
print(f'1 LP token is worth {amt_eth} {eth.token_name}')
print(f'1 LP token is worth {amt_tkn} {tkn.token_name}')
1 LP token is worth 0.19969005990701796 ETH
1 LP token is worth 19.969005990701795 TKN
Retrieve LP token settlement amount given amount of asset token
[38]:
amt_eth_lp = LPQuote(False).get_lp_from_amount(lp, eth, 1)
amt_tkn_lp = LPQuote(False).get_lp_from_amount(lp, tkn, 1)
print(f'1 {eth.token_name} token is worth {amt_eth_lp} LP tokens')
print(f'1 {tkn.token_name} token is worth {amt_tkn_lp} LP tokens')
1 ETH token is worth 5.00876001071831 LP tokens
1 TKN token is worth 0.05007523748156423 LP tokens