defi의 현재 실제 수익률 계산(3)

in SCT.암호화폐.Crypto3 years ago (edited)

참여하는 defi가 많아지다보니 token의 현재 가격을 받아와야하는 경우가 늘어납니다.
기존에는 아래와 같은 방식으로 그동안 사용했던 모든 토큰에 대하여 현재가를 가져왔습니다.

        CUR_PRICE['PANTHER'] = get_bsc_token_price(sc_addr['panther-bnb'], sc_tokens['panther'], sc_tokens['bnb'], 1)

그런데 더 이상 사용하지 않는 토큰들이 늘어나다보니 처음 시작할 때 프로그램이 너무 느려지는 문제가 생겼습니다. 그래서 사용하는 토큰에 한하여 현재 가격을 가져온 적이 없는 경우에만 현재가를 가져오도록 수정했습니다.
xxx-usdt pair에 대해서도 가격을 가져올 수 있도록 추가하였습니다.

def get_defi_token_price(name=None) :
    if name != None :
        cap_name = name.upper()
        low_name = name.lower()
        if cap_name in CUR_PRICE :
            return CUR_PRICE[name]
        else :
            target = low_name+'-busd'
            busd_bnb = 'busd'
            bnb = 0
            if low_name+'-bnb' in sc_addr :
                bnb = 1
                target = low_name+'-bnb'
                busd_bnb = 'bnb'
            elif low_name+'-usdt' in sc_addr :
                target = low_name+'-usdt'
                busd_bnb = 'usdt'

            CUR_PRICE[cap_name] = get_bsc_token_price(sc_addr[target], sc_tokens[low_name], sc_tokens[busd_bnb], bnb)
            return CUR_PRICE[cap_name]

CUR_PRICE[token_name]으로 사용하던 코드도 모두 바꾸다보니, 여기 저기 수정할 곳이 많군요. 개발하면서 항상 느끼는 것이지만 자료 구조를 바로 access하면 향후 코드 수정사항이 생겼을 때 일이 많군요. 조금 비효율적일지라도 함수를 이용하여 값을 가져오는 구조가 좋은 것 같습니다.

Sort:  

Excellent post, thanks dear.

[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★

WWW.QOO10.COM

start success go! go! go!

@tradingideas transfered 45 KRWP to @krwp.burn. voting percent : 72.41%, voting power : 64.32%, steem power : 1776767.14, STU KRW : 1200.
@tradingideas staking status : 11000 KRWP
@tradingideas limit for KRWP voting service : 22 KRWP (rate : 0.002)
What you sent : 45 KRWP
Refund balance : 23 KRWP [54109867 - a2b4a9ef1575098c65b500b23a2ea6c27ce9b634]

그것을 사랑해

Coin Marketplace

STEEM 0.19
TRX 0.14
JST 0.030
BTC 64535.04
ETH 3462.08
USDT 1.00
SBD 2.49