Import "@klaytn/contracts/token/KIP7/KIP7Token.sol"; Not found 에러

여기에 코드를 공유해주시거나 어려우시다면 dm으로 주시면 구체적인 대화가 될 것 같습니다.
그것도 어려우시다면, 에러가 나는 작은 코드 예시를 작성해서 공유해주시면 좋을것같습니다.

위에 공유해주신 에러내용을 보면 import를 하는 패턴이 여러가지로 보여집니다.
예를들면 특정 파일은 local에서 import하고 특정파일은 원격에서 import하는 등 이렇게되면 서로 버전들이 안맞아서 에러가 생길 수 있습니다.

solidity는 일반 프로그래밍언어와 다르게 버전이 아주 다양합니다. 이로인해서 개발하는데 많은 불편함을 초래하기도 하지만 이부분은 EVM환경의 특성이라고도 볼수있을거 같습니다. nodejs의 경우에도 버전으로인한 문제가 많이 발생하는것처럼 동일하게 생각해 주시면 좋을 것 같습니다.

1개의 좋아요
  1. 에러 메시지를 첨부주셔야 klaytn-contracts 상의 문제인지, 유저분의 환경설정 혹은 remix, openzepplin 등의 문제인지 알 수 있습니다.

  2. “오픈제플린에 올라온 컨트렉트 코드는 과거 솔리디티 버전과 호환되지 않도록 변경하는 일이 있다는 걸까요” → 오픈제플린에 올라온 Ownable.sol 코드의 pragma 버전은 지속적으로 업데이트되어왔습니다. 3.x, 4.x 버전의 Ownable.sol을 사용할 시에는 0.5.x 버전으로 컴파일 안됩니다.

  3. “클레이튼 라이브러리가 이전 버전에 사용하는게 동일하게 임포트 할 수 있다면 생길 수 없는 문제라 생각됩니다.” → 질문이 정확하게 이해가 안됩니다. 예상한게 맞다면, 참고로 openzepplin-contract과 klaytn-contract는 상호 참조하는 부분이 없기 때문에, 라이브러리 내의 임포트 문제는 아닐 것으로 사료됩니다.

  4. 아래의 샘플 코드를 리믹스에서 돌려보았을 때 정상동작 합니다.

pragma solidity ^0.5.4;

import "@klaytn/contracts@0.9.0/token/KIP7/KIP7Token.sol";
import "@openzeppelin/contracts@2.5.0/ownership/Ownable.sol";


contract HelloWorlds is KIP7Token, Ownable {
    constructor(string memory name, string memory symbol, uint8 decimals, uint256 initialSupply) KIP7Token(name, symbol, decimals, initialSupply) public {
    }
}

네 DM으로 보내드리면 좋을 것 같은데 프로필 클릭해서 나타나는 메시지로 보내드리면 되는걸까요?

아래의 코드와 같은 상태일 때 문제가 있습니다.


// SPDX-License-Identifier: MIT
pragma solidity ^0.5.4;

import "@klaytn/contracts@0.9.0/token/KIP7/KIP7Token.sol";
import "@openzeppelin/contracts/ownership/Ownable.sol";

contract ToxicApeTokenV2 is KIP7Token, Ownable {


    constructor() KIP7Token("TOKEN_NAME", "SYMBOL", 18, uint256(400000).mul(1e18)) public {
    
    }

}

발생된 에러도 공유드립니다.

@klaytn/contracts@0.9.0/token/KIP7/KIP7Burnable.sol:3:1: ParserError: Source “@klaytn/contracts@0.9.0/token/KIP7/KIP7.sol” not found: Deferred import
import “./KIP7.sol”;
^------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Burnable.sol:4:1: ParserError: Source “@klaytn/contracts@0.9.0/introspection/KIP13.sol” not found: Deferred import
import “…/…/introspection/KIP13.sol”;
^-------------------------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Metadata.sol:3:1: ParserError: Source “@klaytn/contracts@0.9.0/token/KIP7/IKIP7.sol” not found: Deferred import
import “./IKIP7.sol”;
^-------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Mintable.sol:3:1: ParserError: Source “@klaytn/contracts@0.9.0/token/KIP7/KIP7.sol” not found: Deferred import
import “./KIP7.sol”;
^------------------^

@openzeppelin/contracts/GSN/Context.sol:3: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.6.0 <0.8.0;
^-----------------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Pausable.sol:5:1: ParserError: Source “@klaytn/contracts@0.9.0/introspection/KIP13.sol” not found: Deferred import
import “…/…/introspection/KIP13.sol”;
^-------------------------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Pausable.sol:4:1: ParserError: Source “@klaytn/contracts@0.9.0/lifecycle/Pausable.sol” not found: Deferred import
import “…/…/lifecycle/Pausable.sol”;
^------------------------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Mintable.sol:5:1: ParserError: Source “@klaytn/contracts@0.9.0/introspection/KIP13.sol” not found: Deferred import
import “…/…/introspection/KIP13.sol”;
^-------------------------------------^

@klaytn/contracts@0.9.0/token/KIP7/KIP7Pausable.sol:3:1: ParserError: Source “@klaytn/contracts@0.9.0/token/KIP7/KIP7.sol” not found: Deferred import
import “./KIP7.sol”;
^------------------^