안녕하세요. 클레이튼 개발을 이제 막 시작해서 아는게 많이 없는 초보입니다.
클레이스코프에서 지갑주소로 검색시 하단에
“Transactions”, “Internal Transactions”, “Token Transfers”, “Token Balance” 4개의 상세보기 탭이 나오는데요.
"Transactions"와 "Token Transfers"의 기능이 필요한 서비스를 만드려 하는데 caver와 json rpc를 찾아보아도
적당한 api가 보이자 않아서요(kas를 쓰지 않고 en을 운영하려합니다).
제 목적과 가장 비슷해 보이는 filter log계열 api로 시도해보았는데 속도가 많이 느려서
클레이스코프처럼 빠르게 처리할 수 있는 api가 따로 있을까 하여 문의드려봅니다.
안녕하세요~ 도리님 ㅋㅋ- 일단 클레이튼쪽과는 무관하지만,
요즘 답변이 많이 늦는것 같아서요.
제가 대충 아는정도로는 REST API 속도에는 한계가 있어서
실시간 정보 뽑으시려면 EN에 websocket 포트 여셔서 그걸로 하셔야할듯해요.
@raspisanie 안녕하세요.
scope에서 보여지는 데이터의 경우, getTransaction이나 getTransactionReceipt등의 API를 통해 raw data는 모두 얻을 수 있습니다. 다만, 필요에 따라서 데이터의 후처리가 필요할 수 있겠습니다. (e.g. token transfers, internal transactions)
말씀하신 Filter계열의 API도 사용가능하고, 어떤 목적으로 사용하시는지 모르겠으나 @lorance.call 님이 말씀하신 websocket을 사용하여 subscription을 사용하면 블록이 처리되자마자 데이터를 받아볼 수 있습니다.
감사합니다.
안녕하세요~ 답변 감사드립니다.
제가 하려는것은 특정 지갑 주소의 어제, 그제, 3일전… 1년전 등 과거의 코인과 토큰의 수량을 얻으려 합니다.
스코프에 0x2ca1110f324a9b1f22869d98883f3fcff4b7cecc와 같은 EOA주소로 검색하면 굉장히 빠르게 트렌젝션과 토큰전송 히스토리를 얻을수 있는데요.
이를 위해 해당 지갑 주소의 트렌젝션 해시를 얻기위해 필터에 지갑주소를 넣어 caver.rpc.klay.getLogs를 활용해보려 했지만
너무 느려서 다른 방법이 있을까 하여 질문을 작성하게 되었습니다.
지갑의 모든 트렌젝션 해시를 얻은 후에야 getTransaction 또는 getTransactionReceipt를 활용하여 원하는 정보를 얻을수 있다 생각했거든요.
지갑 0x2ca1110f324a9b1f22869d98883f3fcff4b7cecc의 최근 10개의 트렌젝션 해시를 얻으려면 어떤 방법이 가장 좋을까요?
웹소켓으로 연결 후 json rpc filter log류 api를 사용해봐도 rest와 크게 다르지 않음을 확인하였습니다.
문서의 예제는
{“jsonrpc”:“2.0”,“method”:“klay_getLogs”,“params”:[{“fromBlock”:“0x1”,“toBlock”:“latest”,“address”:“0x87ac99835e67168d4f9a40580f8f5c33550ba88b”}],“id”:1}
여전히 타임아웃
{“jsonrpc”:“2.0”,“id”:1,“error”:{“code”:-32000,“message”:“query timeout exceeded”}}
이 나오고 있고
제 지갑을 이용하여 rest로 시도해보았던것들을 웹소켓 json rpc로 이것 저것(from과 to에 블록 번호를 직접 지정하여) 시도해 보았습니다.
Ethan
11월 6, 2021, 4:48오전
7
안녕하세요.
query timeout이 나는 것은 데이터가 너무 커서 그렇습니다.
요청하시는 구간자체를 0x1 ~ latest라는 큰 범위가 아닌 더 좁은 범위로 여러번 요청하시면 될것 같습니다.