[질문] 클레이튼에서 Abi encoded value를 찾는 법

안녕하세요! 저희가 토큰 발행을 하고, 토큰 verification을 위해 ABI encoded value를 확인하고 싶은데 어떻게 진행해야 할까요?

이더리움에서 했던 것 처럼, 스마트 컨트랙트의 Detail에서 ABI를 복사해 ABI Encoding Service Online for Solidity Smart Contracts by HashEx 여기에 붙여봐도 ABI encoded Value 확보가 안되고… (Parse를 눌러도 반응이 없더군요)

ABI-Encoded Constructor Arguments - Blockscout 위의 링크에서 안내하는 것에 따라 진행해 보려 하였으나, 관련 정보의 확인이 어렵습니다. (토큰을 생성했던 Tx의 Raw ABI code가 어디있는지 확인이 안되네요. Contract byte code는 Klaytn IDE에 토큰 배포용 코드에 있는 detail에서 찾아 비교해보려고 하고 있습니다.)

어떻게 ABI encoded Value를 확인할 수 있는지 좀 상세한 설명이 필요합니다 ㅜㅜ

안녕하세요, 클레이튼 포럼에 질문을 올려주셔셔 감사드립니다.

컨트랙트의 ABI를 어떻게 구할 수 있는지 문의주셨는데요, 기본적으로는 solidity source code가 필요합니다.

토큰 발행을 어떻게 하셨는지요? caver의 kip7을 이용해 발행하셨다면 caver에서 abi를 가져오시면 될 것 같습니다.

만약 solidity code를 가지고 토큰을 발행하신거라면, Klaytn IDE을 이용하시는 게 가장 쉬울 것 같습니다. 컴파일을 성공하시고 “Details” 버튼을 누르시면 ABI를 확인하실 수 있습니다.

감사합니다.

안녕하세요! Klaytn IDE를 활용했고, Details에서 ABI는 이미 알고 있습니다. 다만, ABI encoded Value는 좀 달라서요. 이더스캔에 등록할때 ABI encoded constructor가 필요한 것 처럼 Klaytn쪽에서도 Varify를 위해 ABI encoded constructor를 요구하고 있는데… (형태는 보통 이렇게 나오는 것으로 알고 있습니다. : 00000000000000000000000006595656b93ce14834f0d22b7bbda4382d5ab51000000000000000000000000000000000000000000000000d8d726b7177a8000)

Ozys 측에서 아래의 이미지를 참고하라고 줬고, 그에 따라 진행해 보려했으나 일단 RAW ABI CODE와 CONTRACT Byte CODE가 어떤 것인지 확인이 안되서 진도가 나가지를 않네요 ㅜㅜ

좀 더 상세하게 설명하면,

  1. Ozys측에서 아래와 같이 안내를 해주었습니다.

“토큰 Whitelisting을 위한 ABI encoded constructor 의 경우, 클레이튼은 이더리움과 동일한 EVM을 이용하기 때문에 아래의 문서에서 해당 값을 찾으실 수 있습니다. 참고 부탁드립니다.
https://docs.blockscout.com/for-users/smart-contract-interaction/abi-encoded-constructor-arguments

  1. 이에 저도 이 안내에 따라 저희 Klaytn Scope에서 contract creation TX (0x8ed08dbe38042284a106985ef02f30017eda54e61d1354ecca66d9e99620a2d6)로 들어가 RAW Input CODE를 확인하려 하였으나, RAW Input CODE라는 항목이 따로 없고… Raw Input Data로 0xa0712d680000000000000000000000000000000000000000e22ea493b30310a770000000 만 확인하였습니다.

  2. Klaytn IDE 컨트랙트 배포 코드 Detail에서 Byte Code를 확인했는데… Ozys측에서 제공한 위의 링크나 이미지에서 보여주듯이 Byte Code와 Raw input data는 비교할 수 있지가 않았습니다.

어떻게 해야 ABI encoded Constructor를 확인할 수 있을까요?

안녕하세요.

알려주신 contract creation Tx(0x8ed08dbe38042284a106985ef02f30017eda54e61d1354ecca66d9e99620a2d6)는 Contract의 함수를 실행시키는 Tx로 보여집니다.

이 EOA의 정보를 보니, 이 LegacyTransaction Type의 Transaction정보가 Contract를 생성하는 Tx인 것 같은데, 이 Tx의 raw input data를 확인해서 비교해보시면 될 것 같습니다.

감사합니다.

안녕하세요, 실제 contract creation TX는 아래 tx 같습니다.

제공해 주신 트랜잭션은 mint하는 트랜잭션으로 보여집니다.

위 링크의 input data를 가져가시면 될 것 같습니다.

ABI encoded constructor는 contract byte code와 그 뒤에 생성자에 필요한 파라미터가 추가된 byte data를 의미합니다. 이것은 배포할 때 사용됩니다. 따라서, 배포 결과값을 이용하셔도 되고, 코드를 통해 얻고 싶으시다면 아래 함수를 참고 부탁드리겠습니다.

https://docs.klaytn.com/bapp/sdk/caver-js/api-references/caver.abi#encodecontractdeploy

감사합니다.

안녕하세요! 답변 감사합니다! 잘 알려주신 덕분에 Klaytn Scope에 White Listing은 완료하였습니다.
다시 한 번 감사드립니다!

1 Like