Klayth IDE 를 통하여 발행된 ERC20 형식의 토큰의 수량은 어떻게 가져오나요?

안녕하세요.

klayth 메인넷 상에서 erc20 형식의 토큰을 발행 후 지갑을 만들어 보고 있는데요…

WEB3J 경우 아래의 코드 형식으로 발행된 토큰 수량에 대한 조회가 가능한데…
caver-java 의 경우 해당 코드와 대응되는 어떻게 되나요?
관련 페이지의 내용을 검색 해보려 해봤지만 Error 1016 오류 페이지가 나와서요…

문의드립니다.

web3j 코드

    String methodName = "balanceOf";
    List<Type> inputParameters = new ArrayList<>();
    List<TypeReference<?>> outputParameters = new ArrayList<>();
    Address address = new Address(fromAddress);
    inputParameters.add(address);

    TypeReference<Uint256> typeReference = new TypeReference<Uint256>() {
    };
    outputParameters.add(typeReference);
    Function function = new Function(methodName, inputParameters, outputParameters);
    String data = FunctionEncoder.encode(function);
    Transaction transaction = Transaction.createEthCallTransaction(fromAddress, contractAddress, data);

    EthCall ethCall;
    BigInteger balanceValue = BigInteger.ZERO;
   ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send();
   List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), 
   function.getOutputParameters());
   balanceValue = (BigInteger) results.get(0).getValue();

안녕하세요. 그라운드 X 김선용입니다.

클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

1. Klaytn Docs 접속 에러 발생
Klaytn docs는 gitbook을 사용하는데 gitbook 서버가 일시적으로 장애를 일으켜서, gitbook을 사용하는 서비스들이 일시적으로 접속이 되지 않았습니다. 정보를 확인하는데 있어 불편을 드려 죄송합니다.

2. ERC20의 토큰 수량 조회

Klaytn에서는 ERC20의 토큰과 호환되는 KIP7 토큰이 정의되어 있고, (http://kips.klaytn.com/KIPs/kip-7)
Caver-java 1.4.0에 추가된 KIP7 Class를 활용하면 손쉽게 클레이튼에 배포된 ERC20 contract의 function들을 호출할 수 있습니다.

아래의 예제 코드를 참조부탁드립니다.

        String privateKey = "";
        String contractAddress = "";
        String userAddress = "";

        Caver caver = Caver.build(Caver.BAOBAB_URL);

        KlayCredentials credentials = KlayCredentials.create(privateKey);
        TransactionManager txManager =  new TransactionManager.Builder(caver, credentials)
                .setChaindId(ChainId.BAOBAB_TESTNET)
                .build();

        KIP7 tokenHandler = KIP7.load(contractAddress, caver, txManager, new DefaultGasProvider());

        try {
            BigInteger balance = tokenHandler.balanceOf(userAddress).send();
        } catch (Exception e) {
            e.printStackTrace();
        }

위 예제 코드가 도움이 되셨길 바라며, 부족한 부분은 편하게 질문해주시면 답변드리도록 하겠습니다. :slight_smile:

감사합니다.

1개의 좋아요

저는 혹시 기능이 없나 싶어서 솔리디티 파일을 컴파일 하여 java 파일으로 변환하여 조회 했었는데…
Kale 님 덕분에 소스가 간편해졌습니다.
감사합니다.

1개의 좋아요