183 lines
105 KiB
HTML
Raw Permalink Normal View History

2024-02-20 09:23:32 +00:00
<!doctype html>
2025-08-13 03:24:27 +00:00
<html lang="en-GB" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-undefined" data-has-hydrated="false">
2024-02-20 09:23:32 +00:00
<head>
<meta charset="UTF-8">
2025-08-13 03:24:27 +00:00
<meta name="generator" content="Docusaurus v3.8.1">
2025-10-03 05:55:52 +00:00
<title data-rh="true">Incentivisation | Waku Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.waku.org/learn/research/research-and-studies/incentivisation"><meta data-rh="true" property="og:locale" content="en_GB"><meta data-rh="true" name="docusaurus_locale" content="en-GB"><meta data-rh="true" name="docsearch:language" content="en-GB"><meta data-rh="true" name="keywords" content="waku, web3"><meta data-rh="true" name="image" content="https://docs.waku.org/_og/e8dc43d175dbb46dde7724d6bfa818e925eb2073.png"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Incentivisation | Waku Documentation"><meta data-rh="true" name="description" content="Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour."><meta data-rh="true" property="og:description" content="Waku is a family of decentralised communication protocols. The Waku Network (TWN) consists of independent nodes running Waku protocols. TWN needs incentivisation (shortened to i13n) to ensure proper node behaviour."><link data-rh="true" rel="icon" href="/theme/image/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.waku.org/learn/research/research-and-studies/incentivisation"><link data-rh="true" rel="alternate" href="https://docs.waku.org/learn/research/research-and-studies/incentivisation" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://docs.waku.org/learn/research/research-and-studies/incentivisation" hreflang="x-default"><link rel="alternate icon" type="image/png" href="/theme/image/favicon.png">
<link rel="icon" type="image/svg+xml" href="/theme/image/favicon.svg"><link rel="stylesheet" href="/assets/css/styles.f0961b96.css">
2026-03-13 09:56:32 +00:00
<script src="/assets/js/runtime~main.5ff1e07d.js" defer="defer"></script>
<script src="/assets/js/main.279f15d8.js" defer="defer"></script>
2025-08-13 03:24:27 +00:00
<meta property="og:image" content="https://docs.waku.org/_og/e8dc43d175dbb46dde7724d6bfa818e925eb2073.png"><meta name="twitter:image" content="https://docs.waku.org/_og/e8dc43d175dbb46dde7724d6bfa818e925eb2073.png"></head>
2024-02-20 09:23:32 +00:00
<body class="navigation-with-keyboard">
2025-08-13 03:24:27 +00:00
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/theme/image/logo-black.svg"><link rel="preload" as="image" href="/theme/image/logo.svg"><style data-emotion="css-global 3rtehh">.lsd-button{width:auto;cursor:pointer;padding:6px 24px;}.lsd-button--disabled{cursor:default;opacity:0.34;}.lsd-button--large{padding:10px 40px;}.lsd-button--medium{padding:6px 24px;}.lsd-button--small{padding:6px 12px;}.lsd-button:hover:not(.lsd-button--disabled) .lsd-button__text{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-button--with-icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-button__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}.lsd-button--large.lsd-button--with-icon{padding:10px 0px 10px 18px;}.lsd-button--large.lsd-button--with-icon .lsd-button__icon{width:42px;}.lsd-button--medium.lsd-button--with-icon{padding:6px 0px 6px 14px;}.lsd-button--medium.lsd-button--with-icon .lsd-button__icon{width:38px;}.lsd-button--small.lsd-button--with-icon{padding:6px 0px 6px 12px;}.lsd-button--small.lsd-button--with-icon .lsd-button__icon{width:34px;}.lsd-button--outlined{background:none;border:1px solid rgb(var(--lsd-border-primary));}.lsd-button--outlined .lsd-button__text{color:rgb(var(--lsd-text-primary));}.lsd-button--filled{background:rgb(var(--lsd-surface-secondary));border:1px solid rgb(var(--lsd-border-primary));}.lsd-button--filled .lsd-button__text{color:rgb(var(--lsd-text-secondary));}</style><style data-emotion="css-global 10bahxd">.lsd-icon-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;cursor:pointer;background:none;padding:0;border:1px solid rgb(var(--lsd-border-primary));}.lsd-icon-button--filled{background-color:rgb(var(--lsd-icon-primary));}.lsd-icon-button--filled svg{--lsd-icon-primary:var(--lsd-icon-secondary);}.lsd-icon-button--disabled{opacity:0.34;cursor:default;}.lsd-icon-button--large{width:40px;height:40px;}.lsd-icon-button--medium{width:32px;height:32px;}.lsd-icon-button--small{width:28px;height:28px;}</style><style data-emotion="css-global icqph9">.lsd-icon-button-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}.lsd-icon-button-group--outlined .lsd-icon-button:not(:last-child){border-right:none;}</style><style data-emotion="css-global 1f43ub2">body *{font-family:var(--lsd-typography-generic-font-family);}.lsd-typography{color:rgb(var(--lsd-text-primary));}.lsd-typography--sans-serif,.lsd-typography--sans-serif *{font-family:sans-serif;}.lsd-typography--serif,.lsd-typography--serif *{font-family:serif;}.lsd-typography--monospace,.lsd-typography--monospace *{font-family:monospace;}.lsd-typography--display1{color:rgb(var(--lsd-text-primary));font-weight:var(--lsd-display1-fontWeight);font-size:var(--lsd
2024-02-20 09:23:32 +00:00
.lsd-dropdown--error
) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not(
.lsd-dropdown--error
2025-10-03 05:55:52 +00:00
) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}</style><style data-emotion="css-global w2g5fy">.lsd-dropdown-item{width:100%;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown-item:not(.lsd-dropdown-item--disabled){cursor:pointer;}.lsd-dropdown-item:not(.lsd-dropdown-item--disabled):hover,.lsd-dropdown-item:not(.lsd-dropdown-item--disabled):focus{outline:none;}.lsd-dropdown-item:not(.lsd-dropdown-item--disabled):hover .lsd-dropdown-item__label,.lsd-dropdown-item:not(.lsd-dropdown-item--disabled):focus .lsd-dropdown-item__label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown-item__label{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.lsd-dropdown-item--disabled{opacity:0.34;}.lsd-dropdown-item__icon{margin-right:18px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}.lsd-dropdown-item--small{padding:5px 9px;height:28px;}.l
2025-08-13 03:24:27 +00:00
<p>The goal of this document is to outline and contextualize our approach to TWN i13n. After providing an overview of Waku and relevant prior work, we focus on Waku Store - a client-server protocol for querying historical messages. We introduce a minimal viable addition to Store to enable i13n, and list research directions for future work.</p>
<header><h1>Incentivisation in decentralised networks</h1><div class="tocMobile_imaF"><div class="tocCollapsible_ROek theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_dxRj"><div></div><span class="lsd-typography lsd-typography--body2">On this page</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="lsd-icon lsd-icon--small lsd-icon--filled"><path d="M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z" fill="black"></path></svg></button></div></div></header>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="incentivisation-tools">Incentivisation tools<a href="#incentivisation-tools" class="hash-link" aria-label="Direct link to Incentivisation tools" title="Direct link to Incentivisation tools"></a></h2>
<p>We can think of incentivisation tools as a two-by-two matrix:</p>
<ul>
<li>rewards vs punishment;</li>
<li>monetary vs reputation.</li>
</ul>
<p>In other words, there are four quadrants:</p>
<ul>
<li>monetary reward: the node gets rewarded;</li>
<li>monetary punishment: the nodes deposits funds that are taken away (slashed) if it misbehaves;</li>
<li>reputation reward: the node&#x27;s reputation increases if it behaves well;</li>
<li>reputation punishment: the node&#x27;s reputation decreases if it behaves badly.</li>
</ul>
<p>Reputation only works if high reputation brings tangible benefits. For example, if nodes chose neighbors based on reputation, low-reputation nodes miss out on potential revenue. Reputation scores may be local (a node assigns scores to its neighbors) or global (each node gets a uniform score). Global reputation in its simplest form involves a trusted third party, although decentralised approaches are also possible.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="prior-work">Prior work<a href="#prior-work" class="hash-link" aria-label="Direct link to Prior work" title="Direct link to Prior work"></a></h2>
<p>We may split incentivized decentralised networks into early file-sharing, blockchains, and decentralised storage.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="early-p2p-file-sharing">Early P2P file-sharing<a href="#early-p2p-file-sharing" class="hash-link" aria-label="Direct link to Early P2P file-sharing" title="Direct link to Early P2P file-sharing"></a></h3>
<p>Early P2P file-sharing networks employ reputation-based approaches and sticky defaults. For instance, the BitTorrent protocol rewards uploading peers with faster downloads. The download bandwidth available to a peer depends on how much it has uploaded. Moreover, peers share pieces of a file before having received it in whole. This non-monetary i13n policy has been proved to work in practice.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="blockchains">Blockchains<a href="#blockchains" class="hash-link" aria-label="Direct link to Blockchains" title="Direct link to Blockchains"></a></h3>
<p>Bitcoin has introduced proof-of-work (PoW) for native monetary rewards in a P2P network. PoW miners are automatically assigned newly mined coins for generating blocks. Miners must expend physical resources to generate a block. If the block is invalid, these expenses are not compensated (implicit monetary punishment). Proof-of-stake (PoS), used in Ethereum and many other cryptocurrencies, introduces explicit monetary punishments. PoS validators lock up (stake) native tokens and get rewarded for validating blocks or slashed for misbehaviour.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="decentralised-storage">Decentralised storage<a href="#decentralised-storage" class="hash-link" aria-label="Direct link to Decentralised storage" title="Direct link to Decentralised storage"></a></h3>
<p>Post-Bitcoin decentralised storage networks include Codex, Storj, Sia, Filecoin, IPFS. Their i13n methods combine techniques from early P2P file-sharing with blockchain-inspired reward mechanisms.</p>
<h1>Waku background</h1><div class="tocMobile_imaF"><div class="tocCollapsible_ROek theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_dxRj"><div></div><span class="lsd-typography lsd-typography--body2">On this page</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="lsd-icon lsd-icon--small lsd-icon--filled"><path d="M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z" fill="black"></path></svg></button></div></div>
<p>Waku is a <a href="https://waku.org/about/architect" target="_blank" rel="noopener noreferrer">family of protocols</a> for a modular privacy-preserving censorship-resistant decentralised communication network. The backbone of Waku is the Relay protocol (and its spam-protected version <a href="https://rfc.vac.dev/spec/17/" target="_blank" rel="noopener noreferrer">RLN-Relay</a>). Additionally, there are light protocols: Store, Filter, and Lightpush. Light protocols are also referred to as client-server protocols and request-response protocols.</p>
<p>A server is a node running Relay and a server-side of at least one light protocol. A client is a node running a client-side of any of the light protocols. A server may sometimes be referred to as a full node, and a client as a light node. There is no strict definition of a full node vs a light node in Waku (see <a href="https://github.com/waku-org/research/issues/28" target="_blank" rel="noopener noreferrer">discussion</a>).</p>
<p>In light protocols, a client sends a request to a server, and a server performs some actions and returns a response:</p>
<ul>
<li><a href="https://rfc.vac.dev/spec/13/" target="_blank" rel="noopener noreferrer">Store</a>: the server responds with messages relayed that match a set of criteria;</li>
<li><a href="https://rfc.vac.dev/spec/12/" target="_blank" rel="noopener noreferrer">Filter</a>: the server will relay (only) messages that pass a filter to the client;</li>
<li><a href="https://rfc.vac.dev/spec/19/" target="_blank" rel="noopener noreferrer">Lightpush</a>: the server publishes the client&#x27;s message to the Relay network.</li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="waku-i13n-challenges">Waku i13n challenges<a href="#waku-i13n-challenges" class="hash-link" aria-label="Direct link to Waku i13n challenges" title="Direct link to Waku i13n challenges"></a></h2>
<p>Waku has no consensus and no native token, which brings it closer to reputation-incentivised file-sharing networks. As of late 2023, Waku only operates under reputation-based rewards and punishments. While <a href="https://rfc.vac.dev/spec/17/" target="_blank" rel="noopener noreferrer">RLN-Relay</a> adds monetary punishments for spammers, slashing is yet to be activated.</p>
<p>Monetary rewards and punishments should ideally be atomically linked with the node&#x27;s behaviour. A benefit of blockchains in this respect is that the desired behaviour of miners or validators can be verified automatically. Enforcing atomicity in a communication network is more challenging: it is non-trivial to prove that a given piece of data has been relayed.</p>
<p>Our goal is to combine monetary and reputation-based incentives for Waku. Monetary incentives have demonstrated their robustness in blockchains. We think they are necessary to scale the network beyond the initial phase when it&#x27;s maintained altruistically.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="waku-store">Waku Store<a href="#waku-store" class="hash-link" aria-label="Direct link to Waku Store" title="Direct link to Waku Store"></a></h2>
<p>Waku Store is a light protocol for querying historic messages that works as follows:</p>
<ol>
<li>the client sends a <code>HistoryQuery</code> to the server;</li>
<li>the server sends a <code>HistoryResponse</code> to the client.</li>
</ol>
<p>The response may be split into multiple parts, as specified by pagination parameters in <code>PagingInfo</code>.</p>
<p>We define a <em>relevant</em> message as a message that matches client-defined criteria (e.g., relayed within a given time frame). Upon receiving a request, a server should quickly send back a response containing all and only relevant messages.</p>
<h1>Waku Store incentivisation</h1><div class="tocMobile_imaF"><div class="tocCollapsible_ROek theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_dxRj"><div></div><span class="lsd-typography lsd-typography--body2">On this page</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="lsd-icon lsd-icon--small lsd-icon--filled"><path d="M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z" fill="black"></path></svg></button></div></div>
<p>An incentivised Store protocol has the following extra steps:</p>
<ol>
<li>pricing:
<ol>
<li>cost calculation</li>
<li>price advertisement</li>
<li>price negotiation</li>
</ol>
</li>
<li>payment:
<ol>
<li>payment itself</li>
<li>proof of payment</li>
</ol>
</li>
<li>reputation</li>
<li>results cross-checking</li>
</ol>
<p>In this document, we focus on the simplest proof-of-concept (PoC) i13n for Store. Compared to the fully-fledged protocol, the PoC version is simplified in the following ways:</p>
<ul>
<li>cost calculation is based on a common-knowledge price;</li>
<li>there is no price advertisement and no price negotiation;</li>
<li>each query is paid for in a separate transaction, <code>txid</code> acts a proof of payment;</li>
<li>the reputation system is simplified (see below);</li>
<li>the results are not cross-checked.</li>
</ul>
<p>In the PoC protocol:</p>
<ol>
<li>the client calculates the price based on the known rate per hour of history;</li>
<li>the client pays the appropriate amount to the server&#x27;s address;</li>
<li>the client sends a <code>HistoryQuery</code> to the server alongside the proof of payment (<code>txid</code>);</li>
<li>the server checks that the <code>txid</code> corresponds to a confirmed transaction with at least the required amount;</li>
<li>the server sends a <code>HistoryResponse</code> to the client.</li>
</ol>
<p>In further subsections, we list the potential direction for future work towards a fully-fledged i13n mechanism.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="pricing">Pricing<a href="#pricing" class="hash-link" aria-label="Direct link to Pricing" title="Direct link to Pricing"></a></h2>
<p>For PoC, we assume a constant price per hour of history. This price and the blockchain address of the server are assumed to be common knowledge. This simplifies the client-server interaction, avoiding the price negotiation step.</p>
<p>In the future versions of the protocol, the price will be negotiated and will depend on multiple parameters, such as the total size of the relevant messages in the response.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="future-work">Future work<a href="#future-work" class="hash-link" aria-label="Direct link to Future work" title="Direct link to Future work"></a></h3>
<ul>
<li>DoS protection - see <a href="https://github.com/waku-org/research/issues/66" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/66</a></li>
<li>Cost calculation - see <a href="https://github.com/waku-org/research/issues/35" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/35</a></li>
<li>Price advertisement - see <a href="https://github.com/waku-org/research/issues/51" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/51</a></li>
<li>Price negotiation - see <a href="https://github.com/waku-org/research/issues/52" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/52</a></li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="payment">Payment<a href="#payment" class="hash-link" aria-label="Direct link to Payment" title="Direct link to Payment"></a></h2>
<p>For the PoC, each request is paid for with a separate transaction. The transaction hash (<code>txid</code>) acts as a proof of payment. The server verifies the payment by ensuring that:</p>
<ol>
<li>the transaction has been confirmed;</li>
<li>the transaction is paying the proper amount to the server&#x27;s account;</li>
<li>the <code>txid</code> does not correspond to any prior response.</li>
</ol>
<p>The client gives proof of payment before it receives the response. Other options could be:</p>
<ol>
<li>the client pays after the fact;</li>
<li>the client pays partly upfront and partly after the fact;</li>
<li>a centralised third party (either trusted or semi-trusted, like a smart contract) ensures atomicity;</li>
<li>cryptographically ensured atomicity (similar to atomic swaps, Lightning, or Hopr).</li>
</ol>
<p>Our design considerations are:</p>
<ul>
<li>the PoC protocol should be simple;</li>
<li>servers are more &quot;permanent&quot; entities and are more likely to have long-lived identities;</li>
<li>it is more important to protect the clients&#x27;s privacy than the server&#x27;s privacy.</li>
</ul>
<p>In light of these criteria, we suggest that the client pays first. This is simpler than splitting the payment, or involving an extra atomicity-enforcing mechanism. Moreover, pre-payment is arguably more privacy-preserving than post-payment, which encourages servers to deanonymise clients to prevent fraud.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="future-work-1">Future work<a href="#future-work-1" class="hash-link" aria-label="Direct link to Future work" title="Direct link to Future work"></a></h3>
<ul>
<li>Add more payment methods - see <a href="https://github.com/waku-org/research/issues/58" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/58</a></li>
<li>Design a subscription model with service credentials - see <a href="https://github.com/waku-org/research/issues/59" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/59</a></li>
<li>Add privacy to service credentials - see <a href="https://github.com/waku-org/research/issues/60" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/60</a></li>
<li>Consider the impact of network disruptions - see <a href="https://github.com/waku-org/research/issues/65" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/65</a></li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="reputation">Reputation<a href="#reputation" class="hash-link" aria-label="Direct link to Reputation" title="Direct link to Reputation"></a></h2>
<p>We use reputation to discourage the server from taking the payment and not responding. The client keeps track of the server&#x27;s reputation:</p>
<ul>
<li>all servers start with zero reputation points;</li>
<li>if the server honours the request, it gets <code>+n</code> points;</li>
<li>if the server does not respond before a timeout, it gets <code>-m</code> points.</li>
<li>if the server&#x27;s reputation drops below <code>k</code> points, the client will never query it again.</li>
</ul>
<p><code>n</code>, <code>m</code>, and <code>k</code> are subject to configuration.</p>
<p>Optionally, a client may treat a given server as trusted, assigning it a constant positive reputation.</p>
<p>Potential issues:</p>
<ul>
<li>An attacker can establish new server identities and continue running away with clients&#x27; money. Countermeasures:
<ul>
<li>a client only queries trusted servers (which however leads to centralisation);</li>
<li>when querying a new server, a client first sends a small (i.e. cheap) request as a test;</li>
<li>more generally, the client selects a server on a case-by-case basis, weighing the payment amount against the server&#x27;s reputation.</li>
</ul>
</li>
<li>The ban mechanism can theoretically be abused. For instance, a competitor may attack the victim server and cause the clients who were awaiting the response to ban that server. Countermeasure: prevent DoS-attacks.</li>
</ul>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="future-work-2">Future work<a href="#future-work-2" class="hash-link" aria-label="Direct link to Future work" title="Direct link to Future work"></a></h3>
<p>Design a more comprehensive reputation system:</p>
<ul>
<li>local reputation - see <a href="https://github.com/waku-org/research/issues/48" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/48</a></li>
<li>global reputation - see <a href="https://github.com/waku-org/research/issues/49" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/49</a></li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="results-cross-checking">Results cross-checking<a href="#results-cross-checking" class="hash-link" aria-label="Direct link to Results cross-checking" title="Direct link to Results cross-checking"></a></h2>
<p>As there is no consensus over past messages, a client may want to query multiple servers and merge their responses. Cross-checking helps ensure that servers are a) not censoring real messages; b) not injecting fake messages into history. Cross-checking is absent in PoC but may be considered later.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="future-work-3">Future work<a href="#future-work-3" class="hash-link" aria-label="Direct link to Future work" title="Direct link to Future work"></a></h3>
<ul>
<li>Cross-checking the results against censorship - see <a href="https://github.com/waku-org/research/issues/57" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/57</a></li>
<li>Use RLN to limit fake message insertion - see <a href="https://github.com/waku-org/research/issues/38" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/38</a></li>
</ul>
<h1>Evaluation</h1><div class="tocMobile_imaF"><div class="tocCollapsible_ROek theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_dxRj"><div></div><span class="lsd-typography lsd-typography--body2">On this page</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="lsd-icon lsd-icon--small lsd-icon--filled"><path d="M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z" fill="black"></path></svg></button></div></div>
<p>We should think about what the success metrics for an incentivised protocol are, and how to measure them both in simulated settings, as well as in a live network.</p>
<h1>Longer-term future work</h1><div class="tocMobile_imaF"><div class="tocCollapsible_ROek theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_dxRj"><div></div><span class="lsd-typography lsd-typography--body2">On this page</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="lsd-icon lsd-icon--small lsd-icon--filled"><path d="M10.5 5.66125L9.6775 4.83875L7 7.51041L4.3225 4.83874L3.5 5.66125L7 9.16125L10.5 5.66125Z" fill="black"></path></svg></button></div></div>
<ul>
<li>Analyze privacy issues - see <a href="https://github.com/waku-org/research/issues/61" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/61</a></li>
<li>Analyze decentralised storage protocols and their relevance e.g. as back-end storage for Store servers - see <a href="https://github.com/waku-org/research/issues/34" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/34</a></li>
<li>Analyze the role of message senders, in particular, whether they should pay for sending non-ephemeral messages - see <a href="https://github.com/waku-org/research/issues/32" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/32</a></li>
<li>Generalise incentivisation protocol to other Waku light protocols (Lightpush and Filter) - see <a href="https://github.com/waku-org/research/issues/67" target="_blank" rel="noopener noreferrer">https://github.com/waku-org/research/issues/67</a>.</li>
2026-03-13 09:56:32 +00:00
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/waku-org/docs.waku.org/tree/develop/docs/learn/research/research-and-studies/incentivisation.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><div class="icon_S7Kx m_thRi"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#fff" fill-rule="evenodd" d="m12.707 2.393.9.9c.526.52.526 1.367 0 1.887L4.787 14H2v-2.787l6.933-6.94 1.887-1.88c.52-.52 1.367-.52 1.887 0M3.333 12.667l.94.04 6.547-6.554-.94-.94-6.547 6.547z" clip-rule="evenodd"></path></svg></div><span class="lsd-typography lsd-typography--body2">Edit this page</span></a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/learn/research/research-and-studies/capped-bandwidth"><div class="icon_S7Kx m_thRi"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="#fff" d="M11.667 6.417h-7.1L7.83 3.156 7 2.333 2.334 7 7 11.667l.823-.823-3.255-3.26h7.099z"></path></svg></div><span class="lsd-typography lsd-typography--body2 pagination-nav__label">Capped Bandwidth in Waku</span></a><a class="pagination-nav__link pagination-nav__link--next" href="/learn/research/research-and-studies/maximum-bandwidth"><span class="lsd-typography lsd-typography--body2 pagination-nav__label">Maximum Bandwidth for Global Adoption</span><div class="icon_S7Kx m_thRi"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="#fff" d="m7 2.334-.823.822 3.255 3.26H2.333v1.167h7.1l-3.256 3.261.823.823L11.667 7z"></path></svg></div></a></nav></div></div><div class="gap1_XuuQ"></div><div class="toc_pP_5"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#incentivisation-tools" class="table-of-contents__link toc-highlight">Incentivisation tools</a></li><li><a href="#prior-work" class="table-of-contents__link toc-highlight">Prior work</a><ul><li><a href="#early-p2p-file-sharing" class="table-of-contents__link toc-highlight">Early P2P file-sharing</a></li><li><a href="#blockchains" class="table-of-contents__link toc-highlight">Blockchains</a></li><li><a href="#decentralised-storage" class="table-of-contents__link toc-highlight">Decentralised storage</a></li></ul></li><li><a href="#waku-i13n-challenges" class="table-of-contents__link toc-highlight">Waku i13n challenges</a></li><li><a href="#waku-store" class="table-of-contents__link toc-highlight">Waku Store</a></li><li><a href="#pricing" class="table-of-contents__link toc-highlight">Pricing</a><ul><li><a href="#future-work" class="table-of-contents__link toc-highlight">Future work</a></li></ul></li><li><a href="#payment" class="table-of-contents__link toc-highlight">Payment</a><ul><li><a href="#future-work-1" class="table-of-contents__link toc-highlight">Future work</a></li></ul></li><li><a href="#reputation" class="table-of-contents__link toc-highlight">Reputation</a><ul><li><a href="#future-work-2" class="table-of-contents__link toc-highlight">Future work</a></li></ul></li><li><a href="#results-cross-checking" class="table-of-contents__link toc-highlight">Results cross-checking</a><ul><li><a href="#future-work-3" class="table-of-contents__link toc-highlight">Future work</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer"><div class="container container-fluid firstRow_ar1q"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a class="footerLogoLink_BH7S" href="/"><img src="/theme/image/logo.svg" alt="Waku" class="themedImage_kfRS themedImage--light_BL8e footer__logo" width="22"><img src="/theme/image/logo.svg" alt="Waku" class="themedImage_kfRS themedImage--dark_OvIx footer__logo" width="22"></a></div>
2024-02-20 09:23:32 +00:00
</body>
</html>