지갑주소에 있는 모든 토큰의 명칭과 balance 는 어떻게 받아올수 있나요?

caver.klay.getBalance(account)
    .then(function (balance) {
        document.getElementById("myWallet").innerHTML = `지갑주소: ${account}`
        document.getElementById("myKlay").innerHTML = `잔액: ${caver.utils.fromPeb(balance, "KLAY")} KLAY`
    });

안녕하세요
위 소스를 실행하면 klay 토큰의 잔액을 확인할 수 있는데요
klay 말고 해당 지갑에 들어있는 다른토큰의 목록과 잔액을 확인하려면 어떻게
명령을 내려야 할까요?

경험해보신 선배님들의 조언 부탁드립니다 ㅠ.ㅠ
단순하게 KLAY를 타 토큰명으로 바꿔봤는데 안되네요

ㅠ.ㅠ

안녕하세요.

스마트 컨트랙트로 발행된 토큰의 잔액을 받아오기 위해서는 caver.contract 객체를 사용해서 스마트컨트랙트와 상호작용을 해야합니다. 스마트 컨트랙트의 method 중 balanceOf 메소드를 사용하시면 해당 지갑 주소에 있는 토큰 잔액을 반환 받을 수 있을 것 입니다.

  1. caver contract 링크: https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/api-references/caver.contract#new-contract
  2. 만약 KIP-7 토큰이라면 caver.kct.kip7를 사용해서도 가능합니다. 토큰 주소를 사용해서 KIP 7 인스턴스를 생성하시고 balanceOf 함수를 사용하실 수 있습니다.
const kip7 = caver.kct.kip7.create('0x{address in hex}')
kip7.balanceOf('0x{address in hex}').then(console.log)
  1. 특정 소유자의 토큰 목록 조회를 위해서는 KAS서비스에서 제공하는 API가 있습니다. KAS Reference Documentation 의 getListOfTokenByOwnerAddress함수가 있습니다.
    (참고로 KAS관련 질문은 카스 포럼에 남겨주시면 감사하겠습니다. )

감사합니다!

3 Likes

잔액 받아오는거 알려주신데로 해보니 성공했습니다^^
너무너무 감사합니다 OTL

이제 제가 생각했던것들 하나하나씩 해 볼 수 있겠네요
다시한번 감사드립니다^^

한가지만 더 여쭤보겠습니다
지금 결과값 9999999766000 을 받았는데요
보여줘야할 수치는 999,999,976.6 입니다

토큰 자리수는 18자리이고
caver.utils.fromPeb(9999999766000, “KLAY”) 로 했더니
0.000009999999766 나오던데요

어떻게 해야 제대로 표시될 수 있을까요?
위에 적은 함수이외에 따로 존재하는지 궁금합니다

일단 fromPeb(balance2, “peb”) / 1e18 ) 이렇게 해서 나오게 했는데 맞는 방식일까요?

안녕하세요.

각 토큰마다 token decimals가 다르게 설정되어 있을 수 있습니다.
해당 토큰의 decimals를 확인해 보시길 바랍니다.
보여주신 값으로 볼 때 4로 설정되어 있을 것 같습니다.
참고 링크. ERC 20 - OpenZeppelin Docs

감사합니다.

2 Likes