Decentralized services

There are two parts of the WWS:

  • Provider

  • Consumer

The consumer side wants to get some service and from the very beginning try to select the service type for the needs. For example, a consumer wants to use a queue message delivery. To get this service the consumer should start from knowing with required capabilities, average capacity, and usage to plan the amount of pressure they get for consuming the service and adapt delivery priority to the business case. The next step will be the creation of an endpoint for service usage where the consumer will define delivery priority, max pressure they are ready to accept, protocol, and an authorization method (API key, trusted public key, etc.). After endpoint creation, the consumer has an address to connect and needed information, sends the messages to the queue, and subscribes to a message receiving.

The provider side registers services that they want to provide and configure the model of usage and the amount of pressure consumers will get for service usage. The WSS will select the lowest available pressure for the consumer, so more "expensive" service providers will have a lower number of clients and gets less impact. For example, a provider can define they are able to provide some amount requests per month or requests per minute with zero pressure. In this case, WSS will most likely use the provider capacities and the provider will get the impact.

Another parameter for request distribution is the provider trust-credit.

When a provider is getting a request for processing some amount of trust-credit is locked by the period of time depending on the validation process. The validation can be done by parallel execution by another provider with higher trust-credit, correctness confirmation from the consumer, or just a timeout.

The consumer can define the required amount of trust-credit for every request. If a consumer puts the high trust-credit requirement for some transaction it means it will be taken by a few providers to process and validate. This process decreases the chance of "cheating" by the provider and moves the Nash equilibrium to provide a good service to consumers instead of "cheating".