본문 바로가기
Develop/Solidity

[Solidity] 8. 이벤트 및 반환 변수

by Tarra 2023. 2. 14.

 

 

 


개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.

 

 

[Solidity] 1. 변수

[Solidity] 2. 간단한 송금 시스템 만들어보기 + 계정에 대한 이론

[Solidity] 3. 스마트 컨트랙트 시작, 중단, 정지하기

[Solidity] 4. mapping

[Solidity] 5. 예외처리 (require와 assert)

[Solidity] 6. 생성자, 대비책 함수 (view / pure / getter)

[Solidity] 7. 제어자, 상속, file import

[Solidity] 8. 이벤트 및 반환 변수

 

 


 

- 참고했던 document

▶ Become Ethereum Blockchain Developer

https://ethereum-blockchain-developer.com/000-learn-ethereum/

 

Overview and Pricing - Become Ethereum Blockchain Developer

Learn Blockchain Development - Become Web3 Expert Ethereum-blockchain-developer.com is offering web developers, enterprise developers and software development professionals self-paced video courses with interactive labs to become successful Ethereum Blockc

ethereum-blockchain-developer.com

 

▶ Solidity_doc

https://docs.soliditylang.org/en/v0.8.16/

 

Solidity — Solidity 0.8.16 documentation

1. Understand the Smart Contract Basics If you are new to the concept of smart contracts we recommend you to get started by digging into the “Introduction to Smart Contracts” section, which covers: 2. Get to Know Solidity Once you are accustomed to the

docs.soliditylang.org

 

▶ 솔리디티_doc

https://solidity-kr.readthedocs.io/ko/latest/

 

Solidity — Solidity 0.5.10 documentation

Solidity는 스마트 컨트랙트를 구현하기 위한 컨트랙트 기반의 고급 프로그래밍 언어입니다. Solidity는 C++, Python, 그리고 JavaScript의 영향을 받아 만들어졌습니다. 그리고 Ethereum Virtual Machine(EVM)에서

solidity-kr.readthedocs.io

 


 

솔리디티에서는 스마트 컨트랙트 내부에 함수를 입력하는 경우에는 return 변수를 사용할 수 있다.

하지만 트랜잭션을 생성한 사람에게 외부의 어떤 것도 반환할 수는 없다.

 

다음은 앞선 문서에서 살펴본 스마트 컨트랙트의 간소화된 버전이다.

 

 

이 코드에서 중요한 것은 이 함수가 public 이고, view 가 아닌 bool 을 반환한다는 것이다.

 

remix 가상환경에서 해당 코드를 배포해 결과값을 확인해보자.

 

 

분명 return 을 사용할 수 없다고 했는데 결과값을 보면 output 항목이 존재한다.

remix 가상환경의 경우 모든 것이 브라우저에서 시뮬레이션 되고, 버튼을 클릭하는 즉시 적용이 된다.

 

하지만 실제 네트워크 환경에서는 거의 모든 작업에 채굴이 필요하므로, 더 이상 작동하지 않는다.

(실제 블록체인 환경에서는 출력 값이 없음.)

 

그렇다면 이 문제를 해결하고, 트랜잭션을 게시한 사람에게 return 값을 적용하는 방법이 무엇일까?

 

바로 이벤트 를 사용하면 된다.

위의 코드에 event 를 적용해 보자.

 

 

이런식으로 이벤트를 사용하면, 배포 후 로그를 통해 해당 트랜잭션의 속성을 파악할 수 있다.

 

 


 

이벤트의 용도

1. 리턴 값

함수가 트리거되거나 트랜잭션이 채굴될 때, 특정 값을 반환해야 할 경우

2. 트리거 기능

이벤트는 사이트 체인에 저장된 데이터를 내보낼 수 있다. (저렴한 데이터 저장소 역할)