roadmap/vac/updates/2023-09-11.html

262 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html><head><title>2023-09-11 Vac weekly</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="2023-09-11 Vac weekly"/><meta property="og:description" content="vac:p2p: § nim-libp2p:vac:maintenance: IWANT splitting now ready for review nimlibp2p:vac:gossipsub-ddos-mitigation Traffic scoring now ready for review Pursuing upstream discussions about gossipsub Peer Exchange nim-chronos:vac:maintenance: Continued 418 vac:tke: § vac:tke::status:SNT-staking Write first draft of staking governance proposal standby to hear SC team questions vac:tke::nomos:economic-analysis Analysis of rewards for delegation vs validation vac:dst: § wakurtosis:vac:rlog Address PR feedback (123) wakurtosis:waku:techreport_03 batch of simulation data with 0 msg/s rate."/><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="vac:p2p: § nim-libp2p:vac:maintenance: IWANT splitting now ready for review nimlibp2p:vac:gossipsub-ddos-mitigation Traffic scoring now ready for review Pursuing upstream discussions about gossipsub Peer Exchange nim-chronos:vac:maintenance: Continued 418 vac:tke: § vac:tke::status:SNT-staking Write first draft of staking governance proposal standby to hear SC team questions vac:tke::nomos:economic-analysis Analysis of rewards for delegation vs validation vac:dst: § wakurtosis:vac:rlog Address PR feedback (123) wakurtosis:waku:techreport_03 batch of simulation data with 0 msg/s rate."/><meta name="generator" content="Logos Roadmaps"/><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="vac/updates/2023-09-11"><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,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35.368s22.008,14.65,35.368,14.65c13.361,0,25.921-5.203,35.369-14.65 c3.872-3.871,7.064-8.328,9.491-13.246C97.826,68.608,97.611,67.309,96.76,66.458z"></path></svg></label></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="#vacp2p" data-for="vacp2p">vac:p2p:</a></li><li class="depth-0"><a href="#vactke" data-for="vactke">vac:tke:</a></li><li class="depth-0"><a href="#vacdst" data-for="vacdst">vac:dst:</a></li><li class="depth-0"><a href="#vacacz" data-for="vacacz">vac:acz:</a></li><li class="depth-0"><a href="#vacsc" data-for="vacsc">vac:sc:</a></li><li class="depth-0"><a href="#vaczkvm" data-for="vaczkvm">vac:zkvm:</a></li><li class="depth-0"><a href="#vacdr" data-for="vacdr">vac:dr:</a></li><li class="depth-0"><a href="#vcrfc" data-for="vcrfc">vc::rfc:</a></li></ul></div></div></div><div class="center"><div class="page-header"><div class="popover-hint"><h1 class="article-title">2023-09-11 Vac weekly</h1><p class="content-meta">Sep 11, 2023, 4 min read</p><ul class="tags"><li><a href="../../tags/vac-updates" class="internal tag-link">#vac-updates</a></li><li><a href="../../tags/6" class="internal tag-link">#6</a></li><li><a href="../../tags/2" class="internal tag-link">#2</a></li><li><a href="../../tags/4" class="internal tag-link">#4</a></li></ul></div></div><article class="popover-hint"><h3 id="vacp2p">vac:p2p:<a aria-hidden="true" tabindex="-1" href="#vacp2p" class="internal"> §</a></h3>
<ul>
<li><code>nim-libp2p:vac:maintenance</code>:
<ul>
<li><a href="https://github.com/status-im/nim-libp2p/pull/944" class="external">IWANT splitting</a> now ready for review</li>
</ul>
</li>
<li><code>nimlibp2p:vac:gossipsub-ddos-mitigation</code>
<ul>
<li><a href="https://github.com/status-im/nim-libp2p/pull/920" class="external">Traffic scoring</a> now ready for review</li>
<li>Pursuing <a href="https://github.com/libp2p/specs/issues/570" class="external">upstream discussions</a> about gossipsub Peer Exchange</li>
</ul>
</li>
<li><code>nim-chronos:vac:maintenance</code>:
<ul>
<li>Continued <a href="https://github.com/status-im/nim-chronos/pull/418" class="external">418</a></li>
</ul>
</li>
</ul>
<h3 id="vactke">vac:tke:<a aria-hidden="true" tabindex="-1" href="#vactke" class="internal"> §</a></h3>
<ul>
<li><code>vac:tke::status:SNT-staking</code>
<ul>
<li>Write first draft of staking governance proposal</li>
<li>standby to hear SC team questions</li>
</ul>
</li>
<li><code>vac:tke::nomos:economic-analysis</code>
<ul>
<li>Analysis of rewards for delegation vs validation</li>
</ul>
</li>
</ul>
<h3 id="vacdst">vac:dst:<a aria-hidden="true" tabindex="-1" href="#vacdst" class="internal"> §</a></h3>
<ul>
<li><code>wakurtosis:vac:rlog</code>
<ul>
<li>Address PR feedback (<a href="https://github.com/vacp2p/vac.dev/pull/123" class="external">123</a>)</li>
</ul>
</li>
<li><code>wakurtosis:waku:techreport_03</code>
<ul>
<li>batch of simulation data with 0 msg/s rate.</li>
</ul>
</li>
<li><code>wakurtosis:vac:retrospective-rlog</code>
<ul>
<li>Started draft/planning of document</li>
</ul>
</li>
<li><code>eng-10ktool:vac:bandwidth-test</code>
<ul>
<li>Working on adding an intermediate layer between services (Codex) and framework.</li>
</ul>
</li>
<li><code>wakurtosis:waku:techreport_02</code></li>
<li><code>software-testing:waku:test-plans</code>
<ul>
<li>Minor tweaks/updates on the filter test plan</li>
</ul>
</li>
<li><code>software-testing:waku:test-automation-js-waku</code>
<ul>
<li>Created draft PR with ~60 new tests + refactoring for Filter protocol (<a href="https://github.com/waku-org/js-waku/pull/1552" class="external">1552</a>)</li>
<li>Worked with Vaclav to run js-waku tests automatically in the nwaku CI.
<ul>
<li>Tests will run against the nwaku node built for the PR that triggers the CI + jswaku from master (nwaku PR: <a href="https://github.com/waku-org/nwaku/pull/2006" class="external">2006</a>) (js-waku PR: <a href="https://github.com/waku-org/js-waku/pull/1541" class="external">1541</a>)</li>
</ul>
</li>
</ul>
</li>
<li><code>software-testing:waku:test-automation-nwaku</code>
<ul>
<li>Get acquainted with codebase, tests, rfcs, and nim.</li>
<li>start implementing first set of tests (<code>Filter/SUBSCRIBER_PING</code>).</li>
</ul>
</li>
<li><code>vac:dst:analysis:nomos:nomos-simulation-analysis</code>
<ul>
<li>Done first set of runs for different probabilities; a run takes 2+ days</li>
<li>The tree simulation now scales to 30k nodes!</li>
<li>Branch runs are now fully automated</li>
</ul>
</li>
<li><code>vac:dst:wakurtosis:waku:topology-analysis</code>
<ul>
<li>tried json RPC under shadow (worked as expected); the RPC appears a bit faster compared to wakurtosis</li>
<li>Waku network collection PR done : <a href="https://github.com/vacp2p/wakurtosis/pull/143" class="external">143</a></li>
</ul>
</li>
</ul>
<h3 id="vacacz">vac:acz:<a aria-hidden="true" tabindex="-1" href="#vacacz" class="internal"> §</a></h3>
<ul>
<li><code>rlnp2p:waku:rln-relay-enhancments</code>
<ul>
<li>if only one key exists in the keystore, use it - <a href="https://github.com/waku-org/nwaku/pull/1984" class="external">1984</a></li>
<li>fix log levels for some logs - <a href="https://github.com/waku-org/nwaku/pull/1986" class="external">1986</a></li>
<li>updated documentation for rln-relay - <a href="https://github.com/waku-org/nwaku/pull/1993" class="external">1993</a></li>
<li>clean nullifier table every <code>MaxEpochGap</code> - <a href="https://github.com/waku-org/nwaku/pull/1994" class="external">1994</a></li>
<li>created <code>rln_db_inspector</code> tool, allows inspection into merkle tree structure - <a href="https://github.com/waku-org/nwaku/pull/1999" class="external">1999</a>, <a href="https://github.com/waku-org/nwaku/pull/2012" class="external">2012</a></li>
<li>fixed missing memberships between history sync and new memberships sync with @alrevuelta - <a href="https://github.com/waku-org/nwaku/pull/2015" class="external">2015</a></li>
<li>remove <code>rln</code> from wakus experimental features - <a href="https://github.com/waku-org/nwaku/pull/2001" class="external">2001</a></li>
<li>fix metric calculation for registered members - <a href="https://github.com/waku-org/nwaku/pull/2018" class="external">2018</a></li>
<li>uups proxy for waku-rln-registry - <a href="https://github.com/waku-org/waku-rln-contract/pull/9" class="external">9</a></li>
</ul>
</li>
<li><code>zerokit:vac:zerokit-v0.4</code>
<ul>
<li>fetched artifacts from trusted setup completion, generated verfication keys and circuits wasm files</li>
<li>for some reason, the proof verification always results in <code>false</code>, needs further investigation. working branch - <a href="https://github.com/vacp2p/zerokit/pull/211" class="external">211</a></li>
<li>Created and merged a PR to fix test failings <a href="https://github.com/vacp2p/zerokit/pull/212" class="external">212</a></li>
<li>Reaserched test failures with new artifacts</li>
</ul>
</li>
</ul>
<h3 id="vacsc">vac:sc:<a aria-hidden="true" tabindex="-1" href="#vacsc" class="internal"> §</a></h3>
<ul>
<li><code>status:snt-staking-contract-maintenance</code>
<ul>
<li>Prepared a pull request that migrates the code base to our foundry template: <a href="https://github.com/logos-co/staking/pull/6" class="external">Pull Request</a><a href="../.././../tags/6" class="tag-link internal"> #6</a></li>
</ul>
</li>
<li><code>status:community-contracts-deployer</code>
<ul>
<li>Refactored <code>CommunityTokenDeployer</code> contract to make use of token factory contracts: <a href="https://github.com/status-im/communities-contracts/pull/2" class="external">Pull Request</a><a href="../.././../tags/2" class="tag-link internal"> #2</a></li>
<li>Updated documentation and visuals according to code changes: <a href="https://github.com/status-im/communities-contracts/pull/4" class="external">Pull Request</a><a href="../.././../tags/4" class="tag-link internal"> #4</a></li>
</ul>
</li>
<li><code>vac:maintainance/misc</code>
<ul>
<li>Added support for codecoverage analysis in our foundry template: PR: <a href="https://github.com/vacp2p/foundry-template/pull/6" class="external">6</a></li>
<li>Added basic deployment config to our template: PR: <a href="https://github.com/vacp2p/foundry-template/pull/5" class="external">5</a></li>
<li>Added slither support: PR: <a href="https://github.com/vacp2p/foundry-template/pull/4" class="external">4</a></li>
<li>added a new resource to the Smart Contract notion section about gas optimizations</li>
</ul>
</li>
</ul>
<h3 id="vaczkvm">vac:zkvm:<a aria-hidden="true" tabindex="-1" href="#vaczkvm" class="internal"> §</a></h3>
<ul>
<li><code>proofsystems:vac:research-existing-proof-systems</code>
<ul>
<li>Addressed some questions regarding Nescience.</li>
<li>Worked on compressing informations in Nescience for a future publication.</li>
<li>Continued research on Jolt</li>
<li>Continued writing a paper on Lasso (<a href="https://www.notion.so/zkVM-cd358fe429b14fa2ab38ca42835a8451?pvs=4#025f586e7e4c46818a0e0a1ab9a79c20" class="external">zkVM-cd358fe429b14fa2ab38ca42835a8451?pvs=4#025f586e7e4c46818a0e0a1ab9a79c20</a>)</li>
<li>Attended webinars for Open Talk: Zero Knowledge <a href="https://www.youtube.com/watch?v=cgw18zbTUHA" class="external">(recorded talks)</a></li>
<li>Update <a href="https://file.notion.so/f/f/1518abd9-c08f-4989-93c1-96525e62bce5/ae9b5bf8-f5ff-4436-bc7b-e3f7eccf030c/Notes___Halo2.pdf?id=406e5fef-e565-4625-bbc4-e5242354f5f7&amp;table=block&amp;spaceId=1518abd9-c08f-4989-93c1-96525e62bce5&amp;expirationTimestamp=1694563200000&amp;signature=7AD-ydeIweC9m2w6yxgKHFatWVI_2mvuSupIDaCPH64&amp;downloadName=Notes+-+Halo2+%28WIP%29.pdf" class="external">Halo2 notes</a></li>
</ul>
</li>
<li><code>proofsystems:vac:benchmarks</code>
<ul>
<li>Published a complete section on Github regarding Benchmarks (<a href="https://github.com/vacp2p/zk-explorations/blob/main/benchmarks.md" class="external">benchmarks.md</a>).</li>
<li>work on <a href="https://github.com/vacp2p/zk-explorations/tree/origin/halo2-bench" class="external">Halo2 benchmark implementation</a></li>
<li>Nova Circom: done, Nova-Scotia: there is a part left</li>
</ul>
</li>
</ul>
<h3 id="vacdr">vac:dr:<a aria-hidden="true" tabindex="-1" href="#vacdr" class="internal"> §</a></h3>
<ul>
<li><code>valpriv:vac:tor-push-poc</code>
<ul>
<li>Completed the tor based gossipsub instance broadcas; the first working POC. Overcame, triaged several issues <a href="https://github.com/vacp2p/nimbus-eth2-experimental/issues/1" class="external">1</a>
<ul>
<li><a href="https://goerli.beaconcha.in/validator/86f53cc0e56ae0c6fbe3113a290a52a76cf056339d91f9e166ddbf15a35373d3c455cc387c8ab70db7b3d024113e394d" class="external">first running tor-push nimbus validator</a></li>
</ul>
</li>
</ul>
</li>
<li><code>valpriv:vac:tor-push-paper</code>
<ul>
<li>changes to introduction, solution section, removed not in scope papers</li>
</ul>
</li>
<li><code>gsub-scaling:vac:gossipsub-simulation</code>
<ul>
<li>Worked on adding staggered sending suppoort in Gossipsub (still working on it)</li>
<li>Formalized and improved simulation scripts for GossipSub behavior against large messages.</li>
</ul>
</li>
<li><code>consensus:nomos:carnot-paper</code>
<ul>
<li>Work on writing up Carnots specification in RFC format (<a href="https://github.com/logos-co/nomos-specs/blob/RFC/carnot/spec.md" class="external">spec.md</a>)</li>
</ul>
</li>
<li><code>consensus:nomos:carnot-vote-2-3rds-vote-aggregation</code>
<ul>
<li>Work on presentation slides for Sep. 6 research call. (slides can be found at: <a href="https://www.notion.so/Roadmap-Deep-Research-DR-561a864c890549c3861bf52ab979d7ab?pvs=4#d1d3033792b443f39e47955721f9db52" class="external">Roadmap-Deep-Research-DR-561a864c890549c3861bf52ab979d7ab?pvs=4#d1d3033792b443f39e47955721f9db52</a>)</li>
<li>Begin to write down the high level protocol.(<a href="https://www.notion.so/High-Level-Algorithm-6535ac0363df4629ad2c40dff4bc62cd" class="external">High-Level-Algorithm-6535ac0363df4629ad2c40dff4bc62cd</a>)</li>
</ul>
</li>
</ul>
<h3 id="vcrfc">vc::rfc:<a aria-hidden="true" tabindex="-1" href="#vcrfc" class="internal"> §</a></h3>
<ul>
<li><code>status:port-status-specs</code>
<ul>
<li>Kicked off discussion with “stakeholders” about <code>6/PAYLOAD</code> spec and how it should be ported/maintained</li>
<li>started porting parts of <code>6/PAYLOAD</code></li>
<li>Ported 16/keycard-usage to 63/status-keycard-usage - <a href="https://github.com/vacp2p/rfc/pull/615" class="external">615</a></li>
</ul>
</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}"></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}"></div></div></div><div class="backlinks"><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div></div></div><footer><hr/><p>Created by Logos with <a href="https://quartz.jzhao.xyz/">Quartz v4.0.8</a>, © 2023</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>