Solidity 문법 - (11) Event

2023. 5. 30. 17:30BlockChain/Solidity 깨부수기 ( 유투브 강의 )

목차
1. Event
2. Event 예제코드

 

1. Event

 

 

솔리디티에는 콘솔로그, 프린트와 같은 기능이 존재하지 않는다.

 

대신에 event라는 것이 존재하는데, event를 이용하면 블록체인 네트워크의 블록에 저장된다.

 

저장된 값은 블록에 저장되어 언제든지 꺼내서 사용할 수 있다.

 

이벤트를 선언하는 방법은 다음과 같다.

 

contract Event {
    event [이벤트명](타입 [매개변수 명]);

    function 함수명 () public {
        emit [이벤트명](인자);
    }
}

 

event를 선언하고 이벤트명을 지정해준뒤 타입과 매개변수명을 지정하고,

 

사용할 때에는 emit을 이용해서 사용한다.

 

 

2. Event 예제코드

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ExamScore {
    event exam(string indexed name, uint256 score);

    function updateScore(string memory _name, uint256 _score) public {
        emit exam(_name, _score);
    }
}

 

위의 컨트랙트는 updateScore를 발동시킬때 이름과 점수를 받아 이벤트를 등록하는 기능을 한다.

 

이더리움 개발 툴인 remix IDE를 이용해서 위의 코드를 실행해보았다.

 

 

코드를 작성후 Compile [파일명].sol을 클릭하여 컴파일을 진행하고 아래 처럼 배포를 진행한다.

 

 

배포 한 후 updateScore를 실행하여 결과를 보면 logs에 이벤트가 잘 담겨있는 것을 확인할 수 있다.

 

 

 

※ Event에는 indexed라는 색인을 넣을 수 있는데, 이를 통해 조건을 걸어 해당 이벤트만 출력이 가능하다.

 

추후에 다른 포스팅에서 실습코드를 통해 indexed를 알아보자.