상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 솔리디티에서 'revert'는 어떻게 사용하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Solidity에서 `revert`는 스마트 계약의 실행 중에 발생할 수 있는 오류를 처리하고, 상태를 이전 상태로 되돌리는 데 사용되는 중요한 기능입니다. `revert`는 특정 조건이 충족되지 않을 때, 또는 예상치 못한 상황이 발생했을 때 계약의 실행을 중단하고, <a href='https://sangseek.com/sangseeks/모든 변/ko'>모든 변</a>경 사항을 취소하는 데 사용됩니다. 이 기능은 주로 오류 처리 및 예외 처리를 위해 사용됩니다. `revert`의 기본 사용법 `revert`는 다음과 같은 형식으로 사용됩니다: ```solidity revert("Error message"); ``` 여기서 `"Error message"`는 오류의 원인을 설명하는 문자열입니다. 이 메시지는 트랜잭션이 실패했을 때, 호출자에게 반환됩니다. 이는 디버깅을 용이하게 하고, 사용자에게 문제가 무엇인지 알리는 데 도움이 됩니다. 예제 다음은 `revert`를 사용하는 간단한 스마트 계약의 예입니다: ```solidity pragma solidity ^0.8.0; contract SimpleStorage { uint256 private storedData; function set(uint256 x) public { if (x > 100) { revert("Value must be less than or equal to 100"); } storedData = x; } function get() public view returns (uint256) { return storedData; } } ``` 위의 계약에서 `set` 함수는 입력값 `x`가 100보다 클 경우 `revert`를 호출하여 오류 메시지를 반환합니다. 이 경우, 상태는 변경되지 않고, `storedData`는 이전 값으로 유지됩니다. `require`와의 차이점 `revert`는 `require`와 유사한 기능을 수행하지만, 두 가지는 약간의 차이가 있습니다. `require`는 조건이 충족되지 않을 때 자동으로 트랜잭션을 중단하고, `revert`는 명시적으로 호출해야 합니다. `require`는 조건이 참일 때만 계속 진행하고, 거짓일 경우 `revert`를 호출하여 오류를 발생시킵니다. 예를 들어, 위의 예제를 `require`를 사용하여 작성할 수도 있습니다: ```solidity function set(uint256 x) public { require(x <= 100, "Value must be less than or equal to 100"); storedData = x; } ``` 이 경우, `require`는 조건이 충족되지 않을 때 자동으로 `revert`를 호출합니다. `assert`와의 차이점 `assert`는 또 다른 오류 처리 방법으로, 주로 코드의 불변성을 검사하는 데 사용됩니다. `assert`는 항상 참이어야 하는 조건을 검사하며, 실패할 경우 `revert`를 호출합니다. 일반적으로 `assert`는 개발자가 예상하지 못한 오류를 발견할 때 사용되며, 상태를 변경하는 함수에서는 사용하지 않는 것이 좋습니다. <a href='https://sangseek.com/sangseeks/가스 비용/ko'>가스 비용</a> `revert`가 호출되면, 해당 트랜잭션의 모든 <a href='https://sangseek.com/sangseeks/상태 변경/ko'>상태 변경</a>이 취소되고, 가스는 소비되지 않습니다. 그러나, `revert`가 호출되기 전까지 사용된 가스는 소모됩니다. 따라서, `revert`를 적절히 사용하여 불필요한 가스 소비를 방지하는 것이 중요합니다. 결론 `revert`는 Solidity에서 오류를 처리하고, 상태를 안전하게 되돌리는 데 필수적인 도구입니다. 이를 통해 스마트 계약의 안정성을 높이고, 사용자에게 명확한 오류 메시지를 제공할 수 있습니다. `require`, `assert`, `revert`의 적절한 사용은 스마트 계약의 품질을 높이는 데 중요한 요소입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기