Background
Service incentivisation over Waku is a topic that has been discussed and investigated more or less since the founding of Waku. Most recently we’ve published a speculative roadmap towards incentivisation focusing on Lightpush protocol. This resulted in a working proof of concept that shows basic payment for RLNaaS using Lightpush.
The MVP described here builds upon this PoC. It introduces a minimal but practically feasible system for incentivising service provision, managing payments, and tracking on-chain reputation. The goal is to demonstrate a working, end-to-end flow for incentivised services on Waku, that is usable in a testnet setting. This should be a significant step towards a robust service incentivisation layer in Waku.
MVP Scope
I suggest that we develop a protocol consisting of (only) three discrete, but integrated subprotocols:
- Payment protocol: a privacy-preserving payment protocol for clients to pay for Waku services without requiring an on-chain transaction per service request.
- On-chain reputation protocol: a transparent, minimal on-chain footprint to help clients identify reputable service providers based on observable behaviour (e.g., deposits, uptime, longevity)
- Progressive trust protocol: protocol by which a client-service relationship can bootstrap from little (or zero) trust to a trusted relationship based on repeated good service provision and on-chain reputation.
What is out of scope?
- Service discovery is assumed to happen out of band. Clients “know” which service providers nominally provide a service interesting to them.
- Price negotiation for specific services is also assumed to happen out of band. In other words, we assume a client “knows” how much a service costs before the first payment.
MVP Components
1. Payment protocol
Purpose
The payment protocol defines how clients pay service providers in a way that is at least moderately scalable, unlinkable, and resistant to abuse. It ensures that service requests are paid for without requiring an on-chain transaction per request or linking the client’s identity to their wallet.
Requirements
- No need for an on-chain transaction per service request
- No direct link between Waku client identity and a specific wallet
- Mechanism to prevent, detect or discourage double-spending
Possible implementation notes
- Service Credential-based Payments: Clients deposit funds on-chain and receive a batch of unlinkable, single-use service tokens (similar to other note-redeemable payment systems).
- Each token has a nullifier associated with leaf in on-chain Merkle tree, preventing double-spending (at least of redeemed tokens).
- Tokens are redeemed off-chain by submitting them to the service provider, who can redeem in batch
- Tokens can be of equal denominations to simplify anonymity and validation.
- In order to prevent abuse or frontrunning, we may have to make the token/notes redeemable only by a target wallet, which makes this (somewhat?) similar to a payment channel.
- Double spending remains an issue before batch redemption, so mechanism to discourage this will still be required.
- Alternatives: Probabilistic micropayments, but these are possibly too complex or under-researched for this MVP phase.
2. On-Chain reputation protocol
Purpose
The on-chain reputation protocol provides a public, verifiable signal about a service provider’s trustworthiness. It is not a reputation score in the traditional sense (e.g., attestations or reviews), but rather a set of observable economic behaviors that clients can use to infer a basic trust level.
Requirements
- Clients must be able to query public, on-chain data to form a basic trust metric for service providers
- Reputation must be derived from behaviors that are costly to fake or incentivise honest participation
Possible implementation notes
- Provider Deposit: Service providers must publicly commit funds (collateral deposit or stake) in a smart contract as a signal of intent. This deposit is visible and timestamped on-chain.
- Opportunity cost of keeping funds locked should be meaningful.
- Stake is not slashed in MVP, but not withdrawing the funds is an implicit cost.
- Clients must be able to verify that a provider has deposited funds and not recently withdrawn.
- Trust/Reputation score can initially just be a combination of:
- length of time provider’s stake has remained untouched
- total number of service tokens redeemed
- This informs the initial trust metric a client assigns to a service provider before using it for the first time. It can also be used to continuously revise the trust metric for a specific service provider, augmenting the local reputation (see next protocol).
3. Progressive trust protocol
Purpose
This protocol governs the initial interaction and trust evolution between a client and an unknown service provider. It assumes a hostile environment where trust must be earned incrementally, using the signals provided by the on-chain reputation protocol and service quality assessments after each interaction.
Requirements
- Clients should start with minimal trust in a service provider and only increase that trust based on successful interactions.
- Initial interactions should have limited financial exposure to the client (e.g., low-value payments).
- Service providers must be able to advertise their staking/payment address and credentials.
- Clients must be able to verify the provider’s public address, match it against on-chain reputation signals, and decide on risk thresholds (see “On-chain reputation protocol”).
- Clients must evaluate service quality locally after each interaction and adjust local reputation scores accordingly. Bad service providers should not be used again.
Possible implementation notes
- I imagine we can use
Metadata
protocol for the service provider to provide some proof-of-delegation and its staking/payment address to potential clients. It’s possible that pricing and other service-related information be included in theMetadata
exchange. - The first payment from a client to an untrusted service provider should be small enough that it’s an acceptable risk to lose this payment.
Next steps
I propose that we treat the three components and their associated requirements outlined above as the definition of our MVP. The immediate action is to add or remove from this definition to gain consensus on an MVP definition.
The first concrete step after MVP agreement is to design a minimal protocol and specification that:
- Meets the stated requirements, even if imperfectly;
- Clearly documents assumptions, tradeoffs, and known limitations;
- Is practically implementable within the MVP scope.
The desired output is a single specification document that defines the overall incentivisation protocol.