읽기 시간: 4 분
이 가이드는 당신을 괴롭히는 고약한 버그와 이를 수정하는 도구를 찾는 데 도움이 될 수 있습니다.
디버깅은 모든 소프트웨어 개발 주기에서 매우 중요합니다. 인간은 항상 오류를 범합니다. 이것이 우리가 타의 추종을 불허하는 이유입니다. 우리는 오류를 만들고 오류로부터 배웁니다. 디버깅은 코드가 지연되는 위치를 파악하고 수정하고 반복되지 않도록 해당 오류에 대해 학습하는 프로세스입니다.
스마트 계약 개발은 블록체인 애플리케이션 구축에 매우 중요합니다. 그러나 다른 소프트웨어 개발 주기와 마찬가지로 스마트 계약 디버깅은 때때로 어려울 수 있으며 여기에서 우리는 종종 막대한 금액을 다루기 때문에 아무 것도 운에 맡길 수 없습니다. 우리는 스마트 계약 작성과 디버깅에 완벽해야 합니다. 이것이 바로 여러분이 최고로부터 디버깅에 대해 배울 수 있도록 이 블로그를 마련한 이유입니다.
문제를 해결하기 전에 문제를 알아야 하므로 스마트 계약 개발에서 다양한 유형의 버그를 식별하는 것부터 시작하겠습니다.
일반적인 오류
이 섹션에서는 스마트 계약 개발자가 정기적으로 접하는 다양한 유형의 버그를 살펴봅니다.
- 구문 오류:– 이 오류는 수정하기 쉬운 오류입니다. 이것은 세미콜론 누락과 같이 개발자가 컴퓨터가 코드를 이해하지 못하도록 하는 코드 실수를 할 때 발생합니다.
- 논리적 오류:- 이러한 유형의 오류는 때때로 찾기 어려울 수 있습니다. 실행을 막지는 않지만 프로그램의 기능이 변경됩니다. 이 프로그램은 한 계정에서 다른 계정으로 돈을 보낼 때 잘못된 주소로 돈을 전송하는 스마트 계약처럼 예기치 않게 작동합니다.
- 런타임 오류:- 이러한 오류는 예측하기 어렵습니다. 그들은 예상치 못한 시간과 예상치 못한 장소에 온다. 이는 스마트 계약 실행 중에 발생하며 비효율적인 예외 처리로 인해 발생합니다. 예를 들어 계약이 예기치 않은 입력을 처리하지 못하거나 기본 블록체인에서 금지된 작업을 수행하려는 시도가 발생할 수 있습니다. 예를 들어 계약이 허용된 매개변수보다 더 많은 돈을 이체하려고 합니다.
- 되돌린 실행 오류:- 사용자가 스마트 계약의 논리에 위배되는 불법적인 요청을 한 후 요청이 취소되고 되돌려지는 경우에 발생합니다. 이는 때때로 스마트 계약이 거래를 처리하기 위해 특정 요구 사항을 충족해야 하기 때문에 발생합니다. 그래도 사용자가 요구사항을 이행하지 않은 채 거래를 진행하면 거래가 이월되지 않고 되돌려진다. 예를 들어 사용자가 $100를 이체하려고 하지만 잔액이 $50입니다.
- 스택 오버플로:- 작업 실행을 위한 리소스에는 가스 요금이 부과됩니다. 기능이 무거울수록 비용이 많이 듭니다. 코딩의 무거운 메커니즘 중 일부는 루프와
재귀 호출<!– wp:paragraph –>재귀 호출은 루프에서 자신을 참조하고 반복해서 호출할 수 있는 조건입니다. 재귀 함수는 기본 케이스(if)와 귀납 케이스(else)를 사용합니다. 재진입 공격은 코드의 재귀 호출을 악용하여 수행됩니다. <br/><!– /wp:문단 –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>재귀 호출. 스택 오버플로는 다음과 관련이 있습니다.
재귀 호출<!– wp:paragraph –>재귀 호출은 루프에서 자신을 참조하고 반복해서 호출할 수 있는 조건입니다. 재귀 함수는 기본 케이스(if)와 귀납 케이스(else)를 사용합니다. 재진입 공격은 코드의 재귀 호출을 악용하여 수행됩니다. <br/><!– /wp:문단 –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>재귀 호출.
재귀 호출<!– wp:paragraph –>재귀 호출은 루프에서 자신을 참조하고 반복해서 호출할 수 있는 조건입니다. 재귀 함수는 기본 케이스(if)와 귀납 케이스(else)를 사용합니다. 재진입 공격은 코드의 재귀 호출을 악용하여 수행됩니다. <br/><!– /wp:문단 –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>재귀 호출은 입력이 다른 동일한 함수 내에서 함수를 호출하는 방법입니다. 반복되는 기능을 사탕수수 주스 기계로 생각할 수 있습니다. 기계는 기능으로 작동하고 사탕수수는 입력으로 작동합니다. 기계에서 사탕수수가 나올 때마다 함수 호출을 의미합니다. 한번 지나면 사탕수수가 다시 기계 밑으로 들어가고 이 과정이 계속 반복된다. 이것이 바로 재발입니다. 그러나 우리는 가스 비용과 EVM 리소스를 줄이고 싶기 때문에 이더리움은 반복 호출을 최대 1024회로 제한합니다. 함수를 1025번째 호출하면 스택 오버플로가 발생합니다.
- 점프 오류:- 존재하지 않는 함수를 호출하거나 어셈블리 언어를 사용하여 잘못된 메모리를 가리키면 오류가 발생합니다. 이는 다른 계약의 함수를 호출했지만 해당 함수가 존재하지 않는 경우에도 발생할 수 있습니다. 이러한 유형의 오류를 JUMP 오류라고 합니다.
이들은 개발자가 겪는 몇 가지 일반적인 스마트 계약 오류였습니다. 때때로 오류를 감지하고 이해하기 어려울 수 있습니다. 오류를 찾고 수정하기 위해 다양한 도구의 도움을 받습니다. 다음 섹션에서 하나씩 살펴보겠습니다.
XNUMX가지 유용한 디버깅 도구
이 섹션에서는 전 세계에서 가장 숙련된 개발자가 버그를 식별하고 해결하는 데 많이 사용하는 도구에 대해 알아봅니다. 갑시다.
안전모
이 도구는 다양한 매개변수에서 스마트 계약을 테스트하는 데 널리 사용되고 승인됩니다. Ethereum을 위한 오픈 소스 개발 환경을 제공합니다. 여기에는 스마트 계약을 개발, 테스트 및 배포하기 위한 도구가 포함됩니다. 내장된 디버거는 전 세계의 많은 개발자에게 도움이 됩니다. 이는 테스트 단계에서도 중요한 역할을 합니다.
트뤼플
이것은 이더리움을 위한 대중적인 개발 프레임워크입니다. Hardhat과 마찬가지로 스마트 계약을 개발, 테스트 및 배포하기 위한 도구가 포함되어 있으며 트러플 디버거, 개발자가 테스트 단계에서 원활한 개발 경험을 할 수 있도록 도와줍니다.
리믹스
이것은 거의 모든 개발자가 web3에서 처음 여정을 시작했을 때 접한 것입니다. 이는 견고성을 위한 온라인 코드 편집기이므로 개발을 시작하기 위해 오프라인 설치가 필요하지 않습니다. 내장된 디버깅 기능을 통해 개발자는 코드를 스캔하고 변수 문제를 검사할 수 있습니다. 그리고 이 모든 것이 온라인에서 이루어지므로 오프라인 도구가 필요하지 않습니다.
Etherscan
이것은 이더리움을 위한 널리 신뢰되고 인기 있는 블록 탐색기입니다. 이를 통해 개발자는 Ethereum 블록체인에 배포된 스마트 계약을 검사하고 디버깅할 수 있습니다. 이를 사용하여 모든 주소 또는 계약의 트랜잭션 및 활동을 추적할 수 있습니다. 이는 스마트 계약이 온체인 문제에 직면한 경우 문제가 있는 위치를 식별하는 데 도움이 됩니다.
결론
스마트 컨트랙트 디버깅은 어렵고 때로는 답답하기도 하지만 보안 및 테스트와 관련된 중요한 단계입니다. 여기에서 취약성이 해커에게 나타날 가능성이 가장 높고 프로토콜이 완전히 실패할 수 있습니다. 이러한 상황에서 벗어나려면 감사를 받는 것이 좋습니다.
QuillAudits는 오랫동안 이 분야에 종사해 왔으며 가능한 모든 취약성을 처리하고 프로토콜을 보호하는 데 도움을 줄 수 있는 전문가 팀을 보유하고 있습니다. 테스트, 중요성 및 디버깅과의 관계에 대해서는 모든 측면을 이해하는 데 도움이 되는 자세한 블로그를 읽으십시오. https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. 우리 웹 사이트를 방문하여 프로젝트 감사를 받으십시오!
12 조회수
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- 소개
- 계정
- 가로질러
- 활동
- 주소
- 후
- 반대
- All
- 수
- 항상
- 양
- 및
- 다른
- 어플리케이션
- 약
- 양상
- 조립
- 공격
- 시도
- 감사
- 잔액
- 기지
- 때문에
- BEST
- 블록
- blockchain
- 블록 체인 애플리케이션
- 블로그
- 곤충
- 버그
- 건물
- 내장
- 내장
- 전화
- 라는
- 통화
- 나르다
- 케이스
- 어떤
- 도전
- 기회
- 상황
- 암호
- 코딩
- 왔다
- 공통의
- 완전한
- 컴퓨터
- 조건
- 계약
- 계약
- 비용
- 비용
- 결정적인
- 절단
- 주기
- 거래
- 배포
- 배치
- 상세한
- 개발자
- 개발자
- 개발
- 개발
- 다른
- 어려운
- ...동안
- 마다
- 편집자
- 환경
- 오류
- 오류
- 이더리움
- 에테 리움 블록 체인
- 조차
- 모든
- EVM
- 예
- 예외
- 실행
- 실행
- 경험
- 경험
- 전문가
- 탐험
- 탐색기
- 마주보고
- 실패
- 고장
- 특색
- 보수
- Find
- 먼저,
- 수정
- 앞으로
- 뼈대
- 에
- 좌절
- 기능
- 기능
- 가스
- 얻을
- Go
- 간다
- 안내
- 해커
- 핸들
- 처리
- 발생
- 발생
- 하드
- 무겁게
- 무거운
- 도움
- 도움이
- 도움이
- 여기에서 지금 확인해 보세요.
- 고도로
- HTTPS
- 거대한
- 인간
- 확인
- 식별
- 중요성
- in
- 포함
- 비효율적
- 입력
- 발행물
- 문제
- IT
- 그 자체
- 여행
- 도약
- 알아
- 보온재
- 언어
- 리드
- 배우다
- 배우기
- 휴가
- 수
- 아마도
- 제한
- 긴
- 장기
- 기계
- 확인
- 제작
- .
- 방법
- 메모리
- 방법
- 누락
- 잘못
- 돈
- 배우기
- 가장
- 필요
- 다음 것
- 오프라인
- 온 체인
- ONE
- 온라인
- 오픈 소스
- 조작
- 행정부
- 기타
- 매개 변수
- 매개 변수
- 완전한
- 상
- 장소
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 포인트 적립
- 인기 문서
- 가능한
- 예측
- 제시
- 예방
- 수입
- 방법
- 프로그램
- 프로젝트
- 프로토콜
- 제공
- 퀼해시
- 읽기
- 회귀
- 반복
- 재귀
- 에 관한
- 규칙적으로
- 관련
- 관계
- 반복
- 의뢰
- 필요
- 요구조건 니즈
- 제품 자료
- 결과
- 직위별
- 달리기
- 같은
- 찜하기
- 주사
- 섹션
- 안전해야합니다.
- 보안
- 전송
- 스마트 한
- 똑똑한 계약
- 스마트 계약
- So
- 소프트웨어
- 소프트웨어 개발
- solidity
- 일부
- 스택
- 단계
- 시작
- 아직도
- 이러한
- 받아
- 팀
- 지원
- XNUMXD덴탈의
- 세계
- 그들의
- 그들 자신
- 을 통하여
- 시간
- 시대
- 에
- 너무
- 수단
- 검색을
- 선로
- 거래
- 거래 내역
- 이전
- 전송
- 문제
- 신뢰할 수있는
- 유형
- 아래에
- 밑에 있는
- 이해
- 이해
- 예기치 않은
- us
- 사용
- 사용자
- 여러
- 취약점
- 취약점
- Web3
- 웹 사이트
- 뭐
- 어느
- 크게
- 의지
- 이내
- 없이
- 세계
- 전세계적인
- 겠지
- 쓰기
- 자신의
- 너의
- 당신 자신
- 제퍼 넷