이더 스켄 토큰 정보를 업데이트 시 솔리디티 파일 오류가 발생하는 경우...
안녕하세요.
토큰을 remix.ethereum.org 에서 컴파일 후 메타 마스크를 통하여 토큰을 발행하였습니다.
이 후 이더스켄에서 토큰 정보를 업데이트 할려고 리믹스에서 사용한 솔리디티 소스를 복사 붙여 넣기 하여 실행을 하였는데 오류 발생하고 있습니다.
리믹스에서는 컴파일 되어 발행까지 하였는데 이더스켄에서 오류가..ㅠㅠ
혹시 주석이 문제 인지하여 다 제거 하고 리믹스에서 컴파일 검증 후에 해보았으나 동일합니다..ㅠㅠ
이러한 경우 어떻게 하면 좋을런지요?
고수님의 답변 절실히 기다립니다..ㅠㅠ
감사합니다.
오류----
Compiler debug log:
Error! Unable to generate Contract ByteCode and ABI
But we were unable to locate a matching bytecode (errcode2)
안녕하세요, 프로젝트 구성 환경을 몰라서 정확한 답변이 아닐 수도 있지만 저도 경험해봤던 부분이라서 조언 드립니다.
우선 https://etherscan.io/verifyContract 에서 컴파일러 버전을 선택하실 때 반드시 remix에서 컴파일할 때 사용하신 컴파일러 버전이랑 동일하게 맞춰주셔야 합니다. 만약 nightly 버전 컴파일러를 사용하셨으면,
'Un-Check to show all nightly Commits also' 를 클릭 해제하시면 nightly 버전 컴파일러도 선택하실 수 있습니다.
그리고 컴파일러 타입을 선택하실 때 보통은 Solidity (Single file)을 선택해서 진행하실 텐데 저 같은 경우에는 컨트랙트 프로젝트에 solidity 파일이 한 개가 아니었습니다. (보통 import 문을 사용하니까 저처럼 여러 파일인 경우가 대부분일 겁니다.)
이 경우 모든 프로젝트 내의 .sol 파일을 하나의 파일로 모아주셔야 되어요. 수동으로 하시면 오류가 발생할 수 있으니까 https://github.com/JoinColony/solidity-steamroller 나 https://github.com/BlockCatIO/solidity-flattener 같은 flattener를 사용하시면 자동으로 one file로 묶을 수 있습니다.
참고로 이 과정의 목적은 메인넷에 배포된 컨트랙트와 검증하려는 컨트랙트의 bytecode가 동일한지 확인하려는 것이기 때문에 주석은 관계가 없습니다. 어차피 컴파일하고 나면 주석은 bytecode에 포함되지 않기 때문입니다. 검증하려는 컨트랙트가 배포하셨던 컨트랙트와 주석을 제외하고 100프로 동일한지 꼭 확인해보시기 바랍니다.