[암호화폐] 아무도 알려주지 않는 LP의 의미(2) by tradingideas

View this thread on steempeak.com
· @tradingideas · (edited)
$149.88
[암호화폐] 아무도 알려주지 않는 LP의 의미(2)
1편에 이어  LP에 있는 각 토큰의 수량 및 현재 가치를 알아볼 수 있는 방법에 대하여 기술합니다.

우선 mNflx의 가격을 구합니다.

앞 편에서 설명한바와 같이 usd-mNflx LP 주소와 ust, mNflx smart contract 주소만 있으면 mNflx 의 현재가를 구할 수 있습니다. 앞으로 많이 사용할 함수이므로, 일반화하여 잘 만들어보았습니다. bnb가 pair로 들어가는 경우에는 bnb 가격을 인자로 넣어주면 됩니다.


~~~
def get_bsc_token_price(lp_addr, tok1_addr, tok2_addr, bnb_price=0) :

    # token1
    t1 = w3.eth.contract(tok1_addr, abi=contract_common_abi)
    name1 = t1.functions.name().call()
    sym1 = t1.functions.symbol().call()
    bal1 = t1.functions.balanceOf(lp_addr).call() / (10 ** 18 ) 

    # token2
    t2 = w3.eth.contract(tok2_addr, abi=contract_common_abi)
    name2 = t2.functions.name().call()
    sym2 = t2.functions.symbol().call()
    bal2 = t2.functions.balanceOf(lp_addr).call() / (10 ** 18 ) 

    price = bal1 / bal2

    # bnb 기반 lp이면 bnb 가격을 곱해준다. us$ 기준으로 돌려줌
    if bnb_price :
        price *= bnb_price

    print("[%6s - %6s] %10.4f %10.4f, price $%10.4f"%(sym1, sym2, bal1, bal2, price))
    return price
~~~
##
pancakeswap에서 확인한 값과 비슷하게 나오는군요.
##
![](https://cdn.steemitimages.com/DQmcaF8TLsC5ocPYMubfAD5bGyevtgoWJSuKTBsz4sm1BKV/image.png)

##

다음으로는 LP의 정보를 출력하는 방법입니다.
ust-mNflx 주소에서 user_info 값을 구하면 [0] 값이 본인이 공급한 LP의 양이 나옵니다.  해당 LP의 전체 유동성 크기는    totalSupply() 함수로 구할 수 있습니다. 이 두 값을 참고하여 본인의 지분율을 계산합니다.

그 후 앞 글에서 설명한 방식으로 pair  각각의 토큰 주로에서 해당 LP가 가지고 있는 각 토큰의 수량을 구합니다. 이 값에 앞에서 구한 본인의 지분율을 곱하면 ust-mNflx에 공급한 본인의 각 토큰의 현재 수량이 나옵니다.

이렇게 각 토큰의 수량을 구한 후 각 토큰의 현재가를 곱하면 본인이 공급한 LP의 현재 가치를 계산할 수 있습니다.

개념이 약간 복잡합니다만, 찬찬히 읽어보면 당연한 이야기입니다. 하지만 어느 누구도 이런 것을 알려주지 않아서 LP에서의 지분을 구하는데 시간이 많이 걸렸습니다.

이러한 일들을 해 주는 코드는 아래와 같습니다.

~~~
sc_addr = {
    'bnb-busd' : '0x1B96B92314C44b159149f7E0303511fB2Fc4774f',
    'cake-bnb' : '0xA527a61703D82139F8a06Bc30097cC9CAA2df5A6',
    'ust-nflx' : '0xF609ade3846981825776068a8eD7746470029D1f',
}

sc_tokens = {
    'bnb' : '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
    'busd' : '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',
    'cake' : '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82',
    'nflx' : '0xa04F060077D90Fe2647B61e4dA4aD1F97d6649dc',
    'ust' : '0x23396cF899Ca06c4472205fC903bDB4de249D6fC',
}

def get_LP_info(pools, pos, lp_addr, token1, token2) :
    user_info = pools.functions.userInfo(pos, my_addr).call()
    my_lp_amount = user_info[0]

    # lp
    lp = w3.eth.contract(lp_addr, abi=contract_common_abi)
    # token1
    t1 = w3.eth.contract(token1, abi=contract_common_abi)
    name1 = t1.functions.name().call()
    sym1 = t1.functions.symbol().call().upper()
    bal1 = t1.functions.balanceOf(lp_addr).call() / (10 ** 18 ) 

    # token2
    t2 = w3.eth.contract(token2, abi=contract_common_abi)
    name2 = t2.functions.name().call()
    sym2 = t2.functions.symbol().call().upper()
    bal2 = t2.functions.balanceOf(lp_addr).call() / (10 ** 18 ) 

    price = bal1 / bal2

    lp_total = lp.functions.totalSupply().call()

    my_share = my_lp_amount / lp_total 
    my_holding_token1 = bal1 * my_share
    my_holding_token2 = bal2 * my_share

    cur_value =  my_holding_token1*coins_price[sym1] + my_holding_token2*coins_price[sym2]

    print('total   LP       : %15.2f'%(lp_total))
    print('total %-11s: %15.2f'%(sym1, bal1))
    print('total %-11s: %15.2f'%(sym2, bal2))
    print('own share of pool: %15.2f'%(my_lp_amount/lp_total*100))
    print('my share  %-7s: %15.2f'%(sym1, my_holding_token1))
    print('my share  %-7s: %15.2f'%(sym2, my_holding_token2))
    print('cur net value    : %15.2f'%cur_value)

name = 'pancake'
swap = w3.eth.contract(pools[name]['addr'], abi=pools[name]['abi'])
get_LP_info(swap, 60, sc_addr['ust-nflx'], sc_tokens['nflx'], sc_tokens['ust'])

~~~
##
결과를 확인해볼까요? 약간의 차이는 있지만 거의 비슷한 결과를 얻었음을 알 수 있습니다. mNflx의 경우에는 매수/매도 가격차가 아주 큰데요.  이러게 차이가 나는 이유는 잘 모르겠습니다. 좀 더 고민을 해봐야 할 듯 합니다.

##
![](https://cdn.steemitimages.com/DQmUYzaKgxUFtG6YihoD8ghY6rSeT5q1mTJqmzxQUnp8TBk/image.png)

이제 watchyield와 같은 프로그램을 만들 준비는 거의 끝난 것 같습니다. 이제는 공은 @goodhelllo님께 넘깁니다. 근사한 웹페이지가 곧 나올 것으로 기대합니다.

저는 이제 자동 claim하는 쪽으로 연구를 해보도록 하겠습니다. 이것도 방법을 찾기가 힘들군요. 혹시 방법 아시는 분 계시면 댓글 부탁드립니다.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 528 others
properties (23)
post_id89,776,545
authortradingideas
permlinklp-2
categoryhive-101145
json_metadata{"tags":["sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"],"image":["https:\/\/cdn.steemitimages.com\/DQmcaF8TLsC5ocPYMubfAD5bGyevtgoWJSuKTBsz4sm1BKV\/image.png","https:\/\/cdn.steemitimages.com\/DQmUYzaKgxUFtG6YihoD8ghY6rSeT5q1mTJqmzxQUnp8TBk\/image.png"],"app":"steemcoinpan\/0.1","format":"markdown","canonical_url":"https:\/\/www.steemcoinpan.com\/@tradingideas\/lp-2","users":["goodhelllo"]}
created2021-03-10 11:02:12
last_update2021-03-10 14:08:48
depth0
children5
net_rshares163,716,316,740,583
last_payout2021-03-17 11:02:12
cashout_time1969-12-31 23:59:59
total_payout_value79.932 SBD
curator_payout_value69.948 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length4,041
author_reputation1,239,747,763,028,945
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (592)
@upvu ·
<a href="https://coupa.ng/bHgxg2" target="_blank"><img src="https://ads-partners.coupang.com/banners/273554?subId=&traceId=V0-301-879dd1202e5c73b2-I273554&w=728&h=90" alt=""></a>
<div class='shr_item' style='position:relative; min-height:158px; margin:12px 0; padding:9px 10px; border:1px solid #dbdbdb; border-radius:1px; background-color:#fff;'><div class='item_dtl' style='position:relative; height:158px; padding:5px; border:1px solid #f0f1f4;'><span class='thmb' style='float:left; overflow:hidden; width:156px; height:156px; margin-right:9px; border:1px solid #e7e7e7;'><a href='https://qoo.tn/AoaPVR/Q163214049'><img src='https://steemitimages.com/240x0/https://gd.image-gmkt.com/li/061/293/1455293061.g_400-w-st_g.jpg' width='156' alt='' style='vertical-align: middle; border: 0 none;'></a></span><p class='tit' style='overflow:hidden; max-height:68px; margin-bottom:7px; line-height:17px; color:#000;'>[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★</p><span class='url' style='position:absolute; left:170px; bottom:10px; display:block; font-weight:bold; color:#9197a3;'>WWW.QOO10.COM</span></div></div>
👎  
properties (23)
post_id89,776,580
authorupvu
permlinkre--lp-2-20210310t110510538z
categoryhive-101145
json_metadata{"tags":["hive-101145","sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"]}
created2021-03-10 11:05:12
last_update2021-03-10 11:05:12
depth1
children1
net_rshares0
last_payout2021-03-17 11:05:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,191
author_reputation1,778,279,410,038
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@perpetuator ·
$0.38
re-upvu-re--lp-2-20210310t110510538z-20210317t123545958z
![](https://steemitimages.com/p/6VvuHGsoU2QBt9MXeXNdDuyd4Bmd63j7zJymDTWgdcJjnzpaDH3SJo9GrF3CScdctcfvfLNWS77w8hSMeLBSzwCTBwmC7A5M4eNyzKSCQqVxMfeSqJMET12UbYE6Kf?format=match&mode=fit)
👍  , , , ,
properties (23)
post_id89,881,152
authorperpetuator
permlinkre-upvu-re--lp-2-20210310t110510538z-20210317t123545958z
categoryhive-101145
json_metadata{}
created2021-03-17 12:35:48
last_update2021-03-17 12:35:48
depth2
children0
net_rshares443,184,286,847
last_payout2021-03-24 12:35:48
cashout_time1969-12-31 23:59:59
total_payout_value0.188 SBD
curator_payout_value0.187 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length181
author_reputation12,177,427,582,334
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (5)
@sct.krwp ·
@tradingideas transfered 15 KRWP to @krwp.burn. voting percent : 53.25%, voting power : 78.98%, steem power : 1724908.69, STU KRW : 1200. 
@tradingideas staking status : 10500 KRWP
                                @tradingideas limit for KRWP voting service : 21 KRWP (rate : 0.002)
                                What you sent : 15 KRWP [51886831 - d8aceaa32381f6881aab581bcd48085c0fee9912]
properties (22)
post_id89,779,071
authorsct.krwp
permlinkre--lp-2-20210310t143702913z
categoryhive-101145
json_metadata{"tags":["sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"]}
created2021-03-10 14:37:03
last_update2021-03-10 14:37:03
depth1
children1
net_rshares0
last_payout2021-03-17 14:37:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length391
author_reputation9,872,893,322,408
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@sacred-agent ·
$0.05
Thank You for Your insights...
👍  
properties (23)
post_id89,869,569
authorsacred-agent
permlinkqq2ng7
categoryhive-101145
json_metadata{"app":"steemit\/0.2"}
created2021-03-16 17:04:57
last_update2021-03-16 17:04:57
depth2
children0
net_rshares132,462,967,039
last_payout2021-03-23 17:04:57
cashout_time1969-12-31 23:59:59
total_payout_value0.045 SBD
curator_payout_value0.001 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length30
author_reputation6,489,664,153,600
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@zzings ·
멋지십니다
properties (22)
post_id89,783,553
authorzzings
permlinkre-tradingideas-qprvt6
categoryhive-101145
json_metadata{"tags":["hive-101145"],"app":"steempeak\/2020.07.1"}
created2021-03-10 21:32:03
last_update2021-03-10 21:32:03
depth1
children0
net_rshares0
last_payout2021-03-17 21:32:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length5
author_reputation907,356,130,330,581
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000