개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.
[Solidity] 2. 간단한 송금 시스템 만들어보기 + 계정에 대한 이론
[Solidity] 3. 스마트 컨트랙트 시작, 중단, 정지하기
[Solidity] 5. 예외처리 (require와 assert)
[Solidity] 6. 생성자, 대비책 함수 (view / pure / getter)
[Solidity] 7. 제어자, 상속, file import
- 참고했던 document
▶ Become Ethereum Blockchain Developer
https://ethereum-blockchain-developer.com/000-learn-ethereum/
▶ Solidity_doc
https://docs.soliditylang.org/en/v0.8.16/
▶ 솔리디티_doc
https://solidity-kr.readthedocs.io/ko/latest/
솔리디티에서는 스마트 컨트랙트 내부에 함수를 입력하는 경우에는 return 변수를 사용할 수 있다.
하지만 트랜잭션을 생성한 사람에게 외부의 어떤 것도 반환할 수는 없다.
다음은 앞선 문서에서 살펴본 스마트 컨트랙트의 간소화된 버전이다.
이 코드에서 중요한 것은 이 함수가 public 이고, view 가 아닌 bool 을 반환한다는 것이다.
remix 가상환경에서 해당 코드를 배포해 결과값을 확인해보자.
분명 return 을 사용할 수 없다고 했는데 결과값을 보면 output 항목이 존재한다.
remix 가상환경의 경우 모든 것이 브라우저에서 시뮬레이션 되고, 버튼을 클릭하는 즉시 적용이 된다.
하지만 실제 네트워크 환경에서는 거의 모든 작업에 채굴이 필요하므로, 더 이상 작동하지 않는다.
(실제 블록체인 환경에서는 출력 값이 없음.)
그렇다면 이 문제를 해결하고, 트랜잭션을 게시한 사람에게 return 값을 적용하는 방법이 무엇일까?
바로 이벤트 를 사용하면 된다.
위의 코드에 event 를 적용해 보자.
이런식으로 이벤트를 사용하면, 배포 후 로그를 통해 해당 트랜잭션의 속성을 파악할 수 있다.
이벤트의 용도
1. 리턴 값
함수가 트리거되거나 트랜잭션이 채굴될 때, 특정 값을 반환해야 할 경우
2. 트리거 기능
이벤트는 사이트 체인에 저장된 데이터를 내보낼 수 있다. (저렴한 데이터 저장소 역할)
'Develop > Solidity' 카테고리의 다른 글
[Solidity] 7. 제어자, 상속, file import (0) | 2023.02.14 |
---|---|
[Solidity] 6. 생성자, 대비책 함수 (view / pure / getter) (0) | 2023.02.14 |
[Solidity] 5. 예외처리 (require와 assert) (0) | 2023.02.14 |
[Solidity] 4. mapping (0) | 2023.02.14 |
[Solidity] 3. 스마트 컨트랙트 시작, 중단, 정지하기 (0) | 2023.02.14 |