Caver-java 에서 contract event log 조회 방법

안녕하세요. bapp 개발중에 NFT minting 이력을 백엔드(caver-java 사용)단에서 조회하고자 이벤트 로깅 조회하는 부분을 개발하고 있습니다.

컨트랙에 선언된 이벤트는
event CookieCreated (uint256 indexed tokenId, string title, string text, string imageUrl, string tag);
위와 같고,

caver-java 에서는 KlayLogs logs = contract.getPastEvent("CookieCreated", new KlayLogFilter())
위와 같이 요청해서 생성된 로그를 출력 시도해보았는데요, (abi, address 주입해서 컨트랙 초기화는 완료했습니다)

배포된 컨트랙은 (Klaytnscope) 해당 내용이고, 테스트를위해서 임의로 event emit 후에 조회를 시도해보았는데요,
출력 결과로 아무것도 나오지가 않더라구요.
{"jsonrpc":"2.0","id":0,"result":[]}

KlayLogFilter 관련해서 사용법을 잘 몰라서 기본 생성자로 넣어준것이 문제가 되는것인가요?
아니면 테스트과정에서 잘못된 부분이 있는것인가요?

추가로, KlayLogFilter의 생성자 파라미터에 대한 설명이 없어서 동작을 이해하는데 어려움이 있습니다 ㅠ_ㅠ. 혹시 각 파라미터의 의미도 알려주시면 감사하겠습니다.

public KlayLogFilter() {
        super();
    }

    public KlayLogFilter(DefaultBlockParameter fromBlock, DefaultBlockParameter toBlock,
                         List<String> address, String blockHash) {
        super(fromBlock, toBlock, address);
        this.blockHash = blockHash;
    }

    public KlayLogFilter(DefaultBlockParameter fromBlock, DefaultBlockParameter toBlock,
                         String address, String blockHash) {
        this(fromBlock, toBlock, Arrays.asList(address), blockHash);
    }

안녕하세요.

contract.getPastEvent()는 내부적으로 klay_getLogs JSON/RPC API 호출합니다.

아래 링크는 caver-java에서 getPastEvent()를 unit test한 method인데 도움이 되실 것 같아 알려드립니다.

1 Like

안녕하세요. 전달해주신 내용을 통해 많은 참고가 되고있습니다.

그런데 혹시, caver-java에서는 indexed 키워드에 대한 이벤트조회는 지원하지 않나요?
indexed로 선언된 인자에 대해서 groupBy된 결과를 받아야 하는데, KlayLogFilter 생성인자에는 index를 지원하는 부분은 없어보여서요!