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

in hive-160196 •  3 years ago 

참여하는 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하면 향후 코드 수정사항이 생겼을 때 일이 많군요. 조금 비효율적일지라도 함수를 이용하여 값을 가져오는 구조가 좋은 것 같습니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!