저자는 최근 스마트 계약과 관련된 실험을 하고 있으며, Mythril 도구를 사용하여 스마트 계약을 감지하고 이를 사용하는 과정에서 일련의 문제에 직면했기 때문에 다음은 모든 사람을 위한 몇 가지 제안입니다.
Mythril이 스마트 계약을 감지했을 때 계약 결함의 분류는 다음과 같습니다.
SWC ID: 116----------취약점의 분류 번호를 나타냅니다.
심각도: 낮음----------취약점의 심각도를 나타냅니다.
계약: 룰렛----------감지된 계약의 이름을 나타냅니다.
함수 이름: fallback----------취약점을 발견한 함수의 이름을 나타냅니다.
Pc 주소: 70----------프로그램 카운터, 프로그램 카운터의 약어를 나타냅니다.
1. 미스릴의 검출방법
Myhtril은 두 가지 형태로 스마트 컨트랙트를 탐지하는데, 하나는 스마트 컨트랙트 샘플의 소스 파일 .sol을 기반으로 탐지하고, 다른 하나는 스마트 컨트랙트의 주소를 통해 탐지한다.
1. .sol에 따라 감지
$ 신화 분석 <솔리디티 파일>
2. 주소에 의한 탐지
$ 신화 분석 -a <계약 주소>
미스릴을 도커로 다운받아보니 첫 번째 경우를 통해서 는 감지가 가능한데 두 번째 경우를 통해서는 감지가 안 되는 것을 확인했습니다 . 패키지, 작성자가 마침내 포기했습니다. 시도해 볼 수 있습니다. 다운로드가 성공하면 다음 명령문을 전달할 수 있습니다.
신화 --버전
mythril이 pip3를 통해 성공적으로 다운로드되었는지 감지하려면(참고: docker를 통해 다운로드하는 경우 여기에서 mythril 버전을 확인할 때 실패로 표시되지만 첫 번째 방법을 사용하여 계약을 감지할 수 있습니다(매우 터무니없다! 충격적입니다!))
또 다른 가능성은 벽을 통과해야 하는데 작성자가 시도했지만 작동하지 않는다는 것입니다. 시도해 볼 수도 있습니다.
2. .sol을 통해 계약 속도를 감지하는 것이 너무 느립니다.
다음은 Mythril을 통해 계약을 감지하기 위한 몇 가지 보충 설명입니다.
일반적으로 탐지 진술:
sudo docker run -v $(pwd):/home/test 신화/신화 분석 /home/test/test.sol
보충 설명:
sudo 도커 실행 -v $(pwd):/home/test 신화/신화 분석 /home/test/test.sol --solv 0.4.25 --solver-timeout 60 --execution-timeout 60 -o text -t 3
안에:
- solv는 지정된 견고성 컴파일 버전입니다.
- 솔버 타임아웃 솔리디티 버전 다운로드 타임아웃
- 실행 시간 초과, 실행 시간 초과
- o 출력 형식, 선택적 text/markdown/json/jsonv2
- t 트랜잭션 수
첫 번째 방법 즉 소스 file.sol 방법을 사용하여 탐지하면 결과를 얻는 데 2-4시간이 걸릴 수 있습니다. 이때 실행 시간 제한 방법을 사용할 수 있습니다. 예를 들면 다음과 같습니다 .
sudo docker run -v $(pwd):/home/test mythril/myth analyze --execution-timeout 60 /home/test/test.sol
60초 이내의 시간을 제어하십시오.
이러한 방식으로 감지 효율성이 크게 향상됩니다.
3. 네트워크가 불안정하다
컨트랙트 테스트 시 안정적인 네트워크 환경 유지가 필요하며, 네트워크 불안정성은 탐지에 큰 영향을 미치며 다음과 같은 상황이 발생할 수 있습니다.