[개발] getAccountHistory API 사용시 주의점

in mini.topia2 months ago

안녕하세요 @realmankwon입니다.

관리하는 계정들이 많아지고 봇이 잘 돌아가고 있는지 확인을 하는 것이 힘들어져서 계정마다 필요한 정보를 저장하고 있습니다.
그리고 해당 활동에 대해서 텔레그램으로 전송하도록 하여 최대한 빨리 오류를 인지할 수 있도록 하였습니다.

그때 사용하는 steem api 는 다음과 같습니디ㅏ.

steem.api.getAccountHistory(account, start, count, (err, result) => {
      return resolve(result);
});
  • start : 조회할려고 하는 마지막 history no
  • count : start 에서 역산하여 조회할 개수

예) 1000 번에서 1500 번까지 조회
start : 1500, count : 501

주기적으로 저장을 하기 위해서 다음과 같이 개발을 했었습니다.

1 . Lastest history no 찾기

  • start 에 -1 을 입력하면 Lastest history no 의 정보를 가지고 옵니다.
let lastHistoryNo = await steem.api.getAccountHistory('realmankwon', -1, 1, (err, result) => {
      return resolve(result);
});

lastHistoryNo = lastHistoryNo[0][0];



2 . 개인 DB 에 저장된 이전 history no 를 조회

3 . History 조회

const start = lastHistoryNo;
const count = lastHistoryNo - [2의 결과값];
const histories= await steem.api.getAccountHistory('realmankwon', start , count , (err, result) => {
      return resolve(result);
});

그런데 이렇게 하면 결과값이 원하는 결과와 달랐습니다.
History no 가 항상 그대로 유지되지 않고 줄어드는 현상이 있었습니다.
원인은 잘 모르겠지만 위와 같이 하면 중복이 발생할 수 있었습니다.

그래서 키 값은 history no 가 아닌 block no, trx id 로 해야하며 count 는 넉넉하게 가지고 와서 중복된 것은 제외시키도록 하여야 됩니다.
이런 부분은 좀 이상하기도 하고 불편하게 느껴집니다.
깔끔하게 정보의 변경이 없게끔하면 되었을텐데... 어떤 사연이 있는 건지...

암튼 주의해서 개발해야할 듯 합니다.