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

111 lines
117 KiB
HTML
Raw Normal View History

2024-01-30 19:34:31 +00:00
<!DOCTYPE html>
2024-03-11 17:08:55 +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-01-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-01-30 19:34:31 +00:00
<h3 id="research"><code>research</code><a aria-hidden="true" tabindex="-1" href="#research" class="internal"> §</a></h3>
<ul>
<li>The Mixnet specification is ready for review and can be frozen with the current version for v1 (until we find additional requirements during the implementation).</li>
<li>Defined the <a href="https://www.notion.so/Mixnet-Specification-807b624444a54a4b88afa1cc80e100c2?pvs=4#af141ade3e8147ec900cf3599953f4da" class="external">mixnet topology update mechanism</a> as a result of internal team discussions - conclusion: we should abstract a robustness layer that will handle mixnet configuration.</li>
<li>Redefined <a href="https://www.notion.so/Mixnet-Specification-807b624444a54a4b88afa1cc80e100c2?pvs=4#ebb923fa6a7443a0a36737906104343c" class="external">mix destination</a>: Instead of having an extra hop to the mix destination after <code>L</code> layers, were going to use the last mix layer as the mix destination (for message reconstruction).</li>
<li>Also, the problem of the common view of candidate nodes for mixnet participation was raised - how to ensure that the whole network will know which mixnodes are selected. As previously discussed, we confirmed that we need to have a dedicated staking action for registering candidate mixnet nodes on-chain - the sampling will be performed only from the list created by that staking action.</li>
<li>The PRs that entail the changes and piece them all together in the executable mixnet specification can be found <a href="https://github.com/logos-co/nomos-specs/pull/56" class="external">here</a> and <a href="https://github.com/logos-co/nomos-specs/pull/57" class="external">here</a>.</li>
</ul>
<h3 id="development"><code>development</code><a aria-hidden="true" tabindex="-1" href="#development" class="internal"> §</a></h3>
<ul>
<li>Added a couple of PRs in preparation for the mixnet rust development - <a href="https://github.com/logos-co/nomos-node/pull/570" class="external">crate structure</a>, <a href="https://github.com/logos-co/nomos-node/pull/572" class="external">remove mixnet legacies 1</a>, and <a href="https://github.com/logos-co/nomos-node/pull/573" class="external">remove mixnet legacies 2</a>.</li>
</ul>
<h2 id="testnet"><code>testnet</code><a aria-hidden="true" tabindex="-1" href="#testnet" class="internal"> §</a></h2>
<h3 id="development-1"><code>development</code><a aria-hidden="true" tabindex="-1" href="#development-1" class="internal"> §</a></h3>
<ul>
<li>Started the <a href="https://www.notion.so/Block-Explorer-4d32e6f08c144a3a9166d25512e0e339" class="external">document</a> on the design of Block Explorer 2. Also, added a <a href="https://github.com/logos-co/nomos-node/pull/566" class="external">PR</a> regarding naive blocks query implementation from the storage layer (the PR is still open with an ongoing discussion).</li>
<li>Added a testnet basic bot to the chatapp non-interactive mode (<a href="https://github.com/logos-co/nomos-node/pull/567" class="external">PR</a>). In more detail, we have previously added the ability to disseminate a file to the DA in the testnet, and we updated the chatapp with a similar functionality, which is used to have a bot that constantly pushes readable data to our DA in the testnet. This data (as opposed to file upload) will be readable by our testnet users and will be useful during the demos.</li>
<li>Container for the basic bot <a href="https://github.com/logos-co/nomos-node/pull/568" class="external">PR</a> - performed some required changes to our testnet infrastructure.</li>
</ul>
<h2 id="cryptarchia"><code>cryptarchia</code><a aria-hidden="true" tabindex="-1" href="#cryptarchia" 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>Updated the wealth concentration analysis <a href="https://www.notion.so/Does-Crypsinous-Leader-Election-Function-lead-to-wealth-concentration-in-PoS-b81f07a791b745438443f51f00ac258f?pvs=4#1df422f6cc204cb8b362f41cda260b8b" class="external">chapter</a> about stake relativization algorithm.</li>
<li>Started the <a href="https://www.notion.so/Nomos-Tokenomics-Design-Canvas-e62e78ee0f8c4a719d1f6ffb08574241" class="external">Nomos Tokenomics Design Canvas</a> that will be filled in with additional details in the future.</li>
<li>We have <a href="https://www.notion.so/Cryptarchia-c4975863a81644e5af03cdc9233b910b?d=74886dad62124b4e9cebee953b3cdfd5&amp;pvs=4#d7521fcde86945409d1b6950743cbe4c" class="external">discussed</a> an alternative path for the leader election function (stake relativization) in the. Refer to this <a href="https://www.notion.so/5921382536f842c2bd4d9b61eb4174d0" class="external">comment</a> for more details. This helped answer a high-priority question: <a href="https://www.notion.so/Cryptarchia-c4975863a81644e5af03cdc9233b910b?pvs=4#d7aebd5d87d2437f93b749805918b59c" class="external">Do we need to learn total stake?</a></li>
<li>The initial version of the Cryptarchia executable specification <a href="https://github.com/logos-co/nomos-specs/pull/54" class="external">PR</a> has been merged.</li>
<li>Added <a href="https://github.com/logos-co/nomos-specs/pull/58" class="external">fork choice rule</a> to the Cryptarchia executable specification.</li>
<li>Merged <a href="https://github.com/logos-co/nomos-specs/pull/55" class="external">implementation of slot leader election check</a> to the Cryptarchia executable specification.</li>
<li>Analysis of <a href="https://www.notion.so/Impacts-of-Approximate-Total-Stake-1b9a248b222449c68c70fb645a733b03" class="external">Impacts of Approximate Total Stake</a> - having considered two alternative election histories of a node (one when using the true stake and the other when using the approximate stake), the population study shows higher staked nodes are more impacted by errors in estimating total stake. Also, impact on the finality study shows high sensitivity to overestimates of stake. This was done by deriving the analytic expression for the Hamming distance between the two aforementioned histories which allows quantifying differences - for the detailed analytic work, refer to the <a href="https://www.overleaf.com/project/656dfacf4929b4a3d6d2ffe5" class="external">Overleaf document</a>.</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, heavily in research.</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><a href="https://www.notion.so/DA-Layer-Comparison-Table-5848811f0af042e2b24c10d3cea9b0a8" class="external">DA Layer Comparison article</a> has been updated according to the latest review. In addition to that, we also provided details about the Ethereum Danksharding Protocol and its comparison to the Nomos DA protocol (according to our research).</li>
<li><a href="https://www.notion.so/DA-Api-Specification-83000d9c2f3f45b586cd55c5c195cce5#5a4839bf7309499e810830474a11b1f5" class="external">VID Certificate section</a> in the DA API Specification has been added. In it, we explained the steps required to create VID Certificate and their order, described what data is sent to different participants (Nomos Zone, DA Node, Block Producer). We have reviewed it internally and added some new questions and comments - refer to the discussion for more details.</li>
<li>Based on the definitions from the VID certificate, revised the <a href="https://www.notion.so/Block-Format-Specification-10c4cfef8b8946b8a54344cf97b16938#af86fcfa7fef40e9aabfc10f9f65f49a" class="external">Block DA Metadata structure</a> with some minor updates, more precisely with the data that should be written in the block for DA.</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="miscellaneous"><code>miscellaneous</code><a aria-hidden="true" tabindex="-1" href="#miscellaneous" class="internal"> §</a></h2>
<ul>
<li>Finalized v0.5 of the darkpaper: updates according to feedback and new insights and strategy: rewritten several sections and eliminated a bunch of sections that were not satisfactory. Some changes of the darkpaper are conceptual, not just cosmetic, improving the strategical focus.</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="#network-privacy-and-mixnet" data-for="network-privacy-and-mixnet">network privacy and mixnet</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="#testnet" data-for="testnet">testnet</a></li><li class="depth-1"><a href="#development-1" data-for="development-1">development</a></li><li class="depth-0"><a href="#cryptarchia" data-for="cryptarchia">cryptarchia</a></li><li class="depth-1"><a href="#research-1" data-for="research-1">research</a></li><li class="depth-1"><a href="#development-2" data-for="development-2">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-3" data-for="development-3">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>