스마트 계약은 이더리움 네트워크에서 실행되는 프로그램입니다. 이는 종이 계약을 대체하도록 설계되었으며 자체 실행됩니다. 즉, 해당 코드에는 당사자가 서로 상호 작용하기로 동의하는 일련의 규칙이 포함되어 있습니다. 스마트 계약은 중개인의 서비스를 피하면서 투명하고 갈등 없는 방식으로 돈, 재산, 주식 또는 가치 있는 모든 것을 교환하는 데 도움이 될 수 있습니다.
스마트 계약 감사가 필요한 이유는 무엇입니까?
스마트 계약은 까다롭습니다. 코드가 잘못되면 돈을 잃을 수 있습니다. 스마트 계약에는 구제금융이 없으며, 악용이 있는 경우 악용됩니다.
에이 스마트 계약 감사 보안 취약성, 의도한 기능 및 의도한 기능과의 편차를 결정하기 위해 스마트 계약의 코드베이스 및 시스템 아키텍처를 독립적으로 검토합니다. 타사 보안 전문가. 이 프로세스는 스마트 계약이 메인넷에 배포되기 전에 모든 개발자가 권장합니다.
모든 스마트 계약 감사의 주요 목표는 취약성, 경고 및 설정된 보안 사양 준수 여부를 평가하고 코드에 추가 보안 계층을 추가하는 것입니다. 스마트 계약은 불변이므로 스마트 계약이 메인 네트워크에 배포되기 전에 가능한 모든 보안 약점을 식별하는 것이 매우 중요합니다. 결과적으로 많은 프로젝트가 스마트 계약 코드의 버그로 어려움을 겪고 있으며, 그 중 일부는 블록체인에 배포하기 전에 쉽게 발견할 수 있었습니다.
스마트 계약이 상업적 계약으로 채택되기 전에 안전하고 신뢰할 수 있으며 검증되었는지 확인하기 위해 감사가 수행됩니다. 감사에 투자하는 것은 프로젝트의 미래를 보호하는 현명한 방법입니다.
스마트 계약 공격 유형:
- 재진입: 재진입 공격은 공격자가 취약한 스마트 계약으로 인해 특정 함수를 여러 번 호출하여 함수 내부의 코드가 반복적으로 실행되도록 하는 소프트웨어 버그입니다.
- 타임스탬프 의존성: 타임스탬프 의존성은 트랜잭션이 전송되고 채굴되는 날짜와 시간에 의해 계약이 영향을 받을 수 있음을 의미합니다. 이는 금융 관련 거래에서 항상 문제가 되며, 다른 계약에 버그가 발생할 수도 있습니다.
- 가스 제한 및 루프: 무한 루프를 방지하기 위해 사용할 수 있는 가스 계약 트랜잭션의 양을 제한합니다.
- 프론트 러닝(Front Running): 프론트 러닝은 다가오는 트랜잭션에 대한 특권 정보를 가진 채굴자가 멤풀에서 보류 중인 트랜잭션보다 먼저 해당 트랜잭션을 실행하도록 선택하는 스마트 계약 공격입니다. 그렇게 함으로써 그는 다른 사람이 그렇게 할 기회를 갖기 전에 수익성 있는 거래를 실행함으로써 이익을 얻을 수 있습니다.
- 산술 문제: 스마트 계약의 산술 문제는 자금을 훔치는 데 악용될 수 있는 프로그래밍 실수입니다.
- 오버플로우 및 언더플로우: 오버플로우 및 언더플로우 공격. 이러한 공격은 본질적으로 스마트 계약이 피연산자를 부호 없는 정수로 캐스팅할 때 발생하며, 이는 부호 있는 값과 다른 방식으로 동작합니다. 첫 번째 공격은 연산자가 unsigned로 캐스팅되었는지 여부를 탐지하는 것입니다.
스마트 계약 감사의 이점:
- 시스템 오류나 악용으로 이어질 수 있는 버그와 취약점을 탐지합니다.
- 해커나 경쟁자가 악용할 수 있는 허점을 탐지합니다.
- 소프트웨어 버그보다 훨씬 심각한 재정적 손실과 평판 손실을 보장합니다.
- 문서를 검증하고, 정보를 제출하고, 코드를 실행하여 계약을 실행할 수 있습니다.
스마트 계약 감사 단계:
- 요구 사항 수집
- 코드 검토
- 자동화된 분석.
- 수동 분석/기능 분석.
- 알려진 취약점 분석.
- 초기 감사 보고서.
- 코드 수정.
- 최종 감사 보고서.
스마트 계약 테스트 프로세스:
- 자동화된 테스트: 계약 감사에는 단순히 외부 도구를 실행하는 것 이상이 포함되어야 하며 자동화된 테스트는 보다 철저한 감사를 보장합니다.
- 수동 테스트: 감사 과정에서 전문 감사자는 계약 감사 도구로 코드를 검증하는 것만으로는 만족할 수 없습니다. 잠재적으로 놓칠 수 있는 문제가 있는지 확인하려면 수동 테스트 단계가 필요합니다.
- 가스 테스트: 좋은 스마트 계약 감사에는 가스 테스트가 포함되어야 합니다. 가스 테스트는 Solidity 또는 EVM의 취약성을 해결하려고 시도하지 않고 스마트 계약의 보안을 테스트하도록 설계되었습니다.
- 퍼징 테스트: 퍼징 테스트는 스마트 계약을 감사하는 데 널리 사용되는 방법입니다. 퍼즈 테스트(Fuzz Testing)는 준무작위 데이터 입력(퍼즈)을 사용하여 애플리케이션이나 컴퓨터 시스템을 테스트하는 기술입니다.
심각도 수준은 다음을 기준으로 결정됩니다.
- 낮은 심각도
- 중간 심각도
- 심각도 높음
- 심각한 심각도
스마트 계약 감사가 필요한 프로젝트 유형:
- 토큰 계약/크라우드세일
- DeFi 프로젝트
- 지갑과 Dapp
스마트 계약 감사 비용은 얼마입니까?
스마트 계약 감사 비용 – 코드가 실제로 스마트 계약인지 아니면 그 위에서 실행되는 애플리케이션인지 등 코드 복잡성에 따라 다릅니다. 애플리케이션과 스마트 계약 간의 인터페이스가 표준화되었는지 여부.