async def list_state(self, request): """Fetches list of data entries, optionally filtered by address prefix. Request: query: - head: The id of the block to use as the head of the chain - address: Return entries whose addresses begin with this prefix Response: data: An array of leaf objects with address and data keys head: The head used for this query (most recent if unspecified) link: The link to this exact query, including head block paging: Paging info and nav, like total resources and a next link """ paging_controls = self._get_paging_controls(request) head, root = await self._head_to_root( request.url.query.get('head', None)) validator_query = client_state_pb2.ClientStateListRequest( state_root=root, address=request.url.query.get('address', None), sorting=self._get_sorting_message(request, "default"), paging=self._make_paging_message(paging_controls)) response = await self._query_validator( Message.CLIENT_STATE_LIST_REQUEST, client_state_pb2.ClientStateListResponse, validator_query) return self._wrap_paginated_response(request=request, response=response, controls=paging_controls, data=response.get('entries', []), head=head)
async def get_state_by_address(conn, address_suffix): status_request = client_state_pb2.ClientStateListRequest(address=address_suffix) validator_response = await conn.send( validator_pb2.Message.CLIENT_STATE_LIST_REQUEST, status_request.SerializeToString()) status_response = client_state_pb2.ClientStateListResponse() status_response.ParseFromString(validator_response.content) # resp = status_response return status_response # resp.entries