스팀 계정의 RC(Resource Credits) 계산하기

Words
234
Reading
2 min
Listen
Play
7y

안녕하세요 realmankwon@realmankwon입니다.

RC(Resource Credites)를 이용하여 계정을 생성하는 기능을 개발하였습니다.
RC가 특정값 이상이 되면 계정을 생성하는 것인데 getAccount api에는 그 값이 없었습니다.
그래서 어떻게 그 값을 알 수 있는지 검색해서 찾긴 했지만 curl을 이용한 것 밖에 찾지 못했습니다.
curl을 이용한 RC의 근거 데이터를 찾는 방법은 다음과 같습니다.

1 ) Example curl

  curl -s --data '{"jsonrpc":"2.0", "method":"rc_api.find_rc_accounts", "params":{"accounts":["steemit"]}, "id":1}' https://api.steemit.com



2 ) Expected Response JSON

 {
   "rc_accounts": [
     {
       "account": "",
       "rc_manabar": {"current_mana": "0", "last_update_time": 0},
       "max_rc_creation_adjustment": {
         "amount": "0",
         "precision": 6,
         "nai": "@@000000037"
       },
       "max_rc": "0"
     }
   ]
 }



curl 대신에 axios를 사용하여 호출하도록 하였습니다.
curl의 -s 명령어는 post를 방식을 뜻하는 것이고 --data는 response의 data 값을 의미하는 것입니다.
그래서 axios.post로 https://api.steemit.com 주소를 호출하고 param는 동일하게 전달했습니다.
결과값이 동일하게 나오는 것을 확인하고는 RC 를 계산하는 함수를 작성했습니다.

계산 공식은 nhj12311@nhj12311의 포스팅을 참조하였습니다.
원문 : https://busy.org/@nhj12311/steem-apps-rc

 getResourceCredits:  (account) => {
     return new Promise(async(resolve, reject) => {
       try{
         const params={"jsonrpc":"2.0", "method":"rc_api.find_rc_accounts", "params":{"accounts":[account]}, "id":1};
         const result = await axios.post("https://api.steemit.com", params);

         const rc = result.data.result.rc_accounts[0]
         const STEEM_RC_MANA_REGENERATION_SECONDS =432000;
         const estimated_max = parseFloat(rc.max_rc);
         const current_mana = parseFloat(rc.rc_manabar.current_mana);
         const last_update_time = parseFloat(rc.rc_manabar.last_update_time);
         const diff_in_seconds = Math.round(Date.now()/1000-last_update_time);
         let estimated_mana = (current_mana + diff_in_seconds * estimated_max / STEEM_RC_MANA_REGENERATION_SECONDS);
         if (estimated_mana > estimated_max)
             estimated_mana = estimated_max;
  
         const estimated_pct = estimated_mana / estimated_max * 100;

         resolve(estimated_pct);
       }
       catch(err){
         reject(err);
       }
     });
   },



덕분에 RC가 정상적으로 계산을 할 수 있었고 계정 클레임도 순조롭게 할 수 있었습니다.
어서 SCT 운영진 내부적으로 필요한 기능들을 일단락 지어야겠습니다.
불금!!! 즐거운 시간되세요 ^^

스팀 계정의 RC(Resource Credits) 계산하기 | Ecency