컨트랙트 주소 : 0xd8f44fb168931305acc68cd8181b626a92639ec2
컨트랙트 디플로이 주소 : 0xa437ddacf59630d4506fa2bc4ea5f4b2ea500f9cb49f6cf32fcbc683b3f22c26
이 다음 단계에서 심사를 위해 constructor 인수를 추출할 필요가 있는 것 같습니다.
이를 위해서는 어떻게 해야 하는지 궁금합니다.
컨트랙트 디플로이 때 constructor 실행이 되기 때문에. 토큰 컨트랙트 주소의 컨트랙트 코드 값과 컨트랙트 디플로이의 트랜잭션 인풋값을 비교하여 끝에 추가로 된 값이 constructor의 16진 인코딩 된 값이라 이해했습니다. 하지만, 제가 생각했던 데이터를 찾을 수 없었습니다. 제가 무엇을 잘못하고 있는 것일까요.
클레이튼 스코프에는 없지만, 클레이튼 파인더에서는 토큰 등록을 위한 제출 폼에서 ABI로 인코딩된 생성자 인수를 요구합니다.
아래 내용은 제출 폼에 적힌 내용입니다.
“ABI로 인코딩된 생성자 인수
컨트랙트에 생성자 인수가 필요한 경우 ABI 16진수 인코딩 형식으로 ABI 인코딩 생성자 인수 필드에 추가합니다. 생성자 인수는 Solidity에 의해 컴파일될 때 계약 소스 바이트코드의 END에 추가됩니다. 이러한 인수를 찾는 쉬운 방법은 트랜잭션 세부 정보의 입력 데이터를 계약 소스 바이트코드와 비교하는 것입니다.
견본
000000000000000000000000000006595656b93ce14834f0d22b7bbda4382d5ab51000000000000000000000000000000000000000000000000d8d726b7177a8000”
네, 이해하신 부분이 맞습니다. abi-encoded constructor argument는, Remix로 컴파일 후 얻은 Bytecode와, klaytnfinder의 input data - Original value에서 찾을 수 있는 바이트 코드의 차이나는 부분입니다.
만약 HashEx로 설정한 constructor의 argument 값 및 타입이 모두 정확하다면, 사진상 첨부하신 Encoded data가 윗 차이나는 부분과 동일해야합니다.
++ 클레이튼 스코프에 컨트랙트 코드가 등록되어있어 확인해보니, consturctor의 argument를 넘겨주는 것이 아니라, constructor 내에서 하드코딩으로 값이 설정되어 있네요. 이 경우 argument가 아니기 때문에 둘 차이가 없는 것이 정상입니다.
아니요, 해당 부분은 optional 입니다. (constructor argument가 없을 수 있기 때문입니다.) 만약 이미 디플로이 된 컨트랙트를 계속 사용하실 예정이고 등록하시고 싶으시다면, abi-encoded constructor argument 부분은 빼고 제출하시면 될 것 같습니다.