블록체인 학습
0 XP

event 선언 문법

이벤트는 event 키워드로 선언합니다. 함수와 비슷하게 매개변수 목록 이 있지만, 실행할 본문(중괄호 블록)은 없습니다. 선언은 보통 컨트랙트 최상단, 상태 변수 근처에 모아 둡니다.

기본 문법

event 이벤트이름(타입 변수명, 타입 변수명, ...); 형태입니다. 매개변수의 이름은 생략 가능 하지만, 가독성을 위해 적어 주는 편이 좋습니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract Bank {
    // event 이름(타입 변수명, 타입 변수명, ...);
    event Deposit(address account, uint256 amount);
    event Withdraw(address account, uint256 amount);
    event Paused(); // 매개변수가 없는 이벤트도 가능
}

이벤트 이름은 대문자로 시작(PascalCase) 하며, 이미 발생한 사건을 나타내는 명사형 또는 과거형을 씁니다(예: Deposit, Transfer, OwnershipTransferred).

매개변수 규칙

  • 타입은 필수, 변수명은 선택: uint256 amount 또는 그냥 uint256.
  • 일반 이벤트는 최대 3개 까지 indexed 를 붙여 topic 으로 만들 수 있습니다. 아래의 anonymous 이벤트만 예외로 4개까지 가능합니다.
  • 매개변수 개수에는 제한이 없지만, 너무 많으면 발행 gas 가 늘어납니다.

특수한 경우에만 쓰는 anonymous 이벤트

이벤트 뒤에 anonymous 를 붙이면 이벤트 시그니처가 첫 번째 topic 으로 기록되지 않습니다. 그래서 indexed 를 4개까지 쓸 수 있고 gas 도 약간 아낄 수 있지만, 검색이 까다로워져 특수한 경우에만 씁니다. 입문 단계에서는 거의 쓸 일이 없으니 "이런 게 있다" 정도만 알아 두세요.

event LowLevelLog(bytes data) anonymous;

선언만으로는 아무 로그 도 남지 않습니다. 실제 기록은 함수 안에서 emit 으로 발행 해야 생깁니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.