BatchRequest에 대한 질문입니다

JSON-RPC 호출 수를 최적화 하고 있습니다. 구상한 방식 중 여러 요청들을 한번에 몰아서 보낼 수 있는 부분 (초기 로딩 쿼리)의 경우는 JsonRpcBatchProvider로 일괄 처리하는 것이 효과적일 거라는 생각을 하고 테스트를 하였습니다.

그 결과 개발자 도구상으로 요청이 합쳐져 보내는 것을 확인하였는데요. 해당 방식으로 보내게 되면 실제로 요청받은 EN노드는 실제 연속적으로 작업을 처리하는지 궁금합니다.

@TabberKim

안녕하세요.
어떤 요청을 연속적으로 보내셨을까요~?

유저가 보유하고 있는 토큰들의 getBalance 함수를 호출하는 경우입니다!

@TabberKim

Batch 리퀘스트로 요청하신다고 해도 결국 EN 입장에서는 그 요청을 1 by 1 으로 처리하게 될 거 같습니다.

JSON-RPC APIs - Klaytn Docs 문서로 확인해보실 수 있겠지만, Batch로 한꺼번에 요청을 받아 처리하는 API는 노드 단에서 제공되고 있지 않습니다.
즉 Batch로 보내셔도 결국 하나씩 처리가 된다는 뜻입니다.

따라서 Json RPC 호출 수를 최적화하는 것이 목적이라면, Batch Request로는 목적 달성이 어려울 거 같아요. 왜냐면 결국 노드 입장에서는 Batch로 하던 한 개씩 요청을 날리던 처리하는 갯수는 동일할테니까요.

1개의 좋아요

감사합니다. 결과적으론 네트워크 요청이 하나인 Promise.all과 같은 역할밖에 하지 못하겠네요. 도움이 많이 되었습니다!

호출 시 노드가 Batch 작업과 유사하게 가능한 방법은 찾아본 바 아래 오픈소스를 사용하는 방법인것 같습니다.
컨트랙트 코드 자체에서 함수 호출을 여러개 받는 방법이 있네요! 단점은 컨트랙트에 선언된 함수만 사용가능하네요.

클레이튼 네트워크 또한 배포해서 PR 올려보겠습니다!

2개의 좋아요

안녕하세요

위 글에도 댓글을 남겼습니다만 설명해주신 내용과 위 글의 내용이 서로 내용이 상충되어서요.
위 예제에서 사용한 함수를 분석한 결과 이더리움의 Web3j와 같이 request를 Array형태로 요청하는데
이 코드가 작동한다면 클레이튼은 Batch Request를 제공하지 않는 것이 정확한지 질문드립니다.