스마트 계약 테스트에서 Mythril이 직면한 몇 가지 문제 및 솔루션

저자는 최근 스마트 계약과 관련된 실험을 하고 있으며, 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. 네트워크가 불안정하다 

컨트랙트 테스트 시 안정적인 네트워크 환경 유지가 필요하며, 네트워크 불안정성은 탐지에 큰 영향을 미치며 다음과 같은 상황이 발생할 수 있습니다.

47d3993a14e04adda4c2e93cf8dfbf5b.png

추천

출처blog.csdn.net/qq_45138078/article/details/127695308