1. 이벤트
- 어떤 결과가 발생했을 때 해당 컨트랙트에서 dApp 클라이언트, 또는 다른 컨트랙트에게 전달함
- event 키워드를 이용해서 이벤트 설정하고, emit 키워드를 사용해 이벤트를 실행함
- 이벤트를 실행할 경우 트랜잭션에 기록됨
contract coinTransfer{
event Transfer(address from, address to, unit256 value);
function transfer(address to, address amount){
...
emit Transfer(msg.sender, to, amount);
}
}
- 트랜잭션에 메모? 하는 느낌으로 많이 사용하는것 같음 코인 전송시 해시값으로 트랜잭션에 기록되겠지만 누구한테 보냈는지 메모 해놓으면 한번에 보기 좋을것 같다?!
2. 에러
- 솔리디티에서는 에러처리 시 assert, require, revert를 사용함
- revert : 해당 함수를 종료하고 에러를 반환함
- require, assert : 설정한 조건이 참인지 확인하고, 조건이 거짓이면 에러를 반환한다.
- revert 사용
contract 변수명 {
function buy(unit amount) public payble {
if(amount > msg.value / 2 ether)
revert("에러 반환");
}
}
contract 변수명 {
function buy(unit amount) public payble {
require(
amount <= msg.value / 2 ether,
"에러 반환"
);
}
}
- assert는 require와 사용법이 동일하나, 사용하지 않는 가스를 호출자에게 반환하지 않고 공급된 가스를 모두 소모하여 상태를 원래대로 되돌립니다.