JSON RPC Subscribe 응답 속도에 관하여

최신의 블록 소식을 빠르게 얻기 위해 EN에 웹소켓으로 연결 후

{“jsonrpc”:“2.0”, “id”: 1, “method”: “klay_subscribe”, “params”: [“newHeads”]}

로 구독 시도하였습니다.

구독되었다는 결과 응답은 매우 빠르게 오는데 최신 블록 데이터를 1초에 한번 받아보길 기대하였으나

일정 시간동안은 응답이 없다가 어느순간 많은 양의 블록정보를 한뭉텅이씩 던져주고 있는데

혹시 원래 이런것인지, 아니면 제가 올린 EN에 무언가 문제(스펙의 문제라던가)가 있어서 그런지 알수가 없어 문의드립니다.

추가적으로 subscribe결과가 한참 오지 않을때 서버가 멈춰있나 싶어 응답없는 중간에 rest api로 트렌젝션을 얻어보는 등 테스트를 해보았는데 응답이 없는 동안에도 rest api는 잘 동작하는것을 확인하였습니다.

@raspisanie 안녕하세요,

해당 EN이 sync가 완료되어 최신블록까지 따라잡았다면 1초에 한개의 블록이 오게됩니다.
해당 EN이 sync중이진 않은지 확인부탁드립니다.

감사합니다.

sync는 며칠전 완료된 상태입니다.
글쓰던 시점에는 블록이 초당 1개가 아닌 일정하지 않은 시간당 x개가 밀려서 들어왔는데 어제 저녁즈음 되니 초당 1개씩 들어오더라고요.
뭐가 다른가 살펴보았는데 제가 글쓰던 시점, 그러니까 1초에 1번씩 안오던 그 시점에
클레이스코프를 보면 새로 생성되는 블록당 트렌젝션이 300~400개씩 들어있었습니다(예> 블록번호 74882702).
위의 예를든 블록 전에는 (정확한 시간이 기억나지 않아 블록번호는 못찾았습니다) 생성되는 블록마다 실패한 레거시 트렌젝션
800~900개씩 포함하며 생성되던 시기였는데 트렌젝션이 많이 포함되는 경우에 구독정보가 밀려서 들어오는게 아닌가 하는 생각이 듭니다.

@raspisanie 네, 블록이 밀릴경우에 여러개의 블록을 모두 처리한 뒤에 한 번에 전송합니다. 따라서, 말씀하신대로 부하가 많을 시 한번에 데이터가 들어올 수 있습니다.

공교롭게도 제가 처음 구독을 테스트해보던 타이밍에 블록당 트렌젝션이 엄청나게 많았던것 같습니다.
지금은 다행히도 초당 1번정도로 잘 들어오고있습니다.
블록이 밀려들어올수도 있다는점은 염두해두고 개발을 해야겠네요.
마지막으로, 혹시 이부분에 대해 문제라고 생각하고 해결하기 위한 일정이 있으신지요?
아니면 팀에서는 큰 이슈가 아니라 생각하여 현상에 대해 인지정도만 하고 구체적인 개선일정이 없으신지요.

@raspisanie 먼저, 답변이 늦어져서 죄송합니다. 혹시 EN 스펙은 요구사항에 맞춰져있는 것일까요? EN 스펙을 키운다면 더 쾌적하게 사용하실 수 있을 것 같습니다. Transaction부하상황이외에도 EN재시작이나 네트워크 오류 등으로 블록이 밀려들어올 수 있을 수 있는데요. 어느정도 염두해두고 개발하시는 것을 추천드립니다. 혹시 추가문의사항 있으면 남겨주세요.

감사합니다.