Prototype Ghost
귀신일지
Prototype Ghost
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Hacking (1)
      • CTF (0)
      • Wargame (0)
      • Review (1)
    • C (12)
      • Crypto (12)
    • C++ (4)
    • Python (1)
    • Swift (1)
    • Blockchain (9)
      • Solidity (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리눅스
  • Bitcoin
  • 암호화폐
  • 보안
  • ethereum
  • 정보보안
  • 솔리디티
  • 접근제어
  • openssl
  • solidity
  • 복호화
  • C++
  • Blockchain
  • 프로그래밍
  • 이더리움
  • c언어
  • C
  • 블록체인
  • 암호화
  • 비트코인

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Prototype Ghost

귀신일지

Solidity : Event
Blockchain/Solidity

Solidity : Event

2023. 6. 5. 00:07

시작하며


  오늘은 솔리디티에서 이벤트에 대해 다뤄보겠다. 솔리디티에서 이벤트는 스마트 컨트랙트 또는 유정의 특정한 상태를 출력하며 그 상태를 블록체인에 저장한다. 스토리지에 저장한 것은 변경 가능하나 이벤트로 기록된 것은 수정이 불가하다. 또 이벤트는 검색이 가능하다. 

즉 이벤트는 기록을 원하는 로그를 블록체인에 기록하는 것이라고 보면 된다. 코드로 살펴보자.

 

Event 예시 코드


// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract eventEx{
    event Info(string text, uint num);

    uint public num;

    constructor(uint pNum){
        num = pNum;
    }

    function changeNum(uint pNum) public{
        num = pNum;
        emit Info("change num", num);
    }
}

  위 코드를 보면 string과 uint를 매개변수로 받는 event인 Info를 명시하였다. eventEx는 생성자로 멤버변수 num을 초기화하고 changeNum()함수에서 num값을 변경할 수 있다. 이 때, changeNum()을 이용해 num을 변경할 때마다 emit을 이용해 이벤트에 대한 로그를 블록체인에 남기게 된다. 즉 여기서 알 수 있듯, event는 event라는 키워드로 선언하여 로그로 남기고 싶은 값을 매개변수로 설정해두고, 실제 이벤트를 발생시켜 블록체인에 남기고 싶을 때 emit 키워드를 이용하면 된다. 실행 결과를 확인해보자.

 

  먼저 생성자를 이용해 num을 10으로 설정하였다. 왼쪽 하단을 보면 num의 getter를 이용해 num값을 확인하였을 때, 10이 나오는 것을 확인할 수 있다. 이제 changeNum()을 이용해 num 값을 바꿔보고 결과를 확인해보자.

  왼쪽 하단을 보면 changeNum을 이용해 num을 20으로 바꿨을 때, 잘 바뀌는 것을 확인할 수 있고 오른쪽하단에서 결과를 확인해보면 logs부분에 우리가 작성한 이벤트가 기록된 것을 볼 수 있다. 이는 블록에 이 이벤트가 저장되었다는 것을 뜻한다.

 

마치며


  오늘은 이렇게 간단하게 이벤트를 다루는 법에 대해서 알아보았다. 이벤트라는 기능이 있기 때문에 당연히 string과 같은 변수 자체를 블록에 기록하는 것보다 이벤트로 로그를 기록하는 것이 훨씬 효율적이다. 다음에는 contract의 생성자나 상속 등에 대해서 다뤄보겠다.

 

참고자료

https://www.yes24.com/Product/Goods/111099912

 

솔리디티 프로그래밍 완벽 가이드 - YES24

개발 경험이 없어도 쉽게 블록체인과 솔리디티를 이해할 수 있습니다!솔리디티는 스마트 컨트랙트를 구현하는 언어이며, 스마트 컨트랙트는 블록체인에서 작동하는 프로그램이다. 『솔리디티

www.yes24.com

 

728x90
반응형

'Blockchain > Solidity' 카테고리의 다른 글

Solidity : 생성자, 인스턴스화, 상속, overriding  (0) 2023.06.05
Solidity : 배열 다루기  (0) 2023.06.04
Solidity : memory와 storage, 그리고 문자열 비교하기  (0) 2023.06.01
Solidity : 함수 및 Modifier  (0) 2023.06.01
Solidity : 가시성 지정자  (0) 2023.05.31
    'Blockchain/Solidity' 카테고리의 다른 글
    • Solidity : 생성자, 인스턴스화, 상속, overriding
    • Solidity : 배열 다루기
    • Solidity : memory와 storage, 그리고 문자열 비교하기
    • Solidity : 함수 및 Modifier
    Prototype Ghost
    Prototype Ghost

    티스토리툴바