roadmap/nomos/updates/2024-03-25.html

126 lines
128 KiB
HTML
Raw Normal View History

2024-03-26 21:45:50 +00:00
<!DOCTYPE html>
2024-05-03 14:11:32 +00:00
<html><head><title>2024-03-25 Nomos weekly</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="2024-03-25 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-03-25"><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-03-26 21:45:50 +00:00
<h3 id="research"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research" class="internal"> §</a></h3>
<ul>
<li>No research updates at this moment.</li>
</ul>
<h3 id="development"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development" class="internal"> §</a></h3>
<ul>
<li>Fixed a <a href="https://github.com/logos-co/nomos-specs/pull/84" class="external">bug</a> in the Cryptarchia spec regarding <code>try_create_fork</code> to find parent block.</li>
<li>Stake Relativization Executable Specification is done: <a href="https://github.com/logos-co/nomos-specs/pull/86" class="external">PR</a>. Also, implementing stake relativization revealed some bugs in our Cryptarchia spec which took some time to debug and write tests for. Also, the stake relativization spec has been updated with learnings from the implementation (changes were mostly around time management since we need the inferred total stake to be stable by the time we enter the next epoch).</li>
<li>Regarding block rewards, our proposal would be to postpone this work for when we will have the CL available, as its likely best done through a special transaction (probably in a block body rather than in the header).</li>
<li>As discussed, at this moment, we will not support multiple consensus protocols in node.</li>
</ul>
<h2 id="mixnet-network-privacy"><code>Mixnet (Network Privacy)</code><a aria-hidden="true" tabindex="-1" href="#mixnet-network-privacy" 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>Mixnet incentivization <a href="https://www.notion.so/Mixnet-Incentivization-6db9731a221b49878224afd916e2b3ac" class="external">document</a> has been updated with additional problem statements: we are exploring how to make delegations private.</li>
<li>Analysis of the fraction of compromised paths in the mix network: The asymptotic lower bound (asympt. l.b.) on the probability that the fraction of compromised paths, \alpha, belongs to the interval [\alpha_0, \alpha_1] was used to obtain an upper bound on the maximum fraction of compromised paths, \alpha_max, in the mixnet of size n sampled from N nodes, where M nodes are adversarial.</li>
<li>Comparing the asympt. l.b. and simulations shows that the latter provides a very loose upper bound on \alpha_max when the size of mixnet n is fixed and the number of layers L is increasing. However, the asympt. l.b. provides a better upper bound on \alpha_max when the width of the mixnet n_1 is fixed and the number of layers L is increasing.</li>
<li>Derived the probability distribution for the fraction of compromised paths \alpha in the mixnet of size n=n_1 L, where n_1 is the number of nodes per layer and L is the number of layers, with m adversarial nodes when n_1 is very large. In this regime, the number of adversarial nodes in a layer is a random variable from the binomial distribution with parameters n_1 and m/n, such that on average n_1m/n nodes per layer are adversarial. Summary of numerical results and simulations is provided in this <a href="https://docs.google.com/spreadsheets/d/1Bo7Ch76l6MeTCpii6vGLHhOSIHJULAtPkwJ3x9Ji_Ag/edit?usp=sharing" class="external">doc</a> while Summary of analysis is provided <a href="https://www.notion.so/Analysis-of-failures-in-the-mix-network-feeef349720842759c59785af71c7c59?pvs=4" class="external">here</a> and the details of the analysis are in <a href="https://www.overleaf.com/read/rybwvjftfrrg#3d77ee" class="external">Overleaf</a>.</li>
<li>Mixnet with staking design: Message Type Indistinguishability - extended the message type indistinguishability section of the staking design document, where we added a part about the impact of the pledged and delegated stake based rankings on the privacy. This part of the investigation, led to coining the Staking Security vs Privacy dilemma, where we describe a tension between staking security and privacy. In short, staking can increase chances for deanonymization. The details can be seen in this <a href="https://www.notion.so/Mixnet-with-Staking-c8ec3bfd461f4989b3ebbcf4b4b15324#2e57424c79bd44b19c4c4dd624f544b2" class="external">document</a>.</li>
</ul>
<h3 id="development-1"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-1" class="internal"> §</a></h3>
<ul>
<li>Some refactoring work on following PRs: <a href="https://github.com/logos-co/nomos-node/pull/615" class="external">#615</a>, <a href="https://github.com/logos-co/nomos-node/pull/616" class="external">#616</a>, <a href="https://github.com/logos-co/nomos-node/pull/618" class="external">#618</a>.</li>
<li>WIP: Testing if mix client/node emit packets according to the specified Poisson parameters.</li>
<li>WIP: Testing if enough packets are mixed in each mix node.</li>
<li>WIP: Working on making the aforementioned two as metrics (for monitoring).</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-2"><code>Research</code><a aria-hidden="true" tabindex="-1" href="#research-2" class="internal"> §</a></h3>
<ul>
<li>No research updates at this moment.</li>
</ul>
<h3 id="development-2"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-2" class="internal"> §</a></h3>
<ul>
<li>Fixed a new storage issue in windows build CI: <a href="https://github.com/logos-co/nomos-node/pull/621" title="https://github.com/logos-co/nomos-node/pull/621" class="external">PR</a>.</li>
<li>Added a new block subscription to consensus service: <a href="https://github.com/logos-co/nomos-node/pull/617" title="https://github.com/logos-co/nomos-node/pull/617" class="external">PR</a>.</li>
<li>DA API testing: <a href="https://github.com/logos-co/nomos-specs/pull/83" title="https://github.com/logos-co/nomos-specs/pull/83" class="external">PR</a>.</li>
<li>Added Certificate verification to specs: <a href="https://github.com/logos-co/nomos-specs/pull/82" title="https://github.com/logos-co/nomos-specs/pull/82" class="external">PR</a>.</li>
<li>Fixed arbitrary data encoding in the Encoder specs: <a href="https://github.com/logos-co/nomos-specs/pull/87" title="https://github.com/logos-co/nomos-specs/pull/87" class="external">PR</a>. There was an issue with this, we can only encode up to 31bytes per chunk using bls. Notice that bls uses 32bytes field elements, but some 32bytes elements would be higher than the bls_modulus, hence we need to use 31bytes.</li>
<li>Added duplicated blobs verification in verifier: Verifiers need to return the attestation in case a duplicated verification comes around, or skip it depending on different stages: <a href="https://github.com/logos-co/nomos-specs/pull/88" title="https://github.com/logos-co/nomos-specs/pull/88" class="external">PR</a>.</li>
<li>Moved current DA API implementation to draft: DA Protocol abstraction will change. Until we have an updated version, the DA API work is on hold.</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>Weve been reading Taiga source code, and putting up minor contributions as we go through it: <a href="https://github.com/anoma/taiga/pull/262" class="external">PR - taiga#262</a>, <a href="https://github.com/anoma/taiga/pull/260" class="external">taiga#260</a>, <a href="https://github.com/anoma/taiga/pull/259" class="external">taiga#259</a>.</li>
<li>Reviewed <a href="https://www.notion.so/Synchronous-Composability-with-Partial-Transactions-a2d832ea7d7a4b90b6f582bea64eab7a" class="external">Synchronous Composability with Partial Transactions</a>. The relevant article has been reviewed, and comments have been added.</li>
<li>Details regarding the proof of equivalence have been explained and python code for random proof generation has been added to the following <a href="https://www.notion.so/Proof-of-Equivalance-601026c1662d4c6d8d532829d67495b0" class="external">document</a>.</li>
<li>As part of our research effort, compiled the notes on - <a href="https://www.notion.so/Bitcoin-L2s-1ee5e0a897344a0f8d2272eb92fbbe1c" class="external">Bitcoin L2s</a>, <a href="https://www.notion.so/New-Architectures-789266e689194c2989e503f5fbd8a5e3" class="external">New Architectures</a>, <a href="https://www.notion.so/Coordination-Layer-Aggregation-Bridging-d77e29c4a90b4191b38414784097adf8" class="external">Coordination Layer</a>.</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"><code>Testnet</code><a aria-hidden="true" tabindex="-1" href="#testnet" class="internal"> §</a></h2>
<h3 id="development-4"><code>Development</code><a aria-hidden="true" tabindex="-1" href="#development-4" class="internal"> §</a></h3>
<ul>
<li>Removed unused nomos services: old metrics service replaced with a Prometheus <a href="https://github.com/logos-co/nomos-node/pull/623" class="external">PR</a> and old http API removed <a href="https://github.com/logos-co/nomos-node/pull/622" class="external">PR</a>.</li>
</ul>
<h2 id="miscellaneous"><code>Miscellaneous</code><a aria-hidden="true" tabindex="-1" href="#miscellaneous" class="internal"> §</a></h2>
<ul>
<li>A new blog post will be published this week: Tackling the Challenge of Wealth Concentration in PoS Blockchains with the simulations and scientific results.</li>
<li>We have exciting new ideas cooking about updating the Nomos documentation - stay tuned!</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="#cryptarchia" data-for="cryptarchia">Cryptarchia</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="#mixnet-network-privacy" data-for="mixnet-network-privacy">Mixnet (Network Privacy)</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="#data-availability" data-for="data-availability">Data Availability</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" data-for="testnet">Testnet</a></li><li class="depth-1"><a href="#development-4" data-for="development-4">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>