[개발] 임대 자동화 추가

in mini.topia2 months ago

안녕하세요 @realmankwon입니다.

저도 UPVU 사용자라서 생각날때마다 http://upvu.site에 가서 임대를 해주곤 했습니다.
그런데 이것도 계속 해주다 보니 귀찮음이...ㅜㅜ
조금이라도 시간이 들어가기도 하고 스파가 생길때마다 바로바로 넣어주는게 더 좋을 듯 하여 조금 짬을 내서 자동화시켰습니다.

몇 줄 되지 않아서 빨리 처리를 하긴했네요.
일단 현재 upvu에 임대를 준 스파를 가져와야 합니다.
스팀의 경우는 스팀엔진과 달리 추가를 스파를 할때도 전체양을 써야지 추가할 양을 써버리면 망각입니다.ㅜㅜ
초반이 이런 실수를 하신 유저들도 계셔서 upvu 사이트에서는 경고메세지를 보여주고 있습니다.

암튼 그래서 다음의 api를 이용하여 upvu에 임대를 준 수량을 가지고 옵니다.
파라미터는 다음의 순서대로 기입합니다.

  • Delegator : 자신의 계정명
  • Delegatee : 임대받을 계정명
  • 알파벳 순으로 정렬하여 Delegatee 계정 포함 가져 올 계정 수
const curr_delegation_sp = steem.api.getVestingDelegations('realmankwon', 'upvu', 1, (err, result) => {
   if (err) {
      console.log(err);
      return reject(err);
   }
    
   return resolve(parseFloat(result[0].vesting_shares));
});

저같은 경우는 저자보상이 클레임이 될때 클레임되는 SP만 추가로 임대를 하도록 개발을 하였습니다.
위에서 조회한 curr_delegation_sp 과 클레임된 SP를 더해서 다시 임대를 해 주면 됩니다.
클레임 대상이 되는 SP는 스팀 계정을 조회하는 api를 호출하면 알 수 있습니다.

const reward_vesting_balance = steem.api.getAccounts([author], (err, data) => {
      if (err) {
          resolve(null);
          return;
      }

      if (!data.length) {
          resolve("NONE");
          return;
      }

      resolve(parseFloat(data[0].reward_vesting_balance));
});

임대를 할 때는 사용자가 보기 쉽게 SP를 계산할 필요가 없기 때문에 위의 두 값을 더해서 임대를 실행시키면 됩니다.

const vesting_shares = curr_delegation_sp + reward_vesting_balance;

steem.broadcast.delegateVestingShares(key, 'realmankwon', 'upvu', 
   vesting_shares.toFixed(6) + ' VESTS', (err, result) => {
   if (err) {
       console.log(err);
       return reject(err);
   }
   
    return resolve(result);
});

실행하니 클레임될때마다 따박따박 임대가 잘 되는군요 ^^
이제 또하나의 자동화가 이루어졌으니 그 시간에 또 다른 일을... ㅎㅎ
즐거운 연휴되세요!