Purpose: A Fisherman makes periodic relays to all Servicers during an active session, tracks the QoS of each request, and maintains the results in a local ephemeral state.
Actors: Check all of the protocol actors involved in the feature
[ ] Validator
[ ] Application
[x] Servicer
[x] Fisherman
[ ] Portal
Data Structures
MVP requirements for QoS need to be defined. Example:
RoundTripTime (i.e. latency)
Availability (i.e. responsive)
shared/core/types/proto/qos.proto needs to be created w/ data types to track QoS
runtime/genesis/proto/genesis.proto needs to be updated to govern how QoS checks are made based on the sampling protocol. Example:
QoS check frequency per session
QoS check distribution per session
Interfaces
shared/modules/utility_module.go will need to be updated with Fisherman specific interface logic for executing and storing a QoS check
app/client/cli/ may need to be updated if new endpoints are needed to be exposed to the client for the implementation of this feature
Diagram
sequenceDiagram
actor F as Fisherman
actor S1 as Servicer 1
actor SN as Servicer N
title E2E Single QoS Check
loop Repeats During Session
F ->> +S1: Relay Request
F ->> +SN: Relay Request (identical)
S1 ->> -F: Relay Response 1
F ->> F: Record & Store<br>QoS for S1
SN ->> -F: Relay Response N
F ->> F: Record & Store<br>QoS for SN
end
User Stories as Tests
Happy test cases
A fisherman makes a successful request to a servicer that is available
A fisherman makes a successful request to a servicer that has low latency
Sad test cases
A fisherman makes successful request to a servicer that is unavailable
A fisherman makes successful request to a servicer that has high latency
Blockers
E2E feature path dependencies:
A.1: Trustless Relay
E: All actors must be staked
Open Questions:
How is a Fisherman notified that a session started?
Goals
Complete the MVP implementation of the E2E Feature Path outlined in the objective
Identify future tasks and test requirements to transition the feature to production
Deliverable
POC:
[ ] A POC SPIKE to be closed out and split out into multiple PRs
[ ] A PR that materializes an MVP of the feature along with unit tests
[ ] A PR that introduces a new E2E tests with one happy and one sad path scenarios as described in the origin document (refer to e2e/README.md); this may require additions to the cli
[ ] A PR that updates all pertinent documentation
PROD:
[ ] One or more subsequent GitHub issues that track future work including, but not limited to:
Objective
Implement MVP E2E Feature Path A1: E2E Relay- Trustless Relay
Origin Document
Purpose: A
Fisherman
makes periodic relays to allServicers
during an active session, tracks the QoS of each request, and maintains the results in a local ephemeral state.Actors: Check all of the protocol actors involved in the feature
Data Structures
shared/core/types/proto/qos.proto
needs to be created w/ data types to track QoSruntime/genesis/proto/genesis.proto
needs to be updated to govern how QoS checks are made based on the sampling protocol. Example:Interfaces
shared/modules/utility_module.go
will need to be updated with Fisherman specific interface logic for executing and storing a QoS checkapp/client/cli/
may need to be updated if new endpoints are needed to be exposed to the client for the implementation of this featureDiagram
User Stories as Tests
Blockers
A.1: Trustless Relay
E: All actors must be staked
Goals
Deliverable
General issue deliverables
Testing Methodology
make ...
make ...
make test_all
LocalNet
is still functioning correctly by following the instructions at docs/development/README.mdk8s LocalNet
is still functioning correctly by following the instructions hereCreator: @Olshansk