eth_getLogs(RPC) 사용시 쿼리당 10,000개 제한을 해제하는 방법이 있을까요?

안녕하세요.
토큰 관련 이벤트 로그를 받아보려고 하는데요, getLogs 쿼리의 1만개 응답 제한을 해제할 수 있는 방법이 있을까요?
자체적으로 엔드노드 구축해서 사용 중이구요, 로그는 1개 블럭씩 조회하고 있습니다.

다른 건 괜찮은데, 어제 발생한 블럭(93233219)에서 스니커즈 토큰이 1만개 민팅되었더라구요.
그래서 해당 블럭은 1만개 조금 넘게 token transfer 로그가 기록되어, 1개 블럭을 읽음에도 불구하고, 1만개 제한에 걸리네요.

안녕하세요.

현재 한번의 쿼리가 너무 많은 리소스를 소비하지 않도록 10,000개의 정보만 읽어오도록 제한되어있습니다.
이벤트 로그를 받아오기 위한 다른 방법으로는 해당 event를 subscribe 하는 방법이 있을 것 같습니다. 관련 링크: Subscribes to an event.

관련 게시물 링크입니다.

  1. Caver-js-ext-kas을 이용해서 앱에서 event 구독하는 방법이 궁금합니다
  2. Kas 통한 이벤트 수집 기능 구현 과정에서의 질문

감사합니다!

2 Likes

답변 감사드립니다.

말씀하신 링크는 개별 컨트렉트에 대해서 로그를 조회하는 것 같은데요,
저는 따로 컨트렉트를 특정하지 않고, 모든 토큰 컨트렉트들의 이벤트 로그를 모니터링하려고 합니다.

혹시, 제한을 풀 수 있는 방법은 없는건가요?

현재 필터는 아래와 같이 설정하고 있구요, 한번에 1개 블럭만 조회하고 있습니다.

        filter_params = {
            'fromBlock': hex(target_height),
            'toBlock': hex(target_height),
            'topics': ['0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'] #transfer
        }

caver api의 getLogs()도 동일하게 1만개 제한이 걸려있네요 ㅠ

API: Introduce init flags for klay_getLogs and klay_getFilterLogs APIs by aidan-kwon · Pull Request #903 · klaytn/klaytn · GitHub 해당 PR 보시면, 관련된 설정값이 있는 것을 보실 수 있습니다.
* api.filter.getLogs.maxitems: Maximum allowed number of return items for log collecting filter API (Default: 10000)
이렇게 정의되어 있고, kend.conf 파일에서 ADDITIONAL="--api.filter.getLogs.maxitems 20000" 이런 식으로 해당 config를 설정하면, 설정을 바꿀 수 있을 것 입니다.

감사합니다.

3 Likes

아 그렇군요, 빠른 답변 감사드립니다!!