# State-tracker
## Blueprint [Github Link](https://github.com/bhakiyakalimuthu/state-tracker)
### Server
* Server implementation acts as a proxy server to a destination server.
* The gRPC Server is listening requests from the client and forward those request to destination server. Currently requests are forwarded to Osmosis public RPC endpoint [osmosis endpoint](https://docs.osmosis.zone/developing/network/public-endpoints.html#officialendpoints).
> Replace osmosis endpoint to any other destination server, this should work.
* Any clients can communicate with server via grpc protocol,one exmaple could be grpcurl [grpcurl](https://github.com/fullstorydev/grpcurl)
### client
* Client is implemented as a state tracker machine which will query the proxy server for the latest block information.
* **cosmos.base.tendermint.v1beta1.Service.GetLatestBlock** API is used to query the latest block information.
* Client has a logic to extract and parse the latest block information.
* Extracted datas are stored in the json file as mentioned in the below format.
* Information for a duration of 5 blocks, for each block that passes datas are stored into a json file with following structure.
```
{
"test_result": [
{"height": X, "hash" Y}, {"height": X+1, "hash" Z}, etc...
]
}
```