링크를 확인해서 코드를 조금 수정해봤는데도 정확히 해결이 되지 않아 그런데 어떤 식으로 해결이 될 수 있는지 문의드려도 될까요? 코드를 그대로 유지하면서 이미 배포된 컨트렉트에 접근해야 버그가 발생하지 않을 것 같은데 위와 같이 컨스트럭트를 붙이거나 하면 작동이 될까 의문입니다.
답변 감사합니다. 위에 알려주신 방향으로 진행해보니 버전 차이가 있어서 작동이 안되는 것 같습니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.5.4;
를 사용하고 있는데 해당 코드로 수정했을 때 다음의 에러가 리턴됩니다.
@klaytn/contracts/KIP/token/KIP7/IKIP7.sol:6:1: ParserError: Source file requires different compiler version (current compiler is 0.5.17+commit.d19bba13.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity ^0.8.0;
^---------------------^
pragma solidity ^0.8.0; 코드를 적용하면 이미 작성된 컨트렉트의 다른 코드와 충돌하게 됩니다.
어떻게 해결이 가능할까요?
안녕하세요. 제안 주신 것처럼 solidity 버전 업그레이드를 진행해, 0.8.0로 하게 되는 경우에는
ParserError: Expected a state variable declaration. If you intended this as a fallback function or a function to handle plain ether transactions, use the "fallback" keyword or the "receive" keyword instead.
--> contracts/1_Storage.sol:62:33:
|
62 | function() external payable {}
| ^
가 발생하고, 해당 부분을 수정하면 다른 에러가 발생해 배포된 컨트렉트 접근 자체가 안되는 것 같습니다. 과거 버전의
추가로 확인해보니 오픈제플린에 대한 건 컴파일 에러 11개 중 하나고, 제안주신 KIP17Token에서 발생한 것이 10개인데, 컨트렉트에서 참조하는 다른 소스에 대해서는 존재하지 않아 생기는 문제로 보이네요. 클레이튼 라이브러리가 이전 버전에 사용하는게 동일하게 임포트 할 수 있다면 생길 수 없는 문제라 생각됩니다.