roadmap/nomos/updates/2024-04-29.html

135 lines
128 KiB
HTML
Raw Normal View History

2024-04-30 16:52:21 +00:00
<!DOCTYPE html>
2024-05-03 14:11:32 +00:00
<html><head><title>2024-01-29 Nomos weekly</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="2024-01-29 Nomos weekly"/><meta property="og:description" content="Weekly update of Nomos."/><meta property="og:image" content="https://roadmap.logos.co/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../static/icon.png"/><meta name="description" content="Weekly update of Nomos."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link href="../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&amp;family=sans-serif:wght@400;700&amp;family=sans-serif:ital,wght@0,400;0,600;1,400;1,600&amp;display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="nomos/updates/2024-04-29"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title "><a href="../..">Logos Collective Project Roadmaps</a></h1><div class="spacer mobile-only"></div><div class="search "><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode "><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="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><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,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,26z M17.5,6 C18.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,6z M27.5,9 c0.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.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-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.06 L6.439,8.561z M33.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,16z M28.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,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,2
2024-04-30 16:52:21 +00:00
<h3 id="research"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research" class="internal"> §</a></h3>
<ul>
<li><a href="https://www.notion.so/Mixnet-v2-Proof-of-Concept-102d0563e75345a3a6f1c11791fbd746?pvs=4" class="external">Planning</a> the Mixnet v2 PoC simulation (WIP): To simulate the behavior of the new design, we need to cover some design options (such as the way of broadcasting, etc.). Well create a simulator with these options to find the optimal design.</li>
<li><a href="https://www.notion.so/Mixnet-v2-Proof-of-Concept-102d0563e75345a3a6f1c11791fbd746?pvs=4#12f00f18441049a893687f011ee3c683" class="external">Researched</a> the existing Mixnet simulators: They provide Python simulators focusing only on global passive adversaries (GPA) by measuring the Shannon entropy as a metric for anonymity (the uncertainty of linking an output message with a certain input message). We can adopt this practice for GPA analysis. For active adversary analysis, we need to figure out how to simulate tagging attacks and n-1 attacks (if necessary). For tagging attacks, we can probably perform an indirect analysis by measuring how many nodes a block is disseminated in before its selected/proposed.</li>
<li><a href="https://www.notion.so/Requirements-for-PPoS-Network-Privacy-946893155a17459eb8f3a3165e3611f5" class="external">Summarized</a> the requirements for the Mixing gadget.</li>
<li>Optimization of mixnets: For a scenario when n nodes, sampled from N nodes with at most M adversarial nodes, we designed an algorithm. Given the number of nodes per layer n_1, the fraction of compromised paths which can be tolerated αmax, and the probability that the fraction of compromised paths is greater than 𝛼𝑚𝑎𝑥αmax, δ, the algorithm outputs the number of layers L: <a href="https://www.notion.so/Analysis-of-failures-in-the-mix-network-feeef349720842759c59785af71c7c59#762ea606be4540b4877e5bde74cb652e" class="external">Summary</a>. The algorithm is implemented in Python, but the code needs further refinement.</li>
<li>Analysis of anonymity and communication failures in the mix gadget: Assuming that k nodes are sampled from N nodes, where at most M nodes are adversarial, we derived the probability that all k nodes are adversarial and the probability that at least one node is adversarial. The latter is the probability of communication failure, and the former is the probability of anonymity failure. The probability of anonymity failure decreases with k, and the probability of communication failure increases with k. We derived upper bounds on these probabilities. For large N, the probability of anonymity failure is bounded above by 2(𝑀/𝑁)𝑘/𝜋2(M/N)k/π​, and the probability of communication failure is bounded by 1𝜋(1𝑀/𝑁)𝑘/21π(1M/N)k/2. Note that M in the latter corresponds not only to adversarial but also to “slow” nodes or nodes with bad connections. The <a href="https://www.notion.so/Analysis-of-failures-in-the-mix-network-feeef349720842759c59785af71c7c59?pvs=4#5354ec4b641743709a2429327ef00ed3" class="external">summary</a> of this work is in progress.</li>
<li>Work on analysis of the new mix gadget design is currently in progress.</li>
</ul>
<h3 id="development"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development" class="internal"> §</a></h3>
<ul>
<li>No development updates.</li>
</ul>
<h2 id="data-availability"><code>Data Availability</code><a aria-hidden="true" tabindex="-1" href="#data-availability" class="internal"> §</a></h2>
<h3 id="research-1"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-1" class="internal"> §</a></h3>
<ul>
<li>No updates this week.</li>
</ul>
<h3 id="development-1"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-1" class="internal"> §</a></h3>
<ul>
<li>Initial DA protocol benchmarking uncovered 2 performance issues that will be addressed as soon as possible: <a href="https://github.com/logos-co/nomos-node/tree/da-v1-encoding-benchmarks" class="external">WIP</a>.</li>
<li>Add Cert verification to DA mempool: - Merged payload to item conversion in mempool <a href="https://github.com/logos-co/nomos-node/pull/634" class="external">PR</a>. Added certificate verification in da mempool <a href="https://github.com/logos-co/nomos-node/pull/641" class="external">PR merged</a>.</li>
<li>DA Indexer service definition: Service that is responsible for DA API functionality, is able to track new blocks and assign metadata to previously attested chunks <a href="https://github.com/logos-co/nomos-node/pull/643" class="external">PR</a>. Note that the service is defined, but other services like storage are not yet integrated. These missing pieces will be the focus of upcoming weeks.</li>
</ul>
<h2 id="pposconsensus"><code>PPoS/Consensus</code><a aria-hidden="true" tabindex="-1" href="#pposconsensus" class="internal"> §</a></h2>
<h3 id="research-2"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-2" class="internal"> §</a></h3>
<ul>
<li>Wealth concentration <a href="https://www.notion.so/Does-Crypsinous-Leader-Election-Function-lead-to-wealth-concentration-in-PoS-b81f07a791b745438443f51f00ac258f" class="external">document</a> is in the process of reorganization with new studies being according to 8 parameters (see table 1 in the doc - were able to use way more realistic numbers as well, because software evolved), 3 classes of stakers (lower, mid, higher - we still lack a precise definition of them); and 3 fork-choice rules (lowest, highest, stochastic).</li>
<li>The first study assumes the relative stake is known and compares the 3 classes of stakers when the protocol enforces each of the 3 fork-choice rules under different parametrizations (sensitivity analysis).</li>
<li>The second study relaxes the assumption that the relative stake is known. We use and evaluate the impact of David and Alexanders algorithm.</li>
<li>The third study relaxes the assumption that the protocol enforces the fork-choice rule. Each staker is allowed to use the rule of its choice.</li>
<li>Investigated the current state of the <a href="https://github.com/logos-co/nomos-node/issues/637" class="external">orphan proofs problem</a>. After internal discussions, it was understood that this is a low priority for now, and we need to evaluate the real impact of this problem and how often it can happen first.</li>
</ul>
<h3 id="development-2"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-2" class="internal"> §</a></h3>
<ul>
<li>No updates this week.</li>
</ul>
<h2 id="coordination-layer"><code>Coordination Layer</code><a aria-hidden="true" tabindex="-1" href="#coordination-layer" class="internal"> §</a></h2>
<h3 id="research-3"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-3" class="internal"> §</a></h3>
<ul>
<li>Completed the <a href="https://www.notion.so/Proof-Systems-Survey-ffc625a2ff82407db7a45fd193136258" class="external">Proof Systems Survey</a>: added updates on aggregation, folding schemes, and some protocols. Also, listed and grouped libraries with existing implementations. This week, there will be more detailed explanations about these libraries.</li>
<li>Celestia ZK-Research Group messages have been summarized in a <a href="https://www.notion.so/Celestia-ZK-in-the-Base-Layer-2be0ad708cff47fb844d1f1fac68b622" class="external">document</a> with annotations and discussions around parts that might be important to us.</li>
</ul>
<h3 id="development-3"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-3" class="internal"> §</a></h3>
<ul>
<li>No development updates.</li>
</ul>
<h2 id="testnet--insights"><code>Testnet + Insights</code><a aria-hidden="true" tabindex="-1" href="#testnet--insights" class="internal"> §</a></h2>
<h3 id="research-4"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-4" class="internal"> §</a></h3>
<ul>
<li>Extended the metrics and visualizations <a href="https://www.notion.so/On-metrics-insights-and-instrumentation-d8c8357b4e304fa3806f1b7f0e6b172d#b12d861deede4f71a31e33253c8e726a" class="external">document</a> by adding a planning block to match with yearly planning and resources.</li>
</ul>
<h3 id="development-4"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-4" class="internal"> §</a></h3>
<ul>
<li>No updates this week.</li>
</ul>
<h2 id="user-tools"><code>User Tools</code><a aria-hidden="true" tabindex="-1" href="#user-tools" class="internal"> §</a></h2>
<h3 id="research-5"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-5" class="internal"> §</a></h3>
<ul>
<li>No updates this week.</li>
</ul>
<h3 id="development-5"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-5" class="internal"> §</a></h3>
<ul>
<li>No updates this week.</li>
</ul>
<h2 id="miscellaneous"><code>Miscellaneous</code><a aria-hidden="true" tabindex="-1" href="#miscellaneous" class="internal"> §</a></h2>
<ul>
<li>Latest discussions triggered the need for yearly planning modifications: Wrote a <a href="https://www.notion.so/Nomos-Engineering-planning-3-4Q-2024-f90859a189294419b13ae94682e96bf7" class="external">document</a> explaining year expectations + resources planning.</li>
<li>Created an initial Vac QA collaboration <a href="https://www.notion.so/Nomos-node-testing-QA-15ae2611a23f4fe391c600c1b889c0ca" class="external">document</a> with cross-team interactions plan.</li>
<li>Milestone Execution plan has been <a href="https://www.notion.so/2024-Milestone-Execution-Plan-62004acdaa5e4c65bd8c5b10e935e78b" class="external">published</a>.</li>
<li>Logos - Nomos update added - this will be an introductory one with focus on progress of research and engineering in the future.</li>
<li>New Nomos blog to be published this week with another to be set to review.</li>
</ul></article></div><div class="right sidebar"><div class="graph "><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{&quot;drag&quot;:true,&quot;zoom&quot;:true,&quot;depth&quot;:1,&quot;scale&quot;:1.1,&quot;repelForce&quot;:0.5,&quot;centerForce&quot;:0.3,&quot;linkDistance&quot;:30,&quot;fontSize&quot;:0.6,&quot;opacityScale&quot;:1,&quot;showTags&quot;:true,&quot;removeTags&quot;:[]}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{&quot;drag&quot;:true,&quot;zoom&quot;:true,&quot;depth&quot;:-1,&quot;scale&quot;:0.9,&quot;repelForce&quot;:0.5,&quot;centerForce&quot;:0.3,&quot;linkDistance&quot;:30,&quot;fontSize&quot;:0.6,&quot;opacityScale&quot;:1,&quot;showTags&quot;:true,&quot;removeTags&quot;:[]}"></div></div></div><div class="toc desktop-only"><button type="button" id="toc"><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#p2p-privacy" data-for="p2p-privacy">P2P Privacy</a></li><li class="depth-1"><a href="#research" data-for="research">Research</a></li><li class="depth-1"><a href="#development" data-for="development">Development</a></li><li class="depth-0"><a href="#data-availability" data-for="data-availability">Data Availability</a></li><li class="depth-1"><a href="#research-1" data-for="research-1">Research</a></li><li class="depth-1"><a href="#development-1" data-for="development-1">Development</a></li><li class="depth-0"><a href="#pposconsensus" data-for="pposconsensus">PPoS/Consensus</a></li><li class="depth-1"><a href="#research-2" data-for="research-2">Research</a></li><li class="depth-1"><a href="#development-2" data-for="development-2">Development</a></li><li class="depth-0"><a href="#coordination-layer" data-for="coordination-layer">Coordination Layer</a></li><li class="depth-1"><a href="#research-3" data-for="research-3">Research</a></li><li class="depth-1"><a href="#development-3" data-for="development-3">Development</a></li><li class="depth-0"><a href="#testnet--insights" data-for="testnet--insights">Testnet + Insights</a></li><li class="depth-1"><a href="#research-4" data-for="research-4">Research</a></li><li class="depth-1"><a href="#development-4" data-for="development-4">Development</a></li><li class="depth-0"><a href="#user-tools" data-for="user-tools">User Tools</a></li><li class="depth-1"><a href="#research-5" data-for="research-5">Research</a></li><li class="depth-1"><a href="#development-5" data-for="development-5">Development</a></li><li class="depth-0"><a href="#miscellaneous" data-for="miscellaneous">Miscellaneous</a></li></ul></div></div><div class="backlinks "><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div></div></div><footer class><hr/><p>Created with <a href="https://quartz.jzhao.xyz/">Quartz v4.1.0</a>, © 2024</p><ul><li><a href="https://github.com/logos-co/roadmap">GitHub</a></li><li><a href="https://discord.com/invite/logos-state">Discord Community</a></li></ul></footer></div></body><script type="application/javascript">// quartz/components/scripts/quartz/components/scripts/callout.inline.ts
function toggleCallout() {
const outerBlock = this.parentElement;
outerBlock.classList.toggle(`is-collapsed`);
const collapsed = outerBlock.classList.contains(`is-collapsed`);
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
outerBlock.style.maxHeight = height + `px`;
let current = outerBlock;
let parent = outerBlock.parentElement;
while (parent) {
if (!parent.classList.contains(`callout`)) {
return;
}
const collapsed2 = parent.classList.contains(`is-collapsed`);
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
parent.style.maxHeight = height2 + `px`;
current = parent;
parent = parent.parentElement;
}
}
function setupCallout() {
const collapsible = document.getElementsByClassName(
`callout is-collapsible`
);
for (const div of collapsible) {
const title = div.firstElementChild;
if (title) {
title.removeEventListener(`click`, toggleCallout);
title.addEventListener(`click`, toggleCallout);
const collapsed = div.classList.contains(`is-collapsed`);
const height = collapsed ? title.scrollHeight : div.scrollHeight;
div.style.maxHeight = height + `px`;
}
}
}
document.addEventListener(`nav`, setupCallout);
window.addEventListener(`resize`, setupCallout);
</script><script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
theme: darkMode ? 'dark' : 'default'
});
document.addEventListener('nav', async () => {
await mermaid.run({
querySelector: '.mermaid'
})
});
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../postscript.js" type="module"></script></html>