티스토리 뷰
1. 이벤트 내뿜기(Emitting events)
- 실행하기, 부르기인가 싶었는데 그건 invoke임..
2단계가 필요하다.
- 우선 이벤트를 선언한다
event ExampleEvent(uint _exampleArgument);
- function 바디 안에서 선언한 이벤트를 emit한다.
function exampleFunction() external {
emit ExampleEvent(5);
}
emit를 한 후에 이벤트를 invoke할수 있다.
🚩이벤트는 주로 어퍼카멜케이스를 쓰고, 펑션은 주로 로워카멜케이스를 쓴다.
이걸 naming convention (작명관례)라한다.
이벤트를 emit한 컨트랙트를 eth_getLogs 를 통해 로그를 찍으면
이런 값을 리턴받는데, 데이터와 토픽에대해 논해보자.
DATA
만약 주소 하나를 넣어서 이벤트를 선언, emit해보자. 그러면
실제로 emit하는 부분은 이런 형태가되는데, 이 주소가 data안에 실제로 들어가있는 것을 볼수있다.
TOPIC
이벤트는 보통 최소 1개의 토픽을 가지는데, 보통 이벤트 시그네쳐 해쉬다.
Deployed(address)의 Keccak-256해시값은 f40f...인데 토픽안에 그 값이 들어가있는것을 볼수있다.
anonymous 키워드를 넣으면 익명이벤트를 만들수도있고, 가스도 세이브되지만
이벤트간 분간이 힘들어짐.
2 Multiple Arguments
펑션처럼 이벤트에도 여러개의 arguments 를 넣을수있다.
require(msg.sender == owner);
지정된조건이 없으면 종료됨
3. Indexed
이벤트 arguments에 indexed 키워드를 넣으면 필터링이 쉬워진다.
event HighScore(address indexed player);
인덱스 디테일 읽어도이해가안감
어드레스부터 다시 돌아야할것같음
'dev > Solidity' 카테고리의 다른 글
Merkle Tree - 솔리디티 화이트리스트 관리하기 (0) | 2022.04.24 |
---|---|
Storage, Memory and Calldata (0) | 2022.03.27 |
Contract to Contract (0) | 2022.03.15 |
2. Mint your own NFT collection and ship a Web3 app (0) | 2022.02.20 |
1. Buildspace : Intro to web3 -- build a web3 version of Twitter: (0) | 2022.02.15 |
댓글