안녕하세요, getTransactionReceipt로 읽어온 데이터에서 input data를 decode하여 사용하고 싶은데, abi json을 통해 decode하는 예제 코드 혹은 샘플이 있을 지 문의드립니다.
@jaeholee
안녕하세요.
smart-contract-execution-example.java · GitHub 예제 소스코드를 참고해보시면 좋을 거 같습니다.
도움이 되었으면 좋겠네요
151라인부터 157라인까지가 원하시는 내용에 대한 핵심 부분입니다.
Receipt 으로부터 input
을 추출하고, 호출하시는 함수의 선언부에 맞게 decoding을 해서 출력하는 소스코드입니다.
추출한 input에서 substring(10)
을 하는 이유는 input 가장 앞단에는 4바이트 크기(16진수로 변환하면 8글자)의 FunctionSignature가 0x{FunctionSignature}
의 형태로 인코딩 되어있기 때문입니다.
예제에서 사용한 ABI의 원본 Contract 소스 코드는 caver-java-examples/KVstore.sol at master · klaytn/caver-java-examples · GitHub 를 보시면 될 거 같습니다.
Reference:
- caver-js: caver.abi - Klaytn Docs
- caver-java: ABI - core 1.6.4-rc.2-android javadoc