Mythril은 ConsenSys의 smart contract의 보함 결함을 점검해주는 툴이다. analyze를 통해 분석을 하려고 할 때 openzeppelin 등을 사용한 컨트랙트의 경우 solc의 import 에러를 겪을 수 있다.
$ myth analyze contracts/dasomoli.sol
mythril.interfaces.cli [ERROR]: Solc experienced a fatal error.
ParserError: Source "@openzeppelin/contracts/token/ERC20/IERC20.sol" not found: File not found. Searched the following locations: "".
--> contracts/dasomoli.sol:6:1:
|
6 | import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
solc를 command line에서 사용할 때는 아래와 같이 remap을 해주면 된다.
solc @openzeppelin/=$(pwd)/node_modules/@openzeppelin/ contracts/dasomoli.sol
Compiler run successful, no output requested.
myth 사용 시에는 이를 json 파일을 만들어 --solc-json
옵션을 통해 줄 수 있다.
- solc.json
{
"remappings": [ "@openzeppelin/=/Users/dasomoli/src/smartcontract/node_modules/@openzeppelin/" ]
}
$ myth analyze --solc-json solc.json contracts/dasomoli.sol
The analysis was completed successfully. No issues were detected.
참고