이 글은 인프런 "솔리디티 깨부수기" 강의를 수강한 후 정리한 글입니다.
[지금 무료] 솔리디티 깨부수기 | D_One - 인프런
D_One | 이 강의를 통해서, 스마트 컨트랙 제작을 위한 솔리디티 언어를 배울수 있습니다., 코딩이 처음인 분들도 OK! 처음 배우는 솔리디티, 쉽게 시작해보세요. 강의 주제 📖 [사진] 이 강의에서
www.inflearn.com
indexed는 이벤트의 키워드로 블록들안에 출력된 이벤트들을 필터하여 특정한 이벤트 값들을 가지고 올 수 있다.
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;
contract Lec14 {
event numberTracker(uint256 indexed num, string str);
event numberTracker2(uint256 indexed num, string str);
uint256 num =0;
function PushEvent(string memory _str) public {
emit numberTracker(num,_str);
emit numberTracker2(num,_str);
num ++;
}
}
위의 예제에서 numberTracker2는 indexed가 있어 num을 통해 특정 이벤트 값들을 갖고 올 수 있다.
예를 들어 numberTraker2가 10개의 이벤트가 있다고 가정하고, 5라는 num만 필요하다면, 5만 입력하여 numberTraker2의 이벤트를 가져올 수 있다.
numberTraker는 동일한 가정에서 5라는 num만 필요하다면, 5만 적힌 이벤트를 갖고 올 수 없다.
즉, indexed를 통해 원하는 이벤트 값들을 필터링하여 갖고올 수 있음을 알 수 있다.
배포를 진행하면 logs에서 numberTracker와 numberTracker2가 출력된다.
위에는 출력은 하되 특정 값들을 갖고 오는 상태가 아니기 때문에 차이점을 알아보기 위해 vscode로 확인해보겠다.
위에와 같이 js 코드를 작성할 수 있으며, getPastEvents 함수를 생성하여 num을 통해 필터링을 진행할 수 있다. num은 2나 1일 때인 이벤트를 갖고올 수 있다.
fromBlock과 toBlock은 블록들의 범위를 나타낸다.
이후 3개의 이벤트를 생성하면 블록안에 들어가게 되고, numberTracker은 indexed를 사용하지 않았기 때문에 필터링이 안되고 전부 출력되며, numberTracker2는 두 번째와 첫 번째 이벤트만 출력된다.
'자기개발 > 블록체인' 카테고리의 다른 글
[Blockchain A-Z:블록체인 만들기 완벽강의] SHA256 Hash 알고리즘 (0) | 2024.07.13 |
---|---|
[솔리디티 깨부수기] 상속 : super, 상속의 순서 (0) | 2024.06.12 |
[솔리디티 깨부수기] event 정의 (0) | 2024.06.04 |
[솔리디티 깨부수기] 두 개 이상 상속하기 (0) | 2024.05.28 |
[솔리디티 깨부수기] overriding 오버라이딩 (0) | 2024.05.28 |