Background:
The heavy technical burden of the original Pocket Network session design has led the implementation team to try to find another more feasible solution to validation (consensus). In addition, a conversation with the B2B team has introduced two possible product problems:
- The current model doesn’t validate the data until after the client receives it
- Clients don’t want to trust a system to validate their data. They want to validate their own data.
Hypothesis:
Creating and maintaining a stateful, distributed shard for each individual Pocket Network Session is inefficient, complicated, and only provides ‘after-the-fact’ validation to the response data the client receives. Client-Side validation allows a stateless, communicationless, shard which executes in parallel and allows real-time validation for the clients.
Design
- The client sends X requests to X nodes
- The client receives X independent responses from X nodes
a. Each nodes response is weighted by their karma score- The client chooses the majority answer
- The client sends X requests + validation grade to X nodes
a. The validation grade and request is signed by the client- The nodes submit their batch transaction after the session is concluded.
a. The nodes are paid based on their karma score (meaning little mint goes to low karma score etc.)
Tradeoffs
- Client-side validation is more client signature data on the blockchain (signature < 75 bytes)
- Burden on the client: more signatures are required for each request / response
- Clients will have to wait for a certain timeout before making the next request