<html><head><title>2023-10-09 Waku Weekly</title><metacharSet="utf-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><metaproperty="og:title"content="2023-10-09 Waku Weekly"/><metaproperty="og:description"content="nwaku § feat: Implement /admin Rest Api endpoint {E:REST API service node} achieved: /admin Rest API endpoint implemented next: Restructure openapi descriptions and producing swagger ui like live document of all rest interfaces."/><metaproperty="og:image"content="https://roadmap.logos.co/static/og-image.png"/><metaproperty="og:width"content="1200"/><metaproperty="og:height"content="675"/><linkrel="icon"href="../../static/icon.png"/><metaname="description"content="nwaku § feat: Implement /admin Rest Api endpoint {E:REST API service node} achieved: /admin Rest API endpoint implemented next: Restructure openapi descriptions and producing swagger ui like live document of all rest interfaces."/><metaname="generator"content="Logos Roadmaps"/><linkrel="preconnect"href="https://fonts.googleapis.com"/><linkrel="preconnect"href="https://fonts.gstatic.com"/><linkhref="../../index.css"rel="stylesheet"type="text/css"spa-preserve/><linkhref="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css"rel="stylesheet"type="text/css"spa-preserve/><linkhref="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=sans-serif:wght@400;700&family=sans-serif:ital,wght@0,400;0,600;1,400;1,600&display=swap"rel="stylesheet"type="text/css"spa-preserve/><scriptsrc="../../prescript.js"type="application/javascript"spa-preserve></script><scripttype="application/javascript"spa-preserve>constfetchData=fetch(`../../static/contentIndex.json`).then(data=>data.json())</script></head><bodydata-slug="waku/updates/2023-10-09"><divid="quartz-root"class="page"><divid="quartz-body"><divclass="left sidebar"><h1class="page-title"><ahref="../..">Logos Collective Project Roadmaps</a></h1><divclass="spacer mobile-only"></div><divclass="search"><divid="search-icon"><p>Search</p><div></div><svgtabIndex="0"aria-labelledby="title desc"role="img"xmlns="http://www.w3.org/2000/svg"viewBox="0 0 19.9 19.7"><titleid="title">Search</title><descid="desc">Search</desc><gclass="search-path"fill="none"><pathstroke-linecap="square"d="M18.5 18.3l-5.4-5.4"></path><circlecx="8"cy="8"r="7"></circle></g></svg></div><divid="search-container"><divid="search-space"><inputautocomplete="off"id="search-bar"name="search"type="text"aria-label="Search for something"placeholder="Search for something"/><divid="results-container"></div></div></div></div><divclass="darkmode"><inputclass="toggle"id="darkmode-toggle"type="checkbox"tabIndex="-1"/><labelid="toggle-label-light"for="darkmode-toggle"tabIndex="-1"><svgxmlns="http://www.w3.org/2000/svg"xmlnsXlink="http://www.w3.org/1999/xlink"version="1.1"id="dayIcon"x="0px"y="0px"viewBox="0 0 35 35"style="enable-background:new 0 0 35 35;"xmlSpace="preserve"><title>Light mode</title><pathd="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5zM7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26zM17.5,6C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6zM27.5,9c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9zM6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06L6.439,8.561zM33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16zM28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2C28.711,30.83
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/2075"class="external">feat: Implement /admin Rest Api endpoint</a></strong> {E:REST API service node}</p>
<ul>
<li><em>achieved</em>: /admin Rest API endpoint implemented</li>
<li><em>next</em>: Restructure openapi descriptions and producing swagger ui like live document of all rest interfaces. Restructure Rest API schema types.</li>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/2064"class="external">chore: notify user if docker-compose fails</a></strong> {enhancement}, {E:3.2: Basic DoS protection in production}</p>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/2042"class="external">feat: allowing users to choose port 0 for dynamically allocated ports</a></strong> {enhancement}</p>
<li><em>achieved</em>: analyzed code and found the different data structures affected by the dynamic port allocation. Considered the implications of different approaches to solve the issue, discussed and translated the different options into code.
Started the implementation of the chosen solution, with part of the solution already working.</li>
<li><em>next</em>: complete the first working version of the solution, improve its design/architecture, and test.</li>
</ul>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/1941"class="external">feat: Service peer selection on specific shards</a></strong> {E:1.4: Sharded peer management and discovery}</p>
<ul>
<li><em>achieved</em>: Filter, Store, Light push REST APIs discovery handler (a rework of the previous solution)</li>
</ul>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/1914"class="external">setting up static sharding fleet for Status</a></strong> {E:Static sharding}</p>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/1888"class="external">PostgreSQL</a></strong> {E:2.1: Production testing of existing protocols}, {E:PostgreSQL}</p>
<ul>
<li><em>achieved</em>: Applied performance comparison between <em>SQLite</em> and <em>Postgres</em> but in this case, making direct requests from a <code>go-waku</code> unittest that @richard-ramos had prepared.
After directly comparing the <em>Store</em> protocol, noticed that the bottle neck is within the database itself. i.e. the <em>SQLite</em> database performs better than <em>Postgres</em>, given that we have a very simple schema and simple queries, without joins. Adding indexes to the <em>Postgres</em> database didn’t help very much. For example, given the same query, <em>SQLite</em> takes 1ms whereas <em>Postgres</em> takes 6ms.</li>
<li>Wrap up the <em>Store</em> testing environment and install it into our sandbox machine, <code>metal-01.he-eu-hel1.wakudev.misc.statusim.net</code>, so that anyone can proceed from this point (two databases with the same dataset of ~2 million rows .) in case someone is keen on analyzing performance or debug in a more realistic testing scenery. This will include concurrent queries from multiple nodes, where PostgreSQL is expected to perform better.</li>
<li>Start extracting the database creation and indexes creation to outside the code base.</li>
</ul>
</li>
</ul>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/1885"class="external">chore: add retention policy with GB or MB limitation</a></strong> {enhancement}, {E:PostgreSQL}</p>
<p>In review: the database bug to delete limited messages/rows
Upcoming/working: updated retention policy + test + missing tes on timestamp based retention policy
Undergoing: MUID concept on message level</p>
<p><strong><ahref="https://github.com/waku-org/nwaku/issues/1797"class="external">feat: provide a way to define advertised addresses</a></strong> {enhancement}</p>
<ul>
<li><em>achieved</em>: went over the code and found the root cause of the issue and a preliminary solution</li>
<li><em>next</em>: finish discussing the approach to the solution and implement it</li>
<li><em>achieved</em>: PR open for allowing peer management for multiple pubsub topics/shard</li>
<li><em>next</em>: getting reviews & releasing</li>
</ul>
<p><strong><ahref="https://github.com/waku-org/js-waku/issues/914"class="external">Peer Management: Connection and Disconnection</a></strong> {track:restricted-run}, {E:2.1: Production testing of existing protocols}</p>
<ul>
<li><em>achieved</em>: investigated & closed #1412</li>
<li><em>next</em>: look into addressing deliberate vs accidental disconnections</li>