[BLOCKSDK] 자바스크립트로 지갑에 보관된 모든 ERC-20 토큰 데이터를 얻는 방법

BLOCKSDK·2023년 10월 16일
0

BLCOKSDK 개발자 문서공식 github에서 이더리움, 클레이튼, 폴리곤, BNC 등 다양한 블록체인 서비스 및 솔루션을 사용자의 프로그래밍 언어에 맞게 제공하고 있습니다.

자바스크립트로 지갑에 보관된 모든 ERC-20 토큰 데이터를 얻는 방법을 알아보건데요. ERC-20 토큰은 가장 널리 사용되는 토큰 표준 중 하나로, 다양한 프로젝트와 애플리케이션에서 광범위하게 채택되고 있습니다.

다음 글은 자바스크립트로 ERC-20 토큰 데이터를 얻는 예시 코드입니다.

이 글에서는 BLOCKSDK를 사용해 지갑에 보관된 모든 토큰 데이터를 얻는 방법을 알아보겠습니다.
BLOCKSDK에 로그인 후 더 많은 내용을 확인하고 테스트 해보세요

지갑에 보관된 모든 토큰 데이터 얻기

  • BlockSDK에서 지원하는 네트워크
    • 이더리움(eth)
    • 클레이튼(klay)
    • 바이낸스 스마트 체인(bsc)
    • 폴리곤(matic)
    • 아발란체 C체인(avax)
    • 이더리움 클래식(etc)

예시 코드

const axios = require('axios');

const list_network = ["eth","klay","bsc","etc","avax","matic"]
const api_token = "Node_RPC_TOKEN"
const wallet_address = "0xf977814e90da44bfa03b6295a0616a897441acec"
const result = {}
list_network.map((network) => (

    axios.get(`https://mainnet-api.blocksdk.com/v3/${network}/token/${wallet_address}/all-balance`, {
        headers: {
            'X-API-TOKEN': api_token
        }
    }).then(response => {
            response.data.payload.data.map(
                (token, index)=>{
                    axios.get(`https://mainnet-api.blocksdk.com/v3/eth/token/${token.contract}/info`, {
                        headers: {
                            'X-API-TOKEN': api_token
                        }
                    })
                        .then(response => {
                            if(response.data.payload.totalSupply > 0){
                                result.name = response.data.payload.symbol
                                result.contract = token.contract
                                result.decimals = response.data.payload.decimals
                                let integerPart = response.data.payload.totalSupply.slice(0, -response.data.payload.decimals);
                                let decimalPart = response.data.payload.totalSupply.slice(-response.data.payload.decimals);
                                let formattedSupply = integerPart + '.' + decimalPart;
                                result.balance = formattedSupply
                                console.log(result)
                            }
                        })
                        .catch(error => {
                            console.log('Error:', error);
                        });
                }
            )
        })
        .catch(error => {
            console.log('Error:', error);
        })
))

토큰 잔액 조회

  • axios.get함수를 사용하여 각 블록체인 네트워크에서 지갑 주소가 보유한 모든 ERC-20 토큰의 잔액 정보를 조회합니다. 조회 URL은 https://mainnet-api.blocksdk.com/v3/${network}/token/${wallet_address}/all-balance형식으로, ${network}는 조회할 블록체인 네트워크, ${wallet_address}는 조회할 지갑 주소를 나타냅니다.
  • BLOCKSDK API를 호출할 때는 헤더에 API토큰 'X-API-TOKEN': api_token을 포함시켜 인증합니다.

토큰 정보 조회

  • 조회된 각 토큰에 대해 추가로 토큰 정보(예: 심볼, 총 공급량, 소수점 자릿수)를 조회합니다. 이 때 사용되는 URL은 https://mainnet-api.blocksdk.com/v3/eth/token/${token.contract}/info형식입니다.
  • 여기서 ${token.contract}는 앞서 조회한 토큰 잔액 정보에서 얻은 각 토큰의 컨트랙트 주소입니다.
  • 토큰 정보 조회 후, response.data.payload에서 토큰의 심볼, 컨트랙트 주소, 소수점 자릿수 등의 정보를 추출합니다. 그리고 총 공급량totalSupply을 적절한 형식으로 포맷하여 최종 결과를 콘솔에 출력합니다.

오류 처리

  • API 호출과정에서 발생할 수 있는 오류를 catch문을 통해 처리합니다. 오류발생 시, 오류 메시지를 콘솔에 출력합니다.

블록체인 네트워크에서 ERC-20 토큰의 잔액과 상세 정보를 효율적으로 조회할 수 있는 방법을 보여줍니다. 실제 사용 시에는 api_token, wallet_address등의 값을 사용자의 실제 정보로 대체해야 하며, 보안을 위해 API토큰과 개인 키의 관리에 주의해야 합니다.

  • 실행 결과
{
  name: 'ZRX',
  contract: '0xe41d2489571d322189246dafa5ebde1f4699f498',
  decimals: 18,
  balance: '1000000000.000000000000000000'
}
{
  name: '',
  contract: '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2',
  decimals: 18,
  balance: '977631.036950888222010062'
}
{
  name: 'CROW',
  contract: '0x7530055e18a29f976c94f58430c4fcb5d689c0d0',
  decimals: 8,
  balance: '10000000000.00000000'
}
{
  name: 'AERGO',
  contract: '0x91af0fbb28aba7e31403cb457106ce79397fd4e6',
  decimals: 18,
  balance: '500000000.000000000000000000'
}
{
  name: 'GNO',
  contract: '0x6810e776880c02933d47db1b9fc05908e5386b96',
  decimals: 18,
  balance: '10000000.000000000000000000'
}
{
  name: 'IOTX',
  contract: '0x6fb3e0a217407efff7ca062d46c26e5d60a14d69',
  decimals: 18,
  balance: '10000000000.000000000000000000'
}
{
  name: 'BAT',
  contract: '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
  decimals: 18,
  balance: '1500000000.000000000000000000'
}
{
  name: 'SAND',
  contract: '0xaf322c10333d27f47260fa94df1d2d74edaeee57',
  decimals: 18,
  balance: '1000000000000000000000.000000000000000000'
}
{
  name: 'T',
  contract: '0xcdf7028ceab81fa0c6971208e83fa7872994bee5',
  decimals: 18,
  balance: '10515000000.000000000000000000'
}
{
  name: 'CTSI',
  contract: '0x491604c0fdf08347dd1fa4ee062a822a5dd06b5d',
  decimals: 18,
  balance: '1000000000.000000000000000000'
}
{
  name: 'TROY',
  contract: '0x4574562e9310a94f9ca962bd23168d8a06875b1a',
  decimals: 18,
  balance: '10000000000.000000000000000000'
}

마치며

이 코드 예제를 통해 BLOCKSDK API를 사용하여 다양한 블록체인 네트워크에서 지갑에 보관된 모든 ERC-20 토큰의 데이터를 조회하는 방법을 살펴봤습니다. 이 과정에서는 먼저 각 네트워크별로 토큰 잔액을 조회하고, 이어서 각 토큰의 상세 정보를 불러오는 단계를 거쳤습니다. 이러한 작업을 수행하면서, API 호출에 필요한 인증과 오류 처리의 중요성도 함께 강조됐습니다.

profile
BLOCKSDK는 간편 코인 제작 기능 과 블록체인 서비스 개발을 단순화하여 블록체인에 전문화된 개발자 없이 빠르게 개발할수 있는 API 와 완성형 솔루션 제공 서비스입니다

0개의 댓글

관련 채용 정보