2023-10-23 17:19:30 +00:00
<!DOCTYPE html>
2024-02-06 17:17:08 +00:00
< html > < head > < title > 2023-10-23 Vac weekly< / title > < meta charSet = "utf-8" / > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" / > < meta property = "og:title" content = "2023-10-23 Vac weekly" / > < meta property = "og:description" content = "vac:p2p: § admin restructure nimlibp2p:vac:maintenance Find a fix for https://github.com/waku-org/nwaku/issues/2140 PR: Test: Remove workflow for Nim Devel from &quot;Daily&quot; https://github." / > < 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: § admin restructure nimlibp2p:vac:maintenance Find a fix for https://github.com/waku-org/nwaku/issues/2140 PR: Test: Remove workflow for Nim Devel from &quot;Daily&quot; https://github." / > < 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&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 / > < 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-10-23" > < 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-
2023-10-23 17:19:30 +00:00
< ul >
< li > < code > admin< / code >
< ul >
< li > restructure< / li >
< / ul >
< / li >
< li > < code > nimlibp2p:vac:maintenance< / code >
< ul >
< li > Find a fix for < a href = "https://github.com/waku-org/nwaku/issues/2140" class = "external" > https://github.com/waku-org/nwaku/issues/2140< / a > < / li >
< li > PR: < code > Test: Remove workflow for Nim Devel from " Daily" < / code > < a href = "https://github.com/status-im/nim-libp2p/pull/968" class = "external" > https://github.com/status-im/nim-libp2p/pull/968< / a >
< ul >
< li > nim devel test will still be run daily, but in a separate CI workflow< / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < code > nimlibp2p:vac:webrtc-transport< / code >
< ul >
< li > Successfully compile the full stack and start debugging.< / li >
< / ul >
< / li >
< li > < code > nimlibp2p:vac:gossipsub-ddos-mitigation< / code >
< ul >
< li > < a href = "https://github.com/status-im/nim-libp2p/pull/965" class = "external" > https://github.com/status-im/nim-libp2p/pull/965< / a > < / li >
< / ul >
< / li >
< li > < code > nimlibp2p:vac:maintenance< / code >
< ul >
< li > Add arm64 support when running HP tests locally< / li >
< li > < a href = "https://github.com/libp2p/test-plans/pull/311" class = "external" > https://github.com/libp2p/test-plans/pull/311< / a > and < a href = "https://github.com/libp2p/rust-libp2p/pull/4687" class = "external" > https://github.com/libp2p/rust-libp2p/pull/4687< / a > . (This is a blocker for: Add Hole Punching to libp2p test-plans - < a href = "https://github.com/status-im/nim-libp2p/issues" class = "external" > https://github.com/status-im/nim-libp2p/issues< / 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::codex:economic-analysis< / code >
< ul >
< li > Updating Codex “growth model” and migrating litepaper to notion w/ Codex feedback (@Matty)< / li >
< li > Providing fundraise (Matt Nemer) w/ high level summary of financials and token design (@Matty)< / li >
< / ul >
< / li >
< li > < code > vac:tke::status:SNT-staking< / code >
< ul >
< li > Helping John with final preparation for website launch, setting up Snapshot space (@Martin)< / li >
< li > Ongoing w/ SC team for staking contract implementation (@Martin)< / li >
< li > Discussed “growth model” (economic projections) w/ John, Chandler, and finance, aligning w/ Chandlers model (@Matty)< / li >
< / ul >
< / li >
< li > < code > vac:tke::nomos:economic-analysis< / code >
< ul >
< li > Finished drafting high level proposals on Private Addressing research, reviewing w/ Marcin (@Frederico)< / li >
< li > Returning to native delegated staking research, based on recent developments in ETH and Lido (@Fredico)< / li >
< / ul >
< / li >
< li > < code > vac:tke::waku:economic-analysis< / code >
< ul >
< li > Joining Waku Reseach Sync calls going forward to stay up to date on progress w/ Sergei (@Martin)< / li >
< li > Reviewing Sergei’ s notes so far on waku-org/research, and completing followup requests from Aaryaman and Sergei< / 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 > Pushed changes with new results (< a href = "https://github.com/vacp2p/vac.dev/commit/c67ea09ac17a6049529983ef325ae4d9c6c24e2d" class = "external" > https://github.com/vacp2p/vac.dev/commit/c67ea09ac17a6049529983ef325ae4d9c6c24e2d< / a > )< / li >
< / ul >
< / li >
< li > < code > analysis-shadow:waku:shadow-waku-relay-analysis< / code >
< ul >
< li > Investigating best approach for large scale (new wakunode2 with traffic vs external RPC calls)< / li >
< / ul >
< / li >
< li > < code > eng-10ktool:vac:bandwidth-test< / code >
< ul >
< li > Fix problem in multicloud-cluster:
< ul >
< li > < a href = "https://github.com/status-im/infra-misc/issues/184" class = "external" > https://github.com/status-im/infra-misc/issues/184< / a > < / li >
< li > < a href = "https://github.com/k3s-io/k3s/discussions/8657" class = "external" > https://github.com/k3s-io/k3s/discussions/8657< / a > < / li >
< / ul >
< / li >
< li > Check Prometheus metrics< / li >
< / ul >
< / li >
< li > < code > software-testing:waku:test-automation-js-waku< / code >
< ul >
< li > New tests:
< ul >
< li > < a href = "https://github.com/waku-org/js-waku/pull/1649" class = "external" > Relay< / a > - awaiting review< / li >
< / ul >
< / li >
< li > Improvements:
< ul >
< li > Test report dashboard. < a href = "https://github.com/waku-org/js-waku/pull/1668" class = "external" > PR< / a > and < a href = "https://waku-org.github.io/allure-jswaku/5700/#" class = "external" > deployment< / a > - awaiting review< / li >
< / ul >
< / li >
< li > Issues found:
< ul >
< li > Nwaku < a href = "https://github.com/waku-org/nwaku/issues/2147" class = "external" > regression< / a > around store cursor< / li >
< li > JS-waku possible issue around duplicate messages< / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < code > software-testing:waku:test-automation-nwaku< / code >
< ul >
< li > Issues
< ul >
< li > Resubscription SEGFAULT
< ul >
< li > Reinvestigated and found it was a test case error, a < code > futures< / code > issue.< / li >
< li > Closed < a href = "https://github.com/waku-org/nwaku/issues/2114" class = "external" > Ticket< / a > < / li >
< / ul >
< / li >
< li > Publishing multiple messages in a row triggers the same SEGFAULT as when refreshing a subscription.
< ul >
< li > Same as above< / li >
< / ul >
< / li >
< li > Max message sizes don’ t match RFC
< ul >
< li > Reinvesitgated because some sizes weren’ t correct.< / li >
< li > Opened < a href = "https://github.com/waku-org/nwaku/issues/2146" class = "external" > Ticket< / a > < / li >
< / ul >
< / li >
< li > After stopping and restarting a relay node, it can’ t reconnect with connectRelay.
< ul >
< li > Reinvestigated because a comment by Aaryamann.< / li >
< li > Opened < a href = "https://github.com/waku-org/nwaku/issues/2145" class = "external" > Ticket< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li > Began implementing Store tests.< / li >
< li > Got a working GDB for NIM with VSCode integration. Not great, but it’ s something.< / li >
< li > Cleaned up Filter and Relay tests, and added missing payload size tests.
< ul >
< li > [PR](< a href = "https://github.com/waku-org/nwaku/pull/2138" class = "external" > https://github.com/waku-org/nwaku/pull/2138< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < code > software-testing:waku:test-automation-go-waku< / code >
< ul >
< li > Wrote five tests - were added to the branch < a href = "https://github.com/waku-org/go-waku/tree/chore(filterV2)-test-updates" class = "external" > https://github.com/waku-org/go-waku/tree/chore(filterV2)-test-updates< / a > < / li >
< li > Reported issue “Subscription with empty contentTopic should fail” < a href = "https://github.com/waku-org/go-waku/issues/810" class = "external" > https://github.com/waku-org/go-waku/issues/810< / a > < / li >
< li > Retested issues #804 and #810 - learned a lot from Prem Prathi< / 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-doc-and-outreach< / code >
< ul >
< li > continued work on rlog, improvements< / li >
< li > progcrypto sync with pse, presentation work - < a href = "https://hackmd.io/wS2MAfSvSK-tnxzcriah9A" class = "external" > https://hackmd.io/wS2MAfSvSK-tnxzcriah9A< / a > < / li >
< / ul >
< / li >
< li > < code > admin/misc< / code >
< ul >
< li > supporting DST, working on waku relay segfault, resolved< / li >
< / ul >
< / li >
< li > < code > secure-channels:waku:ethereum-chat< / code >
< ul >
< li > Include some considerations on the extension to group chat revolving around asynchronous ratcheting trees.< / li >
< li > Start writing the raw version of the RFC.< / li >
< li > < a href = "https://www.notion.so/WiP-Secure-Ethereum-Chat-f69ff155456c4fdeb719aba96fd7a" class = "external" > https://www.notion.so/WiP-Secure-Ethereum-Chat-f69ff155456c4fdeb719aba96fd7a< / a > < / li >
< / ul >
< / li >
< li > < code > zerokit:vac:maintenance< / code >
< ul >
< li > prepared refactoring PR (< a href = "https://github.com/vacp2p/zerokit/pull/219" class = "external" > https://github.com/vacp2p/zerokit/pull/219< / a > )< / 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:community-curation-contracts< / code >
< ul >
< li > Adjusted deploy script to mint mock SNT token on local node (this was needed for testing purposes)
< ul >
< li > PR: < a href = "https://github.com/status-im/community-dapp/pull/80" class = "external" > https://github.com/status-im/community-dapp/pull/80< / a > < / li >
< / ul >
< / li >
< li > Fixed deployment script to ensure directory contracts are set in voting contracts
< ul >
< li > < a href = "https://github.com/status-im/community-dapp/pull/81" class = "external" > https://github.com/status-im/community-dapp/pull/81< / a > < / li >
< / ul >
< / li >
< li > Fixed deployment that ensures < code > Multicall2< / code > is available on local nodes as well as references for production networks
< ul >
< li > PR: < a href = "https://github.com/status-im/community-dapp/pull/82" class = "external" > https://github.com/status-im/community-dapp/pull/82< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < code > vac:sc::status:snt-staking-contract_02< / code >
< ul >
< li > Implement missing checks for staking lockup period
< ul >
< li > PR: < a href = "https://github.com/logos-co/staking/pull/39" class = "external" > https://github.com/logos-co/staking/pull/39< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< / ul >
< h3 id = "vacnescience" > vac:nescience:< a aria-hidden = "true" tabindex = "-1" href = "#vacnescience" class = "internal" > §< / a > < / h3 >
< ul >
< li > < code > state-separation:vac:state-separation-doc< / code >
< ul >
< li > Researching techniques for state separation and how to integrate different models.< / li >
< li > Researched and < a href = "https://www.notion.so/Nescience-cd358fe429b14fa2ab38ca42835a8451?pvs=4#d75a43599f3f45d6a838527a403d9c39" class = "external" > posted a document< / a > on Verkle tree.< / li >
< li > Began research on ring signatures (< a href = "https://eprint.iacr.org/2021/1213.pdf" class = "external" > DualRing< / a > and < a href = "https://eprint.iacr.org/2023/1177" class = "external" > DualDory< / a > ) (doc pending)< / li >
< / ul >
< / li >
< li > < code > proofsystems:vac:research-existing-proof-systems< / code >
< ul >
< li > Published a new document about < a href = "https://www.notion.so/Nescience-cd358fe429b14fa2ab38ca42835a8451?pvs=4#02b7fdf29dac4dc18b3f15b756c7da57" class = "external" > Proof Creation and Verification< / a > < / li >
< / ul >
< / li >
< li > < code > proofsystems:vac:benchmarks< / code >
< ul >
< li > Started a draft for an article (overleaf)< / li >
< li > applied feedback for the Nova-Scotia PR< / li >
< li > Wrote the halo2 aggregation circuit (issues with testing, need more CPU power, will use DST server)< / 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 > Scaled up execution of TEN multiple simultanesous torpush-validators with near zero attestation misses< / li >
< li > Gathering measurements from other fleet nodes (blocked at)< / li >
< / ul >
< / li >
< li > < code > valpriv:vac:tor-push-paper< / code >
< ul >
< li > Added more graphs, completed abstract, comparisons in the paper.< / li >
< li > Still reviewing new paper to incorporate < a href = "https://www.research.ed.ac.uk/en/publications/on-the-anonymity-guarantees-of-anonymous-proof-of-stake-protocols" class = "external" > https://www.research.ed.ac.uk/en/publications/on-the-anonymity-guarantees-of-anonymous-proof-of-stake-protocols< / a > < / li >
< / ul >
< / li >
< li > < code > gsub-scaling:vac:gossipsub-simulation< / code >
< ul >
< li > Modified large message handling mechanism (outlined below) for GossipSub.
< ul >
< li > Now we send large message to randomly selected (dlow-1) peers.< / li >
< li > Remaining peers get idontwant message< / li >
< / ul >
< / li >
< li > Missed out nodes use iwant message to pull the missing large message< / li >
< li > Approximately 20-25% overall message reduction achieved and 1/2 RTT latency increased for approximately 5% nodes< / li >
< / ul >
< / li >
< li > < code > gsub-scaling:vac:unstructured-p2p-improvements-survey< / code >
< ul >
< li > Started following discussions for current gossipsub improvement direcetions< / li >
< / ul >
< / li >
< li > Writing the pseudocode and addressed comments from Nomos team (< a href = "https://github.com/logos-co/nomos-specs/blob/Carnot-vote-aggregation/carnot/carnot-vote-aggregation.py" class = "external" > https://github.com/logos-co/nomos-specs/blob/Carnot-vote-aggregation/carnot/carnot-vote-aggregation.py< / a > ).
< ul >
< li > Responded to questions raised in the high level protocol document (< a href = "https://www.notion.so/High-Level-Algorithm-6535ac0363df4629ad2c40dff4bc62cd" class = "external" > https://www.notion.so/High-Level-Algorithm-6535ac0363df4629ad2c40dff4bc62cd< / a > ) by the nomos team.< / li >
< / ul >
< / li >
< / ul >
< h3 id = "vacrfc" > vac:rfc:< a aria-hidden = "true" tabindex = "-1" href = "#vacrfc" class = "internal" > §< / a > < / h3 >
< ul >
< li > < code > status:port-status-specs< / code >
< ul >
< li > waku usage rfc - < a href = "https://github.com/vacp2p/rfc/pull/627" class = "external" > https://github.com/vacp2p/rfc/pull/627< / a > < / li >
< / ul >
< / li >
2023-10-25 18:50:16 +00:00
< / ul > < / article > < / div > < div class = "right sidebar" > < div class = "graph " > < h3 > Graph View< / h3 > < div class = "graph-outer" > < div id = "graph-container" data-cfg = "{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}" > < / 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
2023-10-23 17:19:30 +00:00
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
2024-01-02 19:24:43 +00:00
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 = "{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}" > < / 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 = "#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 = "#vacnescience" data-for = "vacnescience" > vac:nescience:< / a > < / li > < li class = "depth-0" > < a href = "#vacdr" data-for = "vacdr" > vac:dr:< / a > < / li > < li class = "depth-0" > < a href = "#vacrfc" data-for = "vacrfc" > vac:rfc:< / 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" > / / q u a r t z / c o m p o n e n t s / s c r i p t s / q u a r t z / c o m p o n e n t s / s c r i p t s / c a l l o u t . i n l i n e . t s
2023-10-23 17:19:30 +00:00
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 >