Smart Contract로 보내진 gas를 모두 소비하고 사용자에게 반환하지 않는다. 특정한 조건에 부합하지 않으면 에러를 발생시킨다. 정말 예상치 못한 일이 일어났을 경우만 사용되야한다.
사용자에게 알려주지 않고 트랜잭션을 그냥 종료시킨다.
내부 상태나 불변량 검사를 할 때는 assert를 사용한다.
조건에 부합하지 않으면 에러를 발생시키고 입력된 오류 문자열을 반환한다.
트랜잭션을 실행하지 않은 상태로 되돌린다.
gas를 사용자에게 반환한다.
입력 유효성 검사에는 require를 사용한다.
조건 없이 에러를 발생시키고 gas를 사용자에게 반환한다. 주로 if문과 함께 사용한다.
require와 마찬가지로 트랜잭션을 되돌린다.
require()와 revert()는 취향 차이
ex) require()
require(amount <= msg.value / 2 ether,"Not enough Ether provided");
ex) revert()
if(amount > msg.value / 2 ether){
revert("Not enough Ether provided.");
}
고전적인 스타일로 이제는 사용되지 않는 함수
ex) throw
if(msg.sender != owner) {
throw;
}
ex) require
require(msg.sender == owner);