문법(이벤트, 에러)

워뇽쿤·2022년 9월 19일
0

Solidity

목록 보기
2/10
post-thumbnail

1. 이벤트

  • 어떤 결과가 발생했을 때 해당 컨트랙트에서 dApp 클라이언트, 또는 다른 컨트랙트에게 전달함
  • event 키워드를 이용해서 이벤트 설정하고, emit 키워드를 사용해 이벤트를 실행함
  • 이벤트를 실행할 경우 트랜잭션에 기록됨
contract coinTransfer{
// event 이벤트 명(파라미터유형1 파라미터, 파라미터유형2 파라미터2, ...)
event Transfer(address from, address to, unit256 value);

function transfer(address to, address amount){
	...
    // emit 이벤트 명(인자1, 인자2,...)
    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("에러 반환"); // 에러를 반환하면서 에러 메시지를 지정할 수 있다.
    }
}
  • require 사용법
contract 변수명 {
	function buy(unit amount) public payble {
    	require(
          amount <= msg.value / 2 ether, // 주어진 조건이 참이면 넘어가고, 거짓이면 에러반환
          "에러 반환" // 에러 메시지를 지정할 수 있다.
          );
    }
}
  • assert는 require와 사용법이 동일하나, 사용하지 않는 가스를 호출자에게 반환하지 않고 공급된 가스를 모두 소모하여 상태를 원래대로 되돌립니다.
profile
QA 성장기

0개의 댓글