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

View this thread on steempeak.com
· @tradingideas · (edited)
$160.87
[암호화폐] 아무도 알려주지 않는 LP의 의미(1)
DeFi로 채굴을 하기 위해서는 LP를 만들어서 유동성 공급을 합니다. LP 공급할 때 나오는 LP 수량의 의미를 파악하기가 힘든데요. 특히 현재 LP에 pair 토큰이 몇 개가 있는지를 바로 확인하기가 어렵습니다.

이런 답답함을 일시에 풀어준 서비스가 바로 https://yieldwatch.net/ 입니다. 여기에 본인의 eth 주소를 넣으면 투자 중인 LP가 모두 나오고, 각각의 LP를 클릭해보면 자세한 정보도 나옵니다. 이렇게요.

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

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

이 값을 파이썬으로 구해보도록 하겠습니다.

이 값을 구하기 전에 smart contract에 대하여 좀 더 공부를 해보겠습니다.

uniswap과 같은 자동화된 마켓 메이커(AMM, Automated Market Maker)는 유동성에 있는 pair 토큰들의 수량에 따라서 가격이 결정이 됩니다. 

B 토큰 가격 = LP에 있는 A 토큰 수량 / LP에 있는 B 토큰 수량
 
LP에 남아있는 토큰의 수량에 따라서 가격이 결정된다는 점이 아주 흥미롭습니다. 만약 A -> B로 전환하는 거래가 성립하면 LP에 있는 A 토큰 수량은 늘고, B 토큰 수는 감소하므로 B 토큰 가격은 상승합니다. 반대의 경우에는 가격이 하락합니다. 

이런 간단한 구조로 AMM이 동작을 합니다. 이런 구조를 보면 가격을 왜곡시킬 수 있는 방법이 딱 떠오르죠. 실제로 가격을 왜곡시켜 먹튀하는 경우도 많았습니다. 그럼에도 불구하고 AMM이 잘 동작하는 이유는 유동성 공급이 아주 아주 크기 때문입니다. 유동성 공급이 클수록 가격이 잘 유지되는 특성을 가지고 있습니다.

이렇게 간단한 개념으로 교환이 이루어지고 있다니 조금 충격적이기는 합니다. uniswap과 같은 분산거래소의 동작원리를 이해하고 나니 왜 LP 공급 확대를 위하여 노력하는지 이해가 됩니다. 분산 거래소의 핵심 중의 핵심은 유동성 공급을 증가시키는 것이군요. 유동성 규모가 클수록 대규모 거래에 대해서도 가격 변동성을 줄일 수 있기 때문에 수요가 증가하기 때문입니다.

여기서 한가지 더 이해를 해야할 부분은 각 토큰의 발행량과 특정 LP에 투입된 토큰과의 관계입니다.

예를들어 BUSD와 BNB로 이루어진 BUSD-BNB LP의 경우에 아래 그림과 같이 BUSD 중 일부, BNB 중 일부가 BUSD-BNB LP에 공급되어 있습니다.

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

BUSD 토큰 중 BUSD-BNB LP에 공급된 수량은 아래와 같은 방식으로 구할 수 있습니다.

BUSD-BNB LP : 0x1B96B92314C44b159149f7E0303511fB2Fc4774f
BUSD : 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56
BNB : 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c

bscscam.com에서 busd 주소를 입력하면 busd의 smart contract 내용을 확인할 수 있습니다. 이중 5. balanceOf에 busd-bnb lp 주소를 입력해보면 busd-bnb lp에 있는 busd 수량을 알 수 있습니다.

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

같은 방식으로 bnb 주소를 입력한 후 busd-bnb lp 주소를 입력하면 busd-bnb lp에 있는 bnb 수량을 알 수 있습니다.

앞에서 설명한 바와 같이 bnb 가격은 이 두 값을 나누면 나옵니다. 이것을 파이썬으로 함수를 만들어보면 아래와 같습니다.

~~~
def get_bnb_price() :
    lp_addr = sc_addr['bnb-busd']

    # busd
    t1 = w3.eth.contract(sc_tokens['busd'], abi=contract_common_abi)
    name1 = t1.functions.name().call()
    sym1 = t1.functions.symbol().call()
    bal1 = t1.functions.balanceOf(lp_addr).call() / (10 ** 18 ) 

    # bnb
    t2 = w3.eth.contract(sc_tokens['bnb'], 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

    print("[%6s - %6s] %10.4f %10.4f, price $%10.4f"%(sym1, sym2, bal1, bal2, price))
    return price
~~~

pancakeswap에서 현재가를 확인해본 값과

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

프로그램으로 출력한 값이 비슷하게 나옵니다.

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

두 프로그램에서 금액상 차이가 나는 부분은 pancakeswap의 경우에는 수수료 0.3%가 포함되어서 그런 것 같습니다.

이번 글에서는 LP에서 각 토큰의 수량을 확인하는 방법과 이를 이용하여 해당 토큰의 가격을 결정하는 과정에 대하여 기술하였습니다. 다음에는 그동안 설명한 사항들을 모두 모아 본인이 투자한 LP에 있는 각 토큰의 수량, 현재 가치를 계산하는 방법에 대하여 기술하도록 하겠습니다.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 531 others
properties (23)
post_id89,732,778
authortradingideas
permlinklp-1
categoryhive-101145
json_metadata{"tags":["sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"],"image":["https:\/\/cdn.steemitimages.com\/DQmaw2vVWimRzMRQGgUiMaAojQ2HBgcnz5F4DTVzGtYe53H\/image.png","https:\/\/cdn.steemitimages.com\/DQmP8XqvxtKXKfZikeEmKMDrwtSF7s8spzu1sVWqgPAKWpJ\/image.png","https:\/\/cdn.steemitimages.com\/DQmexBFTMLvFVGrTV5txAmyxwfhHzcYb7zWXTQurjyRth5p\/image.png","https:\/\/cdn.steemitimages.com\/DQmTkRxJ4mpWFd1rotTUX134ZbUxQxvS1itrEkXAS3b6DYH\/image.png","https:\/\/cdn.steemitimages.com\/DQmbtDhHNTwYEfDRaovvXfDf5UWrfeDqtBs8jM5cFWDtPXQ\/image.png","https:\/\/cdn.steemitimages.com\/DQmXYbEQenTa262vCWwEcqCz5UfFU5do8s1AGwmhRAFcYSf\/image.png"],"app":"steemcoinpan\/0.1","format":"markdown","canonical_url":"https:\/\/www.steemcoinpan.com\/@tradingideas\/lp-1","links":["https:\/\/yieldwatch.net\/"]}
created2021-03-07 11:12:45
last_update2021-03-07 11:32:42
depth0
children6
net_rshares169,501,327,810,566
last_payout2021-03-14 11:12:45
cashout_time1969-12-31 23:59:59
total_payout_value86.291 SBD
curator_payout_value74.583 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length3,122
author_reputation1,249,299,789,118,735
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (595)
@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 (22)
post_id89,732,807
authorupvu
permlinkre--lp-1-20210307t111540406z
categoryhive-101145
json_metadata{"tags":["hive-101145","sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"]}
created2021-03-07 11:15:42
last_update2021-03-07 11:15:42
depth1
children0
net_rshares0
last_payout2021-03-14 11:15:42
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의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@sct.krwp ·
@tradingideas transfered 15 KRWP to @krwp.burn. voting percent : 53.69%, voting power : 80.25%, steem power : 1722733.45, STU KRW : 1200. 
@tradingideas staking status : 7500 KRWP
                                @tradingideas limit for KRWP voting service : 22.5 KRWP (rate : 0.003)
                                What you sent : 15 KRWP [51800643 - ba4c3ce588cc33baf7a86e96c5daef4a6542f23a]
properties (22)
post_id89,732,875
authorsct.krwp
permlinkre--lp-1-20210307t112251106z
categoryhive-101145
json_metadata{"tags":["sct-kr","sct-freeboard","s","union","mini","jjm","lgt","sct"]}
created2021-03-07 11:22:51
last_update2021-03-07 11:22:51
depth1
children0
net_rshares0
last_payout2021-03-14 11:22:51
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_length392
author_reputation9,872,893,322,408
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@zzings ·
바쁘시다면서 요즘 더 열심이신것 같습니다.
properties (22)
post_id89,733,455
authorzzings
permlinkre-tradingideas-qplm4k
categoryhive-101145
json_metadata{"tags":["hive-101145"],"app":"steempeak\/2020.07.1"}
created2021-03-07 12:17:09
last_update2021-03-07 12:17:09
depth1
children1
net_rshares0
last_payout2021-03-14 12:17:09
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_length23
author_reputation909,680,507,660,533
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@tradingideas ·
역설적으로 바뻐서.. 자동화가 필요해서 작업 중입니다. ㅎ
properties (22)
post_id89,735,885
authortradingideas
permlinkqplvah
categoryhive-101145
json_metadata{"tags":["sct"],"app":"steemcoinpan\/0.1","canonical_url":"https:\/\/www.steemcoinpan.com\/@tradingideas\/qplvah"}
created2021-03-07 15:35:06
last_update2021-03-07 15:35:06
depth2
children0
net_rshares0
last_payout2021-03-14 15:35:06
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_length32
author_reputation1,249,299,789,118,735
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@handword ·
무슨말인지 이해하려면 언제가 되야 할까요...에휴.
properties (22)
post_id89,734,410
authorhandword
permlinkqplqe4
categoryhive-101145
json_metadata{"app":"steemit\/0.2"}
created2021-03-07 13:49:15
last_update2021-03-07 13:49:15
depth1
children0
net_rshares0
last_payout2021-03-14 13:49:15
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_length28
author_reputation1,005,129,969,225
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars0
@tailcock ·
아 어렵네요
LP부터 막히네요.
properties (22)
post_id89,734,778
authortailcock
permlinkqplrnw
categoryhive-101145
json_metadata{"tags":["sct"],"app":"steemcoinpan\/0.1","canonical_url":"https:\/\/www.steemcoinpan.com\/@tailcock\/qplrnw"}
created2021-03-07 14:16:42
last_update2021-03-07 14:16:42
depth1
children0
net_rshares0
last_payout2021-03-14 14:16:42
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_length17
author_reputation85,113,803,820,237
root_title"[암호화폐] 아무도 알려주지 않는 LP의 의미(1)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000