상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
흰우유의 농축 및 탈지 과정은 어떻게 이루어지나요?
흰우유의 건강 효능에 대한 연구 결과는?
흰우유를 소비하는 국가별 문화적 차이는?
고도비만의 생리적 문제, 8가지 사실
AI의 교육 분야에서의 가능성과 한계는?
AI의 감정 분석 기술의 적용 범위는?
AI의 핀테크 산업에서의 혁신 사례는?
위내시경을 여러 번 받는 것이 괜찮은가요?
창업대출을 받기 위한 적정 사업 규모는?
창업대출을 받을 때 고객 제안서가 필요한가요?
"다이어트약: 5가지 꿀팁으로 효과 배가시키기!"
중장년일자리의 의미: 4가지 이유로 당신의 가치를 재발견하자!
Previous
Next
수정하기 - 솔리디티에서 'require'와 'assert'의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Solidity에서 `require`와 `assert`는 모두 조건을 검사하고, 조건이 충족되지 않을 경우 트랜잭션을 실패시키는 데 사용되는 함수입니다. 그러나 이 두 함수는 사용 목적과 동작 방식에서 중요한 차이점이 있습니다. 아래에서 이 두 함수의 차이점과 각각의 <a href='https://sangseek.com/sangseeks/사용 사례/ko'>사용 사례</a>에 대해 자세히 설명하겠습니다. 1. `require` - 목적 : `require`는 주로 입력값 검증, 상태 조건 확인, 외부 호출의 성공 여부 등을 확인하는 데 사용됩니다. 예를 들어, 함수의 인자가 유효한지, 특정 조건이 충족되는지 등을 검사할 때 사용합니다. - 사용 예 : ```solidity function transfer(address to, u<a href='https://sangseek.com/sangseeks/int/ko'>int</a>256 amount) public { require(to != address(0), "Invalid address"); require(balance[msg.sender] >= amount, "Insufficient balance"); balance[msg.sender] -= amount; balance[to] += amount; } ``` - 가스 반환 : `require`가 실패하면, 해당 트랜잭션은 revert되고, 사용자가 지불한 가스의 일부가 반환됩니다. 이는 사용자가 잘못된 입력을 제공했을 때, 가스 비용을 절약할 수 있게 해줍니다. - 에러 메시지 : `require`는 실패 시 사용자 정의 에러 메시지를 제공할 수 있어, 어떤 조건이 실패했는지 쉽게 파악할 수 있습니다. 2. `assert` - 목적 : `assert`는 코드의 불변 조건을 검사하는 데 사용됩니다. 즉, 프로그램의 논리적 오류를 확인하는 데 적합합니다. 예를 들어, 상태 변수가 특정 값이어야 하거나, 함수가 호출된 후에 어떤 조건이 항상 참이어야 할 때 사용합니다. - 사용 예 : ```solidity function withdraw(uint256 amount) public { uint256 previousBalance = balance[msg.sender]; balance[msg.sender] -= amount; assert(balance[msg.sender] == previousBalance - amount); } ``` - 가스 반환 : `assert`가 실패하면, 해당 트랜잭션은 revert되고, 사용자가 지불한 가스는 반환되지 않습니다. 이는 `assert`가 코드의 심각한 오류를 나타내기 때문에, 이러한 오류가 발생했을 경우에는 가스 비용을 반환하지 않는 것이 일반적입니다. - 에러 메시지 : `assert`는 사용자 정의 에러 메시지를 제공하지 않으며, 실패 시 기본적인 오류 메시지만 반환합니다. 이는 디버깅을 어렵게 만들 수 있습니다. 요약 - 사용 목적 : - `require`: 입력값 검증 및 외부 조건 확인에 사용. - `assert`: 코드의 불변 조건 및 논리적 오류 확인에 사용. - 가스 처리 : - `require`: 실패 시 가스 일부 반환. - `assert`: 실패 시 가스 반환 없음. - 에러 메시지 : - `require`: 사용자 정의 메시지 제공 가능. - `assert`: 기본 오류 메시지만 제공. 결론 `require`와 `assert`는 Solidity에서 조건을 검사하는 데 중요한 역할을 합니다. `require`는 주로 사용자 입력이나 외부 조건을 검증하는 데 사용되며, `assert`는 코드의 논리적 오류를 확인하는 데 사용됩니다. 이 두 가지를 적절히 사용함으로써, 스마트 계약의 안정성과 신뢰성을 높일 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기