설치
brew tap ethereum/solc
brew install solidity
solc 특정 버전 설치
solc-select install 0.7.6
solc 특정 버전 사용 (사용 전 설치되어야 한다)
solc-select use 0.7.6
brew tap ethereum/solc
brew install solidity
solc-select install 0.7.6
solc-select use 0.7.6
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
옵션을 통해 줄 수 있다.
{
"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.
참고