dqian3 / DOM-BFT

MIT License
0 stars 0 forks source link

Implement basic client logic #8

Closed dqian3 closed 3 weeks ago

dqian3 commented 4 months ago

In addition to submitting requests, we still need to implement the client's side of the fast path and normal path protocol., i.e. collecting and sending certificates to the replicas, and also identifying contention. We also need to finish designing and implement ways for clients to avoid starvation; i.e. retrying requests to different proxies or even directly to replicas.

Note one detail we have discussed is testing variations of how the client handles receiving 2f + 1 replies from replicas.

  1. Either the client waits for potentially receiving 3f + 1 replies before timing out
  2. Or the client proactively sends the commit certificate as soon as the 2f + 1 threshold is reached.

In (1), we potentially add latency to the "normal path", in (2) we add an overhead of messages.

dqian3 commented 4 months ago

We also need to implement the interface between the application client and this (the protocol client). For example, the application client would need some mechanism to submit requests and receive responses. The application client would likely also be used to measure end to end latency and throughput.