특정 계정이 어느 계정에 스팀파워를 임대했는지, 즉 나가는 임대(outgoing delegation) 내역은 파이썬 beem에서 간편하게 확인할 수 있습니다. 아래의 링크입니다.
파이썬 beem에서 특정 계정의 스팀파워 임대 정보 조회하기
반면에 특정 계정이 어느 계정으로부터 얼마의 스팀파워를 임대 받았는지, 즉 들어오는 임대(incoming delegation) 내역은 beem에서 확인하기가 어렵습니다. 가능하긴 하지만 계정 이력(account history)을 조회해서 일일이 확인을 해야 합니다.
SDS API를 이용하면 들어오는 임대 내역을 간편하게 조회할 수 있습니다. 우선 SDS API의 기본 동작에 대한 내용은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다.
들어오는 임대 내역을 조회하기 위한 url 항목은 /delegations_api/getIncomingDelegations/입니다. 예를 들어 @jsup 계정이 임대 받은 내역을 확인하려면 아래와 같이 할 수 있습니다.
import requests
sds_url = 'https://sds1.steemworld.org/delegations_api/getIncomingDelegations/' + steem_id
response = requests.get(sds_url)
print(response.text)
{"code":0,"result":{"cols":{"time":0,"from":1,"to":2,"vests":3},"rows":[[1644649578,"kr-templar","jsup",641540.008757],[1645865067,"ladysong","jsup",1739196.428124],...,[1665399027,"hdc","jsup",1796491.495542]]}}
json 형식으로 받은 응답을 보면 "result" 키(key)에 딕셔너리가 할당되어 있고 "cols"와 "rows"가 있는 것을 볼 수 있습니다. "cols"는 "rows"에 속한 원소들이 어떤 항목들인지를 보여줍니다. "cols"에 속한 딕셔너리의 키를 보면 "time", "from", "to", "vests" 순서로 되어 있음을 볼 수 있습니다. 시간, "rows"에 속한 원소는 이에 대응하여 임대한 계정, 임대 받은 계정, 임대한 스팀파워(단위: vests) 순서로 실제 임대 받은 내역이 리스트(list) 형식으로 포함되어 있음을 볼 수 있습니다.
이제 응답 문자열을 딕셔너리로 바꿔서 내역을 보기 좋게 출력할 수 있습니다. json 모듈을 활용해서 문자열을 딕셔너리로 변환합니다.
import json
from beem import Steem
node_list = ["https://api.steemit.com"]
steem = Steem(node=node_list)
res_dict = json.loads(response.text)
for item in res_dict['result']['rows']:
delegator = item[1]
deleg_vests = item[3]
deleg_sp = steem.vests_to_sp(deleg_vests)
print("임대 계정:", delegator, "- 스팀파워:", str(round(deleg_sp,3)) + "sp")
임대 계정: kr-templar - 스팀파워: 357.338sp
임대 계정: ladysong - 스팀파워: 968.733sp
...
임대 계정: hdc - 스팀파워: 1000.647sp
VESTS값을 스팀파워로 전환하기 위해 beem 모듈의 Steem 객체에서 제공하는 vests_to_sp() 함수를 이용했습니다.
I guess it is the first account ! With steemit